@netless/appliance-plugin 1.1.44-beta.0 → 1.1.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/appliance-plugin.js +1 -1
  2. package/dist/appliance-plugin.mjs +12 -12
  3. package/dist/{bridge-CskJoX5M.js → bridge-B7BW1lpB.js} +1 -1
  4. package/dist/{bridge-rKHCYJ6m.mjs → bridge-DQud78k4.mjs} +1 -1
  5. package/dist/bridge.js +1 -1
  6. package/dist/bridge.mjs +1 -1
  7. package/dist/collector/types.d.ts +0 -3
  8. package/dist/component/textEditor/types.d.ts +0 -5
  9. package/dist/core/mainThread/base.d.ts +5 -1
  10. package/dist/core/mainThread/snapshotThread.d.ts +2 -3
  11. package/dist/core/mainThread/subLocalThread.d.ts +2 -5
  12. package/dist/core/mainThread/subServiceThread.d.ts +2 -1
  13. package/dist/core/mainThread/subTopThread.d.ts +2 -2
  14. package/dist/core/tools/arrow.d.ts +1 -423
  15. package/dist/core/tools/base.d.ts +2 -444
  16. package/dist/core/tools/ellipse.d.ts +1 -423
  17. package/dist/core/tools/eraser.d.ts +2 -846
  18. package/dist/core/tools/eraserFaces.d.ts +0 -2
  19. package/dist/core/tools/image.d.ts +1 -0
  20. package/dist/core/tools/laserPen.d.ts +2 -846
  21. package/dist/core/tools/pencil.d.ts +2 -848
  22. package/dist/core/tools/pencilEraser.d.ts +4 -1692
  23. package/dist/core/tools/pencilEraserBitMap.d.ts +5 -2115
  24. package/dist/core/tools/polygon.d.ts +1 -423
  25. package/dist/core/tools/rectangle.d.ts +1 -423
  26. package/dist/core/tools/selector.d.ts +7 -2121
  27. package/dist/core/tools/speechBalloon.d.ts +1 -423
  28. package/dist/core/tools/star.d.ts +1 -423
  29. package/dist/core/tools/straight.d.ts +1 -423
  30. package/dist/core/tools/text.d.ts +3 -3
  31. package/dist/core/tools/utils.d.ts +2 -2
  32. package/dist/core/types.d.ts +0 -9
  33. package/dist/core/utils/index.d.ts +0 -2
  34. package/dist/core/utils/serviceImageRecovery.d.ts +9 -0
  35. package/dist/core/vNodeManager.d.ts +1 -1
  36. package/dist/core/worker/base.d.ts +6 -2
  37. package/dist/core/worker/fullWorkerLocal.d.ts +0 -1
  38. package/dist/core/worker/fullWorkerService.d.ts +4 -2
  39. package/dist/core/worker/simpleWorker.d.ts +2 -2
  40. package/dist/core/worker/subWorkerTopLayer.d.ts +2 -2
  41. package/dist/fullWorker.js +148 -149
  42. package/dist/{index-Ca2t53R7.mjs → index-4ZI3GxVI.mjs} +1 -1
  43. package/dist/{index-ZMuKk-bl.js → index-AJCkfnUu.js} +1 -1
  44. package/dist/{index-ConirzkM.mjs → index-B8Ls8sf_.mjs} +1 -1
  45. package/dist/{index-BbBSxLGe.mjs → index-BBtV40zU.mjs} +563 -490
  46. package/dist/{index-C-tBYq0K.js → index-BOzOWS7h.js} +1 -1
  47. package/dist/index-BQiBrpib.js +1 -0
  48. package/dist/index-BYriQtGa.js +1 -0
  49. package/dist/{index-_3yxgNoj.mjs → index-C2tUvh2a.mjs} +11964 -12224
  50. package/dist/{index-DWevrjrE.mjs → index-DSFxl2wM.mjs} +11917 -12168
  51. package/dist/index-DnJkIouU.js +570 -0
  52. package/dist/index-DptnZ-h8.js +570 -0
  53. package/dist/{index-LcCU1tMV.mjs → index-ZUpKkvbD.mjs} +563 -490
  54. package/dist/subWorker.js +132 -133
  55. package/package.json +3 -4
  56. package/dist/core/utils/affineMatrix.d.ts +0 -33
  57. package/dist/core/utils/fontFamily.d.ts +0 -8
  58. package/dist/core/utils/selectorMatrix.d.ts +0 -4
  59. package/dist/core/utils/selectorRefresh.d.ts +0 -8
  60. package/dist/core/utils/textRaster.d.ts +0 -2
  61. package/dist/index-B0SB7Efu.js +0 -570
  62. package/dist/index-BIVRfc_x.js +0 -570
  63. package/dist/index-Bzg5OMdP.js +0 -1
  64. package/dist/index-CsNG_bzI.js +0 -1
@@ -1,570 +0,0 @@
1
- "use strict";var PM=Object.defineProperty;var DM=(s,t,e)=>t in s?PM(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var x=(s,t,e)=>DM(s,typeof t!="symbol"?t+"":t,e);const ym=require("./bridge-CskJoX5M.js"),It=require("clipper-lib"),vm=require("lz-string"),oh=require("lineclip"),nu=require("xss"),ve=require("lodash"),LM=require("rbush"),iu=require("eventemitter2"),NM=require("spark-md5"),H=require("react"),Za=require("react-dom"),Ki=require("react-draggable"),OM=require("re-resizable");var De=(s=>(s.selector="selector",s.clicker="clicker",s.laserPointer="laserPointer",s.pencil="pencil",s.rectangle="rectangle",s.ellipse="ellipse",s.shape="shape",s.eraser="eraser",s.pencilEraser="pencilEraser",s.text="text",s.straight="straight",s.arrow="arrow",s.hand="hand",s.laserPen="laserPen",s))(De||{}),Dr=(s=>(s[s.OffscreenTransfer=1]="OffscreenTransfer",s[s.ImageBitmap=2]="ImageBitmap",s[s.MainThread=3]="MainThread",s))(Dr||{}),Ka=(s=>(s[s.WebGL=1]="WebGL",s))(Ka||{}),ah=(s=>(s[s.SingleChannelTexture=1]="SingleChannelTexture",s))(ah||{}),ch=(s=>(s[s.TextureSubImage2D=1]="TextureSubImage2D",s))(ch||{}),to=(s=>(s[s.RefreshTextRender=1]="RefreshTextRender",s))(to||{}),Be=(s=>(s.Normal="Normal",s.Stroke="Stroke",s.Dotted="Dotted",s.LongDotted="LongDotted",s))(Be||{}),Kt=(s=>(s.Triangle="triangle",s.Rhombus="rhombus",s.Pentagram="pentagram",s.SpeechBalloon="speechBalloon",s.Star="star",s.Polygon="polygon",s))(Kt||{});const ar={star:"star",polygon:"polygon",speechBalloon:"speechBalloon",bitMapEraser:"bitMapEraser"};var Te=(s=>(s.None="None",s.ShowFloatBar="ShowFloatBar",s.ZIndexFloatBar="ZIndexFloatBar",s.DeleteNode="DeleteNode",s.CopyNode="CopyNode",s.ZIndexNode="ZIndexNode",s.ZIndexBackgroundSVG="ZIndexBackgroundSVG",s.RotateNode="RotateNode",s.SetColorNode="SetColorNode",s.TranslateNode="TranslateNode",s.ScaleNode="ScaleNode",s.OriginalEvent="OriginalEvent",s.CreateScene="CreateScene",s.ActiveCursor="ActiveCursor",s.MoveCursor="MoveCursor",s.CommandEditor="CommandEditor",s.SetEditorData="SetEditorData",s.SetFontStyle="SetFontStyle",s.SetPoint="SetPoint",s.SetLock="SetLock",s.SetShapeOpt="SetShapeOpt",s.CameraChange="CameraChange",s.ActiveMethod="ActiveMethod",s.HidFloatBarBtn="HidFloatBarBtn",s.SelectMethod="SelectMethod",s))(Te||{}),We=(s=>(s.MainEngine="MainEngine",s.Cursor="Cursor",s.BindMainView="BindMainView",s))(We||{}),Mm=(s=>(s[s.MainView=0]="MainView",s[s.Plugin=1]="Plugin",s[s.Both=2]="Both",s))(Mm||{}),Os=(s=>(s.longPencil="longPencil",s.longBitmapEraser="longBitmapEraser",s))(Os||{}),Q=(s=>(s[s.Pencil=1]="Pencil",s[s.Eraser=2]="Eraser",s[s.PencilEraser=3]="PencilEraser",s[s.BitMapEraser=4]="BitMapEraser",s[s.Selector=5]="Selector",s[s.Clicker=6]="Clicker",s[s.Arrow=7]="Arrow",s[s.Hand=8]="Hand",s[s.LaserPen=9]="LaserPen",s[s.Text=10]="Text",s[s.Straight=11]="Straight",s[s.Rectangle=12]="Rectangle",s[s.Ellipse=13]="Ellipse",s[s.Star=14]="Star",s[s.Triangle=15]="Triangle",s[s.Rhombus=16]="Rhombus",s[s.Polygon=17]="Polygon",s[s.SpeechBalloon=18]="SpeechBalloon",s[s.Image=19]="Image",s[s.BackgroundSVG=20]="BackgroundSVG",s))(Q||{}),Re=(s=>(s[s.Local=1]="Local",s[s.Service=2]="Service",s[s.Worker=3]="Worker",s))(Re||{}),he=(s=>(s[s.Pending=0]="Pending",s[s.Start=1]="Start",s[s.Doing=2]="Doing",s[s.Done=3]="Done",s[s.Unwritable=4]="Unwritable",s))(he||{}),le=(s=>(s[s.None=0]="None",s[s.Init=1]="Init",s[s.UpdateCamera=2]="UpdateCamera",s[s.UpdateTools=3]="UpdateTools",s[s.CreateWork=4]="CreateWork",s[s.DrawWork=5]="DrawWork",s[s.FullWork=6]="FullWork",s[s.UpdateNode=7]="UpdateNode",s[s.RemoveNode=8]="RemoveNode",s[s.Clear=9]="Clear",s[s.Select=10]="Select",s[s.Destroy=11]="Destroy",s[s.Snapshot=12]="Snapshot",s[s.BoundingBox=13]="BoundingBox",s[s.Cursor=14]="Cursor",s[s.TextUpdate=15]="TextUpdate",s[s.GetTextActive=16]="GetTextActive",s[s.TasksQueue=17]="TasksQueue",s[s.CursorHover=18]="CursorHover",s[s.CursorBlur=19]="CursorBlur",s[s.Console=20]="Console",s[s.GetImageBitMap=23]="GetImageBitMap",s[s.AuthWriter=24]="AuthWriter",s[s.AuthReader=25]="AuthReader",s[s.AuthClear=26]="AuthClear",s[s.AuthPage=27]="AuthPage",s[s.GetVNodeInfo=28]="GetVNodeInfo",s[s.UpdateDpr=29]="UpdateDpr",s[s.SetFontFace=30]="SetFontFace",s[s.ReportError=31]="ReportError",s[s.ReportLog=32]="ReportLog",s[s.BackgroundSVGUpdate=33]="BackgroundSVGUpdate",s[s.BackgroundSVGDelete=34]="BackgroundSVGDelete",s[s.SelectorTransform=35]="SelectorTransform",s[s.CheckFontFace=36]="CheckFontFace",s[s.RefreshTextRender=37]="RefreshTextRender",s[s.ProbeRenderCapabilities=38]="ProbeRenderCapabilities",s[s.ServiceSyncCommit=39]="ServiceSyncCommit",s[s.CancelFontFace=40]="CancelFontFace",s[s.CancelBitmapEraser=41]="CancelBitmapEraser",s))(le||{}),_e=(s=>(s[s.None=0]="None",s[s.Bg=1]="Bg",s[s.ServiceFloat=2]="ServiceFloat",s[s.Float=3]="Float",s[s.TopFloat=4]="TopFloat",s))(_e||{}),zs=(s=>(s[s.Cursor=1]="Cursor",s[s.TextCreate=2]="TextCreate",s))(zs||{}),bn=(s=>(s[s.Top=1]="Top",s[s.Bottom=2]="Bottom",s))(bn||{}),Ye=(s=>(s[s.none=1]="none",s[s.all=2]="all",s[s.both=3]="both",s[s.proportional=4]="proportional",s))(Ye||{}),on=(s=>(s[s.inside=0]="inside",s[s.outside=1]="outside",s[s.intersect=2]="intersect",s))(on||{}),wt=(s=>(s.renderPage="renderPage",s.addPage="addPage",s.deletePage="deletePage",s.addElement="addElement",s.deleteElement="deleteElement",s.clearPage="clearPage",s.clearViewScenePath="clearViewScenePath",s.clearView="clearView",s.syncUndoStack="syncUndoStack",s.syncRedoStack="syncRedoStack",s))(wt||{}),wr=(s=>(s.setAuth="setAuth",s.setShow="addShow",s.setHide="setHide",s.setClear="setClear",s))(wr||{}),an=(s=>(s.Image="image",s.Iconify="iconify",s))(an||{}),Gi=(s=>(s.url="url",s.markmap="markmap",s))(Gi||{});const wm="cursorhover",Xa=20,Fe="mainView",Ja=500,Sm=Ja,su=500,ca=1e3,zM=ym.getWhiteWebSdkBridgeRuntime(),{toJS:la,autorun:Gc,isRoom:ze,isPlayer:lh,InvisiblePlugin:Tm,RoomPhase:zi}=zM,Ca=new WeakMap,Hc=(s,t)=>{try{s.error(t)}catch{}};function Cm(s,t,e){const r=Symbol("appliance-room-lifecycle-owner"),n=Ca.get(s);if(n)return n.owner=r,n.getManager=t,n.logger=e,n.active=!0,()=>Zd(s,n,r);const i=s.setWritable,o=s.disconnect,a={},c=d=>{const f=a.transitionQueue.then(d,d);return a.transitionQueue=f.then(()=>{},()=>{}),f},l=async d=>{try{const f=a.getManager();if(d==="set-readonly"){const g=await(f==null?void 0:f.setWritable(!1));(g==null?void 0:g.status)==="failed"&&Hc(a.logger,`[Appliance]: force-Done before ${d} failed ACK: ${g.failureReasons.join("; ")}`)}else{const g=await(f==null?void 0:f.forceDoneLocalWorks(d));(g==null?void 0:g.status)==="failed"&&Hc(a.logger,`[Appliance]: force-Done before ${d} failed ACK: ${g.failureReasons.join("; ")}`)}}catch(f){Hc(a.logger,`[Appliance]: force-Done before ${d} failed: ${(f==null?void 0:f.message)||f}`)}},u=function(d){var y;if(a.disconnectPromise)return a.disconnectPromise;if(!a.active||a.phase==="terminal")return Promise.reject(new Error("room lifecycle disposed"));const f=this,g=d||(y=a.getManager())==null?void 0:y.acquireLocalMutationFence();return c(async()=>{try{return d&&a.disconnectRequested?void 0:(d?a.phase==="readonly"&&(a.phase="active"):(a.phase="preparing-readonly",await l("set-readonly"),a.phase="readonly"),await i.call(f,d))}finally{g==null||g()}})},h=function(d){if(a.disconnectPromise)return a.disconnectPromise;if(!a.active||a.phase==="terminal")return Promise.reject(new Error("room lifecycle disposed"));a.disconnectRequested=!0;const f=this,g=a.getManager(),y=g==null?void 0:g.acquireLocalMutationFence();a.disconnectFenceRelease=y;const S=c(async()=>{var b;try{return a.phase="disconnecting",await l("disconnect"),await o.call(f,d)}finally{a.phase="terminal",a.active=!1,(b=g==null?void 0:g.markRoomLifecycleTerminal)==null||b.call(g)}});return a.disconnectPromise=S,S};return Object.assign(a,{owner:r,getManager:t,logger:e,transitionQueue:Promise.resolve(),disconnectRequested:!1,originalSetWritable:i,originalDisconnect:o,setWritableWrapper:u,disconnectWrapper:h,phase:"active",active:!0}),Ca.set(s,a),s.setWritable=u,s.disconnect=h,()=>Zd(s,a,r)}function Zd(s,t,e){var r;e&&t.owner!==e||(t.active=!1,t.phase="terminal",(r=t.disconnectFenceRelease)==null||r.call(t),t.disconnectFenceRelease=void 0,s.setWritable===t.setWritableWrapper&&(s.setWritable=t.originalSetWritable),s.disconnect===t.disconnectWrapper&&(s.disconnect=t.originalDisconnect),Ca.get(s)===t&&Ca.delete(s))}const BM={linear:s=>s,easeInQuad:s=>s*s,easeOutQuad:s=>s*(2-s),easeInOutQuad:s=>s<.5?2*s*s:-1+(4-2*s)*s,easeInCubic:s=>s*s*s,easeOutCubic:s=>--s*s*s+1,easeInOutCubic:s=>s<.5?4*s*s*s:(s-1)*(2*s-2)*(2*s-2)+1,easeInQuart:s=>s*s*s*s,easeOutQuart:s=>1- --s*s*s*s,easeInOutQuart:s=>s<.5?8*s*s*s*s:1-8*--s*s*s*s,easeInQuint:s=>s*s*s*s*s,easeOutQuint:s=>1+--s*s*s*s*s,easeInOutQuint:s=>s<.5?16*s*s*s*s*s:1+16*--s*s*s*s*s,easeInSine:s=>1-Math.cos(s*Math.PI/2),easeOutSine:s=>Math.sin(s*Math.PI/2),easeInOutSine:s=>-(Math.cos(Math.PI*s)-1)/2,easeInExpo:s=>s<=0?0:Math.pow(2,10*s-10),easeOutExpo:s=>s>=1?1:1-Math.pow(2,-10*s),easeInOutExpo:s=>s<=0?0:s>=1?1:s<.5?Math.pow(2,20*s-10)/2:(2-Math.pow(2,-20*s+10))/2};class fe{constructor(t=0,e=0,r=1){this.x=t,this.y=e,this.z=r}get XY(){return[this.x,this.y]}setz(t){return this.z=t,this}setXY(t=this.x,e=this.y){return this.x=t,this.y=e,this}set(t=this.x,e=this.y,r=this.z){return this.x=t,this.y=e,this.z=r,this}setTo({x:t=0,y:e=0,z:r=1}){return this.x=t,this.y=e,this.z=r,this}rot(t){if(t===0)return this;const{x:e,y:r}=this,n=Math.sin(t),i=Math.cos(t);return this.x=e*i-r*n,this.y=e*n+r*i,this}rotWith(t,e){if(e===0)return this;const r=this.x-t.x,n=this.y-t.y,i=Math.sin(e),o=Math.cos(e);return this.x=t.x+(r*o-n*i),this.y=t.y+(r*i+n*o),this}clone(){const{x:t,y:e,z:r}=this;return new fe(t,e,r)}sub(t){return this.x-=t.x,this.y-=t.y,this}subXY(t,e){return this.x-=t,this.y-=e,this}subScalar(t){return this.x-=t,this.y-=t,this}add(t){return this.x+=t.x,this.y+=t.y,this}addXY(t,e){return this.x+=t,this.y+=e,this}addScalar(t){return this.x+=t,this.y+=t,this}clamp(t,e){return this.x=Math.max(this.x,t),this.y=Math.max(this.y,t),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(t){return this.x/=t,this.y/=t,this}divV(t){return this.x/=t.x,this.y/=t.y,this}mul(t){return this.x*=t,this.y*=t,this}mulV(t){return this.x*=t.x,this.y*=t.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(t,e){const r=fe.Tan(t,this);return this.add(r.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(t){return this.x=this.y*t.z-this.z*t.y,this.y=this.z*t.x-this.x*t.z,this}dpr(t){return fe.Dpr(this,t)}cpr(t){return fe.Cpr(this,t)}len2(){return fe.Len2(this)}len(){return fe.Len(this)}pry(t){return fe.Pry(this,t)}per(){const{x:t,y:e}=this;return this.x=e,this.y=-t,this}uni(){return fe.Uni(this)}tan(t){return fe.Tan(this,t)}dist(t){return fe.Dist(this,t)}distanceToLineSegment(t,e){return fe.DistanceToLineSegment(t,e,this)}slope(t){return fe.Slope(this,t)}snapToGrid(t){return this.x=Math.round(this.x/t)*t,this.y=Math.round(this.y/t)*t,this}angle(t){return fe.Angle(this,t)}toAngle(){return fe.ToAngle(this)}lrp(t,e){return this.x=this.x+(t.x-this.x)*e,this.y=this.y+(t.y-this.y)*e,this}equals(t,e){return fe.Equals(this,t,e)}equalsXY(t,e){return fe.EqualsXY(this,t,e)}norm(){const t=this.len();return this.x=t===0?0:this.x/t,this.y=t===0?0:this.y/t,this}toFixed(){return fe.ToFixed(this)}toString(){return fe.ToString(fe.ToFixed(this))}toJson(){return fe.ToJson(this)}toArray(){return fe.ToArray(this)}static Add(t,e){return new fe(t.x+e.x,t.y+e.y)}static AddXY(t,e,r){return new fe(t.x+e,t.y+r)}static Sub(t,e){return new fe(t.x-e.x,t.y-e.y)}static SubXY(t,e,r){return new fe(t.x-e,t.y-r)}static AddScalar(t,e){return new fe(t.x+e,t.y+e)}static SubScalar(t,e){return new fe(t.x-e,t.y-e)}static Div(t,e){return new fe(t.x/e,t.y/e)}static Mul(t,e){return new fe(t.x*e,t.y*e)}static DivV(t,e){return new fe(t.x/e.x,t.y/e.y)}static MulV(t,e){return new fe(t.x*e.x,t.y*e.y)}static Neg(t){return new fe(-t.x,-t.y)}static Per(t){return new fe(t.y,-t.x)}static Dist2(t,e){return fe.Sub(t,e).len2()}static Abs(t){return new fe(Math.abs(t.x),Math.abs(t.y))}static Dist(t,e){return Math.hypot(t.y-e.y,t.x-e.x)}static Dpr(t,e){return t.x*e.x+t.y*e.y}static Cross(t,e){return new fe(t.y*e.z-t.z*e.y,t.z*e.x-t.x*e.z)}static Cpr(t,e){return t.x*e.y-e.x*t.y}static Len2(t){return t.x*t.x+t.y*t.y}static Len(t){return Math.hypot(t.x,t.y)}static Pry(t,e){return fe.Dpr(t,e)/fe.Len(e)}static Uni(t){return fe.Div(t,fe.Len(t))}static Tan(t,e){return fe.Uni(fe.Sub(t,e))}static Min(t,e){return new fe(Math.min(t.x,e.x),Math.min(t.y,e.y))}static Max(t,e){return new fe(Math.max(t.x,e.x),Math.max(t.y,e.y))}static From(t){return new fe().add(t)}static FromArray(t){return new fe(t[0],t[1])}static Rot(t,e=0){const r=Math.sin(e),n=Math.cos(e);return new fe(t.x*n-t.y*r,t.x*r+t.y*n)}static RotWith(t,e,r){const n=t.x-e.x,i=t.y-e.y,o=Math.sin(r),a=Math.cos(r);return new fe(e.x+(n*a-i*o),e.y+(n*o+i*a))}static NearestPointOnLineThroughPoint(t,e,r){return fe.Mul(e,fe.Sub(r,t).pry(e)).add(t)}static NearestPointOnLineSegment(t,e,r,n=!0){const i=fe.Tan(e,t),o=fe.Add(t,fe.Mul(i,fe.Sub(r,t).pry(i)));if(n){if(o.x<Math.min(t.x,e.x))return fe.Cast(t.x<e.x?t:e);if(o.x>Math.max(t.x,e.x))return fe.Cast(t.x>e.x?t:e);if(o.y<Math.min(t.y,e.y))return fe.Cast(t.y<e.y?t:e);if(o.y>Math.max(t.y,e.y))return fe.Cast(t.y>e.y?t:e)}return o}static DistanceToLineThroughPoint(t,e,r){return fe.Dist(r,fe.NearestPointOnLineThroughPoint(t,e,r))}static DistanceToLineSegment(t,e,r,n=!0){return fe.Dist(r,fe.NearestPointOnLineSegment(t,e,r,n))}static Snap(t,e=1){return new fe(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}static Cast(t){return t instanceof fe?t:fe.From(t)}static Slope(t,e){return t.x===e.y?NaN:(t.y-e.y)/(t.x-e.x)}static Angle(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static Lrp(t,e,r){return fe.Sub(e,t).mul(r).add(t)}static Med(t,e){return new fe((t.x+e.x)/2,(t.y+e.y)/2)}static Equals(t,e,r=1e-4){return Math.abs(t.x-e.x)<r&&Math.abs(t.y-e.y)<r}static EqualsXY(t,e,r){return t.x===e&&t.y===r}static EqualsXYZ(t,e,r=1e-4){return fe.Equals(t,e,r)&&Math.abs((t.z||0)-(e.z||0))<r}static Clockwise(t,e,r){return(r.x-t.x)*(e.y-t.y)-(e.x-t.x)*(r.y-t.y)<0}static Rescale(t,e){const r=fe.Len(t);return new fe(e*t.x/r,e*t.y/r)}static ScaleWithOrigin(t,e,r){return fe.Sub(t,r).mul(e).add(r)}static ScaleWOrigin(t,e,r){return fe.Sub(t,r).mulV(e).add(r)}static ToFixed(t,e=2){return new fe(+t.x.toFixed(e),+t.y.toFixed(e),+t.z.toFixed(e))}static Nudge(t,e,r){return fe.Add(t,fe.Tan(e,t).mul(r))}static ToString(t){return`${t.x}, ${t.y}`}static ToAngle(t){let e=Math.atan2(t.y,t.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(t,e=1){return new fe(Math.cos(t)*e,Math.sin(t)*e)}static ToArray(t){return[t.x,t.y,t.z]}static ToJson(t){const{x:e,y:r,z:n}=t;return{x:e,y:r,z:n}}static Average(t){const e=t.length,r=new fe(0,0);for(let n=0;n<e;n++)r.add(t[n]);return r.div(e)}static Clamp(t,e,r){return r===void 0?new fe(Math.min(Math.max(t.x,e)),Math.min(Math.max(t.y,e))):new fe(Math.min(Math.max(t.x,e),r),Math.min(Math.max(t.y,e),r))}static PointsBetween(t,e,r=6){const n=[];for(let i=0;i<r;i++){const o=BM.easeInQuad(i/(r-1)),a=fe.Lrp(t,e,o);a.z=Math.min(1,.5+Math.abs(.5-jM(o))*.65),n.push(a)}return n}static SnapToGrid(t,e=8){return new fe(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}}const jM=s=>s<.5?2*s*s:-1+(4-2*s)*s;class Pe extends fe{constructor(t=0,e=0,r=0,n={x:0,y:0},i=0,o=0){super(t,e,r),this.x=t,this.y=e,this.z=r,this.v=n,this.t=i,this.a=o}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(t){this.a=t}setT(t){this.t=t}setv(t){return this.v={x:t.x,y:t.y},this}set(t=this.x,e=this.y,r=this.z,n=this.v,i=this.t,o=this.a){return this.x=t,this.y=e,this.z=r,this.v=n,this.t=i,this.a=o,this}clone(){const{x:t,y:e,z:r,v:n,t:i,a:o}=this,a={x:n.x,y:n.y};return new Pe(t,e,r,a,i,o)}distance(t){return Pe.GetDistance(this,t)}isNear(t,e){return Pe.IsNear(this,t,e)}getAngleByPoints(t,e){return Pe.GetAngleByPoints(t,this,e)}static Sub(t,e){return new Pe(t.x-e.x,t.y-e.y)}static Add(t,e){return new Pe(t.x+e.x,t.y+e.y)}static GetDistance(t,e){return Pe.Len(t.clone().sub(e))}static GetAngleByPoints(t,e,r){const n=e.x-t.x,i=r.x-e.x,o=e.y-t.y,a=r.y-e.y;let c=0;const l=Math.sqrt(n*n+o*o),u=Math.sqrt(i*i+a*a);if(l&&u){const h=n*i+o*a;c=Math.acos(h/(l*u)),c=c/Math.PI*180;let d=n*a-o*i;d=d>0?1:-1,c=180+d*c}return c}static IsNear(t,e,r){return Pe.Len(t.clone().sub(e))<r}static RotWith(t,e,r,n=2){const i=t.x-e.x,o=t.y-e.y,a=Math.sin(r),c=Math.cos(r),l=Math.pow(10,n),u=Math.floor((e.x+(i*c-o*a))*l)/l,h=Math.floor((e.y+(i*a+o*c))*l)/l;return new Pe(u,h)}static GetDotStroke(t,e,r=16){const n=new fe(1,1),i=Math.PI+.001,o=Pe.Add(t,Pe.Sub(t,n).uni().per().mul(-e)),a=[];for(let c=1/r,l=c;l<=1;l+=c)a.push(Pe.RotWith(o,t,i*2*l));return a}static GetSemicircleStroke(t,e,r=-1,n=8){const i=r*(Math.PI+.001),o=[];for(let a=1/n,c=a;c<=1;c+=a)o.push(Pe.RotWith(e,t,i*c));return o}}var Ii=1e-6,Vs=typeof Float32Array<"u"?Float32Array:Array;function Ze(s){Vs=s}function FM(){var s=new Vs(6);return Vs!=Float32Array&&(s[1]=0,s[2]=0,s[4]=0,s[5]=0),s[0]=1,s[3]=1,s}function UM(s){var t=new Vs(6);return t[0]=s[0],t[1]=s[1],t[2]=s[2],t[3]=s[3],t[4]=s[4],t[5]=s[5],t}function WM(s,t){return s[0]=t[0],s[1]=t[1],s[2]=t[2],s[3]=t[3],s[4]=t[4],s[5]=t[5],s}function VM(s){return s[0]=1,s[1]=0,s[2]=0,s[3]=1,s[4]=0,s[5]=0,s}function ii(s,t,e,r,n,i){var o=new Vs(6);return o[0]=s,o[1]=t,o[2]=e,o[3]=r,o[4]=n,o[5]=i,o}function $M(s,t,e,r,n,i,o){return s[0]=t,s[1]=e,s[2]=r,s[3]=n,s[4]=i,s[5]=o,s}function Ia(s,t){var e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],a=t[5],c=e*i-r*n;return c?(c=1/c,s[0]=i*c,s[1]=-r*c,s[2]=-n*c,s[3]=e*c,s[4]=(n*a-i*o)*c,s[5]=(r*o-e*a)*c,s):null}function YM(s){return s[0]*s[3]-s[1]*s[2]}function zr(s,t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],l=e[0],u=e[1],h=e[2],d=e[3],f=e[4],g=e[5];return s[0]=r*l+i*u,s[1]=n*l+o*u,s[2]=r*h+i*d,s[3]=n*h+o*d,s[4]=r*f+i*g+a,s[5]=n*f+o*g+c,s}function Im(s,t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],l=Math.sin(e),u=Math.cos(e);return s[0]=r*u+i*l,s[1]=n*u+o*l,s[2]=r*-l+i*u,s[3]=n*-l+o*u,s[4]=a,s[5]=c,s}function GM(s,t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],l=e[0],u=e[1];return s[0]=r*l,s[1]=n*l,s[2]=i*u,s[3]=o*u,s[4]=a,s[5]=c,s}function ou(s,t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],l=e[0],u=e[1];return s[0]=r,s[1]=n,s[2]=i,s[3]=o,s[4]=r*l+i*u+a,s[5]=n*l+o*u+c,s}function HM(s,t){var e=Math.sin(t),r=Math.cos(t);return s[0]=r,s[1]=e,s[2]=-e,s[3]=r,s[4]=0,s[5]=0,s}function QM(s,t){return s[0]=t[0],s[1]=0,s[2]=0,s[3]=t[1],s[4]=0,s[5]=0,s}function qM(s,t){return s[0]=1,s[1]=0,s[2]=0,s[3]=1,s[4]=t[0],s[5]=t[1],s}function ZM(s){return"mat2d("+s[0]+", "+s[1]+", "+s[2]+", "+s[3]+", "+s[4]+", "+s[5]+")"}function KM(s){return Math.sqrt(s[0]*s[0]+s[1]*s[1]+s[2]*s[2]+s[3]*s[3]+s[4]*s[4]+s[5]*s[5]+1)}function XM(s,t,e){return s[0]=t[0]+e[0],s[1]=t[1]+e[1],s[2]=t[2]+e[2],s[3]=t[3]+e[3],s[4]=t[4]+e[4],s[5]=t[5]+e[5],s}function bm(s,t,e){return s[0]=t[0]-e[0],s[1]=t[1]-e[1],s[2]=t[2]-e[2],s[3]=t[3]-e[3],s[4]=t[4]-e[4],s[5]=t[5]-e[5],s}function JM(s,t,e){return s[0]=t[0]*e,s[1]=t[1]*e,s[2]=t[2]*e,s[3]=t[3]*e,s[4]=t[4]*e,s[5]=t[5]*e,s}function _M(s,t,e,r){return s[0]=t[0]+e[0]*r,s[1]=t[1]+e[1]*r,s[2]=t[2]+e[2]*r,s[3]=t[3]+e[3]*r,s[4]=t[4]+e[4]*r,s[5]=t[5]+e[5]*r,s}function ew(s,t){return s[0]===t[0]&&s[1]===t[1]&&s[2]===t[2]&&s[3]===t[3]&&s[4]===t[4]&&s[5]===t[5]}function tw(s,t){var e=s[0],r=s[1],n=s[2],i=s[3],o=s[4],a=s[5],c=t[0],l=t[1],u=t[2],h=t[3],d=t[4],f=t[5];return Math.abs(e-c)<=Ii*Math.max(1,Math.abs(e),Math.abs(c))&&Math.abs(r-l)<=Ii*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(n-u)<=Ii*Math.max(1,Math.abs(n),Math.abs(u))&&Math.abs(i-h)<=Ii*Math.max(1,Math.abs(i),Math.abs(h))&&Math.abs(o-d)<=Ii*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(a-f)<=Ii*Math.max(1,Math.abs(a),Math.abs(f))}var rw=zr,nw=bm;const Em=Object.freeze(Object.defineProperty({__proto__:null,add:XM,clone:UM,copy:WM,create:FM,determinant:YM,equals:tw,exactEquals:ew,frob:KM,fromRotation:HM,fromScaling:QM,fromTranslation:qM,fromValues:ii,identity:VM,invert:Ia,mul:rw,multiply:zr,multiplyScalar:JM,multiplyScalarAndAdd:_M,rotate:Im,scale:GM,set:$M,str:ZM,sub:nw,subtract:bm,translate:ou},Symbol.toStringTag,{value:"Module"}));var St=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function un(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var xm={exports:{}};(function(s,t){(function(r,n){s.exports=n()})(St,function(){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var o=r[i]={i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=r,n.d=function(i,o,a){n.o(i,o)||Object.defineProperty(i,o,{enumerable:!0,get:a})},n.r=function(i){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},n.t=function(i,o){if(o&1&&(i=n(i)),o&8||o&4&&typeof i=="object"&&i&&i.__esModule)return i;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:i}),o&2&&typeof i!="string")for(var c in i)n.d(a,c,(function(l){return i[l]}).bind(null,c));return a},n.n=function(i){var o=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(o,"a",o),o},n.o=function(i,o){return Object.prototype.hasOwnProperty.call(i,o)},n.p="/js/",n(n.s=0)}([function(e,r,n){n.r(r);var i=n(12);n.d(r,"Renderer",function(){return i.default});var o=n(56);n.d(r,"Figure2D",function(){return o.default});var a=n(73);n.d(r,"Mesh2D",function(){return a.default});var c=n(45);n.d(r,"MeshCloud",function(){return c.default});var l=n(39);n.d(r,"parseFont",function(){return l.default});var u=n(47);n.d(r,"parseColor",function(){return u.default});var h=n(37);n.d(r,"ENV",function(){return h.default}),n(1).glMatrix.setMatrixArrayType(Array)},function(e,r,n){n.r(r);var i=n(2);n.d(r,"glMatrix",function(){return i});var o=n(3);n.d(r,"mat2",function(){return o});var a=n(4);n.d(r,"mat2d",function(){return a});var c=n(5);n.d(r,"mat3",function(){return c});var l=n(6);n.d(r,"mat4",function(){return l});var u=n(7);n.d(r,"quat",function(){return u});var h=n(10);n.d(r,"quat2",function(){return h});var d=n(11);n.d(r,"vec2",function(){return d});var f=n(8);n.d(r,"vec3",function(){return f});var g=n(9);n.d(r,"vec4",function(){return g})},function(e,r,n){n.r(r),n.d(r,"EPSILON",function(){return i}),n.d(r,"ARRAY_TYPE",function(){return o}),n.d(r,"RANDOM",function(){return a}),n.d(r,"setMatrixArrayType",function(){return c}),n.d(r,"toRadian",function(){return u}),n.d(r,"equals",function(){return h});var i=1e-6,o=typeof Float32Array<"u"?Float32Array:Array,a=Math.random;function c(d){o=d}var l=Math.PI/180;function u(d){return d*l}function h(d,f){return Math.abs(d-f)<=i*Math.max(1,Math.abs(d),Math.abs(f))}Math.hypot||(Math.hypot=function(){for(var d=0,f=arguments.length;f--;)d+=arguments[f]*arguments[f];return Math.sqrt(d)})},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"copy",function(){return c}),n.d(r,"identity",function(){return l}),n.d(r,"fromValues",function(){return u}),n.d(r,"set",function(){return h}),n.d(r,"transpose",function(){return d}),n.d(r,"invert",function(){return f}),n.d(r,"adjoint",function(){return g}),n.d(r,"determinant",function(){return y}),n.d(r,"multiply",function(){return S}),n.d(r,"rotate",function(){return b}),n.d(r,"scale",function(){return C}),n.d(r,"fromRotation",function(){return N}),n.d(r,"fromScaling",function(){return T}),n.d(r,"str",function(){return p}),n.d(r,"frob",function(){return m}),n.d(r,"LDU",function(){return v}),n.d(r,"add",function(){return M}),n.d(r,"subtract",function(){return R}),n.d(r,"exactEquals",function(){return E}),n.d(r,"equals",function(){return P}),n.d(r,"multiplyScalar",function(){return k}),n.d(r,"multiplyScalarAndAdd",function(){return O}),n.d(r,"mul",function(){return B}),n.d(r,"sub",function(){return D});var i=n(2);function o(){var A=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(A[1]=0,A[2]=0),A[0]=1,A[3]=1,A}function a(A){var L=new i.ARRAY_TYPE(4);return L[0]=A[0],L[1]=A[1],L[2]=A[2],L[3]=A[3],L}function c(A,L){return A[0]=L[0],A[1]=L[1],A[2]=L[2],A[3]=L[3],A}function l(A){return A[0]=1,A[1]=0,A[2]=0,A[3]=1,A}function u(A,L,U,Y){var q=new i.ARRAY_TYPE(4);return q[0]=A,q[1]=L,q[2]=U,q[3]=Y,q}function h(A,L,U,Y,q){return A[0]=L,A[1]=U,A[2]=Y,A[3]=q,A}function d(A,L){if(A===L){var U=L[1];A[1]=L[2],A[2]=U}else A[0]=L[0],A[1]=L[2],A[2]=L[1],A[3]=L[3];return A}function f(A,L){var U=L[0],Y=L[1],q=L[2],ie=L[3],z=U*ie-q*Y;return z?(z=1/z,A[0]=ie*z,A[1]=-Y*z,A[2]=-q*z,A[3]=U*z,A):null}function g(A,L){var U=L[0];return A[0]=L[3],A[1]=-L[1],A[2]=-L[2],A[3]=U,A}function y(A){return A[0]*A[3]-A[2]*A[1]}function S(A,L,U){var Y=L[0],q=L[1],ie=L[2],z=L[3],V=U[0],Z=U[1],$=U[2],ee=U[3];return A[0]=Y*V+ie*Z,A[1]=q*V+z*Z,A[2]=Y*$+ie*ee,A[3]=q*$+z*ee,A}function b(A,L,U){var Y=L[0],q=L[1],ie=L[2],z=L[3],V=Math.sin(U),Z=Math.cos(U);return A[0]=Y*Z+ie*V,A[1]=q*Z+z*V,A[2]=Y*-V+ie*Z,A[3]=q*-V+z*Z,A}function C(A,L,U){var Y=L[0],q=L[1],ie=L[2],z=L[3],V=U[0],Z=U[1];return A[0]=Y*V,A[1]=q*V,A[2]=ie*Z,A[3]=z*Z,A}function N(A,L){var U=Math.sin(L),Y=Math.cos(L);return A[0]=Y,A[1]=U,A[2]=-U,A[3]=Y,A}function T(A,L){return A[0]=L[0],A[1]=0,A[2]=0,A[3]=L[1],A}function p(A){return"mat2("+A[0]+", "+A[1]+", "+A[2]+", "+A[3]+")"}function m(A){return Math.hypot(A[0],A[1],A[2],A[3])}function v(A,L,U,Y){return A[2]=Y[2]/Y[0],U[0]=Y[0],U[1]=Y[1],U[3]=Y[3]-A[2]*U[1],[A,L,U]}function M(A,L,U){return A[0]=L[0]+U[0],A[1]=L[1]+U[1],A[2]=L[2]+U[2],A[3]=L[3]+U[3],A}function R(A,L,U){return A[0]=L[0]-U[0],A[1]=L[1]-U[1],A[2]=L[2]-U[2],A[3]=L[3]-U[3],A}function E(A,L){return A[0]===L[0]&&A[1]===L[1]&&A[2]===L[2]&&A[3]===L[3]}function P(A,L){var U=A[0],Y=A[1],q=A[2],ie=A[3],z=L[0],V=L[1],Z=L[2],$=L[3];return Math.abs(U-z)<=i.EPSILON*Math.max(1,Math.abs(U),Math.abs(z))&&Math.abs(Y-V)<=i.EPSILON*Math.max(1,Math.abs(Y),Math.abs(V))&&Math.abs(q-Z)<=i.EPSILON*Math.max(1,Math.abs(q),Math.abs(Z))&&Math.abs(ie-$)<=i.EPSILON*Math.max(1,Math.abs(ie),Math.abs($))}function k(A,L,U){return A[0]=L[0]*U,A[1]=L[1]*U,A[2]=L[2]*U,A[3]=L[3]*U,A}function O(A,L,U,Y){return A[0]=L[0]+U[0]*Y,A[1]=L[1]+U[1]*Y,A[2]=L[2]+U[2]*Y,A[3]=L[3]+U[3]*Y,A}var B=S,D=R},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"copy",function(){return c}),n.d(r,"identity",function(){return l}),n.d(r,"fromValues",function(){return u}),n.d(r,"set",function(){return h}),n.d(r,"invert",function(){return d}),n.d(r,"determinant",function(){return f}),n.d(r,"multiply",function(){return g}),n.d(r,"rotate",function(){return y}),n.d(r,"scale",function(){return S}),n.d(r,"translate",function(){return b}),n.d(r,"fromRotation",function(){return C}),n.d(r,"fromScaling",function(){return N}),n.d(r,"fromTranslation",function(){return T}),n.d(r,"str",function(){return p}),n.d(r,"frob",function(){return m}),n.d(r,"add",function(){return v}),n.d(r,"subtract",function(){return M}),n.d(r,"multiplyScalar",function(){return R}),n.d(r,"multiplyScalarAndAdd",function(){return E}),n.d(r,"exactEquals",function(){return P}),n.d(r,"equals",function(){return k}),n.d(r,"mul",function(){return O}),n.d(r,"sub",function(){return B});var i=n(2);function o(){var D=new i.ARRAY_TYPE(6);return i.ARRAY_TYPE!=Float32Array&&(D[1]=0,D[2]=0,D[4]=0,D[5]=0),D[0]=1,D[3]=1,D}function a(D){var A=new i.ARRAY_TYPE(6);return A[0]=D[0],A[1]=D[1],A[2]=D[2],A[3]=D[3],A[4]=D[4],A[5]=D[5],A}function c(D,A){return D[0]=A[0],D[1]=A[1],D[2]=A[2],D[3]=A[3],D[4]=A[4],D[5]=A[5],D}function l(D){return D[0]=1,D[1]=0,D[2]=0,D[3]=1,D[4]=0,D[5]=0,D}function u(D,A,L,U,Y,q){var ie=new i.ARRAY_TYPE(6);return ie[0]=D,ie[1]=A,ie[2]=L,ie[3]=U,ie[4]=Y,ie[5]=q,ie}function h(D,A,L,U,Y,q,ie){return D[0]=A,D[1]=L,D[2]=U,D[3]=Y,D[4]=q,D[5]=ie,D}function d(D,A){var L=A[0],U=A[1],Y=A[2],q=A[3],ie=A[4],z=A[5],V=L*q-U*Y;return V?(V=1/V,D[0]=q*V,D[1]=-U*V,D[2]=-Y*V,D[3]=L*V,D[4]=(Y*z-q*ie)*V,D[5]=(U*ie-L*z)*V,D):null}function f(D){return D[0]*D[3]-D[1]*D[2]}function g(D,A,L){var U=A[0],Y=A[1],q=A[2],ie=A[3],z=A[4],V=A[5],Z=L[0],$=L[1],ee=L[2],oe=L[3],ce=L[4],me=L[5];return D[0]=U*Z+q*$,D[1]=Y*Z+ie*$,D[2]=U*ee+q*oe,D[3]=Y*ee+ie*oe,D[4]=U*ce+q*me+z,D[5]=Y*ce+ie*me+V,D}function y(D,A,L){var U=A[0],Y=A[1],q=A[2],ie=A[3],z=A[4],V=A[5],Z=Math.sin(L),$=Math.cos(L);return D[0]=U*$+q*Z,D[1]=Y*$+ie*Z,D[2]=U*-Z+q*$,D[3]=Y*-Z+ie*$,D[4]=z,D[5]=V,D}function S(D,A,L){var U=A[0],Y=A[1],q=A[2],ie=A[3],z=A[4],V=A[5],Z=L[0],$=L[1];return D[0]=U*Z,D[1]=Y*Z,D[2]=q*$,D[3]=ie*$,D[4]=z,D[5]=V,D}function b(D,A,L){var U=A[0],Y=A[1],q=A[2],ie=A[3],z=A[4],V=A[5],Z=L[0],$=L[1];return D[0]=U,D[1]=Y,D[2]=q,D[3]=ie,D[4]=U*Z+q*$+z,D[5]=Y*Z+ie*$+V,D}function C(D,A){var L=Math.sin(A),U=Math.cos(A);return D[0]=U,D[1]=L,D[2]=-L,D[3]=U,D[4]=0,D[5]=0,D}function N(D,A){return D[0]=A[0],D[1]=0,D[2]=0,D[3]=A[1],D[4]=0,D[5]=0,D}function T(D,A){return D[0]=1,D[1]=0,D[2]=0,D[3]=1,D[4]=A[0],D[5]=A[1],D}function p(D){return"mat2d("+D[0]+", "+D[1]+", "+D[2]+", "+D[3]+", "+D[4]+", "+D[5]+")"}function m(D){return Math.hypot(D[0],D[1],D[2],D[3],D[4],D[5],1)}function v(D,A,L){return D[0]=A[0]+L[0],D[1]=A[1]+L[1],D[2]=A[2]+L[2],D[3]=A[3]+L[3],D[4]=A[4]+L[4],D[5]=A[5]+L[5],D}function M(D,A,L){return D[0]=A[0]-L[0],D[1]=A[1]-L[1],D[2]=A[2]-L[2],D[3]=A[3]-L[3],D[4]=A[4]-L[4],D[5]=A[5]-L[5],D}function R(D,A,L){return D[0]=A[0]*L,D[1]=A[1]*L,D[2]=A[2]*L,D[3]=A[3]*L,D[4]=A[4]*L,D[5]=A[5]*L,D}function E(D,A,L,U){return D[0]=A[0]+L[0]*U,D[1]=A[1]+L[1]*U,D[2]=A[2]+L[2]*U,D[3]=A[3]+L[3]*U,D[4]=A[4]+L[4]*U,D[5]=A[5]+L[5]*U,D}function P(D,A){return D[0]===A[0]&&D[1]===A[1]&&D[2]===A[2]&&D[3]===A[3]&&D[4]===A[4]&&D[5]===A[5]}function k(D,A){var L=D[0],U=D[1],Y=D[2],q=D[3],ie=D[4],z=D[5],V=A[0],Z=A[1],$=A[2],ee=A[3],oe=A[4],ce=A[5];return Math.abs(L-V)<=i.EPSILON*Math.max(1,Math.abs(L),Math.abs(V))&&Math.abs(U-Z)<=i.EPSILON*Math.max(1,Math.abs(U),Math.abs(Z))&&Math.abs(Y-$)<=i.EPSILON*Math.max(1,Math.abs(Y),Math.abs($))&&Math.abs(q-ee)<=i.EPSILON*Math.max(1,Math.abs(q),Math.abs(ee))&&Math.abs(ie-oe)<=i.EPSILON*Math.max(1,Math.abs(ie),Math.abs(oe))&&Math.abs(z-ce)<=i.EPSILON*Math.max(1,Math.abs(z),Math.abs(ce))}var O=g,B=M},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"fromMat4",function(){return a}),n.d(r,"clone",function(){return c}),n.d(r,"copy",function(){return l}),n.d(r,"fromValues",function(){return u}),n.d(r,"set",function(){return h}),n.d(r,"identity",function(){return d}),n.d(r,"transpose",function(){return f}),n.d(r,"invert",function(){return g}),n.d(r,"adjoint",function(){return y}),n.d(r,"determinant",function(){return S}),n.d(r,"multiply",function(){return b}),n.d(r,"translate",function(){return C}),n.d(r,"rotate",function(){return N}),n.d(r,"scale",function(){return T}),n.d(r,"fromTranslation",function(){return p}),n.d(r,"fromRotation",function(){return m}),n.d(r,"fromScaling",function(){return v}),n.d(r,"fromMat2d",function(){return M}),n.d(r,"fromQuat",function(){return R}),n.d(r,"normalFromMat4",function(){return E}),n.d(r,"projection",function(){return P}),n.d(r,"str",function(){return k}),n.d(r,"frob",function(){return O}),n.d(r,"add",function(){return B}),n.d(r,"subtract",function(){return D}),n.d(r,"multiplyScalar",function(){return A}),n.d(r,"multiplyScalarAndAdd",function(){return L}),n.d(r,"exactEquals",function(){return U}),n.d(r,"equals",function(){return Y}),n.d(r,"mul",function(){return q}),n.d(r,"sub",function(){return ie});var i=n(2);function o(){var z=new i.ARRAY_TYPE(9);return i.ARRAY_TYPE!=Float32Array&&(z[1]=0,z[2]=0,z[3]=0,z[5]=0,z[6]=0,z[7]=0),z[0]=1,z[4]=1,z[8]=1,z}function a(z,V){return z[0]=V[0],z[1]=V[1],z[2]=V[2],z[3]=V[4],z[4]=V[5],z[5]=V[6],z[6]=V[8],z[7]=V[9],z[8]=V[10],z}function c(z){var V=new i.ARRAY_TYPE(9);return V[0]=z[0],V[1]=z[1],V[2]=z[2],V[3]=z[3],V[4]=z[4],V[5]=z[5],V[6]=z[6],V[7]=z[7],V[8]=z[8],V}function l(z,V){return z[0]=V[0],z[1]=V[1],z[2]=V[2],z[3]=V[3],z[4]=V[4],z[5]=V[5],z[6]=V[6],z[7]=V[7],z[8]=V[8],z}function u(z,V,Z,$,ee,oe,ce,me,pe){var j=new i.ARRAY_TYPE(9);return j[0]=z,j[1]=V,j[2]=Z,j[3]=$,j[4]=ee,j[5]=oe,j[6]=ce,j[7]=me,j[8]=pe,j}function h(z,V,Z,$,ee,oe,ce,me,pe,j){return z[0]=V,z[1]=Z,z[2]=$,z[3]=ee,z[4]=oe,z[5]=ce,z[6]=me,z[7]=pe,z[8]=j,z}function d(z){return z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=1,z[5]=0,z[6]=0,z[7]=0,z[8]=1,z}function f(z,V){if(z===V){var Z=V[1],$=V[2],ee=V[5];z[1]=V[3],z[2]=V[6],z[3]=Z,z[5]=V[7],z[6]=$,z[7]=ee}else z[0]=V[0],z[1]=V[3],z[2]=V[6],z[3]=V[1],z[4]=V[4],z[5]=V[7],z[6]=V[2],z[7]=V[5],z[8]=V[8];return z}function g(z,V){var Z=V[0],$=V[1],ee=V[2],oe=V[3],ce=V[4],me=V[5],pe=V[6],j=V[7],F=V[8],J=F*ce-me*j,ae=-F*oe+me*pe,K=j*oe-ce*pe,te=Z*J+$*ae+ee*K;return te?(te=1/te,z[0]=J*te,z[1]=(-F*$+ee*j)*te,z[2]=(me*$-ee*ce)*te,z[3]=ae*te,z[4]=(F*Z-ee*pe)*te,z[5]=(-me*Z+ee*oe)*te,z[6]=K*te,z[7]=(-j*Z+$*pe)*te,z[8]=(ce*Z-$*oe)*te,z):null}function y(z,V){var Z=V[0],$=V[1],ee=V[2],oe=V[3],ce=V[4],me=V[5],pe=V[6],j=V[7],F=V[8];return z[0]=ce*F-me*j,z[1]=ee*j-$*F,z[2]=$*me-ee*ce,z[3]=me*pe-oe*F,z[4]=Z*F-ee*pe,z[5]=ee*oe-Z*me,z[6]=oe*j-ce*pe,z[7]=$*pe-Z*j,z[8]=Z*ce-$*oe,z}function S(z){var V=z[0],Z=z[1],$=z[2],ee=z[3],oe=z[4],ce=z[5],me=z[6],pe=z[7],j=z[8];return V*(j*oe-ce*pe)+Z*(-j*ee+ce*me)+$*(pe*ee-oe*me)}function b(z,V,Z){var $=V[0],ee=V[1],oe=V[2],ce=V[3],me=V[4],pe=V[5],j=V[6],F=V[7],J=V[8],ae=Z[0],K=Z[1],te=Z[2],w=Z[3],I=Z[4],W=Z[5],G=Z[6],_=Z[7],ne=Z[8];return z[0]=ae*$+K*ce+te*j,z[1]=ae*ee+K*me+te*F,z[2]=ae*oe+K*pe+te*J,z[3]=w*$+I*ce+W*j,z[4]=w*ee+I*me+W*F,z[5]=w*oe+I*pe+W*J,z[6]=G*$+_*ce+ne*j,z[7]=G*ee+_*me+ne*F,z[8]=G*oe+_*pe+ne*J,z}function C(z,V,Z){var $=V[0],ee=V[1],oe=V[2],ce=V[3],me=V[4],pe=V[5],j=V[6],F=V[7],J=V[8],ae=Z[0],K=Z[1];return z[0]=$,z[1]=ee,z[2]=oe,z[3]=ce,z[4]=me,z[5]=pe,z[6]=ae*$+K*ce+j,z[7]=ae*ee+K*me+F,z[8]=ae*oe+K*pe+J,z}function N(z,V,Z){var $=V[0],ee=V[1],oe=V[2],ce=V[3],me=V[4],pe=V[5],j=V[6],F=V[7],J=V[8],ae=Math.sin(Z),K=Math.cos(Z);return z[0]=K*$+ae*ce,z[1]=K*ee+ae*me,z[2]=K*oe+ae*pe,z[3]=K*ce-ae*$,z[4]=K*me-ae*ee,z[5]=K*pe-ae*oe,z[6]=j,z[7]=F,z[8]=J,z}function T(z,V,Z){var $=Z[0],ee=Z[1];return z[0]=$*V[0],z[1]=$*V[1],z[2]=$*V[2],z[3]=ee*V[3],z[4]=ee*V[4],z[5]=ee*V[5],z[6]=V[6],z[7]=V[7],z[8]=V[8],z}function p(z,V){return z[0]=1,z[1]=0,z[2]=0,z[3]=0,z[4]=1,z[5]=0,z[6]=V[0],z[7]=V[1],z[8]=1,z}function m(z,V){var Z=Math.sin(V),$=Math.cos(V);return z[0]=$,z[1]=Z,z[2]=0,z[3]=-Z,z[4]=$,z[5]=0,z[6]=0,z[7]=0,z[8]=1,z}function v(z,V){return z[0]=V[0],z[1]=0,z[2]=0,z[3]=0,z[4]=V[1],z[5]=0,z[6]=0,z[7]=0,z[8]=1,z}function M(z,V){return z[0]=V[0],z[1]=V[1],z[2]=0,z[3]=V[2],z[4]=V[3],z[5]=0,z[6]=V[4],z[7]=V[5],z[8]=1,z}function R(z,V){var Z=V[0],$=V[1],ee=V[2],oe=V[3],ce=Z+Z,me=$+$,pe=ee+ee,j=Z*ce,F=$*ce,J=$*me,ae=ee*ce,K=ee*me,te=ee*pe,w=oe*ce,I=oe*me,W=oe*pe;return z[0]=1-J-te,z[3]=F-W,z[6]=ae+I,z[1]=F+W,z[4]=1-j-te,z[7]=K-w,z[2]=ae-I,z[5]=K+w,z[8]=1-j-J,z}function E(z,V){var Z=V[0],$=V[1],ee=V[2],oe=V[3],ce=V[4],me=V[5],pe=V[6],j=V[7],F=V[8],J=V[9],ae=V[10],K=V[11],te=V[12],w=V[13],I=V[14],W=V[15],G=Z*me-$*ce,_=Z*pe-ee*ce,ne=Z*j-oe*ce,re=$*pe-ee*me,X=$*j-oe*me,se=ee*j-oe*pe,ue=F*w-J*te,de=F*I-ae*te,ge=F*W-K*te,ye=J*I-ae*w,Se=J*W-K*w,be=ae*W-K*I,Ie=G*be-_*Se+ne*ye+re*ge-X*de+se*ue;return Ie?(Ie=1/Ie,z[0]=(me*be-pe*Se+j*ye)*Ie,z[1]=(pe*ge-ce*be-j*de)*Ie,z[2]=(ce*Se-me*ge+j*ue)*Ie,z[3]=(ee*Se-$*be-oe*ye)*Ie,z[4]=(Z*be-ee*ge+oe*de)*Ie,z[5]=($*ge-Z*Se-oe*ue)*Ie,z[6]=(w*se-I*X+W*re)*Ie,z[7]=(I*ne-te*se-W*_)*Ie,z[8]=(te*X-w*ne+W*G)*Ie,z):null}function P(z,V,Z){return z[0]=2/V,z[1]=0,z[2]=0,z[3]=0,z[4]=-2/Z,z[5]=0,z[6]=-1,z[7]=1,z[8]=1,z}function k(z){return"mat3("+z[0]+", "+z[1]+", "+z[2]+", "+z[3]+", "+z[4]+", "+z[5]+", "+z[6]+", "+z[7]+", "+z[8]+")"}function O(z){return Math.hypot(z[0],z[1],z[2],z[3],z[4],z[5],z[6],z[7],z[8])}function B(z,V,Z){return z[0]=V[0]+Z[0],z[1]=V[1]+Z[1],z[2]=V[2]+Z[2],z[3]=V[3]+Z[3],z[4]=V[4]+Z[4],z[5]=V[5]+Z[5],z[6]=V[6]+Z[6],z[7]=V[7]+Z[7],z[8]=V[8]+Z[8],z}function D(z,V,Z){return z[0]=V[0]-Z[0],z[1]=V[1]-Z[1],z[2]=V[2]-Z[2],z[3]=V[3]-Z[3],z[4]=V[4]-Z[4],z[5]=V[5]-Z[5],z[6]=V[6]-Z[6],z[7]=V[7]-Z[7],z[8]=V[8]-Z[8],z}function A(z,V,Z){return z[0]=V[0]*Z,z[1]=V[1]*Z,z[2]=V[2]*Z,z[3]=V[3]*Z,z[4]=V[4]*Z,z[5]=V[5]*Z,z[6]=V[6]*Z,z[7]=V[7]*Z,z[8]=V[8]*Z,z}function L(z,V,Z,$){return z[0]=V[0]+Z[0]*$,z[1]=V[1]+Z[1]*$,z[2]=V[2]+Z[2]*$,z[3]=V[3]+Z[3]*$,z[4]=V[4]+Z[4]*$,z[5]=V[5]+Z[5]*$,z[6]=V[6]+Z[6]*$,z[7]=V[7]+Z[7]*$,z[8]=V[8]+Z[8]*$,z}function U(z,V){return z[0]===V[0]&&z[1]===V[1]&&z[2]===V[2]&&z[3]===V[3]&&z[4]===V[4]&&z[5]===V[5]&&z[6]===V[6]&&z[7]===V[7]&&z[8]===V[8]}function Y(z,V){var Z=z[0],$=z[1],ee=z[2],oe=z[3],ce=z[4],me=z[5],pe=z[6],j=z[7],F=z[8],J=V[0],ae=V[1],K=V[2],te=V[3],w=V[4],I=V[5],W=V[6],G=V[7],_=V[8];return Math.abs(Z-J)<=i.EPSILON*Math.max(1,Math.abs(Z),Math.abs(J))&&Math.abs($-ae)<=i.EPSILON*Math.max(1,Math.abs($),Math.abs(ae))&&Math.abs(ee-K)<=i.EPSILON*Math.max(1,Math.abs(ee),Math.abs(K))&&Math.abs(oe-te)<=i.EPSILON*Math.max(1,Math.abs(oe),Math.abs(te))&&Math.abs(ce-w)<=i.EPSILON*Math.max(1,Math.abs(ce),Math.abs(w))&&Math.abs(me-I)<=i.EPSILON*Math.max(1,Math.abs(me),Math.abs(I))&&Math.abs(pe-W)<=i.EPSILON*Math.max(1,Math.abs(pe),Math.abs(W))&&Math.abs(j-G)<=i.EPSILON*Math.max(1,Math.abs(j),Math.abs(G))&&Math.abs(F-_)<=i.EPSILON*Math.max(1,Math.abs(F),Math.abs(_))}var q=b,ie=D},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"copy",function(){return c}),n.d(r,"fromValues",function(){return l}),n.d(r,"set",function(){return u}),n.d(r,"identity",function(){return h}),n.d(r,"transpose",function(){return d}),n.d(r,"invert",function(){return f}),n.d(r,"adjoint",function(){return g}),n.d(r,"determinant",function(){return y}),n.d(r,"multiply",function(){return S}),n.d(r,"translate",function(){return b}),n.d(r,"scale",function(){return C}),n.d(r,"rotate",function(){return N}),n.d(r,"rotateX",function(){return T}),n.d(r,"rotateY",function(){return p}),n.d(r,"rotateZ",function(){return m}),n.d(r,"fromTranslation",function(){return v}),n.d(r,"fromScaling",function(){return M}),n.d(r,"fromRotation",function(){return R}),n.d(r,"fromXRotation",function(){return E}),n.d(r,"fromYRotation",function(){return P}),n.d(r,"fromZRotation",function(){return k}),n.d(r,"fromRotationTranslation",function(){return O}),n.d(r,"fromQuat2",function(){return B}),n.d(r,"getTranslation",function(){return D}),n.d(r,"getScaling",function(){return A}),n.d(r,"getRotation",function(){return L}),n.d(r,"fromRotationTranslationScale",function(){return U}),n.d(r,"fromRotationTranslationScaleOrigin",function(){return Y}),n.d(r,"fromQuat",function(){return q}),n.d(r,"frustum",function(){return ie}),n.d(r,"perspective",function(){return z}),n.d(r,"perspectiveFromFieldOfView",function(){return V}),n.d(r,"ortho",function(){return Z}),n.d(r,"lookAt",function(){return $}),n.d(r,"targetTo",function(){return ee}),n.d(r,"str",function(){return oe}),n.d(r,"frob",function(){return ce}),n.d(r,"add",function(){return me}),n.d(r,"subtract",function(){return pe}),n.d(r,"multiplyScalar",function(){return j}),n.d(r,"multiplyScalarAndAdd",function(){return F}),n.d(r,"exactEquals",function(){return J}),n.d(r,"equals",function(){return ae}),n.d(r,"mul",function(){return K}),n.d(r,"sub",function(){return te});var i=n(2);function o(){var w=new i.ARRAY_TYPE(16);return i.ARRAY_TYPE!=Float32Array&&(w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[11]=0,w[12]=0,w[13]=0,w[14]=0),w[0]=1,w[5]=1,w[10]=1,w[15]=1,w}function a(w){var I=new i.ARRAY_TYPE(16);return I[0]=w[0],I[1]=w[1],I[2]=w[2],I[3]=w[3],I[4]=w[4],I[5]=w[5],I[6]=w[6],I[7]=w[7],I[8]=w[8],I[9]=w[9],I[10]=w[10],I[11]=w[11],I[12]=w[12],I[13]=w[13],I[14]=w[14],I[15]=w[15],I}function c(w,I){return w[0]=I[0],w[1]=I[1],w[2]=I[2],w[3]=I[3],w[4]=I[4],w[5]=I[5],w[6]=I[6],w[7]=I[7],w[8]=I[8],w[9]=I[9],w[10]=I[10],w[11]=I[11],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15],w}function l(w,I,W,G,_,ne,re,X,se,ue,de,ge,ye,Se,be,Ie){var Ce=new i.ARRAY_TYPE(16);return Ce[0]=w,Ce[1]=I,Ce[2]=W,Ce[3]=G,Ce[4]=_,Ce[5]=ne,Ce[6]=re,Ce[7]=X,Ce[8]=se,Ce[9]=ue,Ce[10]=de,Ce[11]=ge,Ce[12]=ye,Ce[13]=Se,Ce[14]=be,Ce[15]=Ie,Ce}function u(w,I,W,G,_,ne,re,X,se,ue,de,ge,ye,Se,be,Ie,Ce){return w[0]=I,w[1]=W,w[2]=G,w[3]=_,w[4]=ne,w[5]=re,w[6]=X,w[7]=se,w[8]=ue,w[9]=de,w[10]=ge,w[11]=ye,w[12]=Se,w[13]=be,w[14]=Ie,w[15]=Ce,w}function h(w){return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function d(w,I){if(w===I){var W=I[1],G=I[2],_=I[3],ne=I[6],re=I[7],X=I[11];w[1]=I[4],w[2]=I[8],w[3]=I[12],w[4]=W,w[6]=I[9],w[7]=I[13],w[8]=G,w[9]=ne,w[11]=I[14],w[12]=_,w[13]=re,w[14]=X}else w[0]=I[0],w[1]=I[4],w[2]=I[8],w[3]=I[12],w[4]=I[1],w[5]=I[5],w[6]=I[9],w[7]=I[13],w[8]=I[2],w[9]=I[6],w[10]=I[10],w[11]=I[14],w[12]=I[3],w[13]=I[7],w[14]=I[11],w[15]=I[15];return w}function f(w,I){var W=I[0],G=I[1],_=I[2],ne=I[3],re=I[4],X=I[5],se=I[6],ue=I[7],de=I[8],ge=I[9],ye=I[10],Se=I[11],be=I[12],Ie=I[13],Ce=I[14],Ae=I[15],Ee=W*X-G*re,ke=W*se-_*re,Oe=W*ue-ne*re,Ne=G*se-_*X,je=G*ue-ne*X,Je=_*ue-ne*se,rt=de*Ie-ge*be,et=de*Ce-ye*be,nt=de*Ae-Se*be,Qe=ge*Ce-ye*Ie,st=ge*Ae-Se*Ie,ht=ye*Ae-Se*Ce,Ke=Ee*ht-ke*st+Oe*Qe+Ne*nt-je*et+Je*rt;return Ke?(Ke=1/Ke,w[0]=(X*ht-se*st+ue*Qe)*Ke,w[1]=(_*st-G*ht-ne*Qe)*Ke,w[2]=(Ie*Je-Ce*je+Ae*Ne)*Ke,w[3]=(ye*je-ge*Je-Se*Ne)*Ke,w[4]=(se*nt-re*ht-ue*et)*Ke,w[5]=(W*ht-_*nt+ne*et)*Ke,w[6]=(Ce*Oe-be*Je-Ae*ke)*Ke,w[7]=(de*Je-ye*Oe+Se*ke)*Ke,w[8]=(re*st-X*nt+ue*rt)*Ke,w[9]=(G*nt-W*st-ne*rt)*Ke,w[10]=(be*je-Ie*Oe+Ae*Ee)*Ke,w[11]=(ge*Oe-de*je-Se*Ee)*Ke,w[12]=(X*et-re*Qe-se*rt)*Ke,w[13]=(W*Qe-G*et+_*rt)*Ke,w[14]=(Ie*ke-be*Ne-Ce*Ee)*Ke,w[15]=(de*Ne-ge*ke+ye*Ee)*Ke,w):null}function g(w,I){var W=I[0],G=I[1],_=I[2],ne=I[3],re=I[4],X=I[5],se=I[6],ue=I[7],de=I[8],ge=I[9],ye=I[10],Se=I[11],be=I[12],Ie=I[13],Ce=I[14],Ae=I[15];return w[0]=X*(ye*Ae-Se*Ce)-ge*(se*Ae-ue*Ce)+Ie*(se*Se-ue*ye),w[1]=-(G*(ye*Ae-Se*Ce)-ge*(_*Ae-ne*Ce)+Ie*(_*Se-ne*ye)),w[2]=G*(se*Ae-ue*Ce)-X*(_*Ae-ne*Ce)+Ie*(_*ue-ne*se),w[3]=-(G*(se*Se-ue*ye)-X*(_*Se-ne*ye)+ge*(_*ue-ne*se)),w[4]=-(re*(ye*Ae-Se*Ce)-de*(se*Ae-ue*Ce)+be*(se*Se-ue*ye)),w[5]=W*(ye*Ae-Se*Ce)-de*(_*Ae-ne*Ce)+be*(_*Se-ne*ye),w[6]=-(W*(se*Ae-ue*Ce)-re*(_*Ae-ne*Ce)+be*(_*ue-ne*se)),w[7]=W*(se*Se-ue*ye)-re*(_*Se-ne*ye)+de*(_*ue-ne*se),w[8]=re*(ge*Ae-Se*Ie)-de*(X*Ae-ue*Ie)+be*(X*Se-ue*ge),w[9]=-(W*(ge*Ae-Se*Ie)-de*(G*Ae-ne*Ie)+be*(G*Se-ne*ge)),w[10]=W*(X*Ae-ue*Ie)-re*(G*Ae-ne*Ie)+be*(G*ue-ne*X),w[11]=-(W*(X*Se-ue*ge)-re*(G*Se-ne*ge)+de*(G*ue-ne*X)),w[12]=-(re*(ge*Ce-ye*Ie)-de*(X*Ce-se*Ie)+be*(X*ye-se*ge)),w[13]=W*(ge*Ce-ye*Ie)-de*(G*Ce-_*Ie)+be*(G*ye-_*ge),w[14]=-(W*(X*Ce-se*Ie)-re*(G*Ce-_*Ie)+be*(G*se-_*X)),w[15]=W*(X*ye-se*ge)-re*(G*ye-_*ge)+de*(G*se-_*X),w}function y(w){var I=w[0],W=w[1],G=w[2],_=w[3],ne=w[4],re=w[5],X=w[6],se=w[7],ue=w[8],de=w[9],ge=w[10],ye=w[11],Se=w[12],be=w[13],Ie=w[14],Ce=w[15],Ae=I*re-W*ne,Ee=I*X-G*ne,ke=I*se-_*ne,Oe=W*X-G*re,Ne=W*se-_*re,je=G*se-_*X,Je=ue*be-de*Se,rt=ue*Ie-ge*Se,et=ue*Ce-ye*Se,nt=de*Ie-ge*be,Qe=de*Ce-ye*be,st=ge*Ce-ye*Ie;return Ae*st-Ee*Qe+ke*nt+Oe*et-Ne*rt+je*Je}function S(w,I,W){var G=I[0],_=I[1],ne=I[2],re=I[3],X=I[4],se=I[5],ue=I[6],de=I[7],ge=I[8],ye=I[9],Se=I[10],be=I[11],Ie=I[12],Ce=I[13],Ae=I[14],Ee=I[15],ke=W[0],Oe=W[1],Ne=W[2],je=W[3];return w[0]=ke*G+Oe*X+Ne*ge+je*Ie,w[1]=ke*_+Oe*se+Ne*ye+je*Ce,w[2]=ke*ne+Oe*ue+Ne*Se+je*Ae,w[3]=ke*re+Oe*de+Ne*be+je*Ee,ke=W[4],Oe=W[5],Ne=W[6],je=W[7],w[4]=ke*G+Oe*X+Ne*ge+je*Ie,w[5]=ke*_+Oe*se+Ne*ye+je*Ce,w[6]=ke*ne+Oe*ue+Ne*Se+je*Ae,w[7]=ke*re+Oe*de+Ne*be+je*Ee,ke=W[8],Oe=W[9],Ne=W[10],je=W[11],w[8]=ke*G+Oe*X+Ne*ge+je*Ie,w[9]=ke*_+Oe*se+Ne*ye+je*Ce,w[10]=ke*ne+Oe*ue+Ne*Se+je*Ae,w[11]=ke*re+Oe*de+Ne*be+je*Ee,ke=W[12],Oe=W[13],Ne=W[14],je=W[15],w[12]=ke*G+Oe*X+Ne*ge+je*Ie,w[13]=ke*_+Oe*se+Ne*ye+je*Ce,w[14]=ke*ne+Oe*ue+Ne*Se+je*Ae,w[15]=ke*re+Oe*de+Ne*be+je*Ee,w}function b(w,I,W){var G=W[0],_=W[1],ne=W[2],re,X,se,ue,de,ge,ye,Se,be,Ie,Ce,Ae;return I===w?(w[12]=I[0]*G+I[4]*_+I[8]*ne+I[12],w[13]=I[1]*G+I[5]*_+I[9]*ne+I[13],w[14]=I[2]*G+I[6]*_+I[10]*ne+I[14],w[15]=I[3]*G+I[7]*_+I[11]*ne+I[15]):(re=I[0],X=I[1],se=I[2],ue=I[3],de=I[4],ge=I[5],ye=I[6],Se=I[7],be=I[8],Ie=I[9],Ce=I[10],Ae=I[11],w[0]=re,w[1]=X,w[2]=se,w[3]=ue,w[4]=de,w[5]=ge,w[6]=ye,w[7]=Se,w[8]=be,w[9]=Ie,w[10]=Ce,w[11]=Ae,w[12]=re*G+de*_+be*ne+I[12],w[13]=X*G+ge*_+Ie*ne+I[13],w[14]=se*G+ye*_+Ce*ne+I[14],w[15]=ue*G+Se*_+Ae*ne+I[15]),w}function C(w,I,W){var G=W[0],_=W[1],ne=W[2];return w[0]=I[0]*G,w[1]=I[1]*G,w[2]=I[2]*G,w[3]=I[3]*G,w[4]=I[4]*_,w[5]=I[5]*_,w[6]=I[6]*_,w[7]=I[7]*_,w[8]=I[8]*ne,w[9]=I[9]*ne,w[10]=I[10]*ne,w[11]=I[11]*ne,w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15],w}function N(w,I,W,G){var _=G[0],ne=G[1],re=G[2],X=Math.hypot(_,ne,re),se,ue,de,ge,ye,Se,be,Ie,Ce,Ae,Ee,ke,Oe,Ne,je,Je,rt,et,nt,Qe,st,ht,Ke,Wt;return X<i.EPSILON?null:(X=1/X,_*=X,ne*=X,re*=X,se=Math.sin(W),ue=Math.cos(W),de=1-ue,ge=I[0],ye=I[1],Se=I[2],be=I[3],Ie=I[4],Ce=I[5],Ae=I[6],Ee=I[7],ke=I[8],Oe=I[9],Ne=I[10],je=I[11],Je=_*_*de+ue,rt=ne*_*de+re*se,et=re*_*de-ne*se,nt=_*ne*de-re*se,Qe=ne*ne*de+ue,st=re*ne*de+_*se,ht=_*re*de+ne*se,Ke=ne*re*de-_*se,Wt=re*re*de+ue,w[0]=ge*Je+Ie*rt+ke*et,w[1]=ye*Je+Ce*rt+Oe*et,w[2]=Se*Je+Ae*rt+Ne*et,w[3]=be*Je+Ee*rt+je*et,w[4]=ge*nt+Ie*Qe+ke*st,w[5]=ye*nt+Ce*Qe+Oe*st,w[6]=Se*nt+Ae*Qe+Ne*st,w[7]=be*nt+Ee*Qe+je*st,w[8]=ge*ht+Ie*Ke+ke*Wt,w[9]=ye*ht+Ce*Ke+Oe*Wt,w[10]=Se*ht+Ae*Ke+Ne*Wt,w[11]=be*ht+Ee*Ke+je*Wt,I!==w&&(w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w)}function T(w,I,W){var G=Math.sin(W),_=Math.cos(W),ne=I[4],re=I[5],X=I[6],se=I[7],ue=I[8],de=I[9],ge=I[10],ye=I[11];return I!==w&&(w[0]=I[0],w[1]=I[1],w[2]=I[2],w[3]=I[3],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[4]=ne*_+ue*G,w[5]=re*_+de*G,w[6]=X*_+ge*G,w[7]=se*_+ye*G,w[8]=ue*_-ne*G,w[9]=de*_-re*G,w[10]=ge*_-X*G,w[11]=ye*_-se*G,w}function p(w,I,W){var G=Math.sin(W),_=Math.cos(W),ne=I[0],re=I[1],X=I[2],se=I[3],ue=I[8],de=I[9],ge=I[10],ye=I[11];return I!==w&&(w[4]=I[4],w[5]=I[5],w[6]=I[6],w[7]=I[7],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[0]=ne*_-ue*G,w[1]=re*_-de*G,w[2]=X*_-ge*G,w[3]=se*_-ye*G,w[8]=ne*G+ue*_,w[9]=re*G+de*_,w[10]=X*G+ge*_,w[11]=se*G+ye*_,w}function m(w,I,W){var G=Math.sin(W),_=Math.cos(W),ne=I[0],re=I[1],X=I[2],se=I[3],ue=I[4],de=I[5],ge=I[6],ye=I[7];return I!==w&&(w[8]=I[8],w[9]=I[9],w[10]=I[10],w[11]=I[11],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[0]=ne*_+ue*G,w[1]=re*_+de*G,w[2]=X*_+ge*G,w[3]=se*_+ye*G,w[4]=ue*_-ne*G,w[5]=de*_-re*G,w[6]=ge*_-X*G,w[7]=ye*_-se*G,w}function v(w,I){return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=I[0],w[13]=I[1],w[14]=I[2],w[15]=1,w}function M(w,I){return w[0]=I[0],w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=I[1],w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=I[2],w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function R(w,I,W){var G=W[0],_=W[1],ne=W[2],re=Math.hypot(G,_,ne),X,se,ue;return re<i.EPSILON?null:(re=1/re,G*=re,_*=re,ne*=re,X=Math.sin(I),se=Math.cos(I),ue=1-se,w[0]=G*G*ue+se,w[1]=_*G*ue+ne*X,w[2]=ne*G*ue-_*X,w[3]=0,w[4]=G*_*ue-ne*X,w[5]=_*_*ue+se,w[6]=ne*_*ue+G*X,w[7]=0,w[8]=G*ne*ue+_*X,w[9]=_*ne*ue-G*X,w[10]=ne*ne*ue+se,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w)}function E(w,I){var W=Math.sin(I),G=Math.cos(I);return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=G,w[6]=W,w[7]=0,w[8]=0,w[9]=-W,w[10]=G,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function P(w,I){var W=Math.sin(I),G=Math.cos(I);return w[0]=G,w[1]=0,w[2]=-W,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=W,w[9]=0,w[10]=G,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function k(w,I){var W=Math.sin(I),G=Math.cos(I);return w[0]=G,w[1]=W,w[2]=0,w[3]=0,w[4]=-W,w[5]=G,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function O(w,I,W){var G=I[0],_=I[1],ne=I[2],re=I[3],X=G+G,se=_+_,ue=ne+ne,de=G*X,ge=G*se,ye=G*ue,Se=_*se,be=_*ue,Ie=ne*ue,Ce=re*X,Ae=re*se,Ee=re*ue;return w[0]=1-(Se+Ie),w[1]=ge+Ee,w[2]=ye-Ae,w[3]=0,w[4]=ge-Ee,w[5]=1-(de+Ie),w[6]=be+Ce,w[7]=0,w[8]=ye+Ae,w[9]=be-Ce,w[10]=1-(de+Se),w[11]=0,w[12]=W[0],w[13]=W[1],w[14]=W[2],w[15]=1,w}function B(w,I){var W=new i.ARRAY_TYPE(3),G=-I[0],_=-I[1],ne=-I[2],re=I[3],X=I[4],se=I[5],ue=I[6],de=I[7],ge=G*G+_*_+ne*ne+re*re;return ge>0?(W[0]=(X*re+de*G+se*ne-ue*_)*2/ge,W[1]=(se*re+de*_+ue*G-X*ne)*2/ge,W[2]=(ue*re+de*ne+X*_-se*G)*2/ge):(W[0]=(X*re+de*G+se*ne-ue*_)*2,W[1]=(se*re+de*_+ue*G-X*ne)*2,W[2]=(ue*re+de*ne+X*_-se*G)*2),O(w,I,W),w}function D(w,I){return w[0]=I[12],w[1]=I[13],w[2]=I[14],w}function A(w,I){var W=I[0],G=I[1],_=I[2],ne=I[4],re=I[5],X=I[6],se=I[8],ue=I[9],de=I[10];return w[0]=Math.hypot(W,G,_),w[1]=Math.hypot(ne,re,X),w[2]=Math.hypot(se,ue,de),w}function L(w,I){var W=new i.ARRAY_TYPE(3);A(W,I);var G=1/W[0],_=1/W[1],ne=1/W[2],re=I[0]*G,X=I[1]*_,se=I[2]*ne,ue=I[4]*G,de=I[5]*_,ge=I[6]*ne,ye=I[8]*G,Se=I[9]*_,be=I[10]*ne,Ie=re+de+be,Ce=0;return Ie>0?(Ce=Math.sqrt(Ie+1)*2,w[3]=.25*Ce,w[0]=(ge-Se)/Ce,w[1]=(ye-se)/Ce,w[2]=(X-ue)/Ce):re>de&&re>be?(Ce=Math.sqrt(1+re-de-be)*2,w[3]=(ge-Se)/Ce,w[0]=.25*Ce,w[1]=(X+ue)/Ce,w[2]=(ye+se)/Ce):de>be?(Ce=Math.sqrt(1+de-re-be)*2,w[3]=(ye-se)/Ce,w[0]=(X+ue)/Ce,w[1]=.25*Ce,w[2]=(ge+Se)/Ce):(Ce=Math.sqrt(1+be-re-de)*2,w[3]=(X-ue)/Ce,w[0]=(ye+se)/Ce,w[1]=(ge+Se)/Ce,w[2]=.25*Ce),w}function U(w,I,W,G){var _=I[0],ne=I[1],re=I[2],X=I[3],se=_+_,ue=ne+ne,de=re+re,ge=_*se,ye=_*ue,Se=_*de,be=ne*ue,Ie=ne*de,Ce=re*de,Ae=X*se,Ee=X*ue,ke=X*de,Oe=G[0],Ne=G[1],je=G[2];return w[0]=(1-(be+Ce))*Oe,w[1]=(ye+ke)*Oe,w[2]=(Se-Ee)*Oe,w[3]=0,w[4]=(ye-ke)*Ne,w[5]=(1-(ge+Ce))*Ne,w[6]=(Ie+Ae)*Ne,w[7]=0,w[8]=(Se+Ee)*je,w[9]=(Ie-Ae)*je,w[10]=(1-(ge+be))*je,w[11]=0,w[12]=W[0],w[13]=W[1],w[14]=W[2],w[15]=1,w}function Y(w,I,W,G,_){var ne=I[0],re=I[1],X=I[2],se=I[3],ue=ne+ne,de=re+re,ge=X+X,ye=ne*ue,Se=ne*de,be=ne*ge,Ie=re*de,Ce=re*ge,Ae=X*ge,Ee=se*ue,ke=se*de,Oe=se*ge,Ne=G[0],je=G[1],Je=G[2],rt=_[0],et=_[1],nt=_[2],Qe=(1-(Ie+Ae))*Ne,st=(Se+Oe)*Ne,ht=(be-ke)*Ne,Ke=(Se-Oe)*je,Wt=(1-(ye+Ae))*je,Fr=(Ce+Ee)*je,Ur=(be+ke)*Je,Ci=(Ce-Ee)*Je,wo=(1-(ye+Ie))*Je;return w[0]=Qe,w[1]=st,w[2]=ht,w[3]=0,w[4]=Ke,w[5]=Wt,w[6]=Fr,w[7]=0,w[8]=Ur,w[9]=Ci,w[10]=wo,w[11]=0,w[12]=W[0]+rt-(Qe*rt+Ke*et+Ur*nt),w[13]=W[1]+et-(st*rt+Wt*et+Ci*nt),w[14]=W[2]+nt-(ht*rt+Fr*et+wo*nt),w[15]=1,w}function q(w,I){var W=I[0],G=I[1],_=I[2],ne=I[3],re=W+W,X=G+G,se=_+_,ue=W*re,de=G*re,ge=G*X,ye=_*re,Se=_*X,be=_*se,Ie=ne*re,Ce=ne*X,Ae=ne*se;return w[0]=1-ge-be,w[1]=de+Ae,w[2]=ye-Ce,w[3]=0,w[4]=de-Ae,w[5]=1-ue-be,w[6]=Se+Ie,w[7]=0,w[8]=ye+Ce,w[9]=Se-Ie,w[10]=1-ue-ge,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function ie(w,I,W,G,_,ne,re){var X=1/(W-I),se=1/(_-G),ue=1/(ne-re);return w[0]=ne*2*X,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=ne*2*se,w[6]=0,w[7]=0,w[8]=(W+I)*X,w[9]=(_+G)*se,w[10]=(re+ne)*ue,w[11]=-1,w[12]=0,w[13]=0,w[14]=re*ne*2*ue,w[15]=0,w}function z(w,I,W,G,_){var ne=1/Math.tan(I/2),re;return w[0]=ne/W,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=ne,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[11]=-1,w[12]=0,w[13]=0,w[15]=0,_!=null&&_!==1/0?(re=1/(G-_),w[10]=(_+G)*re,w[14]=2*_*G*re):(w[10]=-1,w[14]=-2*G),w}function V(w,I,W,G){var _=Math.tan(I.upDegrees*Math.PI/180),ne=Math.tan(I.downDegrees*Math.PI/180),re=Math.tan(I.leftDegrees*Math.PI/180),X=Math.tan(I.rightDegrees*Math.PI/180),se=2/(re+X),ue=2/(_+ne);return w[0]=se,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=ue,w[6]=0,w[7]=0,w[8]=-((re-X)*se*.5),w[9]=(_-ne)*ue*.5,w[10]=G/(W-G),w[11]=-1,w[12]=0,w[13]=0,w[14]=G*W/(W-G),w[15]=0,w}function Z(w,I,W,G,_,ne,re){var X=1/(I-W),se=1/(G-_),ue=1/(ne-re);return w[0]=-2*X,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=-2*se,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=2*ue,w[11]=0,w[12]=(I+W)*X,w[13]=(_+G)*se,w[14]=(re+ne)*ue,w[15]=1,w}function $(w,I,W,G){var _,ne,re,X,se,ue,de,ge,ye,Se,be=I[0],Ie=I[1],Ce=I[2],Ae=G[0],Ee=G[1],ke=G[2],Oe=W[0],Ne=W[1],je=W[2];return Math.abs(be-Oe)<i.EPSILON&&Math.abs(Ie-Ne)<i.EPSILON&&Math.abs(Ce-je)<i.EPSILON?h(w):(de=be-Oe,ge=Ie-Ne,ye=Ce-je,Se=1/Math.hypot(de,ge,ye),de*=Se,ge*=Se,ye*=Se,_=Ee*ye-ke*ge,ne=ke*de-Ae*ye,re=Ae*ge-Ee*de,Se=Math.hypot(_,ne,re),Se?(Se=1/Se,_*=Se,ne*=Se,re*=Se):(_=0,ne=0,re=0),X=ge*re-ye*ne,se=ye*_-de*re,ue=de*ne-ge*_,Se=Math.hypot(X,se,ue),Se?(Se=1/Se,X*=Se,se*=Se,ue*=Se):(X=0,se=0,ue=0),w[0]=_,w[1]=X,w[2]=de,w[3]=0,w[4]=ne,w[5]=se,w[6]=ge,w[7]=0,w[8]=re,w[9]=ue,w[10]=ye,w[11]=0,w[12]=-(_*be+ne*Ie+re*Ce),w[13]=-(X*be+se*Ie+ue*Ce),w[14]=-(de*be+ge*Ie+ye*Ce),w[15]=1,w)}function ee(w,I,W,G){var _=I[0],ne=I[1],re=I[2],X=G[0],se=G[1],ue=G[2],de=_-W[0],ge=ne-W[1],ye=re-W[2],Se=de*de+ge*ge+ye*ye;Se>0&&(Se=1/Math.sqrt(Se),de*=Se,ge*=Se,ye*=Se);var be=se*ye-ue*ge,Ie=ue*de-X*ye,Ce=X*ge-se*de;return Se=be*be+Ie*Ie+Ce*Ce,Se>0&&(Se=1/Math.sqrt(Se),be*=Se,Ie*=Se,Ce*=Se),w[0]=be,w[1]=Ie,w[2]=Ce,w[3]=0,w[4]=ge*Ce-ye*Ie,w[5]=ye*be-de*Ce,w[6]=de*Ie-ge*be,w[7]=0,w[8]=de,w[9]=ge,w[10]=ye,w[11]=0,w[12]=_,w[13]=ne,w[14]=re,w[15]=1,w}function oe(w){return"mat4("+w[0]+", "+w[1]+", "+w[2]+", "+w[3]+", "+w[4]+", "+w[5]+", "+w[6]+", "+w[7]+", "+w[8]+", "+w[9]+", "+w[10]+", "+w[11]+", "+w[12]+", "+w[13]+", "+w[14]+", "+w[15]+")"}function ce(w){return Math.hypot(w[0],w[1],w[2],w[3],w[4],w[5],w[6],w[7],w[8],w[9],w[10],w[11],w[12],w[13],w[14],w[15])}function me(w,I,W){return w[0]=I[0]+W[0],w[1]=I[1]+W[1],w[2]=I[2]+W[2],w[3]=I[3]+W[3],w[4]=I[4]+W[4],w[5]=I[5]+W[5],w[6]=I[6]+W[6],w[7]=I[7]+W[7],w[8]=I[8]+W[8],w[9]=I[9]+W[9],w[10]=I[10]+W[10],w[11]=I[11]+W[11],w[12]=I[12]+W[12],w[13]=I[13]+W[13],w[14]=I[14]+W[14],w[15]=I[15]+W[15],w}function pe(w,I,W){return w[0]=I[0]-W[0],w[1]=I[1]-W[1],w[2]=I[2]-W[2],w[3]=I[3]-W[3],w[4]=I[4]-W[4],w[5]=I[5]-W[5],w[6]=I[6]-W[6],w[7]=I[7]-W[7],w[8]=I[8]-W[8],w[9]=I[9]-W[9],w[10]=I[10]-W[10],w[11]=I[11]-W[11],w[12]=I[12]-W[12],w[13]=I[13]-W[13],w[14]=I[14]-W[14],w[15]=I[15]-W[15],w}function j(w,I,W){return w[0]=I[0]*W,w[1]=I[1]*W,w[2]=I[2]*W,w[3]=I[3]*W,w[4]=I[4]*W,w[5]=I[5]*W,w[6]=I[6]*W,w[7]=I[7]*W,w[8]=I[8]*W,w[9]=I[9]*W,w[10]=I[10]*W,w[11]=I[11]*W,w[12]=I[12]*W,w[13]=I[13]*W,w[14]=I[14]*W,w[15]=I[15]*W,w}function F(w,I,W,G){return w[0]=I[0]+W[0]*G,w[1]=I[1]+W[1]*G,w[2]=I[2]+W[2]*G,w[3]=I[3]+W[3]*G,w[4]=I[4]+W[4]*G,w[5]=I[5]+W[5]*G,w[6]=I[6]+W[6]*G,w[7]=I[7]+W[7]*G,w[8]=I[8]+W[8]*G,w[9]=I[9]+W[9]*G,w[10]=I[10]+W[10]*G,w[11]=I[11]+W[11]*G,w[12]=I[12]+W[12]*G,w[13]=I[13]+W[13]*G,w[14]=I[14]+W[14]*G,w[15]=I[15]+W[15]*G,w}function J(w,I){return w[0]===I[0]&&w[1]===I[1]&&w[2]===I[2]&&w[3]===I[3]&&w[4]===I[4]&&w[5]===I[5]&&w[6]===I[6]&&w[7]===I[7]&&w[8]===I[8]&&w[9]===I[9]&&w[10]===I[10]&&w[11]===I[11]&&w[12]===I[12]&&w[13]===I[13]&&w[14]===I[14]&&w[15]===I[15]}function ae(w,I){var W=w[0],G=w[1],_=w[2],ne=w[3],re=w[4],X=w[5],se=w[6],ue=w[7],de=w[8],ge=w[9],ye=w[10],Se=w[11],be=w[12],Ie=w[13],Ce=w[14],Ae=w[15],Ee=I[0],ke=I[1],Oe=I[2],Ne=I[3],je=I[4],Je=I[5],rt=I[6],et=I[7],nt=I[8],Qe=I[9],st=I[10],ht=I[11],Ke=I[12],Wt=I[13],Fr=I[14],Ur=I[15];return Math.abs(W-Ee)<=i.EPSILON*Math.max(1,Math.abs(W),Math.abs(Ee))&&Math.abs(G-ke)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(ke))&&Math.abs(_-Oe)<=i.EPSILON*Math.max(1,Math.abs(_),Math.abs(Oe))&&Math.abs(ne-Ne)<=i.EPSILON*Math.max(1,Math.abs(ne),Math.abs(Ne))&&Math.abs(re-je)<=i.EPSILON*Math.max(1,Math.abs(re),Math.abs(je))&&Math.abs(X-Je)<=i.EPSILON*Math.max(1,Math.abs(X),Math.abs(Je))&&Math.abs(se-rt)<=i.EPSILON*Math.max(1,Math.abs(se),Math.abs(rt))&&Math.abs(ue-et)<=i.EPSILON*Math.max(1,Math.abs(ue),Math.abs(et))&&Math.abs(de-nt)<=i.EPSILON*Math.max(1,Math.abs(de),Math.abs(nt))&&Math.abs(ge-Qe)<=i.EPSILON*Math.max(1,Math.abs(ge),Math.abs(Qe))&&Math.abs(ye-st)<=i.EPSILON*Math.max(1,Math.abs(ye),Math.abs(st))&&Math.abs(Se-ht)<=i.EPSILON*Math.max(1,Math.abs(Se),Math.abs(ht))&&Math.abs(be-Ke)<=i.EPSILON*Math.max(1,Math.abs(be),Math.abs(Ke))&&Math.abs(Ie-Wt)<=i.EPSILON*Math.max(1,Math.abs(Ie),Math.abs(Wt))&&Math.abs(Ce-Fr)<=i.EPSILON*Math.max(1,Math.abs(Ce),Math.abs(Fr))&&Math.abs(Ae-Ur)<=i.EPSILON*Math.max(1,Math.abs(Ae),Math.abs(Ur))}var K=S,te=pe},function(e,r,n){n.r(r),n.d(r,"create",function(){return l}),n.d(r,"identity",function(){return u}),n.d(r,"setAxisAngle",function(){return h}),n.d(r,"getAxisAngle",function(){return d}),n.d(r,"getAngle",function(){return f}),n.d(r,"multiply",function(){return g}),n.d(r,"rotateX",function(){return y}),n.d(r,"rotateY",function(){return S}),n.d(r,"rotateZ",function(){return b}),n.d(r,"calculateW",function(){return C}),n.d(r,"exp",function(){return N}),n.d(r,"ln",function(){return T}),n.d(r,"pow",function(){return p}),n.d(r,"slerp",function(){return m}),n.d(r,"random",function(){return v}),n.d(r,"invert",function(){return M}),n.d(r,"conjugate",function(){return R}),n.d(r,"fromMat3",function(){return E}),n.d(r,"fromEuler",function(){return P}),n.d(r,"str",function(){return k}),n.d(r,"clone",function(){return O}),n.d(r,"fromValues",function(){return B}),n.d(r,"copy",function(){return D}),n.d(r,"set",function(){return A}),n.d(r,"add",function(){return L}),n.d(r,"mul",function(){return U}),n.d(r,"scale",function(){return Y}),n.d(r,"dot",function(){return q}),n.d(r,"lerp",function(){return ie}),n.d(r,"length",function(){return z}),n.d(r,"len",function(){return V}),n.d(r,"squaredLength",function(){return Z}),n.d(r,"sqrLen",function(){return $}),n.d(r,"normalize",function(){return ee}),n.d(r,"exactEquals",function(){return oe}),n.d(r,"equals",function(){return ce}),n.d(r,"rotationTo",function(){return me}),n.d(r,"sqlerp",function(){return pe}),n.d(r,"setAxes",function(){return j});var i=n(2),o=n(5),a=n(8),c=n(9);function l(){var F=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(F[0]=0,F[1]=0,F[2]=0),F[3]=1,F}function u(F){return F[0]=0,F[1]=0,F[2]=0,F[3]=1,F}function h(F,J,ae){ae=ae*.5;var K=Math.sin(ae);return F[0]=K*J[0],F[1]=K*J[1],F[2]=K*J[2],F[3]=Math.cos(ae),F}function d(F,J){var ae=Math.acos(J[3])*2,K=Math.sin(ae/2);return K>i.EPSILON?(F[0]=J[0]/K,F[1]=J[1]/K,F[2]=J[2]/K):(F[0]=1,F[1]=0,F[2]=0),ae}function f(F,J){var ae=q(F,J);return Math.acos(2*ae*ae-1)}function g(F,J,ae){var K=J[0],te=J[1],w=J[2],I=J[3],W=ae[0],G=ae[1],_=ae[2],ne=ae[3];return F[0]=K*ne+I*W+te*_-w*G,F[1]=te*ne+I*G+w*W-K*_,F[2]=w*ne+I*_+K*G-te*W,F[3]=I*ne-K*W-te*G-w*_,F}function y(F,J,ae){ae*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],W=Math.sin(ae),G=Math.cos(ae);return F[0]=K*G+I*W,F[1]=te*G+w*W,F[2]=w*G-te*W,F[3]=I*G-K*W,F}function S(F,J,ae){ae*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],W=Math.sin(ae),G=Math.cos(ae);return F[0]=K*G-w*W,F[1]=te*G+I*W,F[2]=w*G+K*W,F[3]=I*G-te*W,F}function b(F,J,ae){ae*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],W=Math.sin(ae),G=Math.cos(ae);return F[0]=K*G+te*W,F[1]=te*G-K*W,F[2]=w*G+I*W,F[3]=I*G-w*W,F}function C(F,J){var ae=J[0],K=J[1],te=J[2];return F[0]=ae,F[1]=K,F[2]=te,F[3]=Math.sqrt(Math.abs(1-ae*ae-K*K-te*te)),F}function N(F,J){var ae=J[0],K=J[1],te=J[2],w=J[3],I=Math.sqrt(ae*ae+K*K+te*te),W=Math.exp(w),G=I>0?W*Math.sin(I)/I:0;return F[0]=ae*G,F[1]=K*G,F[2]=te*G,F[3]=W*Math.cos(I),F}function T(F,J){var ae=J[0],K=J[1],te=J[2],w=J[3],I=Math.sqrt(ae*ae+K*K+te*te),W=I>0?Math.atan2(I,w)/I:0;return F[0]=ae*W,F[1]=K*W,F[2]=te*W,F[3]=.5*Math.log(ae*ae+K*K+te*te+w*w),F}function p(F,J,ae){return T(F,J),Y(F,F,ae),N(F,F),F}function m(F,J,ae,K){var te=J[0],w=J[1],I=J[2],W=J[3],G=ae[0],_=ae[1],ne=ae[2],re=ae[3],X,se,ue,de,ge;return se=te*G+w*_+I*ne+W*re,se<0&&(se=-se,G=-G,_=-_,ne=-ne,re=-re),1-se>i.EPSILON?(X=Math.acos(se),ue=Math.sin(X),de=Math.sin((1-K)*X)/ue,ge=Math.sin(K*X)/ue):(de=1-K,ge=K),F[0]=de*te+ge*G,F[1]=de*w+ge*_,F[2]=de*I+ge*ne,F[3]=de*W+ge*re,F}function v(F){var J=i.RANDOM(),ae=i.RANDOM(),K=i.RANDOM(),te=Math.sqrt(1-J),w=Math.sqrt(J);return F[0]=te*Math.sin(2*Math.PI*ae),F[1]=te*Math.cos(2*Math.PI*ae),F[2]=w*Math.sin(2*Math.PI*K),F[3]=w*Math.cos(2*Math.PI*K),F}function M(F,J){var ae=J[0],K=J[1],te=J[2],w=J[3],I=ae*ae+K*K+te*te+w*w,W=I?1/I:0;return F[0]=-ae*W,F[1]=-K*W,F[2]=-te*W,F[3]=w*W,F}function R(F,J){return F[0]=-J[0],F[1]=-J[1],F[2]=-J[2],F[3]=J[3],F}function E(F,J){var ae=J[0]+J[4]+J[8],K;if(ae>0)K=Math.sqrt(ae+1),F[3]=.5*K,K=.5/K,F[0]=(J[5]-J[7])*K,F[1]=(J[6]-J[2])*K,F[2]=(J[1]-J[3])*K;else{var te=0;J[4]>J[0]&&(te=1),J[8]>J[te*3+te]&&(te=2);var w=(te+1)%3,I=(te+2)%3;K=Math.sqrt(J[te*3+te]-J[w*3+w]-J[I*3+I]+1),F[te]=.5*K,K=.5/K,F[3]=(J[w*3+I]-J[I*3+w])*K,F[w]=(J[w*3+te]+J[te*3+w])*K,F[I]=(J[I*3+te]+J[te*3+I])*K}return F}function P(F,J,ae,K){var te=.5*Math.PI/180;J*=te,ae*=te,K*=te;var w=Math.sin(J),I=Math.cos(J),W=Math.sin(ae),G=Math.cos(ae),_=Math.sin(K),ne=Math.cos(K);return F[0]=w*G*ne-I*W*_,F[1]=I*W*ne+w*G*_,F[2]=I*G*_-w*W*ne,F[3]=I*G*ne+w*W*_,F}function k(F){return"quat("+F[0]+", "+F[1]+", "+F[2]+", "+F[3]+")"}var O=c.clone,B=c.fromValues,D=c.copy,A=c.set,L=c.add,U=g,Y=c.scale,q=c.dot,ie=c.lerp,z=c.length,V=z,Z=c.squaredLength,$=Z,ee=c.normalize,oe=c.exactEquals,ce=c.equals,me=function(){var F=a.create(),J=a.fromValues(1,0,0),ae=a.fromValues(0,1,0);return function(K,te,w){var I=a.dot(te,w);return I<-.999999?(a.cross(F,J,te),a.len(F)<1e-6&&a.cross(F,ae,te),a.normalize(F,F),h(K,F,Math.PI),K):I>.999999?(K[0]=0,K[1]=0,K[2]=0,K[3]=1,K):(a.cross(F,te,w),K[0]=F[0],K[1]=F[1],K[2]=F[2],K[3]=1+I,ee(K,K))}}(),pe=function(){var F=l(),J=l();return function(ae,K,te,w,I,W){return m(F,K,I,W),m(J,te,w,W),m(ae,F,J,2*W*(1-W)),ae}}(),j=function(){var F=o.create();return function(J,ae,K,te){return F[0]=K[0],F[3]=K[1],F[6]=K[2],F[1]=te[0],F[4]=te[1],F[7]=te[2],F[2]=-ae[0],F[5]=-ae[1],F[8]=-ae[2],ee(J,E(J,F))}}()},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"length",function(){return c}),n.d(r,"fromValues",function(){return l}),n.d(r,"copy",function(){return u}),n.d(r,"set",function(){return h}),n.d(r,"add",function(){return d}),n.d(r,"subtract",function(){return f}),n.d(r,"multiply",function(){return g}),n.d(r,"divide",function(){return y}),n.d(r,"ceil",function(){return S}),n.d(r,"floor",function(){return b}),n.d(r,"min",function(){return C}),n.d(r,"max",function(){return N}),n.d(r,"round",function(){return T}),n.d(r,"scale",function(){return p}),n.d(r,"scaleAndAdd",function(){return m}),n.d(r,"distance",function(){return v}),n.d(r,"squaredDistance",function(){return M}),n.d(r,"squaredLength",function(){return R}),n.d(r,"negate",function(){return E}),n.d(r,"inverse",function(){return P}),n.d(r,"normalize",function(){return k}),n.d(r,"dot",function(){return O}),n.d(r,"cross",function(){return B}),n.d(r,"lerp",function(){return D}),n.d(r,"hermite",function(){return A}),n.d(r,"bezier",function(){return L}),n.d(r,"random",function(){return U}),n.d(r,"transformMat4",function(){return Y}),n.d(r,"transformMat3",function(){return q}),n.d(r,"transformQuat",function(){return ie}),n.d(r,"rotateX",function(){return z}),n.d(r,"rotateY",function(){return V}),n.d(r,"rotateZ",function(){return Z}),n.d(r,"angle",function(){return $}),n.d(r,"zero",function(){return ee}),n.d(r,"str",function(){return oe}),n.d(r,"exactEquals",function(){return ce}),n.d(r,"equals",function(){return me}),n.d(r,"sub",function(){return pe}),n.d(r,"mul",function(){return j}),n.d(r,"div",function(){return F}),n.d(r,"dist",function(){return J}),n.d(r,"sqrDist",function(){return ae}),n.d(r,"len",function(){return K}),n.d(r,"sqrLen",function(){return te}),n.d(r,"forEach",function(){return w});var i=n(2);function o(){var I=new i.ARRAY_TYPE(3);return i.ARRAY_TYPE!=Float32Array&&(I[0]=0,I[1]=0,I[2]=0),I}function a(I){var W=new i.ARRAY_TYPE(3);return W[0]=I[0],W[1]=I[1],W[2]=I[2],W}function c(I){var W=I[0],G=I[1],_=I[2];return Math.hypot(W,G,_)}function l(I,W,G){var _=new i.ARRAY_TYPE(3);return _[0]=I,_[1]=W,_[2]=G,_}function u(I,W){return I[0]=W[0],I[1]=W[1],I[2]=W[2],I}function h(I,W,G,_){return I[0]=W,I[1]=G,I[2]=_,I}function d(I,W,G){return I[0]=W[0]+G[0],I[1]=W[1]+G[1],I[2]=W[2]+G[2],I}function f(I,W,G){return I[0]=W[0]-G[0],I[1]=W[1]-G[1],I[2]=W[2]-G[2],I}function g(I,W,G){return I[0]=W[0]*G[0],I[1]=W[1]*G[1],I[2]=W[2]*G[2],I}function y(I,W,G){return I[0]=W[0]/G[0],I[1]=W[1]/G[1],I[2]=W[2]/G[2],I}function S(I,W){return I[0]=Math.ceil(W[0]),I[1]=Math.ceil(W[1]),I[2]=Math.ceil(W[2]),I}function b(I,W){return I[0]=Math.floor(W[0]),I[1]=Math.floor(W[1]),I[2]=Math.floor(W[2]),I}function C(I,W,G){return I[0]=Math.min(W[0],G[0]),I[1]=Math.min(W[1],G[1]),I[2]=Math.min(W[2],G[2]),I}function N(I,W,G){return I[0]=Math.max(W[0],G[0]),I[1]=Math.max(W[1],G[1]),I[2]=Math.max(W[2],G[2]),I}function T(I,W){return I[0]=Math.round(W[0]),I[1]=Math.round(W[1]),I[2]=Math.round(W[2]),I}function p(I,W,G){return I[0]=W[0]*G,I[1]=W[1]*G,I[2]=W[2]*G,I}function m(I,W,G,_){return I[0]=W[0]+G[0]*_,I[1]=W[1]+G[1]*_,I[2]=W[2]+G[2]*_,I}function v(I,W){var G=W[0]-I[0],_=W[1]-I[1],ne=W[2]-I[2];return Math.hypot(G,_,ne)}function M(I,W){var G=W[0]-I[0],_=W[1]-I[1],ne=W[2]-I[2];return G*G+_*_+ne*ne}function R(I){var W=I[0],G=I[1],_=I[2];return W*W+G*G+_*_}function E(I,W){return I[0]=-W[0],I[1]=-W[1],I[2]=-W[2],I}function P(I,W){return I[0]=1/W[0],I[1]=1/W[1],I[2]=1/W[2],I}function k(I,W){var G=W[0],_=W[1],ne=W[2],re=G*G+_*_+ne*ne;return re>0&&(re=1/Math.sqrt(re)),I[0]=W[0]*re,I[1]=W[1]*re,I[2]=W[2]*re,I}function O(I,W){return I[0]*W[0]+I[1]*W[1]+I[2]*W[2]}function B(I,W,G){var _=W[0],ne=W[1],re=W[2],X=G[0],se=G[1],ue=G[2];return I[0]=ne*ue-re*se,I[1]=re*X-_*ue,I[2]=_*se-ne*X,I}function D(I,W,G,_){var ne=W[0],re=W[1],X=W[2];return I[0]=ne+_*(G[0]-ne),I[1]=re+_*(G[1]-re),I[2]=X+_*(G[2]-X),I}function A(I,W,G,_,ne,re){var X=re*re,se=X*(2*re-3)+1,ue=X*(re-2)+re,de=X*(re-1),ge=X*(3-2*re);return I[0]=W[0]*se+G[0]*ue+_[0]*de+ne[0]*ge,I[1]=W[1]*se+G[1]*ue+_[1]*de+ne[1]*ge,I[2]=W[2]*se+G[2]*ue+_[2]*de+ne[2]*ge,I}function L(I,W,G,_,ne,re){var X=1-re,se=X*X,ue=re*re,de=se*X,ge=3*re*se,ye=3*ue*X,Se=ue*re;return I[0]=W[0]*de+G[0]*ge+_[0]*ye+ne[0]*Se,I[1]=W[1]*de+G[1]*ge+_[1]*ye+ne[1]*Se,I[2]=W[2]*de+G[2]*ge+_[2]*ye+ne[2]*Se,I}function U(I,W){W=W||1;var G=i.RANDOM()*2*Math.PI,_=i.RANDOM()*2-1,ne=Math.sqrt(1-_*_)*W;return I[0]=Math.cos(G)*ne,I[1]=Math.sin(G)*ne,I[2]=_*W,I}function Y(I,W,G){var _=W[0],ne=W[1],re=W[2],X=G[3]*_+G[7]*ne+G[11]*re+G[15];return X=X||1,I[0]=(G[0]*_+G[4]*ne+G[8]*re+G[12])/X,I[1]=(G[1]*_+G[5]*ne+G[9]*re+G[13])/X,I[2]=(G[2]*_+G[6]*ne+G[10]*re+G[14])/X,I}function q(I,W,G){var _=W[0],ne=W[1],re=W[2];return I[0]=_*G[0]+ne*G[3]+re*G[6],I[1]=_*G[1]+ne*G[4]+re*G[7],I[2]=_*G[2]+ne*G[5]+re*G[8],I}function ie(I,W,G){var _=G[0],ne=G[1],re=G[2],X=G[3],se=W[0],ue=W[1],de=W[2],ge=ne*de-re*ue,ye=re*se-_*de,Se=_*ue-ne*se,be=ne*Se-re*ye,Ie=re*ge-_*Se,Ce=_*ye-ne*ge,Ae=X*2;return ge*=Ae,ye*=Ae,Se*=Ae,be*=2,Ie*=2,Ce*=2,I[0]=se+ge+be,I[1]=ue+ye+Ie,I[2]=de+Se+Ce,I}function z(I,W,G,_){var ne=[],re=[];return ne[0]=W[0]-G[0],ne[1]=W[1]-G[1],ne[2]=W[2]-G[2],re[0]=ne[0],re[1]=ne[1]*Math.cos(_)-ne[2]*Math.sin(_),re[2]=ne[1]*Math.sin(_)+ne[2]*Math.cos(_),I[0]=re[0]+G[0],I[1]=re[1]+G[1],I[2]=re[2]+G[2],I}function V(I,W,G,_){var ne=[],re=[];return ne[0]=W[0]-G[0],ne[1]=W[1]-G[1],ne[2]=W[2]-G[2],re[0]=ne[2]*Math.sin(_)+ne[0]*Math.cos(_),re[1]=ne[1],re[2]=ne[2]*Math.cos(_)-ne[0]*Math.sin(_),I[0]=re[0]+G[0],I[1]=re[1]+G[1],I[2]=re[2]+G[2],I}function Z(I,W,G,_){var ne=[],re=[];return ne[0]=W[0]-G[0],ne[1]=W[1]-G[1],ne[2]=W[2]-G[2],re[0]=ne[0]*Math.cos(_)-ne[1]*Math.sin(_),re[1]=ne[0]*Math.sin(_)+ne[1]*Math.cos(_),re[2]=ne[2],I[0]=re[0]+G[0],I[1]=re[1]+G[1],I[2]=re[2]+G[2],I}function $(I,W){var G=I[0],_=I[1],ne=I[2],re=W[0],X=W[1],se=W[2],ue=Math.sqrt(G*G+_*_+ne*ne),de=Math.sqrt(re*re+X*X+se*se),ge=ue*de,ye=ge&&O(I,W)/ge;return Math.acos(Math.min(Math.max(ye,-1),1))}function ee(I){return I[0]=0,I[1]=0,I[2]=0,I}function oe(I){return"vec3("+I[0]+", "+I[1]+", "+I[2]+")"}function ce(I,W){return I[0]===W[0]&&I[1]===W[1]&&I[2]===W[2]}function me(I,W){var G=I[0],_=I[1],ne=I[2],re=W[0],X=W[1],se=W[2];return Math.abs(G-re)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(re))&&Math.abs(_-X)<=i.EPSILON*Math.max(1,Math.abs(_),Math.abs(X))&&Math.abs(ne-se)<=i.EPSILON*Math.max(1,Math.abs(ne),Math.abs(se))}var pe=f,j=g,F=y,J=v,ae=M,K=c,te=R,w=function(){var I=o();return function(W,G,_,ne,re,X){var se,ue;for(G||(G=3),_||(_=0),ne?ue=Math.min(ne*G+_,W.length):ue=W.length,se=_;se<ue;se+=G)I[0]=W[se],I[1]=W[se+1],I[2]=W[se+2],re(I,I,X),W[se]=I[0],W[se+1]=I[1],W[se+2]=I[2];return W}}()},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"fromValues",function(){return c}),n.d(r,"copy",function(){return l}),n.d(r,"set",function(){return u}),n.d(r,"add",function(){return h}),n.d(r,"subtract",function(){return d}),n.d(r,"multiply",function(){return f}),n.d(r,"divide",function(){return g}),n.d(r,"ceil",function(){return y}),n.d(r,"floor",function(){return S}),n.d(r,"min",function(){return b}),n.d(r,"max",function(){return C}),n.d(r,"round",function(){return N}),n.d(r,"scale",function(){return T}),n.d(r,"scaleAndAdd",function(){return p}),n.d(r,"distance",function(){return m}),n.d(r,"squaredDistance",function(){return v}),n.d(r,"length",function(){return M}),n.d(r,"squaredLength",function(){return R}),n.d(r,"negate",function(){return E}),n.d(r,"inverse",function(){return P}),n.d(r,"normalize",function(){return k}),n.d(r,"dot",function(){return O}),n.d(r,"cross",function(){return B}),n.d(r,"lerp",function(){return D}),n.d(r,"random",function(){return A}),n.d(r,"transformMat4",function(){return L}),n.d(r,"transformQuat",function(){return U}),n.d(r,"zero",function(){return Y}),n.d(r,"str",function(){return q}),n.d(r,"exactEquals",function(){return ie}),n.d(r,"equals",function(){return z}),n.d(r,"sub",function(){return V}),n.d(r,"mul",function(){return Z}),n.d(r,"div",function(){return $}),n.d(r,"dist",function(){return ee}),n.d(r,"sqrDist",function(){return oe}),n.d(r,"len",function(){return ce}),n.d(r,"sqrLen",function(){return me}),n.d(r,"forEach",function(){return pe});var i=n(2);function o(){var j=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(j[0]=0,j[1]=0,j[2]=0,j[3]=0),j}function a(j){var F=new i.ARRAY_TYPE(4);return F[0]=j[0],F[1]=j[1],F[2]=j[2],F[3]=j[3],F}function c(j,F,J,ae){var K=new i.ARRAY_TYPE(4);return K[0]=j,K[1]=F,K[2]=J,K[3]=ae,K}function l(j,F){return j[0]=F[0],j[1]=F[1],j[2]=F[2],j[3]=F[3],j}function u(j,F,J,ae,K){return j[0]=F,j[1]=J,j[2]=ae,j[3]=K,j}function h(j,F,J){return j[0]=F[0]+J[0],j[1]=F[1]+J[1],j[2]=F[2]+J[2],j[3]=F[3]+J[3],j}function d(j,F,J){return j[0]=F[0]-J[0],j[1]=F[1]-J[1],j[2]=F[2]-J[2],j[3]=F[3]-J[3],j}function f(j,F,J){return j[0]=F[0]*J[0],j[1]=F[1]*J[1],j[2]=F[2]*J[2],j[3]=F[3]*J[3],j}function g(j,F,J){return j[0]=F[0]/J[0],j[1]=F[1]/J[1],j[2]=F[2]/J[2],j[3]=F[3]/J[3],j}function y(j,F){return j[0]=Math.ceil(F[0]),j[1]=Math.ceil(F[1]),j[2]=Math.ceil(F[2]),j[3]=Math.ceil(F[3]),j}function S(j,F){return j[0]=Math.floor(F[0]),j[1]=Math.floor(F[1]),j[2]=Math.floor(F[2]),j[3]=Math.floor(F[3]),j}function b(j,F,J){return j[0]=Math.min(F[0],J[0]),j[1]=Math.min(F[1],J[1]),j[2]=Math.min(F[2],J[2]),j[3]=Math.min(F[3],J[3]),j}function C(j,F,J){return j[0]=Math.max(F[0],J[0]),j[1]=Math.max(F[1],J[1]),j[2]=Math.max(F[2],J[2]),j[3]=Math.max(F[3],J[3]),j}function N(j,F){return j[0]=Math.round(F[0]),j[1]=Math.round(F[1]),j[2]=Math.round(F[2]),j[3]=Math.round(F[3]),j}function T(j,F,J){return j[0]=F[0]*J,j[1]=F[1]*J,j[2]=F[2]*J,j[3]=F[3]*J,j}function p(j,F,J,ae){return j[0]=F[0]+J[0]*ae,j[1]=F[1]+J[1]*ae,j[2]=F[2]+J[2]*ae,j[3]=F[3]+J[3]*ae,j}function m(j,F){var J=F[0]-j[0],ae=F[1]-j[1],K=F[2]-j[2],te=F[3]-j[3];return Math.hypot(J,ae,K,te)}function v(j,F){var J=F[0]-j[0],ae=F[1]-j[1],K=F[2]-j[2],te=F[3]-j[3];return J*J+ae*ae+K*K+te*te}function M(j){var F=j[0],J=j[1],ae=j[2],K=j[3];return Math.hypot(F,J,ae,K)}function R(j){var F=j[0],J=j[1],ae=j[2],K=j[3];return F*F+J*J+ae*ae+K*K}function E(j,F){return j[0]=-F[0],j[1]=-F[1],j[2]=-F[2],j[3]=-F[3],j}function P(j,F){return j[0]=1/F[0],j[1]=1/F[1],j[2]=1/F[2],j[3]=1/F[3],j}function k(j,F){var J=F[0],ae=F[1],K=F[2],te=F[3],w=J*J+ae*ae+K*K+te*te;return w>0&&(w=1/Math.sqrt(w)),j[0]=J*w,j[1]=ae*w,j[2]=K*w,j[3]=te*w,j}function O(j,F){return j[0]*F[0]+j[1]*F[1]+j[2]*F[2]+j[3]*F[3]}function B(j,F,J,ae){var K=J[0]*ae[1]-J[1]*ae[0],te=J[0]*ae[2]-J[2]*ae[0],w=J[0]*ae[3]-J[3]*ae[0],I=J[1]*ae[2]-J[2]*ae[1],W=J[1]*ae[3]-J[3]*ae[1],G=J[2]*ae[3]-J[3]*ae[2],_=F[0],ne=F[1],re=F[2],X=F[3];return j[0]=ne*G-re*W+X*I,j[1]=-(_*G)+re*w-X*te,j[2]=_*W-ne*w+X*K,j[3]=-(_*I)+ne*te-re*K,j}function D(j,F,J,ae){var K=F[0],te=F[1],w=F[2],I=F[3];return j[0]=K+ae*(J[0]-K),j[1]=te+ae*(J[1]-te),j[2]=w+ae*(J[2]-w),j[3]=I+ae*(J[3]-I),j}function A(j,F){F=F||1;var J,ae,K,te,w,I;do J=i.RANDOM()*2-1,ae=i.RANDOM()*2-1,w=J*J+ae*ae;while(w>=1);do K=i.RANDOM()*2-1,te=i.RANDOM()*2-1,I=K*K+te*te;while(I>=1);var W=Math.sqrt((1-w)/I);return j[0]=F*J,j[1]=F*ae,j[2]=F*K*W,j[3]=F*te*W,j}function L(j,F,J){var ae=F[0],K=F[1],te=F[2],w=F[3];return j[0]=J[0]*ae+J[4]*K+J[8]*te+J[12]*w,j[1]=J[1]*ae+J[5]*K+J[9]*te+J[13]*w,j[2]=J[2]*ae+J[6]*K+J[10]*te+J[14]*w,j[3]=J[3]*ae+J[7]*K+J[11]*te+J[15]*w,j}function U(j,F,J){var ae=F[0],K=F[1],te=F[2],w=J[0],I=J[1],W=J[2],G=J[3],_=G*ae+I*te-W*K,ne=G*K+W*ae-w*te,re=G*te+w*K-I*ae,X=-w*ae-I*K-W*te;return j[0]=_*G+X*-w+ne*-W-re*-I,j[1]=ne*G+X*-I+re*-w-_*-W,j[2]=re*G+X*-W+_*-I-ne*-w,j[3]=F[3],j}function Y(j){return j[0]=0,j[1]=0,j[2]=0,j[3]=0,j}function q(j){return"vec4("+j[0]+", "+j[1]+", "+j[2]+", "+j[3]+")"}function ie(j,F){return j[0]===F[0]&&j[1]===F[1]&&j[2]===F[2]&&j[3]===F[3]}function z(j,F){var J=j[0],ae=j[1],K=j[2],te=j[3],w=F[0],I=F[1],W=F[2],G=F[3];return Math.abs(J-w)<=i.EPSILON*Math.max(1,Math.abs(J),Math.abs(w))&&Math.abs(ae-I)<=i.EPSILON*Math.max(1,Math.abs(ae),Math.abs(I))&&Math.abs(K-W)<=i.EPSILON*Math.max(1,Math.abs(K),Math.abs(W))&&Math.abs(te-G)<=i.EPSILON*Math.max(1,Math.abs(te),Math.abs(G))}var V=d,Z=f,$=g,ee=m,oe=v,ce=M,me=R,pe=function(){var j=o();return function(F,J,ae,K,te,w){var I,W;for(J||(J=4),ae||(ae=0),K?W=Math.min(K*J+ae,F.length):W=F.length,I=ae;I<W;I+=J)j[0]=F[I],j[1]=F[I+1],j[2]=F[I+2],j[3]=F[I+3],te(j,j,w),F[I]=j[0],F[I+1]=j[1],F[I+2]=j[2],F[I+3]=j[3];return F}}()},function(e,r,n){n.r(r),n.d(r,"create",function(){return c}),n.d(r,"clone",function(){return l}),n.d(r,"fromValues",function(){return u}),n.d(r,"fromRotationTranslationValues",function(){return h}),n.d(r,"fromRotationTranslation",function(){return d}),n.d(r,"fromTranslation",function(){return f}),n.d(r,"fromRotation",function(){return g}),n.d(r,"fromMat4",function(){return y}),n.d(r,"copy",function(){return S}),n.d(r,"identity",function(){return b}),n.d(r,"set",function(){return C}),n.d(r,"getReal",function(){return N}),n.d(r,"getDual",function(){return T}),n.d(r,"setReal",function(){return p}),n.d(r,"setDual",function(){return m}),n.d(r,"getTranslation",function(){return v}),n.d(r,"translate",function(){return M}),n.d(r,"rotateX",function(){return R}),n.d(r,"rotateY",function(){return E}),n.d(r,"rotateZ",function(){return P}),n.d(r,"rotateByQuatAppend",function(){return k}),n.d(r,"rotateByQuatPrepend",function(){return O}),n.d(r,"rotateAroundAxis",function(){return B}),n.d(r,"add",function(){return D}),n.d(r,"multiply",function(){return A}),n.d(r,"mul",function(){return L}),n.d(r,"scale",function(){return U}),n.d(r,"dot",function(){return Y}),n.d(r,"lerp",function(){return q}),n.d(r,"invert",function(){return ie}),n.d(r,"conjugate",function(){return z}),n.d(r,"length",function(){return V}),n.d(r,"len",function(){return Z}),n.d(r,"squaredLength",function(){return $}),n.d(r,"sqrLen",function(){return ee}),n.d(r,"normalize",function(){return oe}),n.d(r,"str",function(){return ce}),n.d(r,"exactEquals",function(){return me}),n.d(r,"equals",function(){return pe});var i=n(2),o=n(7),a=n(6);function c(){var j=new i.ARRAY_TYPE(8);return i.ARRAY_TYPE!=Float32Array&&(j[0]=0,j[1]=0,j[2]=0,j[4]=0,j[5]=0,j[6]=0,j[7]=0),j[3]=1,j}function l(j){var F=new i.ARRAY_TYPE(8);return F[0]=j[0],F[1]=j[1],F[2]=j[2],F[3]=j[3],F[4]=j[4],F[5]=j[5],F[6]=j[6],F[7]=j[7],F}function u(j,F,J,ae,K,te,w,I){var W=new i.ARRAY_TYPE(8);return W[0]=j,W[1]=F,W[2]=J,W[3]=ae,W[4]=K,W[5]=te,W[6]=w,W[7]=I,W}function h(j,F,J,ae,K,te,w){var I=new i.ARRAY_TYPE(8);I[0]=j,I[1]=F,I[2]=J,I[3]=ae;var W=K*.5,G=te*.5,_=w*.5;return I[4]=W*ae+G*J-_*F,I[5]=G*ae+_*j-W*J,I[6]=_*ae+W*F-G*j,I[7]=-W*j-G*F-_*J,I}function d(j,F,J){var ae=J[0]*.5,K=J[1]*.5,te=J[2]*.5,w=F[0],I=F[1],W=F[2],G=F[3];return j[0]=w,j[1]=I,j[2]=W,j[3]=G,j[4]=ae*G+K*W-te*I,j[5]=K*G+te*w-ae*W,j[6]=te*G+ae*I-K*w,j[7]=-ae*w-K*I-te*W,j}function f(j,F){return j[0]=0,j[1]=0,j[2]=0,j[3]=1,j[4]=F[0]*.5,j[5]=F[1]*.5,j[6]=F[2]*.5,j[7]=0,j}function g(j,F){return j[0]=F[0],j[1]=F[1],j[2]=F[2],j[3]=F[3],j[4]=0,j[5]=0,j[6]=0,j[7]=0,j}function y(j,F){var J=o.create();a.getRotation(J,F);var ae=new i.ARRAY_TYPE(3);return a.getTranslation(ae,F),d(j,J,ae),j}function S(j,F){return j[0]=F[0],j[1]=F[1],j[2]=F[2],j[3]=F[3],j[4]=F[4],j[5]=F[5],j[6]=F[6],j[7]=F[7],j}function b(j){return j[0]=0,j[1]=0,j[2]=0,j[3]=1,j[4]=0,j[5]=0,j[6]=0,j[7]=0,j}function C(j,F,J,ae,K,te,w,I,W){return j[0]=F,j[1]=J,j[2]=ae,j[3]=K,j[4]=te,j[5]=w,j[6]=I,j[7]=W,j}var N=o.copy;function T(j,F){return j[0]=F[4],j[1]=F[5],j[2]=F[6],j[3]=F[7],j}var p=o.copy;function m(j,F){return j[4]=F[0],j[5]=F[1],j[6]=F[2],j[7]=F[3],j}function v(j,F){var J=F[4],ae=F[5],K=F[6],te=F[7],w=-F[0],I=-F[1],W=-F[2],G=F[3];return j[0]=(J*G+te*w+ae*W-K*I)*2,j[1]=(ae*G+te*I+K*w-J*W)*2,j[2]=(K*G+te*W+J*I-ae*w)*2,j}function M(j,F,J){var ae=F[0],K=F[1],te=F[2],w=F[3],I=J[0]*.5,W=J[1]*.5,G=J[2]*.5,_=F[4],ne=F[5],re=F[6],X=F[7];return j[0]=ae,j[1]=K,j[2]=te,j[3]=w,j[4]=w*I+K*G-te*W+_,j[5]=w*W+te*I-ae*G+ne,j[6]=w*G+ae*W-K*I+re,j[7]=-ae*I-K*W-te*G+X,j}function R(j,F,J){var ae=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],W=F[5],G=F[6],_=F[7],ne=I*w+_*ae+W*te-G*K,re=W*w+_*K+G*ae-I*te,X=G*w+_*te+I*K-W*ae,se=_*w-I*ae-W*K-G*te;return o.rotateX(j,F,J),ae=j[0],K=j[1],te=j[2],w=j[3],j[4]=ne*w+se*ae+re*te-X*K,j[5]=re*w+se*K+X*ae-ne*te,j[6]=X*w+se*te+ne*K-re*ae,j[7]=se*w-ne*ae-re*K-X*te,j}function E(j,F,J){var ae=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],W=F[5],G=F[6],_=F[7],ne=I*w+_*ae+W*te-G*K,re=W*w+_*K+G*ae-I*te,X=G*w+_*te+I*K-W*ae,se=_*w-I*ae-W*K-G*te;return o.rotateY(j,F,J),ae=j[0],K=j[1],te=j[2],w=j[3],j[4]=ne*w+se*ae+re*te-X*K,j[5]=re*w+se*K+X*ae-ne*te,j[6]=X*w+se*te+ne*K-re*ae,j[7]=se*w-ne*ae-re*K-X*te,j}function P(j,F,J){var ae=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],W=F[5],G=F[6],_=F[7],ne=I*w+_*ae+W*te-G*K,re=W*w+_*K+G*ae-I*te,X=G*w+_*te+I*K-W*ae,se=_*w-I*ae-W*K-G*te;return o.rotateZ(j,F,J),ae=j[0],K=j[1],te=j[2],w=j[3],j[4]=ne*w+se*ae+re*te-X*K,j[5]=re*w+se*K+X*ae-ne*te,j[6]=X*w+se*te+ne*K-re*ae,j[7]=se*w-ne*ae-re*K-X*te,j}function k(j,F,J){var ae=J[0],K=J[1],te=J[2],w=J[3],I=F[0],W=F[1],G=F[2],_=F[3];return j[0]=I*w+_*ae+W*te-G*K,j[1]=W*w+_*K+G*ae-I*te,j[2]=G*w+_*te+I*K-W*ae,j[3]=_*w-I*ae-W*K-G*te,I=F[4],W=F[5],G=F[6],_=F[7],j[4]=I*w+_*ae+W*te-G*K,j[5]=W*w+_*K+G*ae-I*te,j[6]=G*w+_*te+I*K-W*ae,j[7]=_*w-I*ae-W*K-G*te,j}function O(j,F,J){var ae=F[0],K=F[1],te=F[2],w=F[3],I=J[0],W=J[1],G=J[2],_=J[3];return j[0]=ae*_+w*I+K*G-te*W,j[1]=K*_+w*W+te*I-ae*G,j[2]=te*_+w*G+ae*W-K*I,j[3]=w*_-ae*I-K*W-te*G,I=J[4],W=J[5],G=J[6],_=J[7],j[4]=ae*_+w*I+K*G-te*W,j[5]=K*_+w*W+te*I-ae*G,j[6]=te*_+w*G+ae*W-K*I,j[7]=w*_-ae*I-K*W-te*G,j}function B(j,F,J,ae){if(Math.abs(ae)<i.EPSILON)return S(j,F);var K=Math.hypot(J[0],J[1],J[2]);ae=ae*.5;var te=Math.sin(ae),w=te*J[0]/K,I=te*J[1]/K,W=te*J[2]/K,G=Math.cos(ae),_=F[0],ne=F[1],re=F[2],X=F[3];j[0]=_*G+X*w+ne*W-re*I,j[1]=ne*G+X*I+re*w-_*W,j[2]=re*G+X*W+_*I-ne*w,j[3]=X*G-_*w-ne*I-re*W;var se=F[4],ue=F[5],de=F[6],ge=F[7];return j[4]=se*G+ge*w+ue*W-de*I,j[5]=ue*G+ge*I+de*w-se*W,j[6]=de*G+ge*W+se*I-ue*w,j[7]=ge*G-se*w-ue*I-de*W,j}function D(j,F,J){return j[0]=F[0]+J[0],j[1]=F[1]+J[1],j[2]=F[2]+J[2],j[3]=F[3]+J[3],j[4]=F[4]+J[4],j[5]=F[5]+J[5],j[6]=F[6]+J[6],j[7]=F[7]+J[7],j}function A(j,F,J){var ae=F[0],K=F[1],te=F[2],w=F[3],I=J[4],W=J[5],G=J[6],_=J[7],ne=F[4],re=F[5],X=F[6],se=F[7],ue=J[0],de=J[1],ge=J[2],ye=J[3];return j[0]=ae*ye+w*ue+K*ge-te*de,j[1]=K*ye+w*de+te*ue-ae*ge,j[2]=te*ye+w*ge+ae*de-K*ue,j[3]=w*ye-ae*ue-K*de-te*ge,j[4]=ae*_+w*I+K*G-te*W+ne*ye+se*ue+re*ge-X*de,j[5]=K*_+w*W+te*I-ae*G+re*ye+se*de+X*ue-ne*ge,j[6]=te*_+w*G+ae*W-K*I+X*ye+se*ge+ne*de-re*ue,j[7]=w*_-ae*I-K*W-te*G+se*ye-ne*ue-re*de-X*ge,j}var L=A;function U(j,F,J){return j[0]=F[0]*J,j[1]=F[1]*J,j[2]=F[2]*J,j[3]=F[3]*J,j[4]=F[4]*J,j[5]=F[5]*J,j[6]=F[6]*J,j[7]=F[7]*J,j}var Y=o.dot;function q(j,F,J,ae){var K=1-ae;return Y(F,J)<0&&(ae=-ae),j[0]=F[0]*K+J[0]*ae,j[1]=F[1]*K+J[1]*ae,j[2]=F[2]*K+J[2]*ae,j[3]=F[3]*K+J[3]*ae,j[4]=F[4]*K+J[4]*ae,j[5]=F[5]*K+J[5]*ae,j[6]=F[6]*K+J[6]*ae,j[7]=F[7]*K+J[7]*ae,j}function ie(j,F){var J=$(F);return j[0]=-F[0]/J,j[1]=-F[1]/J,j[2]=-F[2]/J,j[3]=F[3]/J,j[4]=-F[4]/J,j[5]=-F[5]/J,j[6]=-F[6]/J,j[7]=F[7]/J,j}function z(j,F){return j[0]=-F[0],j[1]=-F[1],j[2]=-F[2],j[3]=F[3],j[4]=-F[4],j[5]=-F[5],j[6]=-F[6],j[7]=F[7],j}var V=o.length,Z=V,$=o.squaredLength,ee=$;function oe(j,F){var J=$(F);if(J>0){J=Math.sqrt(J);var ae=F[0]/J,K=F[1]/J,te=F[2]/J,w=F[3]/J,I=F[4],W=F[5],G=F[6],_=F[7],ne=ae*I+K*W+te*G+w*_;j[0]=ae,j[1]=K,j[2]=te,j[3]=w,j[4]=(I-ae*ne)/J,j[5]=(W-K*ne)/J,j[6]=(G-te*ne)/J,j[7]=(_-w*ne)/J}return j}function ce(j){return"quat2("+j[0]+", "+j[1]+", "+j[2]+", "+j[3]+", "+j[4]+", "+j[5]+", "+j[6]+", "+j[7]+")"}function me(j,F){return j[0]===F[0]&&j[1]===F[1]&&j[2]===F[2]&&j[3]===F[3]&&j[4]===F[4]&&j[5]===F[5]&&j[6]===F[6]&&j[7]===F[7]}function pe(j,F){var J=j[0],ae=j[1],K=j[2],te=j[3],w=j[4],I=j[5],W=j[6],G=j[7],_=F[0],ne=F[1],re=F[2],X=F[3],se=F[4],ue=F[5],de=F[6],ge=F[7];return Math.abs(J-_)<=i.EPSILON*Math.max(1,Math.abs(J),Math.abs(_))&&Math.abs(ae-ne)<=i.EPSILON*Math.max(1,Math.abs(ae),Math.abs(ne))&&Math.abs(K-re)<=i.EPSILON*Math.max(1,Math.abs(K),Math.abs(re))&&Math.abs(te-X)<=i.EPSILON*Math.max(1,Math.abs(te),Math.abs(X))&&Math.abs(w-se)<=i.EPSILON*Math.max(1,Math.abs(w),Math.abs(se))&&Math.abs(I-ue)<=i.EPSILON*Math.max(1,Math.abs(I),Math.abs(ue))&&Math.abs(W-de)<=i.EPSILON*Math.max(1,Math.abs(W),Math.abs(de))&&Math.abs(G-ge)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(ge))}},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"fromValues",function(){return c}),n.d(r,"copy",function(){return l}),n.d(r,"set",function(){return u}),n.d(r,"add",function(){return h}),n.d(r,"subtract",function(){return d}),n.d(r,"multiply",function(){return f}),n.d(r,"divide",function(){return g}),n.d(r,"ceil",function(){return y}),n.d(r,"floor",function(){return S}),n.d(r,"min",function(){return b}),n.d(r,"max",function(){return C}),n.d(r,"round",function(){return N}),n.d(r,"scale",function(){return T}),n.d(r,"scaleAndAdd",function(){return p}),n.d(r,"distance",function(){return m}),n.d(r,"squaredDistance",function(){return v}),n.d(r,"length",function(){return M}),n.d(r,"squaredLength",function(){return R}),n.d(r,"negate",function(){return E}),n.d(r,"inverse",function(){return P}),n.d(r,"normalize",function(){return k}),n.d(r,"dot",function(){return O}),n.d(r,"cross",function(){return B}),n.d(r,"lerp",function(){return D}),n.d(r,"random",function(){return A}),n.d(r,"transformMat2",function(){return L}),n.d(r,"transformMat2d",function(){return U}),n.d(r,"transformMat3",function(){return Y}),n.d(r,"transformMat4",function(){return q}),n.d(r,"rotate",function(){return ie}),n.d(r,"angle",function(){return z}),n.d(r,"zero",function(){return V}),n.d(r,"str",function(){return Z}),n.d(r,"exactEquals",function(){return $}),n.d(r,"equals",function(){return ee}),n.d(r,"len",function(){return oe}),n.d(r,"sub",function(){return ce}),n.d(r,"mul",function(){return me}),n.d(r,"div",function(){return pe}),n.d(r,"dist",function(){return j}),n.d(r,"sqrDist",function(){return F}),n.d(r,"sqrLen",function(){return J}),n.d(r,"forEach",function(){return ae});var i=n(2);function o(){var K=new i.ARRAY_TYPE(2);return i.ARRAY_TYPE!=Float32Array&&(K[0]=0,K[1]=0),K}function a(K){var te=new i.ARRAY_TYPE(2);return te[0]=K[0],te[1]=K[1],te}function c(K,te){var w=new i.ARRAY_TYPE(2);return w[0]=K,w[1]=te,w}function l(K,te){return K[0]=te[0],K[1]=te[1],K}function u(K,te,w){return K[0]=te,K[1]=w,K}function h(K,te,w){return K[0]=te[0]+w[0],K[1]=te[1]+w[1],K}function d(K,te,w){return K[0]=te[0]-w[0],K[1]=te[1]-w[1],K}function f(K,te,w){return K[0]=te[0]*w[0],K[1]=te[1]*w[1],K}function g(K,te,w){return K[0]=te[0]/w[0],K[1]=te[1]/w[1],K}function y(K,te){return K[0]=Math.ceil(te[0]),K[1]=Math.ceil(te[1]),K}function S(K,te){return K[0]=Math.floor(te[0]),K[1]=Math.floor(te[1]),K}function b(K,te,w){return K[0]=Math.min(te[0],w[0]),K[1]=Math.min(te[1],w[1]),K}function C(K,te,w){return K[0]=Math.max(te[0],w[0]),K[1]=Math.max(te[1],w[1]),K}function N(K,te){return K[0]=Math.round(te[0]),K[1]=Math.round(te[1]),K}function T(K,te,w){return K[0]=te[0]*w,K[1]=te[1]*w,K}function p(K,te,w,I){return K[0]=te[0]+w[0]*I,K[1]=te[1]+w[1]*I,K}function m(K,te){var w=te[0]-K[0],I=te[1]-K[1];return Math.hypot(w,I)}function v(K,te){var w=te[0]-K[0],I=te[1]-K[1];return w*w+I*I}function M(K){var te=K[0],w=K[1];return Math.hypot(te,w)}function R(K){var te=K[0],w=K[1];return te*te+w*w}function E(K,te){return K[0]=-te[0],K[1]=-te[1],K}function P(K,te){return K[0]=1/te[0],K[1]=1/te[1],K}function k(K,te){var w=te[0],I=te[1],W=w*w+I*I;return W>0&&(W=1/Math.sqrt(W)),K[0]=te[0]*W,K[1]=te[1]*W,K}function O(K,te){return K[0]*te[0]+K[1]*te[1]}function B(K,te,w){var I=te[0]*w[1]-te[1]*w[0];return K[0]=K[1]=0,K[2]=I,K}function D(K,te,w,I){var W=te[0],G=te[1];return K[0]=W+I*(w[0]-W),K[1]=G+I*(w[1]-G),K}function A(K,te){te=te||1;var w=i.RANDOM()*2*Math.PI;return K[0]=Math.cos(w)*te,K[1]=Math.sin(w)*te,K}function L(K,te,w){var I=te[0],W=te[1];return K[0]=w[0]*I+w[2]*W,K[1]=w[1]*I+w[3]*W,K}function U(K,te,w){var I=te[0],W=te[1];return K[0]=w[0]*I+w[2]*W+w[4],K[1]=w[1]*I+w[3]*W+w[5],K}function Y(K,te,w){var I=te[0],W=te[1];return K[0]=w[0]*I+w[3]*W+w[6],K[1]=w[1]*I+w[4]*W+w[7],K}function q(K,te,w){var I=te[0],W=te[1];return K[0]=w[0]*I+w[4]*W+w[12],K[1]=w[1]*I+w[5]*W+w[13],K}function ie(K,te,w,I){var W=te[0]-w[0],G=te[1]-w[1],_=Math.sin(I),ne=Math.cos(I);return K[0]=W*ne-G*_+w[0],K[1]=W*_+G*ne+w[1],K}function z(K,te){var w=K[0],I=K[1],W=te[0],G=te[1],_=Math.sqrt(w*w+I*I)*Math.sqrt(W*W+G*G),ne=_&&(w*W+I*G)/_;return Math.acos(Math.min(Math.max(ne,-1),1))}function V(K){return K[0]=0,K[1]=0,K}function Z(K){return"vec2("+K[0]+", "+K[1]+")"}function $(K,te){return K[0]===te[0]&&K[1]===te[1]}function ee(K,te){var w=K[0],I=K[1],W=te[0],G=te[1];return Math.abs(w-W)<=i.EPSILON*Math.max(1,Math.abs(w),Math.abs(W))&&Math.abs(I-G)<=i.EPSILON*Math.max(1,Math.abs(I),Math.abs(G))}var oe=M,ce=d,me=f,pe=g,j=m,F=v,J=R,ae=function(){var K=o();return function(te,w,I,W,G,_){var ne,re;for(w||(w=2),I||(I=0),W?re=Math.min(W*w+I,te.length):re=te.length,ne=I;ne<re;ne+=w)K[0]=te[ne],K[1]=te[ne+1],G(K,K,_),te[ne]=K[0],te[ne+1]=K[1];return te}}()},function(e,r,n){n.r(r),n.d(r,"default",function(){return z});var i=n(13),o=n.n(i),a=n(19),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(25),g=n(1),y=n(36),S=n(43),b=n(41),C=n(56),N=n(73),T=n(45),p=n(78),m=n(37),v=n(82);n(1).glMatrix.setMatrixArrayType(Array);function M(V,Z){var $;if(typeof Symbol>"u"||V[Symbol.iterator]==null){if(Array.isArray(V)||($=R(V))||Z){$&&(V=$);var ee=0,oe=function(){};return{s:oe,n:function(){return ee>=V.length?{done:!0}:{done:!1,value:V[ee++]}},e:function(F){throw F},f:oe}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
2
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ce=!0,me=!1,pe;return{s:function(){$=V[Symbol.iterator]()},n:function(){var F=$.next();return ce=F.done,F},e:function(F){me=!0,pe=F},f:function(){try{!ce&&$.return!=null&&$.return()}finally{if(me)throw pe}}}}function R(V,Z){if(V){if(typeof V=="string")return E(V,Z);var $=Object.prototype.toString.call(V).slice(8,-1);if($==="Object"&&V.constructor&&($=V.constructor.name),$==="Map"||$==="Set")return Array.from(V);if($==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test($))return E(V,Z)}}function E(V,Z){(Z==null||Z>V.length)&&(Z=V.length);for(var $=0,ee=new Array(Z);$<Z;$++)ee[$]=V[$];return ee}var P={autoUpdate:!1,preserveDrawingBuffer:!1,bufferSize:1500},k=`attribute vec3 a_vertexPosition;
3
- attribute vec3 a_vertexTextureCoord;
4
- varying vec3 vTextureCoord;
5
- uniform mat3 viewMatrix;
6
- uniform mat3 projectionMatrix;
7
-
8
- void main() {
9
- gl_PointSize = 1.0;
10
- vec3 pos = projectionMatrix * viewMatrix * vec3(a_vertexPosition.xy, 1.0);
11
- gl_Position = vec4(pos.xy, 1.0, 1.0);
12
- vTextureCoord = a_vertexTextureCoord;
13
- }
14
- `,O=`precision mediump float;
15
- varying vec3 vTextureCoord;
16
- uniform sampler2D u_texSampler;
17
- void main() {
18
- gl_FragColor = texture2D(u_texSampler, vTextureCoord.xy);
19
- }
20
- `,B=Symbol("glRenderer"),D=Symbol("canvasRenderer"),A=Symbol("options"),L=Symbol("globalTransform"),U=Symbol("applyGlobalTransform"),Y=Symbol("canvas");function q(V){var Z=V.gl,$=V.fbo;$&&Z.bindFramebuffer(Z.FRAMEBUFFER,$),V._draw(),$&&Z.bindFramebuffer(Z.FRAMEBUFFER,null)}function ie(V,Z,$,ee){var oe=V.createTexture(Z.canvas),ce=[[[0,0],[$,0],[$,ee],[0,ee],[0,0]]];ce.closed=!0;var me=new N.default({contours:ce});me.setTexture(oe),V.setMeshData([me.meshData]),q(V),oe.delete(),Z.clearRect(0,0,$,ee),delete Z._filter}var z=function(){function V(Z){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};u()(this,V);var ee=$.contextType;if(ee||(typeof WebGL2RenderingContext=="function"?ee="webgl2":typeof WebGLRenderingContext=="function"?ee="webgl":ee="2d"),!Z.getContext){var oe=Z;Z={getContext:function(){return oe},width:$.width,height:$.height},oe.canvas=Z,ee="2d"}if(this[Y]=Z,ee!=="webgl"&&ee!=="webgl2"&&ee!=="2d")throw new Error("Unknown context type ".concat(ee));if($.contextType=ee,this[A]=Object.assign({},P,$),ee==="webgl"||ee==="webgl2"){ee==="webgl2"&&(this[A].webgl2=!0);var ce=new f.default(Z,this[A]);ee==="webgl2"&&!ce.isWebGL2&&($.contextType="webgl"),Object(v.createShaders)(ce),Object(v.applyShader)(ce),Object(v.createCloudShaders)(ce);var me=ce.gl;me.clearColor(0,0,0,0),me.blendFuncSeparate(me.SRC_ALPHA,me.ONE_MINUS_SRC_ALPHA,me.ONE,me.ONE_MINUS_SRC_ALPHA),this[B]=ce}else this[D]=new y.default(Z,this[A]);this[L]=[1,0,0,0,1,0,0,0,1],this.updateResolution()}return d()(V,[{key:U,value:function(){var $=this[B]||this[D];if(this[B]){var ee=this.canvas,oe=ee.width,ce=ee.height;$.uniforms.viewMatrix=this.viewMatrix,$.uniforms.projectionMatrix=this.projectionMatrix,$.uniforms.u_resolution=[oe,ce]}}},{key:"updateResolution",value:function(){var $=this.canvas,ee=$.width,oe=$.height,ce=[1,0,0,0,1,0,-ee/2,-oe/2,1],me=[2/ee,0,0,0,-2/oe,0,0,0,1],pe=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),me,ce);this.projectionMatrix=pe,this[B]&&this[B].gl.viewport(0,0,ee,oe)}},{key:"createTexture",value:function($,ee){var oe=this[B]||this[D];return oe.createTexture($,ee)}},{key:"loadTexture",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},oe=ee.useImageBitmap,ce=oe===void 0?!1:oe,me=this[B]||this[D];return me.loadTexture($,{useImageBitmap:ce})}},{key:"createText",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},oe=ee.font,ce=oe===void 0?"16px arial":oe,me=ee.fillColor,pe=me===void 0?null:me,j=ee.strokeColor,F=j===void 0?null:j,J=ee.strokeWidth,ae=J===void 0?1:J;if(this[B]){var K=m.default.createText($,{font:ce,fillColor:pe,strokeColor:F,strokeWidth:ae});return{image:this.createTexture(K.image),rect:K.rect}}return{_img:{font:ce,fillColor:pe,strokeColor:F,strokeWidth:ae,text:$}}}},{key:"createProgram",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ee=$.vertex,oe=$.fragment,ce=$.options;if(this[B]){var me=this[B].compileSync(oe,ee);return me._attribOpts=ce,me}throw new Error("Context 2D cannot create webgl program.")}},{key:"createPassProgram",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ee=$.vertex,oe=ee===void 0?k:ee,ce=$.fragment,me=ce===void 0?O:ce,pe=$.options;return this.createProgram({vertex:oe,fragment:me,options:pe})}},{key:"useProgram",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this[B]){var oe=Object.assign({},$._attribOpts,ee);return this[B].useProgram($,oe)}throw new Error("Context 2D cannot use webgl program.")}},{key:"deleteTexture",value:function($){var ee=this[B]||this[D];return ee.deleteTexture($)}},{key:"clear",value:function(){if(this[B]){var $=this[B].gl;$.clear($.COLOR_BUFFER_BIT)}else{var ee;(ee=this[D]).clear.apply(ee,arguments)}}},{key:"drawMeshCloud",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},oe=ee.clear,ce=oe===void 0?!1:oe,me=ee.program,pe=me===void 0?null:me,j=this[B]||this[D],F=pe||$.program;if(this[B]){var J=j.gl;if(ce&&J.clear(J.COLOR_BUFFER_BIT),F)j.program!==F&&this.useProgram(F,{a_color:{type:"UNSIGNED_BYTE",normalize:!0},a_fillCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_strokeCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_frameIndex:{type:"UNSIGNED_BYTE",normalize:!1}});else{var ae=$.mesh.meshData,K=!!ae.uniforms.u_texSampler,te=!!ae.uniforms.u_filterFlag,w=!!ae.uniforms.u_radialGradientVector,I=$.hasCloudColor,W=$.hasCloudFilter,G=!!ae.uniforms.u_clipSampler;Object(v.applyCloudShader)(j,{hasTexture:K,hasFilter:te,hasGradient:w,hasCloudColor:I,hasCloudFilter:W,hasClipPath:G})}this[U](),j.setMeshData([$.meshData]),$.beforeRender&&$.beforeRender(J,$),q(j),$.afterRender&&$.afterRender(J,$)}else j.setTransform(this.globalTransformMatrix),j.drawMeshCloud($,{clear:ce,hook:!1})}},{key:"drawMeshes",value:function($){var ee=this,oe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ce=oe.clear,me=ce===void 0?!1:ce,pe=oe.program,j=pe===void 0?null:pe,F=this[B]||this[D];this[B]?function(){var J=F.fbo,ae=Object(S.default)(ee,$,j==null),K=F.gl;me&&K.clear(K.COLOR_BUFFER_BIT);var te=!Object(p.isUnitTransform)(ee.globalTransformMatrix);ee._drawCalls=0;var w=M(ae),I;try{var W=function(){var _=I.value;ee._drawCalls++;var ne=j||_.program;if(_ instanceof T.default)ee.drawMeshCloud(_,{clear:me,program:ne});else{var re=ee.canvas,X=re.width,se=re.height;if(_.beforeRender&&_.beforeRender(K,_),_.pass.length&&((!ee.fbo||ee.fbo.width!==X||ee.fbo.height!==se)&&(ee.fbo={width:X,height:se,target:F.createFBO(),buffer:F.createFBO(),swap:function(){var Ne=[this.buffer,this.target];this.target=Ne[0],this.buffer=Ne[1]}}),F.bindFBO(ee.fbo.target)),!ne&&_.filterCanvas){Object(v.applyShader)(F,{hasTexture:!0});var ue=ee.filterContext;if(!ue){var de=m.default.createCanvas(X,se);ue=de.getContext("2d"),ee.filterContext=ue}var ge=$[_.packIndex],ye=ge.filter,Se=$[_.packIndex+1],be=$[_.packIndex-1];(!be||!be.filterCanvas||be.filter!==ye)&&(!Se||!Se.filterCanvas||Se.filter!==ye)?(te?(ue.save(),Object(b.drawMesh2D)(ge,ue,!1),ue.restore(),Object(b.applyFilter)(ue,ye)):Object(b.drawMesh2D)(ge,ue,!0),ee[U](),ie(F,ue,X,se)):(te&&ue.save(),Object(b.drawMesh2D)(ge,ue,!1),te&&ue.restore(),(!Se||!Se.filterCanvas||ge.filter!==Se.filter)&&(Object(b.applyFilter)(ue,ye),ee[U](),ie(F,ue,X,se)))}else{if(ne)F.program!==ne&&ee.useProgram(ne,{a_color:{type:"UNSIGNED_BYTE",normalize:!0}});else{var Ie=!!_.uniforms.u_texSampler,Ce=!!_.uniforms.u_filterFlag,Ae=!!_.uniforms.u_radialGradientVector,Ee=!!_.uniforms.u_clipSampler;Object(v.applyShader)(F,{hasTexture:Ie,hasFilter:Ce,hasGradient:Ae,hasClipPath:Ee})}_.filterCanvas&&console.warn("User program ignored some filter effects."),ee[U](),F.setMeshData([_]),q(F)}if(_.pass.length){var ke=_.pass.length;_.pass.forEach(function(Oe,Ne){Oe.blend=_.enableBlend,Oe.setTexture(F.fbo.texture),Ne===ke-1?F.bindFBO(J):(ee.fbo.swap(),F.bindFBO(ee.fbo.target)),Oe.program?F.useProgram(Oe.program):(ee.defaultPassProgram=ee.defaultPassProgram||ee.createPassProgram(),F.useProgram(ee.defaultPassProgram)),F.setMeshData([Oe.meshData]),K.clear(K.COLOR_BUFFER_BIT),q(F)})}_.afterRender&&_.afterRender(K,_)}};for(w.s();!(I=w.n()).done;)W()}catch(G){w.e(G)}finally{w.f()}}():(F.setTransform(this.globalTransformMatrix),F.drawMeshes($,{clear:me}))}},{key:"drawImage",value:function($){for(var ee=arguments.length,oe=new Array(ee>1?ee-1:0),ce=1;ce<ee;ce++)oe[ce-1]=arguments[ce];var me=oe.length;if(me<2)throw new TypeError("Failed to execute 'drawImage' on 'Renderer': 3 arguments required, but only ".concat(oe.length+1," present."));if(me!==2&&me!==4&&me!==8)throw new TypeError("Failed to execute 'drawImage' on 'Renderer': Valid arities are: [3, 5, 9], but ".concat(oe.length+1," arguments provided."));var pe=null,j=null;me===2?pe=[oe[0],oe[1],$.width,$.height]:me===4?pe=oe:me===8&&(j=oe.slice(0,4),pe=oe.slice(4));var F=this.createTexture($),J=this.canvas,ae=J.width,K=J.height,te=new C.default;te.rect(pe[0],pe[1],ae,K);var w=new N.default(te,{width:ae,height:K});w.setTexture(F,{rect:pe,srcRect:j}),this.drawMeshes([w]),this.deleteTexture(F)}},{key:"setGlobalTransform",value:function(){return this[L]=[arguments.length<=0?void 0:arguments[0],arguments.length<=1?void 0:arguments[1],0,arguments.length<=2?void 0:arguments[2],arguments.length<=3?void 0:arguments[3],0,arguments.length<=4?void 0:arguments[4],arguments.length<=5?void 0:arguments[5],1],this}},{key:"globalTransform",value:function(){for(var $=this[L],ee=arguments.length,oe=new Array(ee),ce=0;ce<ee;ce++)oe[ce]=arguments[ce];return this[L]=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),$,oe),this}},{key:"globalTranslate",value:function($,ee){var oe=g.mat3.create();return oe=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),oe,[$,ee]),this.globalTransform.apply(this,c()(oe))}},{key:"globalRotate",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0],oe=o()(ee,2),ce=oe[0],me=oe[1],pe=g.mat3.create();return pe=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),pe,[ce,me]),pe=g.mat3.rotate(Array.of(0,0,0,0,0,0,0,0,0),pe,$),pe=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),pe,[-ce,-me]),this.globalTransform.apply(this,c()(pe))}},{key:"globalScale",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:$,oe=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ce=o()(oe,2),me=ce[0],pe=ce[1],j=g.mat3.create();return j=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),j,[me,pe]),j=g.mat3.scale(Array.of(0,0,0,0,0,0,0,0,0),j,[$,ee]),j=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),j,[-me,-pe]),this.globalTransform.apply(this,c()(j))}},{key:"globalSkew",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:$,oe=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ce=o()(oe,2),me=ce[0],pe=ce[1],j=g.mat3.create();return j=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),j,[me,pe]),j=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),j,g.mat3.fromValues(1,Math.tan(ee),Math.tan($),1,0,0)),j=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),j,[-me,-pe]),this.globalTransform.apply(this,c()(j))}},{key:"transformPoint",value:function($,ee,oe){var ce=this.globalTransformMatrix;oe&&(ce=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),ce,oe));var me=$*ce[0]+ee*ce[2]+ce[4],pe=$*ce[1]+ee*ce[3]+ce[5];return[me,pe]}},{key:"canvas",get:function(){return this[Y]}},{key:"canvasRenderer",get:function(){return this[D]}},{key:"glRenderer",get:function(){return this[B]}},{key:"isWebGL2",get:function(){return this[B]&&this[B].isWebGL2}},{key:"options",get:function(){return this[A]}},{key:"globalTransformMatrix",get:function(){var $=this[L];return[$[0],$[1],$[3],$[4],$[6],$[7]]}},{key:"viewMatrix",get:function(){return this[L]}}]),V}()},function(e,r,n){var i=n(14),o=n(15),a=n(16),c=n(18);function l(u,h){return i(u)||o(u,h)||a(u,h)||c()}e.exports=l},function(e,r){function n(i){if(Array.isArray(i))return i}e.exports=n},function(e,r){function n(i,o){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(i)))){var a=[],c=!0,l=!1,u=void 0;try{for(var h=i[Symbol.iterator](),d;!(c=(d=h.next()).done)&&(a.push(d.value),!(o&&a.length===o));c=!0);}catch(f){l=!0,u=f}finally{try{!c&&h.return!=null&&h.return()}finally{if(l)throw u}}return a}}e.exports=n},function(e,r,n){var i=n(17);function o(a,c){if(a){if(typeof a=="string")return i(a,c);var l=Object.prototype.toString.call(a).slice(8,-1);if(l==="Object"&&a.constructor&&(l=a.constructor.name),l==="Map"||l==="Set")return Array.from(a);if(l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l))return i(a,c)}}e.exports=o},function(e,r){function n(i,o){(o==null||o>i.length)&&(o=i.length);for(var a=0,c=new Array(o);a<o;a++)c[a]=i[a];return c}e.exports=n},function(e,r){function n(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
21
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}e.exports=n},function(e,r,n){var i=n(20),o=n(21),a=n(16),c=n(22);function l(u){return i(u)||o(u)||a(u)||c()}e.exports=l},function(e,r,n){var i=n(17);function o(a){if(Array.isArray(a))return i(a)}e.exports=o},function(e,r){function n(i){if(typeof Symbol<"u"&&Symbol.iterator in Object(i))return Array.from(i)}e.exports=n},function(e,r){function n(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
22
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}e.exports=n},function(e,r){function n(i,o){if(!(i instanceof o))throw new TypeError("Cannot call a class as a function")}e.exports=n},function(e,r){function n(o,a){for(var c=0;c<a.length;c++){var l=a[c];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(o,l.key,l)}}function i(o,a,c){return a&&n(o.prototype,a),c&&n(o,c),o}e.exports=i},function(e,r,n){n.r(r);var i=n(26);n(1).glMatrix.setMatrixArrayType(Array),r.default=i.default},function(e,r,n){n.r(r),n.d(r,"default",function(){return k});var i=n(27),o=n.n(i),a=n(29),c=n.n(a),l=n(13),u=n.n(l),h=n(19),d=n.n(h),f=n(23),g=n.n(f),y=n(24),S=n.n(y),b=n(30),C=n.n(b),N=n(31),T=n(33),p=n(34),m=n(35);n(1).glMatrix.setMatrixArrayType(Array);var v={};function M(O){for(var B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3,D=[],A=O.length,L=0;L<A;L++)L%B<2&&D.push(.5*(O[L]+1));return D}function R(O,B){var D=B._buffers;Object.values(D).forEach(function(A){O.deleteBuffer(A)}),B._buffers={}}function E(O,B,D){return O.activeTexture(O.TEXTURE0+D),Array.isArray(B._img)?O.bindTexture(O.TEXTURE_CUBE_MAP,B):O.bindTexture(O.TEXTURE_2D,B),B}var P={int:"1i",ivec2:"2i",ivec3:"3i",ivec4:"4i",float:"1f",vec2:"2f",vec3:"3f",vec4:"4f",mat2:"Matrix2fv",mat3:"Matrix3fv",mat4:"Matrix4fv",sampler1D:"sampler1D",sampler2D:"sampler2D",sampler3D:"sampler3D",samplerCube:"samplerCube",sampler1DShadow:"sampler1DShadow",sampler2DShadow:"sampler2DShadow",sampler2DRect:"sampler2DRect",sampler2DRectShadow:"sampler2DRectShadow"},k=function(){S()(O,null,[{key:"addLibs",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Object.assign(v,D)}},{key:"FLOAT",value:function(D,A){return Object(N.pointsToBuffer)(D,Float32Array,A)}},{key:"UNSIGNED_BYTE",value:function(D,A){return Object(N.pointsToBuffer)(D,Uint8Array,A)}},{key:"UNSIGNED_SHORT",value:function(D,A){return Object(N.pointsToBuffer)(D,Uint16Array,A)}},{key:"BYTE",value:function(D,A){return Object(N.pointsToBuffer)(D,Int8Array,A)}},{key:"SHORT",value:function(D,A){return Object(N.pointsToBuffer)(D,Int16Array,A)}}]);function O(B){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};g()(this,O),this.options=Object.assign({},O.defaultOptions,D),this.canvas=B;var A;this.options.webgl2&&(A=B.getContext("webgl2",this.options)),A==null&&(A=Object(N.setupWebGL)(B,this.options),this.aia_ext=A.getExtension("ANGLE_instanced_arrays")),this.gl=A,A.viewport(0,0,B.width,B.height),A.clearColor(0,0,0,0),A.blendFuncSeparate(A.SRC_ALPHA,A.ONE_MINUS_SRC_ALPHA,A.ONE,A.ONE_MINUS_SRC_ALPHA),this.programs=[],this._events={}}return S()(O,[{key:"_declareUniform",value:function(D,A){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"1f",U=this.gl,Y=U.getUniformLocation(D,A),q,ie=this;if(/^sampler/.test(L)){var z=D._samplerMap,V=D._bindTextures;Object.defineProperty(D.uniforms,A,{get:function(){return q},set:function(ce){q=ce;var me=z[A]!=null?z[A]:V.length;V[me]=ce,E(U,ce,me),z[A]||(z[A]=me,U.uniform1i(Y,me)),ie.options.autoUpdate&&ie.update()},configurable:!1,enumerable:!0})}else{var Z=L.indexOf("Matrix")===0,$=!Z&&/v$/.test(L),ee=U["uniform".concat(L)].bind(U);Object.defineProperty(D.uniforms,A,{get:function(){return q},set:function(ce){q=ce,typeof ce=="number"&&(ce=[ce]),Z?ee(Y,!1,ce):$?ee(Y,ce):ee.apply(void 0,[Y].concat(d()(ce))),ie.options.autoUpdate&&ie.update()},configurable:!1,enumerable:!0})}}},{key:"_draw",value:function(){var D=this,A=this.program;A.meshData.forEach(function(L,U){var Y=L.positions,q=L.cells,ie=L.instanceCount,z=L.cellsCount,V=L.attributes,Z=L.uniforms,$=L.textureCoord,ee=L.enableBlend,oe=D.gl,ce=L.mode!=null?L.mode:oe.TRIANGLES;typeof ce=="string"&&(ce=oe[ce]),ee?oe.enable(oe.BLEND):oe.disable(oe.BLEND),oe.bindBuffer(oe.ARRAY_BUFFER,A._buffers.verticesBuffer),oe.bufferData(oe.ARRAY_BUFFER,Y,oe.STATIC_DRAW),q&&(oe.bindBuffer(oe.ELEMENT_ARRAY_BUFFER,A._buffers.cellsBuffer),oe.bufferData(oe.ELEMENT_ARRAY_BUFFER,q,oe.STATIC_DRAW));var me=[];V&&Object.values(V).forEach(function(J){var ae=J.name,K=J.data,te=J.divisor;if(oe.bindBuffer(oe.ARRAY_BUFFER,A._buffers[ae]),oe.bufferData(oe.ARRAY_BUFFER,K,oe.STATIC_DRAW),te!=null){var w=oe.getAttribLocation(A,ae);w>=0&&(oe.enableVertexAttribArray(w),me.push(w),oe.vertexAttribDivisor?oe.vertexAttribDivisor(w,te):D.aia_ext&&D.aia_ext.vertexAttribDivisorANGLE(w,te))}}),Z&&Object.entries(Z).forEach(function(J){var ae=u()(J,2),K=ae[0],te=ae[1];D.uniforms[K]=te});var pe;if(!q){var j=A._dimension;pe=Y.length/j}if(A._enableTextures&&A._buffers.texCoordBuffer){var F=$||M(Y,A._dimension);oe.bindBuffer(oe.ARRAY_BUFFER,A._buffers.texCoordBuffer),oe.bufferData(oe.ARRAY_BUFFER,O.FLOAT(F),oe.STATIC_DRAW)}ie!=null?(q?oe.drawElementsInstanced?oe.drawElementsInstanced(ce,z,oe.UNSIGNED_SHORT,0,ie):D.aia_ext&&D.aia_ext.drawElementsInstancedANGLE(ce,z,oe.UNSIGNED_SHORT,0,ie):oe.drawArraysInstanced?oe.drawArraysInstanced(ce,0,pe,ie):D.aia_ext.drawArraysInstancedANGLE(ce,0,pe,ie),me.forEach(function(J){oe.vertexAttribDivisor?oe.vertexAttribDivisor(J,null):D.aia_ext&&D.aia_ext.vertexAttribDivisorANGLE(J,null)})):q?oe.drawElements(ce,z,oe.UNSIGNED_SHORT,0):oe.drawArrays(ce,0,pe)})}},{key:"deleteProgram",value:function(D){var A=this.gl;this.program===D&&(this.startRender=!1,this._renderFrameID&&(cancelAnimationFrame(this._renderFrameID),delete this._renderFrameID),A.useProgram(null));var L=this.programs.indexOf(D);L>=0&&this.programs.splice(L,1),R(A,D),A.deleteProgram(D)}},{key:"setMeshData",value:function(D){var A=this;Array.isArray(D)||(D=[D]);var L=this.program;L.meshData=D.map(function(U){var Y=U.mode,q=U.positions,ie=U.instanceCount,z=U.cells,V=U.cellsCount,Z=U.attributes,$=U.uniforms,ee=U.textureCoord,oe=U.enableBlend,ce={positions:O.FLOAT(q),uniforms:$,enableBlend:!!oe,textureCoord:O.FLOAT(ee)};if(z&&(ce.cells=O.USHORT(z),ce.cellsCount=V||ce.cells.length),Y!=null&&(ce.mode=Y),ie!=null){if(!A.isWebGL2&&!A.aia_ext)throw new Error("Cannot use instanceCount in this rendering context, use webgl2 context instead.");ce.instanceCount=ie}if(Z){var me={};Object.entries(Z).forEach(function(pe){var j=u()(pe,2),F=j[0],J=j[1];if(!L._attribute[F])L._attribute[F]="ignored";else if(L._attribute[F]!=="ignored"){var ae=L._attribute[F],K=ae.name,te=ae.type,w=J.data||J;if(Array.isArray(w)&&(w=O[te](w)),me[F]={name:K,data:w},J.divisor!=null){if(!A.isWebGL2&&!A.aia_ext)throw new Error("Cannot use divisor in this rendering context, use webgl2 context instead.");me[F].divisor=J.divisor}}}),ce.attributes=me}return ce}),this.options.autoUpdate&&this.update()}},{key:"createProgram",value:function(D,A){var L=this,U=/^\s*uniform\s+sampler/mg.test(D);D==null&&(D=p.default),A==null&&(A=U?m.default:T.default);var Y=this.gl,q=Object(N.createProgram)(Y,A,D);q.shaderText={vertexShader:A,fragmentShader:D},q._buffers={},q._attribute={},q.uniforms={},q._samplerMap={},q._bindTextures=[];var ie=new RegExp("(?:attribute|in) vec(\\d) ".concat(this.options.vertexPosition),"im"),z=A.match(ie);z&&(q._dimension=Number(z[1]));var V=new RegExp("(?:attribute|in) vec(\\d) ".concat(this.options.vertexTextureCoord),"im");z=A.match(V),z&&(q._texCoordSize=Number(z[1]));var Z=/^\s*(?:attribute|in) (\w+?)(\d*) (\w+)/gim;if(z=A.match(Z),z)for(var $=0;$<z.length;$++){var ee=/^\s*(?:attribute|in) (\w+?)(\d*) (\w+)/im,oe=z[$].match(ee);if(oe&&oe[3]!==this.options.vertexPosition&&oe[3]!==this.options.vertexTextureCoord){var ce=u()(oe,4),me=ce[1],pe=ce[2],j=ce[3];me==="mat"&&(pe=Math.pow(pe,2)),q._buffers[j]=Y.createBuffer(),q._attribute[j]={name:j,type:me,size:Number(pe)||1}}}var F=/^\s*uniform\s+(\w+)\s+(\w+)(\[\d+\])?/mg;z=A.match(F)||[],z=z.concat(D.match(F)||[]),z.forEach(function(ae){var K=ae.match(/^\s*uniform\s+(\w+)\s+(\w+)(\[\d+\])?/),te=K.slice(1),w=u()(te,3),I=w[0],W=w[1],G=w[2];I=P[I],G=!!G,I.indexOf("Matrix")!==0&&G&&(I+="v"),L._declareUniform(q,W,I)}),q._buffers.verticesBuffer=Y.createBuffer(),q._buffers.cellsBuffer=Y.createBuffer();var J=Y.getAttribLocation(q,this.options.vertexTextureCoord);return q._enableTextures=J>=0,q._enableTextures&&(q._buffers.texCoordBuffer=Y.createBuffer()),this.programs.push(q),q}},{key:"useProgram",value:function(D){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.startRender=!1,this._renderFrameID&&(cancelAnimationFrame(this._renderFrameID),delete this._renderFrameID);var L=this.gl;L.useProgram(D);var U=D._dimension;L.bindBuffer(L.ARRAY_BUFFER,D._buffers.verticesBuffer);var Y=L.getAttribLocation(D,this.options.vertexPosition);if(L.vertexAttribPointer(Y,U,L.FLOAT,!1,0,0),L.enableVertexAttribArray(Y),D._enableTextures){L.bindBuffer(L.ARRAY_BUFFER,D._buffers.texCoordBuffer);var q=L.getAttribLocation(D,this.options.vertexTextureCoord);L.vertexAttribPointer(q,D._texCoordSize||2,L.FLOAT,!1,0,0),L.enableVertexAttribArray(q)}if(Object.entries(D._attribute).forEach(function(V){var Z=u()(V,2),$=Z[0],ee=Z[1];if(ee!=="ignored"){var oe=ee.size,ce=A[$]||{},me=!!ce.normalize,pe=ce.type||"FLOAT",j=ce.key||$;pe==="UBYTE"&&(pe="UNSIGNED_BYTE"),pe==="USHORT"&&(pe="UNSIGNED_SHORT"),ee.type=pe,j&&j!==$&&(D._attribute[j]=ee),L.bindBuffer(L.ARRAY_BUFFER,D._buffers[$]);var F=L.getAttribLocation(D,$);F>=0&&(L.vertexAttribPointer(F,oe,L[pe],me,0,0),L.enableVertexAttribArray(F))}}),!D.meshData){var ie=[[-1,-1,0,1].slice(0,U),[1,-1,0,1].slice(0,U),[1,1,0,1].slice(0,U),[-1,1,0,1].slice(0,U)],z=[[0,1,3],[3,1,2]];this.setMeshData({positions:ie,cells:z})}return D}},{key:"compileSync",value:function(D,A){D=D||p.default;var L={};function U(z){z=z.replace(/^\s*/mg,"");var V=[],Z=z.match(/^#pragma\s+include\s+.*/mg);if(Z){for(var $=0;$<Z.length;$++){var ee=Z[$],oe=ee.match(/(?:<|")(.*)(?:>|")/);if(oe){var ce=oe[0].indexOf("<")===0?"lib":"link",me=oe[1];if(me==="graph"&&(me="graphics"),L[me])V.push("/* included ".concat(me," */"));else if(L[me]=!0,ce==="lib"){var pe=U(v[me]);V.push(pe)}else if(ce==="link")throw new Error("Cannot load external links synchronously. Use compile instead of compileSync.")}}V.forEach(function(j){z=z.replace(/^#pragma\s+include\s+.*/m,j)})}return z}var Y=U(D),q=A?U(A):null,ie=this.createProgram(Y,q);return ie}},{key:"compile",value:function(){var B=c()(o.a.mark(function A(L,U){var Y,q,ie,z,V,Z;return o.a.wrap(function(ee){for(;;)switch(ee.prev=ee.next){case 0:return ie=function(){return ie=c()(o.a.mark(function ce(me){var pe,j,F,J,ae,K,te,w,I;return o.a.wrap(function(G){for(;;)switch(G.prev=G.next){case 0:if(me=me.replace(/^\s*/mg,""),pe=[],j=me.match(/^#pragma\s+include\s+.*/mg),!j){G.next=36;break}F=0;case 5:if(!(F<j.length)){G.next=35;break}if(J=j[F],ae=J.match(/(?:<|")(.*)(?:>|")/),!ae){G.next=32;break}if(K=ae[0].indexOf("<")===0?"lib":"link",te=ae[1],te==="graph"&&(te="graphics"),Y[te]){G.next=31;break}if(Y[te]=!0,K!=="lib"){G.next=21;break}return G.next=17,q(v[te]);case 17:w=G.sent,pe.push(w),G.next=29;break;case 21:if(K!=="link"){G.next=29;break}return G.next=24,O.fetchShader(te);case 24:return I=G.sent,G.next=27,q(I);case 27:I=G.sent,pe.push(I);case 29:G.next=32;break;case 31:pe.push("/* included ".concat(te," */"));case 32:F++,G.next=5;break;case 35:pe.forEach(function(_){me=me.replace(/^#pragma\s+include\s+.*/m,_)});case 36:return G.abrupt("return",me);case 37:case"end":return G.stop()}},ce)})),ie.apply(this,arguments)},q=function(ce){return ie.apply(this,arguments)},L=L||p.default,Y={},ee.next=6,q(L);case 6:if(z=ee.sent,!U){ee.next=13;break}return ee.next=10,q(U);case 10:ee.t0=ee.sent,ee.next=14;break;case 13:ee.t0=null;case 14:return V=ee.t0,Z=this.createProgram(z,V),ee.abrupt("return",Z);case 17:case"end":return ee.stop()}},A,this)}));function D(A,L){return B.apply(this,arguments)}return D}()},{key:"load",value:function(){var B=c()(o.a.mark(function A(L){var U,Y=arguments;return o.a.wrap(function(ie){for(;;)switch(ie.prev=ie.next){case 0:return U=Y.length>1&&Y[1]!==void 0?Y[1]:null,ie.next=3,O.fetchShader(L);case 3:if(L=ie.sent,!U){ie.next=8;break}return ie.next=7,O.fetchShader(U);case 7:U=ie.sent;case 8:return ie.abrupt("return",this.compile(L,U));case 9:case"end":return ie.stop()}},A,this)}));function D(A){return B.apply(this,arguments)}return D}()},{key:"createTexture",value:function(){var D=this,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},U=L.wrapS,Y=U===void 0?this.gl.CLAMP_TO_EDGE:U,q=L.wrapT,ie=q===void 0?this.gl.CLAMP_TO_EDGE:q,z=L.minFilter,V=z===void 0?this.gl.LINEAR:z,Z=L.magFilter,$=Z===void 0?this.gl.LINEAR:Z,ee=this.gl,oe=Array.isArray(A)?ee.TEXTURE_CUBE_MAP:ee.TEXTURE_2D;this._max_texture_image_units=this._max_texture_image_units||ee.getParameter(ee.MAX_COMBINED_TEXTURE_IMAGE_UNITS),ee.activeTexture(ee.TEXTURE0+this._max_texture_image_units-1);var ce=ee.createTexture();ee.bindTexture(oe,ce),ee.pixelStorei(ee.UNPACK_FLIP_Y_WEBGL,!0);var me=this.canvas,pe=me.width,j=me.height;if(A)if(oe===ee.TEXTURE_CUBE_MAP)for(var F=0;F<6;F++)ee.texImage2D(ee.TEXTURE_CUBE_MAP_POSITIVE_X+F,0,ee.RGBA,ee.RGBA,ee.UNSIGNED_BYTE,A[F]);else ee.texImage2D(oe,0,ee.RGBA,ee.RGBA,ee.UNSIGNED_BYTE,A);else if(oe===ee.TEXTURE_CUBE_MAP)for(var J=0;J<6;J++)this.gl.texImage2D(this.gl.TEXTURE_CUBE_MAP_POSITIVE_X+J,0,ee.RGBA,pe,j,0,ee.RGBA,ee.UNSIGNED_BYTE,null);else ee.texImage2D(oe,0,ee.RGBA,pe,j,0,ee.RGBA,ee.UNSIGNED_BYTE,null);return ee.texParameteri(oe,ee.TEXTURE_MIN_FILTER,V),ee.texParameteri(oe,ee.TEXTURE_MAG_FILTER,$),ee.texParameteri(oe,ee.TEXTURE_WRAP_S,Y),ee.texParameteri(oe,ee.TEXTURE_WRAP_T,ie),oe===ee.TEXTURE_CUBE_MAP&&(A.width=A[0].width,A.height=A[0].height),ee.bindTexture(oe,null),ce._img=A||{width:pe,height:j},ce.delete=function(){D.deleteTexture(ce)},ce}},{key:"deleteTexture",value:function(D){var A=D._img;this.gl.deleteTexture(D),typeof A.close=="function"&&A.close()}},{key:"loadTexture",value:function(){var B=c()(o.a.mark(function A(L){var U,Y,q,ie,z=arguments;return o.a.wrap(function(Z){for(;;)switch(Z.prev=Z.next){case 0:return U=z.length>1&&z[1]!==void 0?z[1]:{},Y=U.useImageBitmap,q=Y===void 0?!0:Y,Z.next=3,O.loadImage(L,{useImageBitmap:q});case 3:return ie=Z.sent,Z.abrupt("return",this.createTexture(ie));case 5:case"end":return Z.stop()}},A,this)}));function D(A){return B.apply(this,arguments)}return D}()},{key:"createFBO",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=D.color,L=A===void 0?1:A,U=D.blend,Y=U===void 0?!1:U,q=D.depth,ie=q===void 0?this.options.depth!==!1:q,z=D.stencil,V=z===void 0?!!this.options.stencil:z,Z=this.gl,$=Z.createFramebuffer();Z.bindFramebuffer(Z.FRAMEBUFFER,$);for(var ee=[],oe=0;oe<L;oe++){var ce=this.createTexture();Z.framebufferTexture2D(Z.FRAMEBUFFER,Z.COLOR_ATTACHMENT0+oe,Z.TEXTURE_2D,ce,0),ee.push(ce)}$.textures=ee,$.texture=ee[0],$.blend=Y;var me=this.canvas,pe=me.width,j=me.height;return ie&&!V&&($.depthBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.depthBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.DEPTH_COMPONENT16,pe,j),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.DEPTH_ATTACHMENT,Z.RENDERBUFFER,$.depthBuffer)),V&&!ie&&($.stencilBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.stencilBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.STENCIL_INDEX8,pe,j),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.STENCIL_ATTACHMENT,Z.RENDERBUFFER,$.stencilBuffer)),ie&&V&&($.depthStencilBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.depthStencilBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.DEPTH_STENCIL,pe,j),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.DEPTH_STENCIL_ATTACHMENT,Z.RENDERBUFFER,$.depthStencilBuffer)),Z.bindFramebuffer(Z.FRAMEBUFFER,null),$}},{key:"bindFBO",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;this.fbo=D}},{key:"render",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};D.clearBuffer,this.startRender=!0;var A=this.gl,L=this.program;L||(L=this.createProgram(),this.useProgram(L)),this.fbo&&A.bindFramebuffer(A.FRAMEBUFFER,this.fbo);var U=this.options.depth;U&&A.enable(A.DEPTH_TEST),this.gl.clear(this.gl.COLOR_BUFFER_BIT|(U?this.gl.DEPTH_BUFFER_BIT:0)|(this.options.stencil?this.gl.STENCIL_BUFFER_BIT:0));var Y=this._renderFrameID;this._draw(),this.fbo&&A.bindFramebuffer(A.FRAMEBUFFER,null),this._renderFrameID===Y&&(this._renderFrameID=null)}},{key:"update",value:function(){this.startRender&&this._renderFrameID==null&&(this._renderFrameID=requestAnimationFrame(this.render.bind(this)))}},{key:"program",get:function(){var D=this.gl;return D.getParameter(D.CURRENT_PROGRAM)}},{key:"isWebGL2",get:function(){return typeof WebGL2RenderingContext<"u"&&this.gl instanceof WebGL2RenderingContext}},{key:"enableTextures",get:function(){return this.program&&this.program._enableTextures}},{key:"uniforms",get:function(){var D=this.program;if(!D||!D.uniforms)throw Error("No avaliable program.");return D.uniforms}}]),O}();C()(k,"defaultOptions",{preserveDrawingBuffer:!0,autoUpdate:!0,vertexPosition:"a_vertexPosition",vertexTextureCoord:"a_vertexTextureCoord",webgl2:!1}),C()(k,"UBYTE",k.UNSIGNED_BYTE),C()(k,"USHORT",k.UNSIGNED_SHORT),C()(k,"fetchShader",N.fetchShader),C()(k,"loadImage",N.loadImage)},function(e,r,n){e.exports=n(28)},function(e,r,n){var i=function(o){var a=Object.prototype,c=a.hasOwnProperty,l,u=typeof Symbol=="function"?Symbol:{},h=u.iterator||"@@iterator",d=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function g(z,V,Z){return Object.defineProperty(z,V,{value:Z,enumerable:!0,configurable:!0,writable:!0}),z[V]}try{g({},"")}catch{g=function(V,Z,$){return V[Z]=$}}function y(z,V,Z,$){var ee=V&&V.prototype instanceof m?V:m,oe=Object.create(ee.prototype),ce=new Y($||[]);return oe._invoke=D(z,Z,ce),oe}o.wrap=y;function S(z,V,Z){try{return{type:"normal",arg:z.call(V,Z)}}catch($){return{type:"throw",arg:$}}}var b="suspendedStart",C="suspendedYield",N="executing",T="completed",p={};function m(){}function v(){}function M(){}var R={};R[h]=function(){return this};var E=Object.getPrototypeOf,P=E&&E(E(q([])));P&&P!==a&&c.call(P,h)&&(R=P);var k=M.prototype=m.prototype=Object.create(R);v.prototype=k.constructor=M,M.constructor=v,v.displayName=g(M,f,"GeneratorFunction");function O(z){["next","throw","return"].forEach(function(V){g(z,V,function(Z){return this._invoke(V,Z)})})}o.isGeneratorFunction=function(z){var V=typeof z=="function"&&z.constructor;return V?V===v||(V.displayName||V.name)==="GeneratorFunction":!1},o.mark=function(z){return Object.setPrototypeOf?Object.setPrototypeOf(z,M):(z.__proto__=M,g(z,f,"GeneratorFunction")),z.prototype=Object.create(k),z},o.awrap=function(z){return{__await:z}};function B(z,V){function Z(oe,ce,me,pe){var j=S(z[oe],z,ce);if(j.type==="throw")pe(j.arg);else{var F=j.arg,J=F.value;return J&&typeof J=="object"&&c.call(J,"__await")?V.resolve(J.__await).then(function(ae){Z("next",ae,me,pe)},function(ae){Z("throw",ae,me,pe)}):V.resolve(J).then(function(ae){F.value=ae,me(F)},function(ae){return Z("throw",ae,me,pe)})}}var $;function ee(oe,ce){function me(){return new V(function(pe,j){Z(oe,ce,pe,j)})}return $=$?$.then(me,me):me()}this._invoke=ee}O(B.prototype),B.prototype[d]=function(){return this},o.AsyncIterator=B,o.async=function(z,V,Z,$,ee){ee===void 0&&(ee=Promise);var oe=new B(y(z,V,Z,$),ee);return o.isGeneratorFunction(V)?oe:oe.next().then(function(ce){return ce.done?ce.value:oe.next()})};function D(z,V,Z){var $=b;return function(oe,ce){if($===N)throw new Error("Generator is already running");if($===T){if(oe==="throw")throw ce;return ie()}for(Z.method=oe,Z.arg=ce;;){var me=Z.delegate;if(me){var pe=A(me,Z);if(pe){if(pe===p)continue;return pe}}if(Z.method==="next")Z.sent=Z._sent=Z.arg;else if(Z.method==="throw"){if($===b)throw $=T,Z.arg;Z.dispatchException(Z.arg)}else Z.method==="return"&&Z.abrupt("return",Z.arg);$=N;var j=S(z,V,Z);if(j.type==="normal"){if($=Z.done?T:C,j.arg===p)continue;return{value:j.arg,done:Z.done}}else j.type==="throw"&&($=T,Z.method="throw",Z.arg=j.arg)}}}function A(z,V){var Z=z.iterator[V.method];if(Z===l){if(V.delegate=null,V.method==="throw"){if(z.iterator.return&&(V.method="return",V.arg=l,A(z,V),V.method==="throw"))return p;V.method="throw",V.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var $=S(Z,z.iterator,V.arg);if($.type==="throw")return V.method="throw",V.arg=$.arg,V.delegate=null,p;var ee=$.arg;if(!ee)return V.method="throw",V.arg=new TypeError("iterator result is not an object"),V.delegate=null,p;if(ee.done)V[z.resultName]=ee.value,V.next=z.nextLoc,V.method!=="return"&&(V.method="next",V.arg=l);else return ee;return V.delegate=null,p}O(k),g(k,f,"Generator"),k[h]=function(){return this},k.toString=function(){return"[object Generator]"};function L(z){var V={tryLoc:z[0]};1 in z&&(V.catchLoc=z[1]),2 in z&&(V.finallyLoc=z[2],V.afterLoc=z[3]),this.tryEntries.push(V)}function U(z){var V=z.completion||{};V.type="normal",delete V.arg,z.completion=V}function Y(z){this.tryEntries=[{tryLoc:"root"}],z.forEach(L,this),this.reset(!0)}o.keys=function(z){var V=[];for(var Z in z)V.push(Z);return V.reverse(),function $(){for(;V.length;){var ee=V.pop();if(ee in z)return $.value=ee,$.done=!1,$}return $.done=!0,$}};function q(z){if(z){var V=z[h];if(V)return V.call(z);if(typeof z.next=="function")return z;if(!isNaN(z.length)){var Z=-1,$=function ee(){for(;++Z<z.length;)if(c.call(z,Z))return ee.value=z[Z],ee.done=!1,ee;return ee.value=l,ee.done=!0,ee};return $.next=$}}return{next:ie}}o.values=q;function ie(){return{value:l,done:!0}}return Y.prototype={constructor:Y,reset:function(z){if(this.prev=0,this.next=0,this.sent=this._sent=l,this.done=!1,this.delegate=null,this.method="next",this.arg=l,this.tryEntries.forEach(U),!z)for(var V in this)V.charAt(0)==="t"&&c.call(this,V)&&!isNaN(+V.slice(1))&&(this[V]=l)},stop:function(){this.done=!0;var z=this.tryEntries[0],V=z.completion;if(V.type==="throw")throw V.arg;return this.rval},dispatchException:function(z){if(this.done)throw z;var V=this;function Z(pe,j){return oe.type="throw",oe.arg=z,V.next=pe,j&&(V.method="next",V.arg=l),!!j}for(var $=this.tryEntries.length-1;$>=0;--$){var ee=this.tryEntries[$],oe=ee.completion;if(ee.tryLoc==="root")return Z("end");if(ee.tryLoc<=this.prev){var ce=c.call(ee,"catchLoc"),me=c.call(ee,"finallyLoc");if(ce&&me){if(this.prev<ee.catchLoc)return Z(ee.catchLoc,!0);if(this.prev<ee.finallyLoc)return Z(ee.finallyLoc)}else if(ce){if(this.prev<ee.catchLoc)return Z(ee.catchLoc,!0)}else if(me){if(this.prev<ee.finallyLoc)return Z(ee.finallyLoc)}else throw new Error("try statement without catch or finally")}}},abrupt:function(z,V){for(var Z=this.tryEntries.length-1;Z>=0;--Z){var $=this.tryEntries[Z];if($.tryLoc<=this.prev&&c.call($,"finallyLoc")&&this.prev<$.finallyLoc){var ee=$;break}}ee&&(z==="break"||z==="continue")&&ee.tryLoc<=V&&V<=ee.finallyLoc&&(ee=null);var oe=ee?ee.completion:{};return oe.type=z,oe.arg=V,ee?(this.method="next",this.next=ee.finallyLoc,p):this.complete(oe)},complete:function(z,V){if(z.type==="throw")throw z.arg;return z.type==="break"||z.type==="continue"?this.next=z.arg:z.type==="return"?(this.rval=this.arg=z.arg,this.method="return",this.next="end"):z.type==="normal"&&V&&(this.next=V),p},finish:function(z){for(var V=this.tryEntries.length-1;V>=0;--V){var Z=this.tryEntries[V];if(Z.finallyLoc===z)return this.complete(Z.completion,Z.afterLoc),U(Z),p}},catch:function(z){for(var V=this.tryEntries.length-1;V>=0;--V){var Z=this.tryEntries[V];if(Z.tryLoc===z){var $=Z.completion;if($.type==="throw"){var ee=$.arg;U(Z)}return ee}}throw new Error("illegal catch attempt")},delegateYield:function(z,V,Z){return this.delegate={iterator:q(z),resultName:V,nextLoc:Z},this.method==="next"&&(this.arg=l),p}},o}(e.exports);try{regeneratorRuntime=i}catch{Function("r","regeneratorRuntime = r")(i)}},function(e,r){function n(o,a,c,l,u,h,d){try{var f=o[h](d),g=f.value}catch(y){c(y);return}f.done?a(g):Promise.resolve(g).then(l,u)}function i(o){return function(){var a=this,c=arguments;return new Promise(function(l,u){var h=o.apply(a,c);function d(g){n(h,l,u,d,f,"next",g)}function f(g){n(h,l,u,d,f,"throw",g)}d(void 0)})}}e.exports=i},function(e,r){function n(i,o,a){return o in i?Object.defineProperty(i,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[o]=a,i}e.exports=n},function(e,r,n){n.r(r),n.d(r,"setupWebGL",function(){return d}),n.d(r,"createProgram",function(){return f}),n.d(r,"pointsToBuffer",function(){return g}),n.d(r,"loadImage",function(){return S}),n.d(r,"fetchShader",function(){return C});var i=n(27),o=n.n(i),a=n(29),c=n.n(a),l=n(32),u=n.n(l);n(1).glMatrix.setMatrixArrayType(Array);function h(T,p){for(var m=["webgl","experimental-webgl","webkit-3d","moz-webgl"],v=null,M=0;M<m.length;++M){try{v=T.getContext(m[M],p)}catch{}if(v)break}return v}function d(T,p){var m=h(T,p);if(!m)throw new Error("Sorry, your browser doesn't support WebGL.");return m}function f(T,p,m){var v=T.createShader(T.VERTEX_SHADER);if(T.shaderSource(v,p),T.compileShader(v),!T.getShaderParameter(v,T.COMPILE_STATUS)){var M="Vertex shader failed to compile. The error log is:".concat(T.getShaderInfoLog(v));throw new Error(M)}var R=T.createShader(T.FRAGMENT_SHADER);if(T.shaderSource(R,m),T.compileShader(R),!T.getShaderParameter(R,T.COMPILE_STATUS)){var E="Fragment shader failed to compile. The error log is:".concat(T.getShaderInfoLog(R));throw new Error(E)}var P=T.createProgram();if(T.attachShader(P,v),T.attachShader(P,R),T.linkProgram(P),!T.getProgramParameter(P,T.LINK_STATUS)){var k="Shader program failed to link. The error log is:".concat(T.getProgramInfoLog(P));throw new Error(k)}return T.deleteShader(v),T.deleteShader(R),P}function g(T){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Float32Array,m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;if(m&&!(m instanceof p))throw new TypeError("Wrong buffer type.");if(T==null||T instanceof p)return T;if(T[0]==null||T[0].length==null)return m?(m.set(T,0),m):new p(T);var v=T[0].length,M=T.length;m||(m=new p(v*M));for(var R=0,E=0;E<M;E++)for(var P=0;P<v;P++)m[R++]=T[E][P];return m}var y={};function S(T){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},m=p.useImageBitmap,v=m===void 0?!0:m,M=p.alias,R=M===void 0?null:M;if(!y[T]){if(typeof Image=="function"){var E=new Image;typeof T=="string"&&!((typeof location>"u"?"undefined":u()(location))==="object"&&/^file:/.test(location.href))&&!/^data:/.test(T)&&(E.crossOrigin="anonymous"),y[T]=new Promise(function(P){E.onload=function(){v&&typeof createImageBitmap=="function"?createImageBitmap(E,{imageOrientation:"flipY"}).then(function(k){y[T]=k,R&&(y[R]=k),P(k)}):(y[T]=E,R&&(y[R]=E),P(E))},E.src=T}),R&&(y[R]=y[T])}else if(typeof fetch=="function")return fetch(T,{method:"GET",mode:"cors",cache:"default"}).then(function(P){return P.blob()}).then(function(P){return createImageBitmap(P,{imageOrientation:"flipY"}).then(function(k){return y[T]=k,R&&(y[R]=k),k})})}return y[T]}var b={};function C(T){return N.apply(this,arguments)}function N(){return N=c()(o.a.mark(function T(p){var m,v;return o.a.wrap(function(R){for(;;)switch(R.prev=R.next){case 0:if(!b[p]){R.next=2;break}return R.abrupt("return",b[p]);case 2:return R.next=4,fetch(p);case 4:if(m=R.sent,!(m.status>=200&&m.status<300)){R.next=11;break}return R.next=8,m.text();case 8:return v=R.sent,b[p]=v,R.abrupt("return",v);case 11:throw new Error("Shader loaded error.");case 12:case"end":return R.stop()}},T)})),N.apply(this,arguments)}},function(e,r){function n(i){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e.exports=n=function(a){return typeof a}:e.exports=n=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},n(i)}e.exports=n},function(e,r,n){n.r(r),r.default=`attribute vec3 a_vertexPosition;
23
-
24
- void main() {
25
- gl_PointSize = 1.0;
26
- gl_Position = vec4(a_vertexPosition, 1);
27
- }`},function(e,r,n){n.r(r),r.default=`#ifdef GL_ES
28
- precision mediump float;
29
- #endif
30
-
31
- void main() {
32
- gl_FragColor = vec4(0.0, 0.0, 0.0, 0.1);
33
- }`},function(e,r,n){n.r(r),r.default=`attribute vec4 a_vertexPosition;
34
- attribute vec2 a_vertexTextureCoord;
35
- varying vec2 vTextureCoord;
36
-
37
- void main() {
38
- gl_PointSize = 1.0;
39
- gl_Position = a_vertexPosition;
40
- vTextureCoord = a_vertexTextureCoord;
41
- }`},function(e,r,n){n.r(r),n.d(r,"default",function(){return T});var i=n(19),o=n.n(i),a=n(13),c=n.n(a),l=n(27),u=n.n(l),h=n(29),d=n.n(h),f=n(23),g=n.n(f),y=n(24),S=n.n(y),b=n(37),C=n(41);n(1).glMatrix.setMatrixArrayType(Array);var N=Symbol("transform"),T=function(){function p(m,v){g()(this,p),this.context=m.getContext("2d"),this.options=v,this[N]=[1,0,0,1,0,0]}return S()(p,[{key:"createTexture",value:function(v){var M={_img:v};return M}},{key:"loadTexture",value:function(){var m=d()(u.a.mark(function M(R){var E;return u.a.wrap(function(k){for(;;)switch(k.prev=k.next){case 0:return k.next=2,b.default.loadImage(R,{useImageBitmap:!1});case 2:return E=k.sent,k.abrupt("return",this.createTexture(E));case 4:case"end":return k.stop()}},M,this)}));function v(M){return m.apply(this,arguments)}return v}()},{key:"deleteTexture",value:function(v){return v}},{key:"clear",value:function(v,M,R,E){var P=this.context;v=v||0,M=M||0,R=R||P.canvas.width-v,E=E||P.canvas.height-M,P.clearRect(v,M,R,E)}},{key:"drawMeshCloud",value:function(v){for(var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=M.clear,E=R===void 0?!1:R,P=[],k=0;k<v.amount;k++){var O=v.getTransform(k),B=v.getTextureFrame(k);B&&(B=B._img);var D=v.getFilter(k),A=v.getCloudRGBA(k),L=A.fill,U=A.stroke;P.push({mesh:v.mesh,_cloudOptions:[L,U,B,O,D]})}v.beforeRender&&v.beforeRender(this.context,v),this.drawMeshes(P,{clear:E,hook:!1}),v.afterRender&&v.afterRender(this.context,v)}},{key:"drawMeshes",value:function(v){var M=this,R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},E=R.clear,P=E===void 0?!1:E,k=R.hook,O=k===void 0?!0:k,B=this.context;P&&B.clearRect(0,0,B.canvas.width,B.canvas.height);var D=null,A=B.canvas,L=A.width,U=A.height,Y=v.length;v.forEach(function(q,ie){var z,V,Z,$,ee;if(O&&q.beforeRender&&q.beforeRender(B,q),q._cloudOptions){var oe=c()(q._cloudOptions,5);z=oe[0],V=oe[1],Z=oe[2],$=oe[3],ee=oe[4],q=q.mesh}var ce=q.filter;if(ee&&(ce=ce?"".concat(ce," ").concat(ee):ee),ce&&!M.filterBuffer&&M.filterBuffer!==!1){var me=b.default.createCanvas(L,U);me?M.filterBuffer=me.getContext("2d"):M.filterBuffer=!1}if(D&&D!==ce&&(Object(C.applyFilter)(M.filterBuffer,D),B.drawImage(M.filterBuffer.canvas,0,0,L,U),M.filterBuffer.clearRect(0,0,L,U),D=null),ce&&M.filterBuffer){var pe;M.filterBuffer.save(),(pe=M.filterBuffer).transform.apply(pe,o()(M[N])),Object(C.drawMesh2D)(q,M.filterBuffer,!1,z,V,Z,$),M.filterBuffer.restore(),ie===Y-1?(Object(C.applyFilter)(M.filterBuffer,ce),B.drawImage(M.filterBuffer.canvas,0,0,L,U),M.filterBuffer.clearRect(0,0,L,U)):D=ce}else B.save(),B.transform.apply(B,o()(M[N])),Object(C.drawMesh2D)(q,B,!1,z,V,Z,$),B.restore();O&&q.afterRender&&q.afterRender(B,q)})}},{key:"setTransform",value:function(v){this[N]=v}}]),p}()},function(e,r,n){n.r(r),(function(i){var o=n(32),a=n.n(o),c=n(19),l=n.n(c),u=n(25),h=n(39),d=n(40);n(1).glMatrix.setMatrixArrayType(Array);var f={};function g(T,p){var m=T.style,v=T.variant,M=T.weight,R=T.stretch,E=T.size,P=T.pxLineHeight,k=T.family;return R==="normal"?"".concat(m," ").concat(v," ").concat(M," ").concat(E*p,"px/").concat(P*p,"px ").concat(k):"".concat(m," ").concat(v," ").concat(M," ").concat(R," ").concat(E*p,"px/").concat(P*p,"px ").concat(k)}function y(T,p){var m=p.font,v=p.fillColor,M=p.strokeColor,R=p.strokeWidth,E=p.ratio,P=E===void 0?1:E,k=p.textCanvas,O=p.cachable,B=O===void 0?!1:O,D;if(B){D=[T,m,String(v),String(M),String(R)].join("###");var A=f[D];if(A)return A}k||(k=C(1,1));var L=k.getContext("2d");L.save(),L.font=m;var U=L.measureText(T),Y=U.width;L.restore();var q=Object(h.default)(m),ie=Math.max(q.pxLineHeight,q.pxHeight*1.13);/italic|oblique/.test(m)&&(Y+=ie*Math.tan(15*Math.PI/180)),!v&&!M&&(v="#000");var z=L.canvas,V=Math.ceil(Y),Z=Math.ceil(ie);z.width=Math.round(V*P),z.height=Math.round(Z*P),L.save(),L.font=g(q,P),L.textAlign="center",L.textBaseline="middle";var $=z.height*.5+q.pxHeight*.05*P,ee=z.width*.5;if(v){if(Array.isArray(v))v=Object(d.default)(v);else if(v.vector){var oe,ce=v,me=ce.vector,pe=ce.colors;me.length===6?oe=L.createRadialGradient.apply(L,l()(me)):oe=L.createLinearGradient.apply(L,l()(me)),pe.forEach(function(te){var w=te.offset,I=te.color;oe.addColorStop(w,I)}),v=oe}L.fillStyle=v,L.fillText(T,ee,$)}if(M){if(L.lineWidth=R*P,Array.isArray(M))M=Object(d.default)(M);else if(M.vector){var j,F=M,J=F.vector,ae=F.colors;J.length===6?j=L.createRadialGradient.apply(L,l()(J)):j=L.createLinearGradient.apply(L,l()(J)),ae.forEach(function(te){var w=te.offset,I=te.color;j.addColorStop(w,I)}),M=j}L.strokeStyle=M,L.strokeText(T,ee,$)}L.restore();var K={image:k,rect:[0,0,V,Z]};return B&&(f[D]=K),K}var S=!1;if((typeof navigator>"u"?"undefined":a()(navigator))==="object"&&typeof navigator.userAgent=="string"){var b=navigator.userAgent.toLowerCase().match(/chrome\/(\d+)/);b&&(S=Number(b[1])<70)}function C(T,p){var m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},v=m.offscreen||!S&&m.offscreen!==!1,M;return typeof i<"u"&&typeof i.createCanvas=="function"?M=i.createCanvas(T,p,m):v&&typeof OffscreenCanvas=="function"?M=new OffscreenCanvas(T,p):(M=document.createElement("canvas"),M.width=T,M.height=p),M}var N={createCanvas:C,createText:y,loadImage:u.default.loadImage};r.default=N}).call(this,n(38))},function(e,r){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch{typeof window=="object"&&(n=window)}e.exports=n},function(e,r,n){n.r(r),n.d(r,"default",function(){return b}),n(1).glMatrix.setMatrixArrayType(Array);function i(C,N){if(typeof C=="string"){var T=C.trim().match(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin|%)$/);T?C={size:parseFloat(T[1]),unit:T[2]}:C={size:parseInt(C,10),unit:"px"}}var p=C,m=p.size,v=p.unit;if(v==="pt")m/=.75;else if(v==="pc")m*=16;else if(v==="in")m*=96;else if(v==="cm")m*=96/2.54;else if(v==="mm")m*=96/25.4;else if(v==="em"||v==="rem"||v==="ex"){if(!N&&typeof getComputedStyle=="function"&&typeof document<"u"){var M=getComputedStyle(document.documentElement).fontSize;N=i(M,16)}m*=N,v==="ex"&&(m/=2)}else if(v==="q")m*=96/25.4/4;else if(v==="vw"||v==="vh"){if(typeof document<"u"){var R=v==="vw"?document.documentElement.clientWidth:document.documentElement.clientHeight;m*=R/100}}else if((v==="vmax"||v==="vmin")&&typeof document<"u"){var E=document.documentElement.clientWidth,P=document.documentElement.clientHeight;v==="vmax"?m*=Math.max(E,P)/100:m*=Math.min(E,P)/100}return m}var o="bold|bolder|lighter|[1-9]00",a="italic|oblique",c="small-caps",l="ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded",u="px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin|%",h=`'([^']+)'|"([^"]+)"|([\\w-]|[一-龥])+`,d=new RegExp("(".concat(o,") +"),"i"),f=new RegExp("(".concat(a,") +"),"i"),g=new RegExp("(".concat(c,") +"),"i"),y=new RegExp("(".concat(l,") +"),"i"),S=new RegExp("([\\d\\.]+)("+u+")(?:\\/([\\d\\.]+)("+u+"))? *((?:"+h+")( *, *(?:"+h+"))*)");function b(C,N){var T=S.exec(C);if(T){var p=parseFloat(T[3]),m={weight:"normal",style:"normal",stretch:"normal",variant:"normal",size:parseFloat(T[1]),unit:T[2],lineHeight:Number.isFinite(p)?p:void 0,lineHeightUnit:T[4],family:T[5].replace(/ *, */g,",")},v=C.substring(0,T.index),M=d.exec(v),R=f.exec(v),E=g.exec(v),P=y.exec(v);return M&&(m.weight=M[1]),R&&(m.style=R[1]),E&&(m.variant=E[1]),P&&(m.stretch=P[1]),m.pxHeight=i({size:m.size,unit:m.unit},N),m.pxLineHeight=i({size:m.lineHeight||m.size,unit:m.lineHeightUnit||m.unit},N),m}}},function(e,r,n){n.r(r),n.d(r,"default",function(){return i}),n(1).glMatrix.setMatrixArrayType(Array);function i(o){return"rgba(".concat(o.map(function(a,c){return c<3?Math.round(a*255):a}).join(),")")}},function(e,r,n){n.r(r),n.d(r,"applyFilter",function(){return h}),n.d(r,"drawMesh2D",function(){return f});var i=n(19),o=n.n(i),a=n(1),c=n(40),l=n(39),u=n(42);n(1).glMatrix.setMatrixArrayType(Array);function h(g,y){var S=g.canvas;g.save(),g.filter=y,g.drawImage(S,0,0,S.width,S.height),g.restore()}function d(g,y){var S=/rgba\((\d+),(\d+),(\d+),(\d+)\)/;g=g.match(S).slice(1,5).map(Number),y=y.match(S).slice(1,5).map(Number);for(var b=[],C=y[3],N=0;N<4;N++)b[N]=Object(u.mix)(g[N],y[N],C);return"rgba(".concat(b.join(),")")}function f(g,y){var S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,b=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,C=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null,N=arguments.length>5&&arguments[5]!==void 0?arguments[5]:null,T=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null;y.save();var p=!1,m=!1;if(y.globalAlpha=g.getOpacity(),g._updateMatrix){var v=g.transformScale/g.contours.scale;v>1.5&&g.accurate(g.transformScale)}if(g.lineWidth){var M=g.gradient&&g.gradient.stroke;if(M){var R=M,E=R.vector,P=R.colors;if(E.length===6)M=y.createRadialGradient.apply(y,o()(E));else if(E.length===4)M=y.createLinearGradient.apply(y,o()(E));else if(E.length===3)M=y.createCircularGradient.apply(y,o()(E));else throw new TypeError("Invalid vector dimension.");P.forEach(function(q){var ie=q.offset,z=q.color,V=Object(c.default)(z);C&&(V=d(V,C)),M.addColorStop(ie,V)}),y.strokeStyle=M,p=!0}else g.strokeStyle&&(C?y.strokeStyle=d(g.strokeStyle,C):y.strokeStyle=g.strokeStyle,p=!0)}p&&(y.lineWidth=g.lineWidth,y.lineJoin=g.lineJoin,y.lineCap=g.lineCap,y.miterLimit=g.miterLimit,g.lineDash&&(y.setLineDash(g.lineDash),g.lineDashOffset&&(y.lineDashOffset=g.lineDashOffset)));var k=g.gradient&&g.gradient.fill;if(k){var O=k,B=O.vector,D=O.colors;if(B.length===6)k=y.createRadialGradient.apply(y,o()(B));else if(B.length===4)k=y.createLinearGradient.apply(y,o()(B));else if(B.length===3)k=y.createCircularGradient.apply(y,o()(B));else throw new TypeError("Invalid vector dimension.");D.forEach(function(q){var ie=q.offset,z=q.color,V=Object(c.default)(z);C&&(V=d(V,C)),k.addColorStop(ie,V)}),y.fillStyle=k,m=!0}else g.fillStyle&&(b?y.fillStyle=d(g.fillStyle,b):y.fillStyle=g.fillStyle,m=!0);if(T&&y.transform.apply(y,o()(T)),y.transform.apply(y,o()(g.transformMatrix)),g.clipPath){var A=g.clipPath,L=new Path2D(A);y.clip(L)}var U=g.contours.length;if(g.contours.forEach(function(q,ie){var z=q.length,V=z>1&&a.vec2.equals(q[0],q[z-1]),Z=ie===U-1&&g.texture;if(q&&z>0){if(m||p||Z){y.beginPath(),y.moveTo.apply(y,o()(q[0]));for(var $=1;$<z;$++)$===z-1&&V?y.closePath():y.lineTo.apply(y,o()(q[$]))}if(m&&y.fill(g.fillRule),Z){y.save(),y.clip();var ee=g.texture,oe=ee.image,ce=ee.options;if(N&&(oe=N),ce.repeat&&console.warn("Context 2D not supported image repeat yet."),oe.font){ce.scale&&console.warn("Context 2D not supported text scale yet."),ce.srcRect&&console.warn("Context 2D not supported text srcRect yet.");var me=oe,pe=me.font,j=me.fillColor,F=me.strokeColor,J=me.strokeWidth,ae=me.text;!j&&!F&&(j="#000"),Array.isArray(j)&&(j=Object(c.default)(j)),Array.isArray(F)&&(F=Object(c.default)(F)),y.font=pe;var K=y.measureText(ae),te=K.width,w=Object(l.default)(pe),I=Math.max(w.pxLineHeight,w.pxHeight*1.13);y.textAlign="center",y.textBaseline="middle";var W=ce.rect,G=W[0]+I*.5+w.pxHeight*.06,_=W[1]+te*.5;W[2]!=null&&y.scale(W[2]/te,W[3]/I),j&&(y.fillStyle=j,y.fillText(ae,_,G)),F&&(y.lineWidth=J,y.strokeStyle=F,y.strokeText(ae,_,G))}else{var ne=ce.rect,re=ce.srcRect;ce.scale&&(ne=[0,0,y.canvas.width,y.canvas.height]),ce.rotated&&ne&&(ne=[-ne[1],ne[0],ne[3],ne[2]]),re&&(ne=ne||[0,0,re[2],re[3]]),ce.rotated&&(y.translate(0,ne?ne[2]:oe.width),y.rotate(-.5*Math.PI)),re?y.drawImage.apply(y,[oe].concat(o()(re),o()(ne))):ne?y.drawImage.apply(y,[oe].concat(o()(ne))):y.drawImage(oe,0,0)}y.restore()}p&&y.stroke()}}),y.restore(),S){var Y=g.filter;Y&&h(y,Y)}}},function(e,r,n){n.r(r),n.d(r,"clamp",function(){return a}),n.d(r,"mix",function(){return c}),n.d(r,"transformPoint",function(){return l});var i=n(13),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(u,h,d){if(h>d){var f=[d,h];h=f[0],d=f[1]}return u<h?h:u>d?d:u}function c(u,h,d){return u*(1-d)+h*d}function l(u,h){var d=o()(u,2),f=d[0],g=d[1];return[f*h[0]+g*h[2]+h[4],f*h[1]+g*h[3]+h[5]]}},function(e,r,n){n.r(r),n.d(r,"default",function(){return f});var i=n(27),o=n.n(i),a=n(44),c=n(45);n(1).glMatrix.setMatrixArrayType(Array);var l=o.a.mark(f);function u(g,y,S){var b=g.uniforms||{},C=y.uniforms||{};if(b.u_texSampler&&C.u_texSampler&&b.u_texSampler!==C.u_texSampler)return!1;var N=Object.keys(b),T=Object.keys(C),p=N.indexOf("u_texSampler"),m=T.indexOf("u_texSampler");if(p>=0&&N.splice(p,1),m>=0&&T.splice(m,1),N.length!==T.length)return!1;var v=N.every(function(R){var E=b[R],P=C[R];if(E===P)return!0;if(E.length&&P.length&&E.length===P.length){for(var k=0;k<E.length;k++)if(E[k]!==P[k])return!1;return!0}return!1});if(v){if(b.u_texSampler&&!C.u_texSampler)y.setTexture(b.u_texSampler,{hidden:!0});else if(!b.u_texSampler&&C.u_texSampler)for(var M=0;M<S.length;M++)S[M].setTexture(C.u_texSampler,{hidden:!0})}return v}var h={};function d(g,y){if(g.length){var S=Object(a.default)(g,h);return S.enableBlend=y,g[0].filterCanvas&&(S.filterCanvas=!0),S.packIndex=g[0].packIndex,S.packLength=g.length,S.beforeRender=g[0].beforeRender,S.pass=g[0].pass,S.afterRender=g[g.length-1].afterRender,g.length=0,S}}function f(g,y){var S,b,C,N,T,p,m,v,M,R,E,P,k=arguments;return o.a.wrap(function(B){for(;;)switch(B.prev=B.next){case 0:S=k.length>2&&k[2]!==void 0?k[2]:!1,b=[],C=g.options.bufferSize,N=0,T=!1,p=0;case 6:if(!(p<y.length)){B.next=50;break}if(m=y[p],!(m instanceof c.default)){B.next=18;break}if(!b.length){B.next=12;break}return B.next=12,d(b,T);case 12:return N=0,T=!1,B.next=16,m;case 16:B.next=47;break;case 18:if(v=m.meshData,v.clipPath&&!v.uniforms.u_clipSampler&&(M=g.createTexture(v.clipPath),v.uniforms.u_clipSampler=M),R=0,!((!S||!m.canIgnore())&&v&&v.positions.length)){B.next=43;break}if(m.packIndex=p,E=m.filterCanvas,R=v.positions.length,!(E||N+R>C)){B.next=33;break}if(!b.length){B.next=29;break}return B.next=29,d(b,T);case 29:N=0,T=!1,B.next=40;break;case 33:if(!N){B.next=40;break}if(P=b[b.length-1],!(P&&(P.filterCanvas||P.afterRender||m.beforeRender||P.pass.length||m.pass.length||P.program!==m.program||!u(P,m,b)))){B.next=40;break}return B.next=38,d(b,T);case 38:N=0,T=!1;case 40:b.push(m),T=T||m.enableBlend,N+=R;case 43:if(p!==y.length-1){B.next=47;break}if(!b.length){B.next=47;break}return B.next=47,d(b,T);case 47:p++,B.next=6;break;case 50:case"end":return B.stop()}},l)}},function(e,r,n){n.r(r),n.d(r,"default",function(){return h});var i=n(19),o=n.n(i),a=n(13),c=n.n(a);n(1).glMatrix.setMatrixArrayType(Array);var l={UNSIGNED_BYTE:Uint8Array,UNSIGNED_SHORT:Uint16Array,BYTE:Int8Array,SHORT:Int16Array,FLOAT:Float32Array};function u(d,f){for(var g=0,y=0,S=0,b=0,C=0,N=0,T=0,p=d[0].program,m=0;m<d.length;m++){var v=d[m].meshData;if(v){T+=v.positions.length;var M=v.positions[0].length;g+=v.positions.length*M,y+=v.cells.length*3,N+=v.attributes.a_color.length*4;var R=v.textureCoord;R&&(S+=R.length*R[0].length);var E=v.attributes.a_sourceRect;E&&(b+=E.length*4);var P=v.attributes.a_clipUV;P&&(C+=P.length*2)}}if((!f.positions||f.positions.length<g)&&(f.positions=new Float32Array(g)),(!f.cells||f.cells.length<y)&&(f.cells=new Uint16Array(y)),S&&(!f.textureCoord||f.textureCoord.length<S)&&(f.textureCoord=new Float32Array(S)),(!f.a_color||f.a_color.length<N)&&(f.a_color=new Uint8Array(N)),b&&(!f.a_sourceRect||f.a_sourceRect.length<b)&&(f.a_sourceRect=new Float32Array(b)),C&&(!f.a_clipUV||f.a_clipUV.length<C)&&(f.a_clipUV=new Float32Array(C)),p)for(var k=Object.entries(p._attribute),O=p._attribOpts||{},B=0;B<k.length;B++){var D=c()(k[B],2),A=D[0],L=D[1];if(A!=="a_color"&&A!=="a_sourceRect"&&L!=="ignored"){var U=O[A]?O[A].type:"FLOAT",Y=l[U],q=L.size*T;(!f[A]||f[A].length<q)&&(f[A]=new Y(q))}}return f}function h(d,f){var g=[],y=[],S=[],b=[],C=[],N=[],T=0,p=0,m=d[0]?d[0].uniforms||{}:{},v=d[0]?d[0].program:null;f&&(u(d,f),y=f.cells,g=f.positions,S=f.textureCoord,b=f.a_color,C=f.a_sourceRect,N=f.a_clipUV);for(var M=!1,R=!1,E={},P=0;P<d.length;P++){var k=d[P];if(k){if(k.meshData&&(k=k.meshData),f)for(var O=k.positions,B=0;B<O.length;B++)for(var D=O[B],A=3*(T+B),L=0;L<D.length;L++)g[A+L]=D[L];else{var U;(U=g).push.apply(U,o()(k.positions))}for(var Y=k.cells,q=0;q<Y.length;q++){var ie=Y[q];if(f){var z=3*(p+q);y[z]=ie[0]+T,y[z+1]=ie[1]+T,y[z+2]=ie[2]+T}else y.push([ie[0]+T,ie[1]+T,ie[2]+T])}if(f)for(var V=k.attributes.a_color,Z=0;Z<V.length;Z++){var $=V[Z],ee=4*(T+Z);b[ee]=$[0],b[ee+1]=$[1],b[ee+2]=$[2],b[ee+3]=$[3]}else{var oe;(oe=b).push.apply(oe,o()(k.attributes.a_color))}if(k.attributes.a_sourceRect)if(M=!0,f)for(var ce=k.attributes.a_sourceRect,me=0;me<ce.length;me++){var pe=ce[me],j=4*(T+me);C[j]=pe[0],C[j+1]=pe[1],C[j+2]=pe[2],C[j+3]=pe[3]}else{var F;(F=C).push.apply(F,o()(k.attributes.a_sourceRect))}if(k.attributes.a_clipUV)if(R=!0,f)for(var J=k.attributes.a_clipUV,ae=0;ae<J.length;ae++){var K=J[ae],te=2*(T+ae);N[te]=K[0],N[te+1]=K[1]}else{var w;(w=N).push.apply(w,o()(k.attributes.a_clipUV))}if(k.textureCoord)if(f)for(var I=k.textureCoord,W=0;W<I.length;W++)for(var G=I[W],_=3*(T+W),ne=0;ne<G.length;ne++)S[_+ne]=G[ne];else{var re;(re=S).push.apply(re,o()(k.textureCoord))}if(v)for(var X=Object.entries(v._attribute),se=0;se<X.length;se++){var ue=c()(X[se],2),de=ue[0],ge=ue[1];if(de!=="a_color"&&de!=="a_sourceRect"&&ge!=="ignored")if(E[de]=[],f){E[de]=f[de];for(var ye=k.attributes[de],Se=ye[0].length,be=0;be<ye.length;be++)for(var Ie=ye[be],Ce=Se*(T+be),Ae=0;Ae<Ie.length;Ae++)E[de][Ce+Ae]=Ie[Ae]}else{var Ee;(Ee=E[de]).push.apply(Ee,o()(k.attributes[de]))}}T+=k.positions.length,p+=k.cells.length}}E.a_color=b,M&&C&&C.length>0&&(E.a_sourceRect=C);var ke={positions:g,cells:y,attributes:E,uniforms:m,cellsCount:p*3,program:v};return S&&S.length&&(ke.textureCoord=S),R&&N.length>0&&(E.a_clipUV=N),ke}},function(e,r,n){n.r(r),n.d(r,"default",function(){return D});var i=n(30),o=n.n(i),a=n(19),c=n.n(a),l=n(13),u=n.n(l),h=n(23),d=n.n(h),f=n(24),g=n.n(f),y=n(1),S=n(46),b=n(42),C=n(47);n(1).glMatrix.setMatrixArrayType(Array);function N(A,L){var U=Object.keys(A);if(Object.getOwnPropertySymbols){var Y=Object.getOwnPropertySymbols(A);L&&(Y=Y.filter(function(q){return Object.getOwnPropertyDescriptor(A,q).enumerable})),U.push.apply(U,Y)}return U}function T(A){for(var L=1;L<arguments.length;L++){var U=arguments[L]!=null?arguments[L]:{};L%2?N(Object(U),!0).forEach(function(Y){o()(A,Y,U[Y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(U)):N(Object(U)).forEach(function(Y){Object.defineProperty(A,Y,Object.getOwnPropertyDescriptor(U,Y))})}return A}var p=Symbol("mesh"),m=Symbol("count"),v=Symbol("blend"),M=Symbol("filter"),R=Symbol("textures"),E=Symbol("textureOptions"),P=Symbol("cloudColor"),k=Symbol("cloudFilter"),O=Symbol("buffer");function B(A){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,U=new Float32Array(3*A),Y=new Float32Array(3*A),q=new Float32Array(4*A),ie=new Float32Array(4*A),z=new Float32Array(4*A),V=new Float32Array(4*A),Z=new Float32Array(4*A),$=new Uint8Array(A),ee=new Uint8Array(4*A),oe=new Uint8Array(4*A);return L&&(U.set(L.transform0,0),Y.set(L.transform1,0),q.set(L.color0,0),ie.set(L.color1,0),z.set(L.color2,0),V.set(L.color3,0),Z.set(L.color4,0),$.set(L.frameIndex,0),ee.set(L.fillColor,0),oe.set(L.strokeColor,0)),{bufferSize:A,transform0:U,transform1:Y,color0:q,color1:ie,color2:z,color3:V,color4:Z,frameIndex:$,fillColor:ee,strokeColor:oe}}var D=function(){function A(L){var U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,Y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},q=Y.buffer,ie=q===void 0?1e3:q;d()(this,A),ie=Math.max(ie,U),this[m]=U,this[p]=L,this[O]=B(ie),this[R]=[],this[M]=[],this[P]=!1,this[k]=!1,this[v]=!1,this.initBuffer()}return g()(A,[{key:"initBuffer",value:function(){for(var U=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,Y=this[m],q=U;q<Y;q++)this[O].transform0.set([1,0,0],q*3),this[O].transform1.set([0,1,0],q*3),this[O].frameIndex.set([-1],q),this[O].fillColor.set([0,0,0,0],q*4),this[O].strokeColor.set([0,0,0,0],q*4),this.setColorTransform(q,null)}},{key:"_getFilter",value:function(U){return this[M][U]=this[M][U]||[],this[M][U]}},{key:"getFilter",value:function(U){return this._getFilter(U).join(" ")}},{key:"canIgnore",value:function(){return this[p].canIgnore()}},{key:"delete",value:function(U){if(U>=this[m]||U<0)throw new Error("Out of range.");var Y=this[O],q=Y.transform0,ie=Y.transform1,z=Y.color0,V=Y.color1,Z=Y.color2,$=Y.color3,ee=Y.color4,oe=Y.frameIndex,ce=Y.fillColor,me=Y.strokeColor;q.set(q.subarray(3*(U+1)),3*U),ie.set(ie.subarray(3*(U+1)),3*U),z.set(z.subarray(4*(U+1)),4*U),V.set(V.subarray(4*(U+1)),4*U),Z.set(Z.subarray(4*(U+1)),4*U),$.set($.subarray(4*(U+1)),4*U),ee.set(ee.subarray(4*(U+1)),4*U),oe.set(oe.subarray(U+1),U),ce.set(ce.subarray(4*(U+1)),4*U),me.set(me.subarray(4*(U+1)),4*U);for(var pe in this[M])pe===U?delete this[M][pe]:pe>U&&(this[M][pe-1]=this[M][pe],delete this[M][pe]);this[m]--}},{key:"setColorTransform",value:function(U,Y){if(U>=this[m]||U<0)throw new Error("Out of range.");U*=4;var q=this[O],ie=q.color0,z=q.color1,V=q.color2,Z=q.color3,$=q.color4;return Y!=null?(ie.set([Y[0],Y[5],Y[10],Y[15]],U),z.set([Y[1],Y[6],Y[11],Y[16]],U),V.set([Y[2],Y[7],Y[12],Y[17]],U),Z.set([Y[3],Y[8],Y[13],Y[18]],U),$.set([Y[4],Y[9],Y[14],Y[19]],U),this[v]=this[v]||Y[18]<1,this[k]=!0):(ie.set([1,0,0,0],U),z.set([0,1,0,0],U),V.set([0,0,1,0],U),Z.set([0,0,0,1],U),$.set([0,0,0,0],U)),this}},{key:"getColorTransform",value:function(U){if(U>=this[m]||U<0)throw new Error("Out of range.");U*=4;var Y=this[O],q=Y.color0,ie=Y.color1,z=Y.color2,V=Y.color3,Z=Y.color4;return[q[U],ie[U],z[U],V[U],Z[U],q[U+1],ie[U+1],z[U+1],V[U+1],Z[U+1],q[U+2],ie[U+2],z[U+2],V[U+2],Z[U+2],q[U+3],ie[U+3],z[U+3],V[U+3],Z[U+3]]}},{key:"transformColor",value:function(U,Y){var q=this.getColorTransform(U);return q=Object(S.multiply)(q,Y),this.setColorTransform(U,q),this}},{key:"setFillColor",value:function(U,Y){if(U>=this[m]||U<0)throw new Error("Out of range.");typeof Y=="string"&&(Y=Object(C.default)(Y)),Y[3]>0&&(this[P]=!0),this[O].fillColor.set(Y.map(function(q){return Math.round(255*q)}),4*U)}},{key:"setStrokeColor",value:function(U,Y){if(U>=this[m]||U<0)throw new Error("Out of range.");typeof Y=="string"&&(Y=Object(C.default)(Y)),Y[3]>0&&(this[P]=!0),this[O].strokeColor.set(Y.map(function(q){return Math.round(255*q)}),4*U)}},{key:"getCloudRGBA",value:function(U){if(U>=this[m]||U<0)throw new Error("Out of range.");U*=4;var Y=this[O],q=Y.fillColor,ie=Y.strokeColor,z=[q[U],q[U+1],q[U+2],q[U+3]],V=[ie[U],ie[U+1],ie[U+2],ie[U+3]];return z[3]/=255,V[3]/=255,{fill:"rgba(".concat(z.join(),")"),stroke:"rgba(".concat(V.join(),")")}}},{key:"grayscale",value:function(U,Y){this.transformColor(U,Object(S.grayscale)(Y)),this._getFilter(U).push("grayscale(".concat(100*Y,"%)"))}},{key:"brightness",value:function(U,Y){this.transformColor(U,Object(S.brightness)(Y)),this._getFilter(U).push("brightness(".concat(100*Y,"%)"))}},{key:"saturate",value:function(U,Y){this.transformColor(U,Object(S.saturate)(Y)),this._getFilter(U).push("saturate(".concat(100*Y,"%)"))}},{key:"contrast",value:function(U,Y){this.transformColor(U,Object(S.contrast)(Y)),this._getFilter(U).push("contrast(".concat(100*Y,"%)"))}},{key:"invert",value:function(U,Y){this.transformColor(U,Object(S.invert)(Y)),this._getFilter(U).push("invert(".concat(100*Y,"%)"))}},{key:"sepia",value:function(U,Y){this.transformColor(U,Object(S.sepia)(Y)),this._getFilter(U).push("sepia(".concat(100*Y,"%)"))}},{key:"opacity",value:function(U,Y){this.transformColor(U,Object(S.opacity)(Y)),this._getFilter(U).push("opacity(".concat(100*Y,"%)"))}},{key:"hueRotate",value:function(U,Y){this.transformColor(U,Object(S.hueRotate)(Y)),this._getFilter(U).push("hue-rotate(".concat(Y,"deg)"))}},{key:"setTransform",value:function(U,Y){if(U>=this[m]||U<0)throw new Error("Out of range.");U*=3,Y==null&&(Y=[1,0,0,1,0,0]);var q=this[O],ie=q.transform0,z=q.transform1;return ie.set([Y[0],Y[2],Y[4]],U),z.set([Y[1],Y[3],Y[5]],U),this}},{key:"getTransform",value:function(U){if(U>=this[m]||U<0)throw new Error("Out of range.");U*=3;var Y=this[O],q=Y.transform0,ie=Y.transform1,z=[q[U],ie[U],q[U+1],ie[U+1],q[U+2],ie[U+2]];return z}},{key:"getTextureFrame",value:function(U){return this[R][this[O].frameIndex[U]]}},{key:"setTextureFrames",value:function(){var U=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(U.length>12)throw new Error("Max frames exceed. Allow 12 frames.");if(U.length){var q=this[p];q.setTexture(U[0],Y)}this[R]=U,this[E]=Y}},{key:"setFrameIndex",value:function(U,Y){if(U>=this[m]||U<0)throw new Error("Out of range.");var q=this[R].length;if(q<=0)throw new Error("No frames");this[O].frameIndex[U]=Y%q}},{key:"setProgram",value:function(U){this[p].setProgram(U)}},{key:"transform",value:function(U,Y){var q=this.getTransform(U);return Y=y.mat2d.multiply(Array.of(0,0,0,0,0,0),q,Y),this.setTransform(U,Y),this}},{key:"translate",value:function(U,Y){var q=u()(Y,2),ie=q[0],z=q[1],V=y.mat2d.create();return V=y.mat2d.translate(Array.of(0,0,0,0,0,0),V,[ie,z]),this.transform(U,V)}},{key:"rotate",value:function(U,Y){var q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ie=u()(q,2),z=ie[0],V=ie[1],Z=y.mat2d.create();return Z=y.mat2d.translate(Array.of(0,0,0,0,0,0),Z,[z,V]),Z=y.mat2d.rotate(Array.of(0,0,0,0,0,0),Z,Y),Z=y.mat2d.translate(Array.of(0,0,0,0,0,0),Z,[-z,-V]),this.transform(U,Z)}},{key:"scale",value:function(U,Y){var q=u()(Y,2),ie=q[0],z=q[1],V=z===void 0?ie:z,Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],$=u()(Z,2),ee=$[0],oe=$[1],ce=y.mat2d.create();return ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[ee,oe]),ce=y.mat2d.scale(Array.of(0,0,0,0,0,0),ce,[ie,V]),ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[-ee,-oe]),this.transform(U,ce)}},{key:"skew",value:function(U,Y){var q=u()(Y,2),ie=q[0],z=q[1],V=z===void 0?ie:z,Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],$=u()(Z,2),ee=$[0],oe=$[1],ce=y.mat2d.create();return ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[ee,oe]),ce=y.mat2d.multiply(Array.of(0,0,0,0,0,0),ce,y.mat2d.fromValues(1,Math.tan(V),Math.tan(ie),1,0,0)),ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[-ee,-oe]),this.transform(U,ce)}},{key:"isPointCollision",value:function(U,Y){var q,ie=u()(Y,2),z=ie[0],V=ie[1],Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"both",$=this.getTransform(U),ee=Object(b.transformPoint)([z,V],y.mat2d.invert(Array.of(0,0,0,0,0,0),$));return(q=this[p]).isPointCollision.apply(q,c()(ee).concat([Z]))}},{key:"isPointInFill",value:function(U,Y){var q=u()(Y,2),ie=q[0],z=q[1];return this.isPointCollision(U,[ie,z],"fill")}},{key:"isPointInStroke",value:function(U,Y){var q=u()(Y,2),ie=q[0],z=q[1];return this.isPointCollision(U,[ie,z],"stroke")}},{key:"bufferSize",get:function(){return this[O].bufferSize}},{key:"mesh",get:function(){return this[p]},set:function(U){this[p]=U,this[R]&&this.setTextureFrames(this[R],this[E])}},{key:"hasCloudColor",get:function(){return this[P]}},{key:"hasCloudFilter",get:function(){return this[k]}},{key:"enableBlend",get:function(){return this[p].enableBlend||this[v]}},{key:"amount",get:function(){return this[m]},set:function(U){var Y=this[m];U!==Y&&(U>this[O].bufferSize&&(this[O]=B(Math.max(U,this[O].bufferSize+1e3),this[O])),this[m]=U,U>Y&&this.initBuffer(Y))}},{key:"meshData",get:function(){var U=this[p].meshData,Y=U.attributes,q=U.cells,ie=U.positions,z=U.textureCoord,V=U.uniforms,Z=this[R],$={attributes:T({},Y),cells:q,positions:ie,textureCoord:z,uniforms:T({},V),instanceCount:this[m],enableBlend:this.enableBlend};Z.length&&Z.forEach(function(w,I){$.uniforms["u_texFrame".concat(I)]=w});var ee=this[O],oe=ee.transform0,ce=ee.transform1,me=ee.color0,pe=ee.color1,j=ee.color2,F=ee.color3,J=ee.color4,ae=ee.fillColor,K=ee.strokeColor,te=ee.frameIndex;return this[p].uniforms.u_texSampler&&($.attributes.a_frameIndex={data:te,divisor:1}),$.attributes.a_transform0={data:oe,divisor:1},$.attributes.a_transform1={data:ce,divisor:1},$.attributes.a_colorCloud0={data:me,divisor:1},$.attributes.a_colorCloud1={data:pe,divisor:1},$.attributes.a_colorCloud2={data:j,divisor:1},$.attributes.a_colorCloud3={data:F,divisor:1},$.attributes.a_colorCloud4={data:J,divisor:1},this.hasCloudColor&&($.attributes.a_fillCloudColor={data:ae,divisor:1},$.attributes.a_strokeCloudColor={data:K,divisor:1}),$}},{key:"program",get:function(){return this[p].program}}]),A}()},function(e,r,n){n.r(r),n.d(r,"multiply",function(){return o}),n.d(r,"grayscale",function(){return a}),n.d(r,"brightness",function(){return c}),n.d(r,"saturate",function(){return l}),n.d(r,"contrast",function(){return u}),n.d(r,"invert",function(){return h}),n.d(r,"sepia",function(){return d}),n.d(r,"opacity",function(){return f}),n.d(r,"hueRotate",function(){return g});var i=n(42);n(1).glMatrix.setMatrixArrayType(Array);function o(y,S){var b=[],C=y[0],N=y[1],T=y[2],p=y[3],m=y[4],v=y[5],M=y[6],R=y[7],E=y[8],P=y[9],k=y[10],O=y[11],B=y[12],D=y[13],A=y[14],L=y[15],U=y[16],Y=y[17],q=y[18],ie=y[19],z=S[0],V=S[1],Z=S[2],$=S[3],ee=S[4];return b[0]=z*C+V*v+Z*k+$*L,b[1]=z*N+V*M+Z*O+$*U,b[2]=z*T+V*R+Z*B+$*Y,b[3]=z*p+V*E+Z*D+$*q,b[4]=z*m+V*P+Z*A+$*ie+ee,z=S[5],V=S[6],Z=S[7],$=S[8],ee=S[9],b[5]=z*C+V*v+Z*k+$*L,b[6]=z*N+V*M+Z*O+$*U,b[7]=z*T+V*R+Z*B+$*Y,b[8]=z*p+V*E+Z*D+$*q,b[9]=z*m+V*P+Z*A+$*ie+ee,z=S[10],V=S[11],Z=S[12],$=S[13],ee=S[14],b[10]=z*C+V*v+Z*k+$*L,b[11]=z*N+V*M+Z*O+$*U,b[12]=z*T+V*R+Z*B+$*Y,b[13]=z*p+V*E+Z*D+$*q,b[14]=z*m+V*P+Z*A+$*ie+ee,z=S[15],V=S[16],Z=S[17],$=S[18],ee=S[19],b[15]=z*C+V*v+Z*k+$*L,b[16]=z*N+V*M+Z*O+$*U,b[17]=z*T+V*R+Z*B+$*Y,b[18]=z*p+V*E+Z*D+$*q,b[19]=z*m+V*P+Z*A+$*ie+ee,b}function a(y){y=Object(i.clamp)(0,1,y);var S=.2126*y,b=.7152*y,C=.0722*y;return[S+1-y,b,C,0,0,S,b+1-y,C,0,0,S,b,C+1-y,0,0,0,0,0,1,0]}function c(y){return[y,0,0,0,0,0,y,0,0,0,0,0,y,0,0,0,0,0,1,0]}function l(y){var S=.2126*(1-y),b=.7152*(1-y),C=.0722*(1-y);return[S+y,b,C,0,0,S,b+y,C,0,0,S,b,C+y,0,0,0,0,0,1,0]}function u(y){var S=.5*(1-y);return[y,0,0,0,S,0,y,0,0,S,0,0,y,0,S,0,0,0,1,0]}function h(y){var S=1-2*y;return[S,0,0,0,y,0,S,0,0,y,0,0,S,0,y,0,0,0,1,0]}function d(y){return[1-.607*y,.769*y,.189*y,0,0,.349*y,1-.314*y,.168*y,0,0,.272*y,.534*y,1-.869*y,0,0,0,0,0,1,0]}function f(y){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,y,0]}function g(y){var S=y/180*Math.PI,b=Math.cos(S),C=Math.sin(S),N=.2126,T=.7152,p=.0722;return[N+b*(1-N)+C*-N,T+b*-T+C*-T,p+b*-p+C*(1-p),0,0,N+b*-N+C*.143,T+b*(1-T)+C*.14,p+b*-p+C*-.283,0,0,N+b*-N+C*-.7874,T+b*-T+C*T,p+b*(1-p)+C*p,0,0,0,0,0,1,0]}},function(e,r,n){n.r(r),n.d(r,"default",function(){return a});var i=n(48),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(c){var l=o()(c);if(!l||!l.length)throw new TypeError("Invalid color value.");return[l[0]/255,l[1]/255,l[2]/255,l[3]]}},function(e,r,n){var i=n(49),o=n(53),a=n(55);e.exports=function(l){var u,h=i(l);return h.space?(u=Array(3),u[0]=a(h.values[0],0,255),u[1]=a(h.values[1],0,255),u[2]=a(h.values[2],0,255),h.space[0]==="h"&&(u=o.rgb(u)),u.push(a(h.alpha,0,1)),u):[]}},function(e,r,n){(function(i){var o=n(50),a=n(51),c=n(52);e.exports=u;var l={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function u(h){var d,f=[],g=1,y;if(typeof h=="string")if(o[h])f=o[h].slice(),y="rgb";else if(h==="transparent")g=0,y="rgb",f=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(h)){var S=h.slice(1),b=S.length,C=b<=4;g=1,C?(f=[parseInt(S[0]+S[0],16),parseInt(S[1]+S[1],16),parseInt(S[2]+S[2],16)],b===4&&(g=parseInt(S[3]+S[3],16)/255)):(f=[parseInt(S[0]+S[1],16),parseInt(S[2]+S[3],16),parseInt(S[4]+S[5],16)],b===8&&(g=parseInt(S[6]+S[7],16)/255)),f[0]||(f[0]=0),f[1]||(f[1]=0),f[2]||(f[2]=0),y="rgb"}else if(d=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(h)){var N=d[1],T=N==="rgb",S=N.replace(/a$/,"");y=S;var b=S==="cmyk"?4:S==="gray"?1:3;f=d[2].trim().split(/\s*,\s*/).map(function(M,R){if(/%$/.test(M))return R===b?parseFloat(M)/100:S==="rgb"?parseFloat(M)*255/100:parseFloat(M);if(S[R]==="h"){if(/deg$/.test(M))return parseFloat(M);if(l[M]!==void 0)return l[M]}return parseFloat(M)}),N===S&&f.push(1),g=T||f[b]===void 0?1:f[b],f=f.slice(0,b)}else h.length>10&&/[0-9](?:\s|\/)/.test(h)&&(f=h.match(/([0-9]+)/g).map(function(m){return parseFloat(m)}),y=h.match(/([a-z])/ig).join("").toLowerCase());else if(!isNaN(h))y="rgb",f=[h>>>16,(h&65280)>>>8,h&255];else if(a(h)){var p=c(h.r,h.red,h.R,null);p!==null?(y="rgb",f=[p,c(h.g,h.green,h.G),c(h.b,h.blue,h.B)]):(y="hsl",f=[c(h.h,h.hue,h.H),c(h.s,h.saturation,h.S),c(h.l,h.lightness,h.L,h.b,h.brightness)]),g=c(h.a,h.alpha,h.opacity,1),h.opacity!=null&&(g/=100)}else(Array.isArray(h)||i.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(h))&&(f=[h[0],h[1],h[2]],y="rgb",g=h.length===4?h[3]:1);return{space:y,values:f,alpha:g}}}).call(this,n(38))},function(e,r,n){e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,r,n){var i=Object.prototype.toString;e.exports=function(o){var a;return i.call(o)==="[object Object]"&&(a=Object.getPrototypeOf(o),a===null||a===Object.getPrototypeOf({}))}},function(e,r){e.exports=function(){for(var n=0;n<arguments.length;n++)if(arguments[n]!==void 0)return arguments[n]}},function(e,r,n){var i=n(54);e.exports={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(o){var a=o[0]/360,c=o[1]/100,l=o[2]/100,u,h,d,f,g;if(c===0)return g=l*255,[g,g,g];l<.5?h=l*(1+c):h=l+c-l*c,u=2*l-h,f=[0,0,0];for(var y=0;y<3;y++)d=a+1/3*-(y-1),d<0?d++:d>1&&d--,6*d<1?g=u+(h-u)*6*d:2*d<1?g=h:3*d<2?g=u+(h-u)*(2/3-d)*6:g=u,f[y]=g*255;return f}},i.hsl=function(o){var a=o[0]/255,c=o[1]/255,l=o[2]/255,u=Math.min(a,c,l),h=Math.max(a,c,l),d=h-u,f,g,y;return h===u?f=0:a===h?f=(c-l)/d:c===h?f=2+(l-a)/d:l===h&&(f=4+(a-c)/d),f=Math.min(f*60,360),f<0&&(f+=360),y=(u+h)/2,h===u?g=0:y<=.5?g=d/(h+u):g=d/(2-h-u),[f,g*100,y*100]}},function(e,r,n){e.exports={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}},function(e,r){e.exports=n;function n(i,o,a){return o<a?i<o?o:i>a?a:i:i<a?a:i>o?o:i}},function(e,r,n){n.r(r),n.d(r,"default",function(){return O});var i=n(19),o=n.n(i),a=n(57),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(58),g=n.n(f),y=n(59),S=n.n(y),b=n(60),C=n.n(b),N=n(61),T=n(63),p=n.n(T),m=n(70),v=n(72);n(1).glMatrix.setMatrixArrayType(Array);var M=Symbol("contours"),R=Symbol("path"),E=Symbol("simplify"),P=Symbol("scale"),k=2*Math.PI,O=function(){function B(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};u()(this,B),typeof D=="string"&&(D={path:D}),D.path?this[R]=g()(D.path):this[R]=[],this[M]=null,this[E]=D.simplify!=null?D.simplify:0,this[P]=D.scale!=null?D.scale:2}return d()(B,[{key:"normalize",value:function(){var A,L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,Y=Object(N.default)(C()(this[R])).map(function(q){for(var ie=c()(q),z=ie[0],V=ie.slice(1),Z=[z],$=0;$<V.length;$+=2){var ee=V[$]-L,oe=V[$+1]-U;Z.push(ee,oe)}return Z});return this.beginPath(),(A=this[R]).push.apply(A,o()(Y)),this}},{key:"getPointAtLength",value:function(A){return this.contours?Object(m.getPointAtLength)(this[M],A):null}},{key:"getTotalLength",value:function(){return this.contours?Object(m.getTotalLength)(this[M]):0}},{key:"addPath",value:function(A){var L;this[M]=null,typeof A=="string"&&(A=g()(A)),(L=this[R]).push.apply(L,o()(A))}},{key:"beginPath",value:function(){this[R]=[],this[M]=null}},{key:"clear",value:function(){this.beginPath()}},{key:"ellipse",value:function(A,L,U,Y,q,ie,z){var V=arguments.length>7&&arguments[7]!==void 0?arguments[7]:0;if(ie+=q,z+=q,!(U<=0||Y<=0||z===ie)){z<ie&&(z=ie+k+(z-ie)%k),z-ie>k&&(z=ie+k);var Z=z-ie;Z>=k&&(z-=.001);var $=this[R].length>0&&Z<k?"L":"M",ee=Object(v.getPoint)(A,L,U,Y,ie),oe=Object(v.getPoint)(A,L,U,Y,z),ce=+!V,me=Z>Math.PI?1:0;V&&(me=1-me),$+=ee.join(" "),$+="A".concat(U," ").concat(Y," 0 ").concat(me," ").concat(ce," ").concat(oe.join(" ")),Z>=k&&($+="Z"),this.addPath($)}}},{key:"arc",value:function(A,L,U,Y,q){var ie=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;return this.ellipse(A,L,U,U,0,Y,q,ie)}},{key:"arcTo",value:function(A,L,U,Y,q,ie,z){this[M]=null,this[R].push(["A",A,L,U,Y,q,ie,z])}},{key:"moveTo",value:function(A,L){this[M]=null,this[R].push(["M",A,L])}},{key:"lineTo",value:function(A,L){this[M]=null,this[R].push(["L",A,L])}},{key:"bezierCurveTo",value:function(A,L,U,Y,q,ie){this[M]=null,this[R].push(["C",A,L,U,Y,q,ie])}},{key:"quadraticCurveTo",value:function(A,L,U,Y){this[M]=null,this[R].push(["Q",A,L,U,Y])}},{key:"rect",value:function(A,L,U,Y){var q="M".concat(A," ").concat(L,"L").concat(A+U," ").concat(L,"L").concat(A+U," ").concat(L+Y,"L").concat(A," ").concat(L+Y,"Z");this.addPath(q)}},{key:"closePath",value:function(){this[M]=null;var A=[],L=this[R].length;L>0&&(A=this[R][L-1]),A[0]!=="Z"&&A[0]!=="z"&&this[R].push(["Z"])}},{key:"contours",get:function(){var A=null;if(!this[M]&&this[R]){var L=Object(N.default)(C()(this[R]));this[M]=p()(L,this[P],this[E]),this[M].path=L,this[M].simplify=this[E],this[M].scale=this[P]}return this[M]&&(A=this[M].map(function(U){return o()(U)}),A.path=this[M].path,A.simplify=this[M].simplify,A.scale=this[M].scale),A}},{key:"path",get:function(){return this[R]}},{key:"simplify",get:function(){return this[E]}},{key:"boundingBox",get:function(){var A=this.contours;if(A&&A.length){var L=A.reduce(function(U,Y){return[].concat(o()(U),o()(Y))});return S()(L)}return[[0,0],[0,0]]}},{key:"boundingCenter",get:function(){var A=this.boundingBox;return A?[.5*(A[0][0]+A[1][0]),.5*(A[0][1]+A[1][1])]:[0,0]}}]),B}()},function(e,r,n){var i=n(14),o=n(21),a=n(16),c=n(18);function l(u){return i(u)||o(u)||a(u)||c()}e.exports=l},function(e,r){e.exports=o;var n={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function o(l){var u=[];return l.replace(i,function(h,d,f){var g=d.toLowerCase();for(f=c(f),g=="m"&&f.length>2&&(u.push([d].concat(f.splice(0,2))),g="l",d=d=="m"?"l":"L");;){if(f.length==n[g])return f.unshift(d),u.push(f);if(f.length<n[g])throw new Error("malformed path data");u.push([d].concat(f.splice(0,n[g])))}}),u}var a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function c(l){var u=l.match(a);return u?u.map(Number):[]}},function(e,r,n){e.exports=i;function i(o){var a=o.length;if(a===0)return[[],[]];for(var c=o[0].length,l=o[0].slice(),u=o[0].slice(),h=1;h<a;++h)for(var d=o[h],f=0;f<c;++f){var g=d[f];l[f]=Math.min(l[f],g),u[f]=Math.max(u[f],g)}return[l,u]}},function(e,r){e.exports=n;function n(i){var o=0,a=0,c=0,l=0;return i.map(function(u){u=u.slice();var h=u[0],d=h.toUpperCase();if(h!=d)switch(u[0]=d,h){case"a":u[6]+=c,u[7]+=l;break;case"v":u[1]+=l;break;case"h":u[1]+=c;break;default:for(var f=1;f<u.length;)u[f++]+=c,u[f++]+=l}switch(d){case"Z":c=o,l=a;break;case"H":c=u[1];break;case"V":l=u[1];break;case"M":c=o=u[1],l=a=u[2];break;default:c=u[u.length-2],l=u[u.length-1]}return u})}},function(e,r,n){n.r(r),n.d(r,"default",function(){return c});var i=n(13),o=n.n(i),a=n(62);n(1).glMatrix.setMatrixArrayType(Array);function c(h){for(var d,f=[],g=0,y=0,S=0,b=0,C=null,N=null,T=0,p=0,m=0,v=h.length;m<v;m++){var M=h[m],R=M[0];switch(R){case"M":S=M[1],b=M[2];break;case"A":var E=Object(a.default)(T,p,M[6],M[7],M[4],M[5],M[1],M[2],M[3]);if(!E.length)continue;E=E.map(function(D){var A=o()(D,8);A[0],A[1];var L=A[2],U=A[3],Y=A[4],q=A[5],ie=A[6],z=A[7];return{x1:L,y1:U,x2:Y,y2:q,x:ie,y:z}});for(var P=0,k;P<E.length;P++)k=E[P],M=["C",k.x1,k.y1,k.x2,k.y2,k.x,k.y],P<E.length-1&&f.push(M);break;case"S":var O=T,B=p;(d=="C"||d=="S")&&(O+=O-g,B+=B-y),M=["C",O,B,M[1],M[2],M[3],M[4]];break;case"T":d=="Q"||d=="T"?(C=T*2-C,N=p*2-N):(C=T,N=p),M=u(T,p,C,N,M[1],M[2]);break;case"Q":C=M[1],N=M[2],M=u(T,p,M[1],M[2],M[3],M[4]);break;case"L":M=l(T,p,M[1],M[2]);break;case"H":M=l(T,p,M[1],p);break;case"V":M=l(T,p,T,M[1]);break;case"Z":M=l(T,p,S,b);break}d=R,T=M[M.length-2],p=M[M.length-1],M.length>4?(g=M[M.length-4],y=M[M.length-3]):(g=T,y=p),f.push(M)}return f}function l(h,d,f,g){return["C",h,d,f,g,f,g]}function u(h,d,f,g,y,S){return["C",h/3+2/3*f,d/3+2/3*g,y/3+2/3*f,S/3+2/3*g,y,S]}},function(e,r,n){n.r(r),n.d(r,"default",function(){return l}),n(1).glMatrix.setMatrixArrayType(Array);var i=Math.PI*2;function o(u,h,d,f){var g=u*f-h*d<0?-1:1,y=u*d+h*f;return y>1&&(y=1),y<-1&&(y=-1),g*Math.acos(y)}function a(u,h,d,f,g,y,S,b,C,N){var T=N*(u-d)/2+C*(h-f)/2,p=-C*(u-d)/2+N*(h-f)/2,m=S*S,v=b*b,M=T*T,R=p*p,E=m*v-m*R-v*M;E<0&&(E=0),E/=m*R+v*M,E=Math.sqrt(E)*(g===y?-1:1);var P=E*S/b*p,k=E*-b/S*T,O=N*P-C*k+(u+d)/2,B=C*P+N*k+(h+f)/2,D=(T-P)/S,A=(p-k)/b,L=(-T-P)/S,U=(-p-k)/b,Y=o(1,0,D,A),q=o(D,A,L,U);return y===0&&q>0&&(q-=i),y===1&&q<0&&(q+=i),[O,B,Y,q]}function c(u,h){var d=1.3333333333333333*Math.tan(h/4),f=Math.cos(u),g=Math.sin(u),y=Math.cos(u+h),S=Math.sin(u+h);return[f,g,f-g*d,g+f*d,y+S*d,S-y*d,y,S]}function l(u,h,d,f,g,y,S,b,C){var N=Math.sin(C*i/360),T=Math.cos(C*i/360),p=T*(u-d)/2+N*(h-f)/2,m=-N*(u-d)/2+T*(h-f)/2;if(p===0&&m===0)return[];if(S===0||b===0)return[];S=Math.abs(S),b=Math.abs(b);var v=p*p/(S*S)+m*m/(b*b);v>1&&(S*=Math.sqrt(v),b*=Math.sqrt(v));var M=a(u,h,d,f,g,y,S,b,N,T),R=[],E=M[2],P=M[3],k=Math.max(Math.ceil(Math.abs(P)/(i/4)),1);P/=k;for(var O=0;O<k;O++)R.push(c(E,P)),E+=P;return R.map(function(B){for(var D=0;D<B.length;D+=2){var A=B[D+0],L=B[D+1];A*=S,L*=b;var U=T*A-N*L,Y=N*A+T*L;B[D+0]=U+M[0],B[D+1]=Y+M[1]}return B})}},function(e,r,n){n(1).glMatrix.setMatrixArrayType(Array);var i=n(64),o=n(66),a=o.copy,c=n(67);function l(g,y,S){return g[0]=y,g[1]=S,g}var u=[0,0],h=[0,0],d=[0,0];function f(g,y,S,b){i(S,l(u,b[1],b[2]),l(h,b[3],b[4]),l(d,b[5],b[6]),y,g)}e.exports=function(y,S,b){var C=[],N=[],T=[0,0];return y.forEach(function(p,m,v){if(p[0]==="M")a(T,p.slice(1)),N.length>0&&(C.push(N),N=[]);else if(p[0]==="C")f(N,S,T,p),l(T,p[5],p[6]);else throw new Error("illegal type in SVG: "+p[0])}),N.length>0&&C.push(N),C.map(function(p){return c(p,b||0)})}},function(e,r,n){e.exports=n(65)()},function(e,r){function n(o){return[o[0],o[1]]}function i(o,a){return[o,a]}e.exports=function(a){a=a||{};var c=typeof a.recursion=="number"?a.recursion:8,l=typeof a.epsilon=="number"?a.epsilon:11920929e-14,u=typeof a.pathEpsilon=="number"?a.pathEpsilon:1,h=typeof a.angleEpsilon=="number"?a.angleEpsilon:.01,d=a.angleTolerance||0,f=a.cuspLimit||0;return function(b,C,N,T,p,m){m||(m=[]),p=typeof p=="number"?p:1;var v=u/p;return v*=v,g(b,C,N,T,m,v),m};function g(S,b,C,N,T,p){T.push(n(S));var m=S[0],v=S[1],M=b[0],R=b[1],E=C[0],P=C[1],k=N[0],O=N[1];y(m,v,M,R,E,P,k,O,T,p,0),T.push(n(N))}function y(S,b,C,N,T,p,m,v,M,R,E){if(!(E>c)){var P=Math.PI,k=(S+C)/2,O=(b+N)/2,B=(C+T)/2,D=(N+p)/2,A=(T+m)/2,L=(p+v)/2,U=(k+B)/2,Y=(O+D)/2,q=(B+A)/2,ie=(D+L)/2,z=(U+q)/2,V=(Y+ie)/2;if(E>0){var Z=m-S,$=v-b,ee=Math.abs((C-m)*$-(N-v)*Z),oe=Math.abs((T-m)*$-(p-v)*Z),ce,me;if(ee>l&&oe>l){if((ee+oe)*(ee+oe)<=R*(Z*Z+$*$)){if(d<h){M.push(i(z,V));return}var pe=Math.atan2(p-N,T-C);if(ce=Math.abs(pe-Math.atan2(N-b,C-S)),me=Math.abs(Math.atan2(v-p,m-T)-pe),ce>=P&&(ce=2*P-ce),me>=P&&(me=2*P-me),ce+me<d){M.push(i(z,V));return}if(f!==0){if(ce>f){M.push(i(C,N));return}if(me>f){M.push(i(T,p));return}}}}else if(ee>l){if(ee*ee<=R*(Z*Z+$*$)){if(d<h){M.push(i(z,V));return}if(ce=Math.abs(Math.atan2(p-N,T-C)-Math.atan2(N-b,C-S)),ce>=P&&(ce=2*P-ce),ce<d){M.push(i(C,N)),M.push(i(T,p));return}if(f!==0&&ce>f){M.push(i(C,N));return}}}else if(oe>l){if(oe*oe<=R*(Z*Z+$*$)){if(d<h){M.push(i(z,V));return}if(ce=Math.abs(Math.atan2(v-p,m-T)-Math.atan2(p-N,T-C)),ce>=P&&(ce=2*P-ce),ce<d){M.push(i(C,N)),M.push(i(T,p));return}if(f!==0&&ce>f){M.push(i(T,p));return}}}else if(Z=z-(S+m)/2,$=V-(b+v)/2,Z*Z+$*$<=R){M.push(i(z,V));return}}y(S,b,k,O,U,Y,z,V,M,R,E+1),y(z,V,q,ie,A,L,m,v,M,R,E+1)}}}},function(e,r,n){n.r(r),n.d(r,"create",function(){return a}),n.d(r,"clone",function(){return o}),n.d(r,"copy",function(){return c}),n.d(r,"scaleAndAdd",function(){return l}),n.d(r,"dot",function(){return u}),n.d(r,"rotate",function(){return h}),n.d(r,"cross",function(){return d}),n.d(r,"sub",function(){return f}),n.d(r,"add",function(){return g}),n.d(r,"computeMiter",function(){return C}),n.d(r,"normal",function(){return N}),n.d(r,"direction",function(){return T});var i=n(1);n(1).glMatrix.setMatrixArrayType(Array);function o(p){return[p[0],p[1]]}function a(){return[0,0]}var c=i.vec2.copy,l=i.vec2.scaleAndAdd,u=i.vec2.dot,h=i.vec2.rotate,d=i.vec2.cross,f=i.vec2.sub,g=i.vec2.add,y=i.vec2.normalize,S=i.vec2.set,b=a();function C(p,m,v,M,R){g(p,v,M),y(p,p),S(m,-p[1],p[0]),S(b,-v[1],v[0]);var E=R/u(m,b);return Math.abs(E)}function N(p,m){return S(p,-m[1],m[0]),p}function T(p,m,v){return f(p,m,v),y(p,p),p}},function(e,r,n){var i=n(68),o=n(69);e.exports=function(c,l){return c=i(c,l),c=o(c,l),c},e.exports.radialDistance=i,e.exports.douglasPeucker=o},function(e,r){function n(i,o){var a=i[0]-o[0],c=i[1]-o[1];return a*a+c*c}e.exports=function(o,a){if(o.length<=1)return o;a=typeof a=="number"?a:1;for(var c=a*a,l=o[0],u=[l],h,d=1,f=o.length;d<f;d++)h=o[d],n(h,l)>c&&(u.push(h),l=h);return l!==h&&u.push(h),u}},function(e,r){function n(o,a,c){var l=a[0],u=a[1],h=c[0]-l,d=c[1]-u;if(h!==0||d!==0){var f=((o[0]-l)*h+(o[1]-u)*d)/(h*h+d*d);f>1?(l=c[0],u=c[1]):f>0&&(l+=h*f,u+=d*f)}return h=o[0]-l,d=o[1]-u,h*h+d*d}function i(o,a,c,l,u){for(var h=l,d,f=a+1;f<c;f++){var g=n(o[f],o[a],o[c]);g>h&&(d=f,h=g)}h>l&&(d-a>1&&i(o,a,d,l,u),u.push(o[d]),c-d>1&&i(o,d,c,l,u))}e.exports=function(a,c){if(a.length<=1)return a;c=typeof c=="number"?c:1;var l=c*c,u=a.length-1,h=[a[0]];return i(a,0,u,l,h),h.push(a[u]),h}},function(e,r,n){n.r(r),n.d(r,"getTotalLength",function(){return c}),n.d(r,"getPointAtLength",function(){return u}),n.d(r,"getDashContours",function(){return h});var i=n(19),o=n.n(i),a=n(71);n(1).glMatrix.setMatrixArrayType(Array);function c(d){if(d.totalLength!=null)return d.totalLength;var f=0;return d.forEach(function(g){for(var y=g[0],S=1;S<g.length;S++){var b=g[S];f+=Object(a.distance)(y,b),y=b}}),d.totalLength=f,f}function l(d,f){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(f=Number(f),!Number.isFinite(f))throw new TypeError("Failed to execute 'getPointAtLength' on figure: The provided float value is non-finite.");if(f<=0)throw new TypeError("Length must > 0");var y=c(d);if(f>=y){var S=d[d.length-1],b=S[S.length-2],C=S[S.length-1],N=Math.atan2(C[1]-b[1],C[0]-b[0]);return{current:d.map(function(A){return o()(A)}),point:{x:C[0],y:C[1],angle:N}}}for(var T=[],p=0;p<d.length;p++){T[p]=[];for(var m=d[p],v=m[0],M=1;M<m.length;M++){var R=m[M],E=Object(a.distance)(v,R);if(f<E){var P=f/E,k=Math.atan2(R[1]-v[1],R[0]-v[0]),O={x:v[0]*(1-P)+R[0]*P,y:v[1]*(1-P)+R[1]*P,angle:k};if(T[p].push(v),f>0&&T[p].push([O.x,O.y]),!g)return{current:T,point:O};for(var B=[],D=p;p<d.length;p++){for(B[p-D]=[],p===D&&B[0].push([O.x,O.y]);M<m.length;M++)B[p-D].push(m[M]);M=0}return{current:T,point:O,rest:B}}f-=E,T[p].push(v),v=R}}}function u(d,f){if(f=Number(f),!Number.isFinite(f))throw new TypeError("Failed to execute 'getPointAtLength' on figure: The provided float value is non-finite.");if(d.length<=0)return{x:0,y:0,angle:0};if(f<=0){var g=d[0][0],y=d[0][1],S=Math.atan2(y[1]-g[1],y[0]-g[0]);return{x:g[0],y:g[1],angle:S}}return l(d,f,!1).point}function h(d,f,g){var y=0,S=f[0],b=d,C=[],N=f.length;if(g>0){do g-=f[y%N],y++;while(g>0);g<0&&(S=-g,y--)}else if(g<0){y=-1;do g+=f[y%N+N-1],y--;while(g<0);g>=0&&(y++,S=f[y%N+N-1]-g)}do{var T=l(b,S);b=T.rest,++y%2&&C.push.apply(C,o()(T.current));var p=y%N;p<0&&(p+=N),S=f[p]}while(b);return C}},function(e,r,n){n.r(r),n.d(r,"normalize",function(){return a}),n.d(r,"distance",function(){return c});var i=n(13),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(l,u,h,d){var f=o()(l,3),g=f[0],y=f[1],S=f[2];return g=g*2/u-1,y=1-y*2/h,Number.isFinite(d)?(S=S*2/d-1,[g,y,S]):[g,y]}function c(l,u){var h=o()(l,3),d=h[0],f=h[1],g=h[2],y=g===void 0?0:g,S=o()(u,3),b=S[0],C=S[1],N=S[2],T=N===void 0?0:N;return Math.hypot(b-d,C-f,T-y)}},function(e,r,n){n.r(r),n.d(r,"getPoint",function(){return o}),n(1).glMatrix.setMatrixArrayType(Array);var i=Math.PI*2;function o(a,c,l,u,h){h%=i,h<0&&(h+=i);var d=Math.tan(h);if(Math.abs(d)<1e5){var f=c-d*a,g=1/Math.pow(l,2)+Math.pow(d,2)/Math.pow(u,2),y=-1;(h<=Math.PI/2||h>3*Math.PI/2)&&(y=1);var S=y*Math.sqrt(1/g)+a,b=d*S+f;return[S,b]}return h<Math.PI?[a,c+u]:[a,c-u]}},function(e,r,n){n.r(r),n.d(r,"default",function(){return _});var i=n(74),o=n.n(i),a=n(19),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(13),g=n.n(f),y=n(1),S=n(59),b=n.n(S),C=n(76),N=n(44),T=n(40),p=n(46),m=n(78),v=n(70),M=n(79),R=n.n(M),E=n(63),P=n.n(E),k=n(47),O=n(56),B=n(37);n(1).glMatrix.setMatrixArrayType(Array);var D=Symbol("mesh"),A=Symbol("contours"),L=Symbol("stroke"),U=Symbol("fill"),Y=Symbol("strokeColor"),q=Symbol("fillColor"),ie=Symbol("transform"),z=Symbol("invertTransform"),V=Symbol("uniforms"),Z=Symbol("texOptions"),$=Symbol("blend"),ee=Symbol("applyTexture"),oe=Symbol("applyTransform"),ce=Symbol("applyGradientTransform"),me=Symbol("applyProgram"),pe=Symbol("gradient"),j=Symbol("filter"),F=Symbol("opacity"),J=Symbol("program"),ae=Symbol("attributes"),K=Symbol("pass"),te=Symbol("clipContext"),w=Symbol("applyClipPath");function I(ne,re){for(var X=ne[1][0]-ne[0][0],se=ne[1][1]-ne[0][1],ue=[],de=0;de<re.length;de++){var ge=re[de],ye=[(ge[0]-ne[0][0])/X,1-(ge[1]-ne[0][1])/se];ue.push(ye)}return ue}function W(ne,re,X){var se=g()(ne,2),ue=se[0],de=se[1],ge=g()(re,4),ye=ge[0],Se=ge[1],be=ge[2],Ie=ge[3],Ce=X.scale;return Ce||(ue/=be,de=1-de/Ie,ue-=ye,de+=Se),[ue,de,0]}function G(ne,re,X){var se=P()(ne,re,X);return se.path=ne,se.simplify=X,se.scale=re,se}var _=function(){function ne(re){u()(this,ne),this[L]=null,this[U]=null,this[ie]=[1,0,0,1,0,0],this[F]=1,this[V]={},this[j]=[],this[$]=null,this[Z]={},this.contours=re.contours,this[J]=null,this[ae]={},this[K]=[]}return d()(ne,[{key:"setProgram",value:function(X){this[J]=X,this[D]&&this[me](X)}},{key:"setAttribute",value:function(X,se){se==null?delete this[ae][X]:this[ae][X]=se}},{key:"getOpacity",value:function(){return this[F]}},{key:"setOpacity",value:function(X){if(X<0||X>1)throw new TypeError("Invalid opacity value.");this[D]&&this[D].positions.forEach(function(se){se[2]=1/se[2]>0?X:-X}),this[F]=X}},{key:"setClipPath",value:function(X){this.clipPath=X,this[V].u_clipSampler&&this[V].u_clipSampler.delete(),this.setUniforms({u_clipSampler:null}),this[D]&&delete this[D].attributes.a_clipUV,X&&this[D]&&this[w]()}},{key:w,value:function(){if(this.clipPath){this[te]||(this[te]=B.default.createCanvas(1,1));var X=g()(this.boundingBox,2),se=g()(X[0],2),ue=se[0],de=se[1],ge=g()(X[1],2),ye=ge[0],Se=ge[1];ye&&Se&&(this[te].width=ye-ue,this[te].height=Se-de);var be=this[te].getContext("2d"),Ie=new Path2D(this.clipPath);be.clearRect(0,0,this[te].width,this[te].height),be.save(),be.translate(-ue,-de),be.fillStyle="white",be.fill(Ie),be.restore(),this[D].clipPath=this[te];var Ce=I(this.boundingBox,this[D].position0);this[D].attributes.a_clipUV=Ce}}},{key:"getPointAtLength",value:function(X){return Object(v.getPointAtLength)(this[A],X)}},{key:"getTotalLength",value:function(){return Object(v.getTotalLength)(this[A])}},{key:me,value:function(X){for(var se=this[ae],ue=this[D].position0,de=Object.entries(X._attribute),ge=0;ge<de.length;ge++){var ye=g()(de[ge],2),Se=ye[0],be=ye[1];if(Se!=="a_color"&&Se!=="a_sourceRect"&&be!=="ignored"){var Ie=se[Se];if(Se==="uv"&&!Ie){var Ce=this[D].boundingBox||b()(ue);this[D].attributes[Se]=I(Ce,ue)}else{this[D].attributes[Se]=[];for(var Ae=0;Ae<ue.length;Ae++){var Ee=ue[Ae];this[D].attributes[Se].push(Ie?Ie(Ee,ge,ue):Array(be.size).fill(0))}}}}}},{key:oe,value:function(X,se){for(var ue=X.positions,de=X.position0,ge=0;ge<ue.length;ge++){var ye=g()(de[ge],2),Se=ye[0],be=ye[1],Ie=ue[ge];Ie[0]=Se*se[0]+be*se[2]+se[4],Ie[1]=Se*se[1]+be*se[3]+se[5]}this._updateMatrix=!1}},{key:ce,value:function(){var X=this[ie],se=c()(this._radialGradientVector);if(se){var ue=g()(se,5),de=ue[0],ge=ue[1],ye=ue[3],Se=ue[4];se[0]=de*X[0]+ge*X[2]+X[4],se[1]=de*X[1]+ge*X[3]+X[5],se[3]=ye*X[0]+Se*X[2]+X[4],se[4]=ye*X[1]+Se*X[3]+X[5],this[V].u_radialGradientVector=se}}},{key:ee,value:function(X,se){function ue(Ee,ke){return Ee==null&&ke==null?!0:Ee==null||ke==null?!1:Ee[0]===ke[0]&&Ee[1]===ke[1]&&Ee[2]===ke[2]&&Ee[3]===ke[3]}var de=this[V].u_texSampler;if(de){var ge=de._img,ye=ge.width,Se=ge.height,be=se.srcRect,Ie=se.rect||[0,0];if(se.rotated&&(Ie=[-Ie[1],Ie[0],Ie[3],Ie[2]]),Ie[2]==null&&(Ie[2]=be?be[2]:ye),Ie[3]==null&&(Ie[3]=be?be[3]:Se),se.hidden)X.textureCoord=X.positions.map(function(){return[-1,-1,-1]});else if(!X.textureCoord||!ue(this[Z].rect,se.rect)||this[Z].hidden!==se.hidden||this[Z].rotated!==se.rotated){var Ce=null;se.rotated&&(Ce=y.mat2d.rotate(Array.of(0,0,0,0,0,0),y.mat2d.fromValues(1,0,0,1,0,0),.5*Math.PI),Ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),Ce,[0,-Ie[2]])),X.textureCoord=X.position0.map(function(Ee){var ke=g()(Ee,3),Oe=ke[0],Ne=ke[1],je=ke[2];if(1/je>0){if(se.rotated){var Je=Oe*Ce[0]+Ne*Ce[2]+Ce[4],rt=Oe*Ce[1]+Ne*Ce[3]+Ce[5];Oe=Je,Ne=rt}var et=W([Oe,Ne],[Ie[0]/Ie[2],Ie[1]/Ie[3],Ie[2],Ie[3]],se);return se.repeat&&(et[2]=1),et}return[-1,-1,-1]})}if(be){var Ae=[be[0]/ye,be[1]/Se,be[2]/ye,be[3]/Se];X.attributes.a_sourceRect=X.positions.map(function(){return[].concat(Ae)})}else X.attributes.a_sourceRect=X.positions.map(function(){return[0,0,0,0]})}}},{key:"accurate",value:function(X){if(this.contours){var se=this.contours.path;if(se){var ue=this.contours.simplify,de=G(this.contours.path,2*X,ue);this[D]=null,this[A]=de}}}},{key:"canIgnore",value:function(){var X=this[L]==null||this[L].lineWidth===0||this[Y][3]===0,se=this[U]==null||this[q][3]===0,ue=this[V].u_radialGradientVector==null,de=this[V].u_texSampler==null;return this[F]===0||this[J]==null&&X&&se&&ue&&de&&!this.beforeRender&&!this.afterRender}},{key:"setStroke",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},se=X.thickness,ue=se===void 0?1:se,de=X.cap,ge=de===void 0?"butt":de,ye=X.join,Se=ye===void 0?"miter":ye,be=X.miterLimit,Ie=be===void 0?10:be,Ce=X.color,Ae=Ce===void 0?[0,0,0,0]:Ce,Ee=X.lineDash,ke=Ee===void 0?null:Ee,Oe=X.lineDashOffset,Ne=Oe===void 0?0:Oe,je=X.roundSegments,Je=je===void 0?20:je;return this[D]=null,this[L]=new C.default({lineWidth:ue,lineCap:ge,lineJoin:Se,miterLimit:Ie,roundSegments:Je}),typeof Ae=="string"&&(Ae=Object(k.default)(Ae)),this[Y]=Ae,this[L].lineDash=ke,this[L].lineDashOffset=Ne,this}},{key:"setFill",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},se=X.rule,ue=se===void 0?this.fillRule:se,de=X.color,ge=de===void 0?[0,0,0,0]:de;return this[D]=null,this[U]={rule:ue},typeof ge=="string"&&(ge=Object(k.default)(ge)),this[q]=ge,this}},{key:"setTexture",value:function(X){var se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(X&&X.image){var ue=X,de=ue.image,ge=ue.rect;if(X=de,se.rect)for(var ye=0;ye<se.rect.length;ye++)ge[ye]=se.rect[ye];se.rect=ge}return this[U]||this.setFill(),this.setUniforms({u_texSampler:X}),this[D]&&this[ee](this[D],se),this[Z]=se,this}},{key:"setCircularGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},se=X.vector,ue=X.colors,de=X.type,ge=de===void 0?"fill":de;if(se.length!==3)throw new TypeError("Invalid linearGradient.");this.setGradient({vector:se,colors:ue,type:ge})}},{key:"setLinearGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},se=X.vector,ue=X.colors,de=X.type,ge=de===void 0?"fill":de;if(se.length!==4)throw new TypeError("Invalid linearGradient.");this.setGradient({vector:se,colors:ue,type:ge})}},{key:"setRadialGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},se=X.vector,ue=X.colors,de=X.type,ge=de===void 0?"fill":de;if(se.length!==6)throw new TypeError("Invalid radialGradient.");this.setGradient({vector:se,colors:ue,type:ge})}},{key:"setGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},se=X.vector,ue=X.colors,de=X.type,ge=de===void 0?"fill":de;ue=ue.map(function(be){var Ie=be.offset,Ce=be.color;return typeof Ce=="string"&&(Ce=Object(k.default)(Ce)),{offset:Ie,color:Ce}}),this[pe]=this[pe]||{},this[pe][ge]={vector:se,colors:ue},ue.sort(function(be,Ie){return be.offset-Ie.offset});var ye=[];ue.forEach(function(be){var Ie=be.offset,Ce=be.color;ye.push.apply(ye,[Ie].concat(c()(Ce)))});var Se;if(se.length===4?Se=[se[0],se[1],0,se[2],se[3],0]:Se=c()(se),ye.length<40&&ye.push(-1),ye.length>40)throw new Error("Too many colors, should be less than 8 colors");return this._radialGradientVector=Se,this[V].u_colorSteps=ye,ge==="fill"?this[V].u_gradientType=1:this[V].u_gradientType=0,this[ce](),this}},{key:"setUniforms",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this[V],X),this}},{key:"setTransform",value:function(){for(var X=this[ie],se=arguments.length,ue=new Array(se),de=0;de<se;de++)ue[de]=arguments[de];return y.mat2d.equals(ue,X)||(this[ie]=ue,delete this[z],this._updateMatrix=!0),this}},{key:"transform",value:function(){for(var X=this[ie],se=arguments.length,ue=new Array(se),de=0;de<se;de++)ue[de]=arguments[de];return this[ie]=y.mat2d.multiply(Array.of(0,0,0,0,0,0),X,ue),delete this[z],this._updateMatrix=!0,this}},{key:"translate",value:function(X,se){var ue=y.mat2d.create();return ue=y.mat2d.translate(Array.of(0,0,0,0,0,0),ue,[X,se]),this.transform.apply(this,c()(ue))}},{key:"rotate",value:function(X){var se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0],ue=g()(se,2),de=ue[0],ge=ue[1],ye=y.mat2d.create();return ye=y.mat2d.translate(Array.of(0,0,0,0,0,0),ye,[de,ge]),ye=y.mat2d.rotate(Array.of(0,0,0,0,0,0),ye,X),ye=y.mat2d.translate(Array.of(0,0,0,0,0,0),ye,[-de,-ge]),this.transform.apply(this,c()(ye))}},{key:"scale",value:function(X){var se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:X,ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],de=g()(ue,2),ge=de[0],ye=de[1],Se=y.mat2d.create();return Se=y.mat2d.translate(Array.of(0,0,0,0,0,0),Se,[ge,ye]),Se=y.mat2d.scale(Array.of(0,0,0,0,0,0),Se,[X,se]),Se=y.mat2d.translate(Array.of(0,0,0,0,0,0),Se,[-ge,-ye]),this.transform.apply(this,c()(Se))}},{key:"skew",value:function(X){var se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:X,ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],de=g()(ue,2),ge=de[0],ye=de[1],Se=y.mat2d.create();return Se=y.mat2d.translate(Array.of(0,0,0,0,0,0),Se,[ge,ye]),Se=y.mat2d.multiply(Array.of(0,0,0,0,0,0),Se,y.mat2d.fromValues(1,Math.tan(se),Math.tan(X),1,0,0)),Se=y.mat2d.translate(Array.of(0,0,0,0,0,0),Se,[-ge,-ye]),this.transform.apply(this,c()(Se))}},{key:"clearFilter",value:function(){return this.setColorTransform(null),this[j].length=0,this}},{key:"setColorTransform",value:function(){for(var X=arguments.length,se=new Array(X),ue=0;ue<X;ue++)se[ue]=arguments[ue];return se[0]===null?this.setUniforms({u_filterFlag:0,u_colorMatrix:0}):this.setUniforms({u_filterFlag:1,u_colorMatrix:se}),this}},{key:"transformColor",value:function(){for(var X=this.uniforms.u_colorMatrix,se=arguments.length,ue=new Array(se),de=0;de<se;de++)ue[de]=arguments[de];return X?X=Object(p.multiply)(X,ue):X=ue,this.setColorTransform.apply(this,c()(X)),this}},{key:"blur",value:function(X){return this[j].push("blur(".concat(X,"px)")),this}},{key:"brightness",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[j].push("brightness(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.brightness)(X)))}},{key:"contrast",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[j].push("contrast(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.contrast)(X)))}},{key:"dropShadow",value:function(X,se){var ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,de=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0,1];return Array.isArray(de)&&(de=Object(T.default)(de)),this[j].push("drop-shadow(".concat(X,"px ").concat(se,"px ").concat(ue,"px ").concat(de,")")),this}},{key:"grayscale",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[j].push("grayscale(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.grayscale)(X)))}},{key:"hueRotate",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this[j].push("hue-rotate(".concat(X,"deg)")),this.transformColor.apply(this,c()(Object(p.hueRotate)(X)))}},{key:"invert",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[j].push("invert(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.invert)(X)))}},{key:"opacity",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[j].push("opacity(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.opacity)(X)))}},{key:"saturate",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[j].push("saturate(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.saturate)(X)))}},{key:"sepia",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[j].push("sepia(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.sepia)(X)))}},{key:"url",value:function(X){return this[j].push("url(".concat(X,")")),this}},{key:"isPointCollision",value:function(X,se){var ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"both",de=this.meshData,ge=de.positions,ye=de.cells,Se=this.invertMatrix,be=Se[0]*X+Se[2]*se+Se[4],Ie=Se[1]*X+Se[3]*se+Se[5],Ce=this.boundingBox;if(be<Ce[0][0]||be>Ce[1][0]||Ie<Ce[0][1]||Ie>Ce[1][1])return!1;function Ae(Ci,wo,EM){var Wd=g()(Ci,2),xM=Wd[0],RM=Wd[1],Vd=g()(wo,2),$d=Vd[0],Yd=Vd[1],Gd=g()(EM,2),kM=Gd[0],AM=Gd[1],Hd=kM-$d,Qd=AM-Yd,qd=((xM-$d)*Hd+(RM-Yd)*Qd)/(Math.pow(Hd,2)+Math.pow(Qd,2));return qd>=0&&qd<=1}for(var Ee=0;Ee<ye.length;Ee++){var ke=ye[Ee];if(ue==="fill"&&ke[0]>=de.fillPointCount)break;if(!(ue==="stroke"&&ke[0]<de.fillPointCount)){var Oe=ke.map(function(Ci){return ge[Ci]}),Ne=g()(Oe,3),je=g()(Ne[0],2),Je=je[0],rt=je[1],et=g()(Ne[1],2),nt=et[0],Qe=et[1],st=g()(Ne[2],2),ht=st[0],Ke=st[1],Wt=Math.sign((X-Je)*(Qe-rt)-(nt-Je)*(se-rt));if(Wt===0&&Ae([X,se],[Je,rt],[nt,Qe]))return!0;var Fr=Math.sign((X-nt)*(Ke-Qe)-(ht-nt)*(se-Qe));if(Fr===0&&Ae([X,se],[nt,Qe],[ht,Ke]))return!0;var Ur=Math.sign((X-ht)*(rt-Ke)-(Je-ht)*(se-Ke));if(Ur===0&&Ae([X,se],[ht,Ke],[Je,rt])||Wt===1&&Fr===1&&Ur===1||Wt===-1&&Fr===-1&&Ur===-1)return!0}}return!1}},{key:"isPointInFill",value:function(X,se){return this.isPointCollision(X,se,"fill")}},{key:"isPointInStroke",value:function(X,se){return this.isPointCollision(X,se,"stroke")}},{key:"addPass",value:function(X){var se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ue=se.width,de=se.height,ge=o()(se,["width","height"]),ye=new O.default;ye.rect(0,0,ue,de);var Se=new ne(ye);Se.setUniforms(ge),Se.setProgram(X),this[K].push(Se)}},{key:"contours",get:function(){return this[A]},set:function(X){this[D]=null,this[A]=X;var se=X.scale,ue=this.transformScale/se;ue>1.5&&this.accurate(this.transformScale)}},{key:"program",get:function(){return this[J]}},{key:"blend",get:function(){return this[$]==null?"auto":this[$]},set:function(X){this[$]=X,this[D]&&(this[D].enableBlend=this.enableBlend)}},{key:"boundingBox",get:function(){if(this[D]&&this[D].boundingBox)return this[D].boundingBox;var X=this.meshData;if(X){var se=X.position0;if(se.length)X.boundingBox=b()(se);else return[[0,0],[0,0]];return X.boundingBox}return[[0,0],[0,0]]}},{key:"boundingCenter",get:function(){var X=this.boundingBox;return X?[.5*(X[0][0]+X[1][0]),.5*(X[0][1]+X[1][1])]:[0,0]}},{key:"fillRule",get:function(){return this[U]?this[U].rule:"nonzero"}},{key:"lineWidth",get:function(){return this[L]?this[L].lineWidth:0}},{key:"lineCap",get:function(){return this[L]?this[L].lineCap:""}},{key:"lineJoin",get:function(){return this[L]?this[L].lineJoin:""}},{key:"miterLimit",get:function(){return this[L]?this[L].miterLimit:0}},{key:"strokeStyle",get:function(){return this[Y]&&this[Y][3]!==0?Object(T.default)(this[Y]):""}},{key:"lineDash",get:function(){return this[L]?this[L].lineDash:null}},{key:"lineDashOffset",get:function(){return this[L]?this[L].lineDashOffset:0}},{key:"fillStyle",get:function(){return this[q]&&this[q][3]!==0?Object(T.default)(this[q]):""}},{key:"gradient",get:function(){return this[pe]}},{key:"texture",get:function(){return this[V].u_texSampler?{image:this[V].u_texSampler._img,options:this[Z]}:null}},{key:"enableBlend",get:function(){return this[$]===!0||this[$]===!1?this[$]:this[F]<1||this[Y]!=null&&this[Y][3]<1||this[q]!=null&&this[q][3]<1||this[V].u_colorMatrix!=null&&this[V].u_colorMatrix[18]<1||this[V].u_radialGradientVector!=null||this.beforeRender||this.afterRender}},{key:"filterCanvas",get:function(){return/blur|drop-shadow|url/.test(this.filter)}},{key:"filter",get:function(){return this[j].join(" ")}},{key:"transformMatrix",get:function(){return this[ie]}},{key:"invertMatrix",get:function(){if(!this[z]){var X=y.mat2d.invert(Array.of(0,0,0,0,0,0),this[ie]);this[z]=X}return this[z]}},{key:"transformScale",get:function(){var X=this[ie];return Math.max(Math.hypot(X[0],X[1]),Math.hypot(X[2],X[3]))}},{key:"uniforms",get:function(){return this[V]}},{key:"pass",get:function(){return this[K]}},{key:"meshData",get:function(){var X=this;if(this._updateMatrix){var se=this.transformScale/this.contours.scale;se>1.5&&this.accurate(this.transformScale)}if(!this[D]){!this[U]&&!this[L]&&this.setFill();var ue=this[A],de={};if(ue&&ue.length){if(this[U])try{var ge=R()(ue,this[U]);ge.positions=ge.positions.map(function(Ee){return Ee.push(X[F]),Ee}),ge.attributes={a_color:Array.from({length:ge.positions.length}).map(function(){return X[q].map(function(Ee){return Math.round(255*Ee)})})},de.fill=ge}catch{}if(this[L]){var ye=this[L].lineDash,Se=ue;if(ye){var be=this[L].lineDashOffset;Se=Object(v.getDashContours)(ue,ye,be)}var Ie=Se.map(function(Ee,ke){var Oe=Ee.length>1&&y.vec2.equals(Ee[0],Ee[Ee.length-1]),Ne=X[L].build(Ee,Oe);return R()([Ne])});Ie.forEach(function(Ee){Ee.positions=Ee.positions.map(function(ke){return ke.push(-X[F]),ke}),Ee.attributes={a_color:Array.from({length:Ee.positions.length}).map(function(){return X[Y].map(function(ke){return Math.round(255*ke)})})}}),de.stroke=Object(N.default)(Ie)}}var Ce=Object(N.default)([de.fill,de.stroke]);Ce.fillPointCount=de.fill?de.fill.positions.length:0,Ce.enableBlend=this.enableBlend,Ce.position0=Ce.positions.map(function(Ee){var ke=g()(Ee,3),Oe=ke[0],Ne=ke[1],je=ke[2];return[Oe,Ne,je]}),Ce.uniforms=this[V],this[D]=Ce,this[V].u_texSampler&&this[ee](Ce,this[Z]);var Ae=this[ie];Object(m.isUnitTransform)(Ae)||(this[oe](Ce,Ae),this[V].u_radialGradientVector&&this[ce]()),this.clipPath&&this[w](),this[J]&&this[me](this[J])}return this._updateMatrix&&(this[D].matrix=this[ie],this[oe](this[D],this[ie]),this[V].u_radialGradientVector&&this[ce]()),this[D]}}]),ne}()},function(e,r,n){var i=n(75);function o(a,c){if(a==null)return{};var l=i(a,c),u,h;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);for(h=0;h<d.length;h++)u=d[h],!(c.indexOf(u)>=0)&&Object.prototype.propertyIsEnumerable.call(a,u)&&(l[u]=a[u])}return l}e.exports=o},function(e,r){function n(i,o){if(i==null)return{};var a={},c=Object.keys(i),l,u;for(u=0;u<c.length;u++)l=c[u],!(o.indexOf(l)>=0)&&(a[l]=i[l]);return a}e.exports=n},function(e,r,n){n.r(r);var i=n(77);n(1).glMatrix.setMatrixArrayType(Array),r.default=i.Stroke},function(e,r,n){n.r(r),n.d(r,"Stroke",function(){return C});var i=n(19),o=n.n(i),a=n(23),c=n.n(a),l=n(24),u=n.n(l),h=n(66);n(1).glMatrix.setMatrixArrayType(Array);var d=Object(h.create)(),f=Object(h.create)(),g=Object(h.create)(),y=Object(h.create)(),S=Object(h.create)(),b=1e20,C=function(){function m(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=v.lineWidth,R=M===void 0?1:M,E=v.lineJoin,P=E===void 0?"miter":E,k=v.miterLimit,O=k===void 0?10:k,B=v.lineCap,D=B===void 0?"butt":B,A=v.roundSegments,L=A===void 0?20:A;c()(this,m),this.lineWidth=R,this.lineJoin=P,this.miterLimit=O,this.lineCap=D,this.roundSegments=L,this._normal=null}return u()(m,[{key:"build",value:function(M){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,E=M.length;if(M=o()(M),E<2)return M;R&&((M[0][0]!==M[E-1][0]||M[0][1]!==M[E-1][1])&&M.push(o()(M[0])),M.push(o()(M[1]))),E=M.length,this._normal=null;var P={left:[],right:[]},k=this.lineWidth/2,O=this.lineCap;if(!R&&O==="square"){Object(h.direction)(f,M[0],M[1]),Object(h.scaleAndAdd)(M[0],M[0],f,k);var B=M.length-1;Object(h.direction)(f,M[B],M[B-1]),Object(h.scaleAndAdd)(M[B],M[B],f,k)}for(var D=1;D<E;D++){var A=M[D-1],L=M[D],U=M[D+1];this._seg(P,A,L,U,k,R)}!R&&O==="round"&&p(P,this.roundSegments);var Y=[].concat(o()(P.left),o()(P.right.reverse()));return Y}},{key:"_seg",value:function(M,R,E,P,k,O){var B=this.lineJoin==="bevel",D=this.lineJoin==="round";if(Object(h.direction)(f,E,R),this._normal||(this._normal=Object(h.create)(),Object(h.normal)(this._normal,f)),M.left.length||T(M,R,this._normal,k),!P)Object(h.normal)(this._normal,f),O?T(M,R,this._normal,k):T(M,E,this._normal,k);else{Object(h.direction)(g,P,E);var A=Object(h.computeMiter)(y,S,f,g,k);A=Math.min(A,b);var L=Object(h.dot)(y,this._normal)<0?-1:1,U=B||D;if(!U&&this.lineJoin==="miter"){var Y=A/k;Y>this.miterLimit&&(U=!0)}if(U){Object(h.scaleAndAdd)(d,E,this._normal,-k*L),N(M,d,L);var q=1/0;R&&(q=Math.min(q,Math.hypot(E[0]-R[0],E[1]-R[1]))),P&&(q=Math.min(q,Math.hypot(P[0]-E[0],P[1]-E[1])));var ie=Math.max(k,Math.min(A,q));if(Object(h.scaleAndAdd)(d,E,S,ie*L),N(M,d,-L),P)if(Object(h.normal)(d,g),Object(h.copy)(this._normal,d),Object(h.scaleAndAdd)(d,E,d,-k*L),D){for(var z=Object(h.clone)(d),V=L>0?M.left[M.left.length-1]:M.right[M.right.length-1],Z=Object(h.clone)(E),$=Object(h.sub)(Object(h.create)(),V,Z),ee=Object(h.sub)(Object(h.create)(),z,Z),oe=Math.PI/this.roundSegments,ce=0;ce<this.roundSegments&&(Object(h.rotate)($,$,[0,0],L*oe),Math.sign(Object(h.cross)(d,$,ee)[2])===L);ce++)Object(h.add)(d,$,Z),N(M,d,L);N(M,z,L)}else N(M,d,L)}else T(M,E,S,A),Object(h.copy)(this._normal,S)}}}]),m}();function N(m,v,M){M>0?m.left.push(Object(h.clone)(v)):m.right.push(Object(h.clone)(v))}function T(m,v,M,R){var E=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;Object(h.scaleAndAdd)(d,v,M,-R),N(m,d,-E),Object(h.scaleAndAdd)(d,v,M,R),N(m,d,E)}function p(m,v){var M=m.left,R=m.right,E=Object(h.create)(),P=Object(h.create)(),k=M[0],O=R[0],B=[.5*(k[0]+O[0]),.5*(k[1]+O[1])];Object(h.sub)(P,k,B);for(var D=1;D<=v;D++){var A=-1*Math.PI*D/v;Object(h.rotate)(E,P,[0,0],A),Object(h.add)(d,B,E),M.unshift(Object(h.clone)(d))}k=R[R.length-1],O=M[M.length-1],B=[.5*(k[0]+O[0]),.5*(k[1]+O[1])],Object(h.sub)(P,k,B);for(var L=1;L<=v;L++){var U=-1*Math.PI*L/v;Object(h.rotate)(E,P,[0,0],U),Object(h.add)(d,B,E),R.push(Object(h.clone)(d))}}},function(e,r,n){n.r(r),n.d(r,"isUnitTransform",function(){return i}),n(1).glMatrix.setMatrixArrayType(Array);function i(o){return o[0]===1&&o[1]===0&&o[2]===0&&o[3]===1&&o[4]===0&&o[5]===0}},function(e,r,n){n(1).glMatrix.setMatrixArrayType(Array);var i=n(80),o=n(81);e.exports=function(a,c){if(c=c||{},a=a.filter(function(C){return C.length>2}),a.length===0)return{positions:[],cells:[]};typeof c.vertexSize!="number"&&(c.vertexSize=a[0][0].length),a=a.map(function(C){return C.reduce(function(N,T){return N.concat(T)})});for(var l=c.rule==="evenodd"?i.WINDING_ODD:i.WINDING_NONZERO,u=i.tesselate(o({contours:a,windingRule:l,elementType:i.POLYGONS,polySize:3,vertexSize:2},c)),h=[],d=0;d<u.vertices.length;d+=c.vertexSize){var f=u.vertices.slice(d,d+c.vertexSize);h.push(f)}var g=[];for(d=0;d<u.elements.length;d+=3){var y=u.elements[d],S=u.elements[d+1],b=u.elements[d+2];g.push([y,S,b])}return{positions:h,cells:g}}},function(e,r,n){n(1).glMatrix.setMatrixArrayType(Array);var i={},o={};e.exports=i,i.WINDING_ODD=0,i.WINDING_NONZERO=1,i.WINDING_POSITIVE=2,i.WINDING_NEGATIVE=3,i.WINDING_ABS_GEQ_TWO=4,i.POLYGONS=0,i.CONNECTED_POLYGONS=1,i.BOUNDARY_CONTOURS=2,i.tesselate=function(T){for(var p=T.debug||!1,m=new N,v=0;v<T.contours.length;v++)m.addContour(T.vertexSize||2,T.contours[v]);return m.tesselate(T.windingRule||i.WINDING_ODD,T.elementType||i.POLYGONS,T.polySize||3,T.vertexSize||2,T.normal||[0,0,1]),{vertices:m.vertices,vertexIndices:m.vertexIndices,vertexCount:m.vertexCount,elements:m.elements,elementCount:m.elementCount,mesh:p?m.mesh:void 0}};var a=function(p){if(!p)throw"Assertion Failed!"};function c(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}function l(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}function u(T){this.next=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Org=null,this.Lface=null,this.activeRegion=null,this.winding=0,this.side=T}u.prototype={get Rface(){return this.Sym.Lface},set Rface(T){this.Sym.Lface=T},get Dst(){return this.Sym.Org},set Dst(T){this.Sym.Org=T},get Oprev(){return this.Sym.Lnext},set Oprev(T){this.Sym.Lnext=T},get Lprev(){return this.Onext.Sym},set Lprev(T){this.Onext.Sym=T},get Dprev(){return this.Lnext.Sym},set Dprev(T){this.Lnext.Sym=T},get Rprev(){return this.Sym.Onext},set Rprev(T){this.Sym.Onext=T},get Dnext(){return this.Sym.Onext.Sym},set Dnext(T){this.Sym.Onext.Sym=T},get Rnext(){return this.Sym.Lnext.Sym},set Rnext(T){this.Sym.Lnext.Sym=T}};function h(){var T=new c,p=new l,m=new u(0),v=new u(1);T.next=T.prev=T,T.anEdge=null,p.next=p.prev=p,p.anEdge=null,p.trail=null,p.marked=!1,p.inside=!1,m.next=m,m.Sym=v,m.Onext=null,m.Lnext=null,m.Org=null,m.Lface=null,m.winding=0,m.activeRegion=null,v.next=v,v.Sym=m,v.Onext=null,v.Lnext=null,v.Org=null,v.Lface=null,v.winding=0,v.activeRegion=null,this.vHead=T,this.fHead=p,this.eHead=m,this.eHeadSym=v}h.prototype={makeEdge_:function(p){var m=new u(0),v=new u(1);p.Sym.side<p.side&&(p=p.Sym);var M=p.Sym.next;return v.next=M,M.Sym.next=m,m.next=p,p.Sym.next=v,m.Sym=v,m.Onext=m,m.Lnext=v,m.Org=null,m.Lface=null,m.winding=0,m.activeRegion=null,v.Sym=m,v.Onext=v,v.Lnext=m,v.Org=null,v.Lface=null,v.winding=0,v.activeRegion=null,m},splice_:function(p,m){var v=p.Onext,M=m.Onext;v.Sym.Lnext=m,M.Sym.Lnext=p,p.Onext=M,m.Onext=v},makeVertex_:function(p,m,v){var M=p;a(M!==null);var R=v.prev;M.prev=R,R.next=M,M.next=v,v.prev=M,M.anEdge=m;var E=m;do E.Org=M,E=E.Onext;while(E!==m)},makeFace_:function(p,m,v){var M=p;a(M!==null);var R=v.prev;M.prev=R,R.next=M,M.next=v,v.prev=M,M.anEdge=m,M.trail=null,M.marked=!1,M.inside=v.inside;var E=m;do E.Lface=M,E=E.Lnext;while(E!==m)},killEdge_:function(p){p.Sym.side<p.side&&(p=p.Sym);var m=p.next,v=p.Sym.next;m.Sym.next=v,v.Sym.next=m},killVertex_:function(p,m){var v=p.anEdge,M=v;do M.Org=m,M=M.Onext;while(M!==v);var R=p.prev,E=p.next;E.prev=R,R.next=E},killFace_:function(p,m){var v=p.anEdge,M=v;do M.Lface=m,M=M.Lnext;while(M!==v);var R=p.prev,E=p.next;E.prev=R,R.next=E},makeEdge:function(){var p=new c,m=new c,v=new l,M=this.makeEdge_(this.eHead);return this.makeVertex_(p,M,this.vHead),this.makeVertex_(m,M.Sym,this.vHead),this.makeFace_(v,M,this.fHead),M},splice:function(p,m){var v=!1,M=!1;if(p!==m){if(m.Org!==p.Org&&(M=!0,this.killVertex_(m.Org,p.Org)),m.Lface!==p.Lface&&(v=!0,this.killFace_(m.Lface,p.Lface)),this.splice_(m,p),!M){var R=new c;this.makeVertex_(R,m,p.Org),p.Org.anEdge=p}if(!v){var E=new l;this.makeFace_(E,m,p.Lface),p.Lface.anEdge=p}}},delete:function(p){var m=p.Sym,v=!1;if(p.Lface!==p.Rface&&(v=!0,this.killFace_(p.Lface,p.Rface)),p.Onext===p)this.killVertex_(p.Org,null);else if(p.Rface.anEdge=p.Oprev,p.Org.anEdge=p.Onext,this.splice_(p,p.Oprev),!v){var M=new l;this.makeFace_(M,p,p.Lface)}m.Onext===m?(this.killVertex_(m.Org,null),this.killFace_(m.Lface,null)):(p.Lface.anEdge=m.Oprev,m.Org.anEdge=m.Onext,this.splice_(m,m.Oprev)),this.killEdge_(p)},addEdgeVertex:function(p){var m=this.makeEdge_(p),v=m.Sym;this.splice_(m,p.Lnext),m.Org=p.Dst;var M=new c;return this.makeVertex_(M,v,m.Org),m.Lface=v.Lface=p.Lface,m},splitEdge:function(p,m){var v=this.addEdgeVertex(p),M=v.Sym;return this.splice_(p.Sym,p.Sym.Oprev),this.splice_(p.Sym,M),p.Dst=M.Org,M.Dst.anEdge=M.Sym,M.Rface=p.Rface,M.winding=p.winding,M.Sym.winding=p.Sym.winding,M},connect:function(p,m){var v=!1,M=this.makeEdge_(p),R=M.Sym;if(m.Lface!==p.Lface&&(v=!0,this.killFace_(m.Lface,p.Lface)),this.splice_(M,p.Lnext),this.splice_(R,m),M.Org=p.Dst,R.Org=m.Org,M.Lface=R.Lface=p.Lface,p.Lface.anEdge=R,!v){var E=new l;this.makeFace_(E,M,p.Lface)}return M},zapFace:function(p){var m=p.anEdge,v,M,R,E,P;M=m.Lnext;do v=M,M=v.Lnext,v.Lface=null,v.Rface===null&&(v.Onext===v?this.killVertex_(v.Org,null):(v.Org.anEdge=v.Onext,this.splice_(v,v.Oprev)),R=v.Sym,R.Onext===R?this.killVertex_(R.Org,null):(R.Org.anEdge=R.Onext,this.splice_(R,R.Oprev)),this.killEdge_(v));while(v!=m);E=p.prev,P=p.next,P.prev=E,E.next=P},countFaceVerts_:function(p){var m=p.anEdge,v=0;do v++,m=m.Lnext;while(m!==p.anEdge);return v},mergeConvexFaces:function(p){var m,v,M,R,E,P,k;for(m=this.fHead.next;m!==this.fHead;m=m.next)if(m.inside)for(v=m.anEdge,E=v.Org;M=v.Lnext,R=v.Sym,R&&R.Lface&&R.Lface.inside&&(P=this.countFaceVerts_(m),k=this.countFaceVerts_(R.Lface),P+k-2<=p&&o.vertCCW(v.Lprev.Org,v.Org,R.Lnext.Lnext.Org)&&o.vertCCW(R.Lprev.Org,R.Org,v.Lnext.Lnext.Org)&&(M=R.Lnext,this.delete(R),v=null,R=null)),!(v&&v.Lnext.Org===E);)v=M;return!0},check:function(){var p=this.fHead,m=this.vHead,v=this.eHead,M,R,E,P,k,O;for(R=p,R=p;(M=R.next)!==p;R=M){a(M.prev===R),k=M.anEdge;do a(k.Sym!==k),a(k.Sym.Sym===k),a(k.Lnext.Onext.Sym===k),a(k.Onext.Sym.Lnext===k),a(k.Lface===M),k=k.Lnext;while(k!==M.anEdge)}for(a(M.prev===R&&M.anEdge===null),P=m,P=m;(E=P.next)!==m;P=E){a(E.prev===P),k=E.anEdge;do a(k.Sym!==k),a(k.Sym.Sym===k),a(k.Lnext.Onext.Sym===k),a(k.Onext.Sym.Lnext===k),a(k.Org===E),k=k.Onext;while(k!==E.anEdge)}for(a(E.prev===P&&E.anEdge===null),O=v,O=v;(k=O.next)!==v;O=k)a(k.Sym.next===O.Sym),a(k.Sym!==k),a(k.Sym.Sym===k),a(k.Org!==null),a(k.Dst!==null),a(k.Lnext.Onext.Sym===k),a(k.Onext.Sym.Lnext===k);a(k.Sym.next===O.Sym&&k.Sym===this.eHeadSym&&k.Sym.Sym===k&&k.Org===null&&k.Dst===null&&k.Lface===null&&k.Rface===null)}},o.vertEq=function(T,p){return T.s===p.s&&T.t===p.t},o.vertLeq=function(T,p){return T.s<p.s||T.s===p.s&&T.t<=p.t},o.transLeq=function(T,p){return T.t<p.t||T.t===p.t&&T.s<=p.s},o.edgeGoesLeft=function(T){return o.vertLeq(T.Dst,T.Org)},o.edgeGoesRight=function(T){return o.vertLeq(T.Org,T.Dst)},o.vertL1dist=function(T,p){return Math.abs(T.s-p.s)+Math.abs(T.t-p.t)},o.edgeEval=function(T,p,m){a(o.vertLeq(T,p)&&o.vertLeq(p,m));var v=p.s-T.s,M=m.s-p.s;return v+M>0?v<M?p.t-T.t+(T.t-m.t)*(v/(v+M)):p.t-m.t+(m.t-T.t)*(M/(v+M)):0},o.edgeSign=function(T,p,m){a(o.vertLeq(T,p)&&o.vertLeq(p,m));var v=p.s-T.s,M=m.s-p.s;return v+M>0?(p.t-m.t)*v+(p.t-T.t)*M:0},o.transEval=function(T,p,m){a(o.transLeq(T,p)&&o.transLeq(p,m));var v=p.t-T.t,M=m.t-p.t;return v+M>0?v<M?p.s-T.s+(T.s-m.s)*(v/(v+M)):p.s-m.s+(m.s-T.s)*(M/(v+M)):0},o.transSign=function(T,p,m){a(o.transLeq(T,p)&&o.transLeq(p,m));var v=p.t-T.t,M=m.t-p.t;return v+M>0?(p.s-m.s)*v+(p.s-T.s)*M:0},o.vertCCW=function(T,p,m){return T.s*(p.t-m.t)+p.s*(m.t-T.t)+m.s*(T.t-p.t)>=0},o.interpolate=function(T,p,m,v){return T=T<0?0:T,m=m<0?0:m,T<=m?m===0?(p+v)/2:p+(v-p)*(T/(T+m)):v+(p-v)*(m/(T+m))},o.intersect=function(T,p,m,v,M){var R,E,P;o.vertLeq(T,p)||(P=T,T=p,p=P),o.vertLeq(m,v)||(P=m,m=v,v=P),o.vertLeq(T,m)||(P=T,T=m,m=P,P=p,p=v,v=P),o.vertLeq(m,p)?o.vertLeq(p,v)?(R=o.edgeEval(T,m,p),E=o.edgeEval(m,p,v),R+E<0&&(R=-R,E=-E),M.s=o.interpolate(R,m.s,E,p.s)):(R=o.edgeSign(T,m,p),E=-o.edgeSign(T,v,p),R+E<0&&(R=-R,E=-E),M.s=o.interpolate(R,m.s,E,v.s)):M.s=(m.s+p.s)/2,o.transLeq(T,p)||(P=T,T=p,p=P),o.transLeq(m,v)||(P=m,m=v,v=P),o.transLeq(T,m)||(P=T,T=m,m=P,P=p,p=v,v=P),o.transLeq(m,p)?o.transLeq(p,v)?(R=o.transEval(T,m,p),E=o.transEval(m,p,v),R+E<0&&(R=-R,E=-E),M.t=o.interpolate(R,m.t,E,p.t)):(R=o.transSign(T,m,p),E=-o.transSign(T,v,p),R+E<0&&(R=-R,E=-E),M.t=o.interpolate(R,m.t,E,v.t)):M.t=(m.t+p.t)/2};function d(){this.key=null,this.next=null,this.prev=null}function f(T,p){this.head=new d,this.head.next=this.head,this.head.prev=this.head,this.frame=T,this.leq=p}f.prototype={min:function(){return this.head.next},max:function(){return this.head.prev},insert:function(p){return this.insertBefore(this.head,p)},search:function(p){var m=this.head;do m=m.next;while(m.key!==null&&!this.leq(this.frame,p,m.key));return m},insertBefore:function(p,m){do p=p.prev;while(p.key!==null&&!this.leq(this.frame,p.key,m));var v=new d;return v.key=m,v.next=p.next,p.next.prev=v,v.prev=p,p.next=v,v},delete:function(p){p.next.prev=p.prev,p.prev.next=p.next}};function g(){this.handle=null}function y(){this.key=null,this.node=null}function S(T,p){this.size=0,this.max=T,this.nodes=[],this.nodes.length=T+1;var m;for(m=0;m<this.nodes.length;m++)this.nodes[m]=new g;for(this.handles=[],this.handles.length=T+1,m=0;m<this.handles.length;m++)this.handles[m]=new y;this.initialized=!1,this.freeList=0,this.leq=p,this.nodes[1].handle=1,this.handles[1].key=null}S.prototype={floatDown_:function(p){var m=this.nodes,v=this.handles,M,R,E;for(M=m[p].handle;;){if(E=p<<1,E<this.size&&this.leq(v[m[E+1].handle].key,v[m[E].handle].key)&&++E,a(E<=this.max),R=m[E].handle,E>this.size||this.leq(v[M].key,v[R].key)){m[p].handle=M,v[M].node=p;break}m[p].handle=R,v[R].node=p,p=E}},floatUp_:function(p){var m=this.nodes,v=this.handles,M,R,E;for(M=m[p].handle;;){if(E=p>>1,R=m[E].handle,E===0||this.leq(v[R].key,v[M].key)){m[p].handle=M,v[M].node=p;break}m[p].handle=R,v[R].node=p,p=E}},init:function(){for(var p=this.size;p>=1;--p)this.floatDown_(p);this.initialized=!0},min:function(){return this.handles[this.nodes[1].handle].key},insert:function(p){var m,v;if(m=++this.size,m*2>this.max){this.max*=2;var M,R;for(R=this.nodes.length,this.nodes.length=this.max+1,M=R;M<this.nodes.length;M++)this.nodes[M]=new g;for(R=this.handles.length,this.handles.length=this.max+1,M=R;M<this.handles.length;M++)this.handles[M]=new y}return this.freeList===0?v=m:(v=this.freeList,this.freeList=this.handles[v].node),this.nodes[m].handle=v,this.handles[v].node=m,this.handles[v].key=p,this.initialized&&this.floatUp_(m),v},extractMin:function(){var p=this.nodes,m=this.handles,v=p[1].handle,M=m[v].key;return this.size>0&&(p[1].handle=p[this.size].handle,m[p[1].handle].node=1,m[v].key=null,m[v].node=this.freeList,this.freeList=v,--this.size,this.size>0&&this.floatDown_(1)),M},delete:function(p){var m=this.nodes,v=this.handles,M;a(p>=1&&p<=this.max&&v[p].key!==null),M=v[p].node,m[M].handle=m[this.size].handle,v[m[M].handle].node=M,--this.size,M<=this.size&&(M<=1||this.leq(v[m[M>>1].handle].key,v[m[M].handle].key)?this.floatDown_(M):this.floatUp_(M)),v[p].key=null,v[p].node=this.freeList,this.freeList=p}};function b(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}var C={};C.regionBelow=function(T){return T.nodeUp.prev.key},C.regionAbove=function(T){return T.nodeUp.next.key},C.debugEvent=function(T){},C.addWinding=function(T,p){T.winding+=p.winding,T.Sym.winding+=p.Sym.winding},C.edgeLeq=function(T,p,m){var v=T.event,E,P,M=p.eUp,R=m.eUp;if(M.Dst===v)return R.Dst===v?o.vertLeq(M.Org,R.Org)?o.edgeSign(R.Dst,M.Org,R.Org)<=0:o.edgeSign(M.Dst,R.Org,M.Org)>=0:o.edgeSign(R.Dst,v,R.Org)<=0;if(R.Dst===v)return o.edgeSign(M.Dst,v,M.Org)>=0;var E=o.edgeEval(M.Dst,v,M.Org),P=o.edgeEval(R.Dst,v,R.Org);return E>=P},C.deleteRegion=function(T,p){p.fixUpperEdge&&a(p.eUp.winding===0),p.eUp.activeRegion=null,T.dict.delete(p.nodeUp)},C.fixUpperEdge=function(T,p,m){a(p.fixUpperEdge),T.mesh.delete(p.eUp),p.fixUpperEdge=!1,p.eUp=m,m.activeRegion=p},C.topLeftRegion=function(T,p){var m=p.eUp.Org,v;do p=C.regionAbove(p);while(p.eUp.Org===m);if(p.fixUpperEdge){if(v=T.mesh.connect(C.regionBelow(p).eUp.Sym,p.eUp.Lnext),v===null)return null;C.fixUpperEdge(T,p,v),p=C.regionAbove(p)}return p},C.topRightRegion=function(T){var p=T.eUp.Dst;do T=C.regionAbove(T);while(T.eUp.Dst===p);return T},C.addRegionBelow=function(T,p,m){var v=new b;return v.eUp=m,v.nodeUp=T.dict.insertBefore(p.nodeUp,v),v.fixUpperEdge=!1,v.sentinel=!1,v.dirty=!1,m.activeRegion=v,v},C.isWindingInside=function(T,p){switch(T.windingRule){case i.WINDING_ODD:return(p&1)!==0;case i.WINDING_NONZERO:return p!==0;case i.WINDING_POSITIVE:return p>0;case i.WINDING_NEGATIVE:return p<0;case i.WINDING_ABS_GEQ_TWO:return p>=2||p<=-2}return a(!1),!1},C.computeWinding=function(T,p){p.windingNumber=C.regionAbove(p).windingNumber+p.eUp.winding,p.inside=C.isWindingInside(T,p.windingNumber)},C.finishRegion=function(T,p){var m=p.eUp,v=m.Lface;v.inside=p.inside,v.anEdge=m,C.deleteRegion(T,p)},C.finishLeftRegions=function(T,p,m){for(var v,E,M=null,R=p,E=p.eUp;R!==m;){if(R.fixUpperEdge=!1,M=C.regionBelow(R),v=M.eUp,v.Org!=E.Org){if(!M.fixUpperEdge){C.finishRegion(T,R);break}v=T.mesh.connect(E.Lprev,v.Sym),C.fixUpperEdge(T,M,v)}E.Onext!==v&&(T.mesh.splice(v.Oprev,v),T.mesh.splice(E,v)),C.finishRegion(T,R),E=M.eUp,R=M}return E},C.addRightEdges=function(T,p,m,v,M,R){var E,P,k,O,B=!0;k=m;do a(o.vertLeq(k.Org,k.Dst)),C.addRegionBelow(T,p,k.Sym),k=k.Onext;while(k!==v);for(M===null&&(M=C.regionBelow(p).eUp.Rprev),P=p,O=M;E=C.regionBelow(P),k=E.eUp.Sym,k.Org===O.Org;)k.Onext!==O&&(T.mesh.splice(k.Oprev,k),T.mesh.splice(O.Oprev,k)),E.windingNumber=P.windingNumber-k.winding,E.inside=C.isWindingInside(T,E.windingNumber),P.dirty=!0,!B&&C.checkForRightSplice(T,P)&&(C.addWinding(k,O),C.deleteRegion(T,P),T.mesh.delete(O)),B=!1,P=E,O=k;P.dirty=!0,a(P.windingNumber-k.winding===E.windingNumber),R&&C.walkDirtyRegions(T,P)},C.spliceMergeVertices=function(T,p,m){T.mesh.splice(p,m)},C.vertexWeights=function(T,p,m){var v=o.vertL1dist(p,T),M=o.vertL1dist(m,T),R=.5*M/(v+M),E=.5*v/(v+M);T.coords[0]+=R*p.coords[0]+E*m.coords[0],T.coords[1]+=R*p.coords[1]+E*m.coords[1],T.coords[2]+=R*p.coords[2]+E*m.coords[2]},C.getIntersectData=function(T,p,m,v,M,R){p.coords[0]=p.coords[1]=p.coords[2]=0,p.idx=-1,C.vertexWeights(p,m,v),C.vertexWeights(p,M,R)},C.checkForRightSplice=function(T,p){var m=C.regionBelow(p),v=p.eUp,M=m.eUp;if(o.vertLeq(v.Org,M.Org)){if(o.edgeSign(M.Dst,v.Org,M.Org)>0)return!1;o.vertEq(v.Org,M.Org)?v.Org!==M.Org&&(T.pq.delete(v.Org.pqHandle),C.spliceMergeVertices(T,M.Oprev,v)):(T.mesh.splitEdge(M.Sym),T.mesh.splice(v,M.Oprev),p.dirty=m.dirty=!0)}else{if(o.edgeSign(v.Dst,M.Org,v.Org)<0)return!1;C.regionAbove(p).dirty=p.dirty=!0,T.mesh.splitEdge(v.Sym),T.mesh.splice(M.Oprev,v)}return!0},C.checkForLeftSplice=function(T,p){var m=C.regionBelow(p),v=p.eUp,M=m.eUp,R;if(a(!o.vertEq(v.Dst,M.Dst)),o.vertLeq(v.Dst,M.Dst)){if(o.edgeSign(v.Dst,M.Dst,v.Org)<0)return!1;C.regionAbove(p).dirty=p.dirty=!0,R=T.mesh.splitEdge(v),T.mesh.splice(M.Sym,R),R.Lface.inside=p.inside}else{if(o.edgeSign(M.Dst,v.Dst,M.Org)>0)return!1;p.dirty=m.dirty=!0,R=T.mesh.splitEdge(M),T.mesh.splice(v.Lnext,M.Sym),R.Rface.inside=p.inside}return!0},C.checkForIntersect=function(T,p){var m=C.regionBelow(p),v=p.eUp,M=m.eUp,R=v.Org,E=M.Org,P=v.Dst,k=M.Dst,O,B,D=new c,A,L;if(a(!o.vertEq(k,P)),a(o.edgeSign(P,T.event,R)<=0),a(o.edgeSign(k,T.event,E)>=0),a(R!==T.event&&E!==T.event),a(!p.fixUpperEdge&&!m.fixUpperEdge),R===E||(O=Math.min(R.t,P.t),B=Math.max(E.t,k.t),O>B))return!1;if(o.vertLeq(R,E)){if(o.edgeSign(k,R,E)>0)return!1}else if(o.edgeSign(P,E,R)<0)return!1;return C.debugEvent(T),o.intersect(P,R,k,E,D),a(Math.min(R.t,P.t)<=D.t),a(D.t<=Math.max(E.t,k.t)),a(Math.min(k.s,P.s)<=D.s),a(D.s<=Math.max(E.s,R.s)),o.vertLeq(D,T.event)&&(D.s=T.event.s,D.t=T.event.t),A=o.vertLeq(R,E)?R:E,o.vertLeq(A,D)&&(D.s=A.s,D.t=A.t),o.vertEq(D,R)||o.vertEq(D,E)?(C.checkForRightSplice(T,p),!1):!o.vertEq(P,T.event)&&o.edgeSign(P,T.event,D)>=0||!o.vertEq(k,T.event)&&o.edgeSign(k,T.event,D)<=0?k===T.event?(T.mesh.splitEdge(v.Sym),T.mesh.splice(M.Sym,v),p=C.topLeftRegion(T,p),v=C.regionBelow(p).eUp,C.finishLeftRegions(T,C.regionBelow(p),m),C.addRightEdges(T,p,v.Oprev,v,v,!0),!0):P===T.event?(T.mesh.splitEdge(M.Sym),T.mesh.splice(v.Lnext,M.Oprev),m=p,p=C.topRightRegion(p),L=C.regionBelow(p).eUp.Rprev,m.eUp=M.Oprev,M=C.finishLeftRegions(T,m,null),C.addRightEdges(T,p,M.Onext,v.Rprev,L,!0),!0):(o.edgeSign(P,T.event,D)>=0&&(C.regionAbove(p).dirty=p.dirty=!0,T.mesh.splitEdge(v.Sym),v.Org.s=T.event.s,v.Org.t=T.event.t),o.edgeSign(k,T.event,D)<=0&&(p.dirty=m.dirty=!0,T.mesh.splitEdge(M.Sym),M.Org.s=T.event.s,M.Org.t=T.event.t),!1):(T.mesh.splitEdge(v.Sym),T.mesh.splitEdge(M.Sym),T.mesh.splice(M.Oprev,v),v.Org.s=D.s,v.Org.t=D.t,v.Org.pqHandle=T.pq.insert(v.Org),C.getIntersectData(T,v.Org,R,P,E,k),C.regionAbove(p).dirty=p.dirty=m.dirty=!0,!1)},C.walkDirtyRegions=function(T,p){for(var m=C.regionBelow(p),v,M;;){for(;m.dirty;)p=m,m=C.regionBelow(m);if(!p.dirty&&(m=p,p=C.regionAbove(p),p===null||!p.dirty))return;if(p.dirty=!1,v=p.eUp,M=m.eUp,v.Dst!==M.Dst&&C.checkForLeftSplice(T,p)&&(m.fixUpperEdge?(C.deleteRegion(T,m),T.mesh.delete(M),m=C.regionBelow(p),M=m.eUp):p.fixUpperEdge&&(C.deleteRegion(T,p),T.mesh.delete(v),p=C.regionAbove(m),v=p.eUp)),v.Org!==M.Org)if(v.Dst!==M.Dst&&!p.fixUpperEdge&&!m.fixUpperEdge&&(v.Dst===T.event||M.Dst===T.event)){if(C.checkForIntersect(T,p))return}else C.checkForRightSplice(T,p);v.Org===M.Org&&v.Dst===M.Dst&&(C.addWinding(M,v),C.deleteRegion(T,p),T.mesh.delete(v),p=C.regionAbove(m))}},C.connectRightVertex=function(T,p,m){var v,M=m.Onext,R=C.regionBelow(p),E=p.eUp,P=R.eUp,k=!1;if(E.Dst!==P.Dst&&C.checkForIntersect(T,p),o.vertEq(E.Org,T.event)&&(T.mesh.splice(M.Oprev,E),p=C.topLeftRegion(T,p),M=C.regionBelow(p).eUp,C.finishLeftRegions(T,C.regionBelow(p),R),k=!0),o.vertEq(P.Org,T.event)&&(T.mesh.splice(m,P.Oprev),m=C.finishLeftRegions(T,R,null),k=!0),k){C.addRightEdges(T,p,m.Onext,M,M,!0);return}o.vertLeq(P.Org,E.Org)?v=P.Oprev:v=E,v=T.mesh.connect(m.Lprev,v),C.addRightEdges(T,p,v,v.Onext,v.Onext,!1),v.Sym.activeRegion.fixUpperEdge=!0,C.walkDirtyRegions(T,p)},C.connectLeftDegenerate=function(T,p,m){var v,M,R,E,P;if(v=p.eUp,o.vertEq(v.Org,m)){a(!1),C.spliceMergeVertices(T,v,m.anEdge);return}if(!o.vertEq(v.Dst,m)){T.mesh.splitEdge(v.Sym),p.fixUpperEdge&&(T.mesh.delete(v.Onext),p.fixUpperEdge=!1),T.mesh.splice(m.anEdge,v),C.sweepEvent(T,m);return}a(!1),p=C.topRightRegion(p),P=C.regionBelow(p),R=P.eUp.Sym,M=E=R.Onext,P.fixUpperEdge&&(a(M!==R),C.deleteRegion(T,P),T.mesh.delete(R),R=M.Oprev),T.mesh.splice(m.anEdge,R),o.edgeGoesLeft(M)||(M=null),C.addRightEdges(T,p,R.Onext,E,M,!0)},C.connectLeftVertex=function(T,p){var m,v,M,R,E,P,k=new b;if(k.eUp=p.anEdge.Sym,m=T.dict.search(k).key,v=C.regionBelow(m),!!v){if(R=m.eUp,E=v.eUp,o.edgeSign(R.Dst,p,R.Org)===0){C.connectLeftDegenerate(T,m,p);return}if(M=o.vertLeq(E.Dst,R.Dst)?m:v,m.inside||M.fixUpperEdge){if(M===m)P=T.mesh.connect(p.anEdge.Sym,R.Lnext);else{var O=T.mesh.connect(E.Dnext,p.anEdge);P=O.Sym}M.fixUpperEdge?C.fixUpperEdge(T,M,P):C.computeWinding(T,C.addRegionBelow(T,m,P)),C.sweepEvent(T,p)}else C.addRightEdges(T,m,p.anEdge,p.anEdge,null,!0)}},C.sweepEvent=function(T,p){T.event=p,C.debugEvent(T);for(var m=p.anEdge;m.activeRegion===null;)if(m=m.Onext,m===p.anEdge){C.connectLeftVertex(T,p);return}var v=C.topLeftRegion(T,m.activeRegion);a(v!==null);var M=C.regionBelow(v),R=M.eUp,E=C.finishLeftRegions(T,M,null);E.Onext===R?C.connectRightVertex(T,v,E):C.addRightEdges(T,v,E.Onext,R,R,!0)},C.addSentinel=function(T,p,m,v){var M=new b,R=T.mesh.makeEdge();R.Org.s=m,R.Org.t=v,R.Dst.s=p,R.Dst.t=v,T.event=R.Dst,M.eUp=R,M.windingNumber=0,M.inside=!1,M.fixUpperEdge=!1,M.sentinel=!0,M.dirty=!1,M.nodeUp=T.dict.insert(M)},C.initEdgeDict=function(T){T.dict=new f(T,C.edgeLeq);var p=T.bmax[0]-T.bmin[0],m=T.bmax[1]-T.bmin[1],v=T.bmin[0]-p,M=T.bmax[0]+p,R=T.bmin[1]-m,E=T.bmax[1]+m;C.addSentinel(T,v,M,R),C.addSentinel(T,v,M,E)},C.doneEdgeDict=function(T){for(var p,m=0;(p=T.dict.min().key)!==null;)p.sentinel||(a(p.fixUpperEdge),a(++m===1)),a(p.windingNumber===0),C.deleteRegion(T,p)},C.removeDegenerateEdges=function(T){var p,m,v,M=T.mesh.eHead;for(p=M.next;p!==M;p=m)m=p.next,v=p.Lnext,o.vertEq(p.Org,p.Dst)&&p.Lnext.Lnext!==p&&(C.spliceMergeVertices(T,v,p),T.mesh.delete(p),p=v,v=p.Lnext),v.Lnext===p&&(v!==p&&((v===m||v===m.Sym)&&(m=m.next),T.mesh.delete(v)),(p===m||p===m.Sym)&&(m=m.next),T.mesh.delete(p))},C.initPriorityQ=function(T){var p,m,v,M=0;for(v=T.mesh.vHead,m=v.next;m!==v;m=m.next)M++;for(M+=8,p=T.pq=new S(M,o.vertLeq),v=T.mesh.vHead,m=v.next;m!==v;m=m.next)m.pqHandle=p.insert(m);return m!==v?!1:(p.init(),!0)},C.donePriorityQ=function(T){T.pq=null},C.removeDegenerateFaces=function(T,p){var m,v,M;for(m=p.fHead.next;m!==p.fHead;m=v)v=m.next,M=m.anEdge,a(M.Lnext!==M),M.Lnext.Lnext===M&&(C.addWinding(M.Onext,M),T.mesh.delete(M));return!0},C.computeInterior=function(T){var p,m;if(C.removeDegenerateEdges(T),!C.initPriorityQ(T))return!1;for(C.initEdgeDict(T);(p=T.pq.extractMin())!==null;){for(;m=T.pq.min(),!(m===null||!o.vertEq(m,p));)m=T.pq.extractMin(),C.spliceMergeVertices(T,p.anEdge,m.anEdge);C.sweepEvent(T,p)}return T.event=T.dict.min().key.eUp.Org,C.debugEvent(T),C.doneEdgeDict(T),C.donePriorityQ(T),C.removeDegenerateFaces(T,T.mesh)?(T.mesh.check(),!0):!1};function N(){this.mesh=null,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=i.WINDING_ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}N.prototype={dot_:function(p,m){return p[0]*m[0]+p[1]*m[1]+p[2]*m[2]},normalize_:function(p){var m=p[0]*p[0]+p[1]*p[1]+p[2]*p[2];a(m>0),m=Math.sqrt(m),p[0]/=m,p[1]/=m,p[2]/=m},longAxis_:function(p){var m=0;return Math.abs(p[1])>Math.abs(p[0])&&(m=1),Math.abs(p[2])>Math.abs(p[m])&&(m=2),m},computeNormal_:function(p){var m,v,M,R,E,P,k=[0,0,0],O=[0,0,0],B=[0,0,0],D=[0,0,0],A=[0,0,0],L=[null,null,null],U=[null,null,null],Y=this.mesh.vHead,q;for(m=Y.next,q=0;q<3;++q)R=m.coords[q],O[q]=R,U[q]=m,k[q]=R,L[q]=m;for(m=Y.next;m!==Y;m=m.next)for(q=0;q<3;++q)R=m.coords[q],R<O[q]&&(O[q]=R,U[q]=m),R>k[q]&&(k[q]=R,L[q]=m);if(q=0,k[1]-O[1]>k[0]-O[0]&&(q=1),k[2]-O[2]>k[q]-O[q]&&(q=2),O[q]>=k[q]){p[0]=0,p[1]=0,p[2]=1;return}for(P=0,v=U[q],M=L[q],B[0]=v.coords[0]-M.coords[0],B[1]=v.coords[1]-M.coords[1],B[2]=v.coords[2]-M.coords[2],m=Y.next;m!==Y;m=m.next)D[0]=m.coords[0]-M.coords[0],D[1]=m.coords[1]-M.coords[1],D[2]=m.coords[2]-M.coords[2],A[0]=B[1]*D[2]-B[2]*D[1],A[1]=B[2]*D[0]-B[0]*D[2],A[2]=B[0]*D[1]-B[1]*D[0],E=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],E>P&&(P=E,p[0]=A[0],p[1]=A[1],p[2]=A[2]);P<=0&&(p[0]=p[1]=p[2]=0,p[this.longAxis_(B)]=1)},checkOrientation_:function(){var p,m,v=this.mesh.fHead,M,R=this.mesh.vHead,E;for(p=0,m=v.next;m!==v;m=m.next)if(E=m.anEdge,!(E.winding<=0))do p+=(E.Org.s-E.Dst.s)*(E.Org.t+E.Dst.t),E=E.Lnext;while(E!==m.anEdge);if(p<0){for(M=R.next;M!==R;M=M.next)M.t=-M.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},projectPolygon_:function(){var p,m=this.mesh.vHead,v=[0,0,0],M,R,E,P,k=!1;for(v[0]=this.normal[0],v[1]=this.normal[1],v[2]=this.normal[2],v[0]===0&&v[1]===0&&v[2]===0&&(this.computeNormal_(v),k=!0),M=this.sUnit,R=this.tUnit,E=this.longAxis_(v),M[E]=0,M[(E+1)%3]=1,M[(E+2)%3]=0,R[E]=0,R[(E+1)%3]=0,R[(E+2)%3]=v[E]>0?1:-1,p=m.next;p!==m;p=p.next)p.s=this.dot_(p.coords,M),p.t=this.dot_(p.coords,R);for(k&&this.checkOrientation_(),P=!0,p=m.next;p!==m;p=p.next)P?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,P=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.t))},addWinding_:function(p,m){p.winding+=m.winding,p.Sym.winding+=m.Sym.winding},tessellateMonoRegion_:function(p,m){var v,M;for(v=m.anEdge,a(v.Lnext!==v&&v.Lnext.Lnext!==v);o.vertLeq(v.Dst,v.Org);v=v.Lprev);for(;o.vertLeq(v.Org,v.Dst);v=v.Lnext);for(M=v.Lprev;v.Lnext!==M;)if(o.vertLeq(v.Dst,M.Org)){for(;M.Lnext!==v&&(o.edgeGoesLeft(M.Lnext)||o.edgeSign(M.Org,M.Dst,M.Lnext.Dst)<=0);){var R=p.connect(M.Lnext,M);M=R.Sym}M=M.Lprev}else{for(;M.Lnext!==v&&(o.edgeGoesRight(v.Lprev)||o.edgeSign(v.Dst,v.Org,v.Lprev.Org)>=0);){var R=p.connect(v,v.Lprev);v=R.Sym}v=v.Lnext}for(a(M.Lnext!==v);M.Lnext.Lnext!==v;){var R=p.connect(M.Lnext,M);M=R.Sym}return!0},tessellateInterior_:function(p){var m,v;for(m=p.fHead.next;m!==p.fHead;m=v)if(v=m.next,m.inside&&!this.tessellateMonoRegion_(p,m))return!1;return!0},discardExterior_:function(p){var m,v;for(m=p.fHead.next;m!==p.fHead;m=v)v=m.next,m.inside||p.zapFace(m)},setWindingNumber_:function(p,m,v){var M,R;for(M=p.eHead.next;M!==p.eHead;M=R)R=M.next,M.Rface.inside!==M.Lface.inside?M.winding=M.Lface.inside?m:-m:v?p.delete(M):M.winding=0},getNeighbourFace_:function(p){return!p.Rface||!p.Rface.inside?-1:p.Rface.n},outputPolymesh_:function(p,m,v,M){var R,E,P,k=0,O=0,B,D;for(v>3&&p.mergeConvexFaces(v),R=p.vHead.next;R!==p.vHead;R=R.next)R.n=-1;for(E=p.fHead.next;E!==p.fHead;E=E.next)if(E.n=-1,!!E.inside){P=E.anEdge,B=0;do R=P.Org,R.n===-1&&(R.n=O,O++),B++,P=P.Lnext;while(P!==E.anEdge);a(B<=v),E.n=k,++k}for(this.elementCount=k,m===i.CONNECTED_POLYGONS&&(k*=2),this.elements=[],this.elements.length=k*v,this.vertexCount=O,this.vertices=[],this.vertices.length=O*M,this.vertexIndices=[],this.vertexIndices.length=O,R=p.vHead.next;R!==p.vHead;R=R.next)if(R.n!==-1){var A=R.n*M;this.vertices[A+0]=R.coords[0],this.vertices[A+1]=R.coords[1],M>2&&(this.vertices[A+2]=R.coords[2]),this.vertexIndices[R.n]=R.idx}var L=0;for(E=p.fHead.next;E!==p.fHead;E=E.next)if(E.inside){P=E.anEdge,B=0;do R=P.Org,this.elements[L++]=R.n,B++,P=P.Lnext;while(P!==E.anEdge);for(D=B;D<v;++D)this.elements[L++]=-1;if(m===i.CONNECTED_POLYGONS){P=E.anEdge;do this.elements[L++]=this.getNeighbourFace_(P),P=P.Lnext;while(P!==E.anEdge);for(D=B;D<v;++D)this.elements[L++]=-1}}},outputContours_:function(p,m){var v,M,R,E=0,P=0;for(this.vertexCount=0,this.elementCount=0,v=p.fHead.next;v!==p.fHead;v=v.next)if(v.inside){R=M=v.anEdge;do this.vertexCount++,M=M.Lnext;while(M!==R);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*m,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var k=0,O=0,B=0;for(E=0,v=p.fHead.next;v!==p.fHead;v=v.next)if(v.inside){P=0,R=M=v.anEdge;do this.vertices[k++]=M.Org.coords[0],this.vertices[k++]=M.Org.coords[1],m>2&&(this.vertices[k++]=M.Org.coords[2]),this.vertexIndices[O++]=M.Org.idx,P++,M=M.Lnext;while(M!==R);this.elements[B++]=E,this.elements[B++]=P,E+=P}},addContour:function(p,m){var v,M;for(this.mesh===null&&(this.mesh=new h),p<2&&(p=2),p>3&&(p=3),v=null,M=0;M<m.length;M+=p)v===null?(v=this.mesh.makeEdge(),this.mesh.splice(v,v.Sym)):(this.mesh.splitEdge(v),v=v.Lnext),v.Org.coords[0]=m[M+0],v.Org.coords[1]=m[M+1],p>2?v.Org.coords[2]=m[M+2]:v.Org.coords[2]=0,v.Org.idx=this.vertexIndexCounter++,v.winding=1,v.Sym.winding=-1},tesselate:function(p,m,v,M,R){if(this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,R&&(this.normal[0]=R[0],this.normal[1]=R[1],this.normal[2]=R[2]),this.windingRule=p,M<2&&(M=2),M>3&&(M=3),!this.mesh)return!1;this.projectPolygon_(),C.computeInterior(this);var E=this.mesh;return m===i.BOUNDARY_CONTOURS?this.setWindingNumber_(E,1,!0):this.tessellateInterior_(E),E.check(),m===i.BOUNDARY_CONTOURS?this.outputContours_(E,M):this.outputPolymesh_(E,m,v,M),!0}}},function(e,r){e.exports=i;var n=Object.prototype.hasOwnProperty;function i(){for(var o={},a=0;a<arguments.length;a++){var c=arguments[a];for(var l in c)n.call(c,l)&&(o[l]=c[l])}return o}},function(e,r,n){n.r(r),n.d(r,"createShaders",function(){return d}),n.d(r,"applyShader",function(){return f}),n.d(r,"createCloudShaders",function(){return y}),n.d(r,"applyCloudShader",function(){return S});var i=n(19),o=n.n(i),a=n(83),c=n(84),l=n(85),u=n(86);n(1).glMatrix.setMatrixArrayType(Array);var h=Symbol("shaders");function d(b){b[h]=[];for(var C=0;C<16;C++){var N=[],T=!!(C&1),p=!!(C&2),m=!!(C&4),v=!!(C&8);T&&N.push("#define TEXTURE 1"),p&&N.push("#define FILTER 1"),m&&N.push("#define GRADIENT 1"),v&&N.push("#define CLIPPATH 1");var M="".concat(N.join(`
42
- `),`
43
- `),R=[];T&&R.push("uniform sampler2D u_texSampler;"),v&&R.push("uniform sampler2D u_clipSampler;"),b[h][C]=[M+R.join(`
44
- `)+c.default,M+a.default]}}function f(b){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},N=C.hasTexture,T=N===void 0?!1:N,p=C.hasFilter,m=p===void 0?!1:p,v=C.hasGradient,M=v===void 0?!1:v,R=C.hasClipPath,E=R===void 0?!1:R,P=T|m<<1|M<<2|E<<3,k=b[h][P];Array.isArray(k)&&(k=b.createProgram.apply(b,o()(k)),b[h][P]=k),b.program!==k&&b.useProgram(k,{a_color:{type:"UNSIGNED_BYTE",normalize:!0}})}var g=[];function y(b){for(var C=0;C<64;C++){var N=[],T=!!(C&1),p=!!(C&2),m=!!(C&4),v=!!(C&8),M=!!(C&16),R=!!(C&32);T&&N.push("#define TEXTURE 1"),p&&N.push("#define FILTER 1"),m&&N.push("#define GRADIENT 1"),v&&N.push("#define CLOUDCOLOR 1"),M&&N.push("#define CLOUDFILTER 1"),R&&N.push("#define CLIPPATH 1");var E="".concat(N.join(`
45
- `),`
46
- `),P=[];if(T){P.push("uniform sampler2D u_texSampler;");for(var k=0;k<12;k++)P.push("uniform sampler2D u_texFrame".concat(k,";"))}R&&P.push("uniform sampler2D u_clipSampler;"),g[C]=[E+P.join(`
47
- `)+u.default,E+l.default]}}function S(b){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},N=C.hasTexture,T=N===void 0?!1:N,p=C.hasFilter,m=p===void 0?!1:p,v=C.hasGradient,M=v===void 0?!1:v,R=C.hasCloudColor,E=R===void 0?!1:R,P=C.hasCloudFilter,k=P===void 0?!1:P,O=C.hasClipPath,B=O===void 0?!1:O,D=T|m<<1|M<<2|E<<3|k<<4|B<<5,A=g[D];Array.isArray(A)&&(A=b.createProgram.apply(b,o()(A)),g[D]=A),b.program!==A&&b.useProgram(A,{a_color:{type:"UNSIGNED_BYTE",normalize:!0},a_fillCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_strokeCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_frameIndex:{type:"UNSIGNED_BYTE",normalize:!1}})}},function(e,r,n){n.r(r),r.default=`attribute vec3 a_vertexPosition;
48
- attribute vec4 a_color;
49
- varying vec4 vColor;
50
- varying float flagBackground;
51
- uniform vec2 u_resolution;
52
- uniform mat3 viewMatrix;
53
- uniform mat3 projectionMatrix;
54
-
55
- #ifdef TEXTURE
56
- attribute vec3 a_vertexTextureCoord;
57
- varying vec3 vTextureCoord;
58
- attribute vec4 a_sourceRect;
59
- varying vec4 vSourceRect;
60
- #endif
61
-
62
- #ifdef CLIPPATH
63
- attribute vec2 a_clipUV;
64
- varying vec2 vClipUV;
65
- #endif
66
-
67
- #ifdef GRADIENT
68
- uniform float u_radialGradientVector[6];
69
- varying vec3 vGradientVector1;
70
- varying vec3 vGradientVector2;
71
- #endif
72
-
73
- void main() {
74
- gl_PointSize = 1.0;
75
-
76
- vec3 pos = projectionMatrix * viewMatrix * vec3(a_vertexPosition.xy, 1.0);
77
- gl_Position = vec4(pos.xy, 1.0, 1.0);
78
-
79
- #ifdef GRADIENT
80
- vec3 vg1 = viewMatrix * vec3(u_radialGradientVector[0], u_radialGradientVector[1], 1.0);
81
- vec3 vg2 = viewMatrix * vec3(u_radialGradientVector[3], u_radialGradientVector[4], 1.0);
82
- float h = u_resolution.y;
83
- vg1.y = h - vg1.y;
84
- vg2.y = h - vg2.y;
85
- vGradientVector1 = vec3(vg1.xy, u_radialGradientVector[2]);
86
- vGradientVector2 = vec3(vg2.xy, u_radialGradientVector[5]);
87
- #endif
88
-
89
- flagBackground = a_vertexPosition.z;
90
- vColor = a_color;
91
-
92
- #ifdef TEXTURE
93
- vTextureCoord = a_vertexTextureCoord;
94
- vSourceRect = a_sourceRect;
95
- #endif
96
-
97
- #ifdef CLIPPATH
98
- vClipUV = a_clipUV;
99
- #endif
100
- }`},function(e,r,n){n.r(r),r.default=`precision mediump float;
101
-
102
- varying vec4 vColor;
103
- varying float flagBackground;
104
-
105
- #ifdef TEXTURE
106
- varying vec3 vTextureCoord;
107
- varying vec4 vSourceRect;
108
- #endif
109
-
110
- #ifdef CLIPPATH
111
- varying vec2 vClipUV;
112
- #endif
113
-
114
- #ifdef FILTER
115
- uniform int u_filterFlag;
116
- uniform float u_colorMatrix[20];
117
- #endif
118
-
119
- #ifdef GRADIENT
120
- varying vec3 vGradientVector1;
121
- varying vec3 vGradientVector2;
122
- uniform float u_colorSteps[40];
123
- uniform int u_gradientType;
124
- // uniform float u_radialGradientVector[6];
125
-
126
- void gradient(inout vec4 color, vec3 gv1, vec3 gv2, float colorSteps[40]) {
127
- float t;
128
- // center circle radius
129
- float cr = gv1.z;
130
- // focal circle radius
131
- float fr = gv2.z;
132
-
133
- if(cr > 0.0 || fr > 0.0) {
134
- // radial gradient
135
- vec2 center = gv1.xy;
136
- vec2 focal = gv2.xy;
137
- float x = focal.x - gl_FragCoord.x;
138
- float y = focal.y - gl_FragCoord.y;
139
- float dx = focal.x - center.x;
140
- float dy = focal.y - center.y;
141
- float dr = cr - fr;
142
- float a = dx * dx + dy * dy - dr * dr;
143
- float b = -2.0 * (y * dy + x * dx + fr * dr);
144
- float c = x * x + y * y - fr * fr;
145
- t = 1.0 - 0.5 * (1.0 / a) * (-b + sqrt(b * b - 4.0 * a * c));
146
- } else {
147
- // linear gradient
148
- vec2 v1 = gl_FragCoord.xy - gv1.xy;
149
- vec2 v2 = gv2.xy - gv1.xy;
150
- t = (v1.x * v2.x + v1.y * v2.y) / (v2.x * v2.x + v2.y * v2.y);
151
- }
152
-
153
- vec4 colors[8];
154
- colors[0] = vec4(colorSteps[1], colorSteps[2], colorSteps[3], colorSteps[4]);
155
- colors[1] = vec4(colorSteps[6], colorSteps[7], colorSteps[8], colorSteps[9]);
156
- colors[2] = vec4(colorSteps[11], colorSteps[12], colorSteps[13], colorSteps[14]);
157
- colors[3] = vec4(colorSteps[16], colorSteps[17], colorSteps[18], colorSteps[19]);
158
- colors[4] = vec4(colorSteps[21], colorSteps[22], colorSteps[23], colorSteps[24]);
159
- colors[5] = vec4(colorSteps[26], colorSteps[27], colorSteps[28], colorSteps[29]);
160
- colors[6] = vec4(colorSteps[31], colorSteps[32], colorSteps[33], colorSteps[34]);
161
- colors[7] = vec4(colorSteps[36], colorSteps[37], colorSteps[38], colorSteps[39]);
162
-
163
- float steps[8];
164
- steps[0] = colorSteps[0];
165
- steps[1] = colorSteps[5];
166
- steps[2] = colorSteps[10];
167
- steps[3] = colorSteps[15];
168
- steps[4] = colorSteps[20];
169
- steps[5] = colorSteps[25];
170
- steps[6] = colorSteps[30];
171
- steps[7] = colorSteps[35];
172
-
173
- color = colors[0];
174
- for (int i = 1; i < 8; i++) {
175
- if (steps[i] < 0.0 || steps[i] > 1.0) {
176
- break;
177
- }
178
- if(steps[i] == steps[i - 1]) {
179
- color = colors[i];
180
- } else {
181
- color = mix(color, colors[i], clamp((t - steps[i - 1]) / (steps[i] - steps[i - 1]), 0.0, 1.0));
182
- }
183
- if (steps[i] >= t) {
184
- break;
185
- }
186
- }
187
- }
188
- #endif
189
-
190
- #ifdef FILTER
191
- void transformColor(inout vec4 color, in float colorMatrix[20]) {
192
- float r = color.r, g = color.g, b = color.b, a = color.a;
193
- color[0] = colorMatrix[0] * r + colorMatrix[1] * g + colorMatrix[2] * b + colorMatrix[3] * a + colorMatrix[4];
194
- color[1] = colorMatrix[5] * r + colorMatrix[6] * g + colorMatrix[7] * b + colorMatrix[8] * a + colorMatrix[9];
195
- color[2] = colorMatrix[10] * r + colorMatrix[11] * g + colorMatrix[12] * b + colorMatrix[13] * a + colorMatrix[14];
196
- color[3] = colorMatrix[15] * r + colorMatrix[16] * g + colorMatrix[17] * b + colorMatrix[18] * a + colorMatrix[19];
197
- }
198
- #endif
199
-
200
- void main() {
201
- vec4 color = vColor;
202
- float opacity = abs(flagBackground);
203
-
204
- #ifdef GRADIENT
205
- if(u_gradientType > 0 && flagBackground > 0.0 || u_gradientType == 0 && flagBackground <= 0.0) {
206
- gradient(color, vGradientVector1, vGradientVector2, u_colorSteps);
207
- }
208
- #endif
209
-
210
- if(opacity < 1.0) {
211
- color.a *= opacity;
212
- }
213
-
214
- #ifdef TEXTURE
215
- if(flagBackground > 0.0) {
216
- vec3 texCoord = vTextureCoord;
217
-
218
- if(texCoord.z == 1.0) {
219
- texCoord = fract(texCoord);
220
- }
221
-
222
- if(texCoord.x <= 1.0 && texCoord.x >= 0.0
223
- && texCoord.y <= 1.0 && texCoord.y >= 0.0) {
224
- if(vSourceRect.z > 0.0) {
225
- texCoord.x = vSourceRect.x + texCoord.x * vSourceRect.z;
226
- texCoord.y = 1.0 - (vSourceRect.y + (1.0 - texCoord.y) * vSourceRect.w);
227
- }
228
- vec4 texColor = texture2D(u_texSampler, texCoord.xy);
229
- float alpha = texColor.a;
230
- if(opacity < 1.0) {
231
- texColor.a *= opacity;
232
- alpha *= mix(0.465, 1.0, opacity);
233
- }
234
- // color = mix(color, texColor, texColor.a);
235
- color.rgb = mix(color.rgb, texColor.rgb, alpha);
236
- // color.rgb = mix(texColor.rgb, color.rgb, color.a);
237
- color.rgb = mix(texColor.rgb, color.rgb, clamp(color.a / max(0.0001, texColor.a), 0.0, 1.0));
238
- color.a = texColor.a + (1.0 - texColor.a) * color.a;
239
- }
240
- }
241
- #endif
242
-
243
- #ifdef FILTER
244
- if(u_filterFlag > 0) {
245
- transformColor(color, u_colorMatrix);
246
- }
247
- #endif
248
-
249
- #ifdef CLIPPATH
250
- float clip = texture2D(u_clipSampler, vClipUV).r;
251
- color *= clip;
252
- #endif
253
-
254
- gl_FragColor = color;
255
- }`},function(e,r,n){n.r(r),r.default=`attribute vec3 a_vertexPosition;
256
- attribute vec4 a_color;
257
- varying vec4 vColor;
258
- varying float flagBackground;
259
- attribute vec3 a_transform0;
260
- attribute vec3 a_transform1;
261
- uniform vec2 u_resolution;
262
- uniform mat3 viewMatrix;
263
- uniform mat3 projectionMatrix;
264
-
265
- #ifdef TEXTURE
266
- attribute vec3 a_vertexTextureCoord;
267
- varying vec3 vTextureCoord;
268
- attribute float a_frameIndex;
269
- varying float frameIndex;
270
- attribute vec4 a_sourceRect;
271
- varying vec4 vSourceRect;
272
- #endif
273
-
274
- #ifdef CLIPPATH
275
- attribute vec2 a_clipUV;
276
- varying vec2 vClipUV;
277
- #endif
278
-
279
- #ifdef CLOUDFILTER
280
- attribute vec4 a_colorCloud0;
281
- attribute vec4 a_colorCloud1;
282
- attribute vec4 a_colorCloud2;
283
- attribute vec4 a_colorCloud3;
284
- attribute vec4 a_colorCloud4;
285
- varying vec4 colorCloud0;
286
- varying vec4 colorCloud1;
287
- varying vec4 colorCloud2;
288
- varying vec4 colorCloud3;
289
- varying vec4 colorCloud4;
290
- #endif
291
-
292
- #ifdef CLOUDCOLOR
293
- attribute vec4 a_fillCloudColor;
294
- attribute vec4 a_strokeCloudColor;
295
- #endif
296
-
297
- #ifdef GRADIENT
298
- uniform float u_radialGradientVector[6];
299
- varying vec3 vGradientVector1;
300
- varying vec3 vGradientVector2;
301
- #endif
302
-
303
- void main() {
304
- gl_PointSize = 1.0;
305
-
306
- mat3 modelMatrix = mat3(
307
- a_transform0.x, a_transform1.x, 0,
308
- a_transform0.y, a_transform1.y, 0,
309
- a_transform0.z, a_transform1.z, 1
310
- );
311
-
312
- vec3 pos = projectionMatrix * viewMatrix * modelMatrix * vec3(a_vertexPosition.xy, 1.0);
313
- gl_Position = vec4(pos.xy, 1.0, 1.0);
314
-
315
- #ifdef GRADIENT
316
- vec3 vg1 = viewMatrix * vec3(u_radialGradientVector[0], u_radialGradientVector[1], 1.0);
317
- vec3 vg2 = viewMatrix * vec3(u_radialGradientVector[3], u_radialGradientVector[4], 1.0);
318
- float h = u_resolution.y;
319
- vg1.y = h - vg1.y;
320
- vg2.y = h - vg2.y;
321
- vGradientVector1 = vec3(vg1.xy, u_radialGradientVector[2]);
322
- vGradientVector2 = vec3(vg2.xy, u_radialGradientVector[5]);
323
- #endif
324
-
325
- flagBackground = a_vertexPosition.z;
326
-
327
- #ifdef CLOUDCOLOR
328
- if(flagBackground > 0.0) {
329
- vColor = mix(a_color, a_fillCloudColor, a_fillCloudColor.a);
330
- } else {
331
- vColor = mix(a_color, a_strokeCloudColor, a_strokeCloudColor.a);
332
- }
333
- #else
334
- vColor = a_color;
335
- #endif
336
-
337
- #ifdef TEXTURE
338
- vTextureCoord = a_vertexTextureCoord;
339
- frameIndex = a_frameIndex;
340
- vSourceRect = a_sourceRect;
341
- #endif
342
-
343
- #ifdef CLIPPATH
344
- vClipUV = a_clipUV;
345
- #endif
346
-
347
- #ifdef CLOUDFILTER
348
- colorCloud0 = a_colorCloud0;
349
- colorCloud1 = a_colorCloud1;
350
- colorCloud2 = a_colorCloud2;
351
- colorCloud3 = a_colorCloud3;
352
- colorCloud4 = a_colorCloud4;
353
- #endif
354
- }`},function(e,r,n){n.r(r),r.default=`precision mediump float;
355
-
356
- varying vec4 vColor;
357
- varying float flagBackground;
358
-
359
- #ifdef TEXTURE
360
- varying float frameIndex;
361
- varying vec3 vTextureCoord;
362
- varying vec4 vSourceRect;
363
- #endif
364
-
365
- #ifdef CLIPPATH
366
- varying vec2 vClipUV;
367
- #endif
368
-
369
- #ifdef FILTER
370
- uniform int u_filterFlag;
371
- uniform float u_colorMatrix[20];
372
- #endif
373
-
374
- #ifdef CLOUDFILTER
375
- varying vec4 colorCloud0;
376
- varying vec4 colorCloud1;
377
- varying vec4 colorCloud2;
378
- varying vec4 colorCloud3;
379
- varying vec4 colorCloud4;
380
- #endif
381
-
382
- #ifdef GRADIENT
383
- varying vec3 vGradientVector1;
384
- varying vec3 vGradientVector2;
385
- uniform float u_colorSteps[40];
386
- uniform int u_gradientType;
387
-
388
- void gradient(inout vec4 color, vec3 gv1, vec3 gv2, float colorSteps[40]) {
389
- float t;
390
- // center circle radius
391
- float cr = gv1.z;
392
- // focal circle radius
393
- float fr = gv2.z;
394
-
395
- if(cr > 0.0 || fr > 0.0) {
396
- // radial gradient
397
- vec2 center = gv1.xy;
398
- vec2 focal = gv2.xy;
399
- float x = focal.x - gl_FragCoord.x;
400
- float y = focal.y - gl_FragCoord.y;
401
- float dx = focal.x - center.x;
402
- float dy = focal.y - center.y;
403
- float dr = cr - fr;
404
- float a = dx * dx + dy * dy - dr * dr;
405
- float b = -2.0 * (y * dy + x * dx + fr * dr);
406
- float c = x * x + y * y - fr * fr;
407
- t = 1.0 - 0.5 * (1.0 / a) * (-b + sqrt(b * b - 4.0 * a * c));
408
- } else {
409
- // linear gradient
410
- vec2 v1 = gl_FragCoord.xy - gv1.xy;
411
- vec2 v2 = gv2.xy - gv1.xy;
412
- t = (v1.x * v2.x + v1.y * v2.y) / (v2.x * v2.x + v2.y * v2.y);
413
- }
414
-
415
- vec4 colors[8];
416
- colors[0] = vec4(colorSteps[1], colorSteps[2], colorSteps[3], colorSteps[4]);
417
- colors[1] = vec4(colorSteps[6], colorSteps[7], colorSteps[8], colorSteps[9]);
418
- colors[2] = vec4(colorSteps[11], colorSteps[12], colorSteps[13], colorSteps[14]);
419
- colors[3] = vec4(colorSteps[16], colorSteps[17], colorSteps[18], colorSteps[19]);
420
- colors[4] = vec4(colorSteps[21], colorSteps[22], colorSteps[23], colorSteps[24]);
421
- colors[5] = vec4(colorSteps[26], colorSteps[27], colorSteps[28], colorSteps[29]);
422
- colors[6] = vec4(colorSteps[31], colorSteps[32], colorSteps[33], colorSteps[34]);
423
- colors[7] = vec4(colorSteps[36], colorSteps[37], colorSteps[38], colorSteps[39]);
424
-
425
- float steps[8];
426
- steps[0] = colorSteps[0];
427
- steps[1] = colorSteps[5];
428
- steps[2] = colorSteps[10];
429
- steps[3] = colorSteps[15];
430
- steps[4] = colorSteps[20];
431
- steps[5] = colorSteps[25];
432
- steps[6] = colorSteps[30];
433
- steps[7] = colorSteps[35];
434
-
435
- color = colors[0];
436
- for (int i = 1; i < 8; i++) {
437
- if (steps[i] < 0.0 || steps[i] > 1.0) {
438
- break;
439
- }
440
- if(steps[i] == steps[i - 1]) {
441
- color = colors[i];
442
- } else {
443
- color = mix(color, colors[i], clamp((t - steps[i - 1]) / (steps[i] - steps[i - 1]), 0.0, 1.0));
444
- }
445
- if (steps[i] >= t) {
446
- break;
447
- }
448
- }
449
- }
450
- #endif
451
-
452
- void transformColor(inout vec4 color, in float colorMatrix[20]) {
453
- float r = color.r, g = color.g, b = color.b, a = color.a;
454
- color[0] = colorMatrix[0] * r + colorMatrix[1] * g + colorMatrix[2] * b + colorMatrix[3] * a + colorMatrix[4];
455
- color[1] = colorMatrix[5] * r + colorMatrix[6] * g + colorMatrix[7] * b + colorMatrix[8] * a + colorMatrix[9];
456
- color[2] = colorMatrix[10] * r + colorMatrix[11] * g + colorMatrix[12] * b + colorMatrix[13] * a + colorMatrix[14];
457
- color[3] = colorMatrix[15] * r + colorMatrix[16] * g + colorMatrix[17] * b + colorMatrix[18] * a + colorMatrix[19];
458
- }
459
-
460
- #ifdef CLOUDFILTER
461
- void buildCloudColor(inout float colorCloudMatrix[20]) {
462
- colorCloudMatrix[0] = colorCloud0[0];
463
- colorCloudMatrix[1] = colorCloud1[0];
464
- colorCloudMatrix[2] = colorCloud2[0];
465
- colorCloudMatrix[3] = colorCloud3[0];
466
- colorCloudMatrix[4] = colorCloud4[0];
467
-
468
- colorCloudMatrix[5] = colorCloud0[1];
469
- colorCloudMatrix[6] = colorCloud1[1];
470
- colorCloudMatrix[7] = colorCloud2[1];
471
- colorCloudMatrix[8] = colorCloud3[1];
472
- colorCloudMatrix[9] = colorCloud4[1];
473
-
474
- colorCloudMatrix[10] = colorCloud0[2];
475
- colorCloudMatrix[11] = colorCloud1[2];
476
- colorCloudMatrix[12] = colorCloud2[2];
477
- colorCloudMatrix[13] = colorCloud3[2];
478
- colorCloudMatrix[14] = colorCloud4[2];
479
-
480
- colorCloudMatrix[15] = colorCloud0[3];
481
- colorCloudMatrix[16] = colorCloud1[3];
482
- colorCloudMatrix[17] = colorCloud2[3];
483
- colorCloudMatrix[18] = colorCloud3[3];
484
- colorCloudMatrix[19] = colorCloud4[3];
485
- }
486
- #endif
487
-
488
- void main() {
489
- vec4 color = vColor;
490
- float opacity = abs(flagBackground);
491
-
492
- #ifdef GRADIENT
493
- if(u_gradientType > 0 && flagBackground > 0.0 || u_gradientType == 0 && flagBackground <= 0.0) {
494
- gradient(color, vGradientVector1, vGradientVector2, u_colorSteps);
495
- }
496
- #endif
497
-
498
- if(opacity < 1.0) {
499
- color.a *= opacity;
500
- }
501
-
502
- #ifdef TEXTURE
503
- if(flagBackground > 0.0) {
504
- vec3 texCoord = vTextureCoord;
505
-
506
- if(texCoord.z == 1.0) {
507
- texCoord = fract(texCoord);
508
- }
509
-
510
- if(texCoord.x <= 1.0 && texCoord.x >= 0.0
511
- && texCoord.y <= 1.0 && texCoord.y >= 0.0) {
512
- if(vSourceRect.z > 0.0) {
513
- texCoord.x = vSourceRect.x + texCoord.x * vSourceRect.z;
514
- texCoord.y = 1.0 - (vSourceRect.y + (1.0 - texCoord.y) * vSourceRect.w);
515
- }
516
- if(frameIndex < 0.0) {
517
- vec4 texColor = texture2D(u_texSampler, texCoord.xy);
518
- color = mix(color, texColor, texColor.a);
519
- } else {
520
- int index = int(floor(clamp(0.0, 11.0, frameIndex)));
521
- vec4 texColor;
522
- if(index == 0) texColor = texture2D(u_texFrame0, texCoord.xy);
523
- else if(index == 1) texColor = texture2D(u_texFrame1, texCoord.xy);
524
- else if(index == 2) texColor = texture2D(u_texFrame2, texCoord.xy);
525
- else if(index == 3) texColor = texture2D(u_texFrame3, texCoord.xy);
526
- else if(index == 4) texColor = texture2D(u_texFrame4, texCoord.xy);
527
- else if(index == 5) texColor = texture2D(u_texFrame5, texCoord.xy);
528
- else if(index == 6) texColor = texture2D(u_texFrame6, texCoord.xy);
529
- else if(index == 7) texColor = texture2D(u_texFrame7, texCoord.xy);
530
- else if(index == 8) texColor = texture2D(u_texFrame8, texCoord.xy);
531
- else if(index == 9) texColor = texture2D(u_texFrame9, texCoord.xy);
532
- else if(index == 10) texColor = texture2D(u_texFrame10, texCoord.xy);
533
- else texColor = texture2D(u_texFrame11, texCoord.xy);
534
- float alpha = texColor.a;
535
- if(opacity < 1.0) {
536
- texColor.a *= opacity;
537
- alpha *= mix(0.465, 1.0, opacity);
538
- }
539
- // color = mix(color, texColor, texColor.a);
540
- color.rgb = mix(color.rgb, texColor.rgb, alpha);
541
- // color.rgb = mix(texColor.rgb, color.rgb, color.a);
542
- color.rgb = mix(texColor.rgb, color.rgb, clamp(color.a / max(0.0001, texColor.a), 0.0, 1.0));
543
- color.a = texColor.a + (1.0 - texColor.a) * color.a;
544
- }
545
- }
546
- }
547
- #endif
548
-
549
- #ifdef FILTER
550
- if(u_filterFlag > 0) {
551
- transformColor(color, u_colorMatrix);
552
- }
553
- #endif
554
-
555
- #ifdef CLOUDFILTER
556
- float colorCloudMatrix[20];
557
- buildCloudColor(colorCloudMatrix);
558
- transformColor(color, colorCloudMatrix);
559
- #endif
560
-
561
- #ifdef CLIPPATH
562
- float clip = texture2D(u_clipSampler, vClipUV).r;
563
- color *= clip;
564
- #endif
565
-
566
- gl_FragColor = color;
567
- }`}])})})(xm);var ft=xm.exports;Ze(Array);function uh(s,t){const e=s.trim().match(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin)$/);e?s={size:parseFloat(e[1]),unit:e[2]}:s={size:parseFloat(s),unit:"px"};let{size:r,unit:n}=s;if(n==="pt")r/=.75;else if(n==="pc")r*=16;else if(n==="in")r*=96;else if(n==="cm")r*=96/2.54;else if(n==="mm")r*=96/25.4;else if(n==="em"||n==="rem"||n==="ex"){if(!t&&typeof getComputedStyle=="function"&&typeof document<"u"){const i=getComputedStyle(document.documentElement).fontSize;i?t=uh(i,16):t=16}r*=t,n==="ex"&&(r/=2)}else if(n==="q")r*=96/25.4/4;else if(n==="vw"||n==="vh"){if(typeof document<"u"){const i=n==="vw"?window.innerWidth||document.documentElement.clientWidth:window.innerHeight||document.documentElement.clientHeight;r*=i/100}}else if((n==="vmax"||n==="vmin")&&typeof document<"u"){const i=window.innerWidth||document.documentElement.clientWidth,o=window.innerHeight||document.documentElement.clientHeight;n==="vmax"?r*=Math.max(i,o)/100:r*=Math.min(i,o)/100}return r}function qe(s){if(s==null)return s;if(typeof s=="string"&&(s=uh(s)),!Number.isFinite(s))throw new TypeError("Invalid value");return s}function Mt(s,t=!1){return s===""?null:(typeof s=="string"&&(s=s.split(/[\s,]+/g)),Array.isArray(s)&&(t&&(s=s.map(qe)),s.length===1)?s[0]:s)}function au(s,t){if(Array.isArray(s)&&Array.isArray(t)){if(s.length!==t.length)return!1;for(let e=0;e<s.length;e++)if(s[e]!==t[e])return!1;return!0}return s==null&&t==null||s===t}Ze(Array);const Qc=Symbol.for("spritejs_setAttributeDefault"),qc=Symbol.for("spritejs_declareAlias"),Rt=Symbol.for("spritejs_setAttribute"),pt=Symbol.for("spritejs_getAttribute"),Kd=Symbol.for("spritejs_attributes"),Xd=Symbol.for("spritejs_changedAttrs"),ua=Symbol("subject"),Kr=Symbol("attr"),Zc=Symbol("default"),So=Symbol("alias");function iw(s,[t,e]){let r=ii(1,0,0,1,0,0);return[...s].forEach(([n,i])=>{if((t||e)&&(r=ou(Array.of(0,0,0,0,0,0),r,[t,e])),n==="matrix")r=zr(r,r,i);else if(n==="offsetTranslate")r[4]+=i[0],r[5]+=i[1];else if(n==="offsetRotate")r=Im(Array.of(0,0,0,0,0,0),r,i);else if(n==="skew"){const[o,a]=i;r=zr(r,r,ii(1,Math.tan(a),Math.tan(o),1,0,0))}else Em[n](r,r,i);(t||e)&&(r=ou(Array.of(0,0,0,0,0,0),r,[-t,-e]))}),r}const wn=Symbol("transformMatrix"),Bs=Symbol("transforms"),cs=Symbol("changedAttrs"),Rm=Symbol("lastChangedAttr"),ha=Symbol("offsetFigure");function To(s,t,e){const r=s[Kr][t];if(s[Rt](t,e,!1)||s[Rm]!==t){const i=s[Bs];i.has(t)&&i.delete(t),e&&(t==="rotate"&&(e=Math.PI*e/180),t==="scale"&&(e=e.map(o=>Math.abs(o)>1e-5?o:1/o>0?1e-5:-1e-5)),i.set(t,e)),s[wn]=null,s[ua].onPropertyChange(t,e,r,s)}}function Kc(s){const t=s[ha],e=s.offsetDistance*t.getTotalLength(),r=t.getPointAtLength(e);if(r){const n=s[Bs];let i=s.offsetRotate;i==="auto"?i=r.angle:i==="reverse"?i=Math.PI+r.angle:i=Math.PI*i/180,n.set("offsetRotate",i),n.set("offsetTranslate",[r.x,r.y]),s[wn]=null}}let hh=class{static setDefault(t,...e){return t[Qc](...e)}static declareAlias(t,...e){return t[qc](...e)}static setAttribute(t,...e){return t[Rt](...e)}static getAttribute(t,...e){return t[pt](...e)}static getAttributes(t){return t[Kd]}static getChangedAttributes(t){return t[Xd]}constructor(t){this[ua]=t,this[Kr]={},this[wn]=ii(1,0,0,1,0,0),this[Bs]=new Map,this[Zc]={},this[So]=[],Object.defineProperty(t,"transformMatrix",{get:()=>(this[wn]||(this[wn]=iw(this[Bs],this.transformOrigin)),[...this[wn]])}),this[Qc]({id:"",name:"",className:"",x:0,y:0,transformOrigin:[0,0],transform:"",translate:[0,0],rotate:0,scale:[1,1],skew:[0,0],opacity:1,zIndex:0,offsetPath:void 0,offsetDistance:0,offsetRotate:"auto",pointerEvents:"visible",filter:"none",display:""}),this[qc]("class","pos"),this[cs]=new Set,this[ha]=new ft.Figure2D({scale:5,simplify:0})}get[Xd](){const t={};return[...this[cs]].forEach(e=>{t[e]=this[Kr][e]}),t}get[Kd](){const t=Object.assign({},this[Kr]);for(let e=0;e<this[So].length;e++){const r=this[So][e];t[r]=this[r]}return t}[Qc](t){Object.assign(this[Zc],t),Object.assign(this[Kr],t)}[qc](...t){this[So].push(...t)}[Rt](t,e,r=!0){const n=this[Kr][t],i=this[ua];return e==null&&(e=this[Zc][t]),au(n,e)?!1:(this[Kr][t]=e,this[cs].has(t)&&this[cs].delete(t),this[cs].add(t),this[Rm]=t,r&&i.onPropertyChange(t,e,n,this),!0)}[pt](t){return this[Kr][t]}set id(t){this[Rt]("id",t)}get id(){return this[pt]("id")}set name(t){this[Rt]("name",t)}get name(){return this[pt]("name")}set className(t){this[Rt]("className",t)}get className(){return this[pt]("className")}set class(t){this.className=t}get class(){return this.className}get x(){return this[pt]("x")}set x(t){this[Rt]("x",qe(t))}get y(){return this[pt]("y")}set y(t){this[Rt]("y",qe(t))}get pos(){return[this.x,this.y]}set pos(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.x=t[0],this.y=t[1]}get transform(){return this[pt]("transform")}set transform(t){let e=null;if(Array.isArray(t)&&(e=t,t=`matrix(${t.map(qe).join()})`),typeof t=="string")t=t.replace(/\s*,\s*/g,",");else if(t!=null)throw new TypeError("Invalid transform value.");const r=this[Kr].transform;if(this[Rt]("transform",t,!1)){const n=this[Bs];if(n.has("matrix")&&n.delete("matrix"),e)n.set("matrix",e);else if(t){const i=t.match(/(matrix|translate|rotate|scale|skew)\([^()]+\)/g);if(i){let o=ii(1,0,0,1,0,0);for(let a=0;a<i.length;a++){const l=i[a].match(/^(matrix|translate|rotate|scale|skew)\(([^()]+)\)/);if(l){let[,u,h]=l;u==="rotate"?h=Math.PI*parseFloat(h)/180:h=h.trim().split(/[\s,]+/).map(d=>qe(d)),u==="matrix"?o=zr(o,o,h):u==="skew"?o=zr(o,o,ii(1,Math.tan(h[1]),Math.tan(h[0]),1,0,0)):Em[u](o,o,h),n.set("matrix",o)}}}else throw new TypeError("Invalid transform value.")}this[wn]=null,this[ua].onPropertyChange("transform",t,r,this)}}get transformOrigin(){return this[pt]("transformOrigin")}set transformOrigin(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t,t]),this[Rt]("transformOrigin",t)&&(this[wn]=null)}get rotate(){return this[pt]("rotate")}set rotate(t){To(this,"rotate",t)}get translate(){return this[pt]("translate")}set translate(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t,t]),To(this,"translate",t)}get scale(){return this[pt]("scale")}set scale(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t,t]),To(this,"scale",t)}get skew(){return this[pt]("skew")}set skew(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t,t]),To(this,"skew",t)}get opacity(){return this[pt]("opacity")}set opacity(t){t!=null&&(t=Number(t)),this[Rt]("opacity",t)}get zIndex(){return this[pt]("zIndex")}set zIndex(t){t!=null&&(t=Number(t)),this[Rt]("zIndex",t)}get offsetPath(){return this[pt]("offsetPath")}set offsetPath(t){this[Rt]("offsetPath",t)&&(this[ha].beginPath(),t!=null&&this[ha].addPath(t),Kc(this))}get offsetDistance(){return this[pt]("offsetDistance")}set offsetDistance(t){this[Rt]("offsetDistance",qe(t))&&Kc(this)}get offsetRotate(){return this[pt]("offsetRotate")}set offsetRotate(t){this[Rt]("offsetRotate",t),Kc(this)}get pointerEvents(){return this[pt]("pointerEvents")}set pointerEvents(t){if(t!=null&&t!=="none"&&t!=="visible"&&t!=="visibleFill"&&t!=="visibleStroke"&&t!=="all")throw new TypeError("Invalid pointerEvents type.");this[Rt]("pointerEvents",t)}get filter(){return this[pt]("filter")}set filter(t){this[Rt]("filter",t)}get display(){return this[pt]("display")}set display(t){this[Rt]("display",t)}set offset(t){}};var rn={},_a={},ro={},km=function(s,t){return{value:t,done:!!s}},Xi={},sw={}.toString,no=function(s){return sw.call(s).slice(8,-1)},ow=no,dh=Object("z").propertyIsEnumerable(0)?Object:function(s){return ow(s)=="String"?s.split(""):Object(s)},fh=function(s){if(s==null)throw TypeError("Can't call method on "+s);return s},aw=dh,cw=fh,hi=function(s){return aw(cw(s))},lw=!0,Am={exports:{}},uw=Am.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=uw);var _t=Am.exports,Pm={exports:{}},hw=Pm.exports={version:"2.6.12"};typeof __e=="number"&&(__e=hw);var Pt=Pm.exports,io=function(s){if(typeof s!="function")throw TypeError(s+" is not a function!");return s},dw=io,Dn=function(s,t,e){if(dw(s),t===void 0)return s;switch(e){case 1:return function(r){return s.call(t,r)};case 2:return function(r,n){return s.call(t,r,n)};case 3:return function(r,n,i){return s.call(t,r,n,i)}}return function(){return s.apply(t,arguments)}},fr={},Br=function(s){return typeof s=="object"?s!==null:typeof s=="function"},fw=Br,hn=function(s){if(!fw(s))throw TypeError(s+" is not an object!");return s},di=function(s){try{return!!s()}catch{return!0}},gr=!di(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7}),Jd=Br,cu=_t.document,gw=Jd(cu)&&Jd(cu.createElement),gh=function(s){return gw?cu.createElement(s):{}},Dm=!gr&&!di(function(){return Object.defineProperty(gh("div"),"a",{get:function(){return 7}}).a!=7}),Co=Br,ph=function(s,t){if(!Co(s))return s;var e,r;if(t&&typeof(e=s.toString)=="function"&&!Co(r=e.call(s))||typeof(e=s.valueOf)=="function"&&!Co(r=e.call(s))||!t&&typeof(e=s.toString)=="function"&&!Co(r=e.call(s)))return r;throw TypeError("Can't convert object to primitive value")},_d=hn,pw=Dm,mw=ph,yw=Object.defineProperty;fr.f=gr?Object.defineProperty:function(t,e,r){if(_d(t),e=mw(e,!0),_d(r),pw)try{return yw(t,e,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t};var so=function(s,t){return{enumerable:!(s&1),configurable:!(s&2),writable:!(s&4),value:t}},vw=fr,Mw=so,Ln=gr?function(s,t,e){return vw.f(s,t,Mw(1,e))}:function(s,t,e){return s[t]=e,s},ww={}.hasOwnProperty,fi=function(s,t){return ww.call(s,t)},Io=_t,Xc=Pt,ef=Dn,Sw=Ln,Tw=fi,bo="prototype",Ft=function(s,t,e){var r=s&Ft.F,n=s&Ft.G,i=s&Ft.S,o=s&Ft.P,a=s&Ft.B,c=s&Ft.W,l=n?Xc:Xc[t]||(Xc[t]={}),u=l[bo],h=n?Io:i?Io[t]:(Io[t]||{})[bo],d,f,g;n&&(e=t);for(d in e)f=!r&&h&&h[d]!==void 0,!(f&&Tw(l,d))&&(g=f?h[d]:e[d],l[d]=n&&typeof h[d]!="function"?e[d]:a&&f?ef(g,Io):c&&h[d]==g?function(y){var S=function(b,C,N){if(this instanceof y){switch(arguments.length){case 0:return new y;case 1:return new y(b);case 2:return new y(b,C)}return new y(b,C,N)}return y.apply(this,arguments)};return S[bo]=y[bo],S}(g):o&&typeof g=="function"?ef(Function.call,g):g,o&&((l.virtual||(l.virtual={}))[d]=g,s&Ft.R&&u&&!u[d]&&Sw(u,d,g)))};Ft.F=1;Ft.G=2;Ft.S=4;Ft.P=8;Ft.B=16;Ft.W=32;Ft.U=64;Ft.R=128;var er=Ft,Lm=Ln,Cw=Math.ceil,Iw=Math.floor,mh=function(s){return isNaN(s=+s)?0:(s>0?Iw:Cw)(s)},bw=mh,Ew=Math.min,ec=function(s){return s>0?Ew(bw(s),9007199254740991):0},xw=mh,Rw=Math.max,kw=Math.min,Aw=function(s,t){return s=xw(s),s<0?Rw(s+t,0):kw(s,t)},Pw=hi,Dw=ec,Lw=Aw,Nw=function(s){return function(t,e,r){var n=Pw(t),i=Dw(n.length),o=Lw(r,i),a;if(s&&e!=e){for(;i>o;)if(a=n[o++],a!=a)return!0}else for(;i>o;o++)if((s||o in n)&&n[o]===e)return s||o||0;return!s&&-1}},Nm={exports:{}},Ow=Pt,tf=_t,rf="__core-js_shared__",nf=tf[rf]||(tf[rf]={});(Nm.exports=function(s,t){return nf[s]||(nf[s]=t!==void 0?t:{})})("versions",[]).push({version:Ow.version,mode:"pure",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"});var yh=Nm.exports,zw=0,Bw=Math.random(),tc=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++zw+Bw).toString(36))},sf=yh("keys"),jw=tc,vh=function(s){return sf[s]||(sf[s]=jw(s))},of=fi,Fw=hi,Uw=Nw(!1),Ww=vh("IE_PROTO"),Om=function(s,t){var e=Fw(s),r=0,n=[],i;for(i in e)i!=Ww&&of(e,i)&&n.push(i);for(;t.length>r;)of(e,i=t[r++])&&(~Uw(n,i)||n.push(i));return n},Mh="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),Vw=Om,$w=Mh,Ji=Object.keys||function(t){return Vw(t,$w)},Yw=fr,Gw=hn,Hw=Ji,Qw=gr?Object.defineProperties:function(t,e){Gw(t);for(var r=Hw(e),n=r.length,i=0,o;n>i;)Yw.f(t,o=r[i++],e[o]);return t},af=_t.document,zm=af&&af.documentElement,qw=hn,Zw=Qw,cf=Mh,Kw=vh("IE_PROTO"),Jc=function(){},lu="prototype",da=function(){var s=gh("iframe"),t=cf.length,e="<",r=">",n;for(s.style.display="none",zm.appendChild(s),s.src="javascript:",n=s.contentWindow.document,n.open(),n.write(e+"script"+r+"document.F=Object"+e+"/script"+r),n.close(),da=n.F;t--;)delete da[lu][cf[t]];return da()},wh=Object.create||function(t,e){var r;return t!==null?(Jc[lu]=qw(t),r=new Jc,Jc[lu]=null,r[Kw]=t):r=da(),e===void 0?r:Zw(r,e)},Bm={exports:{}},uu=yh("wks"),Xw=tc,hu=_t.Symbol,lf=typeof hu=="function",Jw=Bm.exports=function(s){return uu[s]||(uu[s]=lf&&hu[s]||(lf?hu:Xw)("Symbol."+s))};Jw.store=uu;var Gt=Bm.exports,_w=fr.f,eS=fi,uf=Gt("toStringTag"),oo=function(s,t,e){s&&!eS(s=e?s:s.prototype,uf)&&_w(s,uf,{configurable:!0,value:t})},tS=wh,rS=so,nS=oo,jm={};Ln(jm,Gt("iterator"),function(){return this});var iS=function(s,t,e){s.prototype=tS(jm,{next:rS(1,e)}),nS(s,t+" Iterator")},sS=fh,_i=function(s){return Object(sS(s))},oS=fi,aS=_i,hf=vh("IE_PROTO"),cS=Object.prototype,lS=Object.getPrototypeOf||function(s){return s=aS(s),oS(s,hf)?s[hf]:typeof s.constructor=="function"&&s instanceof s.constructor?s.constructor.prototype:s instanceof Object?cS:null},_c=er,uS=Lm,hS=Ln,df=Xi,dS=iS,fS=oo,gS=lS,el=Gt("iterator"),tl=!([].keys&&"next"in[].keys()),pS="@@iterator",ff="keys",Eo="values",mS=function(){return this},Sh=function(s,t,e,r,n,i,o){dS(e,t,r);var a=function(N){if(!tl&&N in h)return h[N];switch(N){case ff:return function(){return new e(this,N)};case Eo:return function(){return new e(this,N)}}return function(){return new e(this,N)}},c=t+" Iterator",l=n==Eo,u=!1,h=s.prototype,d=h[el]||h[pS]||n&&h[n],f=d||a(n),g=n?l?a("entries"):f:void 0,y=t=="Array"&&h.entries||d,S,b,C;if(y&&(C=gS(y.call(new s)),C!==Object.prototype&&C.next&&fS(C,c,!0)),l&&d&&d.name!==Eo&&(u=!0,f=function(){return d.call(this)}),o&&(tl||u||!h[el])&&hS(h,el,f),df[t]=f,df[c]=mS,n)if(S={values:l?f:a(Eo),keys:i?f:a(ff),entries:g},o)for(b in S)b in h||uS(h,b,S[b]);else _c(_c.P+_c.F*(tl||u),t,S);return S},xo=km,gf=Xi,yS=hi;Sh(Array,"Array",function(s,t){this._t=yS(s),this._i=0,this._k=t},function(){var s=this._t,t=this._k,e=this._i++;return!s||e>=s.length?(this._t=void 0,xo(1)):t=="keys"?xo(0,e):t=="values"?xo(0,s[e]):xo(0,[e,s[e]])},"values");gf.Arguments=gf.Array;var vS=_t,MS=Ln,pf=Xi,mf=Gt("toStringTag"),yf="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(var rl=0;rl<yf.length;rl++){var nl=yf[rl],vf=vS[nl],il=vf&&vf.prototype;il&&!il[mf]&&MS(il,mf,nl),pf[nl]=pf.Array}var wS=mh,SS=fh,TS=function(s){return function(t,e){var r=String(SS(t)),n=wS(e),i=r.length,o,a;return n<0||n>=i?s?"":void 0:(o=r.charCodeAt(n),o<55296||o>56319||n+1===i||(a=r.charCodeAt(n+1))<56320||a>57343?s?r.charAt(n):o:s?r.slice(n,n+2):(o-55296<<10)+(a-56320)+65536)}},CS=TS(!0);Sh(String,"String",function(s){this._t=String(s),this._i=0},function(){var s=this._t,t=this._i,e;return t>=s.length?{value:void 0,done:!0}:(e=CS(s,t),this._i+=e.length,{value:e,done:!1})});var du=no,IS=Gt("toStringTag"),bS=du(function(){return arguments}())=="Arguments",ES=function(s,t){try{return s[t]}catch{}},rc=function(s){var t,e,r;return s===void 0?"Undefined":s===null?"Null":typeof(e=ES(t=Object(s),IS))=="string"?e:bS?du(t):(r=du(t))=="Object"&&typeof t.callee=="function"?"Arguments":r},xS=rc,RS=Gt("iterator"),kS=Xi,AS=Pt.isIterable=function(s){var t=Object(s);return t[RS]!==void 0||"@@iterator"in t||kS.hasOwnProperty(xS(t))},PS=AS,DS={default:PS,__esModule:!0},LS=rc,NS=Gt("iterator"),OS=Xi,Th=Pt.getIteratorMethod=function(s){if(s!=null)return s[NS]||s["@@iterator"]||OS[LS(s)]},zS=hn,BS=Th,jS=Pt.getIterator=function(s){var t=BS(s);if(typeof t!="function")throw TypeError(s+" is not iterable!");return zS(t.call(s))},FS=jS,US={default:FS,__esModule:!0};ro.__esModule=!0;var WS=DS,VS=Fm(WS),$S=US,YS=Fm($S);function Fm(s){return s&&s.__esModule?s:{default:s}}ro.default=function(){function s(t,e){var r=[],n=!0,i=!1,o=void 0;try{for(var a=(0,YS.default)(t),c;!(n=(c=a.next()).done)&&(r.push(c.value),!(e&&r.length===e));n=!0);}catch(l){i=!0,o=l}finally{try{!n&&a.return&&a.return()}finally{if(i)throw o}}return r}return function(t,e){if(Array.isArray(t))return t;if((0,VS.default)(Object(t)))return s(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();var nc={},Mf=hn,Um=function(s,t,e,r){try{return r?t(Mf(e)[0],e[1]):t(e)}catch(i){var n=s.return;throw n!==void 0&&Mf(n.call(s)),i}},GS=Xi,HS=Gt("iterator"),QS=Array.prototype,Wm=function(s){return s!==void 0&&(GS.Array===s||QS[HS]===s)},qS=fr,ZS=so,KS=function(s,t,e){t in s?qS.f(s,t,ZS(0,e)):s[t]=e},sl,wf;function Vm(){if(wf)return sl;wf=1;var s=Gt("iterator"),t=!1;try{var e=[7][s]();e.return=function(){t=!0},Array.from(e,function(){throw 2})}catch{}return sl=function(r,n){if(!n&&!t)return!1;var i=!1;try{var o=[7],a=o[s]();a.next=function(){return{done:i=!0}},o[s]=function(){return a},r(o)}catch{}return i},sl}var XS=Dn,ol=er,JS=_i,_S=Um,eT=Wm,tT=ec,Sf=KS,rT=Th;ol(ol.S+ol.F*!Vm()(function(s){Array.from(s)}),"Array",{from:function(t){var e=JS(t),r=typeof this=="function"?this:Array,n=arguments.length,i=n>1?arguments[1]:void 0,o=i!==void 0,a=0,c=rT(e),l,u,h,d;if(o&&(i=XS(i,n>2?arguments[2]:void 0,2)),c!=null&&!(r==Array&&eT(c)))for(d=c.call(e),u=new r;!(h=d.next()).done;a++)Sf(u,a,o?_S(d,i,[h.value,a],!0):h.value);else for(l=tT(e.length),u=new r(l);l>a;a++)Sf(u,a,o?i(e[a],a):e[a]);return u.length=a,u}});var nT=Pt.Array.from,iT={default:nT,__esModule:!0};nc.__esModule=!0;var sT=iT,oT=aT(sT);function aT(s){return s&&s.__esModule?s:{default:s}}nc.default=function(s){if(Array.isArray(s)){for(var t=0,e=Array(s.length);t<s.length;t++)e[t]=s[t];return e}else return(0,oT.default)(s)};var cT=Ln,Ch=function(s,t,e){for(var r in t)e&&s[r]?s[r]=t[r]:cT(s,r,t[r]);return s},Ih=function(s,t,e,r){if(!(s instanceof t)||r!==void 0&&r in s)throw TypeError(e+": incorrect invocation!");return s},$m={exports:{}},lT=Dn,uT=Um,hT=Wm,dT=hn,fT=ec,gT=Th,fu={},gu={},Ym=$m.exports=function(s,t,e,r,n){var i=n?function(){return s}:gT(s),o=lT(e,r,t?2:1),a=0,c,l,u,h;if(typeof i!="function")throw TypeError(s+" is not iterable!");if(hT(i)){for(c=fT(s.length);c>a;a++)if(h=t?o(dT(l=s[a])[0],l[1]):o(s[a]),h===fu||h===gu)return h}else for(u=i.call(s);!(l=u.next()).done;)if(h=uT(u,o,l.value,t),h===fu||h===gu)return h};Ym.BREAK=fu;Ym.RETURN=gu;var ao=$m.exports,pT=_t,Tf=Pt,mT=fr,yT=gr,Cf=Gt("species"),Gm=function(s){var t=typeof Tf[s]=="function"?Tf[s]:pT[s];yT&&t&&!t[Cf]&&mT.f(t,Cf,{configurable:!0,get:function(){return this}})},Hm={exports:{}},li=tc("meta"),vT=Br,bh=fi,MT=fr.f,wT=0,ic=Object.isExtensible||function(){return!0},ST=!di(function(){return ic(Object.preventExtensions({}))}),Eh=function(s){MT(s,li,{value:{i:"O"+ ++wT,w:{}}})},TT=function(s,t){if(!vT(s))return typeof s=="symbol"?s:(typeof s=="string"?"S":"P")+s;if(!bh(s,li)){if(!ic(s))return"F";if(!t)return"E";Eh(s)}return s[li].i},CT=function(s,t){if(!bh(s,li)){if(!ic(s))return!0;if(!t)return!1;Eh(s)}return s[li].w},IT=function(s){return ST&&bT.NEED&&ic(s)&&!bh(s,li)&&Eh(s),s},bT=Hm.exports={KEY:li,NEED:!1,fastKey:TT,getWeak:CT,onFreeze:IT},xh=Hm.exports,ET=Br,Qm=function(s,t){if(!ET(s)||s._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return s},xT=fr.f,RT=wh,kT=Ch,AT=Dn,PT=Ih,DT=ao,LT=Sh,Ro=km,NT=Gm,qm=gr,Zm=xh.fastKey,bi=Qm,ls=qm?"_s":"size",ko=function(s,t){var e=Zm(t),r;if(e!=="F")return s._i[e];for(r=s._f;r;r=r.n)if(r.k==t)return r},OT={getConstructor:function(s,t,e,r){var n=s(function(i,o){PT(i,n,t,"_i"),i._t=t,i._i=RT(null),i._f=void 0,i._l=void 0,i[ls]=0,o!=null&&DT(o,e,i[r],i)});return kT(n.prototype,{clear:function(){for(var o=bi(this,t),a=o._i,c=o._f;c;c=c.n)c.r=!0,c.p&&(c.p=c.p.n=void 0),delete a[c.i];o._f=o._l=void 0,o[ls]=0},delete:function(i){var o=bi(this,t),a=ko(o,i);if(a){var c=a.n,l=a.p;delete o._i[a.i],a.r=!0,l&&(l.n=c),c&&(c.p=l),o._f==a&&(o._f=c),o._l==a&&(o._l=l),o[ls]--}return!!a},forEach:function(o){bi(this,t);for(var a=AT(o,arguments.length>1?arguments[1]:void 0,3),c;c=c?c.n:this._f;)for(a(c.v,c.k,this);c&&c.r;)c=c.p},has:function(o){return!!ko(bi(this,t),o)}}),qm&&xT(n.prototype,"size",{get:function(){return bi(this,t)[ls]}}),n},def:function(s,t,e){var r=ko(s,t),n,i;return r?r.v=e:(s._l=r={i:i=Zm(t,!0),k:t,v:e,p:n=s._l,n:void 0,r:!1},s._f||(s._f=r),n&&(n.n=r),s[ls]++,i!=="F"&&(s._i[i]=r)),s},getEntry:ko,setStrong:function(s,t,e){LT(s,t,function(r,n){this._t=bi(r,t),this._k=n,this._l=void 0},function(){for(var r=this,n=r._k,i=r._l;i&&i.r;)i=i.p;return!r._t||!(r._l=i=i?i.n:r._t._f)?(r._t=void 0,Ro(1)):n=="keys"?Ro(0,i.k):n=="values"?Ro(0,i.v):Ro(0,[i.k,i.v])},e?"entries":"values",!e,!0),NT(t)}},zT=no,Km=Array.isArray||function(t){return zT(t)=="Array"},BT=Br,If=Km,jT=Gt("species"),FT=function(s){var t;return If(s)&&(t=s.constructor,typeof t=="function"&&(t===Array||If(t.prototype))&&(t=void 0),BT(t)&&(t=t[jT],t===null&&(t=void 0))),t===void 0?Array:t},UT=FT,WT=function(s,t){return new(UT(s))(t)},VT=Dn,$T=dh,YT=_i,GT=ec,HT=WT,QT=function(s,t){var e=s==1,r=s==2,n=s==3,i=s==4,o=s==6,a=s==5||o,c=t||HT;return function(l,u,h){for(var d=YT(l),f=$T(d),g=VT(u,h,3),y=GT(f.length),S=0,b=e?c(l,y):r?c(l,0):void 0,C,N;y>S;S++)if((a||S in f)&&(C=f[S],N=g(C,S,d),s)){if(e)b[S]=N;else if(N)switch(s){case 3:return!0;case 5:return C;case 6:return S;case 2:b.push(C)}else if(i)return!1}return o?-1:n||i?i:b}},qT=_t,Ao=er,ZT=xh,KT=di,XT=Ln,JT=Ch,_T=ao,bf=Ih,e1=Br,t1=oo,r1=fr.f,n1=QT(0),i1=gr,s1=function(s,t,e,r,n,i){var o=qT[s],a=o,c=n?"set":"add",l=a&&a.prototype,u={};return!i1||typeof a!="function"||!(i||l.forEach&&!KT(function(){new a().entries().next()}))?(a=r.getConstructor(t,s,n,c),JT(a.prototype,e),ZT.NEED=!0):(a=t(function(h,d){bf(h,a,s,"_c"),h._c=new o,d!=null&&_T(d,n,h[c],h)}),n1("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(h){var d=h=="add"||h=="set";h in l&&!(i&&h=="clear")&&XT(a.prototype,h,function(f,g){if(bf(this,a,h),!d&&i&&!e1(f))return h=="get"?void 0:!1;var y=this._c[h](f===0?0:f,g);return d?this:y})}),i||r1(a.prototype,"size",{get:function(){return this._c.size}})),t1(a,s),u[s]=a,Ao(Ao.G+Ao.W+Ao.F,u),i||r.setStrong(a,s,n),a},al=OT,Ef=Qm,cl="Map";s1(cl,function(s){return function(){return s(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=al.getEntry(Ef(this,cl),t);return e&&e.v},set:function(t,e){return al.def(Ef(this,cl),t===0?0:t,e)}},al,!0);var ll,xf;function o1(){if(xf)return ll;xf=1;var s=ao;return ll=function(t,e){var r=[];return s(t,!1,r.push,r,e),r},ll}var ul,Rf;function a1(){if(Rf)return ul;Rf=1;var s=rc,t=o1();return ul=function(e){return function(){if(s(this)!=e)throw TypeError(e+"#toJSON isn't generic");return t(this)}},ul}var hl=er;hl(hl.P+hl.R,"Map",{toJSON:a1()("Map")});var kf=er,c1=function(s){kf(kf.S,s,{of:function(){for(var e=arguments.length,r=new Array(e);e--;)r[e]=arguments[e];return new this(r)}})};c1("Map");var Af=er,Pf=io,l1=Dn,Df=ao,u1=function(s){Af(Af.S,s,{from:function(e){var r=arguments[1],n,i,o,a;return Pf(this),n=r!==void 0,n&&Pf(r),e==null?new this:(i=[],n?(o=0,a=l1(r,arguments[2],2),Df(e,!1,function(c){i.push(a(c,o++))})):Df(e,!1,i.push,i),new this(i))}})};u1("Map");var h1=Pt.Map,Xm={default:h1,__esModule:!0},sc={};sc.f=Object.getOwnPropertySymbols;var es={};es.f={}.propertyIsEnumerable;var dl,Lf;function d1(){if(Lf)return dl;Lf=1;var s=gr,t=Ji,e=sc,r=es,n=_i,i=dh,o=Object.assign;return dl=!o||di(function(){var a={},c={},l=Symbol(),u="abcdefghijklmnopqrst";return a[l]=7,u.split("").forEach(function(h){c[h]=h}),o({},a)[l]!=7||Object.keys(o({},c)).join("")!=u})?function(c,l){for(var u=n(c),h=arguments.length,d=1,f=e.f,g=r.f;h>d;)for(var y=i(arguments[d++]),S=f?t(y).concat(f(y)):t(y),b=S.length,C=0,N;b>C;)N=S[C++],(!s||g.call(y,N))&&(u[N]=y[N]);return u}:o,dl}var fl=er;fl(fl.S+fl.F,"Object",{assign:d1()});var f1=Pt.Object.assign,Rh={default:f1,__esModule:!0},oc={};oc.__esModule=!0;oc.default=function(s,t){if(!(s instanceof t))throw new TypeError("Cannot call a class as a function")};var ac={},gl=er;gl(gl.S+gl.F*!gr,"Object",{defineProperty:fr.f});var g1=Pt.Object,p1=function(t,e,r){return g1.defineProperty(t,e,r)},m1={default:p1,__esModule:!0};ac.__esModule=!0;var y1=m1,v1=M1(y1);function M1(s){return s&&s.__esModule?s:{default:s}}ac.default=function(){function s(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,v1.default)(t,n.key,n)}}return function(t,e,r){return e&&s(t.prototype,e),r&&s(t,r),t}}();var kh={};kh.f=Gt;var Nf=Pt,w1=kh,S1=fr.f,Ah=function(s){var t=Nf.Symbol||(Nf.Symbol={});s.charAt(0)!="_"&&!(s in t)&&S1(t,s,{value:w1.f(s)})},T1=Ji,C1=sc,I1=es,b1=function(s){var t=T1(s),e=C1.f;if(e)for(var r=e(s),n=I1.f,i=0,o;r.length>i;)n.call(s,o=r[i++])&&t.push(o);return t},Jm={},Ph={},E1=Om,x1=Mh.concat("length","prototype");Ph.f=Object.getOwnPropertyNames||function(t){return E1(t,x1)};var R1=hi,_m=Ph.f,k1={}.toString,ey=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],A1=function(s){try{return _m(s)}catch{return ey.slice()}};Jm.f=function(t){return ey&&k1.call(t)=="[object Window]"?A1(t):_m(R1(t))};var ty={},P1=es,D1=so,L1=hi,N1=ph,O1=fi,z1=Dm,Of=Object.getOwnPropertyDescriptor;ty.f=gr?Of:function(t,e){if(t=L1(t),e=N1(e,!0),z1)try{return Of(t,e)}catch{}if(O1(t,e))return D1(!P1.f.call(t,e),t[e])};var cc=_t,kt=fi,ry=gr,Ut=er,B1=Lm,j1=xh.KEY,Dh=di,Lh=yh,Nh=oo,F1=tc,co=Gt,U1=kh,W1=Ah,V1=b1,$1=Km,pu=hn,Y1=Br,G1=_i,lc=hi,Oh=ph,mu=so,$s=wh,ny=Jm,iy=ty,uc=sc,sy=fr,H1=Ji,oy=iy.f,Zn=sy.f,ay=ny.f,Jt=cc.Symbol,ba=cc.JSON,Po=ba&&ba.stringify,Tn="prototype",Xt=co("_hidden"),zf=co("toPrimitive"),Q1={}.propertyIsEnumerable,us=Lh("symbol-registry"),ln=Lh("symbols"),lo=Lh("op-symbols"),Tr=Object[Tn],ts=typeof Jt=="function"&&!!uc.f,pl=cc.QObject,yu=!pl||!pl[Tn]||!pl[Tn].findChild,vu=ry&&Dh(function(){return $s(Zn({},"a",{get:function(){return Zn(this,"a",{value:7}).a}})).a!=7})?function(s,t,e){var r=oy(Tr,t);r&&delete Tr[t],Zn(s,t,e),r&&s!==Tr&&Zn(Tr,t,r)}:Zn,Bf=function(s){var t=ln[s]=$s(Jt[Tn]);return t._k=s,t},Mu=ts&&typeof Jt.iterator=="symbol"?function(s){return typeof s=="symbol"}:function(s){return s instanceof Jt},hc=function(t,e,r){return t===Tr&&hc(lo,e,r),pu(t),e=Oh(e,!0),pu(r),kt(ln,e)?(r.enumerable?(kt(t,Xt)&&t[Xt][e]&&(t[Xt][e]=!1),r=$s(r,{enumerable:mu(0,!1)})):(kt(t,Xt)||Zn(t,Xt,mu(1,{})),t[Xt][e]=!0),vu(t,e,r)):Zn(t,e,r)},cy=function(t,e){pu(t);for(var r=V1(e=lc(e)),n=0,i=r.length,o;i>n;)hc(t,o=r[n++],e[o]);return t},q1=function(t,e){return e===void 0?$s(t):cy($s(t),e)},Z1=function(t){var e=Q1.call(this,t=Oh(t,!0));return this===Tr&&kt(ln,t)&&!kt(lo,t)?!1:e||!kt(this,t)||!kt(ln,t)||kt(this,Xt)&&this[Xt][t]?e:!0},ly=function(t,e){if(t=lc(t),e=Oh(e,!0),!(t===Tr&&kt(ln,e)&&!kt(lo,e))){var r=oy(t,e);return r&&kt(ln,e)&&!(kt(t,Xt)&&t[Xt][e])&&(r.enumerable=!0),r}},uy=function(t){for(var e=ay(lc(t)),r=[],n=0,i;e.length>n;)!kt(ln,i=e[n++])&&i!=Xt&&i!=j1&&r.push(i);return r},hy=function(t){for(var e=t===Tr,r=ay(e?lo:lc(t)),n=[],i=0,o;r.length>i;)kt(ln,o=r[i++])&&(!e||kt(Tr,o))&&n.push(ln[o]);return n};ts||(Jt=function(){if(this instanceof Jt)throw TypeError("Symbol is not a constructor!");var t=F1(arguments.length>0?arguments[0]:void 0),e=function(r){this===Tr&&e.call(lo,r),kt(this,Xt)&&kt(this[Xt],t)&&(this[Xt][t]=!1),vu(this,t,mu(1,r))};return ry&&yu&&vu(Tr,t,{configurable:!0,set:e}),Bf(t)},B1(Jt[Tn],"toString",function(){return this._k}),iy.f=ly,sy.f=hc,Ph.f=ny.f=uy,es.f=Z1,uc.f=hy,U1.f=function(s){return Bf(co(s))});Ut(Ut.G+Ut.W+Ut.F*!ts,{Symbol:Jt});for(var jf="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Ff=0;jf.length>Ff;)co(jf[Ff++]);for(var Uf=H1(co.store),Wf=0;Uf.length>Wf;)W1(Uf[Wf++]);Ut(Ut.S+Ut.F*!ts,"Symbol",{for:function(s){return kt(us,s+="")?us[s]:us[s]=Jt(s)},keyFor:function(t){if(!Mu(t))throw TypeError(t+" is not a symbol!");for(var e in us)if(us[e]===t)return e},useSetter:function(){yu=!0},useSimple:function(){yu=!1}});Ut(Ut.S+Ut.F*!ts,"Object",{create:q1,defineProperty:hc,defineProperties:cy,getOwnPropertyDescriptor:ly,getOwnPropertyNames:uy,getOwnPropertySymbols:hy});var K1=Dh(function(){uc.f(1)});Ut(Ut.S+Ut.F*K1,"Object",{getOwnPropertySymbols:function(t){return uc.f(G1(t))}});ba&&Ut(Ut.S+Ut.F*(!ts||Dh(function(){var s=Jt();return Po([s])!="[null]"||Po({a:s})!="{}"||Po(Object(s))!="{}"})),"JSON",{stringify:function(t){for(var e=[t],r=1,n,i;arguments.length>r;)e.push(arguments[r++]);if(i=n=e[1],!(!Y1(n)&&t===void 0||Mu(t)))return $1(n)||(n=function(o,a){if(typeof i=="function"&&(a=i.call(this,o,a)),!Mu(a))return a}),e[1]=n,Po.apply(ba,e)}});Jt[Tn][zf]||Ln(Jt[Tn],zf,Jt[Tn].valueOf);Nh(Jt,"Symbol");Nh(Math,"Math",!0);Nh(cc.JSON,"JSON",!0);Ah("asyncIterator");Ah("observable");var X1=Pt.Symbol,dy={default:X1,__esModule:!0},dc={};Object.defineProperty(dc,"__esModule",{value:!0});dc.createNowTime=J1;dc.formatDelay=_1;function J1(){var s=null;return Date.now?s=Date.now:s=function(){return new Date().getTime()},s}function _1(s){return typeof s=="number"?s={delay:s}:"entropy"in s&&(s={delay:s.entropy,isEntropy:!0}),s}Object.defineProperty(_a,"__esModule",{value:!0});var eC=ro,Vf=pi(eC),tC=nc,ml=pi(tC),rC=Xm,nC=pi(rC),iC=Rh,sC=pi(iC),oC=oc,aC=pi(oC),cC=ac,lC=pi(cC),uC=dy,gi=pi(uC),fy=dc;function pi(s){return s&&s.__esModule?s:{default:s}}var hC=(0,fy.createNowTime)(),dC={originTime:0,playbackRate:1},Wr=(0,gi.default)("timeMark"),yl=(0,gi.default)("playbackRate"),Vr=(0,gi.default)("timers"),fC=(0,gi.default)("originTime"),hs=(0,gi.default)("setTimer"),$r=(0,gi.default)("parent"),gC=function(){function s(t,e){(0,aC.default)(this,s),t instanceof s&&(e=t,t={}),t=(0,sC.default)({},dC,t),e&&(this[$r]=e);var r=t.nowtime||hC;if(e)Object.defineProperty(this,"globalTime",{get:function(){return e.currentTime}});else{var n=r();Object.defineProperty(this,"globalTime",{get:function(){return r()-n}})}this[Wr]=[{globalTime:this.globalTime,localTime:-t.originTime,entropy:-t.originTime,playbackRate:t.playbackRate,globalEntropy:0}],this[$r]&&(this[Wr][0].globalEntropy=this[$r].entropy),this[fC]=t.originTime,this[yl]=t.playbackRate,this[Vr]=new nC.default}return(0,lC.default)(s,[{key:"markTime",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=e.time,n=r===void 0?this.currentTime:r,i=e.entropy,o=i===void 0?this.entropy:i,a=e.playbackRate,c=a===void 0?this.playbackRate:a,l={globalTime:this.globalTime,localTime:n,entropy:o,playbackRate:c,globalEntropy:this.globalEntropy};this[Wr].push(l)}},{key:"fork",value:function(e){return new s(e,this)}},{key:"seekGlobalTime",value:function(e){var r=this.seekTimeMark(e),n=this[Wr][r],i=n.entropy,o=n.playbackRate,a=n.globalTime;return a+(e-i)/Math.abs(o)}},{key:"seekLocalTime",value:function(e){var r=this.seekTimeMark(e),n=this[Wr][r],i=n.localTime,o=n.entropy,a=n.playbackRate;return a>0?i+(e-o):i-(e-o)}},{key:"seekTimeMark",value:function(e){var r=this[Wr],n=0,i=r.length-1;if(e<=r[n].entropy)return n;if(e>=r[i].entropy)return i;for(var o=Math.floor((n+i)/2);o>n&&o<i;){if(e===r[o].entropy)return o;e<r[o].entropy?i=o:e>r[o].entropy&&(n=o),o=Math.floor((n+i)/2)}return n}},{key:"updateTimers",value:function(){var e=this,r=[].concat((0,ml.default)(this[Vr]));r.forEach(function(n){var i=(0,Vf.default)(n,2),o=i[0],a=i[1];e[hs](a.handler,a.time,o)})}},{key:"clearTimeout",value:function(t){function e(r){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t){var e=this[Vr].get(t);e&&e.timerID!=null&&(this[$r]?this[$r].clearTimeout(e.timerID):clearTimeout(e.timerID)),this[Vr].delete(t)})},{key:"clearInterval",value:function(e){return this.clearTimeout(e)}},{key:"clear",value:function(){var e=this,r=this[Vr];[].concat((0,ml.default)(r.keys())).forEach(function(n){e.clearTimeout(n)})}},{key:"setTimeout",value:function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{delay:0};return this[hs](e,r)}},{key:"setInterval",value:function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{delay:0},n=this,i=this[hs](function o(){n[hs](o,r,i),e()},r);return i}},{key:hs,value:function(e,r){var n=this,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(0,gi.default)("timerID");r=(0,fy.formatDelay)(r);var o=this[Vr].get(i),a=void 0,c=null,l=void 0,u=void 0;o?(this.clearTimeout(i),r.isEntropy?a=(r.delay-(this.entropy-o.startEntropy))/Math.abs(this.playbackRate):a=(r.delay-(this.currentTime-o.startTime))/this.playbackRate,l=o.startTime,u=o.startEntropy):(a=r.delay/(r.isEntropy?Math.abs(this.playbackRate):this.playbackRate),l=this.currentTime,u=this.entropy);var h=this[$r],d=h?h.setTimeout.bind(h):setTimeout,f=r.heading;return!h&&f===!1&&a<0&&(a=1/0),(isFinite(a)||h)&&(a=Math.ceil(a),d!==setTimeout&&(a={delay:a,heading:f}),c=d(function(){n[Vr].delete(i),e()},a)),this[Vr].set(i,{timerID:c,handler:e,time:r,startTime:l,startEntropy:u}),i}},{key:"parent",get:function(){return this[$r]}},{key:"lastTimeMark",get:function(){return this[Wr][this[Wr].length-1]}},{key:"currentTime",get:function(){var e=this.lastTimeMark,r=e.localTime,n=e.globalTime;return r+(this.globalTime-n)*this.playbackRate},set:function(e){var r=this,n=this.currentTime,i=e,o=this[Vr];this.markTime({time:e}),[].concat((0,ml.default)(o)).forEach(function(a){var c=(0,Vf.default)(a,2),l=c[0],u=c[1];if(o.has(l)){var h=u.time,d=h.isEntropy,f=h.delay,g=h.heading,y=u.handler,S=u.startTime;if(d)f===0&&(y(),r.clearTimeout(l));else{var b=S+f;(f===0||g!==!1&&(i-n)*f<=0||n<=b&&b<=i||n>=b&&b>=i)&&(y(),r.clearTimeout(l))}}}),this.updateTimers()}},{key:"entropy",get:function(){var e=this.lastTimeMark,r=e.entropy,n=e.globalEntropy;return r+Math.abs((this.globalEntropy-n)*this.playbackRate)},set:function(e){if(this.entropy>e){var r=this.seekTimeMark(e);this[Wr].length=r+1}this.markTime({entropy:e}),this.updateTimers()}},{key:"globalEntropy",get:function(){return this[$r]?this[$r].entropy:this.globalTime}},{key:"playbackRate",get:function(){return this[yl]},set:function(e){e!==this.playbackRate&&(this.markTime({playbackRate:e}),this[yl]=e,this.updateTimers())}},{key:"paused",get:function(){if(this.playbackRate===0)return!0;for(var e=this.parent;e;){if(e.playbackRate===0)return!0;e=e.parent}return!1}}]),s}();_a.default=gC;var fc={};Object.defineProperty(fc,"__esModule",{value:!0});fc.default={default:function(t,e,r,n,i){return typeof t=="number"&&typeof e=="number"?t+(r-n)/(i-n)*(e-t):r-n>i-r?e:t}};var En={},pC=4,mC=.001,yC=1e-7,vC=10,ks=11,Do=1/(ks-1),MC=typeof Float32Array=="function";function gy(s,t){return 1-3*t+3*s}function py(s,t){return 3*t-6*s}function my(s){return 3*s}function Ea(s,t,e){return((gy(t,e)*s+py(t,e))*s+my(t))*s}function yy(s,t,e){return 3*gy(t,e)*s*s+2*py(t,e)*s+my(t)}function wC(s,t,e,r,n){var i,o,a=0;do o=t+(e-t)/2,i=Ea(o,r,n)-s,i>0?e=o:t=o;while(Math.abs(i)>yC&&++a<vC);return o}function SC(s,t,e,r){for(var n=0;n<pC;++n){var i=yy(t,e,r);if(i===0)return t;var o=Ea(t,e,r)-s;t-=o/i}return t}function TC(s){return s}var CC=function(t,e,r,n){if(!(0<=t&&t<=1&&0<=r&&r<=1))throw new Error("bezier x values must be in [0, 1] range");if(t===e&&r===n)return TC;for(var i=MC?new Float32Array(ks):new Array(ks),o=0;o<ks;++o)i[o]=Ea(o*Do,t,r);function a(c){for(var l=0,u=1,h=ks-1;u!==h&&i[u]<=c;++u)l+=Do;--u;var d=(c-i[u])/(i[u+1]-i[u]),f=l+d*Do,g=yy(f,t,r);return g>=mC?SC(c,f,t,r):g===0?f:wC(c,l,l+Do,t,r)}return function(l){return l===0?0:l===1?1:Ea(a(l),e,n)}};Object.defineProperty(En,"__esModule",{value:!0});En.parseEasing=En.Easings=void 0;var IC=ro,bC=zh(IC),EC=nc,vy=zh(EC),xC=Xm,RC=zh(xC);function zh(s){return s&&s.__esModule?s:{default:s}}var kC=CC,$f=new RC.default;function Bi(){for(var s=arguments.length,t=Array(s),e=0;e<s;e++)t[e]=arguments[e];var r=$f.get(t);return r||(r=kC.apply(void 0,t),$f.set(t,r),r)}function xa(s){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"end";return function(e,r){for(var n=1;n<r.length;n++){var i=r[n].offset;if(e<=i){var o=r[n-1].offset,a=i,c=(e-o)/(a-o),l=1/s,u=c/l;return t==="end"?u=Math.floor(u):u=Math.ceil(u),l*u*(a-o)+o}}return 0}}function AC(s){var t=/^cubic-bezier\((.*)\)/,e=s.match(t);if(e){var r=e[1].trim();return r=r.split(",").map(function(l){return parseFloat(l.trim())}),Bi.apply(void 0,(0,vy.default)(r))}if(t=/^steps\((.*)\)/,e=s.match(t),e){var n=e[1].trim();n=n.split(",").map(function(l){return l.trim()});var i=n,o=(0,bC.default)(i,2),a=o[0],c=o[1];return xa(parseInt(a,10),c)}return s}var wu={linear:function(t){return t},ease:Bi(.25,.1,.25,1),"ease-in":Bi(.42,0,1,1),"ease-out":Bi(0,0,.58,1),"ease-in-out":Bi(.42,0,.58,1),"step-start":xa(1,"start"),"step-end":xa(1,"end")};function PC(s){return typeof s=="string"?wu[s]?s=wu[s]:s=AC(s):s.type==="cubic-bezier"?s=Bi.apply(void 0,(0,vy.default)(s.value)):s.type==="steps"&&(s=xa(s.step,s.pos)),s}En.Easings=wu;En.parseEasing=PC;var Bh={},Yf=hn,DC=io,LC=Gt("species"),My=function(s,t){var e=Yf(s).constructor,r;return e===void 0||(r=Yf(e)[LC])==null?t:DC(r)},NC=function(s,t,e){var r=e===void 0;switch(t.length){case 0:return r?s():s.call(e);case 1:return r?s(t[0]):s.call(e,t[0]);case 2:return r?s(t[0],t[1]):s.call(e,t[0],t[1]);case 3:return r?s(t[0],t[1],t[2]):s.call(e,t[0],t[1],t[2]);case 4:return r?s(t[0],t[1],t[2],t[3]):s.call(e,t[0],t[1],t[2],t[3])}return s.apply(e,t)},Lo=Dn,OC=NC,Gf=zm,Hf=gh,nn=_t,Qf=nn.process,Su=nn.setImmediate,qf=nn.clearImmediate,Zf=nn.MessageChannel,vl=nn.Dispatch,Ml=0,js={},Kf="onreadystatechange",jn,wl,Sl,As=function(){var s=+this;if(js.hasOwnProperty(s)){var t=js[s];delete js[s],t()}},Xf=function(s){As.call(s.data)};(!Su||!qf)&&(Su=function(t){for(var e=[],r=1;arguments.length>r;)e.push(arguments[r++]);return js[++Ml]=function(){OC(typeof t=="function"?t:Function(t),e)},jn(Ml),Ml},qf=function(t){delete js[t]},no(Qf)=="process"?jn=function(s){Qf.nextTick(Lo(As,s,1))}:vl&&vl.now?jn=function(s){vl.now(Lo(As,s,1))}:Zf?(wl=new Zf,Sl=wl.port2,wl.port1.onmessage=Xf,jn=Lo(Sl.postMessage,Sl,1)):nn.addEventListener&&typeof postMessage=="function"&&!nn.importScripts?(jn=function(s){nn.postMessage(s+"","*")},nn.addEventListener("message",Xf,!1)):Kf in Hf("script")?jn=function(s){Gf.appendChild(Hf("script"))[Kf]=function(){Gf.removeChild(this),As.call(s)}}:jn=function(s){setTimeout(Lo(As,s,1),0)});var wy={set:Su},si=_t,zC=wy.set,Jf=si.MutationObserver||si.WebKitMutationObserver,Tu=si.process,Tl=si.Promise,_f=no(Tu)=="process",BC=function(){var s,t,e,r=function(){var a,c;for(_f&&(a=Tu.domain)&&a.exit();s;){c=s.fn,s=s.next;try{c()}catch(l){throw s?e():t=void 0,l}}t=void 0,a&&a.enter()};if(_f)e=function(){Tu.nextTick(r)};else if(Jf&&!(si.navigator&&si.navigator.standalone)){var n=!0,i=document.createTextNode("");new Jf(r).observe(i,{characterData:!0}),e=function(){i.data=n=!n}}else if(Tl&&Tl.resolve){var o=Tl.resolve(void 0);e=function(){o.then(r)}}else e=function(){zC.call(si,r)};return function(a){var c={fn:a,next:void 0};t&&(t.next=c),s||(s=c,e()),t=c}},gc={},eg=io;function jC(s){var t,e;this.promise=new s(function(r,n){if(t!==void 0||e!==void 0)throw TypeError("Bad Promise constructor");t=r,e=n}),this.resolve=eg(t),this.reject=eg(e)}gc.f=function(s){return new jC(s)};var Sy=function(s){try{return{e:!1,v:s()}}catch(t){return{e:!0,v:t}}},FC=_t,tg=FC.navigator,UC=tg&&tg.userAgent||"",WC=hn,VC=Br,$C=gc,Ty=function(s,t){if(WC(s),VC(t)&&t.constructor===s)return t;var e=$C.f(s),r=e.resolve;return r(t),e.promise},YC=lw,Cn=_t,ji=Dn,GC=rc,cr=er,HC=Br,QC=io,qC=Ih,rg=ao,ZC=My,Cy=wy.set,Iy=BC(),by=gc,Cu=Sy,KC=UC,XC=Ty,Nn="Promise",Ey=Cn.TypeError,qi=Cn.process,ng=qi&&qi.versions,JC=ng&&ng.v8||"",Lr=Cn[Nn],Ys=GC(qi)=="process",fa=function(){},No,xy,ig,jh,Gs=xy=by.f,pc=!!function(){try{var s=Lr.resolve(1),t=(s.constructor={})[Gt("species")]=function(e){e(fa,fa)};return(Ys||typeof PromiseRejectionEvent=="function")&&s.then(fa)instanceof t&&JC.indexOf("6.6")!==0&&KC.indexOf("Chrome/66")===-1}catch{}}(),Ry=function(s){var t;return HC(s)&&typeof(t=s.then)=="function"?t:!1},Fh=function(s,t){if(!s._n){s._n=!0;var e=s._c;Iy(function(){for(var r=s._v,n=s._s==1,i=0,o=function(a){var c=n?a.ok:a.fail,l=a.resolve,u=a.reject,h=a.domain,d,f,g;try{c?(n||(s._h==2&&eI(s),s._h=1),c===!0?d=r:(h&&h.enter(),d=c(r),h&&(h.exit(),g=!0)),d===a.promise?u(Ey("Promise-chain cycle")):(f=Ry(d))?f.call(d,l,u):l(d)):u(r)}catch(y){h&&!g&&h.exit(),u(y)}};e.length>i;)o(e[i++]);s._c=[],s._n=!1,t&&!s._h&&_C(s)})}},_C=function(s){Cy.call(Cn,function(){var t=s._v,e=sg(s),r,n,i;if(e&&(r=Cu(function(){Ys?qi.emit("unhandledRejection",t,s):(n=Cn.onunhandledrejection)?n({promise:s,reason:t}):(i=Cn.console)&&i.error&&i.error("Unhandled promise rejection",t)}),s._h=Ys||sg(s)?2:1),s._a=void 0,e&&r.e)throw r.v})},sg=function(s){return s._h!==1&&(s._a||s._c).length===0},eI=function(s){Cy.call(Cn,function(){var t;Ys?qi.emit("rejectionHandled",s):(t=Cn.onrejectionhandled)&&t({promise:s,reason:s._v})})},Hi=function(s){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=s,t._s=2,t._a||(t._a=t._c.slice()),Fh(t,!0))},Iu=function(s){var t=this,e;if(!t._d){t._d=!0,t=t._w||t;try{if(t===s)throw Ey("Promise can't be resolved itself");(e=Ry(s))?Iy(function(){var r={_w:t,_d:!1};try{e.call(s,ji(Iu,r,1),ji(Hi,r,1))}catch(n){Hi.call(r,n)}}):(t._v=s,t._s=1,Fh(t,!1))}catch(r){Hi.call({_w:t,_d:!1},r)}}};pc||(Lr=function(t){qC(this,Lr,Nn,"_h"),QC(t),No.call(this);try{t(ji(Iu,this,1),ji(Hi,this,1))}catch(e){Hi.call(this,e)}},No=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},No.prototype=Ch(Lr.prototype,{then:function(t,e){var r=Gs(ZC(this,Lr));return r.ok=typeof t=="function"?t:!0,r.fail=typeof e=="function"&&e,r.domain=Ys?qi.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&Fh(this,!1),r.promise},catch:function(s){return this.then(void 0,s)}}),ig=function(){var s=new No;this.promise=s,this.resolve=ji(Iu,s,1),this.reject=ji(Hi,s,1)},by.f=Gs=function(s){return s===Lr||s===jh?new ig(s):xy(s)});cr(cr.G+cr.W+cr.F*!pc,{Promise:Lr});oo(Lr,Nn);Gm(Nn);jh=Pt[Nn];cr(cr.S+cr.F*!pc,Nn,{reject:function(t){var e=Gs(this),r=e.reject;return r(t),e.promise}});cr(cr.S+cr.F*YC,Nn,{resolve:function(t){return XC(this===jh?Lr:this,t)}});cr(cr.S+cr.F*!(pc&&Vm()(function(s){Lr.all(s).catch(fa)})),Nn,{all:function(t){var e=this,r=Gs(e),n=r.resolve,i=r.reject,o=Cu(function(){var a=[],c=0,l=1;rg(t,!1,function(u){var h=c++,d=!1;a.push(void 0),l++,e.resolve(u).then(function(f){d||(d=!0,a[h]=f,--l||n(a))},i)}),--l||n(a)});return o.e&&i(o.v),r.promise},race:function(t){var e=this,r=Gs(e),n=r.reject,i=Cu(function(){rg(t,!1,function(o){e.resolve(o).then(r.resolve,n)})});return i.e&&n(i.v),r.promise}});var Cl=er,tI=Pt,rI=_t,nI=My,og=Ty;Cl(Cl.P+Cl.R,"Promise",{finally:function(s){var t=nI(this,tI.Promise||rI.Promise),e=typeof s=="function";return this.then(e?function(r){return og(t,s()).then(function(){return r})}:s,e?function(r){return og(t,s()).then(function(){throw r})}:s)}});var ag=er,iI=gc,sI=Sy;ag(ag.S,"Promise",{try:function(s){var t=iI.f(this),e=sI(s);return(e.e?t.reject:t.resolve)(e.v),t.promise}});var oI=Pt.Promise,ky={default:oI,__esModule:!0},Il=er,aI=Pt,cI=di,lI=function(s,t){var e=(aI.Object||{})[s]||Object[s],r={};r[s]=t(e),Il(Il.S+Il.F*cI(function(){e(1)}),"Object",r)},uI=_i,hI=Ji;lI("keys",function(){return function(t){return hI(uI(t))}});var dI=Pt.Object.keys,fI={default:dI,__esModule:!0},mi={},gI=gr,pI=Ji,mI=hi,yI=es.f,vI=function(s){return function(t){for(var e=mI(t),r=pI(e),n=r.length,i=0,o=[],a;n>i;)a=r[i++],(!gI||yI.call(e,a))&&o.push(s?[a,e[a]]:e[a]);return o}},cg=er,MI=vI(!0);cg(cg.S,"Object",{entries:function(t){return MI(t)}});var wI=Pt.Object.entries,SI={default:wI,__esModule:!0};Object.defineProperty(mi,"__esModule",{value:!0});var TI=ro,CI=uo(TI),II=SI,bI=uo(II),EI=Rh,Ay=uo(EI),xI=ky,RI=uo(xI);mi.defer=DI;mi.periodicity=LI;mi.calculateFramesOffset=NI;mi.getProgress=OI;mi.getCurrentFrame=BI;var kI=En,AI=fc,PI=uo(AI);function uo(s){return s&&s.__esModule?s:{default:s}}function DI(){var s={};return s.promise=new RI.default(function(t,e){s.resolve=t,s.reject=e}),s}function LI(s,t){var e=Math.floor(s/t),r=s-e*t;return r===0&&e>0&&(r=t,e--),[e,r]}function NI(s){s=s.slice(0);var t=s[0],e=s[s.length-1];e.offset=e.offset||1,t.offset=t.offset||0;for(var r=0,n=-1,i=0;i<s.length;i++){var o=s[i];if(o.offset!=null){var a=i-n;if(a>1)for(var c=(o.offset-r)/a,l=0;l<a-1;l++)s[n+l+1].offset=r+c*(l+1);r=o.offset,n=i}if(o.easing!=null&&(o.easing=(0,kI.parseEasing)(o.easing)),i>0){var u=s[i].easing!=null;s[i]=(0,Ay.default)({},s[i-1],s[i]),u||delete s[i].easing}}return s}function OI(s,t,e){var r=s.currentTime,n=t.direction,i=t.duration,o=!1;if(n==="reverse")e=1-e,o=!0;else if(n==="alternate"||n==="alternate-reverse"){var a=Math.floor(r/i);e===1&&a--,a%2^n==="alternate-reverse"&&(e=1-e,o=!0)}return{p:e,inverted:o}}function zI(s,t,e,r){var n={};return(0,bI.default)(t).forEach(function(i){var o=(0,CI.default)(i,2),a=o[0],c=o[1];if(a!=="offset"&&a!=="easing"){var l=e[a]||e.default,u=l(s[a],c,r,s.offset,t.offset);u!=null&&(n[a]=u)}}),n}function BI(s,t,e,r){var n=s.easing,i=s.effect;i||(e=(0,Ay.default)({},PI.default,e));var o={};r=n(r,t);for(var a=1;a<t.length;a++){var c=t[a],l=c.offset;if(l>=r||a===t.length-1){var u=t[a-1],h=u.offset,d=u.easing,f=r;if(d){var g=l-h;f=d((r-h)/g)*g+h}i?o=i(u,c,f,h,l):o=zI(u,c,e,f);break}}return o}Object.defineProperty(Bh,"__esModule",{value:!0});var jI=ky,bl=yi(jI),FI=fI,UI=yi(FI),WI=Rh,ds=yi(WI),VI=oc,$I=yi(VI),YI=ac,GI=yi(YI),HI=dy,dn=yi(HI),QI=_a,qI=yi(QI),fn=mi,ZI=En;function yi(s){return s&&s.__esModule?s:{default:s}}var jt=(0,dn.default)("timing"),Yr=(0,dn.default)("keyframes"),fs=(0,dn.default)("initState"),Dt=(0,dn.default)("readyDefer"),tr=(0,dn.default)("finishedDefer"),Oo=(0,dn.default)("effects"),zo=(0,dn.default)("activeReadyTimer"),El=(0,dn.default)("activeFinishTimer"),Gr=(0,dn.default)("removeDefer"),KI={delay:0,endDelay:0,fill:"auto",iterations:1,playbackRate:1,direction:"normal",easing:"linear",effect:null},XI=function(){function s(t,e,r){var n=this;if((0,$I.default)(this,s),Array.isArray(t)){var i=[t[0],t,e];t=i[0],e=i[1],r=i[2]}typeof r=="number"&&(r={duration:r}),this[jt]=(0,ds.default)({},KI,r),this[jt].easing=(0,ZI.parseEasing)(this[jt].easing),this[Yr]=(0,fn.calculateFramesOffset)(e);var o=this[Yr][this[Yr].length-1];this[fs]={},(0,UI.default)(o).forEach(function(a){Object.prototype.hasOwnProperty.call(t,a)&&a!=="easing"&&a!=="offset"&&(n[fs][a]=t[a])}),this[Yr]=this[Yr].map(function(a){return(0,ds.default)({},n[fs],a)}),this[Yr][0].offset!==0&&this[Yr].unshift((0,ds.default)({},this[fs],{offset:0})),o.offset<1&&this[Yr].push((0,ds.default)({},o,{offset:1})),this[Oo]={},this.timeline=null}return(0,GI.default)(s,[{key:"pause",value:function(){this.timeline.playbackRate=0}},{key:zo,value:function(){var e=this;this[Dt]&&!this[Dt].timerID&&(this.timeline.currentTime<0?this[Dt].timerID=this.timeline.setTimeout(function(){e[Dt].resolve(),delete e[Dt]},{delay:-this.timeline.currentTime,heading:!1}):this[Dt].timerID=this.timeline.setTimeout(function(){e[Dt].resolve(),delete e[Dt]},{delay:0,isEntropy:!0}))}},{key:El,value:function(){var e=this,r=this[jt],n=r.duration,i=r.iterations,o=r.endDelay,a=Math.ceil(n*i+o-this.timeline.currentTime)+1;this[tr]&&!this[tr].timerID&&(this[tr].timerID=this.timeline.setTimeout(function(){e[tr].resolve(),e[Gr](Dt),e[Gr](tr)},{delay:a,heading:!1}),this[tr].reverseTimerID=this.timeline.setTimeout(function(){e[tr].resolve(),e[Gr](Dt),e[Gr](tr),e.timeline=null},{delay:-this[jt].delay-1,heading:!1}))}},{key:"play",value:function(){if(this.playState==="finished"&&this.cancel(),this.playState==="idle"){if(this.playbackRate<=0)return;var e=this[jt],r=e.delay,n=e.playbackRate,i=e.timeline;this.timeline=new qI.default({originTime:r,playbackRate:n},i),this[zo](),this[El]()}else this.playState==="paused"&&(this.timeline.playbackRate=this.playbackRate,this[zo]())}},{key:Gr,value:function(e){var r=this[e],n=this.timeline;r&&n&&(n.clearTimeout(r.timerID),r.reverseTimerID&&n.clearTimeout(r.reverseTimerID)),delete this[e]}},{key:"cancel",value:function(){this[Gr](Dt),this[Gr](tr),this.timeline=null}},{key:"finish",value:function(){this.timeline&&(this.timeline.currentTime=1/0/this.playbackRate),this[Gr](Dt),this[Gr](tr)}},{key:"applyEffects",value:function(e){return(0,ds.default)(this[Oo],e)}},{key:"playbackRate",get:function(){return this[jt].playbackRate},set:function(e){this.timeline&&(this.timeline.playbackRate=e),this[jt].playbackRate=e}},{key:"playState",get:function(){var e=this.timeline,r=this[jt],n=r.iterations,i=r.duration,o=r.endDelay,a="running";if(e==null)a="idle";else if(e.paused)a="paused";else if(e.currentTime<0)a="pending";else{var c=e.currentTime-n*i;c>0&&c<o?a="pending":c>=o&&(a="finished")}return a}},{key:"progress",get:function(){if(!this.timeline)return 0;var e=this[jt],r=e.duration,n=e.iterations,i=this.timeline,o=this.playState,a=void 0;if(o==="idle")a=0;else if(o==="paused"&&i.currentTime<0)a=0;else if(o==="pending")if(i.currentTime<0)a=0;else{var c=i.seekLocalTime(n*r);a=(0,fn.periodicity)(c,r)[1]/r}else(o==="running"||o==="paused")&&(a=(0,fn.periodicity)(i.currentTime,r)[1]/r);return o==="finished"&&(a=(0,fn.periodicity)(n,1)[1]),a}},{key:"frame",get:function(){var e=this.playState,r=this[fs],n=this[jt].fill;if(e==="idle")return r;var i=this.timeline.currentTime,o=this[Yr].slice(0),a=(0,fn.getProgress)(this.timeline,this[jt],this.progress),c=a.p,l=a.inverted,u=r;return i<0&&e==="pending"?(n==="backwards"||n==="both")&&(u=l?o[o.length-1]:o[0]):(e!=="pending"&&e!=="finished"||n==="forwards"||n==="both")&&(u=(0,fn.getCurrentFrame)(this[jt],o,this[Oo],c)),u}},{key:"timing",get:function(){return this[jt]}},{key:"effects",get:function(){return this[Oo]}},{key:"baseTimeline",set:function(e){this[jt].timeline=e},get:function(){return this[jt].timeline}},{key:"ready",get:function(){return this[Dt]?this[Dt].promise:this.timeline&&this.timeline.currentTime>=0&&this.playState!=="paused"?bl.default.resolve():(this[Dt]=(0,fn.defer)(),this.timeline&&this[zo](),this[Dt]?this[Dt].promise:bl.default.resolve())}},{key:"finished",get:function(){return this.playState==="finished"?bl.default.resolve():(this[tr]||(this[tr]=(0,fn.defer)(),this.timeline&&this[El]()),this[tr].promise)}}]),s}();Bh.default=XI;Object.defineProperty(rn,"__esModule",{value:!0});var Py=rn.Timeline=Ir=rn.Effects=rn.Easings=Dy=rn.Animator=void 0,JI=_a,_I=Uh(JI),eb=fc,tb=Uh(eb),rb=En,nb=Bh,ib=Uh(nb);function Uh(s){return s&&s.__esModule?s:{default:s}}var Dy=rn.Animator=ib.default;rn.Easings=rb.Easings;var Ir=rn.Effects=tb.default;Py=rn.Timeline=_I.default;var sb={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};const lg=un(sb);var ug={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function ob(s){var t,e=[],r=1,n;if(typeof s=="string")if(s=s.toLowerCase(),lg[s])e=lg[s].slice(),n="rgb";else if(s==="transparent")r=0,n="rgb",e=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(s)){var i=s.slice(1),o=i.length,a=o<=4;r=1,a?(e=[parseInt(i[0]+i[0],16),parseInt(i[1]+i[1],16),parseInt(i[2]+i[2],16)],o===4&&(r=parseInt(i[3]+i[3],16)/255)):(e=[parseInt(i[0]+i[1],16),parseInt(i[2]+i[3],16),parseInt(i[4]+i[5],16)],o===8&&(r=parseInt(i[6]+i[7],16)/255)),e[0]||(e[0]=0),e[1]||(e[1]=0),e[2]||(e[2]=0),n="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(s)){var c=t[1],l=c==="rgb",i=c.replace(/a$/,"");n=i;var o=i==="cmyk"?4:i==="gray"?1:3;e=t[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(d,f){if(/%$/.test(d))return f===o?parseFloat(d)/100:i==="rgb"?parseFloat(d)*255/100:parseFloat(d);if(i[f]==="h"){if(/deg$/.test(d))return parseFloat(d);if(ug[d]!==void 0)return ug[d]}return parseFloat(d)}),c===i&&e.push(1),r=l||e[o]===void 0?1:e[o],e=e.slice(0,o)}else s.length>10&&/[0-9](?:\s|\/)/.test(s)&&(e=s.match(/([0-9]+)/g).map(function(u){return parseFloat(u)}),n=s.match(/([a-z])/ig).join("").toLowerCase());else isNaN(s)?Array.isArray(s)||s.length?(e=[s[0],s[1],s[2]],n="rgb",r=s.length===4?s[3]:1):s instanceof Object&&(s.r!=null||s.red!=null||s.R!=null?(n="rgb",e=[s.r||s.red||s.R||0,s.g||s.green||s.G||0,s.b||s.blue||s.B||0]):(n="hsl",e=[s.h||s.hue||s.H||0,s.s||s.saturation||s.S||0,s.l||s.lightness||s.L||s.b||s.brightness]),r=s.a||s.alpha||s.opacity||1,s.opacity!=null&&(r/=100)):(n="rgb",e=[s>>>16,(s&65280)>>>8,s&255]);return{space:n,values:e,alpha:r}}const bu={min:[0,0,0],max:[255,255,255]};var xl={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(s){var t=s[0]/360,e=s[1]/100,r=s[2]/100,n,i,o,a,c,l=0;if(e===0)return c=r*255,[c,c,c];for(i=r<.5?r*(1+e):r+e-r*e,n=2*r-i,a=[0,0,0];l<3;)o=t+1/3*-(l-1),o<0?o++:o>1&&o--,c=6*o<1?n+(i-n)*6*o:2*o<1?i:3*o<2?n+(i-n)*(2/3-o)*6:n,a[l++]=c*255;return a}};bu.hsl=function(s){var t=s[0]/255,e=s[1]/255,r=s[2]/255,n=Math.min(t,e,r),i=Math.max(t,e,r),o=i-n,a,c,l;return i===n?a=0:t===i?a=(e-r)/o:e===i?a=2+(r-t)/o:r===i&&(a=4+(t-e)/o),a=Math.min(a*60,360),a<0&&(a+=360),l=(n+i)/2,i===n?c=0:l<=.5?c=o/(i+n):c=o/(2-i-n),[a,c*100,l*100]};function Eu(s){Array.isArray(s)&&s.raw&&(s=String.raw(...arguments));var t,e=ob(s);if(!e.space)return[];const r=e.space[0]==="h"?xl.min:bu.min,n=e.space[0]==="h"?xl.max:bu.max;return t=Array(3),t[0]=Math.min(Math.max(e.values[0],r[0]),n[0]),t[1]=Math.min(Math.max(e.values[1],r[1]),n[1]),t[2]=Math.min(Math.max(e.values[2],r[2]),n[2]),e.space[0]==="h"&&(t=xl.rgb(t)),t.push(Math.min(Math.max(e.alpha,0),1)),t}Ze(Array);function ab(){if(typeof performance<"u"&&performance.now)return performance.now();if(typeof process<"u"&&process.hrtime){const[s,t]=process.hrtime();return s*1e3+t*1e-6}return Date.now?Date.now():new Date().getTime()}let sn,oi;typeof global<"u"&&typeof global.requestAnimationFrame=="function"?(sn=global.requestAnimationFrame,oi=global.cancelAnimationFrame):(sn=function(s){return setTimeout(()=>{s(ab())},16)},oi=function(s){return clearTimeout(s)});Ze(Array);function hg(s){if(typeof s=="string"){if(s=s.trim(),/^[0-9.]+%$/.test(s))return parseFloat(s)/100;if(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin)$/.test(s))return uh(s)}return s}function mc(s,t,e,r,n){return typeof s=="string"&&(s=Eu(s)),typeof t=="string"&&(t=Eu(t)),Ir.default(s,t,e,r,n)}function cb(s,t,e,r,n){return Ir.default(s,t,e,r,n)}Ir.default=function(s,t,e,r,n){return Array.isArray(s)&&Array.isArray(t)?s.map((i,o)=>i+(e-r)/(n-r)*(t[o]-i)):typeof s=="number"&&typeof t=="number"?s+(e-r)/(n-r)*(t-s):e-r>n-e?t:s};Ir.fillColor=mc;Ir.strokeColor=mc;Ir.bgcolor=mc;Ir.borderColor=mc;Ir.text=cb;class lb extends Dy{constructor(t,e,r){const n=t.attr();Object.entries(n).forEach(([i,o])=>{n[i]=Ir[i]?o:hg(o)}),e=e.map(({...i})=>{const o={};return Object.entries(i).forEach(([a,c])=>{o[a]=Ir[a]?c:hg(c)}),o}),super(n,e,r),this.target=t,this.setter=function(i,o){o.attr(i)}}get playState(){return this.target.parent?super.playState:"idle"}get finished(){return super.finished.then(()=>{const t=this;return new Promise(e=>{function r(){t.setter(t.frame,t.target);const n=t.playState;n==="finished"||n==="idle"?(oi(t.requestId),e()):sn(r)}r()})})}finish(){super.finish(),oi(this.requestId),this.setter(this.frame,this.target)}play(){if(!this.target.parent||this.playState==="running")return;super.play(),this.setter(this.frame,this.target);const t=this;this.ready.then(()=>{t.setter(t.frame,t.target),t.requestId=sn(function e(){const r=t.target;if(typeof document<"u"&&document.documentElement&&document.documentElement.contains&&r.layer&&r.layer.canvas&&!document.documentElement.contains(r.layer.canvas)){t.cancel();return}const n=t.playState;t.setter(t.frame,t.target),n!=="idle"&&(n==="running"?t.requestId=sn(e):(n==="paused"||n==="pending"&&t.timeline.currentTime<0)&&t.ready.then(()=>{t.setter(t.frame,t.target),t.requestId=sn(e)}))})})}cancel(t=!1){oi(this.requestId),t?(this.setter(this.frame,this.target),super.cancel()):(super.cancel(),this.setter(this.frame,this.target))}}Ze(Array);const ga=new Map;function dg(s,t={},e=[]){s=s.toLowerCase();const r=ga.get(s);if(!r)throw new TypeError(`Invalid node: ${s}`);const n=new r(t);return e.forEach(i=>{n.appendChild(i)}),n}const Ht={registerNode(s,t,e=100){if(t=t.toLowerCase(),ga.has(t))throw new TypeError(`Cannot registerNode, ${t} has been taken.`);ga.set(t,s),Object.defineProperties(s.prototype,{nodeType:{value:e},tagName:{value:t.toUpperCase()},nodeName:{value:t},ownerDocument:{value:Ht},namespaceURI:{value:`http://spritejs.com/${t}`}})},createElement:dg,createElementNS(s,t){return dg(t)},isSpriteNode(s){return ga.has(s.toLowerCase())}};Ze(Array);const Bo=Symbol("type"),Rl=Symbol("bubbles"),kl=Symbol("originalEvent"),fg=Symbol("detail");class ai{constructor(t,{bubbles:e=null}={}){if(typeof t=="string"?(this[Bo]=t,this[Rl]=!!e):(this[Bo]=t.type,this[kl]=t,this[Rl]=e!=null?!!e:!!t.bubbles,t.detail&&(this[fg]=t.detail)),!this[Bo])throw new TypeError("Invalid event type.");this.cancelBubble=!1}setOriginalEvent(t){this[kl]=t}get originalEvent(){return this[kl]}get type(){return this[Bo]}get bubbles(){return this[Rl]}get detail(){return this[fg]}stopPropagation(){this.cancelBubble=!0}}Ze(Array);function ub(s){if(s=s.trim(),!s||s==="none")return null;const t=/^(?:(url|blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)\(([^()]*(?:\(.*\))*[^()]*)\))+$/i,e=s.match(/(?:(url|blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)\(([^()]*(?:\(.*\))*[^()]*)\))+?/ig),r=[];return e&&e.forEach(n=>{const i=n.match(t);if(!i)throw new TypeError("Invalid fitler string.");let[,o,a]=i;o=o.toLowerCase(),a=a.trim().match(/([^( )]+|([^( )]+\(.*\)))(?=\s|$)/g).map((c,l)=>{let u;return o==="url"||o==="drop-shadow"&&l===3?u=c:u=qe(c),/%$/.test(c)&&(u/=100),u}),r.push({type:o,args:a})}),r}function hb(s,t){s.clearFilter(),t&&t.forEach(({type:e,args:r})=>{let n=e;n==="drop-shadow"?n="dropShadow":n==="hue-rotate"&&(n="hueRotate"),s[n](...r)})}Ze(Array);function db(s,t){if(!t)return;const e=s.getListeners("beforerender"),r=s.getListeners("afterrender");e.length&&!t.beforeRender?t.beforeRender=n=>{s.dispatchEvent({type:"beforerender",detail:{context:n}})}:e.length||(t.beforeRender=null),r.length&&!t.afterRender?t.afterRender=n=>{s.dispatchEvent({type:"afterrender",detail:{context:n}})}:r.length||(t.afterRender=null)}Ze(Array);const fb=Symbol.for("spritejs_changedAttrs"),gb=Symbol.for("spritejs_attributes"),jo=Symbol("resolution"),Ei=Symbol("animations"),Fn=Symbol("eventListeners"),Un=Symbol("captureEventListeners"),gg=Symbol("filters"),pg=Symbol("display"),Fo=Symbol("program"),gs=Symbol("shaderAttrs"),xi=Symbol("uniforms"),Uo=Symbol("mask");var ru;let yc=(ru=class{constructor(t={}){this.attributes=new this.constructor.Attr(this),this[jo]={width:300,height:150},Object.assign(this.attributes,t),this[Ei]=new Set,this[Fn]={},this[Un]={}}get ancestors(){let t=this.parent;const e=[];for(;t;)e.push(t),t=t.parent;return e}get animations(){return this[Ei]}get filters(){return this[gg]||this.parent&&this.parent.filters}get isVisible(){return!1}get layer(){return this.parent?this.parent.layer:null}get localMatrix(){const t=this.transformMatrix,{x:e,y:r}=this.attributes;return t[4]+=e,t[5]+=r,t}get opacity(){let t=this.attributes.opacity;return this.parent&&this.parent.opacity!=null&&(t*=this.parent.opacity),t}get mask(){return this[Uo]?{...this[Uo],owner:this}:this.parent&&this.parent.mask}get parentNode(){return this.parent}get nextSibling(){return this.getNodeNearBy(1)}get previousSibling(){return this.getNodeNearBy(-1)}get program(){return this[Fo]}get renderer(){return this.parent?this.parent.renderer:null}get renderMatrix(){if(this.__cacheRenderMatrix)return this.__cacheRenderMatrix;let t=this.localMatrix;const e=this.parent;if(e){const r=e.__cacheRenderMatrix||e.renderMatrix;r&&(t=zr(Array.of(0,0,0,0,0,0),r,t))}return t}get worldScaling(){const t=this.renderMatrix;return[Math.hypot(t[0],t[1]),Math.hypot(t[2],t[3])]}get worldRotation(){const t=this.renderMatrix;return Math.atan2(t[1],t[3])}get worldPosition(){const t=this.renderMatrix;return[t[4],t[5]]}get uniforms(){return this[xi]}get className(){return this.attributes.className}set className(t){this.attributes.className=t}get id(){return this.attributes.id}set id(t){this.attributes.id=t}get name(){return this.attributes.name}set name(t){this.attributes.name=t}get zIndex(){return this.attributes.zIndex}set zIndex(t){this.attributes.zIndex=t}get mesh(){return null}get shaderAttrs(){return this[gs]||{}}activateAnimations(){const t=this.layer;if(t){const e=this[Ei];e.forEach(n=>{n.baseTimeline=t.timeline,n.play(),n.finished.then(()=>{e.delete(n)})});const r=this.children;r&&r.forEach(n=>{n.activateAnimations&&n.activateAnimations()})}}addEventListener(t,e,r={}){t==="mousewheel"&&(t="wheel"),typeof r=="boolean"&&(r={capture:r});const{capture:n,once:i}=r,o=n?Un:Fn;return this[o][t]=this[o][t]||[],this[o][t].push({listener:e,once:i}),this}animate(t,e){const r=new lb(this,t,e);return this.effects&&r.applyEffects(this.effects),this.layer&&(r.baseTimeline=this.layer.timeline,r.play(),r.finished.then(()=>{this[Ei].delete(r)})),this[Ei].add(r),r}attr(...t){if(t.length===0)return this.attributes[gb];if(t.length>1){let[e,r]=t;return typeof r=="function"&&(r=r(this.attr(e))),this.setAttribute(e,r),this}return typeof t[0]=="string"?this.getAttribute(t[0]):(Object.assign(this.attributes,t[0]),this)}cloneNode(){const t=new this.constructor,e=this.attributes[fb];return t.attr(e),t}connect(t,e){Object.defineProperty(this,"parent",{value:t,writable:!1,configurable:!0}),Object.defineProperty(this,"zOrder",{value:e,writable:!1,configurable:!0}),t.timeline&&this.activateAnimations(),this.setResolution(t.getResolution()),this.forceUpdate(),this.dispatchEvent({type:"append",detail:{parent:t,zOrder:e}})}contains(t){for(;t&&this!==t;)t=t.parent;return!!t}deactivateAnimations(){this[Ei].forEach(e=>e.cancel());const t=this.children;t&&t.forEach(e=>{e.deactivateAnimations&&e.deactivateAnimations()})}disconnect(){const{parent:t,zOrder:e}=this;delete this.parent,delete this.zOrder,this.deactivateAnimations(),this.dispatchEvent({type:"remove",detail:{parent:t,zOrder:e}}),t&&t.forceUpdate()}dispatchEvent(t){t instanceof ai||(t=new ai(t)),t.target=this;let e=t.type;e==="mousewheel"&&(e="wheel");const r=[this];let n=this.parent;for(;t.bubbles&&n;)r.push(n),n=n.parent;for(let i=r.length-1;i>=0;i--){const o=r[i],a=o[Un]&&o[Un][e];if(a&&a.length&&(t.currentTarget=o,a.forEach(({listener:c,once:l})=>{c.call(this,t),l&&r.removeEventListener(c)}),delete t.currentTarget),!t.bubbles&&t.cancelBubble)break}if(!t.cancelBubble)for(let i=0;i<r.length;i++){const o=r[i],a=o[Fn]&&o[Fn][e];if(a&&a.length&&(t.currentTarget=o,a.forEach(({listener:c,once:l})=>{c.call(this,t),l&&r.removeEventListener(c)}),delete t.currentTarget),!t.bubbles||t.cancelBubble)break}}dispatchPointerEvent(t){const{layerX:e,layerY:r}=t;return this.isPointCollision(e,r)?(this.dispatchEvent(t),!0):!1}draw(t=[]){const e=this.mesh;if(e){if(hb(e,this.filters),this._applyMask(e),t.push(e),this[Fo]){e.setProgram(this[Fo]);const r=this[gs];r&&Object.entries(r).forEach(([i,o])=>{e.setAttribute(i,o)});const n=this[xi];if(this[xi]){const i={};Object.entries(n).forEach(([o,a])=>{typeof a=="function"&&(a=a(this,o)),i[o]=a}),e.setUniforms(i)}}db(this,e)}return t}forceUpdate(){this.parent&&this.parent.forceUpdate()}getAttribute(t){return this.attributes[t]}getListeners(t,{capture:e=!1}={}){return[...this[e?Un:Fn][t]||[]]}getNodeNearBy(t=1){if(!this.parent)return null;if(t===0)return this;const e=this.parent.children,r=e.indexOf(this);return e[r+t]}getWorldPosition(t,e){const r=this.renderMatrix,n=t*r[0]+e*r[2]+r[4],i=t*r[1]+e*r[3]+r[5];return[n,i]}getOffsetPosition(t,e){const r=Ia(Array.of(0,0,0,0,0,0),this.renderMatrix),n=t*r[0]+e*r[2]+r[4],i=t*r[1]+e*r[3]+r[5];return[n,i]}getResolution(){return{...this[jo]}}isPointCollision(t,e){if(!this.mesh)return!1;const r=this.attributes.pointerEvents;if(r==="none"||r!=="all"&&!this.isVisible)return!1;let n="both";return r==="visibleFill"&&(n="fill"),r==="visibleStroke"&&(n="stroke"),this.mesh.isPointCollision(t,e,n)}onPropertyChange(t,e,r){t!=="id"&&t!=="name"&&t!=="className"&&t!=="pointerEvents"&&t!=="passEvents"&&this.forceUpdate(),t==="filter"&&(this[gg]=ub(e)),t==="zIndex"&&this.parent&&this.parent.reorder()}setAttribute(t,e){t==="attrs"&&this.attr(e),this.attributes[t]=e}setMouseCapture(){this.layer&&(this.layer.__mouseCapturedTarget=this)}setMask(t,e={}){return t?(this[Uo]={handle:t,rect:e.rect||t.rect},this.forceUpdate(),this):this.clearMask()}clearMask(){return this[Uo]=null,this.forceUpdate(),this}_applyMask(t){const e=this.mask,r=this.renderer;if(!e||!r||!r.glRenderer||this.attributes.clipPath){if(t.__spriteMaskApplied){t.setUniforms({u_clipSampler:null});const u=t.meshData;u.attributes&&delete u.attributes.a_clipUV,t.blend=t.__spriteMaskBlend,delete t.__spriteMaskBlend,t.__spriteMaskApplied=!1}return}const n=e.handle.getTexture(r),i=e.rect;if(!n||!i||i[2]<=0||i[3]<=0)return;const o=Ia(Array.of(0,0,0,0,0,0),e.owner.renderMatrix);if(!o)return;const a=zr(Array.of(0,0,0,0,0,0),o,this.renderMatrix);t.setUniforms({u_clipSampler:n});const c=t.meshData,l=c.position0||c.positions;c.attributes=c.attributes||{},c.attributes.a_clipUV=l.map(([u,h])=>{const d=u*a[0]+h*a[2]+a[4],f=u*a[1]+h*a[3]+a[5];return[(d-i[0])/i[2],1-(f-i[1])/i[3]]}),t.__spriteMaskApplied||(t.__spriteMaskBlend=t.blend),t.blend=!0,t.__spriteMaskApplied=!0}setProgram(t){this[Fo]=t,this.forceUpdate()}setShaderAttribute(t,e){this[gs]=this[gs]||{},this[gs][t]=e,this.forceUpdate()}setUniforms(t){this[xi]=this[xi]||{},Object.assign(this[xi],t),this.forceUpdate()}setResolution({width:t,height:e}){const{width:r,height:n}=this[jo];(r!==t||n!==e)&&(this[jo]={width:t,height:e},this.forceUpdate(),this.dispatchEvent({type:"resolutionchange",detail:{width:t,height:e}}))}show(){this.attributes.display==="none"&&(this.attributes.display=this[pg]||"")}hide(){this.attributes.display!=="none"&&(this[pg]=this.attributes.display,this.attributes.display="none")}releaseMouseCapture(){this.layer&&this.layer.__mouseCapturedTarget===this&&(this.layer.__mouseCapturedTarget=null)}remove(){return this.parent&&this.parent.removeChild?(this.parent.removeChild(this),!0):!1}removeAllListeners(t,e={}){typeof e=="boolean"&&(e={capture:e});const n=e.capture?Un:Fn;return this[n][t]&&(this[n][t]=[]),this}removeAttribute(t){this.setAttribute(t,null)}removeEventListener(t,e,r={}){typeof r=="boolean"&&(r={capture:r});const i=r.capture?Un:Fn;if(this[i][t]){const o=this[i][t];if(o)for(let a=0;a<o.length;a++){const{listener:c}=o[a];if(c===e){this[i][t].splice(a,1);break}}}return this}transition(t,e="linear"){const r=this,n=Symbol("animation");e=e||"linear";let i=0;return typeof t=="object"&&(i=t.delay||0,t=t.duration),{[n]:null,cancel(o=!1){const a=this[n];a&&a.cancel(o)},end(){const o=this[n];o&&(o.playState==="running"||o.playState==="pending")&&o.finish()},reverse(){const o=this[n];if(o)if(o.playState==="running"||o.playState==="pending")o.playbackRate=-o.playbackRate;else{const a=o.timing.direction;o.timing.direction=a==="reverse"?"normal":"reverse",o.play()}return o.finished},attr(o,a){return this.end(),typeof o=="string"&&(o={[o]:a}),Object.entries(o).forEach(([c,l])=>{typeof l=="function"&&(o[c]=l(r.attr(c)))}),this[n]=r.animate([o],{duration:t*1e3,delay:i*1e3,fill:"forwards",easing:e}),this[n].finished}}}updateContours(){}},x(ru,"Attr",hh),ru);Ht.registerNode(yc,"node");Ze(Array);class pb{constructor({vector:t,colors:e}){if(!Array.isArray(t)||t.length!==4&&t.length!==6&&t.length!==3)throw new TypeError("Invalid gradient");this.vector=t,this.colors=e.map(({offset:r,color:n})=>({offset:r,color:xn(n)}))}toString(){return JSON.stringify({vector:this.vector,colors:this.colors})}}function xn(s){if(s==null||(s||(s="transparent"),s instanceof pb))return s;const t=Eu(s);if(!t||!t.length)throw new TypeError("Invalid color value.");return`rgba(${t.join()})`}function Ly(s,t,e){const r=s.boundingBox[0];if(e.vector){let{vector:n,colors:i}=e;n.length===4?(n=[n[0]+r[0],n[1]+r[1],n[2]+r[0],n[3]+r[1]],s.setLinearGradient({vector:n,colors:i,type:t})):n.length===3?(n=[n[0]+r[0],n[1]+r[1],n[2]],s.setCircularGradient({vector:n,colors:i,type:t})):(n=[n[0]+r[0],n[1]+r[1],n[2],n[3]+r[0],n[4]+r[1],n[5]],s.setRadialGradient({vector:n,colors:i,type:t}))}else s.gradient&&s.gradient[t]&&(delete s.gradient[t],delete s.uniforms.u_radialGradientVector)}function Ra(s,{color:t,rule:e="nonzero"}){return Ly(s,"fill",t),t.vector||s.setFill({color:t,rule:e}),s}function ka(s,{color:t,lineWidth:e,lineCap:r,lineJoin:n,lineDash:i,lineDashOffset:o,miterLimit:a,roundSegments:c}){Ly(s,"stroke",t),t.vector&&(t=[0,0,0,1]),s.setStroke({color:t,thickness:e,cap:r,join:n,miterLimit:a,lineDash:i,lineDashOffset:o,roundSegments:c})}Ze(Array);const Tt=Symbol.for("spritejs_setAttribute"),Ct=Symbol.for("spritejs_getAttribute"),mb=Symbol.for("spritejs_setAttributeDefault"),yb=Symbol.for("spritejs_declareAlias");let vc=class extends hh{constructor(t){super(t),this[mb]({anchorX:0,anchorY:0,width:void 0,height:void 0,borderWidth:0,borderColor:"rgba(0,0,0,1)",borderDash:void 0,borderDashOffset:0,borderTopLeftRadius:[0,0],borderTopRightRadius:[0,0],borderBottomRightRadius:[0,0],borderBottomLeftRadius:[0,0],bgcolor:"rgba(0,0,0,0)",paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0,boxSizing:"content-box",clipPath:void 0}),this[yb]("anchor","size","border","borderRadius","padding")}get anchorX(){return this[Ct]("anchorX")}set anchorX(t){this[Tt]("anchorX",qe(t))}get anchorY(){return this[Ct]("anchorY")}set anchorY(t){this[Tt]("anchorY",qe(t))}get anchor(){return[this.anchorX,this.anchorY]}set anchor(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.anchorX=t[0],this.anchorY=t[1]}get width(){return this[Ct]("width")}set width(t){this[Tt]("width",qe(t))}get height(){return this[Ct]("height")}set height(t){this[Tt]("height",qe(t))}get size(){return[this.width,this.height]}set size(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.width=t[0],this.height=t[1]}get borderWidth(){return this[Ct]("borderWidth")}set borderWidth(t){this[Tt]("borderWidth",qe(t))}get borderColor(){return this[Ct]("borderColor")}set borderColor(t){this[Tt]("borderColor",xn(t))}get border(){return[this.borderWidth,this.borderColor]}set border(t){t=Mt(t),Array.isArray(t)||(t=[t]),this.borderWidth=t[0],t[1]!=null&&(this.borderColor=t[1])}get borderDash(){return this[Ct]("borderDash")}set borderDash(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t]),this[Tt]("borderDash",t?t.map(qe):null)}get borderDashOffset(){return this[Ct]("borderDashOffset")}set borderDashOffset(t){this[Tt]("borderDashOffset",qe(t))}get borderTopLeftRadius(){return this[Ct]("borderTopLeftRadius")}set borderTopLeftRadius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this[Tt]("borderTopLeftRadius",t.map(qe))}get borderTopRightRadius(){return this[Ct]("borderTopRightRadius")}set borderTopRightRadius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this[Tt]("borderTopRightRadius",t.map(qe))}get borderBottomRightRadius(){return this[Ct]("borderBottomRightRadius")}set borderBottomRightRadius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this[Tt]("borderBottomRightRadius",t.map(qe))}get borderBottomLeftRadius(){return this[Ct]("borderBottomLeftRadius")}set borderBottomLeftRadius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this[Tt]("borderBottomLeftRadius",t.map(qe))}get borderRadius(){return[...this.borderTopLeftRadius,...this.borderTopRightRadius,...this.borderBottomRightRadius,...this.borderBottomLeftRadius]}set borderRadius(t){if(t=Mt(t),!Array.isArray(t))t=Array(8).fill(t);else if(t.length===2)t=[t[0],t[1],t[0],t[1],t[0],t[1],t[0],t[1]];else if(t.length===4)t=[t[0],t[1],t[2],t[3],t[0],t[1],t[2],t[3]];else if(t.length===6)t=[t[0],t[1],t[2],t[3],t[4],t[5],t[2],t[3]];else if(t.length!==8)throw new TypeError("Invalid borderRadius value.");this.borderTopLeftRadius=[t[0],t[1]],this.borderTopRightRadius=[t[2],t[3]],this.borderBottomRightRadius=[t[4],t[5]],this.borderBottomLeftRadius=[t[6],t[7]]}get bgcolor(){return this[Ct]("bgcolor")}set bgcolor(t){this[Tt]("bgcolor",xn(t))}get paddingTop(){return this[Ct]("paddingTop")}set paddingTop(t){this[Tt]("paddingTop",qe(t))}get paddingRight(){return this[Ct]("paddingRight")}set paddingRight(t){this[Tt]("paddingRight",qe(t))}get paddingBottom(){return this[Ct]("paddingBottom")}set paddingBottom(t){this[Tt]("paddingBottom",qe(t))}get paddingLeft(){return this[Ct]("paddingLeft")}set paddingLeft(t){this[Tt]("paddingLeft",qe(t))}get padding(){return[this.paddingTop,this.paddingRight,this.paddingBottom,this.paddingLeft]}set padding(t){t=Mt(t),Array.isArray(t)?t.length===2?t=[t[0],t[1],t[0],t[1]]:t.length===3&&(t=[t[0],t[1],t[2],t[1]]):t=[t,t,t,t],this.paddingTop=t[0],this.paddingRight=t[1],this.paddingBottom=t[2],this.paddingLeft=t[3]}get clipPath(){return this[Ct]("clipPath")}set clipPath(t){this[Tt]("clipPath",t)}get boxSizing(){return this[Ct]("boxSizing")}set boxSizing(t){if(t!=null&&t!=="border-box"&&t!=="content-box")throw new TypeError("Invalid boxSizing type.");this[Tt]("boxSizing",t)}};Ze(Array);function Wo(s,t,e,r,n,i="leftTop"){const o=.5522848,a=r/2*o,c=n/2*o,l=t+r,u=e+n,h=t+r/2,d=e+n/2;i==="leftTop"?(s.moveTo(t,d),s.bezierCurveTo(t,d-c,h-a,e,h,e)):i==="rightTop"?s.bezierCurveTo(h+a,e,l,d-c,l,d):i==="rightBottom"?s.bezierCurveTo(l,d+c,h+a,u,h,u):i==="leftBottom"&&s.bezierCurveTo(h-a,u,t,d+c,t,d)}function vb(s,[t,e,r,n],i){if(!i||Array.isArray(i)&&i.every(o=>o===0))s.beginPath(),s.rect(t,e,r,n);else{typeof i=="number"&&(i=Array(8).fill(i));const[o,a,c,l,u,h,d,f]=i.map((g,y)=>y%2?Math.min(g,n/2):Math.min(g,r/2));s.beginPath(),s.moveTo(t,e+a),Wo(s,t,e,o*2,a*2,"leftTop"),s.lineTo(t+r-c,e),Wo(s,t+r-c*2,e,c*2,l*2,"rightTop"),s.lineTo(t+r,e+n-h),Wo(s,t+r-u*2,e+n-h*2,u*2,h*2,"rightBottom"),s.lineTo(t+d,e+n),Wo(s,t,e+n-f*2,d*2,f*2,"leftBottom"),s.closePath()}return s}Ze(Array);function Ny(s,t){if(!s)return{x:0,y:0,width:0,height:0,left:0,top:0,right:0,bottom:0};const[[e,r],[n,i]]=s,o=e*t[0]+r*t[2]+t[4],a=e*t[1]+r*t[3]+t[5],c=n*t[0]+r*t[2]+t[4],l=n*t[1]+r*t[3]+t[5],u=n*t[0]+i*t[2]+t[4],h=n*t[1]+i*t[3]+t[5],d=e*t[0]+i*t[2]+t[4],f=e*t[1]+i*t[3]+t[5],g=Math.min(o,c,u,d),y=Math.min(a,l,h,f),S=Math.max(o,c,u,d),b=Math.max(a,l,h,f);return{x:g,y,width:S-g,height:b-y,left:g,top:y,right:S,bottom:b}}Ze(Array);const Hr=Symbol("mesh");class ho extends yc{constructor(t={}){super(t)}get borderSize(){const{paddingTop:t,paddingRight:e,paddingBottom:r,paddingLeft:n,borderWidth:i}=this.attributes,[o,a]=this.contentSize;return[n+o+e+i,t+a+r+i]}get clientSize(){const{paddingTop:t,paddingRight:e,paddingBottom:r,paddingLeft:n}=this.attributes,[i,o]=this.contentSize;return[n+i+e,t+o+r]}get contentSize(){let{width:t,height:e,boxSizing:r,paddingTop:n,paddingRight:i,paddingBottom:o,paddingLeft:a}=this.attributes;if(t=t||0,e=e||0,r==="border-box"){const c=2*this.attributes.borderWidth;t-=c+i+a,e-=c+n+o,t=Math.max(0,t),e=Math.max(0,e)}return[t,e]}get hasBorder(){return this.attributes.borderWidth>0}get isVisible(){const[t,e]=this.borderSize;return t>0&&e>0}get mesh(){if(this.attributes.display==="none")return null;const t=this.clientBox;if(t){let e=this[Hr];if(e)e.box!==t&&(e.contours=t.contours,e.box=t);else{e=new ft.Mesh2D(t),e.box=t;const n=this.attributes.bgcolor;if(Ra(e,{color:n}),this.hasBorder){const{borderColor:o,borderWidth:a,borderDash:c,borderDashOffset:l}=this.attributes;ka(e,{color:o,lineWidth:a,lineDash:c,lineDashOffset:l})}this[Hr]=e;const i=this.attributes.clipPath;i&&this[Hr].setClipPath(i)}const r=this.opacity;return e.getOpacity()!==r&&e.setOpacity(r),e.setTransform(...this.renderMatrix),e}return null}get offsetSize(){const{paddingTop:t,paddingRight:e,paddingBottom:r,paddingLeft:n,borderWidth:i}=this.attributes,[o,a]=this.contentSize,c=2*i;return[n+o+e+c,t+a+r+c]}get originalClientRect(){if(this.mesh){const t=this.mesh.boundingBox;return[t[0][0],t[0][1],t[1][0]-t[0][0],t[1][1]-t[0][1]]}return[0,0,0,0]}get originalContentRect(){const[t,e,r,n]=this.originalClientRect,i=this.attributes.padding;return[t+i[0],e+i[1],r-i[0]-i[2],n-i[1]-i[3]]}getBoundingClientRect(){let t=this.renderMatrix;this.layer&&this.layer.layerTransformInvert&&(t=zr(Array.of(0,0,0,0,0,0),this.layer.transformMatrix,t));let e=null;if(this.mesh){e=[...this.mesh.boundingBox];const r=this.attributes.borderWidth;r&&(e[0]=[e[0][0]-r,e[0][1]-r],e[1]=[e[1][0]+r,e[1][1]+r])}return Ny(e,t)}onPropertyChange(t,e,r){if(super.onPropertyChange(t,e,r),(t==="anchorX"||t==="anchorY"||t==="boxSizing"||t==="width"||t==="height"||t==="borderWidth"||t==="paddingLeft"||t==="paddingRight"||t==="paddingTop"||t==="paddingBottom"||/^border(TopLeft|TopRight|BottomRight|BottomLeft)Radius$/.test(t))&&this.updateContours(),this[Hr]&&t==="clipPath"&&this[Hr].setClipPath(e),this[Hr]&&t==="bgcolor"&&Ra(this[Hr],{color:e}),this[Hr]&&(t==="borderColor"||t==="borderWidth"||t==="borderDash"||t==="borderDashOffset")){const{borderColor:n,borderWidth:i,borderDash:o,borderDashOffset:a}=this.attributes;ka(this[Hr],{color:n,lineWidth:i,lineDash:i?o:0,lineDashOffset:a})}}updateContours(){const{anchorX:t,anchorY:e,borderWidth:r,borderRadius:n}=this.attributes,[i,o]=this.borderSize,a=this.offsetSize,c=.5*r,l=-t*a[0]+c,u=-e*a[1]+c;this.clientBox=new ft.Figure2D,vb(this.clientBox,[l,u,i,o],n)}}x(ho,"Attr",vc);Ht.registerNode(ho,"block");Ze(Array);let Mb=class extends vc{};var Oy={exports:{}},Wh={Text:"text",CDATA:"cdata",isTag:function(s){return s.type==="tag"||s.type==="script"||s.type==="style"}},zy={exports:{}},By={};(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.Doctype=s.CDATA=s.Tag=s.Style=s.Script=s.Comment=s.Directive=s.Text=s.Root=s.isTag=s.ElementType=void 0;var t;(function(r){r.Root="root",r.Text="text",r.Directive="directive",r.Comment="comment",r.Script="script",r.Style="style",r.Tag="tag",r.CDATA="cdata",r.Doctype="doctype"})(t=s.ElementType||(s.ElementType={}));function e(r){return r.type===t.Tag||r.type===t.Script||r.type===t.Style}s.isTag=e,s.Root=t.Root,s.Text=t.Text,s.Directive=t.Directive,s.Comment=t.Comment,s.Script=t.Script,s.Style=t.Style,s.Tag=t.Tag,s.CDATA=t.CDATA,s.Doctype=t.Doctype})(By);var jy={},cn={};const wb="Á",Sb="á",Tb="Ă",Cb="ă",Ib="∾",bb="∿",Eb="∾̳",xb="Â",Rb="â",kb="´",Ab="А",Pb="а",Db="Æ",Lb="æ",Nb="⁡",Ob="𝔄",zb="𝔞",Bb="À",jb="à",Fb="ℵ",Ub="ℵ",Wb="Α",Vb="α",$b="Ā",Yb="ā",Gb="⨿",Hb="&",Qb="&",qb="⩕",Zb="⩓",Kb="∧",Xb="⩜",Jb="⩘",_b="⩚",eE="∠",tE="⦤",rE="∠",nE="⦨",iE="⦩",sE="⦪",oE="⦫",aE="⦬",cE="⦭",lE="⦮",uE="⦯",hE="∡",dE="∟",fE="⊾",gE="⦝",pE="∢",mE="Å",yE="⍼",vE="Ą",ME="ą",wE="𝔸",SE="𝕒",TE="⩯",CE="≈",IE="⩰",bE="≊",EE="≋",xE="'",RE="⁡",kE="≈",AE="≊",PE="Å",DE="å",LE="𝒜",NE="𝒶",OE="≔",zE="*",BE="≈",jE="≍",FE="Ã",UE="ã",WE="Ä",VE="ä",$E="∳",YE="⨑",GE="≌",HE="϶",QE="‵",qE="∽",ZE="⋍",KE="∖",XE="⫧",JE="⊽",_E="⌅",ex="⌆",tx="⌅",rx="⎵",nx="⎶",ix="≌",sx="Б",ox="б",ax="„",cx="∵",lx="∵",ux="∵",hx="⦰",dx="϶",fx="ℬ",gx="ℬ",px="Β",mx="β",yx="ℶ",vx="≬",Mx="𝔅",wx="𝔟",Sx="⋂",Tx="◯",Cx="⋃",Ix="⨀",bx="⨁",Ex="⨂",xx="⨆",Rx="★",kx="▽",Ax="△",Px="⨄",Dx="⋁",Lx="⋀",Nx="⤍",Ox="⧫",zx="▪",Bx="▴",jx="▾",Fx="◂",Ux="▸",Wx="␣",Vx="▒",$x="░",Yx="▓",Gx="█",Hx="=⃥",Qx="≡⃥",qx="⫭",Zx="⌐",Kx="𝔹",Xx="𝕓",Jx="⊥",_x="⊥",e2="⋈",t2="⧉",r2="┐",n2="╕",i2="╖",s2="╗",o2="┌",a2="╒",c2="╓",l2="╔",u2="─",h2="═",d2="┬",f2="╤",g2="╥",p2="╦",m2="┴",y2="╧",v2="╨",M2="╩",w2="⊟",S2="⊞",T2="⊠",C2="┘",I2="╛",b2="╜",E2="╝",x2="└",R2="╘",k2="╙",A2="╚",P2="│",D2="║",L2="┼",N2="╪",O2="╫",z2="╬",B2="┤",j2="╡",F2="╢",U2="╣",W2="├",V2="╞",$2="╟",Y2="╠",G2="‵",H2="˘",Q2="˘",q2="¦",Z2="𝒷",K2="ℬ",X2="⁏",J2="∽",_2="⋍",eR="⧅",tR="\\",rR="⟈",nR="•",iR="•",sR="≎",oR="⪮",aR="≏",cR="≎",lR="≏",uR="Ć",hR="ć",dR="⩄",fR="⩉",gR="⩋",pR="∩",mR="⋒",yR="⩇",vR="⩀",MR="ⅅ",wR="∩︀",SR="⁁",TR="ˇ",CR="ℭ",IR="⩍",bR="Č",ER="č",xR="Ç",RR="ç",kR="Ĉ",AR="ĉ",PR="∰",DR="⩌",LR="⩐",NR="Ċ",OR="ċ",zR="¸",BR="¸",jR="⦲",FR="¢",UR="·",WR="·",VR="𝔠",$R="ℭ",YR="Ч",GR="ч",HR="✓",QR="✓",qR="Χ",ZR="χ",KR="ˆ",XR="≗",JR="↺",_R="↻",ek="⊛",tk="⊚",rk="⊝",nk="⊙",ik="®",sk="Ⓢ",ok="⊖",ak="⊕",ck="⊗",lk="○",uk="⧃",hk="≗",dk="⨐",fk="⫯",gk="⧂",pk="∲",mk="”",yk="’",vk="♣",Mk="♣",wk=":",Sk="∷",Tk="⩴",Ck="≔",Ik="≔",bk=",",Ek="@",xk="∁",Rk="∘",kk="∁",Ak="ℂ",Pk="≅",Dk="⩭",Lk="≡",Nk="∮",Ok="∯",zk="∮",Bk="𝕔",jk="ℂ",Fk="∐",Uk="∐",Wk="©",Vk="©",$k="℗",Yk="∳",Gk="↵",Hk="✗",Qk="⨯",qk="𝒞",Zk="𝒸",Kk="⫏",Xk="⫑",Jk="⫐",_k="⫒",eA="⋯",tA="⤸",rA="⤵",nA="⋞",iA="⋟",sA="↶",oA="⤽",aA="⩈",cA="⩆",lA="≍",uA="∪",hA="⋓",dA="⩊",fA="⊍",gA="⩅",pA="∪︀",mA="↷",yA="⤼",vA="⋞",MA="⋟",wA="⋎",SA="⋏",TA="¤",CA="↶",IA="↷",bA="⋎",EA="⋏",xA="∲",RA="∱",kA="⌭",AA="†",PA="‡",DA="ℸ",LA="↓",NA="↡",OA="⇓",zA="‐",BA="⫤",jA="⊣",FA="⤏",UA="˝",WA="Ď",VA="ď",$A="Д",YA="д",GA="‡",HA="⇊",QA="ⅅ",qA="ⅆ",ZA="⤑",KA="⩷",XA="°",JA="∇",_A="Δ",eP="δ",tP="⦱",rP="⥿",nP="𝔇",iP="𝔡",sP="⥥",oP="⇃",aP="⇂",cP="´",lP="˙",uP="˝",hP="`",dP="˜",fP="⋄",gP="⋄",pP="⋄",mP="♦",yP="♦",vP="¨",MP="ⅆ",wP="ϝ",SP="⋲",TP="÷",CP="÷",IP="⋇",bP="⋇",EP="Ђ",xP="ђ",RP="⌞",kP="⌍",AP="$",PP="𝔻",DP="𝕕",LP="¨",NP="˙",OP="⃜",zP="≐",BP="≑",jP="≐",FP="∸",UP="∔",WP="⊡",VP="⌆",$P="∯",YP="¨",GP="⇓",HP="⇐",QP="⇔",qP="⫤",ZP="⟸",KP="⟺",XP="⟹",JP="⇒",_P="⊨",eD="⇑",tD="⇕",rD="∥",nD="⤓",iD="↓",sD="↓",oD="⇓",aD="⇵",cD="̑",lD="⇊",uD="⇃",hD="⇂",dD="⥐",fD="⥞",gD="⥖",pD="↽",mD="⥟",yD="⥗",vD="⇁",MD="↧",wD="⊤",SD="⤐",TD="⌟",CD="⌌",ID="𝒟",bD="𝒹",ED="Ѕ",xD="ѕ",RD="⧶",kD="Đ",AD="đ",PD="⋱",DD="▿",LD="▾",ND="⇵",OD="⥯",zD="⦦",BD="Џ",jD="џ",FD="⟿",UD="É",WD="é",VD="⩮",$D="Ě",YD="ě",GD="Ê",HD="ê",QD="≖",qD="≕",ZD="Э",KD="э",XD="⩷",JD="Ė",_D="ė",eL="≑",tL="ⅇ",rL="≒",nL="𝔈",iL="𝔢",sL="⪚",oL="È",aL="è",cL="⪖",lL="⪘",uL="⪙",hL="∈",dL="⏧",fL="ℓ",gL="⪕",pL="⪗",mL="Ē",yL="ē",vL="∅",ML="∅",wL="◻",SL="∅",TL="▫",CL=" ",IL=" ",bL=" ",EL="Ŋ",xL="ŋ",RL=" ",kL="Ę",AL="ę",PL="𝔼",DL="𝕖",LL="⋕",NL="⧣",OL="⩱",zL="ε",BL="Ε",jL="ε",FL="ϵ",UL="≖",WL="≕",VL="≂",$L="⪖",YL="⪕",GL="⩵",HL="=",QL="≂",qL="≟",ZL="⇌",KL="≡",XL="⩸",JL="⧥",_L="⥱",eN="≓",tN="ℯ",rN="ℰ",nN="≐",iN="⩳",sN="≂",oN="Η",aN="η",cN="Ð",lN="ð",uN="Ë",hN="ë",dN="€",fN="!",gN="∃",pN="∃",mN="ℰ",yN="ⅇ",vN="ⅇ",MN="≒",wN="Ф",SN="ф",TN="♀",CN="ffi",IN="ff",bN="ffl",EN="𝔉",xN="𝔣",RN="fi",kN="◼",AN="▪",PN="fj",DN="♭",LN="fl",NN="▱",ON="ƒ",zN="𝔽",BN="𝕗",jN="∀",FN="∀",UN="⋔",WN="⫙",VN="ℱ",$N="⨍",YN="½",GN="⅓",HN="¼",QN="⅕",qN="⅙",ZN="⅛",KN="⅔",XN="⅖",JN="¾",_N="⅗",eO="⅜",tO="⅘",rO="⅚",nO="⅝",iO="⅞",sO="⁄",oO="⌢",aO="𝒻",cO="ℱ",lO="ǵ",uO="Γ",hO="γ",dO="Ϝ",fO="ϝ",gO="⪆",pO="Ğ",mO="ğ",yO="Ģ",vO="Ĝ",MO="ĝ",wO="Г",SO="г",TO="Ġ",CO="ġ",IO="≥",bO="≧",EO="⪌",xO="⋛",RO="≥",kO="≧",AO="⩾",PO="⪩",DO="⩾",LO="⪀",NO="⪂",OO="⪄",zO="⋛︀",BO="⪔",jO="𝔊",FO="𝔤",UO="≫",WO="⋙",VO="⋙",$O="ℷ",YO="Ѓ",GO="ѓ",HO="⪥",QO="≷",qO="⪒",ZO="⪤",KO="⪊",XO="⪊",JO="⪈",_O="≩",ez="⪈",tz="≩",rz="⋧",nz="𝔾",iz="𝕘",sz="`",oz="≥",az="⋛",cz="≧",lz="⪢",uz="≷",hz="⩾",dz="≳",fz="𝒢",gz="ℊ",pz="≳",mz="⪎",yz="⪐",vz="⪧",Mz="⩺",wz=">",Sz=">",Tz="≫",Cz="⋗",Iz="⦕",bz="⩼",Ez="⪆",xz="⥸",Rz="⋗",kz="⋛",Az="⪌",Pz="≷",Dz="≳",Lz="≩︀",Nz="≩︀",Oz="ˇ",zz=" ",Bz="½",jz="ℋ",Fz="Ъ",Uz="ъ",Wz="⥈",Vz="↔",$z="⇔",Yz="↭",Gz="^",Hz="ℏ",Qz="Ĥ",qz="ĥ",Zz="♥",Kz="♥",Xz="…",Jz="⊹",_z="𝔥",eB="ℌ",tB="ℋ",rB="⤥",nB="⤦",iB="⇿",sB="∻",oB="↩",aB="↪",cB="𝕙",lB="ℍ",uB="―",hB="─",dB="𝒽",fB="ℋ",gB="ℏ",pB="Ħ",mB="ħ",yB="≎",vB="≏",MB="⁃",wB="‐",SB="Í",TB="í",CB="⁣",IB="Î",bB="î",EB="И",xB="и",RB="İ",kB="Е",AB="е",PB="¡",DB="⇔",LB="𝔦",NB="ℑ",OB="Ì",zB="ì",BB="ⅈ",jB="⨌",FB="∭",UB="⧜",WB="℩",VB="IJ",$B="ij",YB="Ī",GB="ī",HB="ℑ",QB="ⅈ",qB="ℐ",ZB="ℑ",KB="ı",XB="ℑ",JB="⊷",_B="Ƶ",ej="⇒",tj="℅",rj="∞",nj="⧝",ij="ı",sj="⊺",oj="∫",aj="∬",cj="ℤ",lj="∫",uj="⊺",hj="⋂",dj="⨗",fj="⨼",gj="⁣",pj="⁢",mj="Ё",yj="ё",vj="Į",Mj="į",wj="𝕀",Sj="𝕚",Tj="Ι",Cj="ι",Ij="⨼",bj="¿",Ej="𝒾",xj="ℐ",Rj="∈",kj="⋵",Aj="⋹",Pj="⋴",Dj="⋳",Lj="∈",Nj="⁢",Oj="Ĩ",zj="ĩ",Bj="І",jj="і",Fj="Ï",Uj="ï",Wj="Ĵ",Vj="ĵ",$j="Й",Yj="й",Gj="𝔍",Hj="𝔧",Qj="ȷ",qj="𝕁",Zj="𝕛",Kj="𝒥",Xj="𝒿",Jj="Ј",_j="ј",e3="Є",t3="є",r3="Κ",n3="κ",i3="ϰ",s3="Ķ",o3="ķ",a3="К",c3="к",l3="𝔎",u3="𝔨",h3="ĸ",d3="Х",f3="х",g3="Ќ",p3="ќ",m3="𝕂",y3="𝕜",v3="𝒦",M3="𝓀",w3="⇚",S3="Ĺ",T3="ĺ",C3="⦴",I3="ℒ",b3="Λ",E3="λ",x3="⟨",R3="⟪",k3="⦑",A3="⟨",P3="⪅",D3="ℒ",L3="«",N3="⇤",O3="⤟",z3="←",B3="↞",j3="⇐",F3="⤝",U3="↩",W3="↫",V3="⤹",$3="⥳",Y3="↢",G3="⤙",H3="⤛",Q3="⪫",q3="⪭",Z3="⪭︀",K3="⤌",X3="⤎",J3="❲",_3="{",e4="[",t4="⦋",r4="⦏",n4="⦍",i4="Ľ",s4="ľ",o4="Ļ",a4="ļ",c4="⌈",l4="{",u4="Л",h4="л",d4="⤶",f4="“",g4="„",p4="⥧",m4="⥋",y4="↲",v4="≤",M4="≦",w4="⟨",S4="⇤",T4="←",C4="←",I4="⇐",b4="⇆",E4="↢",x4="⌈",R4="⟦",k4="⥡",A4="⥙",P4="⇃",D4="⌊",L4="↽",N4="↼",O4="⇇",z4="↔",B4="↔",j4="⇔",F4="⇆",U4="⇋",W4="↭",V4="⥎",$4="↤",Y4="⊣",G4="⥚",H4="⋋",Q4="⧏",q4="⊲",Z4="⊴",K4="⥑",X4="⥠",J4="⥘",_4="↿",eF="⥒",tF="↼",rF="⪋",nF="⋚",iF="≤",sF="≦",oF="⩽",aF="⪨",cF="⩽",lF="⩿",uF="⪁",hF="⪃",dF="⋚︀",fF="⪓",gF="⪅",pF="⋖",mF="⋚",yF="⪋",vF="⋚",MF="≦",wF="≶",SF="≶",TF="⪡",CF="≲",IF="⩽",bF="≲",EF="⥼",xF="⌊",RF="𝔏",kF="𝔩",AF="≶",PF="⪑",DF="⥢",LF="↽",NF="↼",OF="⥪",zF="▄",BF="Љ",jF="љ",FF="⇇",UF="≪",WF="⋘",VF="⌞",$F="⇚",YF="⥫",GF="◺",HF="Ŀ",QF="ŀ",qF="⎰",ZF="⎰",KF="⪉",XF="⪉",JF="⪇",_F="≨",eU="⪇",tU="≨",rU="⋦",nU="⟬",iU="⇽",sU="⟦",oU="⟵",aU="⟵",cU="⟸",lU="⟷",uU="⟷",hU="⟺",dU="⟼",fU="⟶",gU="⟶",pU="⟹",mU="↫",yU="↬",vU="⦅",MU="𝕃",wU="𝕝",SU="⨭",TU="⨴",CU="∗",IU="_",bU="↙",EU="↘",xU="◊",RU="◊",kU="⧫",AU="(",PU="⦓",DU="⇆",LU="⌟",NU="⇋",OU="⥭",zU="‎",BU="⊿",jU="‹",FU="𝓁",UU="ℒ",WU="↰",VU="↰",$U="≲",YU="⪍",GU="⪏",HU="[",QU="‘",qU="‚",ZU="Ł",KU="ł",XU="⪦",JU="⩹",_U="<",e5="<",t5="≪",r5="⋖",n5="⋋",i5="⋉",s5="⥶",o5="⩻",a5="◃",c5="⊴",l5="◂",u5="⦖",h5="⥊",d5="⥦",f5="≨︀",g5="≨︀",p5="¯",m5="♂",y5="✠",v5="✠",M5="↦",w5="↦",S5="↧",T5="↤",C5="↥",I5="▮",b5="⨩",E5="М",x5="м",R5="—",k5="∺",A5="∡",P5=" ",D5="ℳ",L5="𝔐",N5="𝔪",O5="℧",z5="µ",B5="*",j5="⫰",F5="∣",U5="·",W5="⊟",V5="−",$5="∸",Y5="⨪",G5="∓",H5="⫛",Q5="…",q5="∓",Z5="⊧",K5="𝕄",X5="𝕞",J5="∓",_5="𝓂",eW="ℳ",tW="∾",rW="Μ",nW="μ",iW="⊸",sW="⊸",oW="∇",aW="Ń",cW="ń",lW="∠⃒",uW="≉",hW="⩰̸",dW="≋̸",fW="ʼn",gW="≉",pW="♮",mW="ℕ",yW="♮",vW=" ",MW="≎̸",wW="≏̸",SW="⩃",TW="Ň",CW="ň",IW="Ņ",bW="ņ",EW="≇",xW="⩭̸",RW="⩂",kW="Н",AW="н",PW="–",DW="⤤",LW="↗",NW="⇗",OW="↗",zW="≠",BW="≐̸",jW="​",FW="​",UW="​",WW="​",VW="≢",$W="⤨",YW="≂̸",GW="≫",HW="≪",QW=`
568
- `,qW="∄",ZW="∄",KW="𝔑",XW="𝔫",JW="≧̸",_W="≱",eV="≱",tV="≧̸",rV="⩾̸",nV="⩾̸",iV="⋙̸",sV="≵",oV="≫⃒",aV="≯",cV="≯",lV="≫̸",uV="↮",hV="⇎",dV="⫲",fV="∋",gV="⋼",pV="⋺",mV="∋",yV="Њ",vV="њ",MV="↚",wV="⇍",SV="‥",TV="≦̸",CV="≰",IV="↚",bV="⇍",EV="↮",xV="⇎",RV="≰",kV="≦̸",AV="⩽̸",PV="⩽̸",DV="≮",LV="⋘̸",NV="≴",OV="≪⃒",zV="≮",BV="⋪",jV="⋬",FV="≪̸",UV="∤",WV="⁠",VV=" ",$V="𝕟",YV="ℕ",GV="⫬",HV="¬",QV="≢",qV="≭",ZV="∦",KV="∉",XV="≠",JV="≂̸",_V="∄",e$="≯",t$="≱",r$="≧̸",n$="≫̸",i$="≹",s$="⩾̸",o$="≵",a$="≎̸",c$="≏̸",l$="∉",u$="⋵̸",h$="⋹̸",d$="∉",f$="⋷",g$="⋶",p$="⧏̸",m$="⋪",y$="⋬",v$="≮",M$="≰",w$="≸",S$="≪̸",T$="⩽̸",C$="≴",I$="⪢̸",b$="⪡̸",E$="∌",x$="∌",R$="⋾",k$="⋽",A$="⊀",P$="⪯̸",D$="⋠",L$="∌",N$="⧐̸",O$="⋫",z$="⋭",B$="⊏̸",j$="⋢",F$="⊐̸",U$="⋣",W$="⊂⃒",V$="⊈",$$="⊁",Y$="⪰̸",G$="⋡",H$="≿̸",Q$="⊃⃒",q$="⊉",Z$="≁",K$="≄",X$="≇",J$="≉",_$="∤",eY="∦",tY="∦",rY="⫽⃥",nY="∂̸",iY="⨔",sY="⊀",oY="⋠",aY="⊀",cY="⪯̸",lY="⪯̸",uY="⤳̸",hY="↛",dY="⇏",fY="↝̸",gY="↛",pY="⇏",mY="⋫",yY="⋭",vY="⊁",MY="⋡",wY="⪰̸",SY="𝒩",TY="𝓃",CY="∤",IY="∦",bY="≁",EY="≄",xY="≄",RY="∤",kY="∦",AY="⋢",PY="⋣",DY="⊄",LY="⫅̸",NY="⊈",OY="⊂⃒",zY="⊈",BY="⫅̸",jY="⊁",FY="⪰̸",UY="⊅",WY="⫆̸",VY="⊉",$Y="⊃⃒",YY="⊉",GY="⫆̸",HY="≹",QY="Ñ",qY="ñ",ZY="≸",KY="⋪",XY="⋬",JY="⋫",_Y="⋭",eG="Ν",tG="ν",rG="#",nG="№",iG=" ",sG="≍⃒",oG="⊬",aG="⊭",cG="⊮",lG="⊯",uG="≥⃒",hG=">⃒",dG="⤄",fG="⧞",gG="⤂",pG="≤⃒",mG="<⃒",yG="⊴⃒",vG="⤃",MG="⊵⃒",wG="∼⃒",SG="⤣",TG="↖",CG="⇖",IG="↖",bG="⤧",EG="Ó",xG="ó",RG="⊛",kG="Ô",AG="ô",PG="⊚",DG="О",LG="о",NG="⊝",OG="Ő",zG="ő",BG="⨸",jG="⊙",FG="⦼",UG="Œ",WG="œ",VG="⦿",$G="𝔒",YG="𝔬",GG="˛",HG="Ò",QG="ò",qG="⧁",ZG="⦵",KG="Ω",XG="∮",JG="↺",_G="⦾",e8="⦻",t8="‾",r8="⧀",n8="Ō",i8="ō",s8="Ω",o8="ω",a8="Ο",c8="ο",l8="⦶",u8="⊖",h8="𝕆",d8="𝕠",f8="⦷",g8="“",p8="‘",m8="⦹",y8="⊕",v8="↻",M8="⩔",w8="∨",S8="⩝",T8="ℴ",C8="ℴ",I8="ª",b8="º",E8="⊶",x8="⩖",R8="⩗",k8="⩛",A8="Ⓢ",P8="𝒪",D8="ℴ",L8="Ø",N8="ø",O8="⊘",z8="Õ",B8="õ",j8="⨶",F8="⨷",U8="⊗",W8="Ö",V8="ö",$8="⌽",Y8="‾",G8="⏞",H8="⎴",Q8="⏜",q8="¶",Z8="∥",K8="∥",X8="⫳",J8="⫽",_8="∂",e6="∂",t6="П",r6="п",n6="%",i6=".",s6="‰",o6="⊥",a6="‱",c6="𝔓",l6="𝔭",u6="Φ",h6="φ",d6="ϕ",f6="ℳ",g6="☎",p6="Π",m6="π",y6="⋔",v6="ϖ",M6="ℏ",w6="ℎ",S6="ℏ",T6="⨣",C6="⊞",I6="⨢",b6="+",E6="∔",x6="⨥",R6="⩲",k6="±",A6="±",P6="⨦",D6="⨧",L6="±",N6="ℌ",O6="⨕",z6="𝕡",B6="ℙ",j6="£",F6="⪷",U6="⪻",W6="≺",V6="≼",$6="⪷",Y6="≺",G6="≼",H6="≺",Q6="⪯",q6="≼",Z6="≾",K6="⪯",X6="⪹",J6="⪵",_6="⋨",e9="⪯",t9="⪳",r9="≾",n9="′",i9="″",s9="ℙ",o9="⪹",a9="⪵",c9="⋨",l9="∏",u9="∏",h9="⌮",d9="⌒",f9="⌓",g9="∝",p9="∝",m9="∷",y9="∝",v9="≾",M9="⊰",w9="𝒫",S9="𝓅",T9="Ψ",C9="ψ",I9=" ",b9="𝔔",E9="𝔮",x9="⨌",R9="𝕢",k9="ℚ",A9="⁗",P9="𝒬",D9="𝓆",L9="ℍ",N9="⨖",O9="?",z9="≟",B9='"',j9='"',F9="⇛",U9="∽̱",W9="Ŕ",V9="ŕ",$9="√",Y9="⦳",G9="⟩",H9="⟫",Q9="⦒",q9="⦥",Z9="⟩",K9="»",X9="⥵",J9="⇥",_9="⤠",eH="⤳",tH="→",rH="↠",nH="⇒",iH="⤞",sH="↪",oH="↬",aH="⥅",cH="⥴",lH="⤖",uH="↣",hH="↝",dH="⤚",fH="⤜",gH="∶",pH="ℚ",mH="⤍",yH="⤏",vH="⤐",MH="❳",wH="}",SH="]",TH="⦌",CH="⦎",IH="⦐",bH="Ř",EH="ř",xH="Ŗ",RH="ŗ",kH="⌉",AH="}",PH="Р",DH="р",LH="⤷",NH="⥩",OH="”",zH="”",BH="↳",jH="ℜ",FH="ℛ",UH="ℜ",WH="ℝ",VH="ℜ",$H="▭",YH="®",GH="®",HH="∋",QH="⇋",qH="⥯",ZH="⥽",KH="⌋",XH="𝔯",JH="ℜ",_H="⥤",e7="⇁",t7="⇀",r7="⥬",n7="Ρ",i7="ρ",s7="ϱ",o7="⟩",a7="⇥",c7="→",l7="→",u7="⇒",h7="⇄",d7="↣",f7="⌉",g7="⟧",p7="⥝",m7="⥕",y7="⇂",v7="⌋",M7="⇁",w7="⇀",S7="⇄",T7="⇌",C7="⇉",I7="↝",b7="↦",E7="⊢",x7="⥛",R7="⋌",k7="⧐",A7="⊳",P7="⊵",D7="⥏",L7="⥜",N7="⥔",O7="↾",z7="⥓",B7="⇀",j7="˚",F7="≓",U7="⇄",W7="⇌",V7="‏",$7="⎱",Y7="⎱",G7="⫮",H7="⟭",Q7="⇾",q7="⟧",Z7="⦆",K7="𝕣",X7="ℝ",J7="⨮",_7="⨵",eQ="⥰",tQ=")",rQ="⦔",nQ="⨒",iQ="⇉",sQ="⇛",oQ="›",aQ="𝓇",cQ="ℛ",lQ="↱",uQ="↱",hQ="]",dQ="’",fQ="’",gQ="⋌",pQ="⋊",mQ="▹",yQ="⊵",vQ="▸",MQ="⧎",wQ="⧴",SQ="⥨",TQ="℞",CQ="Ś",IQ="ś",bQ="‚",EQ="⪸",xQ="Š",RQ="š",kQ="⪼",AQ="≻",PQ="≽",DQ="⪰",LQ="⪴",NQ="Ş",OQ="ş",zQ="Ŝ",BQ="ŝ",jQ="⪺",FQ="⪶",UQ="⋩",WQ="⨓",VQ="≿",$Q="С",YQ="с",GQ="⊡",HQ="⋅",QQ="⩦",qQ="⤥",ZQ="↘",KQ="⇘",XQ="↘",JQ="§",_Q=";",eq="⤩",tq="∖",rq="∖",nq="✶",iq="𝔖",sq="𝔰",oq="⌢",aq="♯",cq="Щ",lq="щ",uq="Ш",hq="ш",dq="↓",fq="←",gq="∣",pq="∥",mq="→",yq="↑",vq="­",Mq="Σ",wq="σ",Sq="ς",Tq="ς",Cq="∼",Iq="⩪",bq="≃",Eq="≃",xq="⪞",Rq="⪠",kq="⪝",Aq="⪟",Pq="≆",Dq="⨤",Lq="⥲",Nq="←",Oq="∘",zq="∖",Bq="⨳",jq="⧤",Fq="∣",Uq="⌣",Wq="⪪",Vq="⪬",$q="⪬︀",Yq="Ь",Gq="ь",Hq="⌿",Qq="⧄",qq="/",Zq="𝕊",Kq="𝕤",Xq="♠",Jq="♠",_q="∥",eZ="⊓",tZ="⊓︀",rZ="⊔",nZ="⊔︀",iZ="√",sZ="⊏",oZ="⊑",aZ="⊏",cZ="⊑",lZ="⊐",uZ="⊒",hZ="⊐",dZ="⊒",fZ="□",gZ="□",pZ="⊓",mZ="⊏",yZ="⊑",vZ="⊐",MZ="⊒",wZ="⊔",SZ="▪",TZ="□",CZ="▪",IZ="→",bZ="𝒮",EZ="𝓈",xZ="∖",RZ="⌣",kZ="⋆",AZ="⋆",PZ="☆",DZ="★",LZ="ϵ",NZ="ϕ",OZ="¯",zZ="⊂",BZ="⋐",jZ="⪽",FZ="⫅",UZ="⊆",WZ="⫃",VZ="⫁",$Z="⫋",YZ="⊊",GZ="⪿",HZ="⥹",QZ="⊂",qZ="⋐",ZZ="⊆",KZ="⫅",XZ="⊆",JZ="⊊",_Z="⫋",eK="⫇",tK="⫕",rK="⫓",nK="⪸",iK="≻",sK="≽",oK="≻",aK="⪰",cK="≽",lK="≿",uK="⪰",hK="⪺",dK="⪶",fK="⋩",gK="≿",pK="∋",mK="∑",yK="∑",vK="♪",MK="¹",wK="²",SK="³",TK="⊃",CK="⋑",IK="⪾",bK="⫘",EK="⫆",xK="⊇",RK="⫄",kK="⊃",AK="⊇",PK="⟉",DK="⫗",LK="⥻",NK="⫂",OK="⫌",zK="⊋",BK="⫀",jK="⊃",FK="⋑",UK="⊇",WK="⫆",VK="⊋",$K="⫌",YK="⫈",GK="⫔",HK="⫖",QK="⤦",qK="↙",ZK="⇙",KK="↙",XK="⤪",JK="ß",_K=" ",eX="⌖",tX="Τ",rX="τ",nX="⎴",iX="Ť",sX="ť",oX="Ţ",aX="ţ",cX="Т",lX="т",uX="⃛",hX="⌕",dX="𝔗",fX="𝔱",gX="∴",pX="∴",mX="∴",yX="Θ",vX="θ",MX="ϑ",wX="ϑ",SX="≈",TX="∼",CX="  ",IX=" ",bX=" ",EX="≈",xX="∼",RX="Þ",kX="þ",AX="˜",PX="∼",DX="≃",LX="≅",NX="≈",OX="⨱",zX="⊠",BX="×",jX="⨰",FX="∭",UX="⤨",WX="⌶",VX="⫱",$X="⊤",YX="𝕋",GX="𝕥",HX="⫚",QX="⤩",qX="‴",ZX="™",KX="™",XX="▵",JX="▿",_X="◃",eJ="⊴",tJ="≜",rJ="▹",nJ="⊵",iJ="◬",sJ="≜",oJ="⨺",aJ="⃛",cJ="⨹",lJ="⧍",uJ="⨻",hJ="⏢",dJ="𝒯",fJ="𝓉",gJ="Ц",pJ="ц",mJ="Ћ",yJ="ћ",vJ="Ŧ",MJ="ŧ",wJ="≬",SJ="↞",TJ="↠",CJ="Ú",IJ="ú",bJ="↑",EJ="↟",xJ="⇑",RJ="⥉",kJ="Ў",AJ="ў",PJ="Ŭ",DJ="ŭ",LJ="Û",NJ="û",OJ="У",zJ="у",BJ="⇅",jJ="Ű",FJ="ű",UJ="⥮",WJ="⥾",VJ="𝔘",$J="𝔲",YJ="Ù",GJ="ù",HJ="⥣",QJ="↿",qJ="↾",ZJ="▀",KJ="⌜",XJ="⌜",JJ="⌏",_J="◸",e_="Ū",t_="ū",r_="¨",n_="_",i_="⏟",s_="⎵",o_="⏝",a_="⋃",c_="⊎",l_="Ų",u_="ų",h_="𝕌",d_="𝕦",f_="⤒",g_="↑",p_="↑",m_="⇑",y_="⇅",v_="↕",M_="↕",w_="⇕",S_="⥮",T_="↿",C_="↾",I_="⊎",b_="↖",E_="↗",x_="υ",R_="ϒ",k_="ϒ",A_="Υ",P_="υ",D_="↥",L_="⊥",N_="⇈",O_="⌝",z_="⌝",B_="⌎",j_="Ů",F_="ů",U_="◹",W_="𝒰",V_="𝓊",$_="⋰",Y_="Ũ",G_="ũ",H_="▵",Q_="▴",q_="⇈",Z_="Ü",K_="ü",X_="⦧",J_="⦜",__="ϵ",eee="ϰ",tee="∅",ree="ϕ",nee="ϖ",iee="∝",see="↕",oee="⇕",aee="ϱ",cee="ς",lee="⊊︀",uee="⫋︀",hee="⊋︀",dee="⫌︀",fee="ϑ",gee="⊲",pee="⊳",mee="⫨",yee="⫫",vee="⫩",Mee="В",wee="в",See="⊢",Tee="⊨",Cee="⊩",Iee="⊫",bee="⫦",Eee="⊻",xee="∨",Ree="⋁",kee="≚",Aee="⋮",Pee="|",Dee="‖",Lee="|",Nee="‖",Oee="∣",zee="|",Bee="❘",jee="≀",Fee=" ",Uee="𝔙",Wee="𝔳",Vee="⊲",$ee="⊂⃒",Yee="⊃⃒",Gee="𝕍",Hee="𝕧",Qee="∝",qee="⊳",Zee="𝒱",Kee="𝓋",Xee="⫋︀",Jee="⊊︀",_ee="⫌︀",ete="⊋︀",tte="⊪",rte="⦚",nte="Ŵ",ite="ŵ",ste="⩟",ote="∧",ate="⋀",cte="≙",lte="℘",ute="𝔚",hte="𝔴",dte="𝕎",fte="𝕨",gte="℘",pte="≀",mte="≀",yte="𝒲",vte="𝓌",Mte="⋂",wte="◯",Ste="⋃",Tte="▽",Cte="𝔛",Ite="𝔵",bte="⟷",Ete="⟺",xte="Ξ",Rte="ξ",kte="⟵",Ate="⟸",Pte="⟼",Dte="⋻",Lte="⨀",Nte="𝕏",Ote="𝕩",zte="⨁",Bte="⨂",jte="⟶",Fte="⟹",Ute="𝒳",Wte="𝓍",Vte="⨆",$te="⨄",Yte="△",Gte="⋁",Hte="⋀",Qte="Ý",qte="ý",Zte="Я",Kte="я",Xte="Ŷ",Jte="ŷ",_te="Ы",ere="ы",tre="¥",rre="𝔜",nre="𝔶",ire="Ї",sre="ї",ore="𝕐",are="𝕪",cre="𝒴",lre="𝓎",ure="Ю",hre="ю",dre="ÿ",fre="Ÿ",gre="Ź",pre="ź",mre="Ž",yre="ž",vre="З",Mre="з",wre="Ż",Sre="ż",Tre="ℨ",Cre="​",Ire="Ζ",bre="ζ",Ere="𝔷",xre="ℨ",Rre="Ж",kre="ж",Are="⇝",Pre="𝕫",Dre="ℤ",Lre="𝒵",Nre="𝓏",Ore="‍",zre="‌",Fy={Aacute:wb,aacute:Sb,Abreve:Tb,abreve:Cb,ac:Ib,acd:bb,acE:Eb,Acirc:xb,acirc:Rb,acute:kb,Acy:Ab,acy:Pb,AElig:Db,aelig:Lb,af:Nb,Afr:Ob,afr:zb,Agrave:Bb,agrave:jb,alefsym:Fb,aleph:Ub,Alpha:Wb,alpha:Vb,Amacr:$b,amacr:Yb,amalg:Gb,amp:Hb,AMP:Qb,andand:qb,And:Zb,and:Kb,andd:Xb,andslope:Jb,andv:_b,ang:eE,ange:tE,angle:rE,angmsdaa:nE,angmsdab:iE,angmsdac:sE,angmsdad:oE,angmsdae:aE,angmsdaf:cE,angmsdag:lE,angmsdah:uE,angmsd:hE,angrt:dE,angrtvb:fE,angrtvbd:gE,angsph:pE,angst:mE,angzarr:yE,Aogon:vE,aogon:ME,Aopf:wE,aopf:SE,apacir:TE,ap:CE,apE:IE,ape:bE,apid:EE,apos:xE,ApplyFunction:RE,approx:kE,approxeq:AE,Aring:PE,aring:DE,Ascr:LE,ascr:NE,Assign:OE,ast:zE,asymp:BE,asympeq:jE,Atilde:FE,atilde:UE,Auml:WE,auml:VE,awconint:$E,awint:YE,backcong:GE,backepsilon:HE,backprime:QE,backsim:qE,backsimeq:ZE,Backslash:KE,Barv:XE,barvee:JE,barwed:_E,Barwed:ex,barwedge:tx,bbrk:rx,bbrktbrk:nx,bcong:ix,Bcy:sx,bcy:ox,bdquo:ax,becaus:cx,because:lx,Because:ux,bemptyv:hx,bepsi:dx,bernou:fx,Bernoullis:gx,Beta:px,beta:mx,beth:yx,between:vx,Bfr:Mx,bfr:wx,bigcap:Sx,bigcirc:Tx,bigcup:Cx,bigodot:Ix,bigoplus:bx,bigotimes:Ex,bigsqcup:xx,bigstar:Rx,bigtriangledown:kx,bigtriangleup:Ax,biguplus:Px,bigvee:Dx,bigwedge:Lx,bkarow:Nx,blacklozenge:Ox,blacksquare:zx,blacktriangle:Bx,blacktriangledown:jx,blacktriangleleft:Fx,blacktriangleright:Ux,blank:Wx,blk12:Vx,blk14:$x,blk34:Yx,block:Gx,bne:Hx,bnequiv:Qx,bNot:qx,bnot:Zx,Bopf:Kx,bopf:Xx,bot:Jx,bottom:_x,bowtie:e2,boxbox:t2,boxdl:r2,boxdL:n2,boxDl:i2,boxDL:s2,boxdr:o2,boxdR:a2,boxDr:c2,boxDR:l2,boxh:u2,boxH:h2,boxhd:d2,boxHd:f2,boxhD:g2,boxHD:p2,boxhu:m2,boxHu:y2,boxhU:v2,boxHU:M2,boxminus:w2,boxplus:S2,boxtimes:T2,boxul:C2,boxuL:I2,boxUl:b2,boxUL:E2,boxur:x2,boxuR:R2,boxUr:k2,boxUR:A2,boxv:P2,boxV:D2,boxvh:L2,boxvH:N2,boxVh:O2,boxVH:z2,boxvl:B2,boxvL:j2,boxVl:F2,boxVL:U2,boxvr:W2,boxvR:V2,boxVr:$2,boxVR:Y2,bprime:G2,breve:H2,Breve:Q2,brvbar:q2,bscr:Z2,Bscr:K2,bsemi:X2,bsim:J2,bsime:_2,bsolb:eR,bsol:tR,bsolhsub:rR,bull:nR,bullet:iR,bump:sR,bumpE:oR,bumpe:aR,Bumpeq:cR,bumpeq:lR,Cacute:uR,cacute:hR,capand:dR,capbrcup:fR,capcap:gR,cap:pR,Cap:mR,capcup:yR,capdot:vR,CapitalDifferentialD:MR,caps:wR,caret:SR,caron:TR,Cayleys:CR,ccaps:IR,Ccaron:bR,ccaron:ER,Ccedil:xR,ccedil:RR,Ccirc:kR,ccirc:AR,Cconint:PR,ccups:DR,ccupssm:LR,Cdot:NR,cdot:OR,cedil:zR,Cedilla:BR,cemptyv:jR,cent:FR,centerdot:UR,CenterDot:WR,cfr:VR,Cfr:$R,CHcy:YR,chcy:GR,check:HR,checkmark:QR,Chi:qR,chi:ZR,circ:KR,circeq:XR,circlearrowleft:JR,circlearrowright:_R,circledast:ek,circledcirc:tk,circleddash:rk,CircleDot:nk,circledR:ik,circledS:sk,CircleMinus:ok,CirclePlus:ak,CircleTimes:ck,cir:lk,cirE:uk,cire:hk,cirfnint:dk,cirmid:fk,cirscir:gk,ClockwiseContourIntegral:pk,CloseCurlyDoubleQuote:mk,CloseCurlyQuote:yk,clubs:vk,clubsuit:Mk,colon:wk,Colon:Sk,Colone:Tk,colone:Ck,coloneq:Ik,comma:bk,commat:Ek,comp:xk,compfn:Rk,complement:kk,complexes:Ak,cong:Pk,congdot:Dk,Congruent:Lk,conint:Nk,Conint:Ok,ContourIntegral:zk,copf:Bk,Copf:jk,coprod:Fk,Coproduct:Uk,copy:Wk,COPY:Vk,copysr:$k,CounterClockwiseContourIntegral:Yk,crarr:Gk,cross:Hk,Cross:Qk,Cscr:qk,cscr:Zk,csub:Kk,csube:Xk,csup:Jk,csupe:_k,ctdot:eA,cudarrl:tA,cudarrr:rA,cuepr:nA,cuesc:iA,cularr:sA,cularrp:oA,cupbrcap:aA,cupcap:cA,CupCap:lA,cup:uA,Cup:hA,cupcup:dA,cupdot:fA,cupor:gA,cups:pA,curarr:mA,curarrm:yA,curlyeqprec:vA,curlyeqsucc:MA,curlyvee:wA,curlywedge:SA,curren:TA,curvearrowleft:CA,curvearrowright:IA,cuvee:bA,cuwed:EA,cwconint:xA,cwint:RA,cylcty:kA,dagger:AA,Dagger:PA,daleth:DA,darr:LA,Darr:NA,dArr:OA,dash:zA,Dashv:BA,dashv:jA,dbkarow:FA,dblac:UA,Dcaron:WA,dcaron:VA,Dcy:$A,dcy:YA,ddagger:GA,ddarr:HA,DD:QA,dd:qA,DDotrahd:ZA,ddotseq:KA,deg:XA,Del:JA,Delta:_A,delta:eP,demptyv:tP,dfisht:rP,Dfr:nP,dfr:iP,dHar:sP,dharl:oP,dharr:aP,DiacriticalAcute:cP,DiacriticalDot:lP,DiacriticalDoubleAcute:uP,DiacriticalGrave:hP,DiacriticalTilde:dP,diam:fP,diamond:gP,Diamond:pP,diamondsuit:mP,diams:yP,die:vP,DifferentialD:MP,digamma:wP,disin:SP,div:TP,divide:CP,divideontimes:IP,divonx:bP,DJcy:EP,djcy:xP,dlcorn:RP,dlcrop:kP,dollar:AP,Dopf:PP,dopf:DP,Dot:LP,dot:NP,DotDot:OP,doteq:zP,doteqdot:BP,DotEqual:jP,dotminus:FP,dotplus:UP,dotsquare:WP,doublebarwedge:VP,DoubleContourIntegral:$P,DoubleDot:YP,DoubleDownArrow:GP,DoubleLeftArrow:HP,DoubleLeftRightArrow:QP,DoubleLeftTee:qP,DoubleLongLeftArrow:ZP,DoubleLongLeftRightArrow:KP,DoubleLongRightArrow:XP,DoubleRightArrow:JP,DoubleRightTee:_P,DoubleUpArrow:eD,DoubleUpDownArrow:tD,DoubleVerticalBar:rD,DownArrowBar:nD,downarrow:iD,DownArrow:sD,Downarrow:oD,DownArrowUpArrow:aD,DownBreve:cD,downdownarrows:lD,downharpoonleft:uD,downharpoonright:hD,DownLeftRightVector:dD,DownLeftTeeVector:fD,DownLeftVectorBar:gD,DownLeftVector:pD,DownRightTeeVector:mD,DownRightVectorBar:yD,DownRightVector:vD,DownTeeArrow:MD,DownTee:wD,drbkarow:SD,drcorn:TD,drcrop:CD,Dscr:ID,dscr:bD,DScy:ED,dscy:xD,dsol:RD,Dstrok:kD,dstrok:AD,dtdot:PD,dtri:DD,dtrif:LD,duarr:ND,duhar:OD,dwangle:zD,DZcy:BD,dzcy:jD,dzigrarr:FD,Eacute:UD,eacute:WD,easter:VD,Ecaron:$D,ecaron:YD,Ecirc:GD,ecirc:HD,ecir:QD,ecolon:qD,Ecy:ZD,ecy:KD,eDDot:XD,Edot:JD,edot:_D,eDot:eL,ee:tL,efDot:rL,Efr:nL,efr:iL,eg:sL,Egrave:oL,egrave:aL,egs:cL,egsdot:lL,el:uL,Element:hL,elinters:dL,ell:fL,els:gL,elsdot:pL,Emacr:mL,emacr:yL,empty:vL,emptyset:ML,EmptySmallSquare:wL,emptyv:SL,EmptyVerySmallSquare:TL,emsp13:CL,emsp14:IL,emsp:bL,ENG:EL,eng:xL,ensp:RL,Eogon:kL,eogon:AL,Eopf:PL,eopf:DL,epar:LL,eparsl:NL,eplus:OL,epsi:zL,Epsilon:BL,epsilon:jL,epsiv:FL,eqcirc:UL,eqcolon:WL,eqsim:VL,eqslantgtr:$L,eqslantless:YL,Equal:GL,equals:HL,EqualTilde:QL,equest:qL,Equilibrium:ZL,equiv:KL,equivDD:XL,eqvparsl:JL,erarr:_L,erDot:eN,escr:tN,Escr:rN,esdot:nN,Esim:iN,esim:sN,Eta:oN,eta:aN,ETH:cN,eth:lN,Euml:uN,euml:hN,euro:dN,excl:fN,exist:gN,Exists:pN,expectation:mN,exponentiale:yN,ExponentialE:vN,fallingdotseq:MN,Fcy:wN,fcy:SN,female:TN,ffilig:CN,fflig:IN,ffllig:bN,Ffr:EN,ffr:xN,filig:RN,FilledSmallSquare:kN,FilledVerySmallSquare:AN,fjlig:PN,flat:DN,fllig:LN,fltns:NN,fnof:ON,Fopf:zN,fopf:BN,forall:jN,ForAll:FN,fork:UN,forkv:WN,Fouriertrf:VN,fpartint:$N,frac12:YN,frac13:GN,frac14:HN,frac15:QN,frac16:qN,frac18:ZN,frac23:KN,frac25:XN,frac34:JN,frac35:_N,frac38:eO,frac45:tO,frac56:rO,frac58:nO,frac78:iO,frasl:sO,frown:oO,fscr:aO,Fscr:cO,gacute:lO,Gamma:uO,gamma:hO,Gammad:dO,gammad:fO,gap:gO,Gbreve:pO,gbreve:mO,Gcedil:yO,Gcirc:vO,gcirc:MO,Gcy:wO,gcy:SO,Gdot:TO,gdot:CO,ge:IO,gE:bO,gEl:EO,gel:xO,geq:RO,geqq:kO,geqslant:AO,gescc:PO,ges:DO,gesdot:LO,gesdoto:NO,gesdotol:OO,gesl:zO,gesles:BO,Gfr:jO,gfr:FO,gg:UO,Gg:WO,ggg:VO,gimel:$O,GJcy:YO,gjcy:GO,gla:HO,gl:QO,glE:qO,glj:ZO,gnap:KO,gnapprox:XO,gne:JO,gnE:_O,gneq:ez,gneqq:tz,gnsim:rz,Gopf:nz,gopf:iz,grave:sz,GreaterEqual:oz,GreaterEqualLess:az,GreaterFullEqual:cz,GreaterGreater:lz,GreaterLess:uz,GreaterSlantEqual:hz,GreaterTilde:dz,Gscr:fz,gscr:gz,gsim:pz,gsime:mz,gsiml:yz,gtcc:vz,gtcir:Mz,gt:wz,GT:Sz,Gt:Tz,gtdot:Cz,gtlPar:Iz,gtquest:bz,gtrapprox:Ez,gtrarr:xz,gtrdot:Rz,gtreqless:kz,gtreqqless:Az,gtrless:Pz,gtrsim:Dz,gvertneqq:Lz,gvnE:Nz,Hacek:Oz,hairsp:zz,half:Bz,hamilt:jz,HARDcy:Fz,hardcy:Uz,harrcir:Wz,harr:Vz,hArr:$z,harrw:Yz,Hat:Gz,hbar:Hz,Hcirc:Qz,hcirc:qz,hearts:Zz,heartsuit:Kz,hellip:Xz,hercon:Jz,hfr:_z,Hfr:eB,HilbertSpace:tB,hksearow:rB,hkswarow:nB,hoarr:iB,homtht:sB,hookleftarrow:oB,hookrightarrow:aB,hopf:cB,Hopf:lB,horbar:uB,HorizontalLine:hB,hscr:dB,Hscr:fB,hslash:gB,Hstrok:pB,hstrok:mB,HumpDownHump:yB,HumpEqual:vB,hybull:MB,hyphen:wB,Iacute:SB,iacute:TB,ic:CB,Icirc:IB,icirc:bB,Icy:EB,icy:xB,Idot:RB,IEcy:kB,iecy:AB,iexcl:PB,iff:DB,ifr:LB,Ifr:NB,Igrave:OB,igrave:zB,ii:BB,iiiint:jB,iiint:FB,iinfin:UB,iiota:WB,IJlig:VB,ijlig:$B,Imacr:YB,imacr:GB,image:HB,ImaginaryI:QB,imagline:qB,imagpart:ZB,imath:KB,Im:XB,imof:JB,imped:_B,Implies:ej,incare:tj,in:"∈",infin:rj,infintie:nj,inodot:ij,intcal:sj,int:oj,Int:aj,integers:cj,Integral:lj,intercal:uj,Intersection:hj,intlarhk:dj,intprod:fj,InvisibleComma:gj,InvisibleTimes:pj,IOcy:mj,iocy:yj,Iogon:vj,iogon:Mj,Iopf:wj,iopf:Sj,Iota:Tj,iota:Cj,iprod:Ij,iquest:bj,iscr:Ej,Iscr:xj,isin:Rj,isindot:kj,isinE:Aj,isins:Pj,isinsv:Dj,isinv:Lj,it:Nj,Itilde:Oj,itilde:zj,Iukcy:Bj,iukcy:jj,Iuml:Fj,iuml:Uj,Jcirc:Wj,jcirc:Vj,Jcy:$j,jcy:Yj,Jfr:Gj,jfr:Hj,jmath:Qj,Jopf:qj,jopf:Zj,Jscr:Kj,jscr:Xj,Jsercy:Jj,jsercy:_j,Jukcy:e3,jukcy:t3,Kappa:r3,kappa:n3,kappav:i3,Kcedil:s3,kcedil:o3,Kcy:a3,kcy:c3,Kfr:l3,kfr:u3,kgreen:h3,KHcy:d3,khcy:f3,KJcy:g3,kjcy:p3,Kopf:m3,kopf:y3,Kscr:v3,kscr:M3,lAarr:w3,Lacute:S3,lacute:T3,laemptyv:C3,lagran:I3,Lambda:b3,lambda:E3,lang:x3,Lang:R3,langd:k3,langle:A3,lap:P3,Laplacetrf:D3,laquo:L3,larrb:N3,larrbfs:O3,larr:z3,Larr:B3,lArr:j3,larrfs:F3,larrhk:U3,larrlp:W3,larrpl:V3,larrsim:$3,larrtl:Y3,latail:G3,lAtail:H3,lat:Q3,late:q3,lates:Z3,lbarr:K3,lBarr:X3,lbbrk:J3,lbrace:_3,lbrack:e4,lbrke:t4,lbrksld:r4,lbrkslu:n4,Lcaron:i4,lcaron:s4,Lcedil:o4,lcedil:a4,lceil:c4,lcub:l4,Lcy:u4,lcy:h4,ldca:d4,ldquo:f4,ldquor:g4,ldrdhar:p4,ldrushar:m4,ldsh:y4,le:v4,lE:M4,LeftAngleBracket:w4,LeftArrowBar:S4,leftarrow:T4,LeftArrow:C4,Leftarrow:I4,LeftArrowRightArrow:b4,leftarrowtail:E4,LeftCeiling:x4,LeftDoubleBracket:R4,LeftDownTeeVector:k4,LeftDownVectorBar:A4,LeftDownVector:P4,LeftFloor:D4,leftharpoondown:L4,leftharpoonup:N4,leftleftarrows:O4,leftrightarrow:z4,LeftRightArrow:B4,Leftrightarrow:j4,leftrightarrows:F4,leftrightharpoons:U4,leftrightsquigarrow:W4,LeftRightVector:V4,LeftTeeArrow:$4,LeftTee:Y4,LeftTeeVector:G4,leftthreetimes:H4,LeftTriangleBar:Q4,LeftTriangle:q4,LeftTriangleEqual:Z4,LeftUpDownVector:K4,LeftUpTeeVector:X4,LeftUpVectorBar:J4,LeftUpVector:_4,LeftVectorBar:eF,LeftVector:tF,lEg:rF,leg:nF,leq:iF,leqq:sF,leqslant:oF,lescc:aF,les:cF,lesdot:lF,lesdoto:uF,lesdotor:hF,lesg:dF,lesges:fF,lessapprox:gF,lessdot:pF,lesseqgtr:mF,lesseqqgtr:yF,LessEqualGreater:vF,LessFullEqual:MF,LessGreater:wF,lessgtr:SF,LessLess:TF,lesssim:CF,LessSlantEqual:IF,LessTilde:bF,lfisht:EF,lfloor:xF,Lfr:RF,lfr:kF,lg:AF,lgE:PF,lHar:DF,lhard:LF,lharu:NF,lharul:OF,lhblk:zF,LJcy:BF,ljcy:jF,llarr:FF,ll:UF,Ll:WF,llcorner:VF,Lleftarrow:$F,llhard:YF,lltri:GF,Lmidot:HF,lmidot:QF,lmoustache:qF,lmoust:ZF,lnap:KF,lnapprox:XF,lne:JF,lnE:_F,lneq:eU,lneqq:tU,lnsim:rU,loang:nU,loarr:iU,lobrk:sU,longleftarrow:oU,LongLeftArrow:aU,Longleftarrow:cU,longleftrightarrow:lU,LongLeftRightArrow:uU,Longleftrightarrow:hU,longmapsto:dU,longrightarrow:fU,LongRightArrow:gU,Longrightarrow:pU,looparrowleft:mU,looparrowright:yU,lopar:vU,Lopf:MU,lopf:wU,loplus:SU,lotimes:TU,lowast:CU,lowbar:IU,LowerLeftArrow:bU,LowerRightArrow:EU,loz:xU,lozenge:RU,lozf:kU,lpar:AU,lparlt:PU,lrarr:DU,lrcorner:LU,lrhar:NU,lrhard:OU,lrm:zU,lrtri:BU,lsaquo:jU,lscr:FU,Lscr:UU,lsh:WU,Lsh:VU,lsim:$U,lsime:YU,lsimg:GU,lsqb:HU,lsquo:QU,lsquor:qU,Lstrok:ZU,lstrok:KU,ltcc:XU,ltcir:JU,lt:_U,LT:e5,Lt:t5,ltdot:r5,lthree:n5,ltimes:i5,ltlarr:s5,ltquest:o5,ltri:a5,ltrie:c5,ltrif:l5,ltrPar:u5,lurdshar:h5,luruhar:d5,lvertneqq:f5,lvnE:g5,macr:p5,male:m5,malt:y5,maltese:v5,Map:"⤅",map:M5,mapsto:w5,mapstodown:S5,mapstoleft:T5,mapstoup:C5,marker:I5,mcomma:b5,Mcy:E5,mcy:x5,mdash:R5,mDDot:k5,measuredangle:A5,MediumSpace:P5,Mellintrf:D5,Mfr:L5,mfr:N5,mho:O5,micro:z5,midast:B5,midcir:j5,mid:F5,middot:U5,minusb:W5,minus:V5,minusd:$5,minusdu:Y5,MinusPlus:G5,mlcp:H5,mldr:Q5,mnplus:q5,models:Z5,Mopf:K5,mopf:X5,mp:J5,mscr:_5,Mscr:eW,mstpos:tW,Mu:rW,mu:nW,multimap:iW,mumap:sW,nabla:oW,Nacute:aW,nacute:cW,nang:lW,nap:uW,napE:hW,napid:dW,napos:fW,napprox:gW,natural:pW,naturals:mW,natur:yW,nbsp:vW,nbump:MW,nbumpe:wW,ncap:SW,Ncaron:TW,ncaron:CW,Ncedil:IW,ncedil:bW,ncong:EW,ncongdot:xW,ncup:RW,Ncy:kW,ncy:AW,ndash:PW,nearhk:DW,nearr:LW,neArr:NW,nearrow:OW,ne:zW,nedot:BW,NegativeMediumSpace:jW,NegativeThickSpace:FW,NegativeThinSpace:UW,NegativeVeryThinSpace:WW,nequiv:VW,nesear:$W,nesim:YW,NestedGreaterGreater:GW,NestedLessLess:HW,NewLine:QW,nexist:qW,nexists:ZW,Nfr:KW,nfr:XW,ngE:JW,nge:_W,ngeq:eV,ngeqq:tV,ngeqslant:rV,nges:nV,nGg:iV,ngsim:sV,nGt:oV,ngt:aV,ngtr:cV,nGtv:lV,nharr:uV,nhArr:hV,nhpar:dV,ni:fV,nis:gV,nisd:pV,niv:mV,NJcy:yV,njcy:vV,nlarr:MV,nlArr:wV,nldr:SV,nlE:TV,nle:CV,nleftarrow:IV,nLeftarrow:bV,nleftrightarrow:EV,nLeftrightarrow:xV,nleq:RV,nleqq:kV,nleqslant:AV,nles:PV,nless:DV,nLl:LV,nlsim:NV,nLt:OV,nlt:zV,nltri:BV,nltrie:jV,nLtv:FV,nmid:UV,NoBreak:WV,NonBreakingSpace:VV,nopf:$V,Nopf:YV,Not:GV,not:HV,NotCongruent:QV,NotCupCap:qV,NotDoubleVerticalBar:ZV,NotElement:KV,NotEqual:XV,NotEqualTilde:JV,NotExists:_V,NotGreater:e$,NotGreaterEqual:t$,NotGreaterFullEqual:r$,NotGreaterGreater:n$,NotGreaterLess:i$,NotGreaterSlantEqual:s$,NotGreaterTilde:o$,NotHumpDownHump:a$,NotHumpEqual:c$,notin:l$,notindot:u$,notinE:h$,notinva:d$,notinvb:f$,notinvc:g$,NotLeftTriangleBar:p$,NotLeftTriangle:m$,NotLeftTriangleEqual:y$,NotLess:v$,NotLessEqual:M$,NotLessGreater:w$,NotLessLess:S$,NotLessSlantEqual:T$,NotLessTilde:C$,NotNestedGreaterGreater:I$,NotNestedLessLess:b$,notni:E$,notniva:x$,notnivb:R$,notnivc:k$,NotPrecedes:A$,NotPrecedesEqual:P$,NotPrecedesSlantEqual:D$,NotReverseElement:L$,NotRightTriangleBar:N$,NotRightTriangle:O$,NotRightTriangleEqual:z$,NotSquareSubset:B$,NotSquareSubsetEqual:j$,NotSquareSuperset:F$,NotSquareSupersetEqual:U$,NotSubset:W$,NotSubsetEqual:V$,NotSucceeds:$$,NotSucceedsEqual:Y$,NotSucceedsSlantEqual:G$,NotSucceedsTilde:H$,NotSuperset:Q$,NotSupersetEqual:q$,NotTilde:Z$,NotTildeEqual:K$,NotTildeFullEqual:X$,NotTildeTilde:J$,NotVerticalBar:_$,nparallel:eY,npar:tY,nparsl:rY,npart:nY,npolint:iY,npr:sY,nprcue:oY,nprec:aY,npreceq:cY,npre:lY,nrarrc:uY,nrarr:hY,nrArr:dY,nrarrw:fY,nrightarrow:gY,nRightarrow:pY,nrtri:mY,nrtrie:yY,nsc:vY,nsccue:MY,nsce:wY,Nscr:SY,nscr:TY,nshortmid:CY,nshortparallel:IY,nsim:bY,nsime:EY,nsimeq:xY,nsmid:RY,nspar:kY,nsqsube:AY,nsqsupe:PY,nsub:DY,nsubE:LY,nsube:NY,nsubset:OY,nsubseteq:zY,nsubseteqq:BY,nsucc:jY,nsucceq:FY,nsup:UY,nsupE:WY,nsupe:VY,nsupset:$Y,nsupseteq:YY,nsupseteqq:GY,ntgl:HY,Ntilde:QY,ntilde:qY,ntlg:ZY,ntriangleleft:KY,ntrianglelefteq:XY,ntriangleright:JY,ntrianglerighteq:_Y,Nu:eG,nu:tG,num:rG,numero:nG,numsp:iG,nvap:sG,nvdash:oG,nvDash:aG,nVdash:cG,nVDash:lG,nvge:uG,nvgt:hG,nvHarr:dG,nvinfin:fG,nvlArr:gG,nvle:pG,nvlt:mG,nvltrie:yG,nvrArr:vG,nvrtrie:MG,nvsim:wG,nwarhk:SG,nwarr:TG,nwArr:CG,nwarrow:IG,nwnear:bG,Oacute:EG,oacute:xG,oast:RG,Ocirc:kG,ocirc:AG,ocir:PG,Ocy:DG,ocy:LG,odash:NG,Odblac:OG,odblac:zG,odiv:BG,odot:jG,odsold:FG,OElig:UG,oelig:WG,ofcir:VG,Ofr:$G,ofr:YG,ogon:GG,Ograve:HG,ograve:QG,ogt:qG,ohbar:ZG,ohm:KG,oint:XG,olarr:JG,olcir:_G,olcross:e8,oline:t8,olt:r8,Omacr:n8,omacr:i8,Omega:s8,omega:o8,Omicron:a8,omicron:c8,omid:l8,ominus:u8,Oopf:h8,oopf:d8,opar:f8,OpenCurlyDoubleQuote:g8,OpenCurlyQuote:p8,operp:m8,oplus:y8,orarr:v8,Or:M8,or:w8,ord:S8,order:T8,orderof:C8,ordf:I8,ordm:b8,origof:E8,oror:x8,orslope:R8,orv:k8,oS:A8,Oscr:P8,oscr:D8,Oslash:L8,oslash:N8,osol:O8,Otilde:z8,otilde:B8,otimesas:j8,Otimes:F8,otimes:U8,Ouml:W8,ouml:V8,ovbar:$8,OverBar:Y8,OverBrace:G8,OverBracket:H8,OverParenthesis:Q8,para:q8,parallel:Z8,par:K8,parsim:X8,parsl:J8,part:_8,PartialD:e6,Pcy:t6,pcy:r6,percnt:n6,period:i6,permil:s6,perp:o6,pertenk:a6,Pfr:c6,pfr:l6,Phi:u6,phi:h6,phiv:d6,phmmat:f6,phone:g6,Pi:p6,pi:m6,pitchfork:y6,piv:v6,planck:M6,planckh:w6,plankv:S6,plusacir:T6,plusb:C6,pluscir:I6,plus:b6,plusdo:E6,plusdu:x6,pluse:R6,PlusMinus:k6,plusmn:A6,plussim:P6,plustwo:D6,pm:L6,Poincareplane:N6,pointint:O6,popf:z6,Popf:B6,pound:j6,prap:F6,Pr:U6,pr:W6,prcue:V6,precapprox:$6,prec:Y6,preccurlyeq:G6,Precedes:H6,PrecedesEqual:Q6,PrecedesSlantEqual:q6,PrecedesTilde:Z6,preceq:K6,precnapprox:X6,precneqq:J6,precnsim:_6,pre:e9,prE:t9,precsim:r9,prime:n9,Prime:i9,primes:s9,prnap:o9,prnE:a9,prnsim:c9,prod:l9,Product:u9,profalar:h9,profline:d9,profsurf:f9,prop:g9,Proportional:p9,Proportion:m9,propto:y9,prsim:v9,prurel:M9,Pscr:w9,pscr:S9,Psi:T9,psi:C9,puncsp:I9,Qfr:b9,qfr:E9,qint:x9,qopf:R9,Qopf:k9,qprime:A9,Qscr:P9,qscr:D9,quaternions:L9,quatint:N9,quest:O9,questeq:z9,quot:B9,QUOT:j9,rAarr:F9,race:U9,Racute:W9,racute:V9,radic:$9,raemptyv:Y9,rang:G9,Rang:H9,rangd:Q9,range:q9,rangle:Z9,raquo:K9,rarrap:X9,rarrb:J9,rarrbfs:_9,rarrc:eH,rarr:tH,Rarr:rH,rArr:nH,rarrfs:iH,rarrhk:sH,rarrlp:oH,rarrpl:aH,rarrsim:cH,Rarrtl:lH,rarrtl:uH,rarrw:hH,ratail:dH,rAtail:fH,ratio:gH,rationals:pH,rbarr:mH,rBarr:yH,RBarr:vH,rbbrk:MH,rbrace:wH,rbrack:SH,rbrke:TH,rbrksld:CH,rbrkslu:IH,Rcaron:bH,rcaron:EH,Rcedil:xH,rcedil:RH,rceil:kH,rcub:AH,Rcy:PH,rcy:DH,rdca:LH,rdldhar:NH,rdquo:OH,rdquor:zH,rdsh:BH,real:jH,realine:FH,realpart:UH,reals:WH,Re:VH,rect:$H,reg:YH,REG:GH,ReverseElement:HH,ReverseEquilibrium:QH,ReverseUpEquilibrium:qH,rfisht:ZH,rfloor:KH,rfr:XH,Rfr:JH,rHar:_H,rhard:e7,rharu:t7,rharul:r7,Rho:n7,rho:i7,rhov:s7,RightAngleBracket:o7,RightArrowBar:a7,rightarrow:c7,RightArrow:l7,Rightarrow:u7,RightArrowLeftArrow:h7,rightarrowtail:d7,RightCeiling:f7,RightDoubleBracket:g7,RightDownTeeVector:p7,RightDownVectorBar:m7,RightDownVector:y7,RightFloor:v7,rightharpoondown:M7,rightharpoonup:w7,rightleftarrows:S7,rightleftharpoons:T7,rightrightarrows:C7,rightsquigarrow:I7,RightTeeArrow:b7,RightTee:E7,RightTeeVector:x7,rightthreetimes:R7,RightTriangleBar:k7,RightTriangle:A7,RightTriangleEqual:P7,RightUpDownVector:D7,RightUpTeeVector:L7,RightUpVectorBar:N7,RightUpVector:O7,RightVectorBar:z7,RightVector:B7,ring:j7,risingdotseq:F7,rlarr:U7,rlhar:W7,rlm:V7,rmoustache:$7,rmoust:Y7,rnmid:G7,roang:H7,roarr:Q7,robrk:q7,ropar:Z7,ropf:K7,Ropf:X7,roplus:J7,rotimes:_7,RoundImplies:eQ,rpar:tQ,rpargt:rQ,rppolint:nQ,rrarr:iQ,Rrightarrow:sQ,rsaquo:oQ,rscr:aQ,Rscr:cQ,rsh:lQ,Rsh:uQ,rsqb:hQ,rsquo:dQ,rsquor:fQ,rthree:gQ,rtimes:pQ,rtri:mQ,rtrie:yQ,rtrif:vQ,rtriltri:MQ,RuleDelayed:wQ,ruluhar:SQ,rx:TQ,Sacute:CQ,sacute:IQ,sbquo:bQ,scap:EQ,Scaron:xQ,scaron:RQ,Sc:kQ,sc:AQ,sccue:PQ,sce:DQ,scE:LQ,Scedil:NQ,scedil:OQ,Scirc:zQ,scirc:BQ,scnap:jQ,scnE:FQ,scnsim:UQ,scpolint:WQ,scsim:VQ,Scy:$Q,scy:YQ,sdotb:GQ,sdot:HQ,sdote:QQ,searhk:qQ,searr:ZQ,seArr:KQ,searrow:XQ,sect:JQ,semi:_Q,seswar:eq,setminus:tq,setmn:rq,sext:nq,Sfr:iq,sfr:sq,sfrown:oq,sharp:aq,SHCHcy:cq,shchcy:lq,SHcy:uq,shcy:hq,ShortDownArrow:dq,ShortLeftArrow:fq,shortmid:gq,shortparallel:pq,ShortRightArrow:mq,ShortUpArrow:yq,shy:vq,Sigma:Mq,sigma:wq,sigmaf:Sq,sigmav:Tq,sim:Cq,simdot:Iq,sime:bq,simeq:Eq,simg:xq,simgE:Rq,siml:kq,simlE:Aq,simne:Pq,simplus:Dq,simrarr:Lq,slarr:Nq,SmallCircle:Oq,smallsetminus:zq,smashp:Bq,smeparsl:jq,smid:Fq,smile:Uq,smt:Wq,smte:Vq,smtes:$q,SOFTcy:Yq,softcy:Gq,solbar:Hq,solb:Qq,sol:qq,Sopf:Zq,sopf:Kq,spades:Xq,spadesuit:Jq,spar:_q,sqcap:eZ,sqcaps:tZ,sqcup:rZ,sqcups:nZ,Sqrt:iZ,sqsub:sZ,sqsube:oZ,sqsubset:aZ,sqsubseteq:cZ,sqsup:lZ,sqsupe:uZ,sqsupset:hZ,sqsupseteq:dZ,square:fZ,Square:gZ,SquareIntersection:pZ,SquareSubset:mZ,SquareSubsetEqual:yZ,SquareSuperset:vZ,SquareSupersetEqual:MZ,SquareUnion:wZ,squarf:SZ,squ:TZ,squf:CZ,srarr:IZ,Sscr:bZ,sscr:EZ,ssetmn:xZ,ssmile:RZ,sstarf:kZ,Star:AZ,star:PZ,starf:DZ,straightepsilon:LZ,straightphi:NZ,strns:OZ,sub:zZ,Sub:BZ,subdot:jZ,subE:FZ,sube:UZ,subedot:WZ,submult:VZ,subnE:$Z,subne:YZ,subplus:GZ,subrarr:HZ,subset:QZ,Subset:qZ,subseteq:ZZ,subseteqq:KZ,SubsetEqual:XZ,subsetneq:JZ,subsetneqq:_Z,subsim:eK,subsub:tK,subsup:rK,succapprox:nK,succ:iK,succcurlyeq:sK,Succeeds:oK,SucceedsEqual:aK,SucceedsSlantEqual:cK,SucceedsTilde:lK,succeq:uK,succnapprox:hK,succneqq:dK,succnsim:fK,succsim:gK,SuchThat:pK,sum:mK,Sum:yK,sung:vK,sup1:MK,sup2:wK,sup3:SK,sup:TK,Sup:CK,supdot:IK,supdsub:bK,supE:EK,supe:xK,supedot:RK,Superset:kK,SupersetEqual:AK,suphsol:PK,suphsub:DK,suplarr:LK,supmult:NK,supnE:OK,supne:zK,supplus:BK,supset:jK,Supset:FK,supseteq:UK,supseteqq:WK,supsetneq:VK,supsetneqq:$K,supsim:YK,supsub:GK,supsup:HK,swarhk:QK,swarr:qK,swArr:ZK,swarrow:KK,swnwar:XK,szlig:JK,Tab:_K,target:eX,Tau:tX,tau:rX,tbrk:nX,Tcaron:iX,tcaron:sX,Tcedil:oX,tcedil:aX,Tcy:cX,tcy:lX,tdot:uX,telrec:hX,Tfr:dX,tfr:fX,there4:gX,therefore:pX,Therefore:mX,Theta:yX,theta:vX,thetasym:MX,thetav:wX,thickapprox:SX,thicksim:TX,ThickSpace:CX,ThinSpace:IX,thinsp:bX,thkap:EX,thksim:xX,THORN:RX,thorn:kX,tilde:AX,Tilde:PX,TildeEqual:DX,TildeFullEqual:LX,TildeTilde:NX,timesbar:OX,timesb:zX,times:BX,timesd:jX,tint:FX,toea:UX,topbot:WX,topcir:VX,top:$X,Topf:YX,topf:GX,topfork:HX,tosa:QX,tprime:qX,trade:ZX,TRADE:KX,triangle:XX,triangledown:JX,triangleleft:_X,trianglelefteq:eJ,triangleq:tJ,triangleright:rJ,trianglerighteq:nJ,tridot:iJ,trie:sJ,triminus:oJ,TripleDot:aJ,triplus:cJ,trisb:lJ,tritime:uJ,trpezium:hJ,Tscr:dJ,tscr:fJ,TScy:gJ,tscy:pJ,TSHcy:mJ,tshcy:yJ,Tstrok:vJ,tstrok:MJ,twixt:wJ,twoheadleftarrow:SJ,twoheadrightarrow:TJ,Uacute:CJ,uacute:IJ,uarr:bJ,Uarr:EJ,uArr:xJ,Uarrocir:RJ,Ubrcy:kJ,ubrcy:AJ,Ubreve:PJ,ubreve:DJ,Ucirc:LJ,ucirc:NJ,Ucy:OJ,ucy:zJ,udarr:BJ,Udblac:jJ,udblac:FJ,udhar:UJ,ufisht:WJ,Ufr:VJ,ufr:$J,Ugrave:YJ,ugrave:GJ,uHar:HJ,uharl:QJ,uharr:qJ,uhblk:ZJ,ulcorn:KJ,ulcorner:XJ,ulcrop:JJ,ultri:_J,Umacr:e_,umacr:t_,uml:r_,UnderBar:n_,UnderBrace:i_,UnderBracket:s_,UnderParenthesis:o_,Union:a_,UnionPlus:c_,Uogon:l_,uogon:u_,Uopf:h_,uopf:d_,UpArrowBar:f_,uparrow:g_,UpArrow:p_,Uparrow:m_,UpArrowDownArrow:y_,updownarrow:v_,UpDownArrow:M_,Updownarrow:w_,UpEquilibrium:S_,upharpoonleft:T_,upharpoonright:C_,uplus:I_,UpperLeftArrow:b_,UpperRightArrow:E_,upsi:x_,Upsi:R_,upsih:k_,Upsilon:A_,upsilon:P_,UpTeeArrow:D_,UpTee:L_,upuparrows:N_,urcorn:O_,urcorner:z_,urcrop:B_,Uring:j_,uring:F_,urtri:U_,Uscr:W_,uscr:V_,utdot:$_,Utilde:Y_,utilde:G_,utri:H_,utrif:Q_,uuarr:q_,Uuml:Z_,uuml:K_,uwangle:X_,vangrt:J_,varepsilon:__,varkappa:eee,varnothing:tee,varphi:ree,varpi:nee,varpropto:iee,varr:see,vArr:oee,varrho:aee,varsigma:cee,varsubsetneq:lee,varsubsetneqq:uee,varsupsetneq:hee,varsupsetneqq:dee,vartheta:fee,vartriangleleft:gee,vartriangleright:pee,vBar:mee,Vbar:yee,vBarv:vee,Vcy:Mee,vcy:wee,vdash:See,vDash:Tee,Vdash:Cee,VDash:Iee,Vdashl:bee,veebar:Eee,vee:xee,Vee:Ree,veeeq:kee,vellip:Aee,verbar:Pee,Verbar:Dee,vert:Lee,Vert:Nee,VerticalBar:Oee,VerticalLine:zee,VerticalSeparator:Bee,VerticalTilde:jee,VeryThinSpace:Fee,Vfr:Uee,vfr:Wee,vltri:Vee,vnsub:$ee,vnsup:Yee,Vopf:Gee,vopf:Hee,vprop:Qee,vrtri:qee,Vscr:Zee,vscr:Kee,vsubnE:Xee,vsubne:Jee,vsupnE:_ee,vsupne:ete,Vvdash:tte,vzigzag:rte,Wcirc:nte,wcirc:ite,wedbar:ste,wedge:ote,Wedge:ate,wedgeq:cte,weierp:lte,Wfr:ute,wfr:hte,Wopf:dte,wopf:fte,wp:gte,wr:pte,wreath:mte,Wscr:yte,wscr:vte,xcap:Mte,xcirc:wte,xcup:Ste,xdtri:Tte,Xfr:Cte,xfr:Ite,xharr:bte,xhArr:Ete,Xi:xte,xi:Rte,xlarr:kte,xlArr:Ate,xmap:Pte,xnis:Dte,xodot:Lte,Xopf:Nte,xopf:Ote,xoplus:zte,xotime:Bte,xrarr:jte,xrArr:Fte,Xscr:Ute,xscr:Wte,xsqcup:Vte,xuplus:$te,xutri:Yte,xvee:Gte,xwedge:Hte,Yacute:Qte,yacute:qte,YAcy:Zte,yacy:Kte,Ycirc:Xte,ycirc:Jte,Ycy:_te,ycy:ere,yen:tre,Yfr:rre,yfr:nre,YIcy:ire,yicy:sre,Yopf:ore,yopf:are,Yscr:cre,yscr:lre,YUcy:ure,yucy:hre,yuml:dre,Yuml:fre,Zacute:gre,zacute:pre,Zcaron:mre,zcaron:yre,Zcy:vre,zcy:Mre,Zdot:wre,zdot:Sre,zeetrf:Tre,ZeroWidthSpace:Cre,Zeta:Ire,zeta:bre,zfr:Ere,Zfr:xre,ZHcy:Rre,zhcy:kre,zigrarr:Are,zopf:Pre,Zopf:Dre,Zscr:Lre,zscr:Nre,zwj:Ore,zwnj:zre},Bre="Á",jre="á",Fre="Â",Ure="â",Wre="´",Vre="Æ",$re="æ",Yre="À",Gre="à",Hre="&",Qre="&",qre="Å",Zre="å",Kre="Ã",Xre="ã",Jre="Ä",_re="ä",ene="¦",tne="Ç",rne="ç",nne="¸",ine="¢",sne="©",one="©",ane="¤",cne="°",lne="÷",une="É",hne="é",dne="Ê",fne="ê",gne="È",pne="è",mne="Ð",yne="ð",vne="Ë",Mne="ë",wne="½",Sne="¼",Tne="¾",Cne=">",Ine=">",bne="Í",Ene="í",xne="Î",Rne="î",kne="¡",Ane="Ì",Pne="ì",Dne="¿",Lne="Ï",Nne="ï",One="«",zne="<",Bne="<",jne="¯",Fne="µ",Une="·",Wne=" ",Vne="¬",$ne="Ñ",Yne="ñ",Gne="Ó",Hne="ó",Qne="Ô",qne="ô",Zne="Ò",Kne="ò",Xne="ª",Jne="º",_ne="Ø",eie="ø",tie="Õ",rie="õ",nie="Ö",iie="ö",sie="¶",oie="±",aie="£",cie='"',lie='"',uie="»",hie="®",die="®",fie="§",gie="­",pie="¹",mie="²",yie="³",vie="ß",Mie="Þ",wie="þ",Sie="×",Tie="Ú",Cie="ú",Iie="Û",bie="û",Eie="Ù",xie="ù",Rie="¨",kie="Ü",Aie="ü",Pie="Ý",Die="ý",Lie="¥",Nie="ÿ",Oie={Aacute:Bre,aacute:jre,Acirc:Fre,acirc:Ure,acute:Wre,AElig:Vre,aelig:$re,Agrave:Yre,agrave:Gre,amp:Hre,AMP:Qre,Aring:qre,aring:Zre,Atilde:Kre,atilde:Xre,Auml:Jre,auml:_re,brvbar:ene,Ccedil:tne,ccedil:rne,cedil:nne,cent:ine,copy:sne,COPY:one,curren:ane,deg:cne,divide:lne,Eacute:une,eacute:hne,Ecirc:dne,ecirc:fne,Egrave:gne,egrave:pne,ETH:mne,eth:yne,Euml:vne,euml:Mne,frac12:wne,frac14:Sne,frac34:Tne,gt:Cne,GT:Ine,Iacute:bne,iacute:Ene,Icirc:xne,icirc:Rne,iexcl:kne,Igrave:Ane,igrave:Pne,iquest:Dne,Iuml:Lne,iuml:Nne,laquo:One,lt:zne,LT:Bne,macr:jne,micro:Fne,middot:Une,nbsp:Wne,not:Vne,Ntilde:$ne,ntilde:Yne,Oacute:Gne,oacute:Hne,Ocirc:Qne,ocirc:qne,Ograve:Zne,ograve:Kne,ordf:Xne,ordm:Jne,Oslash:_ne,oslash:eie,Otilde:tie,otilde:rie,Ouml:nie,ouml:iie,para:sie,plusmn:oie,pound:aie,quot:cie,QUOT:lie,raquo:uie,reg:hie,REG:die,sect:fie,shy:gie,sup1:pie,sup2:mie,sup3:yie,szlig:vie,THORN:Mie,thorn:wie,times:Sie,Uacute:Tie,uacute:Cie,Ucirc:Iie,ucirc:bie,Ugrave:Eie,ugrave:xie,uml:Rie,Uuml:kie,uuml:Aie,Yacute:Pie,yacute:Die,yen:Lie,yuml:Nie},zie="&",Bie="'",jie=">",Fie="<",Uie='"',Uy={amp:zie,apos:Bie,gt:jie,lt:Fie,quot:Uie};var Vh={};const Wie={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var Vie=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Vh,"__esModule",{value:!0});var mg=Vie(Wie),$ie=String.fromCodePoint||function(s){var t="";return s>65535&&(s-=65536,t+=String.fromCharCode(s>>>10&1023|55296),s=56320|s&1023),t+=String.fromCharCode(s),t};function Yie(s){return s>=55296&&s<=57343||s>1114111?"�":(s in mg.default&&(s=mg.default[s]),$ie(s))}Vh.default=Yie;var Mc=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(cn,"__esModule",{value:!0});cn.decodeHTML=cn.decodeHTMLStrict=cn.decodeXML=void 0;var xu=Mc(Fy),Gie=Mc(Oie),Hie=Mc(Uy),yg=Mc(Vh),Qie=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;cn.decodeXML=Wy(Hie.default);cn.decodeHTMLStrict=Wy(xu.default);function Wy(s){var t=Vy(s);return function(e){return String(e).replace(Qie,t)}}var vg=function(s,t){return s<t?1:-1};cn.decodeHTML=function(){for(var s=Object.keys(Gie.default).sort(vg),t=Object.keys(xu.default).sort(vg),e=0,r=0;e<t.length;e++)s[r]===t[e]?(t[e]+=";?",r++):t[e]+=";";var n=new RegExp("&(?:"+t.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),i=Vy(xu.default);function o(a){return a.substr(-1)!==";"&&(a+=";"),i(a)}return function(a){return String(a).replace(n,o)}}();function Vy(s){return function(e){if(e.charAt(1)==="#"){var r=e.charAt(2);return r==="X"||r==="x"?yg.default(parseInt(e.substr(3),16)):yg.default(parseInt(e.substr(2),10))}return s[e.slice(1,-1)]||e}}var or={},$y=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(or,"__esModule",{value:!0});or.escapeUTF8=or.escape=or.encodeNonAsciiHTML=or.encodeHTML=or.encodeXML=void 0;var qie=$y(Uy),Yy=Hy(qie.default),Gy=Qy(Yy);or.encodeXML=Ky(Yy);var Zie=$y(Fy),$h=Hy(Zie.default),Kie=Qy($h);or.encodeHTML=Jie($h,Kie);or.encodeNonAsciiHTML=Ky($h);function Hy(s){return Object.keys(s).sort().reduce(function(t,e){return t[s[e]]="&"+e+";",t},{})}function Qy(s){for(var t=[],e=[],r=0,n=Object.keys(s);r<n.length;r++){var i=n[r];i.length===1?t.push("\\"+i):e.push(i)}t.sort();for(var o=0;o<t.length-1;o++){for(var a=o;a<t.length-1&&t[a].charCodeAt(1)+1===t[a+1].charCodeAt(1);)a+=1;var c=1+a-o;c<3||t.splice(o,c,t[o]+"-"+t[a])}return e.unshift("["+t.join("")+"]"),new RegExp(e.join("|"),"g")}var qy=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,Xie=String.prototype.codePointAt!=null?function(s){return s.codePointAt(0)}:function(s){return(s.charCodeAt(0)-55296)*1024+s.charCodeAt(1)-56320+65536};function wc(s){return"&#x"+(s.length>1?Xie(s):s.charCodeAt(0)).toString(16).toUpperCase()+";"}function Jie(s,t){return function(e){return e.replace(t,function(r){return s[r]}).replace(qy,wc)}}var Zy=new RegExp(Gy.source+"|"+qy.source,"g");function _ie(s){return s.replace(Zy,wc)}or.escape=_ie;function ese(s){return s.replace(Gy,wc)}or.escapeUTF8=ese;function Ky(s){return function(t){return t.replace(Zy,function(e){return s[e]||wc(e)})}}(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.decodeXMLStrict=s.decodeHTML5Strict=s.decodeHTML4Strict=s.decodeHTML5=s.decodeHTML4=s.decodeHTMLStrict=s.decodeHTML=s.decodeXML=s.encodeHTML5=s.encodeHTML4=s.escapeUTF8=s.escape=s.encodeNonAsciiHTML=s.encodeHTML=s.encodeXML=s.encode=s.decodeStrict=s.decode=void 0;var t=cn,e=or;function r(c,l){return(!l||l<=0?t.decodeXML:t.decodeHTML)(c)}s.decode=r;function n(c,l){return(!l||l<=0?t.decodeXML:t.decodeHTMLStrict)(c)}s.decodeStrict=n;function i(c,l){return(!l||l<=0?e.encodeXML:e.encodeHTML)(c)}s.encode=i;var o=or;Object.defineProperty(s,"encodeXML",{enumerable:!0,get:function(){return o.encodeXML}}),Object.defineProperty(s,"encodeHTML",{enumerable:!0,get:function(){return o.encodeHTML}}),Object.defineProperty(s,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return o.encodeNonAsciiHTML}}),Object.defineProperty(s,"escape",{enumerable:!0,get:function(){return o.escape}}),Object.defineProperty(s,"escapeUTF8",{enumerable:!0,get:function(){return o.escapeUTF8}}),Object.defineProperty(s,"encodeHTML4",{enumerable:!0,get:function(){return o.encodeHTML}}),Object.defineProperty(s,"encodeHTML5",{enumerable:!0,get:function(){return o.encodeHTML}});var a=cn;Object.defineProperty(s,"decodeXML",{enumerable:!0,get:function(){return a.decodeXML}}),Object.defineProperty(s,"decodeHTML",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTMLStrict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeHTML4",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTML5",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTML4Strict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeHTML5Strict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeXMLStrict",{enumerable:!0,get:function(){return a.decodeXML}})})(jy);const tse={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",fedropshadow:"feDropShadow",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},rse={definitionurl:"definitionURL",attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},nse={elementNames:tse,attributeNames:rse};var Vo=By,Xy=jy,Sc=nse;Sc.elementNames.__proto__=null;Sc.attributeNames.__proto__=null;var ise={__proto__:null,style:!0,script:!0,xmp:!0,iframe:!0,noembed:!0,noframes:!0,plaintext:!0,noscript:!0};function sse(s,t){if(s){var e="",r;for(var n in s)r=s[n],e&&(e+=" "),t.xmlMode==="foreign"&&(n=Sc.attributeNames[n]||n),e+=n,(r!==null&&r!==""||t.xmlMode)&&(e+='="'+(t.decodeEntities?Xy.encodeXML(r):r.replace(/\"/g,"&quot;"))+'"');return e}}var ose={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Jy=zy.exports=function(s,t){!Array.isArray(s)&&!s.cheerio&&(s=[s]),t=t||{};for(var e="",r=0;r<s.length;r++){var n=s[r];n.type==="root"?e+=Jy(n.children,t):Vo.isTag(n)?e+=cse(n,t):n.type===Vo.Directive?e+=lse(n):n.type===Vo.Comment?e+=dse(n):n.type===Vo.CDATA?e+=hse(n):e+=use(n,t)}return e},ase=["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"];function cse(s,t){t.xmlMode==="foreign"&&(s.name=Sc.elementNames[s.name]||s.name,s.parent&&ase.indexOf(s.parent.name)>=0&&(t=Object.assign({},t,{xmlMode:!1}))),!t.xmlMode&&["svg","math"].indexOf(s.name)>=0&&(t=Object.assign({},t,{xmlMode:"foreign"}));var e="<"+s.name,r=sse(s.attribs,t);return r&&(e+=" "+r),t.xmlMode&&(!s.children||s.children.length===0)?e+="/>":(e+=">",s.children&&(e+=Jy(s.children,t)),(!ose[s.name]||t.xmlMode)&&(e+="</"+s.name+">")),e}function lse(s){return"<"+s.data+">"}function use(s,t){var e=s.data||"";return t.decodeEntities&&!(s.parent&&s.parent.name in ise)&&(e=Xy.encodeXML(e)),e}function hse(s){return"<![CDATA["+s.children[0].data+"]]>"}function dse(s){return"<!--"+s.data+"-->"}var fse=zy.exports,Ru=Wh,_y=fse,gse=Ru.isTag,pse={getInnerHTML:mse,getOuterHTML:_y,getText:pa};function mse(s,t){return s.children?s.children.map(function(e){return _y(e,t)}).join(""):""}function pa(s){return Array.isArray(s)?s.map(pa).join(""):gse(s)?s.name==="br"?`
569
- `:pa(s.children):s.type===Ru.CDATA?pa(s.children):s.type===Ru.Text?s.data:""}var vi={},yse=vi.getChildren=function(s){return s.children},vse=vi.getParent=function(s){return s.parent};vi.getSiblings=function(s){var t=vse(s);return t?yse(t):[s]};vi.getAttributeValue=function(s,t){return s.attribs&&s.attribs[t]};vi.hasAttrib=function(s,t){return!!s.attribs&&hasOwnProperty.call(s.attribs,t)};vi.getName=function(s){return s.name};var rs={};rs.removeElement=function(s){if(s.prev&&(s.prev.next=s.next),s.next&&(s.next.prev=s.prev),s.parent){var t=s.parent.children;t.splice(t.lastIndexOf(s),1)}};rs.replaceElement=function(s,t){var e=t.prev=s.prev;e&&(e.next=t);var r=t.next=s.next;r&&(r.prev=t);var n=t.parent=s.parent;if(n){var i=n.children;i[i.lastIndexOf(s)]=t}};rs.appendChild=function(s,t){if(t.parent=s,s.children.push(t)!==1){var e=s.children[s.children.length-2];e.next=t,t.prev=e,t.next=null}};rs.append=function(s,t){var e=s.parent,r=s.next;if(t.next=r,t.prev=s,s.next=t,t.parent=e,r){if(r.prev=t,e){var n=e.children;n.splice(n.lastIndexOf(r),0,t)}}else e&&e.children.push(t)};rs.prepend=function(s,t){var e=s.parent;if(e){var r=e.children;r.splice(r.lastIndexOf(s),0,t)}s.prev&&(s.prev.next=t),t.parent=e,t.prev=s.prev,t.next=s,s.prev=t};var Yh=Wh.isTag,Mse={filter:wse,find:Gh,findOneChild:Sse,findOne:ev,existsOne:tv,findAll:Tse};function wse(s,t,e,r){return Array.isArray(t)||(t=[t]),(typeof r!="number"||!isFinite(r))&&(r=1/0),Gh(s,t,e!==!1,r)}function Gh(s,t,e,r){for(var n=[],i,o=0,a=t.length;o<a&&!(s(t[o])&&(n.push(t[o]),--r<=0)||(i=t[o].children,e&&i&&i.length>0&&(i=Gh(s,i,e,r),n=n.concat(i),r-=i.length,r<=0)));o++);return n}function Sse(s,t){for(var e=0,r=t.length;e<r;e++)if(s(t[e]))return t[e];return null}function ev(s,t){for(var e=null,r=0,n=t.length;r<n&&!e;r++)if(Yh(t[r]))s(t[r])?e=t[r]:t[r].children.length>0&&(e=ev(s,t[r].children));else continue;return e}function tv(s,t){for(var e=0,r=t.length;e<r;e++)if(Yh(t[e])&&(s(t[e])||t[e].children.length>0&&tv(s,t[e].children)))return!0;return!1}function Tse(s,t){for(var e=[],r=t.slice();r.length;){var n=r.shift();Yh(n)&&(n.children&&n.children.length>0&&r.unshift.apply(r,n.children),s(n)&&e.push(n))}return e}var Mi={},Cse=Wh,Kn=Mi.isTag=Cse.isTag;Mi.testElement=function(s,t){for(var e in s)if(s.hasOwnProperty(e)){if(e==="tag_name"){if(!Kn(t)||!s.tag_name(t.name))return!1}else if(e==="tag_type"){if(!s.tag_type(t.type))return!1}else if(e==="tag_contains"){if(Kn(t)||!s.tag_contains(t.data))return!1}else if(!t.attribs||!s[e](t.attribs[e]))return!1}return!0};var Aa={tag_name:function(s){return typeof s=="function"?function(t){return Kn(t)&&s(t.name)}:s==="*"?Kn:function(t){return Kn(t)&&t.name===s}},tag_type:function(s){return typeof s=="function"?function(t){return s(t.type)}:function(t){return t.type===s}},tag_contains:function(s){return typeof s=="function"?function(t){return!Kn(t)&&s(t.data)}:function(t){return!Kn(t)&&t.data===s}}};function rv(s,t){return typeof t=="function"?function(e){return e.attribs&&t(e.attribs[s])}:function(e){return e.attribs&&e.attribs[s]===t}}function Ise(s,t){return function(e){return s(e)||t(e)}}Mi.getElements=function(s,t,e,r){var n=Object.keys(s).map(function(i){var o=s[i];return i in Aa?Aa[i](o):rv(i,o)});return n.length===0?[]:this.filter(n.reduce(Ise),t,e,r)};Mi.getElementById=function(s,t,e){return Array.isArray(t)||(t=[t]),this.findOne(rv("id",s),t,e!==!1)};Mi.getElementsByTagName=function(s,t,e,r){return this.filter(Aa.tag_name(s),t,e,r)};Mi.getElementsByTagType=function(s,t,e,r){return this.filter(Aa.tag_type(s),t,e,r)};var Tc={};Tc.removeSubsets=function(s){for(var t=s.length,e,r,n;--t>-1;){for(e=r=s[t],s[t]=null,n=!0;r;){if(s.indexOf(r)>-1){n=!1,s.splice(t,1);break}r=r.parent}n&&(s[t]=e)}return s};var Jr={DISCONNECTED:1,PRECEDING:2,FOLLOWING:4,CONTAINS:8,CONTAINED_BY:16},bse=Tc.compareDocumentPosition=function(s,t){var e=[],r=[],n,i,o,a,c,l;if(s===t)return 0;for(n=s;n;)e.unshift(n),n=n.parent;for(n=t;n;)r.unshift(n),n=n.parent;for(l=0;e[l]===r[l];)l++;return l===0?Jr.DISCONNECTED:(i=e[l-1],o=i.children,a=e[l],c=r[l],o.indexOf(a)>o.indexOf(c)?i===t?Jr.FOLLOWING|Jr.CONTAINED_BY:Jr.FOLLOWING:i===s?Jr.PRECEDING|Jr.CONTAINS:Jr.PRECEDING)};Tc.uniqueSort=function(s){var t=s.length,e,r;for(s=s.slice();--t>-1;)e=s[t],r=s.indexOf(e),r>-1&&r<t&&s.splice(t,1);return s.sort(function(n,i){var o=bse(n,i);return o&Jr.PRECEDING?-1:o&Jr.FOLLOWING?1:0}),s};(function(s){var t=s.exports;[pse,vi,rs,Mse,Mi,Tc].forEach(function(e){Object.keys(e).forEach(function(r){t[r]=e[r].bind(t)})})})(Oy);var Ese=Oy.exports,fo={trueFunc:function(){return!0},falseFunc:function(){return!1}},nv={},Pa={};Object.defineProperty(Pa,"__esModule",{value:!0});Pa.default=Lse;var Mg=/^[^\\]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,xse=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,Rse=/^\s*((?:\\.|[\w\u00b0-\uFFFF-])+)\s*(?:(\S?)=\s*(?:(['"])((?:[^\\]|\\[^])*?)\3|(#?(?:\\.|[\w\u00b0-\uFFFF-])*)|)|)\s*(i)?\]/,kse={undefined:"exists","":"equals","~":"element","^":"start",$:"end","*":"any","!":"not","|":"hyphen"},wg={">":"child","<":"parent","~":"sibling","+":"adjacent"},Sg={"#":["id","equals"],".":["class","element"]},Ase=new Set(["has","not","matches","is","host","host-context"]),Pse=new Set(["contains","icontains"]),Tg=new Set(['"',"'"]);function Dse(s,t,e){var r=parseInt(t,16)-65536;return r!==r||e?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,r&1023|56320)}function $o(s){return s.replace(xse,Dse)}function Cg(s){return s===" "||s===`
570
- `||s===" "||s==="\f"||s==="\r"}function Lse(s,t){var e=[];if(s=iv(e,""+s,t),s!=="")throw new Error("Unmatched selector: "+s);return e}function iv(s,t,e){var r,n;e===void 0&&(e={});var i=[],o=!1;function a(){var D=t.match(Mg);if(!D)throw new Error("Expected name, found "+t);var A=D[0];return t=t.substr(A.length),$o(A)}function c(D){for(;Cg(t.charAt(D));)D++;t=t.substr(D)}function l(D){for(var A=0;t.charAt(--D)==="\\";)A++;return(A&1)===1}for(c(0);t!=="";){var u=t.charAt(0);if(Cg(u))o=!0,c(1);else if(u in wg)i.push({type:wg[u]}),o=!1,c(1);else if(u===","){if(i.length===0)throw new Error("Empty sub-selector");s.push(i),i=[],o=!1,c(1)}else if(o&&(i.length>0&&i.push({type:"descendant"}),o=!1),u==="*")t=t.substr(1),i.push({type:"universal"});else if(u in Sg){var h=Sg[u],d=h[0],f=h[1];t=t.substr(1),i.push({type:"attribute",name:d,action:f,value:a(),ignoreCase:!1})}else if(u==="["){t=t.substr(1);var g=t.match(Rse);if(!g)throw new Error("Malformed attribute selector: "+t);var y=g[0],S=g[1],b=g[2],C=g[4],N=C===void 0?"":C,T=g[5],p=T===void 0?N:T,m=g[6];t=t.substr(y.length);var v=$o(S);((r=e.lowerCaseAttributeNames)!==null&&r!==void 0?r:!e.xmlMode)&&(v=v.toLowerCase()),i.push({type:"attribute",name:v,action:kse[b],value:$o(p),ignoreCase:!!m})}else if(u===":"){if(t.charAt(1)===":"){t=t.substr(2),i.push({type:"pseudo-element",name:a().toLowerCase()});continue}t=t.substr(1);var M=a().toLowerCase(),R=null;if(t.startsWith("("))if(Ase.has(M)){var E=t.charAt(1),P=Tg.has(E);if(t=t.substr(P?2:1),R=[],t=iv(R,t,e),P)if(t.startsWith(E))t=t.substr(1);else throw new Error("Unmatched quotes in :"+M);if(!t.startsWith(")"))throw new Error("Missing closing parenthesis in :"+M+" ("+t+")");t=t.substr(1)}else{for(var k=1,O=1;O>0&&k<t.length;k++)t.charAt(k)==="("&&!l(k)?O++:t.charAt(k)===")"&&!l(k)&&O--;if(O)throw new Error("Parenthesis not matched");if(R=t.substr(1,k-2),t=t.substr(k),Pse.has(M)){var E=R.charAt(0);E===R.slice(-1)&&Tg.has(E)&&(R=R.slice(1,-1)),R=$o(R)}}i.push({type:"pseudo",name:M,data:R})}else if(Mg.test(t)){var B=a();((n=e.lowerCaseTags)!==null&&n!==void 0?n:!e.xmlMode)&&(B=B.toLowerCase()),i.push({type:"tag",name:B})}else return i.length&&i[i.length-1].type==="descendant"&&i.pop(),Ig(s,i),t}return Ig(s,i),t}function Ig(s,t){if(s.length>0&&t.length===0)throw new Error("Empty sub-selector");s.push(t)}var Hh={},Nse=St&&St.__spreadArrays||function(){for(var s=0,t=0,e=arguments.length;t<e;t++)s+=arguments[t].length;for(var r=Array(s),n=0,t=0;t<e;t++)for(var i=arguments[t],o=0,a=i.length;o<a;o++,n++)r[n]=i[o];return r};Object.defineProperty(Hh,"__esModule",{value:!0});var ku={equals:"",element:"~",start:"^",end:"$",any:"*",not:"!",hyphen:"|"},Ose=new Set(Nse(Object.keys(ku).map(function(s){return ku[s]}).filter(Boolean),[":","[","]"," ","\\"]));function sv(s){return s.map(zse).join(", ")}Hh.default=sv;function zse(s){return s.map(Bse).join("")}function Bse(s){switch(s.type){case"child":return" > ";case"parent":return" < ";case"sibling":return" ~ ";case"adjacent":return" + ";case"descendant":return" ";case"universal":return"*";case"tag":return Rr(s.name);case"pseudo-element":return"::"+Rr(s.name);case"pseudo":return s.data===null?":"+Rr(s.name):typeof s.data=="string"?":"+Rr(s.name)+"("+s.data+")":":"+Rr(s.name)+"("+sv(s.data)+")";case"attribute":return s.action==="exists"?"["+Rr(s.name)+"]":s.name==="id"&&s.action==="equals"&&!s.ignoreCase?"#"+Rr(s.value):s.name==="class"&&s.action==="element"&&!s.ignoreCase?"."+Rr(s.value):"["+Rr(s.name)+ku[s.action]+"='"+Rr(s.value)+"'"+(s.ignoreCase?"i":"")+"]"}}function Rr(s){return s.split("").map(function(t){return Ose.has(t)?"\\"+t:t}).join("")}(function(s){var t=St&&St.__createBinding||(Object.create?function(o,a,c,l){l===void 0&&(l=c),Object.defineProperty(o,l,{enumerable:!0,get:function(){return a[c]}})}:function(o,a,c,l){l===void 0&&(l=c),o[l]=a[c]}),e=St&&St.__exportStar||function(o,a){for(var c in o)c!=="default"&&!Object.prototype.hasOwnProperty.call(a,c)&&t(a,o,c)},r=St&&St.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(s,"__esModule",{value:!0}),s.stringify=s.parse=void 0,e(Pa,s);var n=Pa;Object.defineProperty(s,"parse",{enumerable:!0,get:function(){return r(n).default}});var i=Hh;Object.defineProperty(s,"stringify",{enumerable:!0,get:function(){return r(i).default}})})(nv);const jse=50,Fse=30,Use=1,Wse=0,Vse=-1,$se=-1,Yse=-1,Gse=-1,Hse=-1,ov={universal:jse,tag:Fse,attribute:Use,pseudo:Wse,descendant:Vse,child:$se,parent:Yse,sibling:Gse,adjacent:Hse};var Qse=qse,Al=ov,bg={__proto__:null,exists:10,equals:8,not:7,start:6,end:6,any:5,hyphen:4,element:4};function qse(s){for(var t=s.map(av),e=1;e<s.length;e++){var r=t[e];if(!(r<0))for(var n=e-1;n>=0&&r<t[n];n--){var i=s[n+1];s[n+1]=s[n],s[n]=i,t[n+1]=t[n],t[n]=r}}}function av(s){var t=Al[s.type];if(t===Al.attribute)t=bg[s.action],t===bg.equals&&s.name==="id"&&(t=9),s.ignoreCase&&(t>>=1);else if(t===Al.pseudo)if(!s.data)t=3;else if(s.name==="has"||s.name==="contains")t=0;else if(s.name==="matches"||s.name==="not"){t=0;for(var e=0;e<s.data.length;e++)if(s.data[e].length===1){var r=av(s.data[e][0]);if(r===0){t=0;break}r>t&&(t=r)}s.data.length>1&&t>0&&(t-=1)}else t=1;return t}var Yo=fo.falseFunc,Eg=/[-[\]{}()*+?.,\\^$|#\s]/g,xg={__proto__:null,equals:function(s,t,e){var r=t.name,n=t.value,i=e.adapter;return t.ignoreCase?(n=n.toLowerCase(),function(a){var c=i.getAttributeValue(a,r);return c!=null&&c.toLowerCase()===n&&s(a)}):function(a){return i.getAttributeValue(a,r)===n&&s(a)}},hyphen:function(s,t,e){var r=t.name,n=t.value,i=n.length,o=e.adapter;return t.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,r);return l!=null&&(l.length===i||l.charAt(i)==="-")&&l.substr(0,i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(0,i)===n&&(l.length===i||l.charAt(i)==="-")&&s(c)}},element:function(s,t,e){var r=t.name,n=t.value,i=e.adapter;if(/\s/.test(n))return Yo;n=n.replace(Eg,"\\$&");var o="(?:^|\\s)"+n+"(?:$|\\s)",a=t.ignoreCase?"i":"",c=new RegExp(o,a);return function(u){var h=i.getAttributeValue(u,r);return h!=null&&c.test(h)&&s(u)}},exists:function(s,t,e){var r=t.name,n=e.adapter;return function(o){return n.hasAttrib(o,r)&&s(o)}},start:function(s,t,e){var r=t.name,n=t.value,i=n.length,o=e.adapter;return i===0?Yo:t.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(0,i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(0,i)===n&&s(c)}},end:function(s,t,e){var r=t.name,n=t.value,i=-n.length,o=e.adapter;return i===0?Yo:t.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(i)===n&&s(c)}},any:function(s,t,e){var r=t.name,n=t.value,i=e.adapter;if(n==="")return Yo;if(t.ignoreCase){var o=new RegExp(n.replace(Eg,"\\$&"),"i");return function(c){var l=i.getAttributeValue(c,r);return l!=null&&o.test(l)&&s(c)}}return function(c){var l=i.getAttributeValue(c,r);return l!=null&&l.indexOf(n)>=0&&s(c)}},not:function(s,t,e){var r=t.name,n=t.value,i=e.adapter;return n===""?function(a){return!!i.getAttributeValue(a,r)&&s(a)}:t.ignoreCase?(n=n.toLowerCase(),function(a){var c=i.getAttributeValue(a,r);return c!=null&&c.toLowerCase()!==n&&s(a)}):function(a){return i.getAttributeValue(a,r)!==n&&s(a)}}},cv={compile:function(s,t,e){if(e&&e.strict&&(t.ignoreCase||t.action==="not"))throw new Error("Unsupported attribute selector");return xg[t.action](s,t,e)},rules:xg},Cc={exports:{}},Zse=Xse,Kse=/^([+\-]?\d*n)?\s*(?:([+\-]?)\s*(\d+))?$/;function Xse(s){if(s=s.trim().toLowerCase(),s==="even")return[2,0];if(s==="odd")return[2,1];var t=s.match(Kse);if(!t)throw new SyntaxError("n-th rule couldn't be parsed ('"+s+"')");var e;return t[1]?(e=parseInt(t[1],10),isNaN(e)&&(t[1].charAt(0)==="-"?e=-1:e=1)):e=0,[e,t[3]?parseInt((t[2]||"")+t[3],10):0]}var Jse=toe,lv=fo,_se=lv.trueFunc,eoe=lv.falseFunc;function toe(s){var t=s[0],e=s[1]-1;if(e<0&&t<=0)return eoe;if(t===-1)return function(n){return n<=e};if(t===0)return function(n){return n===e};if(t===1)return e<0?_se:function(n){return n>=e};var r=e%t;return r<0&&(r+=t),t>1?function(n){return n>=e&&n%t===r}:(t*=-1,function(n){return n<=e&&n%t===r})}var uv=Zse,hv=Jse;Cc.exports=function(t){return hv(uv(t))};Cc.exports.parse=uv;Cc.exports.compile=hv;var roe=Cc.exports,Go=roe,dv=fo,noe=cv,Ps=dv.trueFunc,Mn=dv.falseFunc,ioe=noe.rules.equals;function Wn(s,t){var e={name:s,value:t};return function(n,i,o){return ioe(n,e,o)}}function Ho(s,t){return function(e){return!!t.getParent(e)&&s(e)}}var ma={contains:function(s,t,e){var r=e.adapter;return function(i){return s(i)&&r.getText(i).indexOf(t)>=0}},icontains:function(s,t,e){var r=t.toLowerCase(),n=e.adapter;return function(o){return s(o)&&n.getText(o).toLowerCase().indexOf(r)>=0}},"nth-child":function(s,t,e){var r=Go(t),n=e.adapter;return r===Mn?r:r===Ps?Ho(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=0;c<a.length;c++)if(n.isTag(a[c])){if(a[c]===o)break;l++}return r(l)&&s(o)}},"nth-last-child":function(s,t,e){var r=Go(t),n=e.adapter;return r===Mn?r:r===Ps?Ho(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=a.length-1;l>=0;l--)if(n.isTag(a[l])){if(a[l]===o)break;c++}return r(c)&&s(o)}},"nth-of-type":function(s,t,e){var r=Go(t),n=e.adapter;return r===Mn?r:r===Ps?Ho(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=0;l<a.length;l++)if(n.isTag(a[l])){if(a[l]===o)break;n.getName(a[l])===n.getName(o)&&c++}return r(c)&&s(o)}},"nth-last-of-type":function(s,t,e){var r=Go(t),n=e.adapter;return r===Mn?r:r===Ps?Ho(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=a.length-1;l>=0;l--)if(n.isTag(a[l])){if(a[l]===o)break;n.getName(a[l])===n.getName(o)&&c++}return r(c)&&s(o)}},root:function(s,t,e){var r=e.adapter;return function(n){return!r.getParent(n)&&s(n)}},scope:function(s,t,e,r){var n=e.adapter;if(!r||r.length===0)return ma.root(s,t,e);function i(o,a){return typeof n.equals=="function"?n.equals(o,a):o===a}return r.length===1?function(o){return i(r[0],o)&&s(o)}:function(o){return r.indexOf(o)>=0&&s(o)}},checkbox:Wn("type","checkbox"),file:Wn("type","file"),password:Wn("type","password"),radio:Wn("type","radio"),reset:Wn("type","reset"),image:Wn("type","image"),submit:Wn("type","submit"),hover:function(s,t,e){var r=e.adapter;return typeof r.isHovered=="function"?function(i){return s(i)&&r.isHovered(i)}:Mn},visited:function(s,t,e){var r=e.adapter;return typeof r.isVisited=="function"?function(i){return s(i)&&r.isVisited(i)}:Mn},active:function(s,t,e){var r=e.adapter;return typeof r.isActive=="function"?function(i){return s(i)&&r.isActive(i)}:Mn}};function soe(s,t){for(var e=0;s&&e<s.length;e++)if(t.isTag(s[e]))return s[e]}var Fs={empty:function(s,t){return!t.getChildren(s).some(function(e){return t.isTag(e)||e.type==="text"})},"first-child":function(s,t){return soe(t.getSiblings(s),t)===s},"last-child":function(s,t){for(var e=t.getSiblings(s),r=e.length-1;r>=0;r--){if(e[r]===s)return!0;if(t.isTag(e[r]))break}return!1},"first-of-type":function(s,t){for(var e=t.getSiblings(s),r=0;r<e.length;r++)if(t.isTag(e[r])){if(e[r]===s)return!0;if(t.getName(e[r])===t.getName(s))break}return!1},"last-of-type":function(s,t){for(var e=t.getSiblings(s),r=e.length-1;r>=0;r--)if(t.isTag(e[r])){if(e[r]===s)return!0;if(t.getName(e[r])===t.getName(s))break}return!1},"only-of-type":function(s,t){for(var e=t.getSiblings(s),r=0,n=e.length;r<n;r++)if(t.isTag(e[r])){if(e[r]===s)continue;if(t.getName(e[r])===t.getName(s))return!1}return!0},"only-child":function(s,t){for(var e=t.getSiblings(s),r=0;r<e.length;r++)if(t.isTag(e[r])&&e[r]!==s)return!1;return!0},link:function(s,t){return t.hasAttrib(s,"href")},selected:function(s,t){if(t.hasAttrib(s,"selected"))return!0;if(t.getName(s)!=="option")return!1;var e=t.getParent(s);if(!e||t.getName(e)!=="select"||t.hasAttrib(e,"multiple"))return!1;for(var r=t.getChildren(e),n=!1,i=0;i<r.length;i++)if(t.isTag(r[i]))if(r[i]===s)n=!0;else if(n){if(t.hasAttrib(r[i],"selected"))return!1}else return!1;return n},disabled:function(s,t){return t.hasAttrib(s,"disabled")},enabled:function(s,t){return!t.hasAttrib(s,"disabled")},checked:function(s,t){return t.hasAttrib(s,"checked")||Fs.selected(s,t)},required:function(s,t){return t.hasAttrib(s,"required")},optional:function(s,t){return!t.hasAttrib(s,"required")},parent:function(s,t){return!Fs.empty(s,t)},header:Rg(["h1","h2","h3","h4","h5","h6"]),button:function(s,t){var e=t.getName(s);return e==="button"||e==="input"&&t.getAttributeValue(s,"type")==="button"},input:Rg(["input","textarea","select","button"]),text:function(s,t){var e;return t.getName(s)==="input"&&(!(e=t.getAttributeValue(s,"type"))||e.toLowerCase()==="text")}};function Rg(s){if(typeof Set<"u"){var t=new Set(s);return function(e,r){return t.has(r.getName(e))}}return function(e,r){return s.indexOf(r.getName(e))>=0}}function ooe(s,t,e){if(e===null){if(s.length>2&&t!=="scope")throw new Error("pseudo-selector :"+t+" requires an argument")}else if(s.length===2)throw new Error("pseudo-selector :"+t+" doesn't have any arguments")}var aoe=/^(?:(?:nth|last|first|only)-(?:child|of-type)|root|empty|(?:en|dis)abled|checked|not)$/,fv={compile:function(s,t,e,r){var n=t.name,i=t.data,o=e.adapter;if(e&&e.strict&&!aoe.test(n))throw new Error(":"+n+" isn't part of CSS3");if(typeof ma[n]=="function")return ma[n](s,i,e,r);if(typeof Fs[n]=="function"){var a=Fs[n];return ooe(a,n,i),a===Mn?a:s===Ps?function(l){return a(l,o,i)}:function(l){return a(l,o,i)&&s(l)}}else throw new Error("unmatched pseudo-class :"+n)},filters:ma,pseudos:Fs},coe=cv,loe=fv,uoe={__proto__:null,attribute:coe.compile,pseudo:loe.compile,tag:function(s,t,e){var r=t.name,n=e.adapter;return function(o){return n.getName(o)===r&&s(o)}},descendant:function(s,t,e){var r=typeof WeakSet<"u"?new WeakSet:null,n=e.adapter;return function(o){for(var a=!1;!a&&(o=n.getParent(o));)(!r||!r.has(o))&&(a=s(o),!a&&r&&r.add(o));return a}},_flexibleDescendant:function(s,t,e){var r=e.adapter;return function(i){for(var o=s(i);!o&&(i=r.getParent(i));)o=s(i);return o}},parent:function(s,t,e){if(e&&e.strict)throw new Error("Parent selector isn't part of CSS3");var r=e.adapter;return function(o){return r.getChildren(o).some(n)};function n(i){return r.isTag(i)&&s(i)}},child:function(s,t,e){var r=e.adapter;return function(i){var o=r.getParent(i);return!!o&&s(o)}},sibling:function(s,t,e){var r=e.adapter;return function(i){for(var o=r.getSiblings(i),a=0;a<o.length;a++)if(r.isTag(o[a])){if(o[a]===i)break;if(s(o[a]))return!0}return!1}},adjacent:function(s,t,e){var r=e.adapter;return function(i){for(var o=r.getSiblings(i),a,c=0;c<o.length;c++)if(r.isTag(o[c])){if(o[c]===i)break;a=o[c]}return!!a&&s(a)}},universal:function(s){return s}},hoe=Ic,doe=nv.parse,gv=fo,foe=Qse,goe=ov,kg=uoe,pv=fv,Hs=gv.trueFunc,Rn=gv.falseFunc,Qh=pv.filters;function Ic(s,t,e){var r=yv(s,t,e);return mv(r,t)}function mv(s,t){var e=t.adapter;return function(n){return e.isTag(n)&&s(n)}}function yv(s,t,e){var r=doe(s,t);return go(r,t,e)}function Au(s){return s.type==="pseudo"&&(s.name==="scope"||Array.isArray(s.data)&&s.data.some(function(t){return t.some(Au)}))}var poe={type:"descendant"},moe={type:"_flexibleDescendant"},yoe={type:"pseudo",name:"scope"},vv={};function voe(s,t,e){var r=t.adapter,n=!!e&&!!e.length&&e.every(function(i){return i===vv||!!r.getParent(i)});s.forEach(function(i){if(!(i.length>0&&Mv(i[0])&&i[0].type!=="descendant"))if(n&&!(Array.isArray(i)?i.some(Au):Au(i)))i.unshift(poe);else return;i.unshift(yoe)})}function go(s,t,e){s=s.filter(function(o){return o.length>0}),s.forEach(foe);var r=Array.isArray(e);e=t&&t.context||e,e&&!r&&(e=[e]),voe(s,t,e);var n=!1,i=s.map(function(o){if(o[0]&&o[1]&&o[0].name==="scope"){var a=o[1].type;r&&a==="descendant"?o[1]=moe:(a==="adjacent"||a==="sibling")&&(n=!0)}return Moe(o,t,e)}).reduce(woe,Rn);return i.shouldTestNextSiblings=n,i}function Mv(s){return goe[s.type]<0}function Moe(s,t,e){return s.reduce(function(r,n){if(r===Rn)return r;if(!(n.type in kg))throw new Error("Rule type "+n.type+" is not supported by css-select");return kg[n.type](r,n,t,e)},t&&t.rootFunc||Hs)}function woe(s,t){return t===Rn||s===Hs?s:s===Rn||t===Hs?t:function(r){return s(r)||t(r)}}function wv(s){return s.some(Mv)}Qh.not=function(s,t,e,r){var n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),adapter:e.adapter};if(n.strict&&(t.length>1||t.some(wv)))throw new Error("complex selectors in :not aren't allowed in strict mode");var i=go(t,n,r);return i===Rn?s:i===Hs?Rn:function(a){return!i(a)&&s(a)}};Qh.has=function(s,t,e){var r=e.adapter,n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),adapter:r},i=t.some(wv)?[vv]:null,o=go(t,n,i);return o===Rn?Rn:o===Hs?function(c){return r.getChildren(c).some(r.isTag)&&s(c)}:(o=mv(o,e),i?function(c){return s(c)&&(i[0]=c,r.existsOne(o,r.getChildren(c)))}:function(c){return s(c)&&r.existsOne(o,r.getChildren(c))})};Qh.matches=function(s,t,e,r){var n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),rootFunc:s,adapter:e.adapter};return go(t,n,r)};Ic.compileToken=go;Ic.compileUnsafe=yv;Ic.Pseudos=pv;var Soe=Er,qh=Ese,Sv=fo.falseFunc,po=hoe;function Tv(s){return function(e,r,n){return r=r||{},r.adapter=r.adapter||qh,s(e,r,n)}}var Zh=Tv(po),Cv=Tv(po.compileUnsafe);function Iv(s){return function(e,r,n){return n=n||{},n.adapter=n.adapter||qh,typeof e!="function"&&(e=Cv(e,n,r)),e.shouldTestNextSiblings&&(r=Coe(n&&n.context||r,n.adapter)),Array.isArray(r)?r=n.adapter.removeSubsets(r):r=n.adapter.getChildren(r),s(e,r,n)}}function Toe(s,t){var e=t.getSiblings(s);if(!Array.isArray(e))return[];for(e=e.slice(0);e.shift()!==s;);return e}function Coe(s,t){Array.isArray(s)||(s=[s]);for(var e=s.slice(0),r=0,n=s.length;r<n;r++){var i=Toe(e[r],t);e.push.apply(e,i)}return e}var Kh=Iv(function(t,e,r){return t===Sv||!e||e.length===0?[]:r.adapter.findAll(t,e)}),Ioe=Iv(function(t,e,r){return t===Sv||!e||e.length===0?null:r.adapter.findOne(t,e)});function boe(s,t,e){return e=e||{},e.adapter=e.adapter||qh,(typeof t=="function"?t:Zh(t,e))(s)}function Er(s,t,e){return Kh(s,t,e)}Er.compile=Zh;Er.filters=po.Pseudos.filters;Er.pseudos=po.Pseudos.pseudos;Er.selectAll=Kh;Er.selectOne=Ioe;Er.is=boe;Er.parse=Zh;Er.iterate=Kh;Er._compileUnsafe=Cv;Er._compileToken=po.compileToken;const bv=un(Soe);Ze(Array);function Qo(s){return s.nodeType===1||Ht.isSpriteNode(s.nodeName)}function Ri(s){return Array.from(s.childNodes||[])}function Pu(s){return Ht.isSpriteNode(s.nodeName)?s.parent||s.canvas||s.container:s.parentElement}function Eoe(s){let t=s.length,e,r,n;for(;--t>-1;){for(e=r=s[t],s[t]=null,n=!0;r;){if(s.indexOf(r)>-1){n=!1,s.splice(t,1);break}r=Pu(r)}n&&(s[t]=e)}return s}const Xh={isTag:Qo,existsOne(s,t){return t.some(e=>Qo(e)?s(e)||Xh.existsOne(s,Ri(e)):!1)},getSiblings(s){const t=Pu(s);return t&&Ri(t)},getChildren:Ri,getParent:Pu,getAttributeValue(s,t){if(s.nodeType===1&&t==="class"||t==="id")return s[t];if(this.hasAttrib(s,t)){let e=s.attributes[t];return Array.isArray(e)&&(e=`[${e.join()}]`),String(e)}},hasAttrib(s,t){return s.attributes[t]!=null},removeSubsets:Eoe,getName(s){return s.tagName?s.tagName.toLowerCase():null},findOne:function s(t,e){let r=null;for(let n=0,i=e.length;n<i&&!r;n++)if(t(e[n]))r=e[n];else{const o=Ri(e[n]);o&&o.length>0&&(r=s(t,o))}return r},findAll:function s(t,e){let r=[];for(let n=0,i=e.length;n<i;n++){if(!Qo(e[n]))continue;t(e[n])&&r.push(e[n]);const o=Ri(e[n]);o&&(r=r.concat(s(t,o)))}return r},getText:function s(t){return Array.isArray(t)?t.map(s).join(""):Qo(t)?s(Ri(t)):t.nodeType===3?t.nodeValue:Ht.isSpriteNode(t.nodeName)?t.text:""}};function Ev(s){if(typeof s!="string")return s;let t=s.match(/\[(bgcolor|fillColor|strokeColor|color)\s*=\s*['"]?\w+['"]?\]/g);return t&&(t=t.map(e=>{const r=e.slice(1,-1).split("="),n=xn(r[1].replace(/['"]/g,""));return[e,`[${r[0]}="${n}"]`]}),t.forEach(([e,r])=>{s=s.replace(e,r)})),t=s.match(/\[\w+\s*=\s*['"]\[.+?\]['"]\]/g),t&&(t=t.map(e=>{const r=e.slice(1,-1).split("="),n=r[1].slice(2,-2).split(/,/g).map(i=>i.trim());return[e,`[${r[0]}="[${n}]"]`]}),t.forEach(([e,r])=>{s=s.replace(e,r)})),s}function qo(s,t){return bv.selectAll(Ev(s),t,{adapter:Xh})}function Ag(s,t){return bv.selectOne(Ev(s),t,{adapter:Xh})}Ze(Array);const Pg=Symbol("zOrder"),vt=Symbol("ordered"),Lt=Symbol("children"),Pl=Symbol("sealed"),Ha=class Ha extends ho{constructor(t={}){super(t),this[Lt]=[],this[vt]=null,this[Pg]=0}get childNodes(){return this[Lt]}get children(){return this[Lt]}get orderedChildren(){return this[vt]||(this[vt]=[...this[Lt]],this[vt].sort((t,e)=>t.zIndex-e.zIndex||t.zOrder-e.zOrder)),this[vt]}append(...t){return t.map(e=>this.appendChild(e))}appendChild(t){return t.remove(),this[Lt].push(t),t.connect(this,this[Pg]++),this[vt]&&(this[vt].length&&t.zIndex<this[vt][this[vt].length-1].zIndex?this.reorder():this[vt].push(t)),t}cloneNode(t=!1){const e=super.cloneNode();return t&&this[Lt].forEach(r=>{const n=r.cloneNode(t);e.appendChild(n)}),e}dispatchPointerEvent(t){const e=this.orderedChildren;for(let r=e.length-1;r>=0;r--)if(e[r].dispatchPointerEvent(t))return!0;return super.dispatchPointerEvent(t)}draw(t=[]){if(this.__cacheRenderMatrix=this.renderMatrix,super.draw(t),!this[Pl]&&this.attributes.display!=="none"){const e=this.orderedChildren;for(let r=0;r<e.length;r++)e[r].draw(t)}return this.__cacheRenderMatrix=null,t}getElementById(t){return Ag(`#${t}`,this)}getElementsByClassName(t){return qo(`.${t}`,this)}getElementsByName(t){return qo(`[name="${t}"]`,this)}getElementsByTagName(t){return qo(t,this)}insertBefore(t,e){if(e==null)return this.appendChild(t);t.remove();const r=this[Lt].indexOf(e);if(r<0)throw new Error("Invalid reference node.");const n=e.zOrder;for(let i=r;i<this[Lt].length;i++){const o=this[Lt][i].zOrder,a=this[Lt][i];delete a.zOrder,Object.defineProperty(a,"zOrder",{value:o+1,writable:!1,configurable:!0})}if(this[Lt].splice(r,0,t),t.connect(this,n),this[vt])if(t.zIndex!==e.zIndex)this.reorder();else{const i=this[vt].indexOf(e);this[vt].splice(i,0,t)}return t}querySelector(t){return Ag(t,this)}querySelectorAll(t){return qo(t,this)}replaceChild(t,e){t.remove();const r=this[Lt].indexOf(e);if(r<0)throw new Error("Invalid reference node.");if(this[Lt][r]=t,t.connect(this,e.zOrder),this[vt])if(t.zIndex!==e.zIndex)this.reorder();else{const n=this[vt].indexOf(e);this[vt][n]=t}return e.disconnect(this),t}removeAllChildren(){const t=this[Lt];for(let e=t.length-1;e>=0;e--)t[e].remove()}removeChild(t){const e=this[Lt].indexOf(t);if(e>=0){if(this[Lt].splice(e,1),this[vt]){const r=this[vt].indexOf(t);this[vt].splice(r,1)}return t.disconnect(this),t}return null}reorder(){this[vt]=null}seal(){function t(i,o){const a=[];for(let c=0;c<i.length;c++){const l=[...i[c]];for(let u=1;u<l.length;u+=2){const h=l[u],d=l[u+1];l[u]=h*o[0]+d*o[2]+o[4],l[u+1]=h*o[1]+d*o[3]+o[5]}a.push(l)}return a}const e=this.orderedChildren,r=new ft.Figure2D,n=this.localMatrix;for(let i=0;i<e.length;i++){let o=e[i];if(o instanceof Ha&&(o=o.seal()),o.clientBox){let a=o.clientBox.contours.path;a=t(a,o.localMatrix),r.addPath(a)}if(o.path){let a=o.path.contours.path;a=t(a,o.localMatrix),r.addPath(a)}}return this[Pl]=!0,this.clientBox=r,{clientBox:r,localMatrix:n}}setResolution({width:t,height:e}){super.setResolution({width:t,height:e}),this[Lt].forEach(r=>{r.setResolution({width:t,height:e})})}updateContours(){this[Pl]||super.updateContours()}};x(Ha,"Attr",Mb);let dt=Ha;Ht.registerNode(dt,"group");Ze(Array);const Du={};function Da(s,t){if(Du[s])return Du[s];const e=ft.ENV.loadImage(s,{alias:t,useImageBitmap:!1});return e??s}async function xv(s,t,e){let r=t;if(typeof t=="string"&&(r=Da(t)),r&&typeof r.then=="function"&&(r=await r),t===s.attributes.texture){r&&r.image&&(r.sourceRect&&(s.attributes.sourceRect=r.sourceRect),s.textureImageRotated=!!r.rotated,r=r.image);const{width:n,height:i,textureRect:o}=s.attributes,a=s.textureImage;s.textureImage=r,e&&a!==r&&!o&&(n==null||i==null)&&s.updateContours(),s.forceUpdate()}return r}const Sr=Symbol("textureMap");function Rv(s,t){if(t[Sr]=t[Sr]||new Map,t[Sr].has(s))return t[Sr].get(s);const e=t.createTexture(s);return!/^blob:/.test(s.src)&&typeof s.getContext!="function"&&t[Sr].set(s,e),e}function kv(s,t){if(t[Sr]&&t[Sr].has(s)){const e=t[Sr].get(s);return t.deleteTexture(e),t[Sr].delete(s),!0}return!1}const Dl=Symbol("textureContext");function Av(s,t){const e=s.textureImage instanceof String?String(s.textureImage):s.textureImage,r=s.textureImageRotated,n=t.texture,i=s.renderer;if(e){const o=s.originalContentRect;let a=s.attributes.textureRect;const c=s.attributes.textureRepeat,l=s.attributes.sourceRect;if(!n||s[Dl]&&s[Dl]!==i||n.image!==e||n.options.repeat!==c||!au(n.options.rect,a)||!au(n.options.srcRect,l)){const u=Rv(e,i);a?(a[0]+=o[0],a[1]+=o[1]):a=o;let h=null;n&&!i[Sr].has(n.image)&&(!n.options||!n.options.hidden)&&(h=t.uniforms.u_texSampler),t.setTexture(u,{rect:a,repeat:c,srcRect:l,rotated:r}),h&&h.delete&&h.delete(),s[Dl]=i}}else if(n){let o=null;!i[Sr].has(n.image)&&(!n.options||!n.options.hidden)&&(o=t.uniforms.u_texSampler),t.setTexture(null),o&&o.delete&&o.delete()}}async function xoe(s,t){typeof t=="string"&&(t=await(await fetch(t,{method:"GET",mode:"cors",cache:"default"})).json());const e=await Da(s),r=t.frames;return Object.entries(r).forEach(([n,i])=>{const{x:o,y:a,w:c,h:l}=i.frame;let u=[o,a,c,l];const h=i.rotated;h&&(u=[u[0],u[1],u[3],u[2]]),Du[n]={image:e,sourceRect:u,rotated:h}}),e}Ze(Array);const Roe={antialias:!0,autoRender:!0,alpha:!0},ps=Symbol("autoRender"),ms=Symbol("renderer"),Dg=Symbol("timeline"),Nt=Symbol("prepareRender"),Ll=Symbol("tickRender"),Qr=Symbol("pass"),gn=Symbol("fbo"),Vn=Symbol("tickers"),$n=Symbol("destroyed"),pn=Symbol("layerTransformInvert");function koe(s){if(!s||!s.options)return null;let t="2d";return s.glRenderer&&(t=s.isWebGL2?"webgl2":"webgl"),s.options.contextType=t,s.options.webgl2=t==="webgl2",t}let ri=class extends dt{constructor(t={}){if(super(),!t.canvas){const{width:i,height:o}=this.getResolution(),a=ft.ENV.createCanvas(i,o,{offscreen:!!t.offscreen,id:t.id,extra:t.extra});a.style&&(a.style.position="absolute"),a.dataset&&(a.dataset.layerId=t.id),a.contextType&&(t.contextType=a.contextType),t.canvas=a}const e=t.canvas,r=Object.assign({},Roe,t);this[ps]=r.autoRender,delete t.autoRender;const n=r.Renderer||ft.Renderer;this[ms]=new n(e,r),koe(this[ms]),this.options=t,this.id=t.id,this[Qr]=[],this.setResolution(e),this.canvas=e,this[Dg]=new Py,this[$n]=!1,this.__mouseCapturedTarget=null,this[pn]=null}get autoRender(){return this[ps]}get displayRatio(){return this.parent&&this.parent.options?this.parent.options.displayRatio:1}get height(){const{height:t}=this.getResolution();return t/this.displayRatio}get gl(){return this.renderer.glRenderer?this.renderer.glRenderer.gl:null}get layer(){return this}get offscreen(){return!!this.options.offscreen||this.canvas._offscreen}get pass(){return this[Qr]}get prepareRender(){return this[Nt]?this[Nt]:Promise.resolve()}get renderer(){return this[ms]}transferToImageBitmap(){const t=this.canvas;if(!t||typeof t.transferToImageBitmap!="function")throw new Error("transfer-to-image-bitmap-unavailable");const e=t.transferToImageBitmap();if(!e)throw new Error("transfer-to-image-bitmap-empty");return e}get renderOffset(){if(this.parent&&this.parent.options){const{left:t,top:e}=this.parent.options;return[t,e]}return[this.options.left|0,this.options.top|0]}get timeline(){return this[Dg]}get width(){const{width:t}=this.getResolution();return t/this.displayRatio}get localMatrix(){const{x:t,y:e}=this.attributes;return[1,0,0,1,t,e]}get layerTransformInvert(){if(this[pn])return this[pn];const t=this.transformMatrix;return t[0]===1&&t[1]===0&&t[2]===0&&t[3]===1&&t[4]===0&&t[5]===0?null:(this[pn]=Ia(Array.of(0,0,0,0,0,0),t),this[pn])}forceContextLoss(){const t=this.renderer.glRenderer&&this.renderer.glRenderer.gl;if(t&&typeof t.getExtension=="function"){const e=t.getExtension("WEBGL_lose_context");if(e)return e.loseContext(),!0}return!1}destroy(){if(this[$n])return!1;this[$n]=!0,this[ps]=!1;let t;const e=i=>{try{i()}catch(o){t=t||o}};this[Vn]=[],this.__mouseCapturedTarget=null,e(()=>this.cancelPendingRender()),e(()=>this.removeAllChildren()),e(()=>this.deactivateAnimations()),this[Qr]=[],this[gn]=null;const r=this.renderer.glRenderer;let n=[];if(r&&r.programs&&(e(()=>{n=[...r.programs]}),n.forEach(i=>e(()=>r.deleteProgram(i)))),e(()=>this.forceContextLoss()),e(()=>this.remove()),t)throw t;return!0}addPass({vertex:t,fragment:e,options:r,uniforms:n}={}){if(this.renderer.glRenderer){const{width:i,height:o}=this.getResolution(),a=this.renderer.createPassProgram({vertex:t,fragment:e,options:r}),c=new ft.Figure2D;c.rect(0,0,i/this.displayRatio,o/this.displayRatio);const l=new ft.Mesh2D(c);return l.setUniforms(n),l.setProgram(a),this[Qr].push(l),this.forceUpdate(),l}return null}deleteTexture(t){return kv(t,this.renderer)}dispatchPointerEvent(t){const e=t.type;if(e==="mousedown"||e==="mouseup"||e==="mousemove"){const a=this.__mouseCapturedTarget;if(a){if(a.layer===this)return a.dispatchEvent(t),!0;this.__mouseCapturedTarget=null}}let r,n;const i=this.layerTransformInvert;if(i){r=t.x,n=t.y;const a=i,c=a[0]*r+a[2]*n+a[4],l=a[1]*r+a[3]*n+a[5];delete t.x,delete t.y,delete t.layerX,delete t.layerY,Object.defineProperties(t,{layerX:{value:c,configurable:!0},layerY:{value:l,configurable:!0},x:{value:c,configurable:!0},y:{value:l,configurable:!0}})}const o=super.dispatchPointerEvent(t);return i&&Object.defineProperties(t,{layerX:{value:r,configurable:!0},layerY:{value:n,configurable:!0},x:{value:r,configurable:!0},y:{value:n,configurable:!0}}),o}forceUpdate(){if(!this[$n]&&!this[Nt])if(this.parent&&this.parent.hasOffscreenCanvas){this.parent.forceUpdate();let t=null;const e=new Promise(r=>{t=r});e._resolve=t,this[Nt]=e}else{let t=null,e=null;const r=new Promise(n=>{t=n,this[ps]&&(e=sn(()=>{delete r._requestID,this.render()}))});r._resolve=t,r._requestID=e,this[Nt]=r}}getFBO(){const t=this.renderer.glRenderer,{width:e,height:r}=this.getResolution();return t&&(!this[gn]||this[gn].width!==e||this[gn].height!==r)?(this[gn]={width:e,height:r,target:t.createFBO(),buffer:t.createFBO(),swap(){[this.target,this.buffer]=[this.buffer,this.target]}},this[gn]):this[gn]?this[gn]:null}updateGlobalTransform(){if(this.layerTransformInvert){const t=this.renderer,e=t.__globalTransformMatrix||t.globalTransformMatrix;t.__globalTransformMatrix=e;const r=ii(1,0,0,1,0,0);t.setGlobalTransform(...zr(r,e,this.transformMatrix))}}onPropertyChange(t,e,r){if(super.onPropertyChange(t,e,r),t==="zIndex"&&(this.canvas.style.zIndex=e),t==="transform"||t==="translate"||t==="rotate"||t==="scale"||t==="skew"){const n=this[pn];if(this[pn]=null,this.updateGlobalTransform(),n&&!this.layerTransformInvert){const i=this.renderer,o=i.__globalTransformMatrix||i.globalTransformMatrix;i.setGlobalTransform(...o)}}}_prepareRenderFinished(){this[Nt]&&(this[Nt]._requestID!=null&&oi(this[Nt]._requestID),this[Nt]._resolve(),delete this[Nt])}cancelPendingRender(){const t=!!this[Nt];return this._prepareRenderFinished(),t}render({clear:t=!0}={}){if(!this[$n])try{const e=this[Qr].length?this.getFBO():null;e&&this.renderer.glRenderer.bindFBO(e.target),t&&this[ms].clear();const r=this.draw();if(r&&r.length&&(this.renderer.drawMeshes(r),this.canvas.draw&&this.canvas.draw()),e){const n=this.renderer.glRenderer,i=this[Qr].length,{width:o,height:a}=this.getResolution(),c=[0,0,o/this.displayRatio,a/this.displayRatio];this[Qr].forEach((l,u)=>{l.blend=!0,l.setTexture(e.target.texture,{rect:c}),u===i-1?n.bindFBO(null):(e.swap(),n.bindFBO(e.target)),this[ms].clear(),this.renderer.drawMeshes([l])})}}finally{this._prepareRenderFinished()}}setResolution({width:t,height:e}){const r=this.renderer,n=r.__globalTransformMatrix||r.globalTransformMatrix,i=n[4],o=n[5],a=n[0],{width:c,height:l}=this.getResolution();(c!==t||l!==e)&&(super.setResolution({width:t,height:e}),this.canvas&&(this.canvas.width=t,this.canvas.height=e,r.updateResolution&&r.updateResolution()),this.attributes.size=[t,e],this[Qr].length&&this[Qr].forEach(f=>{const g=new ft.Figure2D;g.rect(0,0,t/this.displayRatio,e/this.displayRatio),f.contours=g.contours}));const[u,h]=this.renderOffset,d=this.displayRatio;(i!==u||o!==h||a!==d)&&(r.setGlobalTransform(d,0,0,d,u,h),r.__globalTransformMatrix=null,this[pn]=null,this.updateGlobalTransform(),this.forceUpdate())}tick(t=null,{duration:e=1/0,...r}={}){if(this[$n])return;const n=this.timeline.fork(r),i=this;this[Vn]=this[Vn]||[],this[Vn].push({handler:t,duration:e});const o=()=>{let a=null,c=null;const l=()=>{const u=this[Vn].map(({handler:h,duration:d})=>{const f=Math.min(1,n.currentTime/d);return{value:h?h(n.currentTime,f):null,p:f}});i[Ll]||(i[Ll]=Promise.resolve().then(()=>{if(delete i[Ll],!i[$n]){i[ps]&&i.render();for(let h=u.length-1;h>=0;h--){const{value:d,p:f}=u[h];(d===!1||f>=1)&&this[Vn].splice(h,1)}this[Vn].length>0&&o()}}))};if(this[Nt]&&this[Nt]._type!=="ticker"&&(oi(this[Nt]._requestID),delete this[Nt]),!this[Nt]){const u=new Promise(h=>{a=h,c=sn(l)});u._resolve=a,u._requestID=c,u._type="ticker",this[Nt]=u}};o()}toGlobalPos(t,e){if(this.layerTransformInvert){const c=this.transformMatrix;t=c[0]*t+c[2]*e+c[4],e=c[1]*t+c[3]*e+c[5]}const{width:r,height:n}=this.getResolution(),i=this.renderOffset,o=[this.canvas.clientWidth,this.canvas.clientHeight];t=t*o[0]/r+i[0],e=e*o[1]/n+i[1];const a=this.displayRatio;return t*=a,e*=a,[t,e]}toLocalPos(t,e){const{width:r,height:n}=this.getResolution(),i=this.renderOffset,o=[this.canvas.clientWidth,this.canvas.clientHeight];t=t*r/o[0]-i[0],e=e*n/o[1]-i[1];const a=this.displayRatio;t/=a,e/=a;const c=this.layerTransformInvert;return c&&(t=c[0]*t+c[2]*e+c[4],e=c[1]*t+c[3]*e+c[5]),[t,e]}};Ht.registerNode(ri,"layer");Ze(Array);const Lg=Symbol("inited");let Ds=null;typeof Worker=="function"&&(Ds=class extends Worker{constructor(s){if(s.worker===!0&&(s.worker=`./${s.id}.worker.js`),super(s.worker),this.options=s,!s.canvas){const{width:t,height:e}=this.getResolution(),r=ft.ENV.createCanvas(t,e,{offscreen:!1});r.style&&(r.style.position="absolute"),r.dataset&&(r.dataset.layerId=s.id),s.canvas=r}this.canvas=s.canvas}get id(){return this.options.id}setResolution({width:s,height:t}){if(this[Lg])this.postMessage({type:"resolution_change",width:s,height:t});else{this.canvas.width=s,this.canvas.height=t;const e=this.options,r=e.canvas.transferControlToOffscreen(),n={...e};delete n.container,n.canvas=r,this.postMessage({type:"create",options:n},[r]),this[Lg]=!0}}getResolution(){if(this.canvas){const{width:s,height:t}=this.canvas;return{width:s,height:t}}return{width:300,height:150}}remove(){return this.parent&&this.parent.removeChild?(this.parent.removeChild(this),!0):!1}connect(s,t){Object.defineProperty(this,"parent",{value:s,writable:!1,configurable:!0}),Object.defineProperty(this,"zOrder",{value:t,writable:!1,configurable:!0})}disconnect(){delete this.parent,delete this.zOrder}dispatchPointerEvent(s){this.postMessage({type:"event",event:{cancelBubble:s.cancelBubble,bubbles:s.bubbles,detail:s.detail,identifier:s.identifier,layerX:s.layerX,layerY:s.layerY,originalX:s.originalX,originalY:s.originalY,type:s.type,x:s.x,y:s.y}})}});Ze(Array);function Aoe(s,{offsetTop:t=0,offsetLeft:e=0,displayRatio:r=1}={}){let n,i;const o=[],{left:a,top:c,width:l,height:u}=s.target.getBoundingClientRect(),h=s.target.width,d=s.target.height,f=s.changedTouches||[s];for(let y=0;y<f.length;y++){const S=f[y],b=S.identifier,{clientX:C,clientY:N}=S;C!=null&&N!=null&&o.push({x:Math.round((C|0)-a),y:Math.round((N|0)-c),identifier:b})}o.length<=0&&o.push({x:n,y:i});const g=[];return o.forEach(y=>{y.x!=null&&y.y!=null&&(n=(y.x*h/l-e)/r,i=(y.y*d/u-t)/r);const S=new ai(s);Object.defineProperties(S,{layerX:{value:n,configurable:!0},layerY:{value:i,configurable:!0},originalX:{value:y.x},originalY:{value:y.y},x:{value:n,configurable:!0},y:{value:i,configurable:!0},identifier:{value:y.identifier}}),g.push(S)}),g}Ze(Array);const ya=Symbol("enteredTargets");function Ng(s){return s.id=s.id||`_layer${Math.random().toString(36).slice(2,12)}`,s.dataset||(s.dataset={}),s.dataset.layerId=s.id,s.connect=(t,e)=>{s.parent=t,Object.defineProperty(s,"zOrder",{value:e,writable:!1,configurable:!0})},s.disconnect=t=>{delete s.zOrder},s.canvas=s,s.getResolution=()=>({width:0,height:0}),s.setResolution=()=>!1,s.options={handleEvent:!1},s}function Og(s,t){const e=s.children;let r=null;for(let n=0;n<e.length;n++){const i=e[n];if((t===i||r!=null)&&(r=i),r&&r!==t&&!r.offscreen)return r.canvas}return null}function zg(s,t){const[e,r]=s.renderOffset,{width:n,height:i}=s.getResolution(),o=s.displayRatio;s.renderer.drawImage(t.canvas,-e/o,-r/o,n/o,i/o)}const Nl={};function Poe(s){const t=["mousedown","mouseup","mousemove","mousewheel","wheel","touchstart","touchend","touchmove","touchcancel","click","dblclick","longpress","tap","contextmenu"],e=s.container;e.addEventListener("mouseleave",r=>{const n=s[ya];if(n.size){const i=new ai("mouseleave");i.setOriginalEvent(r),[...n].forEach(o=>{o.dispatchEvent(i)}),s[ya].clear()}},{passive:!0}),t.forEach(r=>{e.addEventListener(r,n=>{const{left:i,top:o,displayRatio:a}=s.options,c=s.orderedChildren;Aoe(n,{offsetLeft:i,offsetTop:o,displayRatio:a}).forEach(u=>{const h=u.identifier;if(u.type==="touchmove"||u.type==="touchend"){const f=Nl[h];f&&f.dispatchEvent(u),u.type==="touchend"&&delete Nl[h]}else{for(let f=c.length-1;f>=0;f--){const g=c[f];if(g.options.handleEvent!==!1){if(g.dispatchPointerEvent(u)&&u.target!==g)break;u.cancelBubble=!1}}if(u.target===c[0])for(let f=c.length-1;f>=0;f--){const g=c[f];if(g.options.handleEvent!==!1){u.target=g;break}}}const d=u.target;if(u.type==="touchstart"&&(Nl[h]=u.target),u.type==="mousemove"){const f=s[ya];let g;if(d){const b=d.ancestors||[];g=new Set([d,...b])}else g=new Set;const y=Object.entries(n);if(!f.has(d)&&d){const b=new ai("mouseenter");b.setOriginalEvent(n),y.forEach(([N,T])=>{b[N]=T}),f.add(d),d.dispatchEvent(b);const C=d.ancestors;C&&C.forEach(N=>{N instanceof yc&&!f.has(N)&&(f.add(N),N.dispatchEvent(b))})}const S=new ai("mouseleave");S.setOriginalEvent(n),y.forEach(([b,C])=>{S[b]=C}),[...f].forEach(b=>{g.has(b)||(f.delete(b),b.dispatchEvent(S))})}})},{passive:r!=="contextmenu"})})}function Zo(s,t){if(t&&t.style){let{width:e,height:r,mode:n,container:i}=s;const{clientWidth:o,clientHeight:a}=i;e=e||o,r=r||a,n==="static"?(t.style.width=`${e}px`,t.style.height=`${r}px`):(t.style.top="0",t.style.left="0",t.style.width=`${o}px`,t.style.height=`${a}px`,t.style.transform="",t.style.webkitTransform="")}}const ys=Symbol("offscreenLayerCount");class bc extends dt{constructor(t={}){if(super(),!t.container)if(typeof ft.ENV.Container=="function")t.container=new ft.ENV.Container(t.width||300,t.height||150);else throw new Error("No container specified.");if(this.container=t.container,this.container.style&&(this.container.style.overflow||(this.container.style.overflow="hidden"),this.container.style.position||(this.container.style.position="relative")),this.options=t,t.displayRatio=t.displayRatio||1,t.mode=t.mode||"scale",t.left=0,t.top=0,t.autoResize=t.autoResize!==!1,t.autoResize){let e;if(typeof globalThis<"u"?e=globalThis:e=typeof window<"u"?window:global,e.addEventListener){const r=this;e.addEventListener("resize",function n(){typeof document<"u"&&document.contains(r.container)?r.resize():e.removeEventListener("resize",n)})}}this[ya]=new Set,this.setResolution(t),Poe(this),this[ys]=0}get hasOffscreenCanvas(){return this[ys]>0}set displayRatio(t){this.options.displayRatio!==t&&(this.options.displayRatio=t,this.resize())}get displayRatio(){return this.options.displayRatio}set height(t){this.options.height!==t&&(this.options.height=t,this.resize())}get height(){return this.options.height}set mode(t){this.options.mode!==t&&(this.options.mode=t,this.resize())}get mode(){return this.options.mode}set width(t){this.options.width!==t&&(this.options.width=t,this.resize())}get width(){return this.options.width}appendChild(t){!(t instanceof ri)&&!(t instanceof Ds)&&Ng(t);const e=super.appendChild(t),r=t.canvas;return t.offscreen?this[ys]++:this.container.appendChild(r),Zo(this.options,r),t.setResolution(this.getResolution()),e}forceUpdate(){this.hasOffscreenCanvas&&!this._requestID&&(this._requestID=sn(()=>{delete this._requestID,this.render()}))}insertBefore(t,e){!(t instanceof ri)&&!(t instanceof Ds)&&Ng(t);const r=super.insertBefore(t,e),n=t.canvas;if(!t.offscreen){const i=Og(this,t);this.container.insertBefore(n,i)}return Zo(this.options,n),t.setResolution(this.getResolution()),r}layer(t="default",e={}){e=Object.assign({},this.options,e),e.id=t;const r=this.orderedChildren;for(let o=0;o<r.length;o++)if(r[o].id===t)return r[o];const n=e.worker;let i;return n?i=new Ds(e):i=new ri(e),this.appendChild(i),i}async preload(...t){const e=[],r=[],n=[];for(let i=0;i<t.length;i++){const o=t[i];let a;if(typeof o=="string")a=Da(o);else if(Array.isArray(o))a=xoe(...o);else{const{id:c,src:l}=o;a=Da(l,c)}a instanceof Promise||(a=Promise.resolve(a)),r.push(a.then(c=>{e.push(c),n[i]=c;const l=new ai({type:"preload",detail:{current:c,loaded:e,resources:t}});this.dispatchEvent(l)}))}return await Promise.all(r),n}removeChild(t){const e=super.removeChild(t);if(e){t._prepareRenderFinished&&t._prepareRenderFinished();const r=t.canvas;r&&r.remove&&r.remove(),t.offscreen&&this[ys]--}return e}render(){const t=this.orderedChildren;let e=null;const r=[];for(let n=0;n<t.length;n++){const i=t[n],o=r.length>0;if(i instanceof ri&&!i.offscreen)if(!i.autoRender)o&&(console.warn("Some offscreen canvas will not be rendered."),r.length=0);else if(e=i,o){i.renderer.clear();for(let a=0;a<r.length;a++){const c=r[a];c.render(),zg(i,c)}r.length=0,i.render({clear:!1})}else i.prepareRender&&i.render();else i.offscreen?e?(i.prepareRender&&i.render(),zg(e,i)):r.push(i):i instanceof Ds&&o&&(console.warn("Some offscreen canvas will not be rendered."),r.length=0)}}replaceChild(t,e){const r=super.replaceChild(t,e);e.canvas.remove&&e.canvas.remove(),e.offscreen&&this[ys]--;const n=t.canvas;if(!t.offscreen){const i=Og(this,t);this.container.insertBefore(n,i)}return Zo(this.options,n),t.setResolution(this.getResolution()),r}resize(){const t=this.options;this.children.forEach(e=>{Zo(t,e.canvas)}),this.setResolution(t),this.dispatchEvent({type:"resize"})}setResolution({width:t,height:e}={}){const r=this.container,{clientWidth:n,clientHeight:i}=r;(t==null||e==null)&&(t=t??n,e=e??i);const{mode:o,displayRatio:a}=this.options;if(t*=a,e*=a,this.options.left=0,this.options.top=0,o==="stickyHeight"||o==="stickyLeft"||o==="stickyRight"){const c=t;t=n*e/i,o==="stickyHeight"&&(this.options.left=.5*(t-c)),o==="stickyRight"&&(this.options.left=t-c)}else if(o==="stickyWidth"||o==="stickyTop"||o==="stickyBottom"){const c=e;e=i*t/n,o==="stickyWidth"&&(this.options.top=.5*(e-c)),o==="stickyBottom"&&(this.options.top=e-c)}super.setResolution({width:t,height:e})}snapshot({offscreen:t=!1,layers:e}={}){const r=t?"snapshotOffScreenCanvas":"snapshotCanvas",{width:n,height:i}=this.getResolution();this[r]=this[r]||ft.ENV.createCanvas(n,i,{offscreen:t});const o=this[r].getContext("2d");e=e||this.orderedChildren,this[r].width=n,this[r].height=i;for(let a=0;a<e.length;a++){const c=e[a];if(!c.options.ignoreSnapshot){c.render&&c.render();const l=c.canvas;l&&l!==c&&o.drawImage(l,0,0,n,i)}}return this[r]}}typeof document<"u"&&(bc.prototype.layer3d=function(s,t={}){const e=t.url||"https://unpkg.com/sprite-extend-3d/dist/sprite-extend-3d.min.js";return new Promise((r,n)=>{const i=document.createElement("script");i.async=!1,i.src=e,i.onload=()=>{try{r(this.layer3d(s,t))}catch(o){n(o)}},document.documentElement.appendChild(i)})});Ht.registerNode(bc,"scene");var Pv={exports:{}};(function(s,t){(function(e,r){s.exports=r()})(St,function(){var e=function(){function E(P,k){var O=[],B=!0,D=!1,A=void 0;try{for(var L=P[Symbol.iterator](),U;!(B=(U=L.next()).done)&&(O.push(U.value),!(k&&O.length===k));B=!0);}catch(Y){D=!0,A=Y}finally{try{!B&&L.return&&L.return()}finally{if(D)throw A}}return O}return function(P,k){if(Array.isArray(P))return P;if(Symbol.iterator in Object(P))return E(P,k);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=Math.PI*2,n=function(P,k,O,B,D,A,L){var U=P.x,Y=P.y;U*=k,Y*=O;var q=B*U-D*Y,ie=D*U+B*Y;return{x:q+A,y:ie+L}},i=function(P,k){var O=1.3333333333333333*Math.tan(k/4),B=Math.cos(P),D=Math.sin(P),A=Math.cos(P+k),L=Math.sin(P+k);return[{x:B-D*O,y:D+B*O},{x:A+L*O,y:L-A*O},{x:A,y:L}]},o=function(P,k,O,B){var D=P*B-k*O<0?-1:1,A=Math.sqrt(P*P+k*k),L=Math.sqrt(P*P+k*k),U=P*O+k*B,Y=U/(A*L);return Y>1&&(Y=1),Y<-1&&(Y=-1),D*Math.acos(Y)},a=function(P,k,O,B,D,A,L,U,Y,q,ie,z){var V=Math.pow(D,2),Z=Math.pow(A,2),$=Math.pow(ie,2),ee=Math.pow(z,2),oe=V*Z-V*ee-Z*$;oe<0&&(oe=0),oe/=V*ee+Z*$,oe=Math.sqrt(oe)*(L===U?-1:1);var ce=oe*D/A*z,me=oe*-A/D*ie,pe=q*ce-Y*me+(P+O)/2,j=Y*ce+q*me+(k+B)/2,F=(ie-ce)/D,J=(z-me)/A,ae=(-ie-ce)/D,K=(-z-me)/A,te=o(1,0,F,J),w=o(F,J,ae,K);return U===0&&w>0&&(w-=r),U===1&&w<0&&(w+=r),[pe,j,te,w]},c=function(P){var k=P.px,O=P.py,B=P.cx,D=P.cy,A=P.rx,L=P.ry,U=P.xAxisRotation,Y=U===void 0?0:U,q=P.largeArcFlag,ie=q===void 0?0:q,z=P.sweepFlag,V=z===void 0?0:z,Z=[];if(A===0||L===0)return[];var $=Math.sin(Y*r/360),ee=Math.cos(Y*r/360),oe=ee*(k-B)/2+$*(O-D)/2,ce=-$*(k-B)/2+ee*(O-D)/2;if(oe===0&&ce===0)return[];A=Math.abs(A),L=Math.abs(L);var me=Math.pow(oe,2)/Math.pow(A,2)+Math.pow(ce,2)/Math.pow(L,2);me>1&&(A*=Math.sqrt(me),L*=Math.sqrt(me));var pe=a(k,O,B,D,A,L,ie,V,$,ee,oe,ce),j=e(pe,4),F=j[0],J=j[1],ae=j[2],K=j[3],te=Math.max(Math.ceil(Math.abs(K)/(r/4)),1);K/=te;for(var w=0;w<te;w++)Z.push(i(ae,K)),ae+=K;return Z.map(function(I){var W=n(I[0],A,L,ee,$,F,J),G=W.x,_=W.y,ne=n(I[1],A,L,ee,$,F,J),re=ne.x,X=ne.y,se=n(I[2],A,L,ee,$,F,J),ue=se.x,de=se.y;return{x1:G,y1:_,x2:re,y2:X,x:ue,y:de}})},l={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},u=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function h(E){var P=[];return E.replace(u,function(k,O,B){var D=O.toLowerCase();for(B=f(B),D=="m"&&B.length>2&&(P.push([O].concat(B.splice(0,2))),D="l",O=O=="m"?"l":"L");;){if(B.length==l[D])return B.unshift(O),P.push(B);if(B.length<l[D])throw new Error("malformed path data");P.push([O].concat(B.splice(0,l[D])))}}),P}var d=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function f(E){var P=E.match(d);return P?P.map(Number):[]}function g(E){var P=E[0][0],k=E[0][1],O=P,B=k;return E.forEach(function(D){var A=D[0],L=D[2],U=D[4],Y=D[6],q=D[1],ie=D[3],z=D[5],V=D[7];P=Math.min(P,A,L,U,Y),k=Math.min(k,q,ie,z,V),O=Math.max(O,A,L,U,Y),B=Math.max(B,q,ie,z,V)}),[P,k,O,B]}function y(E,P){return Math.sqrt(Math.pow(E[0]-P[0],2)+Math.pow(E[1]-P[1],2))+Math.sqrt(Math.pow(E[2]-P[2],2)+Math.pow(E[3]-P[3],2))}function S(E,P){var k=E[0],O=E[2],B=E[4],D=E[6],A=E[1],L=E[3],U=E[5],Y=E[7],q=P[0],ie=P[2],z=P[4],V=P[6],Z=P[1],$=P[3],ee=P[5],oe=P[7];return Math.sqrt(Math.pow(q-k,2)+Math.pow(Z-A,2))+Math.sqrt(Math.pow(ie-O,2)+Math.pow($-L,2))+Math.sqrt(Math.pow(z-B,2)+Math.pow(ee-U,2))+Math.sqrt(Math.pow(V-D,2)+Math.pow(oe-Y,2))}function b(E,P){var k=N(E.length),O=[];k.forEach(function(D){var A=0,L=0;D.forEach(function(U){A+=S(E[U],P[L++])}),O.push({index:D,distance:A})}),O.sort(function(D,A){return D.distance-A.distance});var B=[];return O[0].index.forEach(function(D){B.push(E[D])}),B}function C(E,P){var k=T(E.length),O=[];k.forEach(function(D){var A=0;D.forEach(function(L){A+=y(g(E[L]),g(P[L]))}),O.push({index:D,distance:A})}),O.sort(function(D,A){return D.distance-A.distance});var B=[];return O[0].index.forEach(function(D){B.push(E[D])}),B}function N(E){for(var P=[],k=0;k<E;k++){for(var O=[],B=0;B<E;B++){var D=B+k;D>E-1&&(D-=E),O[D]=B}P.push(O)}return P}function T(E){for(var P=[],k=0;k<E;k++)P.push(k);return p(P)}function p(E){var P=[],k=[];function O(B){var D,A;for(D=0;D<B.length;D++)A=B.splice(D,1)[0],k.push(A),B.length==0&&P.push(k.slice()),O(B),B.splice(D,0,A),k.pop();return P}return O(E)}var m={};m.parser=h,m.lerpCurve=function(E,P,k){return m.lerpPoints(E[0],E[1],P[0],P[1],k).concat(m.lerpPoints(E[2],E[3],P[2],P[3],k)).concat(m.lerpPoints(E[4],E[5],P[4],P[5],k)).concat(m.lerpPoints(E[6],E[7],P[6],P[7],k))},m.lerpPoints=function(E,P,k,O,B){return[E+(k-E)*B,P+(O-P)*B]},m.q2b=function(E,P,k,O,B,D){return[E,P,(E+2*k)/3,(P+2*O)/3,(B+2*k)/3,(D+2*O)/3,B,D]},m.path2shapes=function(E){for(var P=m.parser(E),k=0,O=0,B=0,D=P.length,A=[],L=null,U=void 0,Y=void 0,q=void 0,ie=void 0,z=void 0,V=void 0,Z=void 0;B<D;B++){var $=P[B],ee=$[0],oe=P[B-1];switch(ee){case"m":z=A.length,A[z]=[],L=A[z],k=k+$[1],O=O+$[2];break;case"M":z=A.length,A[z]=[],L=A[z],k=$[1],O=$[2];break;case"l":L.push([k,O,k,O,k,O,k+$[1],O+$[2]]),k+=$[1],O+=$[2];break;case"L":L.push([k,O,$[1],$[2],$[1],$[2],$[1],$[2]]),k=$[1],O=$[2];break;case"h":L.push([k,O,k,O,k,O,k+$[1],O]),k+=$[1];break;case"H":L.push([k,O,$[1],O,$[1],O,$[1],O]),k=$[1];break;case"v":L.push([k,O,k,O,k,O,k,O+$[1]]),O+=$[1];break;case"V":L.push([k,O,k,$[1],k,$[1],k,$[1]]),O=$[1];break;case"C":L.push([k,O,$[1],$[2],$[3],$[4],$[5],$[6]]),k=$[5],O=$[6];break;case"S":oe[0]==="C"||oe[0]==="c"?L.push([k,O,k+oe[5]-oe[3],O+oe[6]-oe[4],$[1],$[2],$[3],$[4]]):(oe[0]==="S"||oe[0]==="s")&&L.push([k,O,k+oe[3]-oe[1],O+oe[4]-oe[2],$[1],$[2],$[3],$[4]]),k=$[3],O=$[4];break;case"c":L.push([k,O,k+$[1],O+$[2],k+$[3],O+$[4],k+$[5],O+$[6]]),k=k+$[5],O=O+$[6];break;case"s":oe[0]==="C"||oe[0]==="c"?L.push([k,O,k+oe[5]-oe[3],O+oe[6]-oe[4],k+$[1],O+$[2],k+$[3],O+$[4]]):(oe[0]==="S"||oe[0]==="s")&&L.push([k,O,k+oe[3]-oe[1],O+oe[4]-oe[2],k+$[1],O+$[2],k+$[3],O+$[4]]),k=k+$[3],O=O+$[4];break;case"a":V=c({rx:$[1],ry:$[2],px:k,py:O,xAxisRotation:$[3],largeArcFlag:$[4],sweepFlag:$[5],cx:k+$[6],cy:O+$[7]}),Z=V[V.length-1],V.forEach(function(ce,me){me===0?L.push([k,O,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y]):L.push([V[me-1].x,V[me-1].y,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y])}),k=Z.x,O=Z.y;break;case"A":V=c({rx:$[1],ry:$[2],px:k,py:O,xAxisRotation:$[3],largeArcFlag:$[4],sweepFlag:$[5],cx:$[6],cy:$[7]}),Z=V[V.length-1],V.forEach(function(ce,me){me===0?L.push([k,O,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y]):L.push([V[me-1].x,V[me-1].y,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y])}),k=Z.x,O=Z.y;break;case"Q":L.push(m.q2b(k,O,$[1],$[2],$[3],$[4])),k=$[3],O=$[4];break;case"q":L.push(m.q2b(k,O,k+$[1],O+$[2],$[3]+k,$[4]+O)),k+=$[3],O+=$[4];break;case"T":oe[0]==="Q"||oe[0]==="q"?(q=k+oe[3]-oe[1],ie=O+oe[4]-oe[2],L.push(m.q2b(k,O,q,ie,$[1],$[2]))):(oe[0]==="T"||oe[0]==="t")&&(L.push(m.q2b(k,O,k+k-q,O+O-ie,$[1],$[2])),q=k+k-q,ie=O+O-ie),k=$[1],O=$[2];break;case"t":oe[0]==="Q"||oe[0]==="q"?(q=k+oe[3]-oe[1],ie=O+oe[4]-oe[2],L.push(m.q2b(k,O,q,ie,k+$[1],O+$[2]))):(oe[0]==="T"||oe[0]==="t")&&(L.push(m.q2b(k,O,k+k-q,O+O-ie,k+$[1],O+$[2])),q=k+k-q,ie=O+O-ie),k+=$[1],O+=$[2];break;case"Z":U=L[0][0],Y=L[0][1],L.push([k,O,U,Y,U,Y,U,Y]);break;case"z":U=L[0][0],Y=L[0][1],L.push([k,O,U,Y,U,Y,U,Y]);break}}return A},m._upCurves=function(E,P){for(var k=0,O=0,B=E.length;k<P;k++)E.push(E[O].slice(0)),O++,O>B-1&&(O-=B)};function v(E,P,k,O,B,D,A,L,U){return{left:M(E,P,k,O,B,D,A,L,U),right:M(A,L,B,D,k,O,E,P,1-U,!0)}}function M(E,P,k,O,B,D,A,L,U,Y){var q=(k-E)*U+E,ie=(O-P)*U+P,z=(B-k)*U+k,V=(D-O)*U+O,Z=(A-B)*U+B,$=(L-D)*U+D,ee=(z-q)*U+q,oe=(V-ie)*U+ie,ce=(Z-z)*U+z,me=($-V)*U+V,pe=(ce-ee)*U+ee,j=(me-oe)*U+oe;return Y?[pe,j,ee,oe,q,ie,E,P]:[E,P,q,ie,ee,oe,pe,j]}m._splitCurves=function(E,P){for(var k=0,O=0;k<P;k++){var B=E[O],D=v(B[0],B[1],B[2],B[3],B[4],B[5],B[6],B[7],.5);E.splice(O,1),E.splice(O,0,D.left,D.right),O+=2,O>=E.length-1&&(O=0)}};function R(E,P){for(var k=function(D){var A=E[E.length-1],L=[];A.forEach(function(U){L.push(U.slice(0))}),E.push(L)},O=0;O<P;O++)k()}return m.lerp=function(E,P,k){return m._lerp(m.path2shapes(E),m.path2shapes(P),k)},m.MIM_CURVES_COUNT=100,m._preprocessing=function(E,P){var k=E.length,O=P.length,B=JSON.parse(JSON.stringify(E)),D=JSON.parse(JSON.stringify(P));return k>O?R(D,k-O):k<O&&R(B,O-k),B=C(B,D),B.forEach(function(A,L){var U=A.length,Y=D[L].length;U>Y?U<m.MIM_CURVES_COUNT?(m._splitCurves(A,m.MIM_CURVES_COUNT-U),m._splitCurves(D[L],m.MIM_CURVES_COUNT-Y)):m._splitCurves(D[L],U-Y):U<Y&&(Y<m.MIM_CURVES_COUNT?(m._splitCurves(A,m.MIM_CURVES_COUNT-U),m._splitCurves(D[L],m.MIM_CURVES_COUNT-Y)):m._splitCurves(A,Y-U))}),B.forEach(function(A,L){B[L]=b(A,D[L])}),[B,D]},m._lerp=function(E,P,k){var O=[];return E.forEach(function(B,D){var A=[];B.forEach(function(L,U){A.push(m.lerpCurve(L,P[D][U],k))}),O.push(A)}),O},m.animate=function(E){var P=m.path2shapes(E.from),k=m.path2shapes(E.to),O=m._preprocessing(P,k),B=new Date,D=E.end||function(){},A=E.progress||function(){},L=E.begin||function(){},U=E.easing||function(V){return V},Y=null,q=null,ie=E.time;L(P);var z=function V(){var Z=new Date-B;if(Z>=ie){q=k,A(q,1),D(q),cancelAnimationFrame(Y);return}var $=U(Z/ie);q=m._lerp(O[0],O[1],$),A(q,$),Y=requestAnimationFrame(V)};z()},m})})(Pv);var Doe=Pv.exports;const Ko=un(Doe);Ze(Array);const Loe=Symbol.for("spritejs_setAttributeDefault"),Ot=Symbol.for("spritejs_setAttribute"),zt=Symbol.for("spritejs_getAttribute");let Ec=class extends hh{constructor(t){super(t),this[Loe]({d:"",normalize:!1,fillColor:void 0,fillRule:"nonzero",strokeColor:void 0,lineWidth:1,lineJoin:"miter",lineCap:"butt",roundSegments:20,lineDash:void 0,lineDashOffset:0,miterLimit:10,texture:void 0,textureRect:void 0,textureRepeat:!1,sourceRect:void 0,clipPath:void 0})}get d(){return this[zt]("d")}set d(t){this[Ot]("d",t)}get normalize(){return this[zt]("normalize")}set normalize(t){this[Ot]("normalize",!!t)}get fillColor(){return this[zt]("fillColor")}set fillColor(t){this[Ot]("fillColor",xn(t))}get fillRule(){return this[zt]("fillRule")}set fillRule(t){if(t!=null&&t!=="nonzero"&&t!=="evenodd")throw new TypeError("Invalid fill rule.");this[Ot]("fillRule",t)}get strokeColor(){return this[zt]("strokeColor")}set strokeColor(t){this[Ot]("strokeColor",xn(t))}get lineWidth(){return this[zt]("lineWidth")}set lineWidth(t){this[Ot]("lineWidth",qe(t))}get lineJoin(){return this[zt]("lineJoin")}set lineJoin(t){if(t!=null&&t!=="miter"&&t!=="bevel"&&t!=="round")throw new TypeError("Invalid lineJoin type.");this[Ot]("lineJoin",t)}get lineCap(){return this[zt]("lineCap")}set lineCap(t){if(t!=null&&t!=="butt"&&t!=="square"&&t!=="round")throw new TypeError("Invalid lineCap type.");this[Ot]("lineCap",t)}get lineDash(){return this[zt]("lineDash")}set lineDash(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t]),this[Ot]("lineDash",t?t.map(qe):null)}get lineDashOffset(){return this[zt]("lineDashOffset")}set lineDashOffset(t){this[Ot]("lineDashOffset",qe(t))}get miterLimit(){return this[zt]("miterLimit")}set miterLimit(t){this[Ot]("miterLimit",qe(t))}get roundSegments(){return this[zt]("roundSegments")}set roundSegments(t){this[Ot]("roundSegments",t)}get texture(){return this[zt]("texture")}set texture(t){this[Ot]("texture",t)}get textureRect(){return this[zt]("textureRect")}set textureRect(t){this[Ot]("textureRect",t)}get sourceRect(){return this[zt]("sourceRect")}set sourceRect(t){this[Ot]("sourceRect",t)}get textureRepeat(){return this[zt]("textureRepeat")}set textureRepeat(t){this[Ot]("textureRepeat",!!t)}get clipPath(){return this[zt]("clipPath")}set clipPath(t){this[Ot]("clipPath",t)}};Ze(Array);const qr=Symbol("mesh");class Yt extends yc{constructor(t={}){typeof t=="string"&&(t={d:t}),super(t),this.effects={d(e,r,n,i,o){const a=(n-i)/(o-i);if(a<=0)return e;if(a>=1)return r;const c=Ko._preprocessing(Ko.path2shapes(e),Ko.path2shapes(r)),l=Ko._lerp(...c,a)[0];return l.reduce((h,d)=>`${h}${d.slice(2).join(" ")} `,`M${l[0][0]} ${l[0][1]}C`).trim()}}}get isVisible(){return!!this.d}get mesh(){if(this.attributes.display==="none")return null;const t=this.path;if(t){let e=this[qr];if(e)e.path!==t&&(e.contours=t.contours,e.path=t);else{e=new ft.Mesh2D(this.path),e.path=t;const n=this.attributes.fillColor,i=this.attributes.fillRule;n&&Ra(e,{color:n,rule:i});const o=this.attributes.lineWidth,a=this.attributes.strokeColor;if(a&&o>0){const{lineCap:l,lineJoin:u,miterLimit:h,lineDash:d,lineDashOffset:f,roundSegments:g}=this.attributes;ka(e,{color:a,lineWidth:o,lineCap:l,lineJoin:u,miterLimit:h,lineDash:d,lineDashOffset:f,roundSegments:g})}this[qr]=e;const c=this.attributes.clipPath;c&&this[qr].setClipPath(c)}const r=this.opacity;return e.getOpacity()!==r&&e.setOpacity(r),e.setTransform(...this.renderMatrix),e}return null}get originalContentRect(){if(this.path){const t=this.path.boundingBox;return[t[0][0],t[0][1],t[1][0]-t[0][0],t[1][1]-t[0][1]]}return[0,0,0,0]}get originalClientRect(){if(this.mesh){const t=this.mesh.boundingBox;return[t[0][0],t[0][1],t[1][0]-t[0][0],t[1][1]-t[0][1]]}return[0,0,0,0]}get originalClientCenter(){return this.mesh?this.mesh.boundingCenter:[0,0]}set d(t){this.attributes.d=t}get d(){return this.attributes.d}draw(t=[]){super.draw(t);const e=this.mesh;return e&&Av(this,e),t}getBoundingClientRect(){let t=null;return this.mesh&&(t=this.mesh.boundingBox),Ny(t,this.renderMatrix)}getPathLength(){return this.mesh?this.mesh.getTotalLength():0}getPointAtLength(t){if(this.mesh){const e=this.mesh.getPointAtLength(t);if(e)return[e.x,e.y]}return[0,0]}onPropertyChange(t,e,r){if(super.onPropertyChange(t,e,r),(t==="d"||t==="normalize")&&this.updateContours(),this[qr]&&(t==="fillColor"||t==="fillRule")){const{fillColor:n,fillRule:i}=this.attributes;Ra(this[qr],{color:n,rule:i})}if(this[qr]&&(t==="strokeColor"||t==="lineWidth"||t==="lineCap"||t==="lineJoin"||t==="lineDash"||t==="lineDashOffset"||t==="roundSegments")){const{strokeColor:n,lineWidth:i}=this.attributes;if(n&&i>0){const{lineCap:o,lineJoin:a,lineDash:c,lineDashOffset:l,miterLimit:u,roundSegments:h}=this.attributes;ka(this[qr],{color:n,lineCap:o,lineJoin:a,lineWidth:i,lineDash:c,lineDashOffset:l,miterLimit:u,roundSegments:h})}}this[qr]&&t==="clipPath"&&this[qr].setClipPath(e),t==="texture"&&xv(this,e)}updateContours(){this.path=new ft.Figure2D,this.path.addPath(this.attributes.d),this.attributes.normalize&&this.path.normalize(...this.path.boundingCenter)}}x(Yt,"Attr",Ec);Ht.registerNode(Yt,"path");Ze(Array);function Noe(s,t=[0]){function e(i,o=.168,a=.168){let c,l,u,h;if((s[i].x===s[i+1].x||s[i].y===s[i+1].y)&&(o=0,a=0),i<1?(c=s[0].x+(s[1].x-s[0].x)*o,l=s[0].y+(s[1].y-s[0].y)*o):(c=s[i].x+(s[i+1].x-s[i-1].x)*o,l=s[i].y+(s[i+1].y-s[i-1].y)*o),i>s.length-3){const d=s.length-1;u=s[d].x-(s[d].x-s[d-1].x)*a,h=s[d].y-(s[d].y-s[d-1].y)*a}else u=s[i+1].x-(s[i+2].x-s[i].x)*a,h=s[i+1].y-(s[i+2].y-s[i].y)*a;return[{x:c,y:l},{x:u,y:h}]}s=s.map(([i,o])=>({x:i,y:o}));let r="",n=0;return s.forEach((i,o)=>{if(o===0)r+=`M${i.x} ${i.y}`;else{for(;o>t[n];)n++;if(n%2){const[a,c]=e(o-1);r+=`C${[a.x,a.y,c.x,c.y,i.x,i.y].join(" ")}`}else r+=`L${i.x} ${i.y}`}}),r}Ze(Array);const Ooe=Symbol.for("spritejs_setAttributeDefault"),mn=Symbol.for("spritejs_setAttribute"),vs=Symbol.for("spritejs_getAttribute"),zoe=Symbol.for("spritejs_declareAlias");function Xo(s){const{points:t,smooth:e,smoothRange:r,close:n}=s,i=[];for(let a=0;a<t.length;a+=2)i.push([t[a],t[a+1]]);let o="";return e?o=Noe(i,r):i.length&&(o=`M${i.map(a=>a.join(" ")).join("L")}`),o&&n&&(o+="Z"),o}let Boe=class extends Ec{constructor(t){super(t),this[Ooe]({points:[],smooth:!1,smoothRange:[0],closeType:"none"}),this[zoe]("close")}get d(){return this[vs]("d")}set d(t){}get close(){return this.closeType!=="none"}set close(t){t=t?"normal":"none",this.closeType=t}get closeType(){return this[vs]("closeType")}set closeType(t){if(t!=null&&t!=="none"&&t!=="normal")throw new TypeError("Invalid closeType type.");if(this[mn]("closeType",t)){const e=Xo(this);this[mn]("d",e)}}get smooth(){return this[vs]("smooth")}set smooth(t){if(this[mn]("smooth",t)){const e=Xo(this);this[mn]("d",e)}}get smoothRange(){return this[vs]("smoothRange")}set smoothRange(t){if(t&&!Array.isArray(t)&&(t=[t]),this[mn]("smoothRange",t)&&this.smooth){const e=Xo(this);this[mn]("d",e)}}get points(){return this[vs]("points")}set points(t){if(t=Mt(t),Array.isArray(t)&&(t=t.reduce((e,r)=>Array.isArray(r)?[...e,...r.map(n=>qe(n))]:[...e,qe(r)],[])),this[mn]("points",t)){const e=Xo(this);this[mn]("d",e)}}};Ze(Array);class br extends Yt{get isVisible(){const{points:t}=this.attributes;return t.length>0&&super.isVisible}}x(br,"Attr",Boe);Ht.registerNode(br,"polyline");Ze(Array);const joe=Symbol.for("spritejs_setAttributeDefault"),Jo=Symbol.for("spritejs_setAttribute"),Ol=Symbol.for("spritejs_getAttribute"),Foe=Symbol.for("spritejs_declareAlias");function Bg(s){const{width:t,height:e}=s;return`M0 0L${t} 0L${t} ${e}L0 ${e}Z`}let Uoe=class extends Ec{constructor(t){super(t),this[joe]({width:0,height:0}),this[Foe]("size")}get d(){return this[Ol]("d")}set d(t){}get width(){return this[Ol]("width")}set width(t){if(t=qe(t),this[Jo]("width",t)){const e=Bg(this);this[Jo]("d",e)}}get height(){return this[Ol]("height")}set height(t){if(t=qe(t),this[Jo]("height",t)){const e=Bg(this);this[Jo]("d",e)}}get size(){return[this.width,this.height]}set size(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.width=t[0],this.height=t[1]}};Ze(Array);class Qs extends Yt{get isVisible(){const{width:t,height:e}=this.attributes;return t>0&&e>0&&super.isVisible}}x(Qs,"Attr",Uoe);Ht.registerNode(Qs,"rect");Ze(Array);const Woe=Symbol.for("spritejs_setAttributeDefault"),mr=Symbol.for("spritejs_setAttribute"),Yn=Symbol.for("spritejs_getAttribute"),Voe=Symbol.for("spritejs_declareAlias");function Ms(s){const{radiusX:t,radiusY:e,startAngle:r,endAngle:n,direction:i,closeType:o}=s,a=i==="anitclockwise",c=new ft.Figure2D;return o==="sector"&&c.moveTo(0,0),c.ellipse(0,0,t,e,0,Math.PI*r/180,Math.PI*n/180,a),o!=="none"&&c.closePath(),c.path.reduce((h,d)=>h+d.join(" "),"")}let $oe=class extends Ec{constructor(t){super(t),this[Woe]({radiusX:0,radiusY:0,startAngle:0,endAngle:360,direction:"clockwise",closeType:"none"}),this[Voe]("radius","angle")}get d(){return this[Yn]("d")}set d(t){}get radiusX(){return this[Yn]("radiusX")}set radiusX(t){if(t=qe(t),this[mr]("radiusX",t)){const e=Ms(this);this[mr]("d",e)}}get radiusY(){return this[Yn]("radiusY")}set radiusY(t){if(t=qe(t),this[mr]("radiusY",t)){const e=Ms(this);this[mr]("d",e)}}get radius(){return[this.radiusX,this.radiusY]}set radius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this.radiusX=t[0],this.radiusY=t[1]}get angle(){return[this.startAngle,this.endAngle]}set angle(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.startAngle=t[0],this.endAngle=t[1]}get direction(){return this[Yn]("direction")}set direction(t){if(t!=null&&t!=="clockwise"&&t!=="anticlockwise")throw new TypeError("Invalid direction type.");this[mr]("direction",t)}get startAngle(){return this[Yn]("startAngle")}set startAngle(t){if(t=qe(t),this[mr]("startAngle",t)){const e=Ms(this);this[mr]("d",e)}}get endAngle(){return this[Yn]("endAngle")}set endAngle(t){if(t=qe(t),this[mr]("endAngle",t)){const e=Ms(this);this[mr]("d",e)}}get closeType(){return this[Yn]("closeType")}set closeType(t){if(t!=null&&t!=="none"&&t!=="sector"&&t!=="normal")throw new TypeError("Invalid closeType type.");if(this[mr]("closeType",t)){const e=Ms(this);this[mr]("d",e)}}};Ze(Array);class Jh extends Yt{get isVisible(){const{radiusX:t,radiusY:e,startAngle:r,endAngle:n}=this.attributes;return t>0&&e>0&&r!==n&&super.isVisible}}x(Jh,"Attr",$oe);Ht.registerNode(Jh,"ellipse");Ze(Array);const Yoe=Symbol.for("spritejs_setAttributeDefault"),_o=Symbol.for("spritejs_setAttribute"),ea=Symbol.for("spritejs_getAttribute");let Goe=class extends vc{constructor(t){super(t),this[Yoe]({texture:void 0,textureRect:void 0,textureRepeat:!1,sourceRect:void 0})}get texture(){return this[ea]("texture")}set texture(t){this[_o]("texture",t)}get textureRect(){return this[ea]("textureRect")}set textureRect(t){this[_o]("textureRect",t)}get sourceRect(){return this[ea]("sourceRect")}set sourceRect(t){this[_o]("sourceRect",t)}get textureRepeat(){return this[ea]("textureRepeat")}set textureRepeat(t){this[_o]("textureRepeat",!!t)}};Ze(Array);const jg=Symbol("textureTask");class xc extends ho{constructor(t={}){typeof t=="string"&&(t={texture:t}),super(t)}get contentSize(){let[t,e]=super.contentSize;const{width:r,height:n}=this.attributes;if(r==null||n==null){const i=this.textureImage,o=this.attributes.textureRect,a=this.attributes.sourceRect;if(o)r==null&&(t=o[0]+o[2]),n==null&&(e=o[1]+o[3]);else if(a){const c=this.layer?this.layer.displayRatio:1;r==null&&(t=a[2]/c),n==null&&(e=a[3]/c)}else if(i){const c=this.layer?this.layer.displayRatio:1;r==null&&(t=i.width/c),n==null&&(e=i.height/c)}}return[t,e]}get textureImageReady(){return this[jg]||Promise.resolve()}draw(t=[]){super.draw(t);const e=this.mesh;return e&&Av(this,e),t}onPropertyChange(t,e,r){if(super.onPropertyChange(t,e,r),t==="texture"&&(this[jg]=xv(this,e,!0)),t==="textureRect"){const{width:n,height:i}=this.attributes;(n==null||i==null)&&this.updateContours()}}}x(xc,"Attr",Goe);Ht.registerNode(xc,"sprite");Ze(Array);const Hoe=Symbol.for("spritejs_setAttributeDefault"),rr=Symbol.for("spritejs_setAttribute"),nr=Symbol.for("spritejs_getAttribute"),Qoe=Symbol.for("spritejs_declareAlias");let qoe=class extends vc{constructor(t){super(t),this[Hoe]({text:"",fontSize:16,fontFamily:"Helvetica,Arial,sans-serif",fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",fontStretch:"normal",lineHeight:"",textAlign:"left",strokeColor:void 0,strokeWidth:1,fillColor:void 0,verticalAlign:"middle"}),this[Qoe]("font")}get text(){return this[nr]("text")||" "}set text(t){this[rr]("text",t)}get fontSize(){return this[nr]("fontSize")}set fontSize(t){this[rr]("fontSize",qe(t))}get fontFamily(){return this[nr]("fontFamily")}set fontFamily(t){this[rr]("fontFamily",t)}get fontStyle(){return this[nr]("fontStyle")}set fontStyle(t){this[rr]("fontStyle",t)}get fontVariant(){return this[nr]("fontVariant")}set fontVariant(t){this[rr]("fontVariant",t)}get fontWeight(){return this[nr]("fontWeight")}set fontWeight(t){this[rr]("fontWeight",t)}get fontStretch(){return this[nr]("fontStretch")}set fontStretch(t){this[rr]("fontStretch",t)}get lineHeight(){return this[nr]("lineHeight")||this.fontSize}set lineHeight(t){this[rr]("lineHeight",qe(t))}get textAlign(){return this[nr]("textAlign")}set textAlign(t){this[rr]("textAlign",t)}get strokeColor(){return this[nr]("strokeColor")}set strokeColor(t){this[rr]("strokeColor",xn(t))}get strokeWidth(){return this[nr]("strokeWidth")}set strokeWidth(t){this[rr]("strokeWidth",qe(t))}get verticalAlign(){return this[nr]("verticalAlign")}set verticalAlign(t){this[rr]("verticalAlign",t)}get fillColor(){return this[nr]("fillColor")}set fillColor(t){this[rr]("fillColor",xn(t))}get font(){const{fontStyle:t,fontVariant:e,fontWeight:r,fontStretch:n,fontSize:i,lineHeight:o,fontFamily:a}=this;return`${t} ${e} ${r} ${n} ${i}px/${o}px ${a}`}set font(t){if(t==null)this.fontStyle=null,this.fontVariant=null,this.fontWeight=null,this.fontStretch=null,this.fontSize=null,this.lineHeight=null,this.fontFamily=null;else{const e=ft.parseFont(t);this.fontStyle=e.style,this.fontVariant=e.variant,this.fontWeight=e.weight,this.fontStretch=e.stretch,this.fontSize=qe(`${e.size}${e.unit}`),e.lineHeight&&(this.lineHeight=e.pxLineHeight),this.fontFamily=e.family}}};Ze(Array);const ki=Symbol("textImage"),ta=Symbol("textImageTask"),zl=Symbol("textureContext"),ws=Symbol("updateTextureRect"),Bl=Symbol("textCanvas");class _h extends ho{constructor(t={}){typeof t=="string"&&(t={text:t}),super(t)}get contentSize(){let[t,e]=super.contentSize;const{width:r,height:n}=this.attributes;if(r==null||n==null){const i=this[ki];i&&(r==null&&(t=i.rect[2]),n==null&&(e=i.rect[3]))}return[t,e]}get text(){return this.attributes.text}set text(t){this.attributes.text=t}get textContent(){return this.attributes.text}set textContent(t){this.attributes.text=t}get textImage(){return this[ki]||{}}get textImageReady(){return this[ta]||Promise.resolve()}draw(t){super.draw(t);const e=this.mesh;if(e){const r=this[ki];if(r){let n=e.texture;if(!n||this[zl]&&this[zl]!==this.renderer||r.needsUpdate?(r.needsUpdate=!1,kv(r.image,this.renderer),n=Rv(r.image,this.renderer),this[ws]=!0):n=e.uniforms.u_texSampler,this[ws]){const[i,o]=r.rect.slice(2),[a,c]=this.contentSize,l=this.attributes.textAlign,u=this.attributes.verticalAlign;let h=0;l==="center"?h=(a-i)/2:(l==="right"||l==="end")&&(h=a-i);const d=this.attributes.fontSize,f=this.attributes.lineHeight;let g=0;u==="top"?g=(d-f)/2:u==="bottom"&&(g=(f-d)/2);const{paddingLeft:y,paddingTop:S}=this.attributes,{borderWidth:b}=this.attributes;h+=y+b,g+=S+b;const{anchorX:C,anchorY:N}=this.attributes;h-=this.offsetSize[0]*C,g-=this.offsetSize[1]*N,e.setTexture(n,{rect:[h,g,i,o]}),this[ws]=!1,this[zl]=this.renderer}}}return t}onPropertyChange(t,e,r){t==="text"||t==="fontSize"||t==="fontFamily"||t==="fontStyle"||t==="fontVariant"||t==="fontWeight"||t==="fontStretch"||t==="lineHeight"||t==="strokeColor"||t==="fillColor"||t==="strokeWidth"?this.updateText():((t==="textAlign"||t==="verticalAlign")&&(this[ws]=!0),super.onPropertyChange(t,e,r))}updateContours(){super.updateContours(),this[ws]=!0}updateText(){this[ta]||(this[ta]=Promise.resolve().then(()=>{this[ta]=null;const{text:t,font:e,fillColor:r,strokeColor:n,strokeWidth:i}=this.attributes,o=this.layer?this.layer.displayRatio:1;return this[Bl]=this[Bl]||ft.ENV.createCanvas(1,1),this[ki]=ft.ENV.createText(t,{font:e,fillColor:r,strokeColor:n,strokeWidth:i,parseFont:ft.parseFont,ratio:o,textCanvas:this[Bl]}),this[ki].needsUpdate=!0,this.updateContours(),this.forceUpdate(),this[ki]}))}}x(_h,"Attr",qoe);Ht.registerNode(_h,"label");Ze(Array);function Zoe(s,t){if(!s)return t&&[...t];if(!t)return s;const e=Math.min(s[0],t[0]),r=Math.min(s[1],t[1]);return[e,r,Math.max(s[0]+s[2],t[0]+t[2])-e,Math.max(s[1]+s[3],t[1]+t[3])-r]}class Koe{constructor(t,{rect:e,revision:r=0,singleChannelTexture:n=!0,textureSubImage2D:i=!0}={}){if(!t||!e||e.length!==4)throw new TypeError("MaskHandle requires a source and [x, y, width, height] rect.");this.source=t,this.rect=[...e],this.revision=r,this.textureSubImage2D=i,this.singleChannelTexture=n,this._textures=new Map,this._dirtyRect=null,this._stagingCanvas=null}update({rect:t,dirtyRect:e}={}){return t&&(this.rect=[...t]),this._dirtyRect=Zoe(this._dirtyRect,e),this.revision++,this}getTexture(t){if(!t||!t.glRenderer)return null;let e=this._textures.get(t);return e?e.revision!==this.revision&&(this._upload(t.glRenderer.gl,e,this._dirtyRect),e.revision=this.revision):(e={revision:this.revision,...this._createTexture(t)},this._textures.set(t,e)),[...this._textures.values()].every(r=>r.revision===this.revision)&&(this._dirtyRect=null),e.texture}destroy(t){if(t){const e=this._textures.get(t);e&&(t.deleteTexture(e.texture),this._textures.delete(t));return}this._textures.forEach((e,r)=>{r.deleteTexture(e.texture)}),this._textures.clear()}_createTexture(t){const e=t.glRenderer.gl;if(!(this.singleChannelTexture&&t.isWebGL2&&e.R8!=null))return{texture:t.createTexture(this.source),singleChannel:!1};const n=e.createTexture();try{if(e.bindTexture(e.TEXTURE_2D,n),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.R8,e.RED,e.UNSIGNED_BYTE,this.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.getError()!==e.NO_ERROR)throw new Error("R8 texture upload failed.");return n._img=this.source,n.delete=()=>e.deleteTexture(n),{texture:n,singleChannel:!0}}catch{return e.deleteTexture(n),this.singleChannelTexture=!1,{texture:t.createTexture(this.source),singleChannel:!1}}finally{e.bindTexture(e.TEXTURE_2D,null)}}_upload(t,e,r){const{texture:n,singleChannel:i}=e,o=t.getParameter(t.ACTIVE_TEXTURE),a=t.getParameter(t.TEXTURE_BINDING_2D),c=t.getParameter(t.UNPACK_FLIP_Y_WEBGL);t.bindTexture(t.TEXTURE_2D,n),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!0),this._uploadDirtyRect(t,r,i)||(i?t.texImage2D(t.TEXTURE_2D,0,t.R8,t.RED,t.UNSIGNED_BYTE,this.source):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,this.source)),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,c),t.bindTexture(t.TEXTURE_2D,a),t.activeTexture(o)}_uploadDirtyRect(t,e,r){if(!this.textureSubImage2D||!e)return!1;const[n,i,o,a]=this.rect,c=Math.max(0,Math.floor((e[0]-n)/o*this.source.width)),l=Math.max(0,Math.floor((e[1]-i)/a*this.source.height)),u=Math.min(this.source.width,Math.ceil((e[0]+e[2]-n)/o*this.source.width)),h=Math.min(this.source.height,Math.ceil((e[1]+e[3]-i)/a*this.source.height)),d=u-c,f=h-l;if(d<=0||f<=0)return!0;let g=this._stagingCanvas;(!g||g.width!==d||g.height!==f)&&(g=ft.ENV.createCanvas(d,f,{offscreen:!0}),this._stagingCanvas=g);const y=g&&g.getContext("2d");if(!y)return!1;y.clearRect(0,0,d,f),y.drawImage(this.source,c,l,d,f,0,0,d,f);try{return t.texSubImage2D(t.TEXTURE_2D,0,c,this.source.height-h,r?t.RED:t.RGBA,t.UNSIGNED_BYTE,g),!0}catch{return this.textureSubImage2D=!1,!1}}}Ze(Array);Ze(Array);var Xoe=typeof St=="object"&&St&&St.Object===Object&&St,Dv=Xoe,Joe=Dv,_oe=typeof self=="object"&&self&&self.Object===Object&&self,eae=Joe||_oe||Function("return this")(),xr=eae,tae=xr,rae=tae.Symbol,mo=rae,Fg=mo,Lv=Object.prototype,nae=Lv.hasOwnProperty,iae=Lv.toString,Ss=Fg?Fg.toStringTag:void 0;function sae(s){var t=nae.call(s,Ss),e=s[Ss];try{s[Ss]=void 0;var r=!0}catch{}var n=iae.call(s);return r&&(t?s[Ss]=e:delete s[Ss]),n}var oae=sae,aae=Object.prototype,cae=aae.toString;function lae(s){return cae.call(s)}var uae=lae,Ug=mo,hae=oae,dae=uae,fae="[object Null]",gae="[object Undefined]",Wg=Ug?Ug.toStringTag:void 0;function pae(s){return s==null?s===void 0?gae:fae:Wg&&Wg in Object(s)?hae(s):dae(s)}var wi=pae;function mae(s){return s!=null&&typeof s=="object"}var jr=mae,yae=wi,vae=jr,Mae="[object Number]";function wae(s){return typeof s=="number"||vae(s)&&yae(s)==Mae}var Sae=wae;const gt=un(Sae);function Tae(){this.__data__=[],this.size=0}var Cae=Tae;function Iae(s,t){return s===t||s!==s&&t!==t}var ed=Iae,bae=ed;function Eae(s,t){for(var e=s.length;e--;)if(bae(s[e][0],t))return e;return-1}var Rc=Eae,xae=Rc,Rae=Array.prototype,kae=Rae.splice;function Aae(s){var t=this.__data__,e=xae(t,s);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():kae.call(t,e,1),--this.size,!0}var Pae=Aae,Dae=Rc;function Lae(s){var t=this.__data__,e=Dae(t,s);return e<0?void 0:t[e][1]}var Nae=Lae,Oae=Rc;function zae(s){return Oae(this.__data__,s)>-1}var Bae=zae,jae=Rc;function Fae(s,t){var e=this.__data__,r=jae(e,s);return r<0?(++this.size,e.push([s,t])):e[r][1]=t,this}var Uae=Fae,Wae=Cae,Vae=Pae,$ae=Nae,Yae=Bae,Gae=Uae;function ns(s){var t=-1,e=s==null?0:s.length;for(this.clear();++t<e;){var r=s[t];this.set(r[0],r[1])}}ns.prototype.clear=Wae;ns.prototype.delete=Vae;ns.prototype.get=$ae;ns.prototype.has=Yae;ns.prototype.set=Gae;var kc=ns,Hae=kc;function Qae(){this.__data__=new Hae,this.size=0}var qae=Qae;function Zae(s){var t=this.__data__,e=t.delete(s);return this.size=t.size,e}var Kae=Zae;function Xae(s){return this.__data__.get(s)}var Jae=Xae;function _ae(s){return this.__data__.has(s)}var ece=_ae;function tce(s){var t=typeof s;return s!=null&&(t=="object"||t=="function")}var On=tce,rce=wi,nce=On,ice="[object AsyncFunction]",sce="[object Function]",oce="[object GeneratorFunction]",ace="[object Proxy]";function cce(s){if(!nce(s))return!1;var t=rce(s);return t==sce||t==oce||t==ice||t==ace}var Nv=cce,lce=xr,uce=lce["__core-js_shared__"],hce=uce,jl=hce,Vg=function(){var s=/[^.]+$/.exec(jl&&jl.keys&&jl.keys.IE_PROTO||"");return s?"Symbol(src)_1."+s:""}();function dce(s){return!!Vg&&Vg in s}var fce=dce,gce=Function.prototype,pce=gce.toString;function mce(s){if(s!=null){try{return pce.call(s)}catch{}try{return s+""}catch{}}return""}var Ov=mce,yce=Nv,vce=fce,Mce=On,wce=Ov,Sce=/[\\^$.*+?()[\]{}|]/g,Tce=/^\[object .+?Constructor\]$/,Cce=Function.prototype,Ice=Object.prototype,bce=Cce.toString,Ece=Ice.hasOwnProperty,xce=RegExp("^"+bce.call(Ece).replace(Sce,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Rce(s){if(!Mce(s)||vce(s))return!1;var t=yce(s)?xce:Tce;return t.test(wce(s))}var kce=Rce;function Ace(s,t){return s==null?void 0:s[t]}var Pce=Ace,Dce=kce,Lce=Pce;function Nce(s,t){var e=Lce(s,t);return Dce(e)?e:void 0}var Si=Nce,Oce=Si,zce=xr,Bce=Oce(zce,"Map"),td=Bce,jce=Si,Fce=jce(Object,"create"),Ac=Fce,$g=Ac;function Uce(){this.__data__=$g?$g(null):{},this.size=0}var Wce=Uce;function Vce(s){var t=this.has(s)&&delete this.__data__[s];return this.size-=t?1:0,t}var $ce=Vce,Yce=Ac,Gce="__lodash_hash_undefined__",Hce=Object.prototype,Qce=Hce.hasOwnProperty;function qce(s){var t=this.__data__;if(Yce){var e=t[s];return e===Gce?void 0:e}return Qce.call(t,s)?t[s]:void 0}var Zce=qce,Kce=Ac,Xce=Object.prototype,Jce=Xce.hasOwnProperty;function _ce(s){var t=this.__data__;return Kce?t[s]!==void 0:Jce.call(t,s)}var ele=_ce,tle=Ac,rle="__lodash_hash_undefined__";function nle(s,t){var e=this.__data__;return this.size+=this.has(s)?0:1,e[s]=tle&&t===void 0?rle:t,this}var ile=nle,sle=Wce,ole=$ce,ale=Zce,cle=ele,lle=ile;function is(s){var t=-1,e=s==null?0:s.length;for(this.clear();++t<e;){var r=s[t];this.set(r[0],r[1])}}is.prototype.clear=sle;is.prototype.delete=ole;is.prototype.get=ale;is.prototype.has=cle;is.prototype.set=lle;var ule=is,Yg=ule,hle=kc,dle=td;function fle(){this.size=0,this.__data__={hash:new Yg,map:new(dle||hle),string:new Yg}}var gle=fle;function ple(s){var t=typeof s;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?s!=="__proto__":s===null}var mle=ple,yle=mle;function vle(s,t){var e=s.__data__;return yle(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Pc=vle,Mle=Pc;function wle(s){var t=Mle(this,s).delete(s);return this.size-=t?1:0,t}var Sle=wle,Tle=Pc;function Cle(s){return Tle(this,s).get(s)}var Ile=Cle,ble=Pc;function Ele(s){return ble(this,s).has(s)}var xle=Ele,Rle=Pc;function kle(s,t){var e=Rle(this,s),r=e.size;return e.set(s,t),this.size+=e.size==r?0:1,this}var Ale=kle,Ple=gle,Dle=Sle,Lle=Ile,Nle=xle,Ole=Ale;function ss(s){var t=-1,e=s==null?0:s.length;for(this.clear();++t<e;){var r=s[t];this.set(r[0],r[1])}}ss.prototype.clear=Ple;ss.prototype.delete=Dle;ss.prototype.get=Lle;ss.prototype.has=Nle;ss.prototype.set=Ole;var zv=ss,zle=kc,Ble=td,jle=zv,Fle=200;function Ule(s,t){var e=this.__data__;if(e instanceof zle){var r=e.__data__;if(!Ble||r.length<Fle-1)return r.push([s,t]),this.size=++e.size,this;e=this.__data__=new jle(r)}return e.set(s,t),this.size=e.size,this}var Wle=Ule,Vle=kc,$le=qae,Yle=Kae,Gle=Jae,Hle=ece,Qle=Wle;function os(s){var t=this.__data__=new Vle(s);this.size=t.size}os.prototype.clear=$le;os.prototype.delete=Yle;os.prototype.get=Gle;os.prototype.has=Hle;os.prototype.set=Qle;var Bv=os;function qle(s,t){for(var e=-1,r=s==null?0:s.length;++e<r&&t(s[e],e,s)!==!1;);return s}var Zle=qle,Kle=Si,Xle=function(){try{var s=Kle(Object,"defineProperty");return s({},"",{}),s}catch{}}(),jv=Xle,Gg=jv;function Jle(s,t,e){t=="__proto__"&&Gg?Gg(s,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):s[t]=e}var Fv=Jle,_le=Fv,eue=ed,tue=Object.prototype,rue=tue.hasOwnProperty;function nue(s,t,e){var r=s[t];(!(rue.call(s,t)&&eue(r,e))||e===void 0&&!(t in s))&&_le(s,t,e)}var Uv=nue,iue=Uv,sue=Fv;function oue(s,t,e,r){var n=!e;e||(e={});for(var i=-1,o=t.length;++i<o;){var a=t[i],c=r?r(e[a],s[a],a,e,s):void 0;c===void 0&&(c=s[a]),n?sue(e,a,c):iue(e,a,c)}return e}var Dc=oue;function aue(s,t){for(var e=-1,r=Array(s);++e<s;)r[e]=t(e);return r}var cue=aue,lue=wi,uue=jr,hue="[object Arguments]";function due(s){return uue(s)&&lue(s)==hue}var fue=due,Hg=fue,gue=jr,Wv=Object.prototype,pue=Wv.hasOwnProperty,mue=Wv.propertyIsEnumerable,yue=Hg(function(){return arguments}())?Hg:function(s){return gue(s)&&pue.call(s,"callee")&&!mue.call(s,"callee")},Vv=yue,vue=Array.isArray,yo=vue,La={exports:{}};function Mue(){return!1}var wue=Mue;La.exports;(function(s,t){var e=xr,r=wue,n=t&&!t.nodeType&&t,i=n&&!0&&s&&!s.nodeType&&s,o=i&&i.exports===n,a=o?e.Buffer:void 0,c=a?a.isBuffer:void 0,l=c||r;s.exports=l})(La,La.exports);var rd=La.exports,Sue=9007199254740991,Tue=/^(?:0|[1-9]\d*)$/;function Cue(s,t){var e=typeof s;return t=t??Sue,!!t&&(e=="number"||e!="symbol"&&Tue.test(s))&&s>-1&&s%1==0&&s<t}var Iue=Cue,bue=9007199254740991;function Eue(s){return typeof s=="number"&&s>-1&&s%1==0&&s<=bue}var $v=Eue,xue=wi,Rue=$v,kue=jr,Aue="[object Arguments]",Pue="[object Array]",Due="[object Boolean]",Lue="[object Date]",Nue="[object Error]",Oue="[object Function]",zue="[object Map]",Bue="[object Number]",jue="[object Object]",Fue="[object RegExp]",Uue="[object Set]",Wue="[object String]",Vue="[object WeakMap]",$ue="[object ArrayBuffer]",Yue="[object DataView]",Gue="[object Float32Array]",Hue="[object Float64Array]",Que="[object Int8Array]",que="[object Int16Array]",Zue="[object Int32Array]",Kue="[object Uint8Array]",Xue="[object Uint8ClampedArray]",Jue="[object Uint16Array]",_ue="[object Uint32Array]",ct={};ct[Gue]=ct[Hue]=ct[Que]=ct[que]=ct[Zue]=ct[Kue]=ct[Xue]=ct[Jue]=ct[_ue]=!0;ct[Aue]=ct[Pue]=ct[$ue]=ct[Due]=ct[Yue]=ct[Lue]=ct[Nue]=ct[Oue]=ct[zue]=ct[Bue]=ct[jue]=ct[Fue]=ct[Uue]=ct[Wue]=ct[Vue]=!1;function ehe(s){return kue(s)&&Rue(s.length)&&!!ct[xue(s)]}var the=ehe;function rhe(s){return function(t){return s(t)}}var Lc=rhe,Na={exports:{}};Na.exports;(function(s,t){var e=Dv,r=t&&!t.nodeType&&t,n=r&&!0&&s&&!s.nodeType&&s,i=n&&n.exports===r,o=i&&e.process,a=function(){try{var c=n&&n.require&&n.require("util").types;return c||o&&o.binding&&o.binding("util")}catch{}}();s.exports=a})(Na,Na.exports);var nd=Na.exports,nhe=the,ihe=Lc,Qg=nd,qg=Qg&&Qg.isTypedArray,she=qg?ihe(qg):nhe,Yv=she,ohe=cue,ahe=Vv,che=yo,lhe=rd,uhe=Iue,hhe=Yv,dhe=Object.prototype,fhe=dhe.hasOwnProperty;function ghe(s,t){var e=che(s),r=!e&&ahe(s),n=!e&&!r&&lhe(s),i=!e&&!r&&!n&&hhe(s),o=e||r||n||i,a=o?ohe(s.length,String):[],c=a.length;for(var l in s)(t||fhe.call(s,l))&&!(o&&(l=="length"||n&&(l=="offset"||l=="parent")||i&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||uhe(l,c)))&&a.push(l);return a}var Gv=ghe,phe=Object.prototype;function mhe(s){var t=s&&s.constructor,e=typeof t=="function"&&t.prototype||phe;return s===e}var id=mhe;function yhe(s,t){return function(e){return s(t(e))}}var Hv=yhe,vhe=Hv,Mhe=vhe(Object.keys,Object),whe=Mhe,She=id,The=whe,Che=Object.prototype,Ihe=Che.hasOwnProperty;function bhe(s){if(!She(s))return The(s);var t=[];for(var e in Object(s))Ihe.call(s,e)&&e!="constructor"&&t.push(e);return t}var Ehe=bhe,xhe=Nv,Rhe=$v;function khe(s){return s!=null&&Rhe(s.length)&&!xhe(s)}var sd=khe,Ahe=Gv,Phe=Ehe,Dhe=sd;function Lhe(s){return Dhe(s)?Ahe(s):Phe(s)}var od=Lhe,Nhe=Dc,Ohe=od;function zhe(s,t){return s&&Nhe(t,Ohe(t),s)}var Bhe=zhe;function jhe(s){var t=[];if(s!=null)for(var e in Object(s))t.push(e);return t}var Fhe=jhe,Uhe=On,Whe=id,Vhe=Fhe,$he=Object.prototype,Yhe=$he.hasOwnProperty;function Ghe(s){if(!Uhe(s))return Vhe(s);var t=Whe(s),e=[];for(var r in s)r=="constructor"&&(t||!Yhe.call(s,r))||e.push(r);return e}var Hhe=Ghe,Qhe=Gv,qhe=Hhe,Zhe=sd;function Khe(s){return Zhe(s)?Qhe(s,!0):qhe(s)}var ad=Khe,Xhe=Dc,Jhe=ad;function _he(s,t){return s&&Xhe(t,Jhe(t),s)}var ede=_he,Oa={exports:{}};Oa.exports;(function(s,t){var e=xr,r=t&&!t.nodeType&&t,n=r&&!0&&s&&!s.nodeType&&s,i=n&&n.exports===r,o=i?e.Buffer:void 0,a=o?o.allocUnsafe:void 0;function c(l,u){if(u)return l.slice();var h=l.length,d=a?a(h):new l.constructor(h);return l.copy(d),d}s.exports=c})(Oa,Oa.exports);var tde=Oa.exports;function rde(s,t){var e=-1,r=s.length;for(t||(t=Array(r));++e<r;)t[e]=s[e];return t}var nde=rde;function ide(s,t){for(var e=-1,r=s==null?0:s.length,n=0,i=[];++e<r;){var o=s[e];t(o,e,s)&&(i[n++]=o)}return i}var Qv=ide;function sde(){return[]}var qv=sde,ode=Qv,ade=qv,cde=Object.prototype,lde=cde.propertyIsEnumerable,Zg=Object.getOwnPropertySymbols,ude=Zg?function(s){return s==null?[]:(s=Object(s),ode(Zg(s),function(t){return lde.call(s,t)}))}:ade,cd=ude,hde=Dc,dde=cd;function fde(s,t){return hde(s,dde(s),t)}var gde=fde;function pde(s,t){for(var e=-1,r=t.length,n=s.length;++e<r;)s[n+e]=t[e];return s}var ld=pde,mde=Hv,yde=mde(Object.getPrototypeOf,Object),Zv=yde,vde=ld,Mde=Zv,wde=cd,Sde=qv,Tde=Object.getOwnPropertySymbols,Cde=Tde?function(s){for(var t=[];s;)vde(t,wde(s)),s=Mde(s);return t}:Sde,Kv=Cde,Ide=Dc,bde=Kv;function Ede(s,t){return Ide(s,bde(s),t)}var xde=Ede,Rde=ld,kde=yo;function Ade(s,t,e){var r=t(s);return kde(s)?r:Rde(r,e(s))}var Xv=Ade,Pde=Xv,Dde=cd,Lde=od;function Nde(s){return Pde(s,Lde,Dde)}var Jv=Nde,Ode=Xv,zde=Kv,Bde=ad;function jde(s){return Ode(s,Bde,zde)}var Fde=jde,Ude=Si,Wde=xr,Vde=Ude(Wde,"DataView"),$de=Vde,Yde=Si,Gde=xr,Hde=Yde(Gde,"Promise"),Qde=Hde,qde=Si,Zde=xr,Kde=qde(Zde,"Set"),_v=Kde,Xde=Si,Jde=xr,_de=Xde(Jde,"WeakMap"),efe=_de,Lu=$de,Nu=td,Ou=Qde,zu=_v,Bu=efe,e0=wi,as=Ov,Kg="[object Map]",tfe="[object Object]",Xg="[object Promise]",Jg="[object Set]",_g="[object WeakMap]",ep="[object DataView]",rfe=as(Lu),nfe=as(Nu),ife=as(Ou),sfe=as(zu),ofe=as(Bu),qn=e0;(Lu&&qn(new Lu(new ArrayBuffer(1)))!=ep||Nu&&qn(new Nu)!=Kg||Ou&&qn(Ou.resolve())!=Xg||zu&&qn(new zu)!=Jg||Bu&&qn(new Bu)!=_g)&&(qn=function(s){var t=e0(s),e=t==tfe?s.constructor:void 0,r=e?as(e):"";if(r)switch(r){case rfe:return ep;case nfe:return Kg;case ife:return Xg;case sfe:return Jg;case ofe:return _g}return t});var Nc=qn,afe=Object.prototype,cfe=afe.hasOwnProperty;function lfe(s){var t=s.length,e=new s.constructor(t);return t&&typeof s[0]=="string"&&cfe.call(s,"index")&&(e.index=s.index,e.input=s.input),e}var ufe=lfe,hfe=xr,dfe=hfe.Uint8Array,t0=dfe,tp=t0;function ffe(s){var t=new s.constructor(s.byteLength);return new tp(t).set(new tp(s)),t}var ud=ffe,gfe=ud;function pfe(s,t){var e=t?gfe(s.buffer):s.buffer;return new s.constructor(e,s.byteOffset,s.byteLength)}var mfe=pfe,yfe=/\w*$/;function vfe(s){var t=new s.constructor(s.source,yfe.exec(s));return t.lastIndex=s.lastIndex,t}var Mfe=vfe,rp=mo,np=rp?rp.prototype:void 0,ip=np?np.valueOf:void 0;function wfe(s){return ip?Object(ip.call(s)):{}}var Sfe=wfe,Tfe=ud;function Cfe(s,t){var e=t?Tfe(s.buffer):s.buffer;return new s.constructor(e,s.byteOffset,s.length)}var Ife=Cfe,bfe=ud,Efe=mfe,xfe=Mfe,Rfe=Sfe,kfe=Ife,Afe="[object Boolean]",Pfe="[object Date]",Dfe="[object Map]",Lfe="[object Number]",Nfe="[object RegExp]",Ofe="[object Set]",zfe="[object String]",Bfe="[object Symbol]",jfe="[object ArrayBuffer]",Ffe="[object DataView]",Ufe="[object Float32Array]",Wfe="[object Float64Array]",Vfe="[object Int8Array]",$fe="[object Int16Array]",Yfe="[object Int32Array]",Gfe="[object Uint8Array]",Hfe="[object Uint8ClampedArray]",Qfe="[object Uint16Array]",qfe="[object Uint32Array]";function Zfe(s,t,e){var r=s.constructor;switch(t){case jfe:return bfe(s);case Afe:case Pfe:return new r(+s);case Ffe:return Efe(s,e);case Ufe:case Wfe:case Vfe:case $fe:case Yfe:case Gfe:case Hfe:case Qfe:case qfe:return kfe(s,e);case Dfe:return new r;case Lfe:case zfe:return new r(s);case Nfe:return xfe(s);case Ofe:return new r;case Bfe:return Rfe(s)}}var Kfe=Zfe,Xfe=On,sp=Object.create,Jfe=function(){function s(){}return function(t){if(!Xfe(t))return{};if(sp)return sp(t);s.prototype=t;var e=new s;return s.prototype=void 0,e}}(),_fe=Jfe,ege=_fe,tge=Zv,rge=id;function nge(s){return typeof s.constructor=="function"&&!rge(s)?ege(tge(s)):{}}var ige=nge,sge=Nc,oge=jr,age="[object Map]";function cge(s){return oge(s)&&sge(s)==age}var lge=cge,uge=lge,hge=Lc,op=nd,ap=op&&op.isMap,dge=ap?hge(ap):uge,fge=dge,gge=Nc,pge=jr,mge="[object Set]";function yge(s){return pge(s)&&gge(s)==mge}var vge=yge,Mge=vge,wge=Lc,cp=nd,lp=cp&&cp.isSet,Sge=lp?wge(lp):Mge,r0=Sge;const Tge=un(r0);var Cge=Bv,Ige=Zle,bge=Uv,Ege=Bhe,xge=ede,Rge=tde,kge=nde,Age=gde,Pge=xde,Dge=Jv,Lge=Fde,Nge=Nc,Oge=ufe,zge=Kfe,Bge=ige,jge=yo,Fge=rd,Uge=fge,Wge=On,Vge=r0,$ge=od,Yge=ad,Gge=1,Hge=2,Qge=4,n0="[object Arguments]",qge="[object Array]",Zge="[object Boolean]",Kge="[object Date]",Xge="[object Error]",i0="[object Function]",Jge="[object GeneratorFunction]",_ge="[object Map]",epe="[object Number]",s0="[object Object]",tpe="[object RegExp]",rpe="[object Set]",npe="[object String]",ipe="[object Symbol]",spe="[object WeakMap]",ope="[object ArrayBuffer]",ape="[object DataView]",cpe="[object Float32Array]",lpe="[object Float64Array]",upe="[object Int8Array]",hpe="[object Int16Array]",dpe="[object Int32Array]",fpe="[object Uint8Array]",gpe="[object Uint8ClampedArray]",ppe="[object Uint16Array]",mpe="[object Uint32Array]",ot={};ot[n0]=ot[qge]=ot[ope]=ot[ape]=ot[Zge]=ot[Kge]=ot[cpe]=ot[lpe]=ot[upe]=ot[hpe]=ot[dpe]=ot[_ge]=ot[epe]=ot[s0]=ot[tpe]=ot[rpe]=ot[npe]=ot[ipe]=ot[fpe]=ot[gpe]=ot[ppe]=ot[mpe]=!0;ot[Xge]=ot[i0]=ot[spe]=!1;function va(s,t,e,r,n,i){var o,a=t&Gge,c=t&Hge,l=t&Qge;if(e&&(o=n?e(s,r,n,i):e(s)),o!==void 0)return o;if(!Wge(s))return s;var u=jge(s);if(u){if(o=Oge(s),!a)return kge(s,o)}else{var h=Nge(s),d=h==i0||h==Jge;if(Fge(s))return Rge(s,a);if(h==s0||h==n0||d&&!n){if(o=c||d?{}:Bge(s),!a)return c?Pge(s,xge(o,s)):Age(s,Ege(o,s))}else{if(!ot[h])return n?s:{};o=zge(s,h,a)}}i||(i=new Cge);var f=i.get(s);if(f)return f;i.set(s,o),Vge(s)?s.forEach(function(S){o.add(va(S,t,e,S,s,i))}):Uge(s)&&s.forEach(function(S,b){o.set(b,va(S,t,e,b,s,i))});var g=l?c?Lge:Dge:c?Yge:$ge,y=u?void 0:g(s);return Ige(y||s,function(S,b){y&&(b=S,S=s[b]),bge(o,b,va(S,t,e,b,s,i))}),o}var ype=va,vpe=ype,Mpe=1,wpe=4;function Spe(s){return vpe(s,Mpe|wpe)}var Tpe=Spe;const lt=un(Tpe),Cpe={maxRetries:3,timeoutMs:15e3,retryIntervalMs:1e3};function hd(s){const t={...Cpe,...s};if(t.maxRetries!==-1&&(!Number.isInteger(t.maxRetries)||t.maxRetries<0||t.maxRetries>10))throw new RangeError("backgroundImageLoadOptions.maxRetries must be -1 (infinite retry) or an integer from 0 to 10");if(t.maxRetries===-1&&(t.maxRetries=Number.POSITIVE_INFINITY),!Number.isFinite(t.timeoutMs)||t.timeoutMs<1e3||t.timeoutMs>12e4)throw new RangeError("backgroundImageLoadOptions.timeoutMs must be from 1000 to 120000");if(!Number.isFinite(t.retryIntervalMs)||t.retryIntervalMs<0||t.retryIntervalMs>3e4)throw new RangeError("backgroundImageLoadOptions.retryIntervalMs must be from 0 to 30000");return t}class Ipe{constructor(t,e){x(this,"tasks",new Map);x(this,"failedTasks",new Map);x(this,"options");x(this,"queue",[]);x(this,"activeAttempts",0);x(this,"maxActiveAttempts",4);this.onEvent=e,this.options=hd(t)}load(t){const e=this.keyOf(t);if(this.cancel(e),this.failedTasks.delete(e),!t.isActive())return Promise.resolve();const r={...t,key:e,attempt:0,generation:0,settled:!1};return this.tasks.set(e,r),this.enqueue(r),Promise.resolve()}cancelByViewScene(t,e){for(const r of this.tasks.values())r.viewId===t&&(!e||r.scenePath===e)&&this.cancel(r.key);for(const[r,n]of this.failedTasks)n.viewId===t&&(!e||n.scenePath===e)&&this.failedTasks.delete(r)}cancelResource(t,e,r){const n=this.keyOf({viewId:t,scenePath:e,resourceId:r});this.cancel(n),this.failedTasks.delete(n)}cancelAll(){for(const t of[...this.tasks.keys()])this.cancel(t);this.failedTasks.clear()}reload(t){var i;if(t.source!=="appliance")return{accepted:!1,reloadedCount:0,reason:"resourceNotFound"};const e=[...this.failedTasks.values()].filter(o=>o.viewId===t.viewId&&o.scenePath===t.scenePath);if(!e.length)return{accepted:!1,reloadedCount:0,reason:[...this.tasks.values()].some(a=>a.viewId===t.viewId&&a.scenePath===t.scenePath)?"alreadyLoading":"resourceNotFound"};const r=e.filter(o=>o.isActive());if(!r.length)return{accepted:!1,reloadedCount:0,reason:"sceneNotFocused"};let n=0;for(const o of r)this.failedTasks.delete(this.keyOf(o)),t.url&&((i=o.onReloadUrl)==null||i.call(o,t.url)),this.load(t.url?{...o,src:t.url}:o),n+=1;return{accepted:!0,reloadedCount:n}}keyOf(t){return`${t.viewId}\0${t.scenePath}\0${t.resourceId}`}async attempt(t){if(!this.canRun(t)){this.cancel(t.key);return}t.attempt+=1;const e=++t.generation;try{if(await this.loadImage(t,e),!this.canRun(t)||t.generation!==e)return;t.settled=!0,this.tasks.delete(t.key),this.emit(t,"success")}catch{if(!this.canRun(t)||t.generation!==e)return;if(this.options.maxRetries===-1||this.options.maxRetries===Number.POSITIVE_INFINITY||t.attempt<=this.options.maxRetries){const r=Math.floor(Math.random()*Math.min(100,this.options.retryIntervalMs));t.timer=setTimeout(()=>{t.timer=void 0,this.enqueue(t)},this.options.retryIntervalMs+r)}else t.settled=!0,this.tasks.delete(t.key),this.failedTasks.set(t.key,{viewId:t.viewId,scenePath:t.scenePath,resourceId:t.resourceId,src:t.src,image:t.image,isActive:t.isActive,onReloadUrl:t.onReloadUrl}),this.emit(t,"failed")}}enqueue(t){!this.canRun(t)||this.queue.includes(t)||(this.queue.push(t),this.drain())}drain(){for(;this.activeAttempts<this.maxActiveAttempts&&this.queue.length;){const t=this.queue.shift();this.canRun(t)&&(this.activeAttempts+=1,this.attempt(t).finally(()=>{this.activeAttempts-=1,this.drain()}))}}loadImage(t,e){return new Promise((r,n)=>{const i=t.image,o=()=>{t.timer&&(clearTimeout(t.timer),t.timer=void 0),i.onload=null,i.onerror=null,t.cancelAttempt=void 0};i.dataset.netlessBackgroundImageManaged="true",i.onload=()=>{o(),r()},i.onerror=()=>{o(),n(new Error("background image load failed"))},t.timer=setTimeout(()=>{o(),i.removeAttribute("src");const a=new Error("background image load timed out");a.name="TimeoutError",n(a)},this.options.timeoutMs),t.cancelAttempt=()=>{o(),n(new Error("background image load cancelled"))},t.generation===e&&(i.src=t.src)})}canRun(t){return!t.settled&&this.tasks.get(t.key)===t&&t.isActive()}cancel(t){var r;const e=this.tasks.get(t);!e||e.settled||(e.settled=!0,e.generation+=1,(r=e.cancelAttempt)==null||r.call(e),e.timer&&(clearTimeout(e.timer),e.timer=void 0),e.image.onload=null,e.image.onerror=null,e.image.removeAttribute("src"),this.tasks.delete(t),this.emit(e,"cancelled"))}emit(t,e){var r;try{(r=this.onEvent)==null||r.call(this,{name:"backgroundImageLoad",state:e,source:"appliance",resourceId:t.resourceId,resourceUrl:t.src,viewId:t.viewId,scenePath:t.scenePath})}catch(n){console.error("[backgroundImage] onBackgroundImageLoadEvent callback failed",n)}}}const bpe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYISURBVHgB7ZpNSCtXFIBPEuvz+dMGpYUKD/sWFX+Qti6kK7Hqpm6e9q0rIoIUFUShPLV10VZx4+JZqa9v20LBhdq9fyBUCtKNPH8qYl2IOw3G38Rkek4y15y5uTOZJDOWggcOSSYzN/ebc+45554JwIM8iBCPyTEP+86T4vyMfsRN4b+nQTKIJp0vzuGvlpID7os8EQNEIBD4oKio6Bm9DwaDv/v9/n/076JgbtWUYPchwrW8qD7UnOvr6wFNkpubm+/wu7f0c7y6mrnlvQufxB0Iau7V1dX3BDA/P6/V1dVpzc3N2uLiIofK1c8VYHys/wRKBUN3/hGHqaysNOjc3FwMis6hc0FtLTHuvYLxCCZgci8uLn4wg5Gh6Fy8Jk+/NkcCAlAAuUkoW4g0B+d5tLS05O/r67O8eGxsDNra2uDy8nKsoKCAwCIQDxQa0yTxgrvCYXyTk5Ml+Orf2dlJeeHIyAigFSE/P38ELfUNqNdSkjgF5FF89jL1TU1NlQwODl5gZPujp6cHWltbUw7Koc7Pz8mkZpHPFeFrJuZeqLnoMoPoZqe0JjDP/IZgnyLUG/o8NDRkuo5Ua2pjY6MC4oFCFf1cA0oKzRSOp6enRfTaGh0d/QxBt+1CUVgnOTs7+xrHfQzGyOcKkK3QTJMnQffZ6e/v/xwttmsHqqmpKXbdycnJCxy7ABLh3FEgVZ6hZJhnFZoFFMF0d3c/w7v+dyookXBnZ2c/xvHfhriVcvXfdBRItsxjnOhYqjwjoAimq6vrCysoGofk+Ph4Esd/F/UdiFtJAGUd2DygTpp5dmBUUJ2dnc9VUALm8PDwJY7/BPU9VD8k3M4RC6kskxZMKigKIMLN9vf3p3H8DyWgfEhEOwOQD9IXOTz7EObbwsLC4YWFBRgeHrY9ECXYo6MjaGlpKWlsbPxkYGDgRW1tbSEWquVlZWXBzc3Nl1VVVa8hXiXc6ioqBqGaPDk7AACJTRZ3NS9lcUp86cJwoSQ7Pj4Op6enfxUXF3/V0NCQv7q6GsCvwrqGUG/01xAD4+VQTOxaSF43d5bBOisrGBJRCtXX17+/trb268rKSgASFgmz97KFkmo6OztWuVyPweiWGc4WRkhFRQVEIpHg8vJyQAIQVlLBROVxvBYQHsXnO8tk62ZcyN0wecLBwcEvYHSzEPscBqOLCRhLC4n9uqaA8UAWAcAKhtbQ3t7eTHl5+Y9gtAp3twhT056CDMQ7MRzIFTeTYKb1yYYVQFH9VdzsqNmYKpfTJBDX3Ixgdnd3XyHMT2AMALJlBBSPaMpNngrIsTyTCgaj288YDGakictrxizvKFNOjgSSBLS+vv6UYHDb7DgMVgsChjTEgCIKGG4ZU+EWkgNBzN1qamq+pAMTExPgFMzW1tZrhHkFyWE5KxgSszx0527RaDRmOSpRshEOU11dPQPG8CwHARHJlMnTSrwSRFIlfXt7m3V5ngJGuJtqzaQtZkFBVNJezN5ZAdmwjKo2k9tVtrcI3OXk4tPgcg7ChCDZ1URgMOu72Xa5VFHOkymQhWVU60YVmjN6wiC7k6p+S1syCACOwJBYFaexV+yhBekNPsMBO6KAEeE4BMaCU67RsoYhSbXgaT//ht709vZCaWmp6YkEbLFmVJWzas04+iBL7EKpm0J7duqu0B7+CTUpNJuyvb1NCfMj1CqI9wLKUOlOUMeG+gGFkHii4HizUF4z/KFUrPsJ8WbEIyx7nnZ0dDynME6BAuce09iFHo+GrnmGltltb2//E4wVAN82y7vOjKOZXSBhJdHNiT3TYWD8OY2PTUJkdd7MkJMnT5wZVQF2RFX6yBMUdzPMvvfqxz3sXHF+GNT9ANXit/10O1sgHkZvdQAOKvs9B5L7ARELGAAXLSTvM8QExTE+YbHe+HURhZp1aRyF4CJXClbbWwGketgkW9VsY+YaiBCVhfgE+XvxRwgZSM4jUVCDZFQ9pytmXR8hUTB2gnidx4XffVWydN0yQjwmx/jkAZJBrIBI5J7ZvQGZWUgVSuU/EqmOAzicKNMVu816DdRWUV1/7xAP8n+SfwF3Du3NF2sYhwAAAABJRU5ErkJggg==",Epe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAgrSURBVHgB7ZprTBRXFIDP7gIt8lQppTwE5V0KaAn6o1pqNGkDDTEmTUhsgKRp+gNJw68CFkLbVC2QkDS+gD8KJdWmARvbFBNNWpuIRGPFWBXQRMPDqIki+KLATs+ZnTvcvXtnX8w2beJJToaduTP3fHPOPffcOwC8kP+2WCDwIvahGFxTuN8KmNSZmULPNjLeqF9F8rdPkIEGEn+r+vjx46LQ0NA8/Dsader58+e/h4WFDWntFO7ot6fMFAt3JLWi2lCDpqamCux2+2+KROj82NhYGrXT2lu5Z/DP/deFByElA4Pv3LlTiHY/nJ6eVnbv3q1s2bJFyc7OVrZu3arU1dUp4+PjxPUQoT+g9tp9PkMFgpo9kxljHRoaWp2Xl3duYmIiurKyEvDoclNCQgIcPnxYPc7MzHwcGRnZhaft4Ag7O9fUbRhaITCie4lgcnNzT7qDIaHz27dvh+vXr0NEREQneqoCHKFnAR+8ZCaQGGq2CxcurCGYycnJZHcwTNAzUFFRoUJFRUV1IFQ5OKBsXB9uxSwgl0TQ3d29Yt26dccwoyVXV1d7hGEiQmGi2AzOUHx/hob4K2yuYS9G987s7OwPISEh7xPM6dOnwVfBsIMjR45AZmbmo5s3b76Xnp7+J55egMVxBSAZT0v1ED+76yn66dOnLQSzd+9ev2BIyFP0MjBco1JTU/sxfFeDazp3cYgZHmKqdoaGNISHh9fv378fSJcqlPV6e3sBJ+I/goOD34VFL0k95Y+HxPHCYGxmw5DQ2NuzZw8EBQVtunXr1jvgwUP+hhz/QDXMMCNVE8zx48dNg2FCz6QQjI2N/RA8VBFmANnu3btXihnpG8pM9fX1EAi5du0aeWkVOAMBCF7yN+R0z4yOjq6NiYlpp9CgdBtIwXpPH6vgDKWLt0CygtM6MDCwBuUYZSKaOCksAiVY9wFOBePgDOOytPAGSKzNVCCC2bBhw69YdK7ypgpYimzbtk2dl7CM+hFcveOUHDylbTFO1YdhFbByx44dA1QFUP0VSJj4+Hjo6+sDq9U6iEmHKvFZTedQ50GYbN15SITVlwNlZWUnLRZL8s6dOwMOQ9UCTtKTra2ttdppt9V2kMF5cbmsjxuM43bMNrmUzc6fP6+GQiDGDoOJi4ubwb4qm5ubafyIE6nLxGqTPEsGo1cBOGNX0TyDYafC0CyOaxcVziyh53Z2dkJycvLMvn37PmpoaBgFR4jxYSbWdVIgI89Iq4CjR48CZjlYv369+tssqI6ODsjPz4f+/v668vLycxrEHHfkYdwC8SB6mGEV8Cl64cuuri5oa2tTG+EyGjZu3AiXLl1qefDgwV8lJSUFZkDV1tZCcXExXLx4sbWoqKgPFj0zx8GI9ZwO5W4M6ekZYeqpaqbqmaSqqkpNpcPDw4dwzfM9nrLduHEjEs+X0XV/Sx96LnqE1kLtBQUF3eDwCO8dGQyzV5rl+JyuegfXI29jRotiRlKnpFghHMzKyjqotVXS0tLacKPjF3bdHxjSq1evduAkepAD+ZsDYlC8V5w8ZBVg+PPq2MGMlkInqE4joTf45MmT4YyMjAPcA+ltLSQlJX2BafxnX6HI29QeK44TOTk57mCYZ0QoJ8OBM4yB6dkNkwGlSygsLFQvYtYB3BTMxFL+M+0eFgZqp4mJiU2+QKGX1fGIk/QIrn0aYXGsyDxjmAyMhO2jhaCGoUbX1NSkLSwsPMJqV8Fspu6lIZS6OYhjiOLwdU7fQM1HfRPD7wS1obZ0j0xpb4726Z49ezaJf2/S7s9ATUGNR41BjdJseRnke3WGwhrRTS9pD1mOGoeG15BxOOfoxuCkp0Ih6NeaEaSZGlieJyiCoc1FgsGldokGk8nBvAKOrWIGQ5uPsm0tt0BWDiicAaGuGhkZ+YqMw9StGzU4OKhCnT179hNsswY1FTXdE5QEJhc1S3tGogazXLOBwQSBl3tzIhQPtAL1VQJCTcNx8y1vHIUghSKFZE9PT7H2dlM1b+Wgrr1y5Uq77J75+fnplpaWMg2ch4nlYEI5z7hdensDpI4hrYNErcMMXJ32koG4ztf3pultz83NjWG99Ra2WQ0OL2VjZjwgeufUqVOqV8+cOdPIwdBLSNJeHg8TAh5WqJ6EfSmgt7IMNRJ1JThiOlnrOAMHshprmMKdoGSCpb9s3B3SYLIFGIqICJB7xisYi+RvfiypXw40DWGdlJaWRmMd141hk8V2OWm7ieYTXhBc3+BgaZyqAISjOYxSMVvXsBTNlzdiNQDgRao2AtK3pjggpmrqbGpqSsLPIN/dv38/gaBwUjTshMHcvn27JyUlpRmc5xpPMD599LIYnLNyUKKndKjGxsakXbt2deMCLIE8IVvs0YRM1fjdu3d/wrXN5+BcnzEgvor2uN3rjzAYMp5lPEoQlE5fA0fWo8GfhlCbKVFQ1pKNIfzcOHH58mWqaimVUwJI0+6n59D4pIlzmdZPMPiZzXjDjX47Le5g0Uu8x2zgPqWyKpjVe7x3+AUbq9NYjQbgp2dsBud5o8TP7d5kHAWcQchQfoEmLgn8HjOiBIF7o5hI1x6CEbLNP3bdqYAF44JzyWLzcN1i8DcT/o3awbm8Fz3DAy2A62INwPV/E3wWdx5inmBHuwChCBD6R2JwHge80TIQRQLjt7e8DTkGZgfX8cUMZTDAteFDkveaIlzjX9ySQs8X18r2t2VHUURPKoICmDR+eCO9aSdmOIub3/w9RgpgUpiJhvraXpa6jZKHGEqyusw0GLFzX+5RhN/8kYnMSNMMfyH/V/kHST6OYVElTPAAAAAASUVORK5CYII=",xpe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAxCAYAAABznEEcAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAZoSURBVHgB7VlLSCRXFL3ljNEhEXTGhMQJmOjCz8ZNVLKICz9xIYhCNi7UgINkGEk2En8hW5cBUQNxo05GAoKikuCAmvGzGMdPcCUGjDPxD/4Vv/3JvWW97luvq7ur+hMZ8MKlqrteNfe8e965970GuLVbC5kpJr53+hjHx9yY3TUxJgLMAQG4ITARfp5T4Mri4uL9q6urnxwOxz/oY5eXl1/Pzs7e195X2FX4jZsIhAK7gx5ps9m6nGj9/f3OtbU1pzAE0318fPwVjYHrrN7R3AjU/wpOBwA9Cmf/9ejoqDMtLU31iooKGdA+ATo4OMiXAEWAHhBAGEApXj4rPAik0vPt7e0vCgoKPH4gMzMTSktLIS8vD2JiYgABvcHMTZyennbHxsaOg3udOJmLzwqEYB0ZgRCZENm4u7e39yQuLq65srISZmZmvP5Ybm4u5OfnQ0lJyXWUCAgzNLS+vt6SnJz8WgvYwV5xSlcRgyVg3ha2Dkxzc3MvfZmVlQW+bGxsDBobGyE7O1u94uJPjIqKqklKSvrbbrfPnp+ff7e8vJwMnlSTKWfJjDKhywJo6wLp0YcZ+dyIUr7s4cOHLsrRlQwBTSBFuzc2NiZYhjjVAIyzZBqEwgCQv0OOM/gNzuiP/ijlDxBRjgClpqa6AF1cXDydmpoaLCws3JcAGYHyC4JMzoKaibKysvienp6FtrY2IA/WCFB5ebkqCHSvARo8Ozt7igIxwIJ2gJ+seFMnDoIyEUV+dHT0G3qWVUr5M043DdAB0m2IKZwAYpgZX+qkywR6NFbuR0iDxmAoZRUQKRxSLTMnJ8eIaqqSeVMnIYUOdu+sq6vrp4f+VCoYo8khZaNs01VRlERUu2/BrWAA7sl2Anink1Ao18JGjyY/PDx8hq1GZqgp5c2mp6chMjLy2b179x7hRzvoqeUUwXIzqq4O5nZsNUaEbIbLqPLTou/s7FTvT05OpsA9sXJG1AVsZDwjutqBIN6gUlWjxod8XRBNKXgsrqpqYZfwEqX9h8TExD7wbFm8LmzxHQ0QHSlXKZVSqFC/hkqlaKapTaGgCQTK7PHW1lb/wsLC86KiokkccoV+qV1tcE0pO7AWxmhTxBszDzqRr66ujqanp2cRpQLNBgUsCh8BwQ54bn5+/s+mpqa+4eHhfS1gb52vwuP0trPjhSZCBtLQ0NA3MDDQQIFYAUHBYhuvzjpVbJr1lZWVP3p7e19UVVXNgHumXYrI4uBx6Yqevz02b0FcRQ8CoBQF3dXVpQLZ3d39C7n+ora29vfJyclDYFnWgFyxK3cxhss/+KoT/N6DVkQpKypFGUCp3Ozo6HgSHx//GLW/BwHsg57zl5pzADajwLn52mPL1ZHPloMoRYPMFL6EhAR18e7s7MxVV1fPsAAp4Avteq7dC/c1+wKI4g+EfGzDM+EYHBw8RDrNiA2QL6upqVGvKJ2/gHu2L1nA5wwEB2YDfSYMO1x/px0cgEc2zBY+eo67u6H29vZ/wU2VC8l58JxKNjDOgojNEp08aFVfX++3l6JMEdDx8fEB0FNIBsDXBc8ArwuW1EkeI1RKdLWmCx+1DhkZGRvR0dFfSsHKxYtnW0iqvJAN9xNm6MR/QO5sfapUSkqKmqW5ubmfwVgyZdpw/vPZl2kUEAinBMSUStG+gwra0NDQSynQKyloIxnlewafjDFLJzLRBJqiFMnqyMgIbG5uDuD996Dnv8iAPOMAPmbcm5lVJwA/vZRMKZGZlpaWVtAvUL4GZMqE1fjRJrUd76LHoX+InlhcXPwZnWW2tra6jjrpiBM3UK/weQr6J+gfodMh9HtwncG7YLA3CMSsLmxx5WuDCt8B7vZeicInTjCWlpb6wc15mfey7oc9E8LElpVmMgb9AXoC+qcTExOPKRu4NlTHs6Q10GfhgfYOvRsJQZ76BWMKuDtaolQs+gfoH6Mn436gDg+e+5BKXUQx/C5Je/a+NpbeiQJPKgUdlNXx/BCBKxVdxW5Q0I3XBqFKRhU4KLtjYawi3csuTKdc4FnIXNvKUJkVEGRG20QZAAUpA5DbaYAQLmQzfzxyk/ffdnCD4NWVnGdE7kQBQvQHC5lVEDxgMaM29lkxGCNLKrDnIbFAMkFmBIaDkHstU41coGZ1TZD5UjReCGUAYbNgdNqoXZB/T67yYbFAMiGML3BhYeH8rb0t9h/zgcTBcTNGiQAAAABJRU5ErkJggg==",Rpe="data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M4%202.5V19L8.5%2014.5L11.5%2021L14.5%2019.5L11.5%2013H18L4%202.5Z'%20fill='%23212324'%20stroke='white'%20stroke-width='1.5'%20stroke-linejoin='round'/%3e%3c/svg%3e",kpe="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='26px'%20height='26px'%20viewBox='7%207%2026%2026'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3eshape-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-64.6%25'%20y='-59.5%25'%20width='229.3%25'%20height='246.1%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-344.000000,%20-751.000000)'%3e%3cg%20id='shape-cursor'%20transform='translate(344.000000,%20751.000000)'%3e%3crect%20id='矩形备份-44'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M20,21%20C20.4854103,21%2020.898085,21.3479993%2020.9899479,21.8654877%20L21,22%20L21,27%20C21,27.5522847%2020.5522847,28%2020,28%20C19.5145897,28%2019.101915,27.6520007%2019.0100521,27.1345123%20L19,27%20L19,22%20C19,21.4477153%2019.4477153,21%2020,21%20Z%20M27,19%20C27.5522847,19%2028,19.4477153%2028,20%20C28,20.4854103%2027.6520007,20.898085%2027.1345123,20.9899479%20L27,21%20L22,21%20C21.4477153,21%2021,20.5522847%2021,20%20C21,19.5145897%2021.3479993,19.101915%2021.8654877,19.0100521%20L22,19%20L27,19%20Z%20M18,19%20C18.5522847,19%2019,19.4477153%2019,20%20C19,20.4854103%2018.6520007,20.898085%2018.1345123,20.9899479%20L18,21%20L13,21%20C12.4477153,21%2012,20.5522847%2012,20%20C12,19.5145897%2012.3479993,19.101915%2012.8654877,19.0100521%20L13,19%20L18,19%20Z%20M20,12%20C20.4854103,12%2020.898085,12.3479993%2020.9899479,12.8654877%20L21,13%20L21,18%20C21,18.5522847%2020.5522847,19%2020,19%20C19.5145897,19%2019.101915,18.6520007%2019.0100521,18.1345123%20L19,18%20L19,13%20C19,12.4477153%2019.4477153,12%2020,12%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='18.5'%20y='17'%20width='3'%20height='6'%3e%3c/rect%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='17'%20y='18.5'%20width='6'%20height='3'%3e%3c/rect%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='形状结合'%20fill='%23212324'%20fill-rule='nonzero'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",Ape="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='26px'%20height='26px'%20viewBox='7%207%2026%2026'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3etext-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M16,26.5%20C15.7238576,26.5%2015.5,26.2761424%2015.5,26%20C15.5,25.7545401%2015.6768752,25.5503916%2015.9101244,25.5080557%20L16,25.5%20L19.5,25.5%20L19.5,14.5%20L16,14.5%20C15.7238576,14.5%2015.5,14.2761424%2015.5,14%20C15.5,13.7545401%2015.6768752,13.5503916%2015.9101244,13.5080557%20L16,13.5%20L24,13.5%20C24.2761424,13.5%2024.5,13.7238576%2024.5,14%20C24.5,14.2454599%2024.3231248,14.4496084%2024.0898756,14.4919443%20L24,14.5%20L20.5,14.5%20L20.5,25.5%20L24,25.5%20C24.2761424,25.5%2024.5,25.7238576%2024.5,26%20C24.5,26.2454599%2024.3231248,26.4496084%2024.0898756,26.4919443%20L24,26.5%20L16,26.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-284.0%25'%20y='-81.5%25'%20width='668.1%25'%20height='293.9%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-388.000000,%20-672.000000)'%3e%3cg%20id='text-cursor'%20transform='translate(392.000000,%20672.000000)'%3e%3crect%20id='矩形备份-40'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M19,25%20L19,15%20L16,15%20C15.4477153,15%2015,14.5522847%2015,14%20C15,13.5145897%2015.3479993,13.101915%2015.8654877,13.0100521%20L16,13%20L24,13%20C24.5522847,13%2025,13.4477153%2025,14%20C25,14.4854103%2024.6520007,14.898085%2024.1345123,14.9899479%20L24,15%20L21,15%20L21,25%20L24,25%20C24.5522847,25%2025,25.4477153%2025,26%20C25,26.4854103%2024.6520007,26.898085%2024.1345123,26.9899479%20L24,27%20L16,27%20C15.4477153,27%2015,26.5522847%2015,26%20C15,25.5145897%2015.3479993,25.101915%2015.8654877,25.0100521%20L16,25%20L19,25%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",Ar=Object.freeze([12,14,18,24,36,48,64,80,144,288]),Ai=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],Ts=new Map([["selector","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKeSURBVHgB3VTLi1JhFD86zlQ4ysxSXAy1GWYZzMxmYAhHagRB/QN8FLqPFq4FIQhXkS6kTQ4t2ilIKEWgSS0SmVpIm0BdaBJSaOP78XU+PXey6+saburAD+73uL/feX0H4H81GQdj7D7ilrCGFRonk3c6nXvhcJiFQiGWy+Xy/X7/WbPZ1K1KkBOsl0qlO36/n+3t7Q1hs9kYF+WC3W73MTpxc1lBmej7KuJaoVDInZ6eqsWXDw4OwGKxwPHx8Se1Wn1Wr9cjW1tbOTxi9D9bJCJHXEFslsvlR263+246nYZZptPpQK/Xg8lkSvZ6vbNGo5EgQRCLiSPhIqpoNHobo3keCARgkalUKjg5ORlGuL+/n8T6PVAqlefjYmKRdYQSsZ3P5z8aDAYVLGFarRbi8fhbhUKhx2VPEJGP3eEbfTrs4MUwr4EU49FYrVbweDy1SqXyipy95FaI7g8QXS6SyWReHx4e2ubVBc+HtTk6OjqvVqtvvF7vi0gkUiSByyyJ21BGwpswJ2Vmsxlw/0Kj0bxMJBJJl8vFPWkhGogLQoeyMhEJo2jGUzYRjcPh+Op0Oq2pVOoHkXE0SahF/w+E+3KYNEaX2pSyiSiKxeJTFPiGyyriO6FKEUgSESLp4ht4bzQaf4pFYrHYO/ysEXGNyJtjKRqM/zNNhFuf0B7vst3dXdjZ2Yn4fL4vRFwn8jaMGqYPU179LBEGf3bZcNNutwPOtScwKnCLPJ9KLMWEh7mNuIFdVsNXzbBNP+D6Ou1vwAqm8hqMWlmbzWYf4mz6HAwGzbjWwGgqrEklmucJT+UGCfG3wiPjueeNwGvB0zkAid7OMmF8CyOck/I6NJcR4KZYcM6J2vCbUGhvyQIA0gonzCEZkQud9Fcd9W/bL57cJu3lkjuNAAAAAElFTkSuQmCC"],["pencil","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ2SURBVHgB7ZXPqxJRFMfvjI4F+cqkTcrjge9B+B+0LJQ27lq4ijZprly6DaF1COKPjYRrVy0CF/aof6Baa6ChOPkLFcdMm1+dM93RafzxZuptgnfgC3ecO+dzz497JOTKNsZMp9OAoihvZFku4xp/I5dsbL/fP221Wl/D4bCKwnWn0znDd+SSDE/N6ZBgMKjJBNuKzC4dHTgQ5PF4bququn7R7XZJPB4/kSTpHcBOiQlmJ6cMpCvAcdz5ZDJhF4tF1u12v4jFYkc8z683+f1+Uq1W38K+x/AogVQ7ETF4SnB+Ho1GTxKJxDFC2u32q1KpJPh8vvVGjHK5XM4xahv+tYgRcranJrNarfay2WwKoVBIRTUajW42m70P390EOYmFrOEGdhfECEMIwur1Og+p5VOp1CP47piCOB3EXBBJAIuLRcZi7zKsSaVSEbxe70N4FEEL0AyE6VuBZEJD2wmyAkHDmoxGIwGW36ljBP2gUEXf5/wXCDZBsVjky+XyUwpCyBL0k0ai7gNp3WUVUigUvgHoWSaTaRoi2YJojk1r52q1eh2JRJ5YgUB3Pc/n83WyXRPV/A1rWrtgSAZsQL6Q3ynTI1F2QdCMqXNQEGsDMqMgrMt6ChwCaXcGYdBFjA3InELkQxBCtkcEI4riHyPFCMnlcnEKMbYzQhRi0TCKa6A76XT6wWAweD8ejz8Oh8PPcEc+9Xq9D8lkMgLv74Hugo5ALmJzlumG4+IG6BZ1dJ06wtPqN14gmza2FYljD1SljrCTsAaYpjnZFP7CmpADEel/ai4qffLiqSUKFSlEP8xfgYwwlmzyr1KYHoUtgBU4Y9D/Y78AxCeE/aWoyrkAAAAASUVORK5CYII="],["eraser","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANKSURBVHgB1VTdS5NhFD/7iuXa8KNw7SK/IjBYo13soqvEITENtj9AwZiCOCTvQrNWF9rFFPGLrC1iF10Oiy68mBSUF2KB4YabhKKyTfFCc+3Lzb2ds72LsfbxCkZ04Mf7Puc5z/k95+M5AP+R8OAvCW9nZ6cyHo8/SSaTc4RQKKQ+S0JyxFtbW6va39//ZjKZmMbGRkar1TJOp5MhYtwXwBkQkgMROnyXIcmGw+FgYrHY00JkQm4cqYPCaDQ6ZrFY7i4sLPxhMDg4SJ8hTOOWRCJ5jf8npyUiEgE6eGy1Wk12u72gIZHJZDLr4eHhVnl5+YdsslL5pH1+JBIx22y2h9PT01BKpFIpLC4ufhKJRFpcxhEM6fmlSMLh8P35+XlOJCTBYBC2t7dr8fdctv+iRHjI4HK5LAMDA8BVFAoFyOVyH/6KIKsxCtVIgC188+Dg4CV2GJxGpqamYHR09AHklEWQY5d6K/gg67HD3huNRrlKpYLNzU3gIsPDw8Dn84fa29s/4zIK6Rol8xIhSUMikXB2dXXV4AHo6en5KhaLFcvLy0VJent7QaPRzKrV6le4DCEi2UTCnGgE1dXVj3Q6XY1er08drKiosK2urnbjnrFQQxBJU1PTC3y4kyxJGHEMWe2dTUSNIcLZVXl0dAStra3BiYmJOTqgVCqfu91uull3LhlFjbZv6urqiCTIElHaEsC2dq4QqXRlZeUePsrUDFtfX/eZzebbqL+GuIFks1js32OHRtHu7u5H3FMiahFViPNQYuZRO8oQVzY2NibJocFgYAKBgLuzs/M66hsQKuzELx0dHak9rKe3paXlFurrERdZEiGUGARkcAFxmSJAJ/aRkRGGnOKwdPn9/rG9vT0HXaC5uZnxer3+vr4+HdpeRVxClBWLJFuZqhF7gAjL0PGz8fFxvcfjSY0WevVUv5mZmQDWyog1/I52PyBdlxgUqUu+qMSQznVtW1ubBlP3dmlpicnA5/N5+vv770C6bhS9lEu6eHnWFP45NioJS5xxRLdNsrenKH5CusNOWH1BEeTRMTnI6MgZpYYeYhhOmS5eEX0mMhELPktGoBd/zCWSUkTAOs4QZqZ8JsokS8Kp8KWICtlwdv5P5BchBHaEIRURoQAAAABJRU5ErkJggg=="],["text","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDdweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDcgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT50ZXh0LWN1cnNvcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwyNi41IEMxNS43MjM4NTc2LDI2LjUgMTUuNSwyNi4yNzYxNDI0IDE1LjUsMjYgQzE1LjUsMjUuNzU0NTQwMSAxNS42NzY4NzUyLDI1LjU1MDM5MTYgMTUuOTEwMTI0NCwyNS41MDgwNTU3IEwxNiwyNS41IEwxOS41LDI1LjUgTDE5LjUsMTQuNSBMMTYsMTQuNSBDMTUuNzIzODU3NiwxNC41IDE1LjUsMTQuMjc2MTQyNCAxNS41LDE0IEMxNS41LDEzLjc1NDU0MDEgMTUuNjc2ODc1MiwxMy41NTAzOTE2IDE1LjkxMDEyNDQsMTMuNTA4MDU1NyBMMTYsMTMuNSBMMjQsMTMuNSBDMjQuMjc2MTQyNCwxMy41IDI0LjUsMTMuNzIzODU3NiAyNC41LDE0IEMyNC41LDE0LjI0NTQ1OTkgMjQuMzIzMTI0OCwxNC40NDk2MDg0IDI0LjA4OTg3NTYsMTQuNDkxOTQ0MyBMMjQsMTQuNSBMMjAuNSwxNC41IEwyMC41LDI1LjUgTDI0LDI1LjUgQzI0LjI3NjE0MjQsMjUuNSAyNC41LDI1LjcyMzg1NzYgMjQuNSwyNiBDMjQuNSwyNi4yNDU0NTk5IDI0LjMyMzEyNDgsMjYuNDQ5NjA4NCAyNC4wODk4NzU2LDI2LjQ5MTk0NDMgTDI0LDI2LjUgTDE2LDI2LjUgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTI4NC4wJSIgeT0iLTgxLjUlIiB3aWR0aD0iNjY4LjElIiBoZWlnaHQ9IjI5My45JSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPgogICAgICAgICAgICA8ZmVNb3JwaG9sb2d5IHJhZGl1cz0iMSIgb3BlcmF0b3I9ImRpbGF0ZSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd1NwcmVhZE91dGVyMSI+PC9mZU1vcnBob2xvZ3k+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjIiIGluPSJzaGFkb3dTcHJlYWRPdXRlcjEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC4xNiAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXaGl0ZWJvYXJkLUd1aWRlbGluZXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODguMDAwMDAwLCAtNjcyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0idGV4dC1jdXJzb3IiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5Mi4wMDAwMDAsIDY3Mi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tNDAiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAuMDEiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSLlvaLnirbnu5PlkIgiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMSIgZD0iTTE5LDI1IEwxOSwxNSBMMTYsMTUgQzE1LjQ0NzcxNTMsMTUgMTUsMTQuNTUyMjg0NyAxNSwxNCBDMTUsMTMuNTE0NTg5NyAxNS4zNDc5OTkzLDEzLjEwMTkxNSAxNS44NjU0ODc3LDEzLjAxMDA1MjEgTDE2LDEzIEwyNCwxMyBDMjQuNTUyMjg0NywxMyAyNSwxMy40NDc3MTUzIDI1LDE0IEMyNSwxNC40ODU0MTAzIDI0LjY1MjAwMDcsMTQuODk4MDg1IDI0LjEzNDUxMjMsMTQuOTg5OTQ3OSBMMjQsMTUgTDIxLDE1IEwyMSwyNSBMMjQsMjUgQzI0LjU1MjI4NDcsMjUgMjUsMjUuNDQ3NzE1MyAyNSwyNiBDMjUsMjYuNDg1NDEwMyAyNC42NTIwMDA3LDI2Ljg5ODA4NSAyNC4xMzQ1MTIzLDI2Ljk4OTk0NzkgTDI0LDI3IEwxNiwyNyBDMTUuNDQ3NzE1MywyNyAxNSwyNi41NTIyODQ3IDE1LDI2IEMxNSwyNS41MTQ1ODk3IDE1LjM0Nzk5OTMsMjUuMTAxOTE1IDE1Ljg2NTQ4NzcsMjUuMDEwMDUyMSBMMTYsMjUgTDE5LDI1IFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4="],["shape","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zaGFwZS1jdXJzb3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICAgICAgPGZpbHRlciB4PSItNjQuNiUiIHk9Ii01OS41JSIgd2lkdGg9IjIyOS4zJSIgaGVpZ2h0PSIyNDYuMSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0yIj4KICAgICAgICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9IjEiIG9wZXJhdG9yPSJkaWxhdGUiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dTcHJlYWRPdXRlcjEiPjwvZmVNb3JwaG9sb2d5PgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIyIiBpbj0ic2hhZG93U3ByZWFkT3V0ZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW49InNoYWRvd0JsdXJPdXRlcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJvdXQiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMTYgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi00IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2hpdGVib2FyZC1HdWlkZWxpbmVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzQ0LjAwMDAwMCwgLTc1MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9InNoYXBlLWN1cnNvciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQ0LjAwMDAwMCwgNzUxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS00NCIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMC4wMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9IuW9oueKtue7k+WQiCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjEiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIxIiBkPSJNMjAsMjEgQzIwLjQ4NTQxMDMsMjEgMjAuODk4MDg1LDIxLjM0Nzk5OTMgMjAuOTg5OTQ3OSwyMS44NjU0ODc3IEwyMSwyMiBMMjEsMjcgQzIxLDI3LjU1MjI4NDcgMjAuNTUyMjg0NywyOCAyMCwyOCBDMTkuNTE0NTg5NywyOCAxOS4xMDE5MTUsMjcuNjUyMDAwNyAxOS4wMTAwNTIxLDI3LjEzNDUxMjMgTDE5LDI3IEwxOSwyMiBDMTksMjEuNDQ3NzE1MyAxOS40NDc3MTUzLDIxIDIwLDIxIFogTTI3LDE5IEMyNy41NTIyODQ3LDE5IDI4LDE5LjQ0NzcxNTMgMjgsMjAgQzI4LDIwLjQ4NTQxMDMgMjcuNjUyMDAwNywyMC44OTgwODUgMjcuMTM0NTEyMywyMC45ODk5NDc5IEwyNywyMSBMMjIsMjEgQzIxLjQ0NzcxNTMsMjEgMjEsMjAuNTUyMjg0NyAyMSwyMCBDMjEsMTkuNTE0NTg5NyAyMS4zNDc5OTkzLDE5LjEwMTkxNSAyMS44NjU0ODc3LDE5LjAxMDA1MjEgTDIyLDE5IEwyNywxOSBaIE0xOCwxOSBDMTguNTUyMjg0NywxOSAxOSwxOS40NDc3MTUzIDE5LDIwIEMxOSwyMC40ODU0MTAzIDE4LjY1MjAwMDcsMjAuODk4MDg1IDE4LjEzNDUxMjMsMjAuOTg5OTQ3OSBMMTgsMjEgTDEzLDIxIEMxMi40NDc3MTUzLDIxIDEyLDIwLjU1MjI4NDcgMTIsMjAgQzEyLDE5LjUxNDU4OTcgMTIuMzQ3OTk5MywxOS4xMDE5MTUgMTIuODY1NDg3NywxOS4wMTAwNTIxIEwxMywxOSBMMTgsMTkgWiBNMjAsMTIgQzIwLjQ4NTQxMDMsMTIgMjAuODk4MDg1LDEyLjM0Nzk5OTMgMjAuOTg5OTQ3OSwxMi44NjU0ODc3IEwyMSwxMyBMMjEsMTggQzIxLDE4LjU1MjI4NDcgMjAuNTUyMjg0NywxOSAyMCwxOSBDMTkuNTE0NTg5NywxOSAxOS4xMDE5MTUsMTguNjUyMDAwNyAxOS4wMTAwNTIxLDE4LjEzNDUxMjMgTDE5LDE4IEwxOSwxMyBDMTksMTIuNDQ3NzE1MyAxOS40NDc3MTUzLDEyIDIwLDEyIFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0ZGRkZGRiIgeD0iMTguNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjYiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNGRkZGRkYiIHg9IjE3IiB5PSIxOC41IiB3aWR0aD0iNiIgaGVpZ2h0PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjMjEyMzI0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"]]),dd=new Map([["selector",{key:"selector",standardResolution:Ts.get("selector"),highResolution:xpe}],["shapeSynced",{key:"shape",standardResolution:kpe}],["textSynced",{key:"text",standardResolution:Ape}],["pencil",{key:"pencil",standardResolution:Ts.get("pencil"),highResolution:bpe}],["eraser",{key:"eraser",standardResolution:Ts.get("eraser"),highResolution:Epe}],["text",{key:"text",standardResolution:Ts.get("text")}],["shape",{key:"shape",standardResolution:Ts.get("shape")}],["clicker",{key:"clicker",standardResolution:Rpe}]]),Xr={enable:!0,expirationTime:5e3,moveDelayTime:40,preloadTimeout:5e3,appearance:{},syncedLabel:{enableShowName:!0,placement:"top",gap:2,maxWidth:88}};function fd(s){var e,r,n,i;const t={...s==null?void 0:s.appearance};return delete t[De.hand],delete t[De.laserPointer],{enable:(s==null?void 0:s.enable)??Xr.enable,expirationTime:(s==null?void 0:s.expirationTime)??Xr.expirationTime,moveDelayTime:(s==null?void 0:s.moveDelayTime)??Xr.moveDelayTime,preloadTimeout:typeof(s==null?void 0:s.preloadTimeout)=="number"&&Number.isFinite(s.preloadTimeout)&&s.preloadTimeout>0?s.preloadTimeout:Xr.preloadTimeout,appearance:t,syncedLabel:{enableShowName:((e=s==null?void 0:s.syncedLabel)==null?void 0:e.enableShowName)??Xr.syncedLabel.enableShowName,placement:((r=s==null?void 0:s.syncedLabel)==null?void 0:r.placement)??Xr.syncedLabel.placement,gap:((n=s==null?void 0:s.syncedLabel)==null?void 0:n.gap)??Xr.syncedLabel.gap,maxWidth:((i=s==null?void 0:s.syncedLabel)==null?void 0:i.maxWidth)??Xr.syncedLabel.maxWidth}}}function Ppe(s,t){var e,r;return((r=(e=s.appearance[t])==null?void 0:e.synced)==null?void 0:r.enableShowName)??s.syncedLabel.enableShowName}function Dpe(s,t){return{...s,...t,cursor:fd(t==null?void 0:t.cursor)}}const o0=500;function Oc(s){return typeof s!="number"||!Number.isFinite(s)||s<=0?o0:Math.max(1,Math.floor(s))}const zc="1.1.44-beta.0",Lpe="@netless/appliance-plugin",Npe=typeof __RENDER_RUNTIME_BUILD_MARKER__=="string"?__RENDER_RUNTIME_BUILD_MARKER__:"",ju=5e3,Ope=1e4,zpe=1e4;if(typeof window<"u"){let s=window.__netlessUA||"";s+=` ${Lpe}@${zc}`,window.__netlessUA=s}const He={useWorker:"auto",allowImageBitmapFallback:!0,useSimple:!0,workerRenderModeBlacklist:{},workerCanvasContextBlacklist:{},workerMaskTextureFormatBlacklist:{},workerMaskTextureUploadBlacklist:{},fontFaceFallbackBlacklist:{iosWebView:{12:to.RefreshTextRender}},useBackgroundThread:!1,syncOpt:{interval:300,smoothSync:!0},syncLogger:{batchWindowMs:4e3},cursor:{...Xr},bufferSize:{full:4e3,sub:600},bezier:{enable:!1,maxDrawCount:1/0,combineUnitTime:300},pencilEraser:{useBitMap:!0,fullLayerDoingMaskMaxInputPoints:o0,removeOnDone:!0,maxImageWidth:1920,maxImageHeight:1920},strokeWidth:{min:1,max:10},textEditor:{showFloatBar:!0,canSelectorSwitch:!0,rightBoundBreak:!0,extendFontFaces:[],loadFontFacesTimeout:2e4},longDottedStroke:{lineCap:"round",segment:1,gap:2},dottedStroke:{lineCap:"round",segment:1,gap:2},normalStroke:{lineCap:"round"},undoRedo:{enableGlobal:!1,maxStackLength:20,timingFix:!0,ackTimeout:ju},markmap:{enable:!0,timeout:1e4,options:{autoFit:!0,duration:0,zoom:!1,pan:!1,maxInitialScale:10}},overwriteSelectorStyles:{},backgroundImageLoadOptions:hd()},zn=(s,t,e)=>({images:dd.get(s),size:{width:26,height:26},offset:{x:0,y:0},local:{size:t,offset:e},synced:{}}),up={...zn("pencil",{width:26,height:26},{x:-2,y:4}),synced:{offset:{x:0,y:9}}},Bpe={...zn("selector",{width:25,height:25},{x:-5,y:21}),synced:{offset:{x:0,y:26}}},jpe={...zn("eraser",{width:26,height:26},{x:-8,y:8}),synced:{offset:{x:-5,y:13}}},Fpe={...zn("eraser",{width:26,height:26},{x:-8,y:8}),synced:{offset:{x:-5,y:13}}},Upe=zn("eraser",{width:26,height:26},{x:-8,y:8}),Wpe={...zn("text",{width:47,height:40},{x:-20,y:20}),synced:{images:dd.get("textSynced"),offset:{x:-13,y:16}}},yn={...zn("shape",{width:40,height:40},{x:-20,y:20}),synced:{images:dd.get("shapeSynced"),offset:{x:-9,y:16}}},Vpe={...zn("clicker",{width:24,height:24},{x:-4,y:21}),synced:{offset:{x:0,y:26}}},Ma=Object.freeze({[De.selector]:Bpe,[De.clicker]:Vpe,[De.pencil]:up,[De.rectangle]:yn,[De.ellipse]:yn,[De.shape]:yn,[De.eraser]:jpe,[De.pencilEraser]:Fpe,[De.text]:Wpe,[De.straight]:yn,[De.arrow]:yn,[De.laserPen]:up,[ar.star]:yn,[ar.polygon]:yn,[ar.speechBalloon]:yn,[ar.bitMapEraser]:Upe});function a0(s){var e;return{...Dpe(He,s),pencilEraser:{...He.pencilEraser,...s==null?void 0:s.pencilEraser,fullLayerDoingMaskMaxInputPoints:Oc((e=s==null?void 0:s.pencilEraser)==null?void 0:e.fullLayerDoingMaskMaxInputPoints)},syncLogger:{...He.syncLogger,...s==null?void 0:s.syncLogger},backgroundImageLoadOptions:hd(s==null?void 0:s.backgroundImageLoadOptions)}}const wa=[1,0,0,1,0,0];function c0(s,t){const e=s==null?void 0:s.attributes,r=e==null?void 0:e.x,n=e==null?void 0:e.y;return typeof r=="number"&&typeof n=="number"&&Number.isFinite(r)&&Number.isFinite(n)?[r,n]:t}function $t(s){if(!Array.isArray(s)||s.length!==6)return[...wa];const t=s.map(Number);if(t.some(o=>!Number.isFinite(o)))return[...wa];const[e,r,n,i]=t;return Math.abs(e*i-r*n)<1e-10?[...wa]:t.map(o=>Object.is(o,-0)?0:o)}function kn(s,t){const[e,r,n,i,o,a]=s,[c,l,u,h,d,f]=t;return[e*c+n*l,r*c+i*l,e*u+n*h,r*u+i*h,e*d+n*f+o,r*d+i*f+a]}function An(s,t){return[1,0,0,1,s,t]}function $pe(s,t){return[s,0,0,t,0,0]}function Ype(s){const t=s*Math.PI/180,e=Math.cos(t),r=Math.sin(t);return[e,r,-r,e,0,0]}function hp(s,t,e){return kn(An(t,e),kn(s,An(-t,-e)))}function l0(s,t){const[e,r,n,i,o,a]=s;return[e*t[0]+n*t[1]+o,r*t[0]+i*t[1]+a]}function Gpe(s,t,e,r,n,i=2){const o=$t(e),c=[[0,0],[t[0],0],[t[0],t[1]],[0,t[1]]].map(y=>{const S=l0(o,y);return[(s[0]+S[0])*n[0]+r[0],(s[1]+S[1])*n[1]+r[1]]}),l=c.map(y=>y[0]),u=c.map(y=>y[1]),h=Math.min(...l),d=Math.min(...u),f=Math.max(...l),g=Math.max(...u);return{x:Math.floor(h),y:Math.floor(d),w:Math.floor(f-h)+i,h:Math.floor(g-d)+i}}function Fu(s){const t=$t(s);if(!t.every((e,r)=>e===wa[r]))return`matrix(${t.join(",")})`}function Hpe(s,t){const e=$t(s);return!t||!t.every(Number.isFinite)?e:kn(An(-t[0],-t[1]),kn(e,An(t[0],t[1])))}function Qpe(s,t){const e=$t(s);return!t||!t.every(Number.isFinite)?e:kn(An(t[0],t[1]),kn(e,An(-t[0],-t[1])))}const u0=new WeakMap,qpe=new WeakMap,za=new WeakMap,dp=new WeakMap,fp=new WeakMap;function Zpe(s,t,e,r){let n=za.get(s);n||(n=new Map,za.set(s,n)),n.set(t,{...e,gestureOwner:r})}function Kpe(s,t){if(!s)return;const e=za.get(s),r=e==null?void 0:e.get(t);if(!r)return;if(e==null||e.delete(t),e!=null&&e.size||za.delete(s),!r.gestureOwner)return r;const n=dp.get(r.gestureOwner),i=h0(r.matrix,n==null?void 0:n.matrix);if(dp.set(r.gestureOwner,{matrix:r.matrix,toDigest:r.toDigest}),!!i)return{matrix:i,fromDigest:(n==null?void 0:n.toDigest)||r.fromDigest,toDigest:r.toDigest}}function Xpe(s,t,e,r){const n=e?h0(r,fp.get(e)):r;return e&&fp.set(e,r),n?(gd(s,t,n),!0):(f0(s,t),!1)}function h0(s,t){if(!t)return[...s];const e=d0(t);return e?Jpe(s,e):void 0}function Jpe(s,t){return[s[0]*t[0]+s[2]*t[1],s[1]*t[0]+s[3]*t[1],s[0]*t[2]+s[2]*t[3],s[1]*t[2]+s[3]*t[3],s[0]*t[4]+s[2]*t[5]+s[4],s[1]*t[4]+s[3]*t[5]+s[5]]}function d0(s){const[t,e,r,n,i,o]=s,a=t*n-e*r;if(!(!Number.isFinite(a)||Math.abs(a)<=Number.EPSILON))return[n/a,-e/a,-r/a,t/a,(r*o-n*i)/a,(e*i-t*o)/a]}function gd(s,t,e){var r;for(const n of((r=u0.get(s))==null?void 0:r.get(t))||[])n(e)}function _pe(s,t){var e,r;return!!((r=(e=u0.get(s))==null?void 0:e.get(t))!=null&&r.size)}function f0(s,t){var e;for(const r of((e=qpe.get(s))==null?void 0:e.get(t))||[])r()}const pd=16,eme=1;function ci(s){return Object.prototype.hasOwnProperty.call(s,"eraserFaces")}function Uu(s,t){const e={...t};return ci(t)?delete e.eraserlines:s&&ci(s)&&(e.eraserFaces=s.eraserFaces??null,delete e.eraserlines),e}function Ba(s){const t={...s};return delete t.doingLines,t}function tme(s,t,e){const r=ci(s)?s.eraserFaces?qs(s.eraserFaces):[]:Wu(s.eraserlines||[]),n=e?qs(e):[];return{eraserFaces:md(pp(r,pp(n,Wu(t))))}}function md(s,t=pd){if(!Number.isSafeInteger(t)||t<=0)throw new Error("eraserFaces scale must be a positive safe integer");const e=[];Us(e,s.length);for(const r of s){Us(e,r.rings.length);for(const n of r.rings){Us(e,n.length);let i=0,o=0;n.forEach(([a,c],l)=>{const u=yp(a,t),h=yp(c,t);vp(e,l===0?u:u-i),vp(e,l===0?h:h-o),i=u,o=h})}}return{v:1,s:t,e:1,d:m0(e)}}function qs(s){if(s.v!==1||s.e!==1||s.s<=0)throw new Error("unsupported eraserFaces payload");const t=new sme(ome(s.d)),e=[],r=t.readUVarint();for(let n=0;n<r;n++){const i=[],o=t.readUVarint();for(let a=0;a<o;a++){const c=[],l=t.readUVarint();let u=0,h=0;for(let d=0;d<l;d++){const f=t.readSVarint(),g=t.readSVarint();u=d===0?f:u+f,h=d===0?g:h+g,c.push([u/s.s,h/s.s])}i.push(c)}e.push({rings:i})}if(!t.done)throw new Error("trailing eraserFaces bytes");return e}function Wu(s,t=pd){const e=[];for(const r of s){const n=new It.ClipperOffset;n.ArcTolerance=Math.max(.25,t*.05);for(const i of r.op){const o=[];for(let a=0;a<i.length;a+=2)o.push({X:Math.round(i[a]*t),Y:Math.round(i[a+1]*t)});o.length===1&&o.push({...o[0]}),o.length>=2&&n.AddPath(o,It.JoinType.jtRound,It.EndType.etOpenRound)}n.Execute(e,r.thickness*t/2)}return p0(e,t)}function gp(s,t,e){const r=Wu(s),n=Qpe(t,e),i=d0(n);if(i)return md(rme(r,i))}function pp(s,t,e=pd){const r=[...s,...t].flatMap(n=>n.rings.map(i=>i.map(([o,a])=>({X:Math.round(o*e),Y:Math.round(a*e)}))));return p0(r,e)}function rme(s,t){const[e,r,n,i,o,a]=t;return s.map(c=>({rings:c.rings.map(l=>l.map(([u,h])=>[e*u+n*h+o,r*u+i*h+a]))}))}function Zs(s,t){const e=[eme];return Mp(e,s),Mp(e,t),m0(Array.from(ime(Uint8Array.from(e)).slice(0,16)))}function g0(s,t,e){return s.matrix.length===6&&s.matrix.every(Number.isFinite)&&s.fromDigest===Zs(t,e)&&/^[A-Za-z0-9_-]{22}$/.test(s.toDigest)}function nme(s,t,e,r,n){return!g0(e,r.op,r.centerPos)||e.toDigest!==Zs(n.op,n.centerPos)?!1:(gd(s,t,e.matrix),!0)}function Fl(s,t){if(!s)return null;const e=qs(s);for(const r of e)for(const n of r.rings){const i=n.flat();t(i),r.rings[r.rings.indexOf(n)]=Array.from({length:i.length/2},(o,a)=>[i[a*2],i[a*2+1]])}return md(e,s.s)}function p0(s,t){if(!s.length)return[];const e=new It.Clipper;e.AddPaths(s,It.PolyType.ptSubject,!0);const r=new It.PolyTree;e.Execute(It.ClipType.ctUnion,r,It.PolyFillType.pftNonZero,It.PolyFillType.pftNonZero);const n=[],i=o=>{for(const a of o.Childs()){if(!a.IsHole()){const c=[mp(a.Contour(),t)];for(const l of a.Childs())l.IsHole()&&c.push(mp(l.Contour(),t));n.push({rings:c})}i(a)}};return i(r),n}function mp(s,t){return s.map(({X:e,Y:r})=>[e/t,r/t])}function yp(s,t){if(!Number.isFinite(s))throw new Error("eraserFaces coordinate must be finite");const e=Math.round(s*t);if(!Number.isSafeInteger(e))throw new Error("eraserFaces coordinate is out of range");return Object.is(e,-0)?0:e}function Us(s,t){if(!Number.isSafeInteger(t)||t<0)throw new Error("invalid unsigned varint");do{let e=t%128;t=Math.floor(t/128),t&&(e|=128),s.push(e)}while(t)}function vp(s,t){const e=t>=0?t*2:-t*2-1;Us(s,e)}function Mp(s,t){Us(s,t.length);const e=new ArrayBuffer(8),r=new DataView(e);for(const n of t){if(!Number.isFinite(n))throw new Error("geometry digest values must be finite");const i=Object.is(n,-0)?0:n;r.setFloat64(0,i,!0);for(let o=0;o<8;o++)s.push(r.getUint8(o))}}function ime(s){const t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),e=s.length*8,r=Math.ceil((s.length+9)/64)*64,n=new Uint8Array(r);n.set(s),n[s.length]=128;const i=new DataView(n.buffer);i.setUint32(r-8,Math.floor(e/4294967296),!1),i.setUint32(r-4,e>>>0,!1);const o=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),a=new Uint32Array(64),c=(h,d)=>h>>>d|h<<32-d;for(let h=0;h<r;h+=64){for(let T=0;T<16;T++)a[T]=i.getUint32(h+T*4,!1);for(let T=16;T<64;T++){const p=a[T-15],m=a[T-2],v=c(p,7)^c(p,18)^p>>>3,M=c(m,17)^c(m,19)^m>>>10;a[T]=a[T-16]+v+a[T-7]+M>>>0}let[d,f,g,y,S,b,C,N]=o;for(let T=0;T<64;T++){const p=c(S,6)^c(S,11)^c(S,25),m=S&b^~S&C,v=N+p+m+t[T]+a[T]>>>0,M=c(d,2)^c(d,13)^c(d,22),R=d&f^d&g^f&g,E=M+R>>>0;N=C,C=b,b=S,S=y+v>>>0,y=g,g=f,f=d,d=v+E>>>0}o[0]=o[0]+d>>>0,o[1]=o[1]+f>>>0,o[2]=o[2]+g>>>0,o[3]=o[3]+y>>>0,o[4]=o[4]+S>>>0,o[5]=o[5]+b>>>0,o[6]=o[6]+C>>>0,o[7]=o[7]+N>>>0}const l=new Uint8Array(32),u=new DataView(l.buffer);return o.forEach((h,d)=>u.setUint32(d*4,h,!1)),l}class sme{constructor(t){x(this,"index",0);this.bytes=t}get done(){return this.index===this.bytes.length}readUVarint(){let t=0,e=1;for(let r=0;r<8;r++){const n=this.bytes[this.index++];if(n===void 0)throw new Error("truncated eraserFaces payload");if(t+=(n&127)*e,!(n&128))return t;e*=128}throw new Error("eraserFaces varint is too long")}readSVarint(){const t=this.readUVarint();return t%2===0?t/2:-(t+1)/2}}function m0(s){let t="";for(let e=0;e<s.length;e+=32768)t+=String.fromCharCode(...s.slice(e,e+32768));return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function ome(s){const t=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(Math.ceil(s.length/4)*4,"="),e=atob(t);return Uint8Array.from(e,r=>r.charCodeAt(0))}function Or(s,t=!0){const e=s.length;if(e<2)return"";let r=s[0],n=s[1];if(e===2)return`M${Pi(r)}L${Pi(n)}`;let i="";for(let o=2,a=e-1;o<a;o++)r=s[o],n=s[o+1],i+=Di(r,n);return t?`M${Di(s[0],s[1])}Q${Pi(s[1])}${Di(s[1],s[2])}T${i}${Di(s[e-1],s[0])}${Di(s[0],s[1])}Z`:`M${Pi(s[0])}Q${Pi(s[1])}${Di(s[1],s[2])}${s.length>3?"T":""}${i}L${Pi(s[e-1])}`}function ame(s,t){const e=t>0?t:1,r=Math.floor(s.x*e),n=Math.floor(s.y*e),i=Math.ceil((s.x+s.w)*e),o=Math.ceil((s.y+s.h)*e);return{x:r,y:n,w:Math.max(1,i-r),h:Math.max(1,o-n)}}function cme(s,t){const r=1/(t>0?t:1);return{x:s.x-r,y:s.y-r,w:s.w+r*2,h:s.h+r*2}}function lme(s,t,e){const r=Math.abs(e[0])||1,n=Math.abs(e[1])||1;return{size:[t.w/r,t.h/n],textureRect:[(s.x-t.x)/r,(s.y-t.y)/n,s.w/r,s.h/n]}}function Bn(s){return JSON.parse(vm.decompress(s))}function xt(s){return vm.compress(JSON.stringify(s))}const at=Object.keys;function ume(s,t,e){return s===Q.Text&&!!(e!=null&&e.has(t))}function hme(s,t){if(!t)return s;const e=s.opt;return{...s,opt:{...e,...t.fontSize!==void 0?{fontSize:t.fontSize}:{},...t.boxSize!==void 0?{boxSize:t.boxSize}:{}}}}const wp=new WeakMap,qt=class qt{constructor(t){x(this,"maxImageWidth",He.pencilEraser.maxImageWidth);x(this,"maxImageHeight",He.pencilEraser.maxImageHeight);x(this,"syncUnitTime",He.syncOpt.interval);x(this,"vNodes");x(this,"drawLayer");x(this,"fullLayer");x(this,"workId");x(this,"confirmEraserDeletion",!1);x(this,"isDelete",!1);const{vNodes:e,fullLayer:r,drawLayer:n,workId:i,toolsOpt:o}=t;this.vNodes=e,this.fullLayer=r,this.drawLayer=n,this.workId=i,this.syncUnitTime=o.syncUnitTime||this.syncUnitTime}static async normalizeStorageData(t){return this.normalizeStorageDataSync(t)}static normalizeStorageDataSync(t){const e=lt(t),r=JSON.stringify(t);if(e.opt){const n=Ba(e.opt);e.opt={...Uu(void 0,n),matrix:$t(n.matrix)},delete e.opt.matrixDelta,delete e.opt.previewMatrix}return e.updateNodeOpt={...e.updateNodeOpt,useAnimation:!1},{status:JSON.stringify(e)===r?"already-stable":"stable",value:e}}static async normalizeDrawableStorageData(t){return this.normalizeDrawableStorageDataSync(t)}static normalizeDrawableStorageDataSync(t){const e=qt.normalizeStorageDataSync(t);if(e.status==="unrecoverable")return e;const r=e.value;return r.type===le.DrawWork&&!r.ops&&Array.isArray(r.op)&&r.op.length?(r.type=le.FullWork,r.ops=xt(r.op),{status:"stable",value:r}):e}get baseConsumeResult(){return{workId:this.workId,toolsType:this.toolsType,opt:{...this.workOptions,matrix:$t(this.workOptions.matrix)}}}filterSamePoints(t,e=.01){return t.reduce((r,n)=>{const i=r[r.length-1];return(n&&!i||n&&i&&!n.isNear(i,e))&&r.push(n),r},[])}setWorkId(t){this.workId=t}getWorkId(){return this.workId}setEraserDeleteConfirmation(t){this.confirmEraserDeletion=t}getWorkOptions(){return this.workOptions}setWorkOptions(t){var i,o,a;const e=Uu(this.workOptions,t);this.workOptions=e,this.syncUnitTime=t.syncUnitTime||this.syncUnitTime;const r=(i=this.workId)==null?void 0:i.toString(),n=r&&((o=this.vNodes)==null?void 0:o.get(r))||void 0;r&&n&&(n.opt=Ba(e),(a=this.vNodes)==null||a.setInfo(r,n))}getRenderableEraserLines(t){return[...t.eraserlines||[],...t.doingLines||[]]}updataOptService(t){var n,i;let e;const r=(n=this.workId)==null?void 0:n.toString();if(r&&t){const o=this.fullLayer.getElementsByName(r)||this.drawLayer&&this.drawLayer.getElementsByName(r)||[];if(o.length!==1)return;const a=o[0],{pos:c,zIndex:l,scale:u,angle:h,translate:d}=t,f={};gt(l)&&(f.zIndex=l),c&&(f.pos=[c[0],c[1]]),u&&(f.scale=u),h&&(f.rotate=h),d&&(f.translate=d),a.attr(f);const g=a==null?void 0:a.getBoundingClientRect();return g&&(e=Ue(e,{x:Math.floor(g.x-qt.SafeBorderPadding),y:Math.floor(g.y-qt.SafeBorderPadding),w:Math.floor(g.width+qt.SafeBorderPadding*2),h:Math.floor(g.height+qt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(r,{rect:e,centerPos:c}),e}}drawEraserlines(t,e){const{group:r,eraserlines:n=[],eraserFaces:i,pos:o,layer:a}=t,c=a.parent;if(e)try{const u=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,h=r.getBoundingClientRect(),d=h.width*u*a.worldScaling[0],f=h.height*u*a.worldScaling[1];let g=1;if((d>this.maxImageWidth||f>this.maxImageHeight)&&(g=Math.min(this.maxImageWidth/d,this.maxImageHeight/f)),c.renderer.glRenderer&&!this.confirmEraserDeletion&&this.drawEraserMask({group:r,eraserlines:n,eraserFaces:i,pos:o,layer:a,targetScale:g}))return;let y=a.getAttribute("scale");y=[y[0]*g,y[1]*g];const S=a.parent.parent,b=a.getAttribute("translate"),C=this.createVmRenderNode(`${this.workId}_bitMapLayer`,S,{offscreen:c.offscreen,width:c.width,height:c.height,contextType:"2d",autoRender:!1,bufferSize:500},y,b),N=r.cloneNode(!0);if(!n.length&&!i)return;i&&this.addEraserFaces(N,i,o,!1),this.addEraserlines(N,n,o,!1),C.appendChild(N);const T=C.parent;T.render();const p=C.renderer.canvasRenderer,m=p.context;if(!m)return;const v=p.options.displayRatio,M=N.getBoundingClientRect(),R={x:M.x,y:M.y,w:M.width,h:M.height},E={x:0,y:0,w:S.width,h:S.height};if(Uc(R,E)===on.outside){hr(N,T),S.removeChild(T),this.isDelete=!0;return}const k=cme(R,v),O=lt(k);O.x=Math.floor(Math.max(k.x,0)),O.y=Math.floor(Math.max(k.y,0)),O.w=Math.min(k.x+k.w,S.width)-O.x,O.h=Math.min(k.y+k.h,S.height)-O.y;const B=this.getGroupRect(O,v),D=B.x,A=B.y,L=B.w,U=B.h;let Y=m.getImageData(D,A,L,U);if(this.confirmEraserDeletion&&this.isTransparentRectByCanvas(Y)){hr(N,T),S.removeChild(T),this.isDelete=!0,Y=null;return}if(this.confirmEraserDeletion&&c.renderer.glRenderer&&this.drawEraserMask({group:r,eraserlines:n,eraserFaces:i,pos:o,layer:a,targetScale:g})){hr(N,T),S.removeChild(T),Y=null;return}hr(r,c);const q=this.createSpriteNode({imageData:Y,safariRect:O,originRect:k,worldScaling:C.worldScaling});q&&r.append(q),hr(N,T),S.removeChild(T),c.deleteTexture(Y),Y=null}catch(l){console.error("[BaseShapeTool] drawEraserlines error:",l);return}}drawEraserMask(t){var m,v;const{group:e,eraserlines:r,eraserFaces:n,pos:i,layer:o,targetScale:a}=t;if(!r.length&&!n||e.getAttribute("clipPath"))return!1;const c=Number(e.getAttribute("width")),l=Number(e.getAttribute("height"));if(!(c>0)||!(l>0))return!1;const u=o.parent.renderer;if(!u.glRenderer)return!1;const h=u.options.displayRatio||1,d=Math.max(1,Math.ceil(c*h*o.worldScaling[0]*a)),f=Math.max(1,Math.ceil(l*h*o.worldScaling[1]*a)),g=[-c/2,-l/2,c,l];let y=wp.get(o);y||(y=new Map,wp.set(o,y)),this.pruneEraserMaskCaches(o,y,u);let S=y.get(this.workId),b=!S||S.pixelWidth!==d||S.pixelHeight!==f||S.facesKey!==(n==null?void 0:n.d);if(S&&!b&&(b=this.isEraserMaskPrefixChanged(S,r)),b){if(S==null||S.handle.destroy(u),S=this.createEraserMaskCache(d,f,g),!S)return!1;y.set(this.workId,S)}if(!S)return!1;const C=d/c,N=f/l;S.context.setTransform(C,0,0,N,d/2,f/2),b&&n&&(this.appendEraserMaskFaces(S.context,n,i),S.facesKey=n.d);let T=b,p;for(const M of r){const R=S.commands.get(M.workId),E=b?0:(R==null?void 0:R.count)||0;for(let P=E;P<M.op.length;P++)T=!0,p=Ue(p,this.appendEraserMaskStroke(S.context,M.op[P],M.thickness,i));S.commands.set(M.workId,{count:M.op.length,thickness:M.thickness,first:(m=M.op[0])==null?void 0:m.slice(0,2),last:(v=M.op[M.op.length-1])==null?void 0:v.slice(-2)})}return T&&S.handle.update({rect:g,dirtyRect:b||!p?void 0:[p.x,p.y,p.w,p.h]}),e.setMask(S.handle,{rect:g}),!0}pruneEraserMaskCaches(t,e,r){for(const[n,i]of e)n!==this.workId&&t.getElementsByName(n).length===0&&(i.handle.destroy(r),e.delete(n))}createEraserMaskCache(t,e,r){var o,a;let n;typeof OffscreenCanvas=="function"?n=new OffscreenCanvas(t,e):typeof document<"u"&&(n=document.createElement("canvas"),n.width=t,n.height=e);const i=n==null?void 0:n.getContext("2d");if(!(!n||!i))return i.save(),i.setTransform(1,0,0,1,0,0),i.fillStyle="#fff",i.fillRect(0,0,t,e),i.restore(),{canvas:n,context:i,handle:new Koe(n,{rect:r,singleChannelTexture:((o=this.fullLayer.parent.renderer.options.bitmapEraserMaskOptions)==null?void 0:o.singleChannelTexture)!==!1,textureSubImage2D:((a=this.fullLayer.parent.renderer.options.bitmapEraserMaskOptions)==null?void 0:a.textureSubImage2D)!==!1}),rect:r,pixelWidth:t,pixelHeight:e,commands:new Map}}appendEraserMaskStroke(t,e,r,n){if(e.length<2)return;t.save(),t.fillStyle="#000",t.strokeStyle="#000",t.lineCap="round",t.lineJoin="round",t.lineWidth=r;const i=e[0]-n[0],o=e[1]-n[1];if(e.length===2)t.beginPath(),t.arc(i,o,r/2,0,Math.PI*2),t.fill();else{t.beginPath(),t.moveTo(i,o);for(let g=2;g<e.length;g+=2)t.lineTo(e[g]-n[0],e[g+1]-n[1]);t.stroke()}t.restore();const a=[],c=[];for(let g=0;g<e.length;g+=2)a.push(e[g]-n[0]),c.push(e[g+1]-n[1]);const l=r/2+1,u=Math.min(...a),h=Math.min(...c),d=Math.max(...a),f=Math.max(...c);return{x:u-l,y:h-l,w:d-u+l*2,h:f-h+l*2}}appendEraserMaskFaces(t,e,r){t.save(),t.fillStyle="#000",t.beginPath();for(const n of qs(e))for(const i of n.rings)i.forEach(([o,a],c)=>{const l=o-r[0],u=a-r[1];c===0?t.moveTo(l,u):t.lineTo(l,u)}),t.closePath();t.fill("evenodd"),t.restore()}isEraserMaskPrefixChanged(t,e){var r,n;if(t.commands.size>e.length)return!0;for(const i of e){const o=t.commands.get(i.workId);if(o&&(i.op.length<o.count||i.thickness!==o.thickness||!this.isSamePoint(o.first,(r=i.op[0])==null?void 0:r.slice(0,2))||!this.isSamePoint(o.last,(n=i.op[o.count-1])==null?void 0:n.slice(-2))))return!0}return!1}isSamePoint(t,e){return!t||!e?t===e:t[0]===e[0]&&t[1]===e[1]}createVmRenderNode(t,e,r,n,i){const{width:o,height:a}=r,c=`bitMap-${t}`,l=e.layer(c,r),u=new dt({anchor:[.5,.5],pos:[o*.5,a*.5],size:[o,a],name:"viewport",id:t});return u.setAttribute("scale",n),u.setAttribute("translate",i),l.append(u),u}getGroupRect(t,e){return ame(t,e)}addEraserlines(t,e,r,n=!0){for(const i of e){const{thickness:o,op:a}=i;for(const c of a){const l=c.map((g,y)=>y%2?g-r[1]:g-r[0]),u=this.computEraserPoints(l,o),h=Or(u,!0),d={pos:[0,0],d:h,fillColor:"rgba(0,0,0,1)"},f=new Yt(d);f.addEventListener("beforerender",({detail:g})=>{const y=g.context;n?y.blendFuncSeparate(y.ZERO,y.ZERO,y.ZERO,y.ZERO):y.globalCompositeOperation="destination-out"}),f.addEventListener("afterrender",({detail:g})=>{const y=g.context;n?y.blendFuncSeparate(y.SRC_ALPHA,y.ONE_MINUS_SRC_ALPHA,y.ONE,y.ONE_MINUS_SRC_ALPHA):y.globalCompositeOperation="source-over"}),t.append(f)}}}addEraserFaces(t,e,r,n=!0){const i=qs(e).flatMap(a=>a.rings.map(c=>Or(c.map(([l,u])=>new Pe(l-r[0],u-r[1])),!0))).join(" ");if(!i)return;const o=new Yt({pos:[0,0],d:i,fillColor:"rgba(0,0,0,1)",fillRule:"evenodd"});o.addEventListener("beforerender",({detail:a})=>{const c=a.context;n?c.blendFuncSeparate(c.ZERO,c.ZERO,c.ZERO,c.ZERO):c.globalCompositeOperation="destination-out"}),o.addEventListener("afterrender",({detail:a})=>{const c=a.context;n?c.blendFuncSeparate(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA):c.globalCompositeOperation="source-over"}),t.append(o)}isTransparentRectByCanvas(t){let e=!0;for(let r=0;r<t.data.length;r+=4)if(t.data[r+3]!==0){e=!1;break}return e}createSpriteNode(t){const{imageData:e,worldScaling:r,safariRect:n,originRect:i}=t;let o;if(typeof OffscreenCanvas=="function"){o=new OffscreenCanvas(e.width,e.height);const d=o.getContext("2d");d&&d.putImageData(e,0,0)}else if(typeof document<"u"){o=document.createElement("canvas"),o.width=e.width,o.height=e.height;const d=o.getContext("2d");d&&d.putImageData(e,0,0)}if(!o)return console.warn("Failed to create imageEraserBitmap Sprite"),null;const{size:a,textureRect:c}=lme(n,i,r),l={name:"eraserTexture",anchor:[.5,.5],pos:[0,0],size:a,texture:o,textureRect:c},u=new xc(l);let h=!0;return u.addEventListener("beforerender",({detail:d})=>{const f=d.context;typeof f.imageSmoothingEnabled=="boolean"&&(h=f.imageSmoothingEnabled,f.imageSmoothingEnabled=!1)}),u.addEventListener("afterrender",({detail:d})=>{const f=d.context;typeof f.imageSmoothingEnabled=="boolean"&&(f.imageSmoothingEnabled=h)}),u}computEraserPoints(t,e){const r=Math.ceil(e/2);return t.length===2?this.computDot(t,r):this.computLine(t,r)}computDot(t,e){const r=new Pe(t[0],t[1]);return Pe.GetDotStroke(r,e,8)}computLine(t,e){const r=[],n=[];let i,o;for(let a=0;a<t.length;a+=2){const c=new Pe(t[a],t[a+1]);let l;if(a==t.length-2){const u=new Pe(t[a-2],t[a-1]);l=fe.Sub(c,u).uni(),i=c}else{a===0&&(o=c);const u=new Pe(t[a+2],t[a+3]);l=fe.Sub(u,c).uni()}if(l){const u=fe.Per(l).mul(e);r.push(Pe.Sub(c,u)),n.push(Pe.Add(c,u))}}if(i&&o){const a=Pe.GetSemicircleStroke(i,r[r.length-1],-1,8),c=Pe.GetSemicircleStroke(o,n[0],-1,8);return r.concat(a,n.reverse(),c)}return[]}replace(t,e,r){var i;if(r&&this.workOptions.matrix){const o=Fu(this.workOptions.matrix);o&&r.setAttribute("transform",o)}if(!e){r&&t.append(r);return}const n=t.getElementsByName(e);if(n.length)for(const o of n)r?pMe(r,o,t):(o.remove(),dr(o,t.parent));else r&&t.append(r);this.fullLayer!==this.drawLayer&&(this.fullLayer===t?(i=this.drawLayer)==null||i.getElementsByName(e).forEach(a=>{var c;a.remove(),dr(a,(c=this.drawLayer)==null?void 0:c.parent)}):this.fullLayer.getElementsByName(e).forEach(a=>{a.remove(),dr(a,this.fullLayer.parent)}))}removeDrawCountNodes(t,e){const r=[];t.getElementsByName(this.workId).forEach(n=>{n.id&&e&&Number(n.id)<e&&r.push(n)});for(const n of r)n.remove(),dr(n,t.parent)}static updateNodeOpt(t){var m,v,M;const{node:e,opt:r,vNodes:n,willSerializeData:i,targetNode:o}=t,{zIndex:a,translate:c,angle:l,originPoint:u,scenePoint:h,scale:d,pointMap:f,thickness:g}=r;let y;const S=o&&lt(o)||n.get(e.name);if(!S)return;if(r.matrixDelta||r.previewMatrix){const R=$t(((m=o==null?void 0:o.opt)==null?void 0:m.matrix)||((v=S.opt)==null?void 0:v.matrix)),E=c0(e,S.centerPos),P=r.matrixDelta?Hpe(r.matrixDelta,E):void 0,k=$t(r.previewMatrix||kn(P||$t(void 0),R)),O=i||r.workState===he.Done;e.setAttribute("transform",Fu(k));const D=e.parent&&n.getNodeRectFormShape(e.name,S,k);return D&&(S.rect=D),O&&(S.opt.matrix=k,S.matrix=k,S.opt.translate=void 0,S.opt.scale=void 0,S.opt.rotate=void 0),n.setInfo(e.name,{...S,previewMatrix:O?void 0:k}),D}const b=r.eraserGeometryDelta,N=!!b||!!u&&!!d&&!!o||!!i&&(!!c||gt(l))?Zs(S.op,S.centerPos):void 0;if(b&&(!N||!g0(b,S.op,S.centerPos)))return;b&&gd(n,e.name,b.matrix);let T;gt(a)&&(e.setAttribute("zIndex",a),S.opt.zIndex=a);const p=e.parent;if(p){if(u&&d&&o){if(T=[d[0],0,0,d[1],h[0]*(1-d[0])+((c==null?void 0:c[0])||0),h[1]*(1-d[1])+((c==null?void 0:c[1])||0)],xd(S.op,h,d,c),Sa(S.centerPos,h,d,c),S.opt.translate=void 0,S.opt.scale=void 0,S.opt.eraserlines)for(let R=0;R<S.opt.eraserlines.length;R++){const{op:E,thickness:P}=S.opt.eraserlines[R];S.opt.eraserlines[R].thickness=Math.round(P*Math.max(Math.abs(d[0]),Math.abs(d[1])));for(let k=0;k<E.length;k++)Sa(E[k],h,d,c)}ci(S.opt)&&(S.opt.eraserFaces=Fl(S.opt.eraserFaces??null,R=>Sa(R,h,d,c)),delete S.opt.eraserlines)}else if(c)if(e.setAttribute("translate",c),S.opt.translate=c,o){const R=[c[0]*p.worldScaling[0],c[1]*p.worldScaling[1]];y=_s(S.rect,R),S.rect=y}else{const R=qt.getRectFromLayer(p,e.name);S.rect=R||S.rect}else if(gt(l))if(e.setAttribute("rotate",l),S.opt.rotate=l,o)y=Ed(S.rect,l),S.rect=y;else{const R=qt.getRectFromLayer(p,e.name);S.rect=R||S.rect}if(f){const R=f.get(e.name);if(R)for(let E=0,P=0;E<S.op.length;E+=3,P++)S.op[E]=R[P][0],S.op[E+1]=R[P][1]}if(g&&((M=S==null?void 0:S.opt)!=null&&M.thickness)&&(S.opt.thickness=g),i&&!(u&&d&&o)){if(c){T=[1,0,0,1,c[0],c[1]];const R=S.op.map((E,P)=>{const k=P%3;return k===0?E+c[0]:k===1?E+c[1]:E});if(S.op=R,S.centerPos=[S.centerPos[0]+c[0],S.centerPos[1]+c[1]],S!=null&&S.opt&&(S.opt.translate=void 0),S.opt.eraserlines)for(let E=0;E<S.opt.eraserlines.length;E++){const{op:P}=S.opt.eraserlines[E];for(let k=0;k<P.length;k++){const O=P[k].map((B,D)=>D%2?B+c[1]:B+c[0]);S.opt.eraserlines[E].op[k]=O}}ci(S.opt)&&(S.opt.eraserFaces=Fl(S.opt.eraserFaces??null,E=>{for(let P=0;P<E.length;P+=2)E[P]+=c[0],E[P+1]+=c[1]}),delete S.opt.eraserlines)}else if(gt(l)){const R=Math.PI*l/180,E=Math.cos(R),P=Math.sin(R),[k,O]=S.centerPos;T=[E,P,-P,E,k-E*k+P*O,O-P*k-E*O];const B=S.op;if(lMe(B,S.centerPos,l),S.op=B,S!=null&&S.opt&&(S.opt.rotate=void 0),S.opt.eraserlines)for(let D=0;D<S.opt.eraserlines.length;D++){const{op:A}=S.opt.eraserlines[D];for(let L=0;L<A.length;L++)Hp(A[L],S.centerPos,l)}ci(S.opt)&&(S.opt.eraserFaces=Fl(S.opt.eraserFaces??null,D=>Hp(D,S.centerPos,l)),delete S.opt.eraserlines)}}if(N&&T){const R=Zs(S.op,S.centerPos);if(b&&b.toDigest!==R)return;b||(Xpe(n,e.name,o,T),Zpe(n,e.name,{matrix:T,fromDigest:N,toDigest:R},o))}S&&n.setInfo(e.name,S)}}static getCenterPos(t,e){const{worldPosition:r,worldScaling:n}=e;return[(t.x+t.w/2-r[0])/n[0],(t.y+t.h/2-r[1])/n[1]]}static getRectFromLayer(t,e){const r=t.getElementsByName(e)[0];if(r){const n=r.getBoundingClientRect();return{x:Math.floor(n.x-qt.SafeBorderPadding),y:Math.floor(n.y-qt.SafeBorderPadding),w:Math.floor(n.width+qt.SafeBorderPadding*2),h:Math.floor(n.height+qt.SafeBorderPadding*2)}}}static isWillRefresh(t){const{toolsType:e,opt:r,node:n,updateOpt:i,willSerializeData:o}=t;return ume(e,n.name,i.textInfos)?!0:i.matrixDelta||i.previewMatrix?o||i.workState===he.Done:!!(o&&(i.angle||i.translate)||i.thickness&&r.thickness&&r.thickness!==i.thickness||i.strokeType&&r.strokeType&&r.strokeType!==i.strokeType||i.originPoint&&i.scenePoint&&i.scale||i.pointMap&&i.pointMap.has(n.name)||e===Q.Text&&(i.fontSize||i.translate||i.textInfos&&i.textInfos.get(n.name))||e===Q.BackgroundSVG&&(i.translate||i.scale)||e===Q.Image&&(i.angle||i.translate||i.scale||i.strokeColor&&r.type===an.Iconify)||e===i.toolsType&&i.willRefresh||r.eraserlines&&r.eraserlines.length&&(i.strokeColor||i.fillColor))}};x(qt,"SafeBorderPadding",10);let xe=qt;const yd=Object.freeze([Object.freeze({width:18,height:26}),Object.freeze({width:26,height:34}),Object.freeze({width:34,height:50}),Object.freeze({width:48,height:74})]);function y0(s,t,e=.01){return Math.abs(s[0]-t[0])<e&&Math.abs(s[1]-t[1])<e}function dme(s,t=.01){if(s.length===0)return[];const e=[[s[0][0],s[0][1]]];for(let r=1;r<s.length;r++)y0([s[r][0],s[r][1]],e[e.length-1],t)||e.push([s[r][0],s[r][1]]);return e}function fme(s,t=.01){if(s.length<=2)return s;const e=s[0],r=s[s.length-1];return y0(e,r,t)?s.slice(0,-1):s}function gme(s){const t=s.reduce((r,n)=>r+n[0],0)/s.length,e=s.reduce((r,n)=>r+n[1],0)/s.length;return[t,e]}function Sp(s,t){return Math.atan2(t[1]-s[1],t[0]-s[0])}function pme(s,t=.01){if(s.length<=2)return s;const e=[];for(const n of s)e.some(o=>Math.abs(o[0]-n[0])<t&&Math.abs(o[1]-n[1])<t)||e.push([n[0],n[1]]);const r=gme(e);return e.sort((n,i)=>{const o=Sp(r,n),a=Sp(r,i);return o-a})}function mme(s,t){const e=t[0].x<t[t.length-1].x;return s.map(n=>{const o=n.map(a=>{let c=-1,l=1/0,u=0;for(let h=0;h<t.length;h++){const d=t[h],f=Math.sqrt(Math.pow(d.x-a[0],2)+Math.pow(d.y-a[1],2));f<l&&(l=f,c=h,u=d.z)}return{point:a,index:c,bestZ:u}}).sort((a,c)=>a.index-c.index).map(a=>[...a.point,a.bestZ]);return e&&o[0][0]>o[o.length-1][0]||!e&&o[0][0]<o[o.length-1][0]?o.reverse():o}).sort((n,i)=>{const o=n[0][0],a=i[0][0];return e?o-a:a-o})}function yme(s,t,e=.01){const n=s.map(h=>[h.x,h.y]),i=(h,d)=>h.map(([f,g])=>({X:Math.round(f*d),Y:Math.round(g*d)})),o=new It.ClipperOffset;o.AddPath(i(n,1e3),It.JoinType.jtRound,It.EndType.etOpenButt);const a=[];o.Execute(a,1);const c=new It.Clipper;c.AddPaths(a,It.PolyType.ptSubject,!0),t.forEach(h=>{c.AddPath(i(h,1e3),It.PolyType.ptClip,!0)});const l=new It.Paths;c.Execute(It.ClipType.ctDifference,l,It.PolyFillType.pftNonZero,It.PolyFillType.pftNonZero);const u=l.map(h=>fme(pme(dme(h.map(d=>[d.X/1e3,d.Y/1e3]),e),e),e)).filter(h=>h.length>=2);return mme(u,s)}class v0 extends xe{constructor(e){super(e);x(this,"canRotate",!0);x(this,"scaleType",Ye.all);x(this,"toolsType",Q.Pencil);x(this,"syncTimestamp");x(this,"syncIndex",0);x(this,"tmpPoints",[]);x(this,"MAX_REPEAR",10);x(this,"uniThickness");x(this,"workOptions");x(this,"centerPos",[0,0]);this.workOptions=e.toolsOpt,this.uniThickness=this.MAX_REPEAR/this.workOptions.thickness/10,this.syncTimestamp=0}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}setPointVector(e,r){if(!r)return!1;const n=e.x-r.x,i=e.y-r.y;if(n===0&&i===0)return!1;const o=fe.Sub(e,r).uni();return!Number.isFinite(o.x)||!Number.isFinite(o.y)?!1:(e.setv(o),!0)}combineConsume(){var a;const e=(a=this.workId)==null?void 0:a.toString();if(this.tmpPoints.length<2)return{type:le.None};const r=this.transformDataAll(!0),n={name:e};let i;const o=this.drawLayer||this.fullLayer;return r.length&&(i=this.draw({attrs:n,tasks:r,replaceId:e,layer:o})),{rect:i,type:le.DrawWork,dataType:Re.Local}}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,drawCount:a,removeDrawCount:c,isSimpleWorker:l}=e,{workId:u,syncUnitTime:h}=r;h&&(this.syncUnitTime=h);const{tasks:d,effects:f,consumeIndex:g}=this.transformData(r,!1);this.syncIndex=Math.min(this.syncIndex,g,Math.max(0,this.tmpPoints.length-2));const y={name:u,id:gt(a)&&a.toString()||void 0};let S,b=!1;const C=this.syncIndex;if(this.syncTimestamp===0&&(this.syncTimestamp=Date.now()),d.length&&(d[0].taskId-this.syncTimestamp>this.syncUnitTime&&(b=!0,this.syncTimestamp=d[0].taskId,this.syncIndex=this.tmpPoints.length),i||o||l)){const p=n?this.fullLayer:this.drawLayer||this.fullLayer;S=this.draw({attrs:y,tasks:d,effects:f,layer:p,removeDrawCount:c})}if(l){const p=[];this.tmpPoints.slice(C).forEach(v=>{p.push(v.x,v.y,this.computRadius(v.z,this.workOptions.thickness))});const m=!this.workOptions.previewLocalOnly&&b;return{...this.baseConsumeResult,type:le.DrawWork,dataType:Re.Local,op:m?p:void 0,index:m?C*3:void 0,rect:S,updateNodeOpt:{useAnimation:!0}}}if(i)return g>10&&this.tmpPoints.splice(0,g-10),{rect:S,type:le.DrawWork,dataType:Re.Local};const N=[];this.tmpPoints.slice(C).forEach(p=>{N.push(p.x,p.y,this.computRadius(p.z,this.workOptions.thickness))});const T=!this.workOptions.previewLocalOnly&&b;return{...this.baseConsumeResult,type:le.DrawWork,dataType:Re.Local,rect:S,op:T?N:void 0,index:T?C*3:void 0,updateNodeOpt:{useAnimation:!0}}}consumeAll(e){var u;const r=this.workId;if(e.data){const{op:h,workState:d}=e.data;h!=null&&h.length&&d===he.Done&&this.workOptions.strokeType===Be.Stroke&&this.updateTempPointsWithPressureWhenDone(h)}const n=this.fullLayer;if(this.tmpPoints.length<2)return this.replace(n,r),{type:le.RemoveNode,removeIds:[r]};const i=this.transformDataAll(!0),o={name:r};let a;i.length&&(a=this.draw({attrs:o,tasks:i,replaceId:r,layer:n}));const c=[];this.tmpPoints.map(h=>{c.push(h.x,h.y,h.z)}),this.syncTimestamp=0,delete this.workOptions.syncUnitTime;const l=xt(c);return(u=this.vNodes)==null||u.setInfo(r,{rect:a,op:c,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:a&&xe.getCenterPos(a,n)}),{...this.baseConsumeResult,rect:a,type:le.FullWork,dataType:Re.Local,ops:l,updateNodeOpt:{pos:this.centerPos,useAnimation:!0}}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var h,d;const{op:r,isFullWork:n,replaceId:i,workState:o=he.Done}=e;this.tmpPoints.length=0;for(let f=0;f<r.length;f+=3){const g=new Pe(r[f],r[f+1],r[f+2]);if(this.tmpPoints.length>0){const y=this.tmpPoints[this.tmpPoints.length-1];if(!this.setPointVector(g,y))continue}this.tmpPoints.push(g)}if(this.tmpPoints.length<2)return;const a=this.transformDataAll(!0),c=(h=this.workId)==null?void 0:h.toString(),l={name:c};let u;if(c&&a.length){const f=n?this.fullLayer:this.drawLayer||this.fullLayer;u=this.draw({attrs:l,tasks:a,replaceId:i,layer:f,isDrawEraserlines:o===he.Done}),(d=this.vNodes)==null||d.setInfo(c,{rect:u,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&xe.getCenterPos(u,f)})}return u}computPencilPoints(e){const r=[],{op:n,eraserPolylines:i,eraserThickness:o}=e;this.tmpPoints.length=0;for(let c=0;c<n.length;c+=3){const l=new Pe(n[c],n[c+1],n[c+2]);if(this.tmpPoints.length>0){const u=this.tmpPoints[this.tmpPoints.length-1];if(!this.setPointVector(l,u))continue}this.tmpPoints.push(l)}if(this.tmpPoints.length<2)return;const a=this.transformDataAll(!0);if(a.length)for(let c=0;c<a.length;c++){const{pos:l,points:u}=a[c],h=u.map(g=>g.point.addXY(l[0],l[1])),d=[];for(const g of i){const y=[];for(let b=0;b<g.length;b+=2){const C=new Pe(g[b],g[b+1]);if(y.length>0){const N=y[y.length-1].point;if(!this.setPointVector(C,N))continue}y.push({point:C,radius:o})}const{ps:S}=this.computStroke(y,!1);d.push(S.map(b=>b.XY))}yme(h,d,.01).forEach(g=>{r.push(g.map(y=>[y[0],y[1],y[2]]).flat(1))})}return r}transformDataAll(e=!0){return this.getTaskPoints(this.tmpPoints,e&&this.workOptions.thickness||void 0)}draw(e){const{attrs:r,tasks:n,replaceId:i,effects:o,layer:a,removeDrawCount:c,isDrawEraserlines:l=!0}=e,{strokeColor:u,strokeType:h,thickness:d,zIndex:f,scale:g,rotate:y,translate:S,eraserlines:b,eraserFaces:C,doingLines:N,lineCap:T,lineDash:p}=this.workOptions;o!=null&&o.size&&(o.forEach(P=>{var k;(k=a.getElementById(P+""))==null||k.remove()}),o.clear()),c&&this.removeDrawCountNodes(a,c);let m;const v=[],M=a.worldPosition,R=a.worldScaling;for(let P=0;P<n.length;P++){const{pos:k,points:O}=n[P],{ps:B,rect:D}=this.computDrawPoints(O);let A;const L=O.length===1;h===Be.Stroke||L?A=Or(B,!0):A=Or(B,!1);const U={pos:k,d:A,fillColor:h===Be.Stroke||L?u:void 0,lineDash:L?void 0:h===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*d]:h===Be.LongDotted?[(p&&p[0]||1)*d,(p&&p[1]||2)*d]:void 0,strokeColor:u,lineCap:L?void 0:T,lineWidth:h===Be.Stroke||L?0:d};m=Ue(m,{x:Math.floor((D.x+k[0])*R[0]+M[0]-xe.SafeBorderPadding),y:Math.floor((D.y+k[1])*R[1]+M[1]-xe.SafeBorderPadding),w:Math.floor(D.w*R[0]+2*xe.SafeBorderPadding),h:Math.floor(D.h*R[1]+2*xe.SafeBorderPadding)}),v.push(U)}g&&(r.scale=g),y&&(r.rotate=y),S&&(r.translate=S);const E=new dt;if(m){this.centerPos=xe.getCenterPos(m,a);const P=h===Be.Stroke&&!b&&!C&&!N;E.attr({...r,normalize:!0,anchor:[.5,.5],bgcolor:P?u:void 0,pos:this.centerPos,size:[(m.w-2*xe.SafeBorderPadding)/R[0],(m.h-2*xe.SafeBorderPadding)/R[1]],zIndex:f});const k=v.map(O=>(O.pos=[O.pos[0]-this.centerPos[0],O.pos[1]-this.centerPos[1]],new Yt(O)));E.append(...k),P&&E.seal(),(b||C||N)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:E,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:C,pos:this.centerPos,layer:a},l)),this.replace(a,i,E)}if(g||y||S){const P=E==null?void 0:E.getBoundingClientRect();P&&(m={x:Math.floor(P.x-xe.SafeBorderPadding),y:Math.floor(P.y-xe.SafeBorderPadding),w:Math.floor(P.width+xe.SafeBorderPadding*2),h:Math.floor(P.height+xe.SafeBorderPadding*2)})}return this.isDelete&&E.setAttribute("opacity",0),m}computDrawPoints(e){return this.workOptions.strokeType===Be.Stroke||e.length===1?this.computStroke(e):this.computNomal(e)}computNomal(e){let r=this.workOptions.thickness;const n=e.map(i=>(r=Math.max(r,i.radius),i.point));return{ps:n,rect:it(n,r)}}computStroke(e,r=!0){return e.length===1?this.computDotStroke(e[0]):this.computLineStroke(e,r)}computLineStroke(e,r=!0){const n=[],i=[];for(let c=0;c<e.length;c++){const{point:l,radius:u}=e[c];let h=l.v;c===0&&e.length>1&&(h=e[c+1].point.v);const d=fe.Per(h).mul(u);n.push(Pe.Sub(l,d)),i.push(Pe.Add(l,d))}const o=e[e.length-1];if(r){const c=Pe.GetSemicircleStroke(o.point,n[n.length-1],-1,8),l=Pe.GetSemicircleStroke(e[0].point,i[0],-1,8),u=n.concat(c,i.reverse(),l);return{ps:u,rect:it(u)}}const a=n.concat(i.reverse());return{ps:a,rect:it(a)}}computDotStroke(e){const{point:r,radius:n}=e,i={x:r.x-n,y:r.y-n,w:n*2,h:n*2};return{ps:Pe.GetDotStroke(r,n,8),rect:i}}transformData(e,r){const{op:n,workState:i}=e;let o=this.tmpPoints.length-1,a=[];if(n!=null&&n.length&&i){const{strokeType:c,thickness:l}=this.workOptions,u=new Set,h=Math.max(0,this.tmpPoints.length-1);c===Be.Stroke?this.updateTempPointsWithPressure(n,l,u):this.updateTempPoints(n,l,u),o=h;const d=r?this.tmpPoints:this.tmpPoints.slice(o);return a=this.getTaskPoints(d,l),{tasks:a,effects:u,consumeIndex:o}}return{tasks:a,consumeIndex:o}}computRadius(e,r){return e*.03*r+r*.5}getMinZ(e,r){return((r||Math.max(1,Math.floor(e*.3)))-e*.5)*100/e/3}getTaskPoints(e,r){var h;const n=[];if(e.length===0)return[];let i=0,o=e[0].x,a=e[0].y,c=[o,a],l=[],u=e[0].t;for(;i<e.length;){const d=e[i],f=d.x-o,g=d.y-a,y=d.z,S=r?this.computRadius(y,r):y;if(l.push({point:new Pe(f,g,y,e[i].v),radius:S}),i>0&&i<e.length-1){const b=e[i].getAngleByPoints(e[i-1],e[i+1]);if(b<60||b>300){const C=(h=l.pop())==null?void 0:h.point.clone();C&&n.push({taskId:u,pos:c,points:[...l,{point:C,radius:S}]}),o=e[i].x,a=e[i].y,c=[o,a];const N=d.x-o,T=d.y-a;l=[{point:new Pe(N,T,y),radius:S}],u=Date.now()}}i++}return n.push({taskId:u,pos:c,points:l}),n}updateTempPointsWithPressure(e,r,n){const i=Date.now(),o=this.tmpPoints.length;let a=o;for(let l=0;l<e.length;l+=2){a=Math.min(a,o);const u=this.tmpPoints.length,h=new Pe(e[l],e[l+1]);if(u===0){this.tmpPoints.push(h);continue}const d=u-1,f=this.tmpPoints[d];if(h.x===f.x&&h.y===f.y){f.z<this.MAX_REPEAR&&f.setz(Math.min(f.z+1,this.MAX_REPEAR));continue}const g=fe.Sub(h,f).uni();if(h.isNear(f,r)){let b=f.z;if(f.z<this.MAX_REPEAR&&(b=Math.min(f.z+1,this.MAX_REPEAR),u>1)){let T=u-1;for(;T>0;){const p=this.tmpPoints[T].distance(this.tmpPoints[T-1]),m=Math.max(this.tmpPoints[T].z-this.uniThickness*p,0);if(this.tmpPoints[T-1].z>=m)break;this.tmpPoints[T-1].setz(m),a=Math.min(a,T-1),T--}}if(a=Math.min(a,d),f.t){h.setz(b),h.setv(g),this.tmpPoints.push(h);continue}const C=this.tmpPoints[d-1],N=C?fe.Sub(h,C).uni():f.v;f.set(h.x,h.y,b,N);continue}h.setv(g);const y=h.distance(f),S=Math.max(f.z-this.uniThickness*y,0);u>1&&fe.Equals(g,f.v,.01)&&(S>0||f.z<=0)&&(f.t||this.tmpPoints.pop(),a=Math.min(d,a)),h.setz(S),this.tmpPoints.push(h)}if(a===1/0)return this.tmpPoints.length;let c=o;if(a===o){c=Math.max(c-1,0);const l=this.tmpPoints[c].t;l&&(n==null||n.add(l))}else{let l=o-1;for(c=a;l>=0;){const u=this.tmpPoints[l].t;if(u&&(n==null||n.add(u),l<=a)){c=l,l=-1;break}l--}}return this.tmpPoints[this.tmpPoints.length-1].setT(i),c}updateTempPoints(e,r,n){var l;const i=Date.now(),o=this.tmpPoints.length;let a=o;for(let u=0;u<e.length;u+=2){const h=this.tmpPoints.length,d=new Pe(e[u],e[u+1]);if(h===0){this.tmpPoints.push(d);continue}const f=h-1,g=this.tmpPoints[f];if(d.x===g.x&&d.y===g.y)continue;const y=fe.Sub(d,g).uni();if(d.isNear(g,r/2)){if(g.t){d.setz(g.z),d.setv(y),this.tmpPoints.push(d),a=Math.min(f,a);continue}const S=this.tmpPoints[f-1],b=S?fe.Sub(d,S).uni():g.v;g.set(d.x,d.y,g.z,b),a=Math.min(f,a);continue}fe.Equals(y,g.v,.01)&&(g.t||this.tmpPoints.pop(),a=Math.min(f,a)),d.setv(y),this.tmpPoints.push(d)}let c=o;if(a===o){c=Math.max(c-1,0);const u=this.tmpPoints[c].t;u&&(n==null||n.add(u))}else{let u=Math.min(o-1,a);for(c=a;u>=0;){const h=(l=this.tmpPoints[u])==null?void 0:l.t;if(h&&(n==null||n.add(h),u<=a)){c=u,u=-1;break}u--}}return this.tmpPoints[this.tmpPoints.length-1].setT(i),c}updateTempPointsWithPressureWhenDone(e){const{thickness:r}=this.workOptions,n=e.length,i=this.getMinZ(r);for(let o=0;o<n;o+=2){const a=this.tmpPoints.length,c=new Pe(e[o],e[o+1]);if(a===0){this.tmpPoints.push(c);continue}const l=a-1,u=this.tmpPoints[l];if(c.x===u.x&&c.y===u.y){u.z<this.MAX_REPEAR&&u.setz(Math.min(u.z+1,this.MAX_REPEAR));continue}const h=fe.Sub(c,u).uni(),d=c.distance(u);if(a>1&&u.z===i)break;if(c.isNear(u,r/2)){let g=u.z;if(n<3&&u.z<this.MAX_REPEAR&&(g=Math.min(u.z+1,this.MAX_REPEAR),a>1)){let b=a-1;for(;b>0;){const C=this.tmpPoints[b].distance(this.tmpPoints[b-1]),N=Math.max(this.tmpPoints[b].z-this.uniThickness*C,-r/4);if(this.tmpPoints[b-1].z>=N)break;this.tmpPoints[b-1].setz(N),b--}}if(u.t){c.setz(g),c.setv(h),this.tmpPoints.push(c);continue}const y=this.tmpPoints[l-1],S=y?fe.Sub(c,y).uni():u.v;u.set(c.x,c.y,g,S);continue}c.setv(h);const f=Math.max(u.z-this.uniThickness*d,i);a>1&&fe.Equals(h,u.v,.01)&&u.z<=0&&(u.t||this.tmpPoints.pop()),c.setz(f),this.tmpPoints.push(c)}}static updateNodeOpt(e){var h,d;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a,lineCap:c,lineDash:l}=n,u=i.get(r.name);return o&&(r.tagName==="GROUP"?gMe(r)?r.setAttribute("bgcolor",o):r.children.forEach(f=>{f.setAttribute("strokeColor",o),f.getAttribute("fillColor")&&f.setAttribute("fillColor",o)}):(r.setAttribute("strokeColor",o),r.setAttribute("fillColor",o)),(h=u==null?void 0:u.opt)!=null&&h.strokeColor&&(u.opt.strokeColor=o)),a&&(u!=null&&u.opt)&&((d=u.opt)!=null&&d.strokeType)&&(u.opt.strokeType=a),c&&(u!=null&&u.opt)&&(u.opt.lineCap=c),l&&(u!=null&&u.opt)&&(u.opt.lineDash=l),u&&i.setInfo(r.name,u),xe.updateNodeOpt(e)}}class M0 extends xe{constructor(e){super(e);x(this,"toolsType",Q.LaserPen);x(this,"canRotate",!1);x(this,"scaleType",Ye.none);x(this,"syncTimestamp");x(this,"syncIndex",0);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"consumeIndex",0);this.workOptions=e.toolsOpt,this.syncTimestamp=0}combineConsume(){}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:r,isSubWorker:n}=e,{workId:i,op:o,syncUnitTime:a}=r;if((o==null?void 0:o.length)===0)return{type:le.None};if(a&&(this.syncUnitTime=a),this.updateTempPoints(o||[]),this.consumeIndex>this.tmpPoints.length-4)return{type:le.None};const{strokeColor:c,thickness:l,strokeType:u,lineDash:h,lineCap:d}=this.workOptions,f=it(this.tmpPoints,l);let g=!1;const y=this.syncIndex,S=this.tmpPoints.slice(this.consumeIndex);this.consumeIndex=this.tmpPoints.length-1,this.syncTimestamp===0&&(this.syncTimestamp=Date.now());const b={name:i==null?void 0:i.toString(),opacity:1,lineDash:u===Be.Dotted?[h&&h[0]||1,(h&&h[1]||2)*l]:u===Be.LongDotted?[(h&&h[0]||1)*l,(h&&h[1]||2)*l]:void 0,strokeColor:c,lineCap:d,lineWidth:l,anchor:[.5,.5]},C=this.getTaskPoints(S);if(C.length){const T=Date.now();T-this.syncTimestamp>this.syncUnitTime&&(g=!0,this.syncTimestamp=T,this.syncIndex=this.tmpPoints.length),n&&this.draw({attrs:b,tasks:C,isDot:!1,layer:this.drawLayer||this.fullLayer})}const N=[];return this.tmpPoints.slice(y).forEach(T=>{N.push(T.x,T.y)}),{rect:{x:f.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:f.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:f.w*this.fullLayer.worldScaling[0],h:f.h*this.fullLayer.worldScaling[1]},type:le.DrawWork,dataType:Re.Local,op:g?N:void 0,index:g?y*2:void 0,...this.baseConsumeResult}}consumeAll(){var o;const e=(o=this.workId)==null?void 0:o.toString();let r;if(this.tmpPoints.length-1>this.consumeIndex){let a=this.tmpPoints.slice(this.consumeIndex);const c=a.length===1,{strokeColor:l,thickness:u,strokeType:h}=this.workOptions;if(c){const g=this.computDotStroke({point:a[0],radius:u/2});a=g.ps,r=g.rect}else r=it(this.tmpPoints,u);const d={name:e==null?void 0:e.toString(),fillColor:c?l:void 0,opacity:1,lineDash:h===Be.Dotted&&!c?[1,u*2]:h===Be.LongDotted&&!c?[u,u*2]:void 0,strokeColor:l,lineCap:c?void 0:"round",lineWidth:c?0:u,anchor:[.5,.5]},f=this.getTaskPoints(a);f.length&&this.draw({attrs:d,tasks:f,isDot:c,layer:this.drawLayer||this.fullLayer})}const n=[];this.tmpPoints.forEach(a=>{n.push(a.x,a.y)});const i=xt(n);return{rect:r&&{x:r.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:r.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:r.w*this.fullLayer.worldScaling[0],h:r.h*this.fullLayer.worldScaling[1]},type:le.FullWork,dataType:Re.Local,ops:i,index:this.syncIndex*2,...this.baseConsumeResult}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var y;const{op:r,replaceId:n,isFullWork:i}=e,{strokeColor:o,thickness:a,strokeType:c}=this.workOptions;if(!r.length){const S=it(this.tmpPoints,a);return{x:S.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:S.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:S.w*this.fullLayer.worldScaling[0],h:S.h*this.fullLayer.worldScaling[1]}}const l=Math.max(0,this.tmpPoints.length-1);this.updateTempPoints(r||[]);let u,h=this.tmpPoints.slice(l);const d=h.length===1;if(d){const S=this.computDotStroke({point:h[0],radius:a/2});h=S.ps,u=S.rect}else u=it(this.tmpPoints,a);const f={name:(y=this.workId)==null?void 0:y.toString(),fillColor:d?o:void 0,opacity:1,lineDash:c===Be.Dotted&&!d?[1,a*2]:c===Be.LongDotted&&!d?[a,a*2]:void 0,strokeColor:o,lineCap:d?void 0:"round",lineWidth:d?0:a,anchor:[.5,.5]},g=this.getTaskPoints(h);if(g.length){const S=i?this.fullLayer:this.drawLayer||this.fullLayer;this.draw({attrs:f,tasks:g,isDot:d,replaceId:n,layer:S})}return{x:u.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:u.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:u.w*this.fullLayer.worldScaling[0],h:u.h*this.fullLayer.worldScaling[1]}}computDotStroke(e){const{point:r,radius:n}=e,i={x:r.x-n,y:r.y-n,w:n*2,h:n*2};return{ps:Pe.GetDotStroke(r,n,8),rect:i}}updateTempPoints(e){const r=this.tmpPoints.length;for(let n=0;n<e.length;n+=2){if(r){const i=this.tmpPoints.slice(-1)[0];i&&i.x===e[n]&&i.y===e[n+1]&&this.tmpPoints.pop()}this.tmpPoints.push(new Pe(e[n],e[n+1]))}}async draw(e){const{attrs:r,tasks:n,isDot:i,layer:o}=e,{duration:a}=this.workOptions;for(const c of n){const l=new Yt,{pos:u,points:h}=c;let d;i?d=Or(h,!0):d=Or(h,!1),l.attr({...r,pos:u,d}),o.appendChild(l),l.transition(a).attr({scale:i?[.1,.1]:[1,1],lineWidth:i?0:1}).then(()=>{l.remove()})}}getTaskPoints(e){var l;const r=[];if(e.length===0)return[];let n=0,i=e[0].x,o=e[0].y,a=[i,o],c=[];for(;n<e.length;){const u=e[n],h=u.x-i,d=u.y-o;if(c.push(new Pe(h,d)),n>0&&n<e.length-1){const f=e[n].getAngleByPoints(e[n-1],e[n+1]);if(f<60||f>300){const g=(l=c.pop())==null?void 0:l.clone();g&&r.push({pos:a,points:[...c,g]}),i=e[n].x,o=e[n].y,a=[i,o];const y=u.x-i,S=u.y-o;c=[new Pe(y,S)]}}n++}return r.push({pos:a,points:c}),r}removeLocal(){}removeService(e){let r;const n=[];return this.fullLayer.getElementsByName(e).forEach(i=>{if(i.name===e){const o=i.getBoundingClientRect();r=Ue(r,{x:o.x,y:o.y,w:o.width,h:o.height}),n.push(i)}}),n.length&&n.forEach(i=>i.remove()),r}}const Vi=class Vi extends xe{constructor(e,r){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.none);x(this,"toolsType",Q.Eraser);x(this,"serviceWork");x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"worldPosition");x(this,"worldScaling");x(this,"eraserRect");x(this,"eraserPolyline");this.serviceWork=r,this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}combineConsume(){}consumeService(){}setWorkOptions(e){super.setWorkOptions(e)}createEraserRect(e){const r=e[0]*this.worldScaling[0]+this.worldPosition[0],n=e[1]*this.worldScaling[1]+this.worldPosition[1],{width:i,height:o}=Vi.eraserSizes[this.workOptions.thickness];this.eraserRect={x:r-i*.5,y:n-o*.5,w:i,h:o},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h]}computRectCenterPoints(){const e=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){const r=new fe(this.tmpPoints[0],this.tmpPoints[1]),n=new fe(this.tmpPoints[2],this.tmpPoints[3]),i=fe.Sub(n,r).uni(),o=fe.Dist(r,n),{width:a,height:c}=Vi.eraserSizes[this.workOptions.thickness],l=Math.min(a,c),u=Math.round(o/l);if(u>1){const h=[];for(let d=0;d<u;d++){const f=fe.Mul(i,d*l);h.push(this.tmpPoints[0]+f.x,this.tmpPoints[1]+f.y)}return h.concat(e)}}return e}isNear(e,r){const n=new fe(e[0],e[1]),i=new fe(r[0],r[1]),{width:o,height:a}=Vi.eraserSizes[this.workOptions.thickness];return fe.Dist(n,i)<Math.hypot(o,a)*.5}remove(e){const{curNodeMap:r,removeIds:n}=e;let i;for(const o of r.values())if(o.rect&&this.eraserRect&&this.eraserPolyline&&Ya(this.eraserRect,o.rect)){const{op:a}=o,c=[],l=[];for(let h=0;h<a.length;h+=3){const d=new fe(a[h]*this.worldScaling[0]+this.worldPosition[0],a[h+1]*this.worldScaling[1]+this.worldPosition[1],a[h+2]);l.push(d),c.push(new Pe(d.x,d.y))}const u=c.length&&it(c)||o.rect;Ya(u,this.eraserRect)&&(l.length>1?oh.polyline(l.map(d=>d.XY),this.eraserPolyline).length&&n.add(o.name):n.add(o.name),i=Ue(i,o.rect||u))}return n.forEach(o=>{var c;const a=this.fullLayer.getElementsByName(o);a[0]&&(a[0].remove(),dr(a[0],this.fullLayer.parent),(c=this.vNodes)==null||c.delete(o))}),i&&(i.x-=xe.SafeBorderPadding,i.y-=xe.SafeBorderPadding,i.w+=xe.SafeBorderPadding*2,i.h+=xe.SafeBorderPadding*2),i}consume(e){const{op:r,disableEraseImage:n,disableEraseText:i}=e.data;if(!r||r.length===0)return{type:le.None,...this.baseConsumeResult};const o=this.tmpPoints.length;if(o>1&&this.isNear([r[0],r[1]],[this.tmpPoints[o-2],this.tmpPoints[o-1]]))return{type:le.None,...this.baseConsumeResult};o<3?this.tmpPoints.push(r[0],r[1]):this.tmpPoints.splice(2,2,r[0],r[1]);const a=this.computRectCenterPoints();let c;const l=new Set;if(!this.vNodes)return{type:le.None,...this.baseConsumeResult};const u=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.curNodeMap,{disableEraseImage:n,disableEraseText:i}));for(let h=0;h<a.length-1;h+=2){this.createEraserRect(a.slice(h,h+2));const d=this.remove({curNodeMap:u,removeIds:l});c=Ue(c,d)}return c&&l.size?{type:le.RemoveNode,rect:c,removeIds:[...l]}:{type:le.None,...this.baseConsumeResult}}consumeAll(e){return this.consume(e)}clearTmpPoints(){this.tmpPoints.length=0}getCanEraserNodeMap(e){var r;if(this.serviceWork){const n=new Map(e),i=this.serviceWork.selectorWorkShapes,o=this.serviceWork.workShapes;for(const a of i.values())if((r=a.selectIds)!=null&&r.length)for(const c of a.selectIds)n.delete(c);for(const a of o.keys())n.delete(a);return n}return e}};x(Vi,"eraserSizes",yd);let ja=Vi;function vme(s,t,e){if(s.matrixDelta)return s.matrixDelta;const r=s.translate;if(s.originPoint&&s.scenePoint&&s.scale){const n=e||s.scenePoint,i=hp($pe(s.scale[0],s.scale[1]),n[0],n[1]);return!e&&r&&(r[0]||r[1])?kn(An(r[0],r[1]),i):i}if(typeof s.angle=="number"){const n=t||[0,0];return hp(Ype(s.angle),n[0],n[1])}if(r)return An(r[0],r[1])}const Bt="++",Le="selector",Vu="all";var Mme="__lodash_hash_undefined__";function wme(s){return this.__data__.set(s,Mme),this}var Sme=wme;function Tme(s){return this.__data__.has(s)}var Cme=Tme,Ime=zv,bme=Sme,Eme=Cme;function Fa(s){var t=-1,e=s==null?0:s.length;for(this.__data__=new Ime;++t<e;)this.add(s[t])}Fa.prototype.add=Fa.prototype.push=bme;Fa.prototype.has=Eme;var vd=Fa;function xme(s,t){for(var e=-1,r=s==null?0:s.length;++e<r;)if(t(s[e],e,s))return!0;return!1}var Rme=xme;function kme(s,t){return s.has(t)}var Md=kme,Ame=vd,Pme=Rme,Dme=Md,Lme=1,Nme=2;function Ome(s,t,e,r,n,i){var o=e&Lme,a=s.length,c=t.length;if(a!=c&&!(o&&c>a))return!1;var l=i.get(s),u=i.get(t);if(l&&u)return l==t&&u==s;var h=-1,d=!0,f=e&Nme?new Ame:void 0;for(i.set(s,t),i.set(t,s);++h<a;){var g=s[h],y=t[h];if(r)var S=o?r(y,g,h,t,s,i):r(g,y,h,s,t,i);if(S!==void 0){if(S)continue;d=!1;break}if(f){if(!Pme(t,function(b,C){if(!Dme(f,C)&&(g===b||n(g,b,e,r,i)))return f.push(C)})){d=!1;break}}else if(!(g===y||n(g,y,e,r,i))){d=!1;break}}return i.delete(s),i.delete(t),d}var w0=Ome;function zme(s){var t=-1,e=Array(s.size);return s.forEach(function(r,n){e[++t]=[n,r]}),e}var Bme=zme;function jme(s){var t=-1,e=Array(s.size);return s.forEach(function(r){e[++t]=r}),e}var wd=jme,Tp=mo,Cp=t0,Fme=ed,Ume=w0,Wme=Bme,Vme=wd,$me=1,Yme=2,Gme="[object Boolean]",Hme="[object Date]",Qme="[object Error]",qme="[object Map]",Zme="[object Number]",Kme="[object RegExp]",Xme="[object Set]",Jme="[object String]",_me="[object Symbol]",eye="[object ArrayBuffer]",tye="[object DataView]",Ip=Tp?Tp.prototype:void 0,Ul=Ip?Ip.valueOf:void 0;function rye(s,t,e,r,n,i,o){switch(e){case tye:if(s.byteLength!=t.byteLength||s.byteOffset!=t.byteOffset)return!1;s=s.buffer,t=t.buffer;case eye:return!(s.byteLength!=t.byteLength||!i(new Cp(s),new Cp(t)));case Gme:case Hme:case Zme:return Fme(+s,+t);case Qme:return s.name==t.name&&s.message==t.message;case Kme:case Jme:return s==t+"";case qme:var a=Wme;case Xme:var c=r&$me;if(a||(a=Vme),s.size!=t.size&&!c)return!1;var l=o.get(s);if(l)return l==t;r|=Yme,o.set(s,t);var u=Ume(a(s),a(t),r,n,i,o);return o.delete(s),u;case _me:if(Ul)return Ul.call(s)==Ul.call(t)}return!1}var nye=rye,bp=Jv,iye=1,sye=Object.prototype,oye=sye.hasOwnProperty;function aye(s,t,e,r,n,i){var o=e&iye,a=bp(s),c=a.length,l=bp(t),u=l.length;if(c!=u&&!o)return!1;for(var h=c;h--;){var d=a[h];if(!(o?d in t:oye.call(t,d)))return!1}var f=i.get(s),g=i.get(t);if(f&&g)return f==t&&g==s;var y=!0;i.set(s,t),i.set(t,s);for(var S=o;++h<c;){d=a[h];var b=s[d],C=t[d];if(r)var N=o?r(C,b,d,t,s,i):r(b,C,d,s,t,i);if(!(N===void 0?b===C||n(b,C,e,r,i):N)){y=!1;break}S||(S=d=="constructor")}if(y&&!S){var T=s.constructor,p=t.constructor;T!=p&&"constructor"in s&&"constructor"in t&&!(typeof T=="function"&&T instanceof T&&typeof p=="function"&&p instanceof p)&&(y=!1)}return i.delete(s),i.delete(t),y}var cye=aye,Wl=Bv,lye=w0,uye=nye,hye=cye,Ep=Nc,xp=yo,Rp=rd,dye=Yv,fye=1,kp="[object Arguments]",Ap="[object Array]",ra="[object Object]",gye=Object.prototype,Pp=gye.hasOwnProperty;function pye(s,t,e,r,n,i){var o=xp(s),a=xp(t),c=o?Ap:Ep(s),l=a?Ap:Ep(t);c=c==kp?ra:c,l=l==kp?ra:l;var u=c==ra,h=l==ra,d=c==l;if(d&&Rp(s)){if(!Rp(t))return!1;o=!0,u=!1}if(d&&!u)return i||(i=new Wl),o||dye(s)?lye(s,t,e,r,n,i):uye(s,t,c,e,r,n,i);if(!(e&fye)){var f=u&&Pp.call(s,"__wrapped__"),g=h&&Pp.call(t,"__wrapped__");if(f||g){var y=f?s.value():s,S=g?t.value():t;return i||(i=new Wl),n(y,S,e,r,i)}}return d?(i||(i=new Wl),hye(s,t,e,r,n,i)):!1}var mye=pye,yye=mye,Dp=jr;function S0(s,t,e,r,n){return s===t?!0:s==null||t==null||!Dp(s)&&!Dp(t)?s!==s&&t!==t:yye(s,t,e,r,S0,n)}var vye=S0,Mye=vye;function wye(s,t){return Mye(s,t)}var Sye=wye;const In=un(Sye);function vo(s,t,e){return"#"+((s<<16)+(t<<8)+e).toString(16).padStart(6,"0")}function Et(s,t=1){return"rgba("+parseInt("0x"+s.slice(1,3))+","+parseInt("0x"+s.slice(3,5))+","+parseInt("0x"+s.slice(5,7))+","+t+")"}function Xn(s,t,e,r=1){return`rgba(${s},${t},${e},${r})`}function Bc(s){const t=s.split(","),e=parseInt(t[0].split("(")[1]),r=parseInt(t[1]),n=parseInt(t[2]),i=Number(t[3].split(")")[0]);return[vo(e,r,n),i]}function Ls(s){const t=s.split(","),e=parseInt(t[0].split("(")[1]),r=parseInt(t[1]),n=parseInt(t[2]),i=Number(t[3].split(")")[0]);return[e,r,n,i]}function na(s){return s==="transparent"}const Vl="rgb(177,177,177)",Qa=class Qa extends xe{constructor(e){var r;super(e);x(this,"toolsType",Q.Selector);x(this,"tmpPoints",[]);x(this,"subTmpPoints",[]);x(this,"workOptions");x(this,"vNodes");x(this,"selectIds");x(this,"selectorColor");x(this,"strokeColor");x(this,"fillColor");x(this,"oldSelectRect");x(this,"oldSubSelectRect");x(this,"canRotate",!1);x(this,"canTextEdit",!1);x(this,"canLock",!1);x(this,"scaleType",Ye.all);x(this,"toolsTypes");x(this,"shapeOpt");x(this,"textOpt");x(this,"isLocked");x(this,"thickness");x(this,"strokeType");x(this,"useStroke");x(this,"selectorScaleCenter");x(this,"selectorRotateCenter");this.workOptions={...e.toolsOpt,strokeColor:((r=e.toolsOpt)==null?void 0:r.strokeColor)||Vl},this.vNodes=e.vNodes}computSelector(e=!0){const r=it(this.tmpPoints);if(r.w===0||r.h===0)return{selectIds:[],intersectRect:void 0,subNodeMap:new Map};const{rectRange:n,nodeRange:i}=this.vNodes.getRectIntersectRange(r,e);return{selectIds:[...i.keys()],intersectRect:n,subNodeMap:i}}updateTempPoints(e){const r=this.tmpPoints.length,n=e.length;if(n>1){const i=new Pe(e[n-2]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[n-1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]);r===2?this.tmpPoints.splice(1,1,i):this.tmpPoints.push(i)}}drawSelector(e){const{drawRect:r,subNodeMap:n,selectorId:i,layer:o,isService:a}=e,c=new dt({pos:[r.x,r.y],anchor:[0,0],size:[r.w,r.h],id:i,name:i,zIndex:9999}),l=[];if(a){const u=new Qs({normalize:!0,pos:[r.w/2,r.h/2],lineWidth:1,strokeColor:this.selectorColor||this.workOptions.strokeColor||Vl,width:r.w,height:r.h,name:Qa.selectorBorderId});l.push(u)}n.forEach((u,h)=>{const d=[u.rect.x+u.rect.w/2-r.x,u.rect.y+u.rect.h/2-r.y],f=new Qs({normalize:!0,pos:d,lineWidth:1,strokeColor:n.size>1?this.selectorColor||this.workOptions.strokeColor||Vl:void 0,width:u.rect.w,height:u.rect.h,id:`selector-${h}`,name:`selector-${h}`});l.push(f)}),l&&c.append(...l),(o==null?void 0:o.parent).appendChild(c)}draw(e,r,n,i=!1){var c,l;const{intersectRect:o,subNodeMap:a}=n;(l=(c=r.parent)==null?void 0:c.getElementById(e))==null||l.remove(),o&&this.drawSelector({drawRect:o,subNodeMap:a,selectorId:e,layer:r,isService:i})}getSelecteorInfo(e){this.scaleType=Ye.all,this.canRotate=!1,this.textOpt=void 0,this.strokeColor=void 0,this.fillColor=void 0,this.canTextEdit=!1,this.canLock=!1,this.isLocked=!1,this.toolsTypes=void 0,this.shapeOpt=void 0,this.thickness=void 0,this.strokeType=void 0,this.useStroke=!1;const r=new Set;let n,i=!0;for(const o of e.values()){const{opt:a,canRotate:c,scaleType:l,toolsType:u}=o;this.selectorColor=this.workOptions.strokeColor,a.strokeColor&&(this.strokeColor=a.strokeColor),a.fillColor&&(this.fillColor=a.fillColor),a.textOpt&&(this.textOpt=a.textOpt),a.thickness&&(this.thickness=a.thickness),u!==Q.Pencil&&(i=!1),a.strokeType&&(this.strokeType=a.strokeType),u===Q.SpeechBalloon&&(r.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.placement=a.placement),u===Q.Polygon&&(r.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=a.vertices),u===Q.Star&&(r.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=a.vertices,this.shapeOpt.innerRatio=a.innerRatio,this.shapeOpt.innerVerticeStep=a.innerVerticeStep),u===Q.Text&&(this.textOpt=a),e.size===1&&(this.textOpt&&(this.canTextEdit=!0),this.canRotate=c,this.scaleType=l),(u===Q.Image||u===Q.BackgroundSVG)&&(n=o),(l===Ye.proportional&&this.scaleType!==Ye.none||l===Ye.none)&&(this.scaleType=l)}i&&(this.useStroke=!0),r.size&&(this.toolsTypes=[...r]),n&&(e.size===1?(this.canLock=!0,(n.toolsType===Q.BackgroundSVG?n.opt.locked!==!1:n.opt.locked)&&(this.isLocked=!0,this.scaleType=Ye.none,this.canRotate=!1,this.textOpt=void 0,this.fillColor=void 0,this.selectorColor="rgb(177,177,177)",this.strokeColor=void 0,this.canTextEdit=!1,this.thickness=void 0,this.strokeType=void 0,this.useStroke=void 0)):e.size>1&&!n.opt.locked&&(this.canLock=!1,this.canRotate=!1))}getChildrenPoints(){var e,r,n;if(this.scaleType===Ye.both&&((e=this.selectIds)==null?void 0:e.length)===1){const i=this.selectIds[0],o=(r=this.vNodes.get(i))==null?void 0:r.op;if(o){const a=((n=this.vNodes.get(i))==null?void 0:n.matrix)||[1,0,0,1,0,0],c=[];for(let l=0;l<o.length;l+=3)c.push(l0(a,[o[l],o[l+1]]));return c}}}consume(e){if(e.isSubWorker)return this.subWorkerConsume(e);let r={type:le.Select,dataType:Re.Local,...this.baseConsumeResult};if(e.isSimpleWorker){const u=this.subWorkerConsume(e);r.subRect=u.rect}const{op:n,workState:i}=e.data;let o=this.oldSelectRect;if(i===he.Start&&(o=this.unSelectedAllIds()),!(n!=null&&n.length)||!this.vNodes.curNodeMap.size)return e.isSimpleWorker?r:{type:le.None};this.updateTempPoints(n);const a=this.computSelector();if(this.selectIds&&In(this.selectIds,a.selectIds))return e.isSimpleWorker?r:{type:le.None};this.selectIds=a.selectIds;const c=a.intersectRect;this.getSelecteorInfo(a.subNodeMap),this.draw(Le,this.fullLayer,a),this.oldSelectRect=c;const l=this.getChildrenPoints();return r={...r,rect:Ue(c,o),selectIds:a.selectIds,selectRect:c,selectorColor:this.selectorColor,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:l,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType},r}consumeAll(){var o,a;let e=this.oldSelectRect;const r=this.tmpPoints[0],n=this.tmpPoints[this.tmpPoints.length-1],i=r&&(!n||r.isNear(n,1));if(!((o=this.selectIds)!=null&&o.length)&&r&&i&&this.selectSingleTool(this.tmpPoints[0].XY,Le,!1),(a=this.selectIds)!=null&&a.length&&(e=this.selectedByIds(this.selectIds)),e){const c=this.getChildrenPoints();return{type:le.Select,dataType:Re.Local,rect:this.oldSelectRect,selectIds:this.selectIds,selectorColor:this.selectorColor,selectRect:this.oldSelectRect,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:c,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType,...this.baseConsumeResult}}return{type:le.Select,dataType:Re.Local,...this.baseConsumeResult}}consumeService(){}updateTempPointsForSubWorker(e){const r=e.slice(-2),n=new Pe(r[0],r[1]);if(this.subTmpPoints[0].isNear(n,1))return!1;if(this.subTmpPoints.length===2){if(n.isNear(this.subTmpPoints[1],1))return!1;this.subTmpPoints[1]=n}else this.subTmpPoints.push(n);return!0}computDrawPoints(e){const{thickness:r}=this.workOptions,n=[];for(const a of e)n.push(new fe(...a));const i=it(n,r),o=[i.x+i.w/2,i.y+i.h/2];return{rect:i,pos:o,points:n.map(a=>a.XY).flat(1)}}drawForSubWorker(e){const{workId:r,layer:n,ps:i}=e,{strokeColor:o,scale:a,rotate:c,translate:l}=this.workOptions,u=n.worldPosition,h=n.worldScaling,{points:d,rect:f,pos:g}=this.computDrawPoints(i),y=1/n.worldScaling[0],S=o&&Ls(o)||[0,0,0,0],b={close:!0,normalize:!0,points:d,lineWidth:y,fillColor:Xn(S[0],S[1],S[2],.1),strokeColor:Xn(S[0],S[1],S[2],1),lineJoin:"round",lineCap:"round"};let C={x:Math.floor(f.x*h[0]+u[0]-xe.SafeBorderPadding),y:Math.floor(f.y*h[1]+u[1]-xe.SafeBorderPadding),w:Math.floor(f.w*h[0]+2*xe.SafeBorderPadding),h:Math.floor(f.h*h[0]+2*xe.SafeBorderPadding)};const N=new dt({name:r,id:r,pos:g,anchor:[.5,.5],size:[f.w,f.h],scale:a,rotate:c,translate:l}),T=new br({...b,pos:[0,0]});if(N.appendChild(T),this.replace(n,r,N),a||c||l){const p=N.getBoundingClientRect();C={x:Math.floor(p.x-xe.SafeBorderPadding),y:Math.floor(p.y-xe.SafeBorderPadding),w:Math.floor(p.width+2*xe.SafeBorderPadding),h:Math.floor(p.height+2*xe.SafeBorderPadding)}}return C}transformData(e){const r=it(e);return[[r.x,r.y,0],[r.x+r.w,r.y,0],[r.x+r.w,r.y+r.h,0],[r.x,r.y+r.h,0]]}subWorkerConsume(e){const{data:r,isFullWork:n}=e,{op:i,syncUnitTime:o}=r;o&&(this.syncUnitTime=o);const a=i==null?void 0:i.length;if(!a||a<2)return{type:le.None,rect:void 0};let c;if(this.subTmpPoints.length===0?(this.subTmpPoints=[new Pe(i[0],i[1])],c=!1):c=this.updateTempPointsForSubWorker(i),!c)return{type:le.None,rect:void 0};const l=this.transformData(this.subTmpPoints),u=n?this.fullLayer:this.drawLayer||this.fullLayer,h=this.drawForSubWorker({ps:l,workId:this.workId,layer:u}),d=Ue(h,this.oldSubSelectRect);return this.oldSubSelectRect=h,{rect:d,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}subWorkerConsumeAll(e){const{isFullWork:r}=e,n=r?this.fullLayer:this.drawLayer||this.fullLayer;return this.replace(n,this.workId),{rect:this.oldSelectRect,type:le.FullWork,dataType:Re.Local,...this.baseConsumeResult}}clearSubTmpPoints(){this.subTmpPoints.length=0}clearTmpPoints(){this.tmpPoints.length=0,this.clearSubTmpPoints()}clearSubSelectData(){this.oldSubSelectRect=void 0}clearSelectData(){this.selectIds=void 0,this.oldSelectRect=void 0,this.selectorScaleCenter=void 0,this.selectorRotateCenter=void 0,this.clearSubSelectData()}selectSingleTool(e,r=Le,n=!1){if(e.length===2){const i=e[0],o=e[1];let a;const{nodeRange:c}=this.vNodes.getRectIntersectRange({x:i,y:o,w:0,h:0},!1),l=[...c.values()].sort((u,h)=>(h.opt.zIndex||0)-(u.opt.zIndex||0));for(const u of l){const h=this.fullLayer.getElementsByName(u.name);if(B0(h).find(f=>f.isPointCollision(i,o))){a=u;break}}if(a){const u=a.name;if(!In(this.oldSelectRect,a.rect)){const h=new Map([[u,a]]);this.getSelecteorInfo(h),this.draw(r,this.fullLayer,{intersectRect:a.rect,subNodeMap:h,selectIds:this.selectIds||[]},n)}this.selectIds=[u],this.oldSelectRect=a.rect}}}unSelectedAllIds(){let e;for(const[r,n]of this.vNodes.curNodeMap.entries())n.isSelected&&(e=Ue(e,n.rect),this.vNodes.unSelected(r));return e}unSelectedByIds(e){let r;for(const n of e){const i=this.vNodes.get(n);i&&i.isSelected&&(r=Ue(r,i.rect),this.vNodes.unSelected(n))}return r}selectedByIds(e){let r;for(const n of e){const i=this.vNodes.get(n);i&&(r=Ue(r,i.rect),this.vNodes.selected(n))}return r}getSelectorRect(e,r){var a;let n;const i=(a=e.parent)==null?void 0:a.getElementById(r),o=i==null?void 0:i.getBoundingClientRect();return o&&(n=Ue(n,{x:Math.floor(o.x),y:Math.floor(o.y),w:Math.floor(o.width+1),h:Math.floor(o.height+1)})),n}isCanFillColor(e){return e===Q.Ellipse||e===Q.Triangle||e===Q.Rectangle||e===Q.Polygon||e===Q.Star||e===Q.SpeechBalloon}async updateSelector(e){var C,N;const{updateSelectorOpt:r,selectIds:n,vNodes:i,willSerializeData:o,worker:a}=e,c=this.fullLayer;if(!c)return;let l;const u=new Map,{originPoint:h,workState:d,angle:f}=r,g=r.translate;let y;if(h||g||gt(f)){if(d===he.Start&&n){if(h&&r.scenePoint&&this.captureSelectorScaleCenter(n,i,c),gt(f)){let T;for(const p of n)T=Ue(T,(C=i.get(p))==null?void 0:C.rect);T||(T=this.oldSelectRect),T&&(this.selectorRotateCenter=xe.getCenterPos(T,c))}return i.setTargetAssignKeys(n),{type:le.Select,dataType:Re.Local,selectRect:this.oldSelectRect,rect:this.oldSelectRect}}if(y=i.getLastTarget(),!y)return}if(h&&r.scenePoint&&r.scale&&!this.selectorScaleCenter&&n&&this.captureSelectorScaleCenter(n,i,c),n)for(const T of n){const p=i.get(T);if(p){const{toolsType:m,opt:v}=p,M=(c==null?void 0:c.getElementsByName(T))[0];if(M){const R={...r},E=y==null?void 0:y.get(T);if(!R.matrixDelta&&!R.previewMatrix){const k=typeof R.angle=="number"?this.selectorRotateCenter||(E==null?void 0:E.centerPos)||p.centerPos:(E==null?void 0:E.centerPos)||p.centerPos;R.matrixDelta=vme(R,k,this.selectorScaleCenter)}const P=xe.isWillRefresh({toolsType:m,opt:v,updateOpt:R,vNodes:i,node:M,willSerializeData:o});if(m){const k=Fc(m);k==null||k.updateNodeOpt({node:M,opt:R,vNodes:i,willSerializeData:o,targetNode:E});const O=i.get(T)||p;if(O&&a&&P){const B=a.createWorkShapeNode({workId:T,toolsType:m,toolsOpt:O.opt});B==null||B.setWorkId(T);let D;if(m===Q.BackgroundSVG)D=B.consumeService({isFullWork:!0,replaceId:T});else if(m===Q.Image)D=await B.consumeServiceAsync({isFullWork:!0,replaceId:T,worker:a});else if(m===Q.Text)D=await B.consumeServiceAsync({isFullWork:!0,replaceId:T,isDrawLabel:!0,previewMatrix:O.previewMatrix});else try{D=B==null?void 0:B.consumeService({op:O.op,isFullWork:!0,replaceId:T,workState:d})}catch(A){console.error("consumeService error",A);continue}D&&(O.rect=D)}if((N=O==null?void 0:O.opt)!=null&&N.matrix){const B=O.opt.matrix;if(!(B[0]===1&&B[1]===0&&B[2]===0&&B[3]===1&&B[4]===0&&B[5]===0)){const A=i.getNodeRectFormShape(T,O);A&&(O.rect=A,i.setInfo(T,{rect:A}))}}O&&(u.set(T,O),l=Ue(l,O.rect))}}}}y&&d===he.Done&&(i.deleteLastTarget(),y=void 0,this.selectorScaleCenter=void 0,this.selectorRotateCenter=void 0);const S=l;this.getSelecteorInfo(u),this.draw(Le,c,{selectIds:n||[],subNodeMap:u,intersectRect:S});const b=Ue(this.oldSelectRect,S);return this.oldSelectRect=S,{type:le.Select,dataType:Re.Local,selectRect:S,renderRect:l,rect:Ue(b,S),selectIds:n}}captureSelectorScaleCenter(e,r,n){var o;if(this.selectorScaleCenter)return;let i=this.oldSelectRect;if(!i)for(const a of e)i=Ue(i,(o=r.get(a))==null?void 0:o.rect);i&&(this.selectorScaleCenter=xe.getCenterPos(i,n))}blurSelector(){const e=this.unSelectedAllIds();return{type:le.Select,dataType:Re.Local,rect:e,selectIds:[],willSyncService:!0}}getRightServiceId(e){return e.replace(Bt,"-")}selectServiceNode(e,r,n){const{selectIds:i}=r,o=this.getRightServiceId(e),a=this.getSelectorRect(this.fullLayer,o);let c;const l=new Map;return i==null||i.forEach(u=>{const h=this.vNodes.get(u);h&&(c=Ue(c,h.rect),l.set(u,h))}),this.getSelecteorInfo(l),this.draw(o,this.fullLayer,{intersectRect:c,selectIds:i||[],subNodeMap:l},n),Ue(c,a)}reRenderSelector(){var n;let e;const r=new Map;return(n=this.selectIds)==null||n.forEach(i=>{var a,c;(c=(a=this.vNodes).updateNodeRect)==null||c.call(a,i);const o=this.vNodes.get(i);o&&(e=Ue(e,o.rect),r.set(i,o))},this),this.getSelecteorInfo(r),this.draw(Le,this.fullLayer,{intersectRect:e,subNodeMap:r,selectIds:this.selectIds||[]}),this.oldSelectRect=e,e}updateSelectIds(e){var o;let r;const n=(o=this.selectIds)==null?void 0:o.filter(a=>!e.includes(a));if(n!=null&&n.length&&(r=this.unSelectedByIds(n)),e.length){const a=this.selectedByIds(e);r=Ue(r,a)}this.selectIds=e;const i=this.reRenderSelector();return{bgRect:r,selectRect:i}}cursorHover(e){var o,a;const r=this.oldSelectRect;this.selectIds=[];const n=(o=this.workId)==null?void 0:o.toString(),i=[e[0]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]];if(this.selectSingleTool(i,n,!0),this.oldSelectRect&&!In(r,this.oldSelectRect))return{type:le.CursorHover,dataType:Re.Local,rect:Ue(r,this.oldSelectRect),selectorColor:this.selectorColor,willSyncService:!1};if((a=this.selectIds)!=null&&a.length||(this.oldSelectRect=void 0),r&&!this.oldSelectRect)return this.cursorBlur(),{type:le.CursorHover,dataType:Re.Local,rect:r,selectorColor:this.selectorColor,willSyncService:!1}}cursorBlur(){var r,n;this.selectIds=[];const e=(r=this.workId)==null?void 0:r.toString();((n=this.fullLayer)==null?void 0:n.parent).children.forEach(i=>{i.name===e&&i.remove()})}};x(Qa,"selectorBorderId","selector-border");let Ua=Qa;class T0 extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.both);x(this,"toolsType",Q.Arrow);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"arrowTipWidth");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.arrowTipWidth=this.workOptions.thickness*4,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=r;h&&(this.syncUnitTime=h);const d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:S})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const b={rect:S,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,b.op=this.tmpPoints.map(N=>[...N.XY,0]).flat(1),b.index=0,b.isSync=!0)}return b}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{...this.baseConsumeResult,type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(b=>[...b.XY,0]).flat(1),isSync:!0,index:0}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,...this.baseConsumeResult,type:le.DrawWork,dataType:Re.Local}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:xe.getCenterPos(n,r)}),{rect:n,...this.baseConsumeResult,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawEraserlines:i}=e,{strokeColor:o,thickness:a,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f,eraserFaces:g,doingLines:y,lineDash:S,lineCap:b}=this.workOptions,C=n.worldPosition,N=n.worldScaling,{points:T,pos:p,rect:m,isTriangle:v,trianglePoints:M,trianglePos:R}=this.computDrawPoints(a),E=[m.x+m.w/2,m.y+m.h/2],P={pos:E,name:r,id:r,zIndex:c,anchor:[.5,.5],size:[m.w,m.h]};l&&(P.scale=l),u&&(P.rotate=u),h&&(P.translate=h);const k=new dt(P),O={points:M,pos:[R[0]-E[0],R[1]-E[1]],fillColor:o,strokeColor:o,lineWidth:0,normalize:!1},B=new br(O);if(k.append(B),!v&&T&&p){const A={points:T,pos:[p[0]-E[0],p[1]-E[1]],fillColor:o,strokeColor:o,lineDash:d===Be.Dotted?[S&&S[0]||1,(S&&S[1]||2)*a]:d===Be.LongDotted?[(S&&S[0]||1)*a,(S&&S[1]||2)*a]:void 0,lineCap:d===Be.Normal?void 0:b,lineWidth:a,normalize:!1},L=new br(A);k.append(L)}(f||g||y)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:k,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:E,layer:n},i)),this.replace(n,r,k);let D={x:Math.floor(m.x*N[0]+C[0]-xe.SafeBorderPadding),y:Math.floor(m.y*N[1]+C[1]-xe.SafeBorderPadding),w:Math.floor(m.w*N[0]+2*xe.SafeBorderPadding),h:Math.floor(m.h*N[1]+2*xe.SafeBorderPadding)};if(l||u||h){const A=k.getBoundingClientRect();D={x:Math.floor(A.x-xe.SafeBorderPadding),y:Math.floor(A.y-xe.SafeBorderPadding),w:Math.floor(A.width+xe.SafeBorderPadding*2),h:Math.floor(A.height+xe.SafeBorderPadding*2)}}return this.isDelete&&k.setAttribute("opacity",0),D}computDrawPoints(e){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.arrowTipWidth?this.computFullArrowPoints(e):this.computTrianglePoints()}computFullArrowPoints(e){const r=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),n=fe.Per(r).mul(e/2),i=Pe.Sub(this.tmpPoints[0],n),o=Pe.Add(this.tmpPoints[0],n),a=fe.Mul(r,this.arrowTipWidth),c=fe.Sub(this.tmpPoints[1],a),l=Pe.Sub(c,n),u=Pe.Add(c,n),h=fe.Per(r).mul(e*1.5),d=Pe.Sub(c,h),f=Pe.Add(c,h),g=[this.tmpPoints[0],c],y=[d,this.tmpPoints[1],f],S=[i,o,...y,l,u];return{trianglePoints:y.map(b=>Pe.Sub(b,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,points:g.map(b=>Pe.Sub(b,this.tmpPoints[0]).XY).flat(1),rect:it(S),isTriangle:!1,pos:this.tmpPoints[0].XY}}computTrianglePoints(){const e=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),r=this.tmpPoints[1].distance(this.tmpPoints[0]),n=fe.Per(e).mul(Math.floor(r*3/8)),i=Pe.Sub(this.tmpPoints[0],n),o=Pe.Add(this.tmpPoints[0],n),a=[i,this.tmpPoints[1],o];return{trianglePoints:a.map(c=>Pe.Sub(c,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,rect:it(a),isTriangle:!0}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=he.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawEraserlines:i===he.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a}=n,c=i.get(r.name);return o&&(r.tagName==="GROUP"?r.children.forEach(h=>{h.setAttribute("strokeColor",o),h.getAttribute("fillColor")&&h.setAttribute("fillColor",o)}):(r.setAttribute("strokeColor",o),r.setAttribute("fillColor",o)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=o)),a&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=a),c&&i.setInfo(r.name,c),xe.updateNodeOpt(e)}}class C0 extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",Q.Ellipse);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=r;h&&(this.syncUnitTime=h);const d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const y=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:y,isDrawing:!0});const S=y.parent.parent,b={x:0,y:0,w:Math.floor(S.width),h:Math.floor(S.height)},C={type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(Uc(g,b)!==on.outside){const T=Ue(g,this.oldRect);if(this.oldRect=g,C.rect=T,!c)return C}if(c){const T=Date.now();return T-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=T,C.op=this.tmpPoints.map(p=>[...p.XY,0]).flat(1),C.index=0,C.isSync=!0),C}return{type:le.None}}if(!i&&!o&&!c&&a){const y=Date.now();return y-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=y,{type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult,op:this.tmpPoints.map(S=>[...S.XY,0]).flat(1),isSync:!0,index:0}):{type:le.None}}return{type:le.None}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,...this.baseConsumeResult,ops:o,isSync:!0,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawing:i,isDrawEraserlines:o}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:y,eraserFaces:S,doingLines:b,lineDash:C,lineCap:N}=this.workOptions,T=n.worldScaling,{radius:p,rect:m,pos:v}=this.computDrawPoints(l),M={closeType:"normal",radius:p,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:N,lineDash:g===Be.Dotted?[C&&C[0]||1,(C&&C[1]||2)*l]:g===Be.LongDotted?[(C&&C[0]||1)*l,(C&&C[1]||2)*l]:void 0},R={name:r,id:r,zIndex:u,pos:v,anchor:[.5,.5],size:[m.w,m.h]};h&&(R.scale=h),d&&(R.rotate=d),f&&(R.translate=f);const E=new dt(R);if(i){const O=new Yt({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/T[0],1/T[1]]});E.append(O)}const P=new Jh({...M,pos:[0,0]});E.append(P),(y||S||b)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:E,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:S,pos:v,layer:n},o)),this.replace(n,r,E);const k=E.getBoundingClientRect();return this.isDelete&&E.setAttribute("opacity",0),{x:Math.floor(k.x-xe.SafeBorderPadding),y:Math.floor(k.y-xe.SafeBorderPadding),w:Math.floor(k.width+xe.SafeBorderPadding*2),h:Math.floor(k.height+xe.SafeBorderPadding*2)}}computDrawPoints(e){const r=it(this.tmpPoints),n=it(this.tmpPoints,e),i=[Math.floor(r.x+r.w/2),Math.floor(r.y+r.h/2)];return{rect:n,pos:i,radius:[Math.floor(r.w/2),Math.floor(r.h/2)]}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=he.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===he.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,strokeType:c}=n,l=i.get(r.name);let u=r;return r.tagName==="GROUP"&&(u=r.children[0]),o&&(u.setAttribute("strokeColor",o),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=o)),a&&(a==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",a),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=a)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&i.setInfo(r.name,l),xe.updateNodeOpt(e)}}class I0 extends xe{constructor(e){super(e);x(this,"canRotate",!0);x(this,"scaleType",Ye.all);x(this,"toolsType",Q.Rectangle);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}transformData(){const e=it(this.tmpPoints);return[[e.x,e.y,0],[e.x+e.w,e.y,0],[e.x+e.w,e.y+e.h,0],[e.x,e.y+e.h,0]]}computDrawPoints(e){const{thickness:r}=this.workOptions,n=[];for(const a of e)n.push(new fe(...a));const i=it(n,r),o=[i.x+i.w/2,i.y+i.h/2];return{rect:i,pos:o,points:n.map(a=>a.XY).flat(1)}}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u}=r,h=u==null?void 0:u.length;if(!h||h<2)return{type:le.None};let d;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],d=!1):d=this.updateTempPoints(u),!d)return{type:le.None};const f=this.transformData();let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({ps:f,workId:l,layer:S,isDrawing:!0})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const b={rect:S,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,b.op=f.flat(1),b.index=0,b.isSync=!0)}return b}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:Re.Local,op:f.flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var c;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.transformData(),n=this.fullLayer,i=this.draw({ps:r,workId:e,layer:n,isDrawing:!1});this.oldRect=i;const o=r.flat(1),a=xt(o);return(c=this.vNodes)==null||c.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&xe.getCenterPos(i,n)}),{rect:i,type:le.FullWork,dataType:Re.Local,ops:a,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawing:i,ps:o,replaceId:a,isDrawEraserlines:c=!0}=e,{strokeColor:l,fillColor:u,thickness:h,zIndex:d,scale:f,rotate:g,translate:y,strokeType:S,eraserlines:b,eraserFaces:C,doingLines:N,lineCap:T,lineDash:p}=this.workOptions,m=n.worldPosition,v=n.worldScaling,{points:M,rect:R,pos:E}=this.computDrawPoints(o),P={close:!0,normalize:!0,points:M,lineWidth:h,fillColor:u!=="transparent"&&u||void 0,strokeColor:l,lineCap:T,lineDash:S===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*h]:S===Be.LongDotted?[(p&&p[0]||1)*h,(p&&p[1]||2)*h]:void 0};let k={x:Math.floor(R.x*v[0]+m[0]-xe.SafeBorderPadding),y:Math.floor(R.y*v[1]+m[1]-xe.SafeBorderPadding),w:Math.floor(R.w*v[0]+2*xe.SafeBorderPadding),h:Math.floor(R.h*v[0]+2*xe.SafeBorderPadding)};const O=new dt({name:r,id:r,zIndex:d,pos:E,anchor:[.5,.5],size:[R.w,R.h],scale:f,rotate:g,translate:y}),B=new br({...P,pos:[0,0]});if(O.appendChild(B),i){const D=new Yt({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:l,lineWidth:1,scale:[1/v[0],1/v[1]]});O.appendChild(D)}if((b||C||N)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:O,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:C,pos:E,layer:n},c)),this.replace(n,a||r,O),f||g||y){const D=O.getBoundingClientRect();k={x:Math.floor(D.x-xe.SafeBorderPadding),y:Math.floor(D.y-xe.SafeBorderPadding),w:Math.floor(D.width+2*xe.SafeBorderPadding),h:Math.floor(D.height+2*xe.SafeBorderPadding)}}return this.isDelete&&O.setAttribute("opacity",0),k}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var h,d;const{op:r,isFullWork:n,replaceId:i,workState:o=he.Done}=e,a=(h=this.workId)==null?void 0:h.toString();if(!a)return;const c=[];for(let f=0;f<r.length;f+=3)c.push([r[f],r[f+1],r[f+2]]);const l=n?this.fullLayer:this.drawLayer||this.fullLayer,u=this.draw({ps:c,workId:a,layer:l,isDrawing:!1,replaceId:i,isDrawEraserlines:o===he.Done});return this.oldRect=u,(d=this.vNodes)==null||d.setInfo(a,{rect:u,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&xe.getCenterPos(u,l)}),u}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,strokeType:c}=n,l=i.get(r.name);let u=r;return r.tagName==="GROUP"&&(u=r.children[0]),o&&(u.setAttribute("strokeColor",o),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=o)),a&&(a==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",a),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=a)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&i.setInfo(r.name,l),xe.updateNodeOpt(e)}}class b0 extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",Q.Star);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=r,d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};h&&(this.syncUnitTime=h);let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:S,isDrawing:!0})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const b={rect:S,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,b.op=this.tmpPoints.map(N=>[...N.XY,0]).flat(1),b.index=0,b.isSync=!0)}return b}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(b=>[...b.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawing:i,isDrawEraserlines:o=!0}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,vertices:h,innerVerticeStep:d,innerRatio:f,scale:g,rotate:y,translate:S,strokeType:b,eraserlines:C,eraserFaces:N,doingLines:T,lineDash:p,lineCap:m}=this.workOptions,v=n.worldScaling,{rect:M,pos:R,points:E}=this.computDrawPoints(l,h,d,f),P={close:!0,points:E,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:m,lineDash:b===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*l]:b===Be.LongDotted?[(p&&p[0]||1)*l,(p&&p[1]||2)*l]:void 0},k={name:r,id:r,zIndex:u,pos:R,anchor:[.5,.5],size:[M.w,M.h]};g&&(k.scale=g),y&&(k.rotate=y),S&&(k.translate=S);const O=new dt(k);if(i){const A=new Yt({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/v[0],1/v[1]]});O.append(A)}const B=new br({...P,pos:[0,0]});O.append(B),(C||N||T)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:O,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:N,pos:R,layer:n},o)),this.replace(n,r,O);const D=O.getBoundingClientRect();return this.isDelete&&O.setAttribute("opacity",0),{x:Math.floor(D.x-xe.SafeBorderPadding),y:Math.floor(D.y-xe.SafeBorderPadding),w:Math.floor(D.width+xe.SafeBorderPadding*2),h:Math.floor(D.height+xe.SafeBorderPadding*2)}}computDrawPoints(e,r,n,i){const o=it(this.tmpPoints),a=[Math.floor(o.x+o.w/2),Math.floor(o.y+o.h/2)],c=nM(o.w,o.h),l=Math.floor(Math.min(o.w,o.h)/2),u=i*l,h=[],d=2*Math.PI/r;for(let g=0;g<r;g++){const y=g*d-.5*Math.PI;let S,b;g%n===1?(S=u*c[0]*Math.cos(y),b=u*c[1]*Math.sin(y)):(S=l*c[0]*Math.cos(y),b=l*c[1]*Math.sin(y),h.push(S,b)),h.push(S,b)}return{rect:it(this.tmpPoints,e),pos:a,points:h}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=he.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===he.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var S;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,vertices:l,innerVerticeStep:u,innerRatio:h,strokeType:d}=n,f=i.get(r.name),g=f==null?void 0:f.opt;let y=r;return r.tagName==="GROUP"&&(y=r.children[0]),o&&(y.setAttribute("strokeColor",o),g!=null&&g.strokeColor&&(g.strokeColor=o)),a&&(a==="transparent"?y.setAttribute("fillColor","rgba(0,0,0,0)"):y.setAttribute("fillColor",a),g!=null&&g.fillColor&&(g.fillColor=a)),c===Q.Star&&(l&&(g.vertices=l),u&&(g.innerVerticeStep=u),h&&(g.innerRatio=h)),d&&(f!=null&&f.opt)&&((S=f.opt)!=null&&S.strokeType)&&(f.opt.strokeType=d),f&&i.setInfo(r.name,{...f,opt:g}),xe.updateNodeOpt(e)}}class E0 extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",Q.Polygon);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,{op:l,syncUnitTime:u}=r;u&&(this.syncUnitTime=u);const h=this.workId,d=l==null?void 0:l.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(l[0],l[1])],f=!1):f=this.updateTempPoints(l),!f)return{type:le.None};let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:h,layer:S,isDrawing:!0})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const b={type:le.DrawWork,rect:S,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,b.op=this.tmpPoints.map(N=>[...N.XY,0]).flat(1),b.index=0,b.isSync=!0)}return b}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(b=>[...b.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawing:i,isDrawEraserlines:o=!0}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,vertices:h,scale:d,rotate:f,translate:g,strokeType:y,eraserlines:S,eraserFaces:b,doingLines:C,lineCap:N,lineDash:T}=this.workOptions,p=n.worldScaling,{rect:m,pos:v,points:M}=this.computDrawPoints(l,h),R={close:!0,points:M,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:N,lineDash:y===Be.Dotted?[T&&T[0]||1,(T&&T[1]||2)*l]:y===Be.LongDotted?[(T&&T[0]||1)*l,(T&&T[1]||2)*l]:void 0},E={name:r,id:r,zIndex:u,pos:v,anchor:[.5,.5],size:[m.w,m.h]};d&&(E.scale=d),f&&(E.rotate=f),g&&(E.translate=g);const P=new dt(E);if(i){const B=new Yt({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/p[0],1/p[1]]});P.append(B)}const k=new br({...R,pos:[0,0]});P.append(k),(S||b||C)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:P,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:b,pos:v,layer:n},o)),this.replace(n,r,P);const O=P.getBoundingClientRect();return this.isDelete&&P.setAttribute("opacity",0),{x:Math.floor(O.x-xe.SafeBorderPadding),y:Math.floor(O.y-xe.SafeBorderPadding),w:Math.floor(O.width+xe.SafeBorderPadding*2),h:Math.floor(O.height+xe.SafeBorderPadding*2)}}computDrawPoints(e,r){const n=it(this.tmpPoints),i=[Math.floor(n.x+n.w/2),Math.floor(n.y+n.h/2)],o=nM(n.w,n.h),a=Math.floor(Math.min(n.w,n.h)/2),c=[],l=2*Math.PI/r;for(let h=0;h<r;h++){const d=h*l-.5*Math.PI,f=a*o[0]*Math.cos(d),g=a*o[1]*Math.sin(d);c.push(f,g)}return{rect:it(this.tmpPoints,e),pos:i,points:c}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=he.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===he.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,vertices:l,strokeType:u}=n,h=i.get(r.name),d=h==null?void 0:h.opt;let f=r;return r.tagName==="GROUP"&&(f=r.children[0]),o&&(f.setAttribute("strokeColor",o),d!=null&&d.strokeColor&&(d.strokeColor=o)),a&&(a==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",a),d!=null&&d.fillColor&&(d.fillColor=a)),c===Q.Polygon&&l&&(d.vertices=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&i.setInfo(r.name,{...h,opt:d}),xe.updateNodeOpt(e)}}class Mr{static bezier(t,e){const r=[];for(let n=0;n<e.length;n+=4){const i=e[n],o=e[n+1],a=e[n+2],c=e[n+3];i&&o&&a&&c?r.push(...Mr.getBezierPoints(t,i,o,a,c)):i&&o&&a?r.push(...Mr.getBezierPoints(t,i,o,a)):i&&o?r.push(...Mr.getBezierPoints(t,i,o)):i&&r.push(i)}return r}static getBezierPoints(t=10,e,r,n,i){let o=null;const a=[];!n&&!i?o=Mr.oneBezier:n&&!i?o=Mr.twoBezier:n&&i&&(o=Mr.threeBezier);for(let c=0;c<t;c++)o&&a.push(o(c/t,e,r,n,i));return i?a.push(i):n&&a.push(n),a}static oneBezier(t,e,r){const n=e.x+(r.x-e.x)*t,i=e.y+(r.y-e.y)*t;return new fe(n,i)}static twoBezier(t,e,r,n){const i=(1-t)*(1-t)*e.x+2*t*(1-t)*r.x+t*t*n.x,o=(1-t)*(1-t)*e.y+2*t*(1-t)*r.y+t*t*n.y;return new fe(i,o)}static threeBezier(t,e,r,n,i){const o=e.x*(1-t)*(1-t)*(1-t)+3*r.x*t*(1-t)*(1-t)+3*n.x*t*t*(1-t)+i.x*t*t*t,a=e.y*(1-t)*(1-t)*(1-t)+3*r.y*t*(1-t)*(1-t)+3*n.y*t*t*(1-t)+i.y*t*t*t;return new fe(o,a)}}class x0 extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",Q.SpeechBalloon);x(this,"ratio",.8);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){var y;const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=(y=r==null?void 0:r.workId)==null?void 0:y.toString();if(!l)return{type:le.None};const{op:u}=r,h=u==null?void 0:u.length;if(!h||h<2)return{type:le.None};let d;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],d=!1):d=this.updateTempPoints(u),!d)return{type:le.None};let f;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;f=this.draw({workId:l,layer:S,isDrawing:!0})}if(c){const S=Ue(f,this.oldRect);this.oldRect=f;const b={rect:S,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,b.op=this.tmpPoints.map(N=>[...N.XY,0]).flat(1),b.index=0,b.isSync=!0)}return b}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(b=>[...b.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const g=Ue(f,this.oldRect);return this.oldRect=f,{rect:g,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawEraserlines:i=!0}=e,{strokeColor:o,fillColor:a,thickness:c,zIndex:l,placement:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:y,eraserFaces:S,doingLines:b,lineDash:C,lineCap:N}=this.workOptions,{rect:T,pos:p,points:m}=this.computDrawPoints(c,u),v={points:m.map(k=>k.XY),lineWidth:c,fillColor:a!=="transparent"&&a||void 0,strokeColor:o,normalize:!0,className:`${p[0]},${p[1]}`,close:!0,lineCap:N,lineDash:g===Be.Dotted?[C&&C[0]||1,(C&&C[1]||2)*c]:g===Be.LongDotted?[(C&&C[0]||1)*c,(C&&C[1]||2)*c]:void 0},M={name:r,id:r,zIndex:l,pos:p,anchor:[.5,.5],size:[T.w,T.h]};h&&(M.scale=h),d&&(M.rotate=d),f&&(M.translate=f);const R=new dt(M),E=new br({...v,pos:[0,0]});R.append(E),(y||S||b)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:R,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:S,pos:p,layer:n},i)),this.replace(n,r,R);const P=R.getBoundingClientRect();return this.isDelete&&R.setAttribute("opacity",0),{x:Math.floor(P.x-xe.SafeBorderPadding),y:Math.floor(P.y-xe.SafeBorderPadding),w:Math.floor(P.width+xe.SafeBorderPadding*2),h:Math.floor(P.height+xe.SafeBorderPadding*2)}}transformControlPoints(e){const r=it(this.tmpPoints);switch(e){case"bottom":case"bottomLeft":case"bottomRight":{const n=r.y+r.h*this.ratio;return[new fe(r.x,r.y,0),new fe(r.x+r.w,r.y,0),new fe(r.x+r.w,n,0),new fe(r.x,n,0)]}case"top":case"topLeft":case"topRight":{const n=r.y+r.h*(1-this.ratio);return[new fe(r.x,n,0),new fe(r.x+r.w,n,0),new fe(r.x+r.w,r.y+r.h,0),new fe(r.x,r.y+r.h,0)]}case"left":case"leftBottom":case"leftTop":{const n=r.x+r.w*(1-this.ratio);return[new fe(n,r.y,0),new fe(r.x+r.w,r.y,0),new fe(r.x+r.w,r.y+r.h,0),new fe(n,r.y+r.h,0)]}case"right":case"rightBottom":case"rightTop":{const n=r.x+r.w*this.ratio;return[new fe(r.x,r.y,0),new fe(n,r.y,0),new fe(n,r.y+r.h,0),new fe(r.x,r.y+r.h,0)]}}}computDrawPoints(e,r){const n=it(this.tmpPoints),i=this.transformControlPoints(r),o=Math.floor(n.w*.1),a=Math.floor(n.h*.1),c=[],l=fe.Add(i[0],new fe(0,a,0)),u=fe.Add(i[0],new fe(o,0,0)),h=Mr.getBezierPoints(10,l,i[0],u),d=fe.Sub(i[1],new fe(o,0,0)),f=fe.Add(i[1],new fe(0,a,0)),g=Mr.getBezierPoints(10,d,i[1],f),y=fe.Sub(i[2],new fe(0,a,0)),S=fe.Sub(i[2],new fe(o,0,0)),b=Mr.getBezierPoints(10,y,i[2],S),C=fe.Add(i[3],new fe(o,0,0)),N=fe.Sub(i[3],new fe(0,a,0)),T=Mr.getBezierPoints(10,C,i[3],N),p=o*(1-this.ratio)*10,m=a*(1-this.ratio)*10;switch(r){case"bottom":{const R=fe.Sub(i[2],new fe(o*5-p/2,0,0)),E=fe.Sub(i[2],new fe(o*5,-m,0)),P=fe.Sub(i[2],new fe(o*5+p/2,0,0));c.push(E,P,...T,...h,...g,...b,R);break}case"bottomRight":{const R=fe.Sub(i[2],new fe(o*1.1,0,0)),E=fe.Sub(i[2],new fe(o*1.1+p/2,-m,0)),P=fe.Sub(i[2],new fe(o*1.1+p,0,0));c.push(E,P,...T,...h,...g,...b,R);break}case"bottomLeft":{const R=fe.Add(i[3],new fe(o*1.1+p,0,0)),E=fe.Add(i[3],new fe(o*1.1+p/2,m,0)),P=fe.Add(i[3],new fe(o*1.1,0,0));c.push(E,P,...T,...h,...g,...b,R);break}case"top":{const R=fe.Sub(i[1],new fe(o*5-p/2,0,0)),E=fe.Sub(i[1],new fe(o*5,m,0)),P=fe.Sub(i[1],new fe(o*5+p/2,0,0));c.push(E,R,...g,...b,...T,...h,P);break}case"topRight":{const R=fe.Sub(i[1],new fe(o*1.1,0,0)),E=fe.Sub(i[1],new fe(o*1.1+p/2,m,0)),P=fe.Sub(i[1],new fe(o*1.1+p,0,0));c.push(E,R,...g,...b,...T,...h,P);break}case"topLeft":{const R=fe.Add(i[0],new fe(o*1.1+p,0,0)),E=fe.Add(i[0],new fe(o*1.1+p/2,-m,0)),P=fe.Add(i[0],new fe(o*1.1,0,0));c.push(E,R,...g,...b,...T,...h,P);break}case"left":{const R=fe.Add(i[0],new fe(0,a*5-m/2,0)),E=fe.Add(i[0],new fe(-p,a*5,0)),P=fe.Add(i[0],new fe(0,a*5+m/2,0));c.push(E,R,...h,...g,...b,...T,P);break}case"leftTop":{const R=fe.Add(i[0],new fe(0,a*1.1,0)),E=fe.Add(i[0],new fe(-p,a*1.1+m/2,0)),P=fe.Add(i[0],new fe(0,a*1.1+m,0));c.push(E,R,...h,...g,...b,...T,P);break}case"leftBottom":{const R=fe.Sub(i[3],new fe(0,a*1.1+m,0)),E=fe.Sub(i[3],new fe(p,a*1.1+m/2,0)),P=fe.Sub(i[3],new fe(0,a*1.1,0));c.push(E,R,...h,...g,...b,...T,P);break}case"right":{const R=fe.Add(i[1],new fe(0,a*5-m/2,0)),E=fe.Add(i[1],new fe(p,a*5,0)),P=fe.Add(i[1],new fe(0,a*5+m/2,0));c.push(E,P,...b,...T,...h,...g,R);break}case"rightTop":{const R=fe.Add(i[1],new fe(0,a*1.1,0)),E=fe.Add(i[1],new fe(p,a*1.1+m/2,0)),P=fe.Add(i[1],new fe(0,a*1.1+m,0));c.push(E,P,...b,...T,...h,...g,R);break}case"rightBottom":{const R=fe.Sub(i[2],new fe(0,a*1.1+m,0)),E=fe.Sub(i[2],new fe(-p,a*1.1+m/2,0)),P=fe.Sub(i[2],new fe(0,a*1.1,0));c.push(E,P,...b,...T,...h,...g,R);break}}const v=it(this.tmpPoints,e),M=[Math.floor(v.x+v.w/2),Math.floor(v.y+v.h/2)];return{rect:v,pos:M,points:c}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=he.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===he.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,placement:l,strokeType:u}=n,h=i.get(r.name),d=h==null?void 0:h.opt;let f=r;return r.tagName==="GROUP"&&(f=r.children[0]),o&&(f.setAttribute("strokeColor",o),d!=null&&d.strokeColor&&(d.strokeColor=o)),a&&(a==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",a),d!=null&&d.fillColor&&(d.fillColor=a)),c===Q.SpeechBalloon&&l&&(d.placement=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&i.setInfo(r.name,{...h,opt:d}),xe.updateNodeOpt(e)}}var Tye=wi,Cye=jr,Iye="[object Boolean]";function bye(s){return s===!0||s===!1||Cye(s)&&Tye(s)==Iye}var Eye=bye;const ni=un(Eye);class R0 extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.both);x(this,"toolsType",Q.Straight);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"straightTipWidth");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.straightTipWidth=this.workOptions.thickness/2,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=r,d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};h&&(this.syncUnitTime=h);let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:S})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const b={rect:S,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,b.op=this.tmpPoints.map(N=>[...N.XY,0]).flat(1),b.index=0,b.isSync=!0)}return b}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(b=>[...b.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawEraserlines:i=!0}=e,{strokeColor:o,thickness:a,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f,eraserFaces:g,doingLines:y,lineCap:S,lineDash:b}=this.workOptions,C=n.worldPosition,N=n.worldScaling,{d:T,rect:p,isDot:m}=this.computDrawPoints(a,d),v=[p.x+p.w/2,p.y+p.h/2],M=new dt({pos:v,anchor:[.5,.5],size:[p.w,p.h],name:r,id:r,normalize:!0,zIndex:c}),R={pos:[0,0],normalize:!0,d:T,fillColor:o,strokeColor:o,lineDash:m?void 0:d===Be.Dotted?[b&&b[0]||1,(b&&b[1]||2)*a]:d===Be.LongDotted?[(b&&b[0]||1)*a,(b&&b[1]||2)*a]:void 0,lineCap:m?void 0:S,lineWidth:d===Be.Normal||m?0:a};l&&(R.scale=l),u&&(R.rotate=u),h&&(R.translate=h);const E=new Yt(R);M.append(E),(f||g||y)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:M,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:v,layer:n},i)),this.replace(n,r,M);let P={x:Math.floor(p.x*N[0]+C[0]-xe.SafeBorderPadding),y:Math.floor(p.y*N[1]+C[1]-xe.SafeBorderPadding),w:Math.floor(p.w*N[0]+2*xe.SafeBorderPadding),h:Math.floor(p.h*N[1]+2*xe.SafeBorderPadding)};if(u||l||h){const k=E.getBoundingClientRect();P={x:Math.floor(k.x-xe.SafeBorderPadding),y:Math.floor(k.y-xe.SafeBorderPadding),w:Math.floor(k.width+xe.SafeBorderPadding*2),h:Math.floor(k.height+xe.SafeBorderPadding*2)}}return this.isDelete&&M.setAttribute("opacity",0),P}computDrawPoints(e,r){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.straightTipWidth?this.computFullPoints(e,r):this.computDotPoints(e)}computFullPoints(e,r){const n=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),i=fe.Per(n).mul(e/2),o=Pe.Sub(this.tmpPoints[0],i),a=Pe.Add(this.tmpPoints[0],i),c=Pe.Sub(this.tmpPoints[1],i),l=Pe.Add(this.tmpPoints[1],i),u=Pe.GetSemicircleStroke(this.tmpPoints[1],c,-1,8),h=Pe.GetSemicircleStroke(this.tmpPoints[0],a,-1,8),d=[o,c,...u,l,a,...h];let f;return r!==Be.Normal?f=Or(this.tmpPoints,!1):f=Or(d,!0),{d:f,rect:it(d),isDot:!1,pos:this.tmpPoints[0].XY}}computDotPoints(e){const r=Pe.GetDotStroke(this.tmpPoints[0],e/2,8);return{d:Or(r,!0),rect:it(r),isDot:!0,pos:this.tmpPoints[0].XY}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=he.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawEraserlines:i===he.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a}=n,c=i.get(r.name);return o&&(r.tagName==="GROUP"?r.children.forEach(h=>{h.setAttribute("strokeColor",o),h.getAttribute("fillColor")&&h.setAttribute("fillColor",o)}):(r.setAttribute("strokeColor",o),r.setAttribute("fillColor",o)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=o)),a&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=a),c&&i.setInfo(r.name,c),xe.updateNodeOpt(e)}}var Cr=(s=>(s[s.Text=1]="Text",s[s.Shape=2]="Shape",s))(Cr||{});const xye=1.2;function Sd(s,t){return t||s*xye}const Zt=class Zt{createProxy(t){const e=new Proxy(t,{get(r,n,i){const o=Zt.interceptors.hasOwnProperty(n)?Zt.interceptors:r;return Reflect.get(o,n,i)}});return Zt.proxyToRaw.set(e,t),e}};x(Zt,"proxyToRaw",new WeakMap),x(Zt,"interceptors",{entries(...t){return Zt.proxyToRaw.get(this).entries(...t)},forEach(...t){return Zt.proxyToRaw.get(this).forEach(...t)},size(){return Zt.proxyToRaw.get(this).size},get(t){return Zt.proxyToRaw.get(this).get(t)},set(t,e){return Zt.proxyToRaw.get(this).set(t,e)},delete(t){return Zt.proxyToRaw.get(this).delete(t)},clear(){return Zt.proxyToRaw.get(this).clear()}});let Jn=Zt;const ui="__undo_scope_clear_all__",Lp=s=>Math.max(s,1e3),Rye=s=>Math.max(s+1e3,6e3);var $e=(s=>(s.DrawingPencil="drawing:pencil",s.DrawingArrow="drawing:arrow",s.DrawingShape="drawing:shape",s.DrawingEraser="drawing:eraser",s.DrawingPencilEraser="drawing:pencil-eraser",s.DrawingBitMapEraser="drawing:bitmap-eraser",s.MethodTranslateNode="method:translate-node",s.MethodScaleNode="method:scale-node",s.MethodRotateNode="method:rotate-node",s.MethodSetPoint="method:set-point",s.MethodSetColorNode="method:set-color-node",s.AsyncCopyNode="async:copy-node",s.AsyncPasteNode="async:paste-node",s.AsyncDeleteNode="async:delete-node",s.AsyncSetFontStyle="async:set-font-style",s.AsyncSetShapeOpt="async:set-shape-opt",s.AsyncZIndexNode="async:z-index-node",s.AsyncSetLock="async:set-lock",s.AsyncUpdateElement="async:update-element",s.AsyncImage="async:image",s.AsyncIcon="async:icon",s.AsyncMarkmap="async:markmap",s.Text="text",s.Clear="command:clear",s))($e||{});function kye(s){const{tickerId:t,viewId:e,scenePath:r,expectedAcks:n}=s;return{viewId:e,scenePath:r,expectedRender:n.render,expectedStorage:n.storage,gotRender:!n.render,gotStorage:!n.storage,scopeMode:n.scopeMode||"static",source:n.source,transactionId:n.transactionId||`${e}:${t}`,barrierEpoch:n.barrierEpoch||0,startedAt:Date.now(),phase:"doing",ownerPromiseActive:n.ownerPromiseActive??!0,finalizeRequested:!1,collectedScopeKeys:new Set,scopeKeys:new Set,ackedStorageKeys:new Set,meta:{copyAck:n.copyAck,isWritable:n.isWritable}}}function Aye(s,t){t&&(s.meta={...s.meta,...t})}function Pye(s){return(!s.expectedRender||s.gotRender)&&(!s.expectedStorage||s.gotStorage)}function Dye(s){return!s.ackTimer&&s.finalizeRequested}function Lye(s){return s.expectedStorage?s.finalizeRequested?s.scopeKeys.size?[...s.scopeKeys].every(t=>s.ackedStorageKeys.has(t)):!0:!1:!0}function Nye(s,t){return s.size>0?s.has(ui)?t===ui:!!t&&s.has(t):!t||s.has(t)}function $l(s,t){const e=t.toString();return s.isLocalId(e)?s.transformKey(e):e}function Yl(s,t,e,r){var o,a;const n=new Set;if(!s)return n;const i=s.getStorageData(t,e);for(const c of r){if(c==null)continue;if(c===ui){n.add(ui);continue}const l=$l(s,c),u=i==null?void 0:i[l];if(s.getLocalId(l)===Le){(o=u==null?void 0:u.selectIds)==null||o.forEach(h=>{n.add($l(s,h))});continue}n.add(l),(a=u==null?void 0:u.selectIds)==null||a.forEach(h=>{n.add($l(s,h))})}return n}function Np(s,t,e){return e!=null&&e.has(ui)?!t.has(s):e!=null&&e.size?e.has(s):!t.has(s)}const Oye={[Q.Selector]:De.selector,[Q.Clicker]:De.clicker,[Q.Text]:De.text,[Q.Pencil]:De.pencil,[Q.LaserPen]:De.laserPen,[Q.Arrow]:De.arrow,[Q.Straight]:De.straight,[Q.Rectangle]:De.rectangle,[Q.Ellipse]:De.ellipse,[Q.Star]:ar.star,[Q.Polygon]:ar.polygon,[Q.SpeechBalloon]:ar.speechBalloon,[Q.Eraser]:De.eraser,[Q.PencilEraser]:De.pencilEraser,[Q.BitMapEraser]:ar.bitMapEraser};function jc(s){return s===void 0?void 0:Oye[s]}function zye(s,t){return s||t}function Bye(s){return jc(s)}function jye(s){switch(s){case Q.Text:return Cr.Text;case Q.SpeechBalloon:case Q.Star:case Q.Ellipse:case Q.Rectangle:case Q.Triangle:case Q.Rhombus:case Q.Polygon:return Cr.Shape}}function Ws(s){if(!s)return!1;try{const t=Bn(s);if(Array.isArray(t))return t.some(e=>String(e??"").trim().length>0);if(typeof t=="string")return t.trim().length>0}catch{}return s.split(",").some(t=>t.trim().length>0)}function k0(s){const t=s.lastChild;if(!t){const n=document.createElement("div"),i=document.createTextNode("");return n.appendChild(i),s.appendChild(n),i}if(t.nodeType===Node.TEXT_NODE)return t;const e=t;if(!e.lastChild){const n=document.createTextNode("");return e.appendChild(n),n}if(e.lastChild.nodeType===Node.TEXT_NODE)return e.lastChild;const r=document.createTextNode("");return e.appendChild(r),r}function Fye(s,t){var n;const e=document.createRange(),r=k0(t);r.nodeType===Node.TEXT_NODE?e.setStart(r,((n=r.textContent)==null?void 0:n.length)||0):e.setStart(r,0),e.collapse(!0),s.removeAllRanges(),s.addRange(e)}function A0(s){const t=document.createTreeWalker(s,NodeFilter.SHOW_TEXT,null),e=[];let r;for(;(r=t.nextNode())!==null;)e.push(r);return e}function Uye(s,t,e){var a;const r=document.createRange();r.setStart(s,t),r.collapse(!0);const n=r.getBoundingClientRect();if(!n.width&&!n.height){const c=(a=s.parentElement)==null?void 0:a.getBoundingClientRect();if(c){const l=e.y<c.top?c.top-e.y:e.y>c.bottom?e.y-c.bottom:0,u=t===0?c.left:c.right;return Math.abs(e.x-u)+l*4}}const i=n.left+n.width/2,o=n.top+n.height/2;return Math.abs(e.x-i)+Math.abs(e.y-o)*4}function Wye(s,t){var n;const e=A0(s);if(!e.length){const i=k0(s);return i.nodeType===Node.TEXT_NODE?{node:i,offset:0}:void 0}let r;for(const i of e){const o=((n=i.textContent)==null?void 0:n.length)||0;for(let a=0;a<=o;a++){const c=Uye(i,a,t);(!r||c<r.distance)&&(r={node:i,offset:a,distance:c})}}return r?{node:r.node,offset:r.offset}:void 0}function Vye(s,t,e){const r=Wye(t,e);if(!r)return!1;const n=document.createRange();return n.setStart(r.node,r.offset),n.collapse(!0),s.removeAllRanges(),s.addRange(n),!0}function Op(s,t){return!!(s!=null&&s.anchorNode)&&t.contains(s.anchorNode)}function zp(s){let t=null,e=!1;for(const n of Array.from(s.childNodes)){if(n instanceof HTMLDivElement){t=n;continue}n.nodeType===Node.TEXT_NODE&&(t||(t=document.createElement("div"),s.insertBefore(t,n),e=!0),t.appendChild(n),e=!0)}const r=Array.from(s.childNodes).reverse().find(n=>n instanceof HTMLDivElement);return{changed:e,lastLine:r||null}}function $ye(s){const t=A0(s);return{textContent:t.map(e=>e.textContent||"").join(""),textNodes:t}}function P0(s){const t=[];for(let e=0;e<s.childNodes.length;e++){const r=s.childNodes[e];if(r.nodeName==="#text"&&e===0){const n=r.textContent.split(/\n/),i=n.pop();t.push(...n),i&&t.push(i)}else if(r.nodeName==="DIV"){const i=(r.innerText??r.textContent??"").split(/\n/);if(i.length===2&&i[0]===""&&i[1]==="")t.push("");else{const o=i.shift();(o||o==="")&&t.push(o);const a=i.pop();t.push(...i),a&&t.push(a)}}}return t}function D0(s){return xt(P0(s))}function Cs(s,t){var n,i;if(!s.length)return;let e=Math.max(0,t);for(const o of s){const a=((n=o.textContent)==null?void 0:n.length)||0;if(e<=a)return{node:o,offset:e};e-=a}const r=s[s.length-1];return{node:r,offset:((i=r.textContent)==null?void 0:i.length)||0}}function Yye(s){const{hasPoint:t,previousByPoint:e,hasSelectionInEditor:r,rangeCount:n,isCollapsed:i}=s;return!t&&e&&r&&n>0&&i}const Pr=5;class Gye{constructor(t){x(this,"internalMsgEmitter");x(this,"publicMsgEmitter");x(this,"control");x(this,"editors");x(this,"activeId");x(this,"proxyMap");x(this,"taskqueue",new Map);x(this,"undoTickerId");x(this,"checkLocalTextBlur",ve.debounce(()=>{if(this.collector)for(const[t,e]of this.editors.entries())e.opt.workState!==he.Done&&this.collector.isLocalId(t)&&this.activeId!==t&&(Ws(e.opt.text)?this.unActive(t):this.delete(t,!0,!0))},100));const{control:e,internalMsgEmitter:r,publicMsgEmitter:n}=t;this.control=e,this.internalMsgEmitter=r,this.publicMsgEmitter=n;const i=new Map;this.proxyMap=new Jn;const o=this,a=Jn.interceptors.set;Jn.interceptors.set=function(l,u){return o.interceptors.set(l,u),a.call(this,l,u)};const c=Jn.interceptors.delete;Jn.interceptors.delete=function(l){return o.interceptors.delete(l),c.call(this,l)},this.editors=this.proxyMap.createProxy(i)}get collector(){return this.control.collector}set UndoTickerId(t){this.undoTickerId=t}get UndoTickerId(){return this.undoTickerId}getDoneUndoTicker(t,e,r){const n=r??e,i=this.control.viewContainerManager.getUndoTickerId(t);if(n===he.Done)return this.undoTickerId&&i===this.undoTickerId?this.undoTickerId:i}ackDoneRender(t,e,r,n,i){t&&(this.internalMsgEmitter.emit("ackRenderUndoTicker",t,e,r,{requestId:n,emitEventType:i}),this.undoTickerId=void 0)}filterEditor(t){const e=new Map;return this.editors.forEach((r,n)=>{r.viewId===t&&e.set(n,r)}),e}get interceptors(){return{set:(t,e)=>{var C,N,T,p,m,v,M,R,E;if(!this.collector)return!0;const{viewId:r,scenePath:n,canSync:i,canWorker:o,type:a,opt:c,dataType:l,updateNodeOpt:u,requestId:h,emitEventType:d,skipStorageDispatch:f}=e,g=e.needUndoTicker??this.getDoneUndoTicker(r,c==null?void 0:c.workState,u==null?void 0:u.workState);if(!o&&!i)return!0;const S=((C=this.collector)==null?void 0:C.isLocalId(t))?(N=this.collector)==null?void 0:N.transformKey(t):t,b=((T=this.collector)==null?void 0:T.storage[r])&&this.collector.storage[r][n]&&this.collector.storage[r][n][S]||void 0;b?b.toolsType===Q.Text&&(o&&(this.control.worker.queryTaskBatchData({workId:t,msgType:le.UpdateNode}).forEach(P=>{var k;(k=this.control.worker)==null||k.taskBatchData.delete(P)}),(M=this.control.worker)==null||M.taskBatchData.add({workId:t,msgType:le.UpdateNode,dataType:l||Re.Local,toolsType:Q.Text,opt:c,viewId:r,scenePath:n,willRefresh:!0}),(R=this.control.worker)==null||R.runAnimation()),i&&!f&&((E=this.collector)==null||E.dispatch({type:le.UpdateNode,workId:t,toolsType:Q.Text,opt:c,viewId:r,scenePath:n,updateNodeOpt:u,requestId:h,emitEventType:d,needUndoTicker:g}),this.ackDoneRender(g,r,n,h,d),delete e.needUndoTicker,c.workState===he.Done&&this.control.runEffectWork(()=>{this.control.worker.setShapeSelectorByWorkId(t,r)}))):a===Cr.Text&&(i&&!f&&((p=this.collector)==null||p.dispatch({type:c.text&&le.FullWork||le.CreateWork,workId:t,toolsType:Q.Text,opt:c,isSync:!0,viewId:r,scenePath:n,updateNodeOpt:u,requestId:h,emitEventType:d,needUndoTicker:g}),this.ackDoneRender(g,r,n,h,d),delete e.needUndoTicker),o&&((m=this.control.worker)==null||m.taskBatchData.add({workId:t,msgType:c.text&&le.FullWork||le.CreateWork,dataType:l||Re.Local,toolsType:Q.Text,opt:c,viewId:r,scenePath:n,willRefresh:!0}),(v=this.control.worker)==null||v.runAnimation()))},delete:t=>{var c,l,u;if(!this.collector)return!0;const e=this.editors.get(t);if(!e)return!0;const{viewId:r,scenePath:n,canSync:i,canWorker:o}=e,a=this.getDoneUndoTicker(r,he.Done);if(!o&&!i)return!0;o&&((c=this.control.worker)==null||c.taskBatchData.add({workId:t,toolsType:Q.Text,msgType:le.RemoveNode,dataType:Re.Local,viewId:r,scenePath:n,willRefresh:!0}),(l=this.control.worker)==null||l.runAnimation()),i&&((u=this.collector)==null||u.dispatch({type:le.RemoveNode,removeIds:[t],toolsType:Q.Text,viewId:r,scenePath:n,needUndoTicker:a}),this.ackDoneRender(a,r,n))},clear(){return!0}}}computeTextActive(t,e){var i,o,a,c;const r=(i=this.control.viewContainerManager)==null?void 0:i.transformToScenePoint(t,e),n=(o=this.control.viewContainerManager)==null?void 0:o.getCurScenePath(e);e&&n&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:le.GetTextActive,dataType:Re.Local,op:r,viewId:e,scenePath:n}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){var e;let t=this.activeId;for(const[r,n]of this.editors.entries())if(n.opt.uid&&n.opt.uid===((e=this.collector)==null?void 0:e.uid)){t=r;break}if(t){const r=this.editors.get(t);Ws(r==null?void 0:r.opt.text)?this.unActive(t):this.delete(t,!0,!0)}this.checkLocalTextBlur()}forceDoneLocalText(t){const e=t?new Set(t):void 0;[...this.editors.entries()].filter(([n,i])=>{var o,a;return i.opt.workState!==he.Done&&(!e||e.has(i.viewId))&&(i.opt.uid===((o=this.collector)==null?void 0:o.uid)||((a=this.collector)==null?void 0:a.isLocalId(n)))}).map(([n])=>n).forEach(n=>{const i=this.editors.get(n);Ws(i==null?void 0:i.opt.text)?this.unActive(n):this.delete(n,!0,!0)})}onCameraChange(t,e){var r,n;for(const[i,o]of this.editors.entries())if(o.viewId===e){const{boxPoint:a,boxSize:c}=o.opt,l=a&&((r=this.control.viewContainerManager)==null?void 0:r.transformToOriginPoint(a,o.viewId)),u=(n=this.control.viewContainerManager)==null?void 0:n.getCurScenePath(e);if(u&&e){const h={x:l&&l[0]||0,y:l&&l[1]||0,w:c&&c[0]||0,h:c&&c[1]||0,opt:o.opt,scale:t.scale,type:Cr.Text,viewId:e,scenePath:u,canWorker:!1,canSync:!1,previewMatrix:o.previewMatrix};this.editors.set(i,h),this.control.viewContainerManager.updateTextEditorInfo(e,this.activeId)}}}deriveTextEditorInfoFromServiceData(t,e={}){var N,T,p;const{workId:r,opt:n,msgType:i,viewId:o,scenePath:a,dataType:c,updateNodeOpt:l,lastOperator:u}=t;if(!r||!o||!a)return;const h=r.toString();if(i===le.RemoveNode){this.delete(h,!0,!0);return}const d=n,f=d.workState!==he.Done&&!d.uid&&u?{...d,uid:u}:d,{boxPoint:g,boxSize:y}=f,S=g&&((N=this.control.viewContainerManager)==null?void 0:N.transformToOriginPoint(g,o)),b=this.control.viewContainerManager.getView(o),C={x:S&&S[0]||0,y:S&&S[1]||0,w:y&&y[0]||0,h:y&&y[1]||0,opt:f,type:Cr.Text,canWorker:e.canWorker??!0,canSync:e.canSync??!1,dataType:c,scale:((T=b==null?void 0:b.cameraOpt)==null?void 0:T.scale)||1,previewMatrix:void 0,viewId:o,scenePath:a};if(f.workState===he.Done&&!this.control.cursor.isEnableCursor&&g&&y){let v=l==null?void 0:l.uid;if(!v){const M=this.editors.get(h);v=M&&((p=M.opt)==null?void 0:p.uid)}v&&this.control.cursor.collectServiceCursor({op:g&&[g[0]+y[0],g[1]+y[1]],uid:v,workState:he.Done,cursorTool:jc(Q.Text),viewId:o,type:le.Cursor})}return this.editors.set(h,C),c===Re.Service&&f.workState===he.Done&&this.activeId===h&&(this.activeId=void 0),(e.updateView??!0)&&this.control.viewContainerManager.updateTextEditorInfo(o,this.activeId),C}onServiceDerive(t){this.deriveTextEditorInfoFromServiceData(t)}updateForViewEdited(t,e){var n;this.editors.set(t,e);const r=(n=this.taskqueue.get(t))==null?void 0:n.resolve;r&&r(e)}active(t,e){var n;const r=this.editors.get(t);r&&r.viewId&&(r.opt.workState=he.Start,r.opt.uid=(n=this.collector)==null?void 0:n.uid,this.activeId=t,r.canWorker=!0,r.canSync=!0,e&&r.viewId&&this.addUndoTicker(e,r.viewId),r.undoTickerId=e||r.undoTickerId||this.undoTickerId,this.editors.set(t,r),this.control.viewContainerManager.updateTextEditorInfo(r.viewId,this.activeId))}unActive(t){var r;const e=this.editors.get(t);if(e&&e.viewId){const n=e.undoTickerId||this.control.viewContainerManager.getUndoTickerId(e.viewId)||this.undoTickerId;n&&this.internalMsgEmitter.emit("finalizeRequested",n,e.viewId,[t],e.scenePath),e.opt.workState=he.Done,e.opt.uid=void 0,e.canWorker=!0,e.canSync=!0,this.editors.set(t,e),this.activeId=void 0;const i=(r=this.control.viewContainerManager.getView(e.viewId))==null?void 0:r.container;if(i){const o=CSS.escape(t),a=i.querySelector(`.editor-box #${o}`);a&&a.blur()}this.control.viewContainerManager.updateTextEditorInfo(e.viewId,this.activeId)}}addUndoTicker(t,e){this.internalMsgEmitter.emit("addUndoTicker",t,e,{render:!0,storage:!0,source:$e.Text}),this.undoTickerId=t}createTextForMasterController(t,e){var o;const{workId:r,isActive:n,...i}=t;e&&this.addUndoTicker(e,i.viewId),i.opt.uid=(o=this.collector)==null?void 0:o.uid,i.undoTickerId=e||i.undoTickerId||this.undoTickerId,n&&(this.activeId=r),i.dataType=Re.Local,i.canWorker=!0,i.canSync=!0,this.editors.set(r,i),this.control.viewContainerManager.updateTextEditorInfo(i.viewId,this.activeId)}updateTextForMasterController(t,e){var o;const{workId:r,...n}=t;e&&this.addUndoTicker(e,n.viewId);const i=this.editors.get(r)||{};n.opt&&(n.opt.uid=(o=this.collector)==null?void 0:o.uid),n.undoTickerId=e||i.undoTickerId||this.undoTickerId,n.dataType=Re.Local,this.editors.set(r,{...i,...n}),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId)}async updateTextControllerWithEffectAsync(t,e){var u;const{workId:r,...n}=t;e&&this.addUndoTicker(e,n.viewId);const i=this.editors.get(r)||{};n.opt&&(n.opt.uid=(u=this.collector)==null?void 0:u.uid),n.undoTickerId=e||i.undoTickerId||this.undoTickerId,n.dataType=Re.Local;const o={...i,...n};if(this.editors.set(r,o),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId),this.taskqueue.has(r)){const h=this.taskqueue.get(r);return h&&(h.clocker&&clearTimeout(h.clocker),this.taskqueue.delete(r)),await this.updateTextControllerWithEffectAsync(t)}const a=setTimeout(()=>{var d;const h=(d=this.taskqueue.get(r))==null?void 0:d.resolve;h&&h(o)},50),c=await new Promise(h=>{this.taskqueue.set(r,{resolve:h,clocker:a})}),l=this.taskqueue.get(r);return l&&(l.clocker&&clearTimeout(l.clocker),this.taskqueue.delete(r)),c}updateTextForWorker(t,e){const{workId:r,isActive:n,...i}=t,o=this.editors.get(r)||{},a={...o,...i};if(e&&this.addUndoTicker(e,i.viewId),a.undoTickerId=e||o.undoTickerId||this.undoTickerId,n){a.canWorker=!1,a.canSync=!1,this.editors.set(r,a),this.active(r);return}this.editors.set(r,a),this.control.viewContainerManager.updateTextEditorInfo(i.viewId,this.activeId)}get(t){return this.editors.get(t)}delete(t,e,r){const n=this.editors.get(t);if(n){const i=n.viewId;n.canSync=e,n.canWorker=r,this.editors.delete(t),this.activeId===t&&(this.activeId=void 0),this.control.viewContainerManager.updateTextEditorInfo(i,this.activeId)}}deleteBatch(t,e,r){const n=new Set;for(const i of t){const o=this.editors.get(i);if(o){const a=o.viewId;o.canSync=e,o.canWorker=r,this.editors.delete(i),this.activeId===i&&(this.activeId=void 0),n.add(a)}}for(const i of n)this.control.viewContainerManager.updateTextEditorInfo(i,this.activeId)}clear(t,e){this.editors.forEach((r,n)=>{r.viewId===t&&(e&&(r.canSync=!1),r.canWorker=!1,this.editors.delete(n))}),this.activeId=void 0,this.control.viewContainerManager.updateTextEditorInfo(t,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}insertText(t,e,r,n){var g,y;if(!this.control.canAcceptLocalMutation(t))return;const i=(g=this.control.room)==null?void 0:g.state.memberState;if(!i)return;const o=this.control.viewContainerManager.getView(t);if(!(o!=null&&o.focusScenePath))return;const a=o==null?void 0:o.cameraOpt,c=this.control.getToolsOpt(Q.Text,i);if(!c)return;const l=(y=this.control.viewContainerManager)==null?void 0:y.transformToOriginPoint([e,r],t),h=nu(n,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/),d=c.toolsOpt;d.text=xt(h),d.workState=he.Doing,d.boxPoint=[Math.round(e),Math.round(r)],d.boxSize=[d.fontSize,d.fontSize];const f=this.control.worker.now;return this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:f.toString(),x:l&&l[0]||0,y:l&&l[1]||0,scale:(a==null?void 0:a.scale)||1,opt:d,type:Cr.Text,isActive:!0,viewId:t,scenePath:o.focusScenePath},f),f.toString()}updateText(t,e){const r=this.editors.get(t.toString());if(!r||!this.control.canAcceptLocalMutation(r.viewId))return;const i=nu(e,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/);r.opt.text=xt(i),this.control.textEditorManager.updateTextForMasterController({workId:t,opt:r.opt,viewId:r.viewId,canSync:!0,canWorker:!0},this.control.worker.now)}}function Hye(s){return s&&s.split(",").map(t=>{const e=t.trim();return!e||/^(['"]).*\1$/.test(e)||!/\s/.test(e)?e:JSON.stringify(e)}).join(", ")}const L0=2048,Qye=3/4;function qye(s){const t=Math.max(1,s);return Math.max(1,Math.floor(L0*Qye/t))}const ei=class ei extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.proportional);x(this,"toolsType",Q.Text);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");this.workOptions=e.toolsOpt}static async normalizeStorageData(e){return this.normalizeStorageDataSync(e)}static normalizeStorageDataSync(e){const r=xe.normalizeStorageDataSync(e);if(r.status==="unrecoverable")return r;const n=r.value,i=n.opt;return i&&i.workState!==he.Done?(n.type=le.FullWork,n.opt={...i,workState:he.Done},{status:"stable",value:n}):r}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}consumeService(){}async draw(e){const{workId:r,layer:n,isDrawLabel:i,boxRect:o,isActive:a}=e;if(a&&!a())return;const{boxSize:c,boxPoint:l,zIndex:u}=this.workOptions,h=n.worldPosition,d=n.worldScaling;if(!l||!c)return;const f={name:r,id:r,pos:[l[0]-Pr,l[1]-Pr],anchor:[0,0],size:c,zIndex:u},g=new dt(f),y={x:l[0]-Pr,y:l[1]-Pr,w:c[0],h:c[1]},S={x:Math.floor(y.x*d[0]+h[0]),y:Math.floor(y.y*d[1]+h[1]),w:Math.floor(y.w*d[0])+2,h:Math.floor(y.h*d[1])+2};let b;if(o&&(b=Uc(S,o)),(i||o&&b!==on.outside)&&n&&this.workOptions.text){const C=await ei.createLabels(this.workOptions,n,S,a),{labels:N}=C;if(a&&!a())return N.forEach(T=>T.disconnect()),S;g.append(...N)}return a&&!a()?(g.removeAllChildren(),g.disconnect(),S):(this.replace(n,r,g),S)}async consumeServiceAsync(e){var f,g,y,S,b,C,N,T,p,m;const r=(f=this.workId)==null?void 0:f.toString();if(!r)return;const{isFullWork:n,replaceId:i,isDrawLabel:o,boxRect:a,isActive:c,previewMatrix:l}=e;this.oldRect=i&&((y=(g=this.vNodes)==null?void 0:g.get(i))==null?void 0:y.rect)||void 0;const u=n?this.fullLayer:this.drawLayer||this.fullLayer,h=await this.draw({workId:r,layer:u,isDrawLabel:typeof o>"u"&&this.workOptions.workState===he.Done||o,boxRect:a,isActive:c});if(c&&!c())return h;(S=this.vNodes)==null||S.setInfo(r,{rect:h,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:h&&xe.getCenterPos(h,u)});const d=l||((N=(C=(b=this.vNodes)==null?void 0:b.get(r))==null?void 0:C.opt)==null?void 0:N.matrix);if(d){const v=u.getElementsByName(r)[0];l&&(v==null||v.setAttribute("transform",Fu(l)));const M=(T=this.vNodes)==null?void 0:T.get(r),R=(p=this.vNodes)==null?void 0:p.getNodeRectFormShape(r,M,d);if(R)return(m=this.vNodes)==null||m.setInfo(r,{rect:R}),R}return h}updataOptService(){}async updataOptServiceAsync(e,r,n){var y,S;if(!this.workId)return;const i=this.workId.toString(),{fontColor:o,fontBgColor:a,bold:c,italic:l,lineThrough:u,underline:h,zIndex:d}=e,f=(y=this.vNodes)==null?void 0:y.get(i);if(!f)return;o&&(f.opt.fontColor=o),a&&(f.opt.fontBgColor=a),c&&(f.opt.bold=c),l&&(f.opt.italic=l),ni(u)&&(f.opt.lineThrough=u),ni(h)&&(f.opt.underline=h),gt(d)&&(f.opt.zIndex=d),this.oldRect=f.rect;const g=await this.draw({workId:i,layer:this.fullLayer,isDrawLabel:typeof r>"u"&&this.workOptions.workState===he.Done||r,boxRect:n});return(S=this.vNodes)==null||S.setInfo(i,{rect:g,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:g&&xe.getCenterPos(g,this.fullLayer)}),g}clearTmpPoints(){this.tmpPoints.length=0}static getSafetySnippetRatio(e){const r=(e==null?void 0:e.parent).displayRatio||1,n=Math.ceil(e.worldScaling[0]*10)/10;let i=n;return n<=2?i=n*r*2:n>2&&n<=3?i=n*r*1.6:n>3&&n<=4?i=n*r*1.2:n>4&&(i=n*r),Math.floor(i*1e3)/1e3}static getSafetySnippetFontLength(e){return qye(e)}static async createLabels(e,r,n,i){var O;const o=[],{x:a,y:c}=n,{width:l,height:u}=(O=r.parent)==null?void 0:O.parent,h=Bn(e.text),d=h.length,{fontSize:f,lineHeight:g,bold:y,textAlign:S,italic:b,fontFamily:C,verticalAlign:N,fontColor:T,fontBgColor:p,underline:m,lineThrough:v}=e,M=ei.getSafetySnippetRatio(r)||1,R=Sd(f,g),E=Math.floor(f*M),P=ei.getSafetySnippetFontLength(E),k=R*M;for(let B=0;B<d;B++){const D=h[B];if(D){const A=yMe(D),L=[0,0],U=[0,R];N==="middle"&&(L[1]=Math.floor(B*R+Pr+f*(1.1-1)));const Y=[0,Math.floor(-f*.15)];L[0]=Pr;const q=Math.sin(Math.PI/180*20);let ie=0;const z=[];let V=0;for(;V<A;){if(i&&!i())return z.forEach(pe=>pe.disconnect()),o.forEach(pe=>pe.disconnect()),{labels:[]};S==="left"&&(Y[0]=ie),V===0&&b==="italic"&&(Y[0]=Y[0]-q/2*f);const $=D.slice(V,V+P),ee={anchor:[0,0],pos:Y,text:$,fontFamily:Hye(C),fontSize:E,lineHeight:k,strokeColor:T,fontWeight:y,fillColor:T,textAlign:S,fontStyle:b,scale:[1/M,1/M]},oe=new _h(ee),ce=await oe.textImageReady;if(i&&!i())return oe.disconnect(),z.forEach(pe=>pe.disconnect()),o.forEach(pe=>pe.disconnect()),{labels:[]};let me=!0;if(ce){const pe=ce.rect&&ce.rect[2],j=ce.rect&&ce.rect[3];if(pe&&j){const F=pe/M,J=j/M;ie=F+ie,b==="italic"&&(y==="bold"?ie=ie-q*f*1.2:ie=ie-q*f),((Y[0]+L[0]+F)*r.worldScaling[0]+a<=0||(Y[0]+L[0])*r.worldScaling[0]+a>=l||(Y[1]+L[1]+J)*r.worldScaling[1]+c<=0||(Y[1]+L[1])*r.worldScaling[1]+c>=u)&&(oe.disconnect(),me=!1),me&&z.push(oe)}}V+=P}U[0]=ie,b==="italic"&&(U[0]=U[0]+q*f);let Z=!0;if(((L[0]+U[0])*r.worldScaling[0]+a<=0||L[0]*r.worldScaling[0]+a>=l||(L[1]+U[1])*r.worldScaling[0]+c<=0||L[1]*r.worldScaling[1]+c>=u)&&(Z=!1),Z){if(m){const oe=Math.floor(f/10),ce={normalize:!1,pos:[0,f*1.1+oe/2],lineWidth:oe,points:[0,0,Math.ceil(U[0]),0],strokeColor:T,className:"underline"},me=new br(ce);z.push(me)}if(v){const oe={normalize:!1,pos:[0,f*1.2/2],lineWidth:Math.floor(f/10),points:[0,0,Math.ceil(U[0]),0],strokeColor:T,className:"lineThrough"},ce=new br(oe);z.push(ce)}const $={pos:L,anchor:[0,0],size:U,bgcolor:p},ee=new dt($);ee.append(...z),o.push(ee)}}}return{labels:o}}static updateNodeOpt(e){const{node:r,opt:n,vNodes:i,targetNode:o}=e,{fontBgColor:a,fontColor:c,translate:l,originPoint:u,scenePoint:h,scale:d,bold:f,italic:g,lineThrough:y,underline:S,fontSize:b,textInfos:C,zIndex:N}=n,T=!!(u&&h&&d);if(n.matrixDelta||n.previewMatrix){const M=T?C==null?void 0:C.get(r.name):void 0,R=o&&M?hme(o,M):o;return xe.updateNodeOpt({...e,targetNode:R})}const p=o&&lt(o)||i.get(r.name);if(!p||!r.parent)return;const v=p.opt;if(gt(N)&&(r.setAttribute("zIndex",N),p.opt.zIndex=N),c&&v.fontColor&&(v.fontColor=c,r.children.forEach(M=>{M.tagName==="GROUP"&&M.children.forEach(R=>{R.tagName==="LABEL"?(R.setAttribute("fillColor",c),R.setAttribute("strokeColor",c)):R.tagName==="POLYLINE"&&R.setAttribute("strokeColor",c)})})),a&&v.fontBgColor&&(v.fontBgColor=a,r.children.forEach(M=>{M.tagName==="GROUP"&&M.setAttribute("bgcolor",a)})),f&&(v.bold=f),g&&(v.italic=g),ni(y)&&(v.lineThrough=y),ni(S)&&(v.underline=S),b&&(v.fontSize=b),l&&v.boxPoint&&(v.boxPoint=[Math.round(v.boxPoint[0]+l[0]),Math.round(v.boxPoint[1]+l[1])],p.centerPos=[p.centerPos[0]+l[0],p.centerPos[1]+l[1]],p.opt.eraserlines))for(const M of p.opt.eraserlines){const{op:R}=M;for(let E=0;E<R.length;E++){const P=R[E].map((k,O)=>O%2?k+l[1]:k+l[0]);M.op[E]=P}}return p&&i.setInfo(r.name,p),p==null?void 0:p.rect}static getRectFromLayer(e,r){const n=e.getElementsByName(r)[0];if(n){const i=n.getBoundingClientRect();let o={x:Math.floor(i.x),y:Math.floor(i.y),w:Math.floor(i.width+2),h:Math.floor(i.height+2)};return n.children.forEach(a=>{if(a.tagName==="GROUP"){const c=n.getBoundingClientRect();o=Ue(o,{x:Math.floor(c.x),y:Math.floor(c.y),w:Math.floor(c.width+2),h:Math.floor(c.height+2)})}}),o}}};x(ei,"textImageSnippetSize",L0),x(ei,"SafeBorderPadding",30);let Ks=ei;const Zye=.01;function N0(s,t,e={}){let r=s.length-1;const n=e.protectedIndex??-1,i=e.timestamp??Date.now();for(let o=0;o<t.length;o+=2){const a=new Pe(t[o],t[o+1]),c=s[s.length-1];if(!c){a.setT(i),s.push(a);continue}if(a.x===c.x&&a.y===c.y){c.setT(i);continue}const l=s.length-1;if(s.length>1&&l>n){const h=s[l-1],d=fe.Sub(c,h).uni(),f=fe.Sub(a,c).uni();Number.isFinite(d.x)&&Number.isFinite(d.y)&&Number.isFinite(f.x)&&Number.isFinite(f.y)&&fe.Equals(d,f,Zye)&&(s.pop(),r--)}const u=s[s.length-1];a.setv(fe.Sub(a,u).uni()),a.setT(i),s.push(a)}return Math.max(r,0)}const $i=class $i extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.none);x(this,"toolsType",Q.PencilEraser);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"worldPosition");x(this,"worldScaling");x(this,"eraserRect");x(this,"eraserPolyline");this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}combineConsume(e){const{workerEngine:r}=e;if(this.tmpPoints.length===0)return{type:le.None};const{thickness:n}=this.workOptions,{width:i,height:o}=$i.eraserSizes[n],a=Math.round(Math.max(i,o)/this.worldScaling[0]),{rect:c,willNewNodes:l,willDeleteNodes:u}=this.getChangeNodes(a,r);return{...this.baseConsumeResult,type:le.DrawWork,rect:c,willNewNodes:l,willDeleteNodes:u}}consumeService(){}updateTempPoints(e,r){return N0(this.tmpPoints,e)}getChangeNodes(e,r){const n=new Map,i=new Set;let o;if(!this.vNodes)return{willDeleteNodes:i,willNewNodes:n,rect:o};const a=this.worldPosition;let c=it(this.tmpPoints,e);c=_s(c,a),c=tM(c,this.worldScaling,a);const{nodeRange:l}=this.vNodes.getRectIntersectRange(c);if(!l.size)return{willDeleteNodes:i,willNewNodes:n,rect:o};const u=this.computEraserPointLines(this.tmpPoints,90);for(const[h,d]of l.entries()){if(d.toolsType!==Q.Pencil)continue;let f=_s(d.rect,[-a[0],-a[1]]);f={x:f.x/this.worldScaling[0],y:f.y/this.worldScaling[1],w:f.w/this.worldScaling[0],h:f.h/this.worldScaling[1]};const g=[f.x,f.y,f.x+f.w,f.y+f.h],y=[],S=[];for(const b of u)oh.polyline(b,g,y);if(y.length&&d.opt)for(const b of y){const C=[];for(let N=0;N<b.length;N++)N!==0&&In(b[N],b[N-1])||C.push(...b[N]);S.push(C)}if(S.length&&r){const b=r.createWorkShapeNode({workId:h,toolsType:Q.Pencil,toolsOpt:d.opt});b.setWorkId(h);const C=b==null?void 0:b.computPencilPoints({op:d.op,eraserPolylines:S,eraserThickness:e});if(o=Ue(o,d.rect),i.add(h),r.removeNode(h),C.length)for(let N=0;N<C.length;N++){const T=`${h}_${Date.now()}_${N}`,p=T,v=r.setFullWork({workId:p,opt:d.opt,toolsType:Q.Pencil}).consumeService({op:C[N],isFullWork:!0,replaceId:p});r.clearWorkShapeNodeCache(p),o=Ue(o,v),n.set(T,{...d,toolsType:Q.Pencil,rect:v??d.rect,name:T,op:C[N]})}}}return{willNewNodes:n,willDeleteNodes:i,rect:o}}consume(e){const{data:r}=e,{op:n}=r;if(!n||n.length===0)return{type:le.None,...this.baseConsumeResult};const{thickness:i}=this.workOptions,{width:o,height:a}=$i.eraserSizes[i],c=Math.max(o,a)/this.worldScaling[0];return this.updateTempPoints(n,c),{type:le.None,...this.baseConsumeResult}}computEraserPointLines(e,r=60){const n=[];let i=0;const o=360-r;for(let a=1;a<e.length;a++){const c=e[a-1],l=e[a];if(a===1&&i===0&&(n[i]=[c.XY]),n[i].push(l.XY),a<e.length-1){const u=l.getAngleByPoints(c,e[a+1]);(u<r||u>o)&&(i++,n[i]=[l.XY])}}return e.length===1&&n.length===0&&n.push([e[0].XY,e[0].XY]),n}consumeAll(e){const{workerEngine:r}=e;if(this.replace(this.fullLayer,this.workId),!this.tmpPoints.length)return{type:le.None,...this.baseConsumeResult};const{thickness:n}=this.workOptions,{width:i,height:o}=$i.eraserSizes[n],a=Math.max(i,o)/this.worldScaling[0],{willDeleteNodes:c,willNewNodes:l,rect:u}=this.getChangeNodes(a,r);if(c.size===0&&l.size===0)return{type:le.FullWork,...this.baseConsumeResult,rect:u};const h=[];this.tmpPoints.map(f=>{h.push(f.x,f.y,a/2)});const d=xt(h);return{...this.baseConsumeResult,type:le.FullWork,dataType:Re.Local,rect:u,ops:d,willNewNodes:l,willDeleteNodes:c}}clearTmpPoints(){this.tmpPoints.length=0}};x($i,"eraserSizes",yd);let Wa=$i;const Kye=new Set([Q.Image,Q.BackgroundSVG]),Bp={"shape.vertices":new Set([Q.Polygon,Q.Star]),"shape.innerVerticeStep":new Set([Q.Star]),"shape.innerRatio":new Set([Q.Star]),"shape.placement":new Set([Q.SpeechBalloon])},Xye=new Set(["fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough"]),Jye=new Set(["strokeColor","thickness","strokeType"]),_ye=new Set(["fillColor"]),eve=new Set(["zIndexLayer"]),tve=new Set([Q.Pencil,Q.LaserPen,Q.Arrow,Q.Straight]),jp=new Set([Q.Rectangle,Q.Ellipse,Q.Triangle,Q.Rhombus,Q.Polygon,Q.Star,Q.SpeechBalloon]),rve=new Set([Q.Pencil,Q.Arrow,Q.Straight,Q.Rectangle,Q.Ellipse,Q.Star,Q.Triangle,Q.Rhombus,Q.Polygon,Q.SpeechBalloon]);function O0(s){return s!==void 0&&rve.has(s)}const nve=new Set([Q.Pencil]),ive=new Set([Q.LaserPen,Q.Arrow,Q.Straight,Q.Rectangle,Q.Ellipse,Q.Star,Q.Polygon,Q.SpeechBalloon]);function z0(s){return s===Be.Normal||s===Be.Stroke||s===Be.Dotted||s===Be.LongDotted}function Fi(s,t){return s?eve.has(t)?!0:t==="isLocked"?Kye.has(s):Xye.has(t)?s===Q.Text:t in Bp?Bp[t].has(s):_ye.has(t)?jp.has(s):Jye.has(t)?tve.has(s)||jp.has(s):!1:!1}function sve(s){return["strokeColor","fillColor","thickness","strokeType","fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough","isLocked","zIndexLayer","shape.vertices","shape.innerVerticeStep","shape.innerRatio","shape.placement"].filter(e=>Fi(s,e))}function Is(s){var e,r,n,i;const t=[];return s.strokeColor!==void 0&&t.push("strokeColor"),s.fillColor!==void 0&&t.push("fillColor"),s.thickness!==void 0&&t.push("thickness"),s.strokeType!==void 0&&t.push("strokeType"),s.fontColor!==void 0&&t.push("fontColor"),s.fontBgColor!==void 0&&t.push("fontBgColor"),s.fontSize!==void 0&&t.push("fontSize"),s.bold!==void 0&&t.push("bold"),s.italic!==void 0&&t.push("italic"),s.underline!==void 0&&t.push("underline"),s.lineThrough!==void 0&&t.push("lineThrough"),s.isLocked!==void 0&&t.push("isLocked"),s.zIndexLayer!==void 0&&t.push("zIndexLayer"),((e=s.shape)==null?void 0:e.vertices)!==void 0&&t.push("shape.vertices"),((r=s.shape)==null?void 0:r.innerVerticeStep)!==void 0&&t.push("shape.innerVerticeStep"),((n=s.shape)==null?void 0:n.innerRatio)!==void 0&&t.push("shape.innerRatio"),((i=s.shape)==null?void 0:i.placement)!==void 0&&t.push("shape.placement"),t}function Fp(s,t){return!s||t===void 0||!Fi(s,"strokeType")?!1:nve.has(s)?z0(t):ive.has(s)?t===Be.Normal||t===Be.Dotted||t===Be.LongDotted:!1}function ove(s,t,e){const r=s-(e?1:2);if(!(r<1||r<=t))return{start:Math.max(t,0),end:r,committedIndex:r}}function Gl(s){return s.toolsType===Q.Image||s.toolsType===Q.Text?"delete-on-done":s.isSelected?"blocked":O0(s.toolsType)?"vector":"blocked"}function ave(s,t,e){return s.map(({x:r,y:n})=>[r*e[0]+t[0],n*e[1]+t[1]])}function Hl(s,t,e){if(!s.length)return!1;if(s.length===1)return $u(s[0],e)<=t*t;for(let r=1;r<s.length;r++)if(cve(s[r-1],s[r],e)<=t*t)return!0;return!1}function $u(s,t){const e=Math.max(t.x-s[0],0,s[0]-(t.x+t.w)),r=Math.max(t.y-s[1],0,s[1]-(t.y+t.h));return e*e+r*r}function cve(s,t,e){if(lve(s,t,e))return 0;const r=e.x,n=e.y,i=e.x+e.w,o=e.y+e.h,a=[[[r,n],[i,n]],[[i,n],[i,o]],[[i,o],[r,o]],[[r,o],[r,n]]];let c=Math.min($u(s,e),$u(t,e));for(const[l,u]of a)c=Math.min(c,uve(s,t,l,u));return c}function lve(s,t,e){let r=0,n=1;const i=t[0]-s[0],o=t[1]-s[1],a=[[-i,s[0]-e.x],[i,e.x+e.w-s[0]],[-o,s[1]-e.y],[o,e.y+e.h-s[1]]];for(const[c,l]of a){if(c===0){if(l<0)return!1;continue}const u=l/c;if(c<0?r=Math.max(r,u):n=Math.min(n,u),r>n)return!1}return!0}function uve(s,t,e,r){const n=t[0]-s[0],i=t[1]-s[1],o=r[0]-e[0],a=r[1]-e[1],c=s[0]-e[0],l=s[1]-e[1],u=n*n+i*i,h=n*o+i*a,d=o*o+a*a,f=n*c+i*l,g=o*c+a*l,y=u*d-h*h;let S=y,b=y,C=y,N=y;y<Number.EPSILON?(S=0,C=1,b=g,N=d):(S=h*g-d*f,b=u*g-h*f,S<0?(S=0,b=g,N=d):S>C&&(S=C,b=g+h,N=d)),b<0?(b=0,-f<0?S=0:-f>u?S=C:(S=-f,C=u)):b>N&&(b=N,-f+h<0?S=0:-f+h>u?S=C:(S=-f+h,C=u));const T=Math.abs(S)<Number.EPSILON?0:S/C,p=Math.abs(b)<Number.EPSILON?0:b/N,m=c+T*n-p*o,v=l+T*i-p*a;return m*m+v*v}const qa=class qa extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.none);x(this,"toolsType",Q.BitMapEraser);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"worldPosition");x(this,"worldScaling");x(this,"eraserRect");x(this,"eraserPolyline");x(this,"oldRect");x(this,"committedPointIndex",-1);x(this,"candidateWorkIds",new Set);x(this,"doingPointBatches",[]);x(this,"doingLines",new Map);x(this,"changedNodes",new Map);x(this,"deletedNodes",new Set);x(this,"changedRect");x(this,"lastSceneRevision",-1);x(this,"pendingDeleteIds",new Set);x(this,"hiddenRenderNodes",new Map);x(this,"fullLayerPreviewGroup");x(this,"disposeVNodeObserver");x(this,"beforeImages",new Map);this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling,this.startVNodeObservation()}combineConsume(e){var l;this.syncWorldTransform(),this.startVNodeObservation();const r=this.getDeltaPoints(!0),n=((l=this.vNodes)==null?void 0:l.getRevision())??0,i=n!==this.lastSceneRevision;let o=this.restoreNoLongerClearablePendingDeletes();const a=i?this.tmpPoints:r==null?void 0:r.points;if(a!=null&&a.length){const u=this.getEraserThickness();o=Ue(o,this.hideDeleteCandidatesForPoints(a,u)),this.collectVectorCandidateWorkIds(a,u)}if(this.lastSceneRevision=n,!r)return{...this.baseConsumeResult,type:o?le.DrawWork:le.None,rect:o};const c=this.getEraserThickness();return this.recordDoingPointBatch(r.points),o=Ue(o,this.appendFullLayerPreview(r.points,c)),this.committedPointIndex=r.committedIndex,this.changedRect=Ue(this.changedRect,o),{...this.baseConsumeResult,type:o?le.DrawWork:le.None,rect:o}}consumeService(){}consume(e){const{op:r}=e.data;return r!=null&&r.length?(this.syncWorldTransform(),this.updateTempPoints(r),{type:le.None,...this.baseConsumeResult}):{type:le.None,...this.baseConsumeResult}}async consumeAll(e){const{workerEngine:r}=e;if(this.syncWorldTransform(),this.clearFullLayerPreview(!1),!this.tmpPoints.length)return this.clearFullLayerPreview(!0),{type:le.None,...this.baseConsumeResult};const n=this.getEraserThickness(),i=new Map(this.beforeImages);try{this.recordFinalPointBatch(),this.getCandidateWorkIds().clear(),this.collectVectorCandidateWorkIds(this.tmpPoints,n),this.collectDeleteCandidatesForDone(this.tmpPoints,n);for(const[u,h]of this.snapshotDoneCandidates())i.set(u,h);r&&typeof r.publishBitmapEraserBeforeImages=="function"&&r.publishBitmapEraserBeforeImages(this.workId,i),this.collectDoneVectorChanges(n),this.commitDoingFaces(),this.renderChangedNodes(r,this.workOptions.removeOnDone!==!1),this.commitPendingDeletions(r);const o=new Set(this.deletedNodes),a=new Map(this.changedNodes),c=this.changedRect;if(o.size===0&&a.size===0)return{type:le.FullWork,...this.baseConsumeResult,rect:c,eraseTxnBeforeImages:new Map(i),eraseTxnCommitStatus:"applied"};const l=[];for(const u of this.tmpPoints)l.push(u.x,u.y,n/2);return{...this.baseConsumeResult,type:le.FullWork,dataType:Re.Local,rect:c,ops:xt(l),willUpdateNodes:a,willDeleteNodes:o,eraseTxnBeforeImages:new Map(i),eraseTxnCommitStatus:"applied"}}catch(o){let a=!0;try{a=!await this.restoreFailedDoneCandidates(i,r)}catch(l){console.warn("[BitMapEraser] Done recovery threw after commit error:",l)}const c=this.changedRect;try{this.clearFullLayerPreview(!0)}catch(l){console.warn("[BitMapEraser] Done preview cleanup failed:",l)}return this.changedNodes.clear(),this.getCandidateWorkIds().clear(),this.getDoingPointBatches().length=0,this.getDoingLines().clear(),this.deletedNodes.clear(),this.pendingDeleteIds.clear(),console.warn("[BitMapEraser] Done commit aborted:",o),{type:le.FullWork,...this.baseConsumeResult,rect:c,willUpdateNodes:new Map,willDeleteNodes:new Set,eraseTxnBeforeImages:new Map(i),eraseTxnRecoveryRequired:a,eraseTxnCommitStatus:"failed"}}}clearTmpPoints(){this.clearFullLayerPreview(!0),this.stopVNodeObservation(),this.tmpPoints.length=0,this.committedPointIndex=-1,this.changedNodes.clear(),this.getCandidateWorkIds().clear(),this.getDoingPointBatches().length=0,this.getDoingLines().clear(),this.deletedNodes.clear(),this.pendingDeleteIds.clear(),this.changedRect=void 0,this.lastSceneRevision=-1}shouldRevalidateVNodeRevision(){return this.tmpPoints.length>0}syncWorldTransform(){this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}getEraserThickness(){const{thickness:e}=this.workOptions,{width:r,height:n}=qa.eraserSizes[e];return Math.round(Math.max(r,n)/this.worldScaling[0])}updateTempPoints(e){N0(this.tmpPoints,e,{protectedIndex:this.committedPointIndex})}getDeltaPoints(e){const r=ove(this.tmpPoints.length,this.committedPointIndex,e);if(r)return{points:this.tmpPoints.slice(r.start,r.end+1),committedIndex:r.committedIndex}}recordFinalPointBatch(){const e=this.getDeltaPoints(!0);if(e){this.recordDoingPointBatch(e.points),this.committedPointIndex=e.committedIndex;return}!this.getDoingPointBatches().length&&this.tmpPoints.length&&(this.recordDoingPointBatch(this.tmpPoints),this.committedPointIndex=this.tmpPoints.length-1)}recordDoingPointBatch(e){e.length&&this.getDoingPointBatches().push(e.map(r=>new Pe(r.x,r.y,r.z)))}getDoingPointBatches(){return this.doingPointBatches||(this.doingPointBatches=[]),this.doingPointBatches}getDoingLines(){return this.doingLines||(this.doingLines=new Map),this.doingLines}getCandidateWorkIds(){return this.candidateWorkIds||(this.candidateWorkIds=new Set),this.candidateWorkIds}appendFullLayerPreview(e,r){if(!e.length)return;const n=this.computEraserPointLines(e).map(c=>{const l=c.flatMap(([u,h])=>[u,h]);return Or(this.computEraserPoints(l,r),!0)}).filter(Boolean);if(!n.length)return;const i=new Yt({pos:[0,0],d:n.join(" "),fillColor:"rgba(0,0,0,1)",fillRule:"evenodd"});let o=!1;i.addEventListener("beforerender",({detail:c})=>{const l=c.context;typeof l.blendFuncSeparate=="function"?l.blendFuncSeparate(l.ZERO,l.ZERO,l.ZERO,l.ZERO):(l.save(),o=!0,l.globalCompositeOperation="destination-out")}),i.addEventListener("afterrender",({detail:c})=>{const l=c.context;typeof l.blendFuncSeparate=="function"?l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA):o&&(o=!1,l.restore())}),this.getFullLayerPreviewGroup().append(i);let a=it(e,r);return a=_s(a,this.worldPosition),tM(a,this.worldScaling,this.worldPosition)}getFullLayerPreviewGroup(){if(this.fullLayerPreviewGroup)return this.fullLayerPreviewGroup;const e=new dt({name:this.workId,pos:[0,0],zIndex:9999});return this.fullLayer.append(e),this.fullLayerPreviewGroup=e,e}getTrackRect(e,r){let n=e[0][0],i=e[0][1],o=n,a=i;for(let c=1;c<e.length;c++){const[l,u]=e[c];n=Math.min(n,l),i=Math.min(i,u),o=Math.max(o,l),a=Math.max(a,u)}return{x:n-r,y:i-r,w:o-n+r*2,h:a-i+r*2}}getScreenTrack(e,r){const n=ave(e,this.worldPosition,this.worldScaling),i=r*Math.max(Math.abs(this.worldScaling[0]),Math.abs(this.worldScaling[1]))/2;return{screenPoints:n,radius:i,rect:this.getTrackRect(n,i+1)}}collectVectorCandidateWorkIds(e,r){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,r),{nodeRange:i}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[o,a]of i)!this.vNodes.isCanClearWorkId(o)||Gl(a)!=="vector"||!Hl(n.screenPoints,n.radius,a.rect)||this.getCandidateWorkIds().add(o)}hideDeleteCandidatesForPoints(e,r){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,r);let i;const{nodeRange:o}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[a,c]of o)this.pendingDeleteIds.has(a)||!this.vNodes.isCanClearWorkId(a)||Gl(c)!=="delete-on-done"||!Hl(n.screenPoints,n.radius,c.rect)||(this.pendingDeleteIds.add(a),this.hideRenderNodesForId(a),i=Ue(i,c.rect),this.changedRect=Ue(this.changedRect,c.rect));return i}collectDeleteCandidatesForDone(e,r){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,r),{nodeRange:i}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[o,a]of i)this.vNodes.isCanClearWorkId(o)&&Gl(a)==="delete-on-done"&&Hl(n.screenPoints,n.radius,a.rect)&&(this.pendingDeleteIds.add(o),this.changedRect=Ue(this.changedRect,a.rect))}hideRenderNodesForId(e){this.captureBeforeImage(e);const r=this.hiddenRenderNodes.get(e)||[],n=new Set(r.map(({node:i})=>i));for(const i of this.fullLayer.getElementsByName(e))n.has(i)||r.push({node:i,display:i.getAttribute("display")}),i.setAttribute("display","none");this.hiddenRenderNodes.set(e,r)}restoreNoLongerClearablePendingDeletes(){var r,n,i;let e;for(const o of[...this.pendingDeleteIds])if(!((r=this.vNodes)!=null&&r.isCanClearWorkId(o))){for(const{node:a,display:c}of this.hiddenRenderNodes.get(o)||[])a.setAttribute("display",c);e=Ue(e,(i=(n=this.vNodes)==null?void 0:n.get(o))==null?void 0:i.rect),this.hiddenRenderNodes.delete(o),this.pendingDeleteIds.delete(o)}return e}snapshotDoneCandidates(){var r;const e=new Map;for(const n of[...this.getCandidateWorkIds(),...this.pendingDeleteIds]){if(e.has(n)||!((r=this.vNodes)!=null&&r.isCanClearWorkId(n)))continue;const i=this.vNodes.get(n);if(i){const o=lt(i);e.set(n,o),this.beforeImages.has(n)||this.beforeImages.set(n,o)}}return e}captureBeforeImage(e){var n;if(this.beforeImages.has(e)||!((n=this.vNodes)!=null&&n.isCanClearWorkId(e)))return;const r=this.vNodes.get(e);r&&this.beforeImages.set(e,lt(r))}collectDoneVectorChanges(e){if(!this.vNodes)return;const r=this.worldPosition;for(const n of this.getCandidateWorkIds()){if(!this.vNodes.isCanClearWorkId(n))continue;const i=this.vNodes.get(n);if(!(i!=null&&i.opt)||!O0(i.toolsType))continue;let o=_s(i.rect,[-r[0],-r[1]]);o={x:o.x/this.worldScaling[0],y:o.y/this.worldScaling[1],w:o.w/this.worldScaling[0],h:o.h/this.worldScaling[1]};const a=[o.x,o.y,o.x+o.w,o.y+o.h],c=[];for(const l of this.getDoingPointBatches())for(const u of this.computEraserPointLines(l,120)){const h=[];oh.polyline(u,a,h);for(const d of h){const f=this.normalizeClippedLine(d);f.length&&c.push(f)}}c.length&&(this.getDoingLines().set(n,[{workId:this.workId,op:c,thickness:e}]),this.changedNodes.set(n,i),this.changedRect=Ue(this.changedRect,i.rect))}}normalizeClippedLine(e){const r=[];for(let n=0;n<e.length&&!(isNaN(e[n][0])||isNaN(e[n][1]));n++){const i=e[n].map(o=>Math.round(o*100)/100);if(n>0){const o=e[n-1].map(a=>Math.round(a*100)/100);if(In(i,o))continue}r.push(...i)}return r}commitDoingFaces(){var e,r;for(const[n,i]of this.getDoingLines()){if(!((e=this.vNodes)!=null&&e.isCanClearWorkId(n))){this.changedNodes.delete(n);continue}const o=this.vNodes.get(n);if(!(o!=null&&o.opt)||!i.length){this.changedNodes.delete(n);continue}const a=gp(i,o.opt.matrix,o.centerPos);if(!a){this.changedNodes.delete(n);continue}let c=o.opt;if(!ci(o.opt)&&((r=o.opt.eraserlines)!=null&&r.length)){const h=gp(o.opt.eraserlines,o.opt.matrix,o.centerPos);if(!h){this.changedNodes.delete(n);continue}c={...o.opt,eraserFaces:h,eraserlines:void 0}}const l=tme(c,[],a),u=Ba({...o.opt,...l});delete u.eraserlines,o.opt=u,this.changedNodes.set(n,o),this.vNodes.setInfo(n,{opt:u})}}renderChangedNodes(e,r){var n;if(e)for(const[i,o]of[...this.changedNodes]){const a=e.createWorkShapeNode({workId:i,toolsType:o.toolsType,toolsOpt:o.opt});a==null||a.setWorkId(i),a==null||a.setEraserDeleteConfirmation(r);const c=a==null?void 0:a.consumeService({op:o.op,isFullWork:!0,replaceId:i}),l="fullLayer"in e?e.fullLayer:e.thread.fullLayer,u=xe.getRectFromLayer(l,i);u&&((n=this.vNodes)==null||n.setInfo(i,{rect:u,centerPos:xe.getCenterPos(u,l)})),this.changedRect=Ue(this.changedRect,u||c),r&&(a!=null&&a.isDelete)&&(e.removeNode(i),this.deletedNodes.add(i),this.changedNodes.delete(i))}}commitPendingDeletions(e){var r;for(const n of this.pendingDeleteIds){if(!((r=this.vNodes)!=null&&r.isCanClearWorkId(n))){for(const{node:o,display:a}of this.hiddenRenderNodes.get(n)||[])o.setAttribute("display",a);continue}const i=this.vNodes.get(n);i&&(this.changedRect=Ue(this.changedRect,i.rect)),e==null||e.removeNode(n),this.deletedNodes.add(n),this.changedNodes.delete(n)}this.pendingDeleteIds.clear(),this.hiddenRenderNodes.clear(),this.stopVNodeObservation()}clearFullLayerPreview(e){var r;if((r=this.fullLayerPreviewGroup)==null||r.remove(),this.fullLayerPreviewGroup=void 0,!!e){for(const n of this.hiddenRenderNodes.values())for(const{node:i,display:o}of n)i.setAttribute("display",o);this.hiddenRenderNodes.clear(),this.pendingDeleteIds.clear()}}startVNodeObservation(){!this.vNodes||this.disposeVNodeObserver||typeof this.vNodes.observeRevision!="function"||(this.disposeVNodeObserver=this.vNodes.observeRevision((e,r,n)=>{n&&(e==="add"||e==="update")&&this.pendingDeleteIds.has(n)&&this.hideRenderNodesForId(n)}))}stopVNodeObservation(){var e;(e=this.disposeVNodeObserver)==null||e.call(this),this.disposeVNodeObserver=void 0}async restoreFailedDoneCandidates(e,r){var i;let n=!0;for(const[o,a]of e)try{const c=lt(a);if((i=this.vNodes)==null||i.setInfo(o,c),!r)continue;const l=r.createWorkShapeNode({workId:o,toolsType:c.toolsType,toolsOpt:c.opt});if(!l){n=!1;continue}l.setWorkId(o),c.toolsType===Q.Image?await l.consumeServiceAsync({isFullWork:!0,replaceId:o,worker:r})||(n=!1):c.toolsType===Q.Text?await l.consumeServiceAsync({isFullWork:!0,replaceId:o,boxRect:r.thread.getSceneRect()})||(n=!1):l.consumeService({op:c.op,isFullWork:!0,replaceId:o})}catch(c){n=!1,console.warn(`[BitMapEraser] Failed to restore ${o} after Done error:`,c)}return n}computEraserPointLines(e,r=60){const n=[];let i=0;const o=360-r;for(let a=1;a<e.length;a++){const c=e[a-1],l=e[a];if(a===1&&i===0&&(n[i]=[c.XY]),n[i].push(l.XY),a<e.length-1){const u=l.getAngleByPoints(c,e[a+1]);(u<r||u>o)&&(i++,n[i]=[l.XY])}}return e.length===1&&n.push([e[0].XY,e[0].XY]),n}};x(qa,"eraserSizes",yd);let Va=qa;class Xs extends xe{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",Q.BackgroundSVG);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");this.workOptions=e.toolsOpt,this.scaleType=Xs.getScaleType(this.workOptions)}static normalizeStorageData(e){return xe.normalizeStorageData(e)}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}draw(e){const{layer:r,workId:n,replaceId:i}=e,{centerX:o,centerY:a,width:c,height:l,rotate:u,zIndex:h}=this.workOptions,d=(h||0)-100,f=new dt({anchor:[.5,.5],pos:[o,a],name:n,size:[c,l],zIndex:d,rotate:u}),g=new Qs({normalize:!0,pos:[0,0],width:c,height:l});f.appendChild(g),this.replace(r,i||n,f);const y=f.getBoundingClientRect();if(y)return{x:Math.floor(y.x-xe.SafeBorderPadding),y:Math.floor(y.y-xe.SafeBorderPadding),w:Math.floor(y.width+xe.SafeBorderPadding*2),h:Math.floor(y.height+xe.SafeBorderPadding*2)}}consumeService(e){var o;const{replaceId:r}=e,n=this.workId,i=this.draw({workId:n,layer:this.fullLayer,replaceId:r});return(o=this.vNodes)==null||o.setInfo(n,{rect:i,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&xe.getCenterPos(i,this.fullLayer)}),i}clearTmpPoints(){this.tmpPoints.length=0}static getScaleType(e){const{uniformScale:r,rotate:n}=e;return r!==!1||n&&Math.abs(n)%90>0?Ye.proportional:Ye.all}static updateNodeOpt(e){const{node:r,opt:n,vNodes:i,targetNode:o}=e,{translate:a,originPoint:c,scenePoint:l,scale:u,angle:h,isLocked:d,zIndexForBackgroundSVG:f}=n,g=o&&lt(o)||i.get(r.name);if(!g)return;const y=r.parent;if(y){if(gt(f)){const S=(f||0)-100;r.setAttribute("zIndex",S),g.opt.zIndex=f}if(ni(d)&&(g.opt.locked=d),c&&l&&u&&a){const{centerX:S,centerY:b,width:C,height:N,uniformScale:T}=g.opt,p=T!==!1?[u[0],u[0]]:u,m=[S,b],v=[S,b];xd(v,l,p,a);const M=[v[0]-m[0],v[1]-m[1]];g.centerPos=[g.centerPos[0]+M[0],g.centerPos[1]+M[1]],g.opt.width=Math.round(C*p[0]),g.opt.height=Math.round(N*p[1]),g.opt.centerX=v[0],g.opt.centerY=v[1]}else if(a)g.opt.centerX=g.opt.centerX+a[0],g.opt.centerY=g.opt.centerY+a[1],g.centerPos=[g.centerPos[0]+a[0],g.centerPos[1]+a[1]];else if(gt(h))if(g.opt.rotate=h,g.scaleType=Xs.getScaleType(g.opt),o){const S=Ed(g.rect,h);g.rect=S}else{const S=xe.getRectFromLayer(y,r.name);g.rect=S||g.rect}return g&&i.setInfo(r.name,g),g==null?void 0:g.rect}}}function Fc(s){switch(s){case Q.Arrow:return T0;case Q.Pencil:return v0;case Q.Straight:return R0;case Q.Ellipse:return C0;case Q.Polygon:case Q.Triangle:return E0;case Q.Star:case Q.Rhombus:return b0;case Q.Rectangle:return I0;case Q.SpeechBalloon:return x0;case Q.Text:return Ks;case Q.LaserPen:return M0;case Q.Eraser:return ja;case Q.PencilEraser:return Wa;case Q.BitMapEraser:return Va;case Q.Selector:return Ua;case Q.Image:return Js;case Q.BackgroundSVG:return Xs}}async function Up(s){const t=s.toolsType;if(t===void 0)return{status:"unrecoverable",reason:"missing-tools-type"};const e=Fc(t);return e?e.normalizeStorageData(s):{status:"unrecoverable",reason:`unsupported-tool:${t}`}}function hve(s){const t=s.toolsType;if(t===void 0)return{status:"unrecoverable",reason:"missing-tools-type"};const e=Fc(t);return e?t===Q.Text?Ks.normalizeStorageDataSync(s):[Q.Pencil,Q.Arrow,Q.Straight,Q.Ellipse,Q.Rectangle,Q.Polygon,Q.Triangle,Q.Star,Q.Rhombus,Q.SpeechBalloon].includes(t)?xe.normalizeDrawableStorageDataSync(s):e.normalizeStorageDataSync(s):{status:"unrecoverable",reason:`unsupported-tool:${t}`}}function Td(s,t){const{toolsType:e,...r}=s;switch(e){case Q.Arrow:return new T0(r);case Q.Pencil:return new v0(r);case Q.Straight:return new R0(r);case Q.Ellipse:return new C0(r);case Q.Polygon:case Q.Triangle:return new E0(r);case Q.Star:case Q.Rhombus:return new b0(r);case Q.Rectangle:return new I0(r);case Q.SpeechBalloon:return new x0(r);case Q.Text:return new Ks(r);case Q.LaserPen:return new M0(r);case Q.Eraser:return new ja(r,t);case Q.BitMapEraser:return new Va(r);case Q.PencilEraser:return new Wa(r);case Q.Selector:return r.vNodes?new Ua({...r,vNodes:r.vNodes,drawLayer:r.fullLayer}):void 0;case Q.Image:return new Js(r);case Q.BackgroundSVG:return new Xs({...r,toolsOpt:r.toolsOpt});default:return}}function B0(s){const t=[],e=["PATH","SPRITE","POLYLINE","RECT","ELLIPSE","LABEL","SPRITESVG"];for(const r of s){if(r.tagName==="GROUP"&&r.children.length){const n=B0(r.children);t.push(...n)}r.tagName&&e.includes(r.tagName)&&t.push(r)}return t}class Yu{constructor(t){x(this,"_map");x(this,"_observers",new Set);this._map=new Map(t)}notifyObservers(t,e,r){for(const n of this._observers)n(t,e,r)}observe(t){this._observers.add(t)}unobserve(t){this._observers.delete(t)}get(t){return this._map.get(t)}set(t,e,r=!0){const n=this._map.has(t)?"update":"add";return this._map.set(t,e),r&&this.notifyObservers(n,t,e),this}has(t){return this._map.has(t)}delete(t,e=!0){const r=this._map.get(t),n=this._map.delete(t);return e&&r&&this.notifyObservers("delete",t,r),n}clear(t=!0){const e=this._map.keys();if(this._map.clear(),t)for(const r of e)this.notifyObservers("clear",r,void 0)}get size(){return this._map.size}keys(){return this._map.keys()}values(){return this._map.values()}entries(){return this._map.entries()}forEach(t,e){this._map.forEach(t,e)}}class j0{constructor(t,e){x(this,"viewId");x(this,"scene");x(this,"fullLayer");x(this,"curNodeMap");x(this,"targetNodeMap",[]);x(this,"highLevelIds");x(this,"canClearUids");x(this,"localUid");x(this,"spatialIndex",new LM);x(this,"spatialEntries",new Map);x(this,"verifySpatialIndex",!1);x(this,"revision",0);x(this,"revisionObservers",new Set);this.viewId=t,this.scene=e,this.curNodeMap=new Yu}init(t){this.fullLayer=t}get(t){return this.curNodeMap.get(t)}getRevision(){return this.revision}observeRevision(t){return this.revisionObservers.add(t),()=>this.revisionObservers.delete(t)}setLocalUid(t){this.localUid=t}getLocalUid(){return this.localUid}setSpatialIndexVerification(t){this.verifySpatialIndex=t}setCanClearUids(t){this.canClearUids=t,this.revision++,this.notifyRevisionObservers("permission")}getCanClearUids(){return this.canClearUids}getCanEraserNodes(t,e){const r=new Map;for(const[n,i]of t.entries())i.toolsType!==Q.BackgroundSVG&&(i.toolsType===Q.Image&&i.opt.type===an.Image&&(i.opt.locked||e&&e.disableEraseImage)||i.toolsType===Q.Text&&(i.opt.workState===he.Doing||i.opt.workState===he.Start||e&&e.disableEraseText)||this.isCanClearWorkId(n)&&r.set(n,i));return r}getNodesByType(t){const e=new Map;return this.curNodeMap.forEach((r,n)=>{r.toolsType===t&&e.set(n,r)}),e}gethasEraserNodes(){const t=new Map;return this.curNodeMap.forEach((e,r)=>{var n;((n=e.opt.eraserlines)!=null&&n.length||e.opt.eraserFaces)&&t.set(r,e)}),t}hasRenderNodes(){return this.curNodeMap.size>0}has(t){return this.curNodeMap.has(t)}setInfo(t,e){const r=this.curNodeMap.has(t)?"update":"add",n=this.curNodeMap.get(t)||{name:t,rect:e.rect};e.rect&&(n.rect=lt(e.rect)),e.op&&uMe(e.op)&&(n.op=lt(e.op)),e.canRotate&&(n.canRotate=e.canRotate),e.scaleType&&(n.scaleType=e.scaleType),e.opt&&(n.opt=lt(e.opt),n.opt.matrix=$t(n.opt.matrix),n.matrix=lt(n.opt.matrix)),e.matrix&&(n.matrix=$t(e.matrix),n.opt&&(n.opt.matrix=lt(n.matrix))),"previewMatrix"in e&&(n.previewMatrix=e.previewMatrix?$t(e.previewMatrix):void 0),e.toolsType&&(n.toolsType=e.toolsType),e.centerPos&&(n.centerPos=lt(e.centerPos)),ni(e.isSelected)&&(n.isSelected=e.isSelected),n.rect?(this.curNodeMap.set(t,n),this.updateSpatialEntry(t,n.rect),this.revision++,this.notifyRevisionObservers(r,t)):this.delete(t)}selected(t){this.setInfo(t,{isSelected:!0})}unSelected(t){this.setInfo(t,{isSelected:!1})}delete(t){const e=this.curNodeMap.delete(t),r=this.spatialEntries.get(t);r&&(this.spatialIndex.remove(r),this.spatialEntries.delete(t)),e&&(this.revision++,this.notifyRevisionObservers("delete",t))}clear(){const t=this.curNodeMap.size>0;this.curNodeMap.clear(),this.spatialIndex.clear(),this.spatialEntries.clear(),this.targetNodeMap.length=0,t&&(this.revision++,this.notifyRevisionObservers("clear"))}notifyRevisionObservers(t,e){for(const r of this.revisionObservers)r(t,this.revision,e)}getRectIntersectRange(t,e=!0,r=!0){const n=this.spatialIndex.search(this.toSpatialBox(t)).map(c=>c.key);let i=n;if(this.verifySpatialIndex){const c=this.getLinearIntersectKeys(t),l=new Set(n);(c.length!==n.length||c.some(u=>!l.has(u)))&&(console.warn(`[VNodeManager] spatial index mismatch in ${this.viewId}; using linear result`),i=c)}let o;const a=new Map;for(const c of i){const l=this.curNodeMap.get(c);!l||!Ya(t,l.rect)||e&&(l.toolsType===Q.Image&&l.opt.locked||l.toolsType===Q.BackgroundSVG&&l.opt.locked!==!1)||r&&l.toolsType===Q.Text&&(l.opt.workState===he.Doing||l.opt.workState===he.Start)||(o=Ue(o,l.rect),a.set(c,l))}return{rectRange:o,nodeRange:a}}getNodeRectFormShape(t,e,r){if(!e)return;if(e.toolsType===Q.Text&&this.fullLayer){const o=this.fullLayer.getElementsByName(t)[0],a=e.opt;if(o&&a.boxPoint&&a.boxSize){const c=c0(o,[a.boxPoint[0]-Pr,a.boxPoint[1]-Pr]);return Gpe(c,a.boxSize,r??e.previewMatrix??a.matrix,this.fullLayer.worldPosition,this.fullLayer.worldScaling)}}const n=Fc(e.toolsType);return this.fullLayer&&(n==null?void 0:n.getRectFromLayer(this.fullLayer,t))}updateNodeRect(t){const e=this.curNodeMap.get(t);if(e){const r=this.getNodeRectFormShape(t,e);if(!r){this.delete(t);return}e.rect=r,this.curNodeMap.set(t,e),this.updateSpatialEntry(t,r)}}updateHighLevelNodesRect(t){this.highLevelIds=t;for(const e of this.highLevelIds.keys())this.updateNodeRect(e)}updateLowLevelNodesRect(){var t;for(const e of this.curNodeMap.keys())(t=this.highLevelIds)!=null&&t.has(e)||this.updateNodeRect(e)}clearHighLevelIds(){this.highLevelIds=void 0}updateSpatialEntry(t,e){const r=this.spatialEntries.get(t);r&&this.spatialIndex.remove(r);const n={key:t,...this.toSpatialBox(e)};this.spatialEntries.set(t,n),this.spatialIndex.insert(n)}toSpatialBox(t){return{minX:t.x,minY:t.y,maxX:t.x+t.w,maxY:t.y+t.h}}getLinearIntersectKeys(t){const e=[];for(const[r,n]of this.curNodeMap.entries())Ya(t,n.rect)&&e.push(r);return e}setTargetAssignKeys(t){const e=new Yu;for(const r of t){const n=this.curNodeMap.get(r);n&&e.set(r,lt(n))}return this.targetNodeMap.push(lt(e)),this.targetNodeMap.length-1}setTarget(){const t=this.curNodeMap.keys();return this.setTargetAssignKeys(Array.from(t))}getLastTarget(){return this.targetNodeMap[this.targetNodeMap.length-1]}deleteLastTarget(){this.targetNodeMap.length&&(this.targetNodeMap.length=this.targetNodeMap.length-1)}getTarget(t){return this.targetNodeMap[t]}deleteTarget(t){this.targetNodeMap.length=t}clearTarget(){this.targetNodeMap.length=0}isLocalWorkId(t){return t.split(Bt).length===1}isCanClearWorkId(t){if(this.canClearUids===void 0||this.canClearUids===!0)return!0;if(Tge(this.canClearUids)){const e=t.split(Bt);if(e.length===1)return this.canClearUids.has("localSelf")||this.localUid&&this.canClearUids.has(this.localUid);if(e.length===2)return this.canClearUids.has(e[0])}return!1}}const F0=(s,t,e,r)=>{const n=new URL(s);return n.searchParams.set("width",t.toString()),n.searchParams.set("height",e.toString()),r&&n.searchParams.set("color",r),n.toString()},dve=async(s,t)=>{const{src:e,isgl:r,isCache:n,useImageBitmap:i=!0}=s;if(typeof Image=="function"){const o=new Image;return typeof e=="string"&&(o.crossOrigin="anonymous"),new Promise(a=>{o.onload=async function(){if(!i){a(o);return}if(typeof createImageBitmap!="function"){a(void 0);return}try{const c=r?await createImageBitmap(o,{imageOrientation:"flipY"}):await createImageBitmap(o);a(c)}catch{a(void 0)}},o.onerror=function(){a(void 0)},o.src=e})}else return fetch(e,{method:"GET",mode:"cors",cache:"default"}).then(o=>o.blob()).then(o=>(r?createImageBitmap(o,{imageOrientation:"flipY"}):createImageBitmap(o)).then(c=>c))};function U0(s,t,e){if(t&&typeof t=="object"&&typeof t.code=="string"&&typeof t.business=="string"&&typeof t.message=="string")return t;if(!(s!=="failed"&&s!=="timeout"))return{code:s==="timeout"?"RENDERER_BUSINESS_TIMEOUT":"RENDERER_BUSINESS_ERROR",business:"updateCamera",message:`Camera task returned ${s} ACK without cameraTaskError`,stage:"camera-ack",workerType:e}}class W0 extends Error{constructor(e,r){super(`updateCamera timed out after ${r}ms`);x(this,"code","RENDERER_BUSINESS_TIMEOUT");x(this,"business","updateCamera");x(this,"cameraTaskId");x(this,"elapsedMs");x(this,"stage");x(this,"blockingWorks");this.name="CameraUpdateTimeoutError",this.cameraTaskId=e.cameraTaskId,this.elapsedMs=r,this.stage=e.stage,this.blockingWorks=e.blockingWorks?[...e.blockingWorks]:void 0}}class fve extends Error{constructor(e){super("updateCamera aborted because the owning renderer was destroyed");x(this,"code","RENDERER_BUSINESS_ABORTED");x(this,"business","updateCamera");x(this,"cameraTaskId");x(this,"stage");x(this,"blockingWorks");this.name="CameraUpdateAbortedError",this.cameraTaskId=e.cameraTaskId,this.stage=e.stage,this.blockingWorks=e.blockingWorks?[...e.blockingWorks]:void 0}}async function V0(s,t,e=Sm){const r=Date.now();let n,i;const o=new Promise(g=>{n=g}),a={cameraTaskId:s,startedAt:r,deadlineAt:r+e,abortPromise:o,aborted:!1,stage:"update-camera"},c=()=>{a.aborted||(a.aborted=!0,n==null||n(),i==null||i(l||new fve(a)))};a.abort=c;let l,u;const h=Promise.resolve().then(()=>t(a));h.catch(()=>{});const d=new Promise((g,y)=>{u=setTimeout(()=>{l=new W0(a,e),c(),y(l)},e)}),f=new Promise((g,y)=>{i=y});try{await Promise.race([h,d,f])}catch(g){throw c(),l||g}finally{u!==void 0&&clearTimeout(u)}}async function $0(s,t,e){return s.stage=e,await Promise.race([t,s.abortPromise]),!s.aborted}function gve(s){return s instanceof W0||s instanceof Error&&s.code==="RENDERER_BUSINESS_TIMEOUT"}function vr(s){if(s instanceof Error||s&&typeof s=="object"&&"message"in s&&typeof s.message=="string")return s.message;if(typeof s=="string")return s;try{const t=JSON.stringify(s);if(t!==void 0)return t}catch{}return String(s)}class Y0 extends Error{constructor(e){const r=e.timeoutMs??Ja;super(`${e.business} timed out at ${e.stage} after ${r}ms`);x(this,"code","RENDERER_BUSINESS_TIMEOUT");x(this,"business");x(this,"stage");x(this,"elapsedMs");x(this,"reported",!1);this.name="RendererBusinessTimeoutError",this.business=e.business,this.stage=e.stage,this.elapsedMs=r}}class Cd extends Error{constructor(e,r){super(vr(e));x(this,"code","RENDERER_BUSINESS_ERROR");x(this,"business");x(this,"stage");x(this,"cause");x(this,"reported",!1);this.name="RendererBusinessError",this.business=r.business,this.stage=r.stage,this.cause=e}}async function Gu(s,t){const e=t.timeoutMs??Ja;let r;const n=new Promise((i,o)=>{r=setTimeout(()=>{o(new Y0({...t,timeoutMs:e}))},e)});try{return await Promise.race([Promise.resolve(s),n])}finally{r!==void 0&&clearTimeout(r)}}function G0(s){return s instanceof Y0||s instanceof Error&&s.code==="RENDERER_BUSINESS_TIMEOUT"}function $a(s){return G0(s)||s instanceof Cd||s instanceof Error&&s.code==="RENDERER_BUSINESS_ERROR"}function Hu(s,t){return $a(s)?s:new Cd(s,t)}function H0(s,t,e){const r=G0(s),n=$a(s),i=n?s.business:t.business,o=n?s.stage:t.stage,a=r?s.elapsedMs:0,c=vr(s);return`[rendererBusiness] ${r?"timeout":"failed"} viewId=${e.viewId} renderer=${e.renderer} business=${i} stage=${o} elapsedMs=${a} error=${c}`}class Q0{constructor(){x(this,"timer")}get pending(){return this.timer!==void 0}schedule(t,e){this.timer===void 0&&(this.timer=setTimeout(()=>{this.timer=void 0,t()},Math.max(0,e)))}cancel(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0)}}const pve=30,Id=1e3/pve;function q0(s){return Math.min(Math.max(0,s),Id)}const Ql=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();class mve{constructor(t=1e3/30){x(this,"timer");x(this,"pending");x(this,"resolvePending");x(this,"activeWorkId");x(this,"generation",0);x(this,"lastReleaseTime",0);this.interval=t}wait(t){if(this.activeWorkId!==t&&(this.finish(),this.activeWorkId=t),this.pending)return this.pending;const e=this.generation,r=Math.max(0,this.lastReleaseTime+this.interval-Ql());return r===0?(this.lastReleaseTime=Ql(),Promise.resolve(!0)):(this.pending=new Promise(n=>{this.resolvePending=n,this.timer=setTimeout(()=>{if(this.timer=void 0,this.pending=void 0,this.resolvePending=void 0,e!==this.generation||this.activeWorkId!==t){n(!1);return}this.lastReleaseTime=Ql(),n(!0)},r)}),this.pending)}finish(t){if(t!==void 0&&this.activeWorkId!==t)return;this.generation++,this.timer!==void 0&&clearTimeout(this.timer),this.timer=void 0,this.pending=void 0;const e=this.resolvePending;this.resolvePending=void 0,this.activeWorkId=void 0,this.lastReleaseTime=0,e==null||e(!1)}cancel(){this.finish()}}function yve(s,t){return s?t||"webgl2":"2d"}function vve(s){var r;if(!s)return{};const t={};try{t.contextLost=((r=s.isContextLost)==null?void 0:r.call(s))||!1}catch{}let e;try{e=s.getParameter(s.CURRENT_PROGRAM),t.currentProgram=!!e}catch{}if(e){try{t.programLinked=!!s.getProgramParameter(e,s.LINK_STATUS)}catch{}try{t.programHasUniforms=!!e.uniforms}catch{}}try{const n=s.getError();n!==s.NO_ERROR&&(t.glError=n)}catch{}return t}function Mve(s){var t,e;if(s)return s.gl||(t=s.renderer)!=null&&t.glRenderer?(e=s.renderer)!=null&&e.isWebGL2?"webgl2":"webgl":"2d"}function wve(s,t){const e=s==null?void 0:s.canvas;if(!(s!=null&&s.gl)||!(e!=null&&e.addEventListener))return()=>{};let r=!0;const n=i=>{var o;r&&(r=!1,(o=i.preventDefault)==null||o.call(i),t(vve(s.gl),i))};return e.addEventListener("webglcontextlost",n),e.addEventListener("contextlost",n),()=>{r=!1,e.removeEventListener("webglcontextlost",n),e.removeEventListener("contextlost",n)}}async function Z0(s,t,e){await(s==null?void 0:s.flush()),e!=null&&e.afterFlush&&await e.afterFlush(),await Promise.all(t.map(r=>r.prepareRender))}class Sve{constructor(t){x(this,"scheduledHandle");x(this,"activeTask");x(this,"flushTask");x(this,"pending",!1);x(this,"destroyed",!1);x(this,"failure");this.options=t}request(t=!1){if(!this.destroyed){if(this.pending=!0,t){this.cancelScheduledTask(),!this.activeTask&&!this.flushTask&&this.startTask();return}!this.activeTask&&!this.flushTask&&this.scheduleTask()}}flush(){if(this.destroyed)return Promise.reject(new Error("Cannot flush a destroyed service render scheduler"));if(!this.flushTask){const t=this.flushPending();this.flushTask=t;const e=()=>{this.flushTask===t&&(this.flushTask=void 0,this.pending&&!this.destroyed&&this.failure===void 0&&this.scheduleTask())};t.then(e,e)}return this.flushTask}destroy(){this.destroyed||(this.destroyed=!0,this.pending=!1,this.failure=void 0,this.cancelScheduledTask())}scheduleTask(){this.destroyed||this.scheduledHandle!==void 0||this.activeTask||this.flushTask||!this.pending||(this.scheduledHandle=this.options.schedule(()=>{this.scheduledHandle=void 0,this.startTask()}))}cancelScheduledTask(){this.scheduledHandle!==void 0&&(this.options.cancel(this.scheduledHandle),this.scheduledHandle=void 0)}startTask(){if(this.destroyed||this.activeTask||!this.pending)return this.activeTask;this.pending=!1;const t=Promise.resolve().then(()=>this.options.run()).catch(e=>{var r,n;if(!this.destroyed){this.failure===void 0&&(this.failure=e);try{(n=(r=this.options).onError)==null||n.call(r,e)}catch{}}}).then(()=>{this.activeTask===t&&(this.activeTask=void 0,this.pending&&!this.destroyed&&!this.flushTask&&this.failure===void 0&&this.scheduleTask())});return this.activeTask=t,t}async flushPending(){for(this.cancelScheduledTask();!this.destroyed;){if(this.activeTask&&await this.activeTask,this.failure!==void 0)throw this.failure;if(!this.pending)return;const t=this.startTask();t&&await t}}}class Tve{constructor(t,e,r){x(this,"viewId");x(this,"viewGeneration");x(this,"type");x(this,"scene");x(this,"fullLayer");x(this,"vNodes");x(this,"dpr");x(this,"contextType");x(this,"opt");x(this,"cameraOpt");x(this,"isSafari",!1);x(this,"combinePostMsg",new Set);x(this,"workerTaskId");x(this,"protectedTask");x(this,"delayPostDoneWaiter");x(this,"activePostDoneWaiter");x(this,"isCombiningPost",!1);x(this,"combinePostTaskSequence",0);x(this,"activeCombinePostTaskId");x(this,"combinePostTransfersByTask",new Map);x(this,"cacheImages",new Map);x(this,"imageResolveMap",new Map);x(this,"taskUpdateCameraId");x(this,"taskUpdateCameraResolve");x(this,"debounceUpdateCameraId");x(this,"activeCameraSettledRender");x(this,"activeCameraTaskContext");x(this,"destroyed",!1);x(this,"contextLossCleanup");var n,i;if(this.viewId=t,this.viewGeneration=e.viewGeneration,this.type=r,this.opt=e,this.dpr=e.dpr,this.contextType=this.getSupportContextType(r,(n=e==null?void 0:e.offscreenCanvasOpt)==null?void 0:n.contextType),!this.contextType)throw new Error("Sorry, your browser doesn't support canvas context type 2d or webgl");try{this.scene=this.createScene(e),this.createRenderLayer(this.scene,e)}catch(o){if(this.contextType!=="2d")this.contextType="2d",(i=this.scene)==null||i.disconnect(),this.scene=this.createScene(e),this.createRenderLayer(this.scene,e);else throw o}this.registerContextLossListener(),this.vNodes=new j0(t,this.scene)}getActualContextType(){var t;return Mve((t=this.fullLayer)==null?void 0:t.parent)}registerContextLossListener(){var e;const t=(e=this.fullLayer)==null?void 0:e.parent;this.contextLossCleanup=wve(t,r=>{if(this.destroyed)return;const n=this.getActualContextType(),i=`[WorkThreadEngine] WebGL context lost; viewId=${this.viewId}; generation=${this.viewGeneration??"unknown"}; context=${n||"unknown"}`;try{this._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.viewGeneration,reportString:i,reportError:"WebGL context lost",reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:"context-lost",reportContextType:n,reportContextLost:!0,reportGlError:r.glError,reportCurrentProgram:r.currentProgram,reportProgramLinked:r.programLinked,reportProgramHasUniforms:r.programHasUniforms}]})}catch(o){console.error(i,o)}})}removeContextLossListener(){var t;(t=this.contextLossCleanup)==null||t.call(this),this.contextLossCleanup=void 0}createRenderLayer(t,e){const r=He.bufferSize.full,n=He.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",t,{...e.layerOpt,bufferSize:this.viewId===Fe?r:n*2})}async updateDpr(t){this.dpr=t,this.scene.displayRatio=t}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,r]of this.cacheImages.entries())if(e===t&&r.imageBitmap)return r.imageBitmap}deleteCachedImagesByWorkId(t,e){for(const[r,n]of this.cacheImages.entries())e&&r===e||n.workId===t&&(this.closeImageBitmap(n.imageBitmap),this.cacheImages.delete(r))}clearCacheImages(){this.cacheImages.forEach(t=>this.closeImageBitmap(t.imageBitmap)),this.cacheImages.clear()}closeImageBitmap(t){if(t)try{t.close()}catch{}}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t,resolve:e},r)=>{t&&clearTimeout(t),e==null||e(r)}),this.imageResolveMap.clear()}drainImageBitmapServiceLayers(t){const e=this.opt;!e.isImageBitmapTransport||!e.isUseSimple||t.forEach(r=>r.render())}setIsSafari(t){this.isSafari=t}async on(t){var u,h,d,f;if(this.destroyed){try{(u=t.imageBitmap)==null||u.close()}catch{}return}const{msgType:e,toolsType:r,opt:n,imageSrc:i,imageBitmap:o,workId:a,dpr:c,requestId:l}=t;switch(e){case le.UpdateDpr:{gt(c)&&await this.updateDpr(c);break}case le.UpdateCamera:{try{await V0(t.cameraTaskId,async g=>{this.activeCameraTaskContext=g;try{await this.updateCamera(t,g)}finally{this.activeCameraTaskContext===g&&(this.activeCameraTaskContext=void 0)}})}catch(g){throw this.cameraOpt=void 0,this.cancelCameraSettledRender(),g}break}case le.Destroy:{this.destroy();break}case le.CancelBitmapEraser:{const g=(h=t.workId)==null?void 0:h.toString();g&&"abortBitmapEraser"in this.localWork&&this.localWork.abortBitmapEraser(g);break}case le.Clear:{await this.clearAll();break}case le.ServiceSyncCommit:{const g=this,y=[(d=this.fullLayer)==null?void 0:d.parent,(f=g.topLayer)==null?void 0:f.parent].filter(Boolean);try{await Gu((async()=>{await Z0(this.serviceWork,y,this.opt.isImageBitmapTransport&&this.opt.isUseSimple?{afterFlush:()=>this.drainImageBitmapServiceLayers(y)}:void 0)})(),{business:"service-sync-commit",stage:"flush-and-prepare-render",timeoutMs:5e3})}catch(S){const b=Hu(S,{business:"service-sync-commit",stage:"flush-and-prepare-render"});throw this.reportRendererBusinessError(b,{business:"service-sync-commit",stage:"flush-and-prepare-render"}),b}if(this.destroyed)break;await this.post({sp:[{type:le.ServiceSyncCommit,viewId:this.viewId,viewGeneration:this.viewGeneration,scenePath:t.scenePath,serviceSyncId:t.serviceSyncId,serviceRevision:t.serviceRevision}]});break}case le.UpdateTools:{if(r&&n){const g={toolsType:r,toolsOpt:n,combineUnitTime:t.combineUnitTime,maxCombineEraserTime:t.maxCombineEraserTime};this.localWork.setToolsOpt(g)}break}case le.GetImageBitMap:{if(i&&o&&a){const g=a.toString(),y=this.imageResolveMap.get(i);if(!y||y.requestId!==l){this.closeImageBitmap(o);break}this.cacheImages.set(i,{imageBitmap:o,workId:g});const{resolve:S,timer:b}=y;b&&clearTimeout(b),S&&S(i),this.deleteCachedImagesByWorkId(g,i)}break}}}getIconSize(t,e,r){const n=t*r,i=e*r;return n<=50||i<=50?[50,50]:n<=100||i<=100?[100,100]:n<=200||i<=200?[200,200]:n<=400||i<=400?[400,400]:n<=800||i<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:r,workId:n,isSubWorker:i,requestId:o}=t;if(e===Q.Image&&r&&n){const a=n.toString(),{src:c,type:l,width:u,height:h,strokeColor:d}=r;if(!c||!l||!u||!h)return;let f=c;if(l===an.Iconify){const[N,T]=this.getIconSize(u,h,this.dpr);f=F0(c,N,T,d)}if(this.cacheImages.has(f)){const N=this.getCachedImages(f);if(N)return N}const y=this.imageResolveMap.get(f);if(y)return await y.promise,this.getCachedImages(f);let S;const b=new Promise(N=>{S=N}),C={resolve:S,timer:void 0,requestId:o,promise:b};return C.timer=setTimeout(()=>{this.imageResolveMap.get(f)===C&&S(f)},5e3),this.imageResolveMap.set(f,C),this._post({sp:[{imageSrc:f,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:i,requestId:o,type:le.GetImageBitMap}]}),await b,this.imageResolveMap.get(f)===C&&this.imageResolveMap.delete(f),this.getCachedImages(f)}}createLocalWork(t){const{workId:e,opt:r,toolsType:n}=t;e&&r&&(!this.localWork.getToolsOpt()&&n&&this.setToolsOpt({toolsType:n,toolsOpt:r}),this.setWorkOpt({workId:e,toolsOpt:r}))}updateScene(t,e,r){t.attr({...e});const{width:n,height:i}=e;t.container.width=n,t.container.height=i,t.width=n,t.height=i,this.updateLayer({width:n,height:i},r)}updateLayer(t,e){const{width:r,height:n}=t,i=e||this.fullLayer;i&&(i.parent.setAttribute("width",r),i.parent.setAttribute("height",n),i.setAttribute("size",[r,n]),i.setAttribute("pos",[r*.5,n*.5]))}getSupportContextType(t,e){return yve(t===Qu.Full&&this.viewId===Fe,e)}createScene(t){const{offscreenCanvasOpt:e}=t,{width:r,height:n}=e,i=new OffscreenCanvas(r,n);e.contextType&&delete e.contextType;const o=new bc({container:i,displayRatio:this.dpr,depth:!1,desynchronized:!0,failIfMajorPerformanceCaveat:!0,...e,contextType:this.contextType,id:this.viewId});return o.setAttribute("id",this.viewId),o}createLayer(t,e,r,n){const i=`offscreen-${t}`,{width:o,height:a}=r;n&&(r.offscreen=!0,r.canvas=n);const c=e.layer(i,r),l=new dt({anchor:[.5,.5],pos:[o*.5,a*.5],size:[o,a],name:"viewport",id:t});return c.append(l),l}async clearAll(){var t;this.fullLayer&&(this.fullLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),hr(this.fullLayer,this.fullLayer.parent)),this.cancelCameraBlockingWait(),this.cancelCameraSettledRender(),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.destroy(),(t=this.serviceWork)==null||t.clearAll()}setToolsOpt(t){this.localWork.setToolsOpt(t)}setWorkOpt(t){const{workId:e,toolsOpt:r}=t;e&&r&&this.localWork.setWorkOptions(e.toString(),r)}destroy(){var r,n;if(this.destroyed)return;this.destroyed=!0,(n=(r=this.activeCameraTaskContext)==null?void 0:r.abort)==null||n.call(r),this.activeCameraTaskContext=void 0;const t=[],e=(i,o)=>{try{o()}catch(a){t.push(`${i}: ${a instanceof Error?a.message:String(a)}`)}};e("context-loss-listener",()=>this.removeContextLossListener()),e("camera-blocking-wait",()=>this.cancelCameraBlockingWait()),e("camera-render",()=>this.cancelCameraSettledRender()),e("worker-task",()=>{this.workerTaskId!==void 0&&(clearTimeout(this.workerTaskId),this.workerTaskId=void 0)}),e("post-waiters",()=>{var i,o;(i=this.delayPostDoneWaiter)==null||i.resolve(),(o=this.activePostDoneWaiter)==null||o.resolve(),this.delayPostDoneWaiter=void 0,this.activePostDoneWaiter=void 0}),e("post-transfers",()=>{this.activeCombinePostTaskId=void 0,this.combinePostTaskSequence++;for(const i of[...this.combinePostTransfersByTask.keys()])this.releaseCombinePostTransfers(i);this.combinePostMsg.clear()}),e("v-nodes",()=>this.vNodes.clear()),e("full-layer",()=>{const i=this.fullLayer.parent;i&&dr(this.fullLayer,i),this.fullLayer.remove()}),e("image-cache",()=>this.clearCacheImages()),e("image-waiters",()=>this.clearImageResolveMap()),e("scene",()=>this.scene.remove()),e("local-work",()=>this.localWork.destroy()),e("service-work",()=>{var i;return(i=this.serviceWork)==null?void 0:i.destroy()}),t.length&&console.error(`[WorkThreadEngine]: destroy completed with cleanup errors viewId=${this.viewId}: ${t.join("; ")}`)}cancelCameraSettledRender(){var e;this.debounceUpdateCameraId!==void 0&&(clearTimeout(this.debounceUpdateCameraId),this.debounceUpdateCameraId=void 0);const t=this.activeCameraSettledRender;t&&(t.cancelled=!0,(e=t.renderLayers)==null||e.forEach(r=>r.cancelPendingRender()),this.activeCameraSettledRender=void 0)}retargetCameraSettledRender(t){var r;if(!gt(t))return!1;const e=this.activeCameraSettledRender;return!e||e.cancelled||(r=e.context)!=null&&r.aborted?!1:(e.cameraTaskId=t,!0)}hasCameraSettledRender(){return!!this.activeCameraSettledRender}cancelCameraBlockingWait(){this.taskUpdateCameraId!==void 0&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0);const t=this.taskUpdateCameraResolve;this.taskUpdateCameraResolve=void 0,t==null||t(!1)}startCameraSettledRender(t,e){const r={cancelled:!1,cameraTaskId:t,context:e};return this.activeCameraSettledRender=r,{isActive:()=>!this.destroyed&&!r.cancelled&&this.activeCameraSettledRender===r&&!(e!=null&&e.aborted),getCameraTaskId:()=>r.cameraTaskId,setRenderLayers:n=>{r.renderLayers=n},finish:()=>{r.renderLayers=void 0,this.activeCameraSettledRender===r&&(this.activeCameraSettledRender=void 0)}}}post(t,e={}){var n;if(this.destroyed)return(n=t.render)==null||n.forEach(i=>this.closeImageBitmap(i.imageBitmap)),Promise.resolve();this.combinePostMsg.add(t);const r=this.type===Qu.Full?this.getOrCreatePostDoneWaiter(e.reportFailureAtRendererBoundary!==!1):void 0;return this.runBatchPostData(),r?(r.promise.catch(()=>{}),r.promise):Promise.resolve()}getOrCreatePostDoneWaiter(t){if(this.delayPostDoneWaiter)t||(this.delayPostDoneWaiter.reportFailureAtRendererBoundary=!1);else{let e,r;const n=new Promise((i,o)=>{e=i,r=o});this.delayPostDoneWaiter={promise:n,resolve:e,reject:r,reportFailureAtRendererBoundary:t}}return this.delayPostDoneWaiter}runBatchPostData(){this.destroyed||!this.workerTaskId&&!this.isCombiningPost&&(this.workerTaskId=setTimeout(()=>{this.workerTaskId=void 0;const t=this.delayPostDoneWaiter;this.delayPostDoneWaiter=void 0,this.activePostDoneWaiter=t,this.isCombiningPost=!0;const e=++this.combinePostTaskSequence;this.activeCombinePostTaskId=e,this.combinePostTransfersByTask.set(e,new Set),(async()=>{let r=!1,n;try{await this.waitForRendererBusiness(this.combinePost(e),{business:"combine-post",stage:"flush"})}catch(i){r=!0;const o=Hu(i,{business:"combine-post",stage:"flush"});n=o,(t==null?void 0:t.reportFailureAtRendererBoundary)!==!1&&this.reportRendererBusinessError(o,{business:"combine-post",stage:"flush"})}finally{this.releaseCombinePostTransfers(e),this.activePostDoneWaiter===t&&(this.activePostDoneWaiter=void 0),this.activeCombinePostTaskId===e&&(this.activeCombinePostTaskId=void 0),this.isCombiningPost=!1,this.combinePostMsg.size&&this.runBatchPostData()}r?t==null||t.reject(n):t==null||t.resolve()})()},16))}waitForRendererBusiness(t,e){return Gu(t,e)}reportRendererBusinessError(t,e,r=!1){if($a(t)&&t.reported)return;const n=H0(t,e,{viewId:this.viewId,renderer:this.type});$a(t)&&(t.reported=!0);try{this._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.viewGeneration,reportString:n,reportErrorCode:r?"RENDERER_RUNTIME_ERROR":void 0,reportStage:e.stage,reportError:t instanceof Error?t.message:String(t)}]})}catch(i){console.error(n,i)}}isCombinePostTaskActive(t){return this.activeCombinePostTaskId===t}trackCombinePostTransfer(t,e){const r=this.combinePostTransfersByTask.get(t);return!r||!this.isCombinePostTaskActive(t)?(this.closeCombinePostTransfers([e]),!1):(r.add(e),!0)}commitCombinePostTransfers(t){this.combinePostTransfersByTask.delete(t)}releaseCombinePostTransfers(t){const e=this.combinePostTransfersByTask.get(t);e&&(this.combinePostTransfersByTask.delete(t),this.closeCombinePostTransfers([...e]))}closeCombinePostTransfers(t){for(const e of t||[]){const r=e.close;if(typeof r=="function")try{r.call(e)}catch{}}}transferLayerToImageBitmap(t){const e=this.getLayer(t),r=e==null?void 0:e.parent;if(!(r instanceof ri))throw new Error(`render Layer is unavailable: ${String(t)}`);return r.transferToImageBitmap()}combinePostData(){var l,u;const t=this.combinePostMsg;this.combinePostMsg=new Set;const e=[],r=[];let n,i,o,a;const c=new Set;for(const h of t.values()){if((l=h.render)!=null&&l.length)for(const d of h.render){let f=!1;if(d.workId&&c.add(d.workId),d.viewId||(d.viewId=this.viewId),d.viewGeneration===void 0&&(d.viewGeneration=this.viewGeneration),d.isClearAll&&(d.rect=this.getSceneRect(),d.isClear=!0,delete d.isClearAll),d.drawCanvas){const g=this.getLayer(d.drawCanvas);if(!g||!(g.parent instanceof ri))continue;if(g.parent.render(),d.isDrawAll){const y=this.getSceneRect();d.rect=y,delete d.isDrawAll}}for(const g of e)if(d.viewId===g.viewId&&d.eraseTxnId===g.eraseTxnId){d.isClear&&g.clearCanvas&&g.isClear&&g.clearCanvas===d.clearCanvas&&(g.rect=Ue(g.rect,d.rect),f=!0),g.drawCanvas&&g.drawCanvas===d.drawCanvas&&(g.rect=Ue(g.rect,d.rect),f=!0);continue}f||(d.isClear&&!d.drawCanvas?e.unshift(d):e.push(d))}if((u=h.sp)!=null&&u.length)for(const d of h.sp){const f={...d,viewId:d.viewId||this.viewId,viewGeneration:d.viewGeneration??this.viewGeneration};let g=!1;for(const y of r)if(In(f,y)){g=!0;break}g||r.push(f)}gt(h.fullWorkerDrawCount)&&(n=h.fullWorkerDrawCount),gt(h.subWorkerDrawCount)&&(i=h.subWorkerDrawCount),gt(h.consumeCount)&&(o=h.consumeCount,a=h.consumeWorkId)}return{render:e,sp:r,fullWorkerDrawCount:n,subWorkerDrawCount:i,consumeCount:o,consumeWorkId:a,workIds:c,viewId:this.viewId,viewGeneration:this.viewGeneration}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}}class K0{constructor(t){x(this,"viewId");x(this,"vNodes");x(this,"thread");x(this,"fullLayer");x(this,"drawLayer");x(this,"_post");x(this,"tmpOpt");x(this,"workShapes",new Map);x(this,"drawCount",0);x(this,"consumeCount",0);x(this,"syncUnitTime",He.syncOpt.interval);x(this,"combineUnitTime",He.bezier.combineUnitTime);x(this,"maxCombineEraserTime",Id);x(this,"eraserBatchScheduler",new Q0);x(this,"drawAckBackpressure",new mve);this.thread=t.thread,this.viewId=t.viewId,this.vNodes=t.vNodes,this.fullLayer=t.fullLayer,this.drawLayer=t.drawLayer,this._post=this.thread.post.bind(t.thread)}get eraserBatchDelay(){return q0(this.maxCombineEraserTime)}setmaxCombineEraserTime(t){this.maxCombineEraserTime=t}setCombineUnitTime(t){this.combineUnitTime=t}setSyncUnitTime(t){this.syncUnitTime=t}destroy(){this.eraserBatchScheduler.cancel(),this.drawAckBackpressure.cancel(),this.workShapes.forEach(t=>t.clearTmpPoints()),this.workShapes.clear()}getWorkShapes(){return this.workShapes}getWorkShape(t){return this.workShapes.get(t)}createWorkShape(t,e){if(t&&this.tmpOpt){const r={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},n=this.createWorkShapeNode({...r,workId:t});n&&this.workShapes.set(t,n)}}setWorkOptions(t,e){const r=this.getWorkShape(t);r||this.createWorkShape(t,e),r==null||r.setWorkOptions(e)}createWorkShapeNode(t){var e;return Td({...t,vNodes:this.vNodes,fullLayer:this.fullLayer,drawLayer:this.drawLayer},(e=this.thread)==null?void 0:e.serviceWork)}setToolsOpt(t){var e,r,n;((e=this.tmpOpt)==null?void 0:e.toolsType)!==t.toolsType&&(r=this.tmpOpt)!=null&&r.toolsType&&this.clearAllWorkShapesCache(),this.tmpOpt=t,(n=t.toolsOpt)!=null&&n.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime),t.combineUnitTime&&(this.combineUnitTime=t.combineUnitTime),t.maxCombineEraserTime&&(this.maxCombineEraserTime=t.maxCombineEraserTime)}getToolsOpt(){return this.tmpOpt}clearWorkShapeNodeCache(t){var e;(e=this.getWorkShape(t))==null||e.clearTmpPoints(),this.workShapes.delete(t)}clearAllWorkShapesCache(){this.eraserBatchScheduler.cancel(),this.drawAckBackpressure.cancel();for(const[t,e]of this.workShapes)t!==Le&&(e.clearTmpPoints(),this.workShapes.delete(t))}setFullWork(t){const{workId:e,opt:r,toolsType:n}=t;if(e&&r&&n){const i=e.toString();let o;return e&&this.workShapes.has(i)?(o=this.workShapes.get(i),(o==null?void 0:o.toolsType)!==n?(o==null||o.clearTmpPoints(),this.workShapes.delete(i),o=void 0):o==null||o.setWorkOptions(r)):o=this.createWorkShapeNode({toolsOpt:r,toolsType:n,workId:i}),o||(o=this.createWorkShapeNode({toolsOpt:r,toolsType:n,workId:i})),o?(this.workShapes.set(i,o),o):void 0}}}function Cve(s){return s}var X0=Cve;function Ive(s,t,e){switch(e.length){case 0:return s.call(t);case 1:return s.call(t,e[0]);case 2:return s.call(t,e[0],e[1]);case 3:return s.call(t,e[0],e[1],e[2])}return s.apply(t,e)}var bve=Ive,Eve=bve,Wp=Math.max;function xve(s,t,e){return t=Wp(t===void 0?s.length-1:t,0),function(){for(var r=arguments,n=-1,i=Wp(r.length-t,0),o=Array(i);++n<i;)o[n]=r[t+n];n=-1;for(var a=Array(t+1);++n<t;)a[n]=r[n];return a[t]=e(o),Eve(s,this,a)}}var Rve=xve;function kve(s){return function(){return s}}var Ave=kve,Pve=Ave,Vp=jv,Dve=X0,Lve=Vp?function(s,t){return Vp(s,"toString",{configurable:!0,enumerable:!1,value:Pve(t),writable:!0})}:Dve,Nve=Lve,Ove=800,zve=16,Bve=Date.now;function jve(s){var t=0,e=0;return function(){var r=Bve(),n=zve-(r-e);if(e=r,n>0){if(++t>=Ove)return arguments[0]}else t=0;return s.apply(void 0,arguments)}}var Fve=jve,Uve=Nve,Wve=Fve,Vve=Wve(Uve),$ve=Vve,Yve=X0,Gve=Rve,Hve=$ve;function Qve(s,t){return Hve(Gve(s,t,Yve),s+"")}var qve=Qve;function Zve(s,t,e,r){for(var n=s.length,i=e+(r?1:-1);r?i--:++i<n;)if(t(s[i],i,s))return i;return-1}var Kve=Zve;function Xve(s){return s!==s}var Jve=Xve;function _ve(s,t,e){for(var r=e-1,n=s.length;++r<n;)if(s[r]===t)return r;return-1}var e0e=_ve,t0e=Kve,r0e=Jve,n0e=e0e;function i0e(s,t,e){return t===t?n0e(s,t,e):t0e(s,r0e,e)}var s0e=i0e,o0e=s0e;function a0e(s,t){var e=s==null?0:s.length;return!!e&&o0e(s,t,0)>-1}var J0=a0e;function c0e(s,t,e){for(var r=-1,n=s==null?0:s.length;++r<n;)if(e(t,s[r]))return!0;return!1}var _0=c0e;function l0e(s,t){for(var e=-1,r=s==null?0:s.length,n=Array(r);++e<r;)n[e]=t(s[e],e,s);return n}var u0e=l0e,h0e=vd,d0e=J0,f0e=_0,g0e=u0e,p0e=Lc,m0e=Md,y0e=200;function v0e(s,t,e,r){var n=-1,i=d0e,o=!0,a=s.length,c=[],l=t.length;if(!a)return c;e&&(t=g0e(t,p0e(e))),r?(i=f0e,o=!1):t.length>=y0e&&(i=m0e,o=!1,t=new h0e(t));e:for(;++n<a;){var u=s[n],h=e==null?u:e(u);if(u=r||u!==0?u:0,o&&h===h){for(var d=l;d--;)if(t[d]===h)continue e;c.push(u)}else i(t,h,r)||c.push(u)}return c}var M0e=v0e,$p=mo,w0e=Vv,S0e=yo,Yp=$p?$p.isConcatSpreadable:void 0;function T0e(s){return S0e(s)||w0e(s)||!!(Yp&&s&&s[Yp])}var C0e=T0e,I0e=ld,b0e=C0e;function eM(s,t,e,r,n){var i=-1,o=s.length;for(e||(e=b0e),n||(n=[]);++i<o;){var a=s[i];t>0&&e(a)?t>1?eM(a,t-1,e,r,n):I0e(n,a):r||(n[n.length]=a)}return n}var E0e=eM;function x0e(){}var R0e=x0e,ql=_v,k0e=R0e,A0e=wd,P0e=1/0,D0e=ql&&1/A0e(new ql([,-0]))[1]==P0e?function(s){return new ql(s)}:k0e,L0e=D0e,N0e=vd,O0e=J0,z0e=_0,B0e=Md,j0e=L0e,F0e=wd,U0e=200;function W0e(s,t,e){var r=-1,n=O0e,i=s.length,o=!0,a=[],c=a;if(e)o=!1,n=z0e;else if(i>=U0e){var l=t?null:j0e(s);if(l)return F0e(l);o=!1,n=B0e,c=new N0e}else c=t?[]:a;e:for(;++r<i;){var u=s[r],h=t?t(u):u;if(u=e||u!==0?u:0,o&&h===h){for(var d=c.length;d--;)if(c[d]===h)continue e;t&&c.push(h),a.push(u)}else n(c,h,e)||(c!==a&&c.push(h),a.push(u))}return a}var V0e=W0e,$0e=M0e,Y0e=E0e,Gp=V0e;function G0e(s,t,e){var r=s.length;if(r<2)return r?Gp(s[0]):[];for(var n=-1,i=Array(r);++n<r;)for(var o=s[n],a=-1;++a<r;)a!=n&&(i[n]=$0e(i[n]||o,s[a],t,e));return Gp(Y0e(i,1),t,e)}var H0e=G0e,Q0e=sd,q0e=jr;function Z0e(s){return q0e(s)&&Q0e(s)}var K0e=Z0e,X0e=Qv,J0e=qve,_0e=H0e,eMe=K0e;J0e(function(s){return _0e(X0e(s,eMe))});class tMe extends K0{constructor(e){super(e);x(this,"drawWorkActiveId")}runSelectWork(e){var n;const r=this.setFullWork(e);r&&((n=e.selectIds)!=null&&n.length)&&e.workId&&r.selectServiceNode(e.workId.toString(),{selectIds:e.selectIds},!1)}workShapesDone(){for(const e of this.workShapes.keys())this.clearWorkShapeNodeCache(e);hr(this.fullLayer,this.fullLayer.parent)}async consumeDraw(e){const{workId:r,fullWorkerDrawCount:n,postCount:i}=e,o=r==null?void 0:r.toString(),a=o&&this.workShapes.get(o);if(!a){o&&gt(i)&&await this.drawAckBackpressure.wait(o)&&await this._post({consumeCount:i,consumeWorkId:o});return}this.drawWorkActiveId&&this.drawWorkActiveId!==o&&(await this.consumeDrawAll({workId:this.drawWorkActiveId,viewId:this.viewId,msgType:le.DrawWork,dataType:Re.Local}),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&o!==Le&&(this.drawWorkActiveId=o);const c=a.toolsType;gt(i)&&(this.consumeCount=i);const l=a.consume({data:e,drawCount:this.drawCount,isFullWork:!0,isSubWorker:!0,removeDrawCount:n});switch(c){case Q.Selector:l&&(this.drawCount++,await this.drawSelector(l));break;case Q.Ellipse:case Q.Arrow:case Q.Straight:case Q.Rectangle:case Q.Star:case Q.Polygon:case Q.SpeechBalloon:{l&&(this.drawCount++,await this.drawShape(l));break}case Q.Pencil:{l&&(this.drawCount++,await this.drawPencil(l,r==null?void 0:r.toString()));break}case Q.PencilEraser:{l&&(this.drawCount++,await this.drawAckBackpressure.wait(o)&&await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,consumeWorkId:o}));break}case Q.BitMapEraser:l&&this.drawCount++;break}}async consumeDrawAll(e){const{workId:r}=e;if(r){const n=r.toString();this.drawAckBackpressure.finish(n),this.drawWorkActiveId===n&&(this.drawWorkActiveId=void 0);const i=this.workShapes.get(n);if(!i)return;switch(i.toolsType){case Q.Selector:this.drawCount=0,hr(this.fullLayer,this.fullLayer.parent),this.clearWorkShapeNodeCache(n),this._post({render:[{isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}]});break;case Q.Arrow:case Q.Straight:case Q.Ellipse:case Q.Pencil:case Q.Rectangle:case Q.Star:case Q.Polygon:case Q.SpeechBalloon:case Q.BitMapEraser:case Q.PencilEraser:this.drawCount=0,hr(this.fullLayer,this.fullLayer.parent),this.clearWorkShapeNodeCache(n);break}}}async removeWork(e){const{workId:r}=e,n=r==null?void 0:r.toString();if(n){const i=this.removeNode(n);if(i){const o=[];o.push({rect:Sn(i),clearCanvas:_e.Float,isClear:!0,viewId:this.viewId},{rect:Sn(i),drawCanvas:_e.Float,viewId:this.viewId}),await this._post({render:o})}}}removeNode(e){const r=this.workShapes.has(e);let n;return r&&(this.fullLayer.getElementsByName(e).forEach(i=>{const o=i.getBoundingClientRect();n=Ue(n,{x:o.x-xe.SafeBorderPadding,y:o.y-xe.SafeBorderPadding,w:o.width+xe.SafeBorderPadding*2,h:o.height+xe.SafeBorderPadding*2}),i.remove(),dr(i,this.fullLayer.parent)}),n&&this.clearWorkShapeNodeCache(e)),n}async drawPencil(e,r){!r||!await this.drawAckBackpressure.wait(r)||await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,consumeWorkId:r,render:[{rect:e==null?void 0:e.rect,workId:r,drawCanvas:_e.Float,viewId:this.viewId}],sp:(e==null?void 0:e.op)&&[e]})}async drawShape(e){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:(e==null?void 0:e.rect)&&Sn(e.rect),isClear:!0,clearCanvas:_e.Float,viewId:this.viewId},{rect:(e==null?void 0:e.rect)&&Sn(e.rect),drawCanvas:_e.Float,viewId:this.viewId}]})}async drawSelector(e){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:(e==null?void 0:e.rect)&&Sn(e.rect),isClear:!0,clearCanvas:_e.Float,viewId:this.viewId},{rect:(e==null?void 0:e.rect)&&Sn(e.rect),drawCanvas:_e.Float,viewId:this.viewId}]})}}class rMe{constructor(t){x(this,"viewId");x(this,"vNodes");x(this,"topLayer");x(this,"thread");x(this,"post");x(this,"serviceWorkShapes",new Map);x(this,"localWorkShapes",new Map);x(this,"tmpOpt");x(this,"syncUnitTime",He.syncOpt.interval);x(this,"animationId");this.viewId=t.viewId,this.vNodes=t.vNodes,this.topLayer=t.topLayer,this.thread=t.thread,this.post=t.thread.post.bind(t.thread)}canUseTopLayer(t){return t===Q.LaserPen}getWorkShape(t){return this.localWorkShapes.get(t)}createWorkShape(t,e){if(t&&this.tmpOpt){const r={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},n=this.createWorkShapeNode({...r,workId:t});return n&&this.localWorkShapes.set(t,{node:n,toolsType:n.toolsType,workState:he.Start}),n}}setWorkOptions(t,e){var n;const r=(n=this.localWorkShapes.get(t))==null?void 0:n.node;r||this.createWorkShape(t,e),r==null||r.setWorkOptions(e)}createWorkShapeNode(t){const{toolsType:e}=t;if(e===Q.LaserPen)return Td({...t,vNodes:this.vNodes,fullLayer:this.topLayer,drawLayer:this.topLayer})}clearAllWorkShapesCache(){this.localWorkShapes.forEach(t=>{var e;return(e=t.node)==null?void 0:e.clearTmpPoints()}),this.localWorkShapes.clear()}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}consumeDraw(t){const{workId:e,dataType:r}=t;if(r===Re.Service)this.activeServiceWorkShape(t);else{const n=e==null?void 0:e.toString(),i=n&&this.localWorkShapes.get(n);if(!i)return;const o=i.node.consume({data:t,isFullWork:!1,isSubWorker:!0});o.rect&&(i.totalRect=Ue(o.rect,i.totalRect),i.result=o,i.workState=he.Doing,n&&this.localWorkShapes.set(n,i))}this.runAnimation()}consumeDrawAll(t){const{workId:e,dataType:r}=t;if(r===Re.Service)this.activeServiceWorkShape(t);else{const n=e==null?void 0:e.toString(),i=n&&this.localWorkShapes.get(n);if(!i)return;const o=i.node.consumeAll({data:t});i.totalRect=Ue(o.rect,i.totalRect),i.result=o,i.workState=he.Done,n&&this.localWorkShapes.set(n,i)}this.runAnimation()}destroy(){this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}setNodeKey(t,e,r,n){return e.toolsType=r,e.node=this.createWorkShapeNode({workId:t,toolsType:r,toolsOpt:n}),e}activeServiceWorkShape(t){var d,f;const{workId:e,opt:r,toolsType:n,type:i,updateNodeOpt:o,ops:a,op:c}=t;if(!e)return;const l=e.toString(),u=(d=this.vNodes.get(l))==null?void 0:d.rect;if(!((f=this.serviceWorkShapes)!=null&&f.has(l))){let g={toolsType:n,animationWorkData:c||[],animationIndex:0,type:i,updateNodeOpt:o,ops:a,oldRect:u};n&&r&&(g=this.setNodeKey(l,g,n,r)),this.serviceWorkShapes.set(l,g)}const h=this.serviceWorkShapes.get(l);i&&(h.type=i),a&&(h.animationWorkData=Bn(a),h.ops=a),o&&(h.updateNodeOpt=o),c&&(h.animationWorkData=c),h.node&&h.node.getWorkId()!==l&&h.node.setWorkId(l),u&&(h.oldRect=u),n&&r?(h.toolsType!==n&&n&&r&&this.setNodeKey(l,h,n,r),h.node&&h.node.setWorkOptions(r)):n&&(h.toolsType=n)}computNextAnimationIndex(t,e){const r=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((t.animationIndex||0)+(r||e),(t.animationWorkData||[]).length)}async animationDraw(){var o,a,c,l;this.animationId=void 0;let t=!1;const e=new Map,r=[],n=[],i=[];for(const[u,h]of this.serviceWorkShapes.entries())switch(h.toolsType){case Q.LaserPen:{const f=this.computNextAnimationIndex(h,8),g=Math.max(0,h.animationIndex||0),y=(h.animationWorkData||[]).slice(g,f);if((h.animationIndex||0)<f){const S=(o=h.node)==null?void 0:o.consumeService({op:y,isFullWork:!1});h.totalRect=Ue(h.totalRect,S),h.animationIndex=f,y.length&&e.set(u,{cursorTool:Bye(h.toolsType),workState:g===0?he.Start:f===((a=h.animationWorkData)==null?void 0:a.length)?he.Done:he.Doing,op:y.slice(-2)})}if(n.push({isClear:!0,rect:h.totalRect,clearCanvas:_e.TopFloat,viewId:this.viewId}),r.push({rect:h.totalRect,drawCanvas:_e.TopFloat,viewId:this.viewId}),h.isDel){(c=h.node)==null||c.clearTmpPoints(),this.serviceWorkShapes.delete(u);break}h.ops&&h.animationIndex===((l=h.animationWorkData)==null?void 0:l.length)&&!h.isDel&&(this.topLayer.getElementsByName(u.toString())[0]||(h.isDel=!0,this.serviceWorkShapes.set(u,h))),t=!0;break}}for(const[u,h]of this.localWorkShapes.entries()){const{result:d,toolsType:f,totalRect:g,isDel:y,workState:S}=h;switch(f){case Q.LaserPen:{if(g&&(n.push({isClear:!0,rect:g,clearCanvas:_e.TopFloat,viewId:this.viewId}),r.push({rect:g,drawCanvas:_e.TopFloat,viewId:this.viewId})),y){h.node.clearTmpPoints(),this.localWorkShapes.delete(u),i.push({removeIds:[u.toString()],viewId:this.viewId,type:le.RemoveNode});break}d&&((d.op||d.ops)&&i.push(d),h.result=void 0),!this.topLayer.getElementsByName(u.toString())[0]&&S===he.Done&&(h.isDel=!0,this.localWorkShapes.set(u,h)),t=!0;break}}}t&&this.runAnimation(),e.size&&e.forEach((u,h)=>{i.push({type:le.Cursor,uid:h.split(Bt)[0],op:u.op,workState:u.workState,cursorTool:u.cursorTool,viewId:this.viewId})}),(r.length||n.length||i.length)&&this.post({render:[...n,...r],sp:i})}runAnimation(){this.animationId||(this.animationId=setTimeout(()=>{this.animationId=void 0,this.animationDraw()},16))}}class nMe extends K0{constructor(e){super(e);x(this,"opt");x(this,"scene");x(this,"cameraOpt");x(this,"vNodes");this.opt=e,this.vNodes=void 0}reportRequestFailure(e,r,n,i){const o=n instanceof Error?n.message:String(n);try{this.thread._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.thread.viewGeneration,scenePath:r.scenePath,requestId:r.requestId,reportBusiness:e,reportStage:i,reportError:o,reportString:`[SnapshotWork] ${e} failed; stage=${i}; requestId=${r.requestId||"unknown"}; error=${o}`}]})}catch(a){console.error(`[SnapshotWork] ${e} failure report failed`,a)}}createSnapshotFullLayer(e,r){this.scene=this.opt.createScene(e),this.fullLayer=this.opt.createLayer("snapshotFullLayer",this.scene,r)}destroySnapshotFullLayer(){var e,r,n;hr(this.fullLayer,this.fullLayer.parent),(e=this.fullLayer)==null||e.disconnect(),(r=this.fullLayer)==null||r.remove(),(n=this.scene)==null||n.remove(),this.scene=void 0}updateScene(e){if(!this.scene)throw new Error("SnapshotWork scene is not initialized");this.scene.attr({...e});const{width:r,height:n}=e;this.scene.width=r,this.scene.height=n,this.updateLayer({width:r,height:n})}updateLayer(e){if(!this.fullLayer)throw new Error("SnapshotWork snapshotFullLayer is not initialized");const{width:r,height:n}=e;this.fullLayer.parent.setAttribute("width",r),this.fullLayer.parent.setAttribute("height",n),this.fullLayer.setAttribute("size",[r,n]),this.fullLayer.setAttribute("pos",[r*.5,n*.5])}setCameraOpt(e){this.cameraOpt=e;const{scale:r,centerX:n,centerY:i,width:o,height:a}=e;if(!this.scene)throw new Error("SnapshotWork scene is not initialized");if(!this.fullLayer)throw new Error("SnapshotWork snapshotFullLayer is not initialized");(o!==this.scene.width||a!==this.scene.height)&&this.updateScene({width:o,height:a}),this.fullLayer.setAttribute("scale",[r,r]),this.fullLayer.setAttribute("translate",[-n,-i])}getOffscreen(){var r;return((r=this.fullLayer)==null?void 0:r.parent).canvas}getRectImageBitmap(e,r){const{rect:n}=e,i=this.thread.dpr,o=Math.floor(n.x*i),a=Math.floor(n.y*i),c=Math.floor(n.w*i),l=Math.floor(n.h*i);return createImageBitmap(this.getOffscreen(),o,a,c,l,r)}async getSnapshot(e){const{scenePath:r,scenes:n,cameraOpt:i,w:o,h:a,requestId:c}=e;try{if(!(r&&n&&i&&this.fullLayer))throw new Error("snapshot input is incomplete");this.setCameraOpt(i);for(const[u,h]of Object.entries(n))if(h!=null&&h.type)switch(h==null?void 0:h.type){case le.UpdateNode:case le.FullWork:{const{opt:d}=h,f={...h,opt:d,workId:u,msgType:le.FullWork,dataType:Re.Service,viewId:this.viewId,requestId:c};await this.runFullWork(f);break}default:break}let l;o&&a&&(l={resizeWidth:o,resizeHeight:a}),await this.getSnapshotRender({scenePath:r,options:l,requestId:c})}catch(l){this.reportRequestFailure("snapshot",e,l,"render")}}async runFullWork(e){var i;const r=this.setFullWork(e),n=e.ops&&Bn(e.ops);if(r){let o,a;const c=(i=r.getWorkId())==null?void 0:i.toString();return r.toolsType===Q.BackgroundSVG?o=r.consumeService({isFullWork:!0,replaceId:c}):r.toolsType===Q.Image?o=await r.consumeServiceAsync({isFullWork:!0,worker:this.thread,requestId:e.requestId}):r.toolsType===Q.Text?o=await r.consumeServiceAsync({isFullWork:!0,replaceId:c,isDrawLabel:!0}):(o=r.consumeService({op:n,isFullWork:!0,replaceId:c}),a=(e==null?void 0:e.updateNodeOpt)&&r.updataOptService(e.updateNodeOpt)),e.workId&&this.workShapes.delete(e.workId.toString()),Ue(o,a)}}getSceneRect(){if(!this.scene)throw new Error("SnapshotWork scene is not initialized");const{width:e,height:r}=this.scene;return{x:0,y:0,w:Math.floor(e),h:Math.floor(r)}}async getSnapshotRender(e){var a;const{scenePath:r,options:n,requestId:i}=e;((a=this.fullLayer)==null?void 0:a.parent).render();const o=await this.getRectImageBitmap({rect:this.getSceneRect(),drawCanvas:_e.None},n);o&&(this.thread._post({sp:[{type:le.Snapshot,scenePath:r,imageBitmap:o,viewId:this.viewId,index:0,requestId:i}]},[o]),o.close())}async getBoundingRect(e){const{scenePath:r,scenes:n,cameraOpt:i,requestId:o}=e;try{if(!(r&&n&&i&&this.fullLayer))throw new Error("bounding-box input is incomplete");this.setCameraOpt(i);let a;for(const[c,l]of Object.entries(n))if(l!=null&&l.type)switch(l==null?void 0:l.type){case le.UpdateNode:case le.FullWork:{const u=await this.runFullWork({...l,workId:c,msgType:le.FullWork,dataType:Re.Service,viewId:this.viewId,requestId:o});a=Ue(a,u);break}default:break}a?this.thread._post({sp:[{type:le.BoundingBox,scenePath:r,rect:a,viewId:this.viewId,requestId:o}]}):this.thread._post({sp:[{type:le.BoundingBox,scenePath:r,rect:{x:0,y:0,w:0,h:0},viewId:this.viewId,viewGeneration:this.thread.viewGeneration,requestId:o}]})}catch(a){this.reportRequestFailure("bounding-box",e,a,"compute")}}}const iMe="WEBGL_PROGRAM_UNAVAILABLE";var Qu=(s=>(s.Full="full",s.Sub="sub",s))(Qu||{});function sMe(s,t){const e=s==null?void 0:s.canvas,r=t.width,n=t.height,i=e==null?void 0:e.width,o=e==null?void 0:e.height;if(!Number.isFinite(r)||!Number.isFinite(n)||r<=0||n<=0||typeof i!="number"||typeof o!="number"||!Number.isFinite(i)||!Number.isFinite(o)||i<=0||o<=0||r!==i||n!==o){try{t.close()}catch{}throw new Error(`FullLayer ImageBitmap size mismatch: bitmap=${r}x${n}; layer=${i??"unavailable"}x${o??"unavailable"}`)}}function oMe(s,t,e){const r=[],n=new Map;for(const i of s){if(!i.rect)continue;const o=mMe(lt(i.rect),t,e);if(!o)continue;i.rect=o;const a=r.push(i)-1;if(i.drawCanvas!==_e.Bg||o.w<=0||o.h<=0)continue;const l=n.get(i.drawCanvas)||{rect:o,lastIndex:a,workIds:new Set,eraseTxnIds:new Set};l.rect=Ue(l.rect,o),l.lastIndex=a;for(const u of i.renderWorkIds||[])l.workIds.add(u);i.workId!==void 0&&l.workIds.add(i.workId.toString());for(const u of i.renderEraseTxnIds||[])l.eraseTxnIds.add(u);i.eraseTxnId!==void 0&&l.eraseTxnIds.add(i.eraseTxnId),n.set(i.drawCanvas,l)}return r.filter((i,o)=>{if(i.drawCanvas!==_e.Bg)return!0;const a=n.get(i.drawCanvas);return!a||a.lastIndex!==o?!1:(i.rect=a.rect,i.renderWorkIds=a.workIds.size?[...a.workIds]:void 0,i.renderEraseTxnIds=a.eraseTxnIds.size?[...a.eraseTxnIds]:void 0,!0)})}class aMe extends Tve{constructor(e,r,n){super(e,r,"sub");x(this,"type","sub");x(this,"_post");x(this,"topLayer");x(this,"serviceWork");x(this,"localWork");x(this,"topLayerWork");x(this,"snapshotWork");x(this,"fullLayerFrameSequence",0);this._post=n;const i=He.bufferSize.sub;this.topLayer=r.isUseSimple?void 0:this.createLayer("topLayer",this.scene,{...r.layerOpt,bufferSize:i,contextType:"2d"});const o={thread:this,viewId:this.viewId,vNodes:this.vNodes,fullLayer:this.fullLayer,topLayer:this.topLayer,isUseSimple:r.isUseSimple};this.localWork=new tMe(o),r.isUseSimple||(this.topLayerWork=new rMe(o)),this.snapshotWork=new nMe({...o,createScene:this.createScene.bind(this),createLayer:this.createLayer.bind(this)}),this.vNodes.init(this.fullLayer)}async combinePost(e){var a,c,l;const{render:r,...n}=this.combinePostData();let i;if(r!=null&&r.length){const u=[];for(const h of oMe(r,this.scene,this.dpr))if(h.rect){if(h.drawCanvas&&h.rect&&h.rect.w>0&&h.rect.h>0)try{const d=h.drawCanvas===_e.Bg,f=d?(a=this.getLayer(h.drawCanvas))==null?void 0:a.parent:void 0,g=d?this.transferLayerToImageBitmap(h.drawCanvas):await this.getRectImageBitmap(h);if(d&&sMe(f,g),!this.trackCombinePostTransfer(e,g))return;h.imageBitmap=g,d&&(h.isFullFrameImageBitmap=!0,h.viewGeneration=this.viewGeneration,h.frameSequence=++this.fullLayerFrameSequence,h.taskId=e,h.rect=this.getSceneRect()),i||(i=[]),i.push(g)}catch(d){throw new Cd(d,{business:"combine-post",stage:"transfer-layer-image-bitmap"})}u.push(h)}n.render=u}const o=(c=n.sp)==null?void 0:c.filter(u=>u.type!==le.None||u.isLockSentEventCursor||u.needUndoTicker||u.collectUndoTicker||u.eraseTxnPhase);o!=null&&o.length?n.sp=o.map(u=>({...u,viewId:u.viewId||this.viewId,viewGeneration:u.viewGeneration??this.viewGeneration})):delete n.sp,n.consumeCount===void 0&&delete n.consumeCount,n.subWorkerDrawCount===void 0&&delete n.subWorkerDrawCount,this.isCombinePostTaskActive(e)&&(o!=null&&o.length||n.consumeCount||n.subWorkerDrawCount||(l=n==null?void 0:n.render)!=null&&l.length)&&(this._post(n,i),this.commitCombinePostTransfers(e))}async on(e){var l,u;const{msgType:r,toolsType:n,opt:i,dataType:o,workState:a,isLockSentEventCursor:c}=e;switch(r){case le.UpdateTools:{if(n&&((l=this.topLayerWork)!=null&&l.canUseTopLayer(n))&&i){const h={toolsType:n,toolsOpt:i};this.topLayerWork.setToolsOpt(h);return}break}case le.CreateWork:{this.createLocalWork(e);return}case le.DrawWork:{a===he.Done&&o===Re.Local?(await this.consumeDrawAll(o,e),n===Q.LaserPen&&c&&this.post({sp:[{type:le.None,isLockSentEventCursor:c}]})):await this.consumeDraw(o,e);return}case le.RemoveNode:{await this.removeNode(e);return}case le.FullWork:{n&&((u=this.topLayerWork)!=null&&u.canUseTopLayer(n))?await this.consumeDrawAll(o,e):o===Re.Local&&e.clearPreviewLocalWork&&e.workId&&await this.localWork.consumeDrawAll({...e,msgType:le.DrawWork,workState:he.Done});return}case le.Snapshot:{this.snapshotWork.createSnapshotFullLayer(this.opt,{...this.opt.layerOpt,bufferSize:this.viewId===Fe?6e3:3e3,contextType:"2d"}),await this.snapshotWork.getSnapshot(e),this.snapshotWork.destroySnapshotFullLayer();return}case le.BoundingBox:{this.snapshotWork.createSnapshotFullLayer(this.opt,{...this.opt.layerOpt,bufferSize:this.viewId===Fe?6e3:3e3,contextType:"2d"}),await this.snapshotWork.getBoundingRect(e),this.snapshotWork.destroySnapshotFullLayer();return}}await super.on(e)}createLocalWork(e){var o;const{workId:r,toolsType:n,opt:i}=e;if(n&&((o=this.topLayerWork)!=null&&o.canUseTopLayer(n))&&r&&i){this.topLayerWork.getToolsOpt()||this.topLayerWork.setToolsOpt({toolsType:n,toolsOpt:i}),this.topLayerWork.setWorkOptions(r.toString(),i);return}n&&super.createLocalWork(e)}async removeNode(e){const{dataType:r}=e;r===Re.Local&&await this.localWork.removeWork(e)}getLayer(e){switch(e){case _e.TopFloat:return this.topLayer||this.fullLayer;default:return this.fullLayer}}getOffscreen(e){var n;return((n=this.getLayer(e))==null?void 0:n.parent).canvas}async consumeDraw(e,r){var o;const{workId:n,toolsType:i}=r;if(n){if(i&&((o=this.topLayerWork)!=null&&o.canUseTopLayer(i))){e===Re.Local&&(this.topLayerWork.getWorkShape(n.toString())||this.createLocalWork(r)),this.topLayerWork.consumeDraw(r);return}i&&(this.localWork.getWorkShape(n.toString())||this.createLocalWork(r),await this.localWork.consumeDraw(r));return}}async consumeDrawAll(e,r){var a;const{workId:n,toolsType:i,dataType:o}=r;if(n){const c=n.toString();if(i&&((a=this.topLayerWork)!=null&&a.canUseTopLayer(i))){o===Re.Local&&(this.topLayerWork.getWorkShape(c)||this.createLocalWork(r)),this.topLayerWork.consumeDrawAll(r);return}i&&(this.localWork.getWorkShape(c)||super.createLocalWork(r),await this.localWork.consumeDrawAll(r));return}}async clearAll(){this.vNodes.clear(),super.clearAll(),this.topLayer&&(this.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),hr(this.topLayer,this.topLayer.parent)),await this.post({render:[{isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId}],sp:[{type:le.Clear}]})}async getRectImageBitmap(e,r){const{rect:n,drawCanvas:i}=e,o=Math.floor(n.x*this.dpr),a=Math.floor(n.y*this.dpr),c=Math.max(1,Math.floor(n.w*this.dpr)),l=Math.max(1,Math.floor(n.h*this.dpr));return await createImageBitmap(this.getOffscreen(i),o,a,c,l,r)}updateLayer(e){const{width:r,height:n}=e;super.updateLayer(e),this.topLayer&&(this.topLayer.parent.setAttribute("width",r),this.topLayer.parent.setAttribute("height",n),this.topLayer.setAttribute("size",[r,n]),this.topLayer.setAttribute("pos",[r*.5,n*.5]))}async updateDpr(e){super.updateDpr(e);const r=this.topLayerWork&&!!this.topLayerWork.localWorkShapes.size||!1,n=!!this.localWork.getWorkShapes().size,i=[];n&&i.push({isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}),r&&i.push({isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId}),i.length&&await this.post({render:i})}async updateCamera(e,r){var o;if(r!=null&&r.aborted)return;const n=[],{cameraOpt:i}=e;if(i&&!In(this.cameraOpt,i)){const a=this.topLayerWork&&!!this.topLayerWork.localWorkShapes.size||!1,c=!!this.localWork.getWorkShapes().size;if(c&&this.localWork.workShapesDone(),this.setCameraOpt(i),c&&n.push({isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}),a&&this.topLayerWork){n.push({isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId});for(const[l,u]of this.topLayerWork.localWorkShapes.entries()||[])if(u.totalRect){let h;(o=this.topLayer)==null||o.getElementsByName(l.toString()).forEach(d=>{const f=d.getBoundingClientRect(),g=Sn({x:f.x,y:f.y,w:f.width,h:f.height});h=Ue(h,g)}),u.totalRect=h,this.topLayerWork.localWorkShapes.set(l,u)}}if(n.length){const l=this.post({render:n});if(r&&!await $0(r,l,"update-camera"))return;r||await l}if(r!=null&&r.aborted)return}}setCameraOpt(e,r){var l,u;this.cameraOpt=e;const{scale:n,centerX:i,centerY:o,width:a,height:c}=e;(a!==this.scene.width||c!==this.scene.height)&&this.updateScene(this.scene,{width:a,height:c}),r?(r.setAttribute("scale",[n,n]),r.setAttribute("translate",[-i,-o])):(this.fullLayer.setAttribute("scale",[n,n]),this.fullLayer.setAttribute("translate",[-i,-o]),(l=this.topLayer)==null||l.setAttribute("scale",[n,n]),(u=this.topLayer)==null||u.setAttribute("translate",[-i,-o]))}}class Js extends xe{constructor(e){super(e);x(this,"canRotate",!0);x(this,"scaleType",Ye.all);x(this,"toolsType",Q.Image);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");this.workOptions=e.toolsOpt,this.scaleType=Js.getScaleType(this.workOptions)}static normalizeStorageData(e){return xe.normalizeStorageData(e)}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}draw(e){const{layer:r,workId:n,replaceId:i,imageBitmap:o}=e,{centerX:a,centerY:c,width:l,height:u,rotate:h,zIndex:d,eraserlines:f,eraserFaces:g,doingLines:y}=this.workOptions,S=new dt({anchor:[.5,.5],pos:[a,c],name:n,size:[l,u],zIndex:d,rotate:h}),b={anchor:[.5,.5],pos:[0,0],size:[l,u],texture:o};o||(b.bgcolor="rgba(0,0,0,0.3)");const C=new xc(b);S.append(C),(f||g||y)&&this.drawEraserlines({group:S,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:[a,c],layer:r}),this.replace(r,i||n,S);const N=S.getBoundingClientRect();if(N)return{x:Math.floor(N.x-xe.SafeBorderPadding),y:Math.floor(N.y-xe.SafeBorderPadding),w:Math.floor(N.width+xe.SafeBorderPadding*2),h:Math.floor(N.height+xe.SafeBorderPadding*2)}}consumeService(){}async consumeServiceAsync(e){var h,d,f,g;const{isFullWork:r,replaceId:n,worker:i,requestId:o}=e,{src:a,uuid:c}=this.workOptions,l=((h=this.workId)==null?void 0:h.toString())||c,u=r?this.fullLayer:this.drawLayer||this.fullLayer;if(a){const y=await i.loadImageBitMap({toolsType:this.toolsType,opt:this.workOptions,workId:l,requestId:o,isSubWorker:i instanceof aMe});if(y){const S=this.draw({workId:l,layer:u,replaceId:n,imageBitmap:y});return this.oldRect=l&&((f=(d=this.vNodes)==null?void 0:d.get(l))==null?void 0:f.rect)||void 0,(g=this.vNodes)==null||g.setInfo(l,{rect:S,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:S&&xe.getCenterPos(S,u)}),S}}}clearTmpPoints(){this.tmpPoints.length=0}static getScaleType(e){const{uniformScale:r,rotate:n}=e;return r!==!1||n&&Math.abs(n)%90>0?Ye.proportional:Ye.all}static updateNodeOpt(e){const{node:r,opt:n,vNodes:i,targetNode:o}=e,{translate:a,originPoint:c,scenePoint:l,scale:u,angle:h,isLocked:d,zIndex:f,strokeColor:g}=n,y=o&&lt(o)||i.get(r.name);if(!y)return;const S=r.parent;if(S){if(g&&(y.opt.strokeColor=g),gt(f)&&(r.setAttribute("zIndex",f),y.opt.zIndex=f),ni(d)&&(y.opt.locked=d),c&&l&&u&&a){const{centerX:b,centerY:C,width:N,height:T,uniformScale:p}=y.opt,m=p!==!1?[u[0],u[0]]:u,v=[b,C],M=[b,C];xd(M,l,m,a);const R=[M[0]-v[0],M[1]-v[1]];if(y.centerPos=[y.centerPos[0]+R[0],y.centerPos[1]+R[1]],y.opt.width=Math.round(N*m[0]),y.opt.height=Math.round(T*m[1]),y.opt.centerX=M[0],y.opt.centerY=M[1],y.opt.eraserlines)for(const E of y.opt.eraserlines){const{op:P,thickness:k}=E;E.thickness=Math.round(k*Math.max(u[0],u[1]));for(let O=0;O<P.length;O++)Sa(P[O],l,u,a)}}else if(a){if(y.opt.centerX=y.opt.centerX+a[0],y.opt.centerY=y.opt.centerY+a[1],y.centerPos=[y.centerPos[0]+a[0],y.centerPos[1]+a[1]],y.opt.eraserlines)for(const b of y.opt.eraserlines){const{op:C}=b;for(let N=0;N<C.length;N++){const T=C[N].map((p,m)=>m%2?p+a[1]:p+a[0]);b.op[N]=T}}}else if(gt(h))if(y.opt.rotate=h,y.scaleType=Js.getScaleType(y.opt),o){const b=Ed(y.rect,h);y.rect=b}else{const b=xe.getRectFromLayer(S,r.name);y.rect=b||y.rect}return y&&i.setInfo(r.name,y),y==null?void 0:y.rect}}}function Ue(s,t){if(s&&t){const e=Math.min(s.x,t.x),r=Math.min(s.y,t.y),n=Math.max(s.x+s.w,t.x+t.w),i=Math.max(s.y+s.h,t.y+t.h),o=n-e,a=i-r;return{x:e,y:r,w:o,h:a}}return t||s}function bd(s,t){if(s&&t){const e=Math.min(s.originX,t.originX),r=Math.min(s.originY,t.originY),n=Math.max(s.originX+s.width,t.originX+t.width),i=Math.max(s.originY+s.height,t.originY+t.height),o=n-e,a=i-r;return{originX:e,originY:r,width:o,height:a}}return t||s}function it(s,t=0){const e={x:0,y:0,w:0,h:0};let r=1/0,n=1/0,i=-1/0,o=-1/0;return s.forEach(a=>{const[c,l]=a.XY;r=Math.min(r,c-t),n=Math.min(n,l-t),i=Math.max(i,c+t),o=Math.max(o,l+t)}),e.x=r,e.y=n,e.w=i-r,e.h=o-n,e}function Ya(s,t){return!(s.x+s.w<t.x||s.x>t.x+t.w||s.y+s.h<t.y||s.y>t.y+t.h)}function Sn(s,t=10){return{x:Math.floor(s.x-t),y:Math.floor(s.y-t),w:Math.ceil(s.w+t*2),h:Math.ceil(s.h+t*2)}}function _s(s,t){return{x:s.x+t[0],y:s.y+t[1],w:s.w,h:s.h}}function cMe(s,t){const e=new fe(s.x,s.y),r=new fe(s.x+s.w,s.y),n=new fe(s.x+s.w,s.y+s.h),i=new fe(s.x,s.y+s.h),o=new fe(s.x+s.w/2,s.y+s.h/2),a=Math.PI*t/180,c=fe.RotWith(e,o,a),l=fe.RotWith(r,o,a),u=fe.RotWith(n,o,a),h=fe.RotWith(i,o,a);return[c,l,u,h]}function Ed(s,t){const e=cMe(s,t);return it(e)}function tM(s,t,e){const r=new fe(s.x,s.y),n=new fe(s.x+s.w,s.y),i=new fe(s.x+s.w,s.y+s.h),o=new fe(s.x,s.y+s.h),a=new fe(e[0],e[1]),c=new fe(t[0],t[1]),l=fe.ScaleWOrigin(r,c,a),u=fe.ScaleWOrigin(n,c,a),h=fe.ScaleWOrigin(i,c,a),d=fe.ScaleWOrigin(o,c,a);return it([l,u,h,d])}function lMe(s,t,e){const r=new fe(t[0],t[1]);for(let n=0;n<s.length;n+=3){const i=new fe(s[n],s[n+1]),o=Math.PI*e/180,a=fe.RotWith(i,r,o);s[n]=a.x,s[n+1]=a.y}}function Hp(s,t,e){const r=new fe(t[0],t[1]);for(let n=0;n<s.length;n+=2){const i=new fe(s[n],s[n+1]),o=Math.PI*e/180,a=fe.RotWith(i,r,o);s[n]=a.x,s[n+1]=a.y}}function xd(s,t,e,r=[0,0]){const n=new fe(t[0],t[1]);for(let i=0;i<s.length;i+=3){const o=new fe(s[i],s[i+1]),a=new fe(e[0],e[1]),c=fe.ScaleWOrigin(o,a,n);s[i]=c.x+r[0],s[i+1]=c.y+r[1]}}function Sa(s,t,e,r=[0,0]){const n=new fe(t[0],t[1]);for(let i=0;i<s.length;i+=2){const o=new fe(s[i],s[i+1]),a=new fe(e[0],e[1]),c=fe.ScaleWOrigin(o,a,n);s[i]=c.x+r[0],s[i+1]=c.y+r[1]}}function rM(s,t){return s[0]>=t.x&&s[0]<=t.x+t.w&&s[1]>=t.y&&s[1]<=t.y+t.h}function nM(s,t){const e=s<=t?1:s/t,r=t<=s?1:t/s;return[e,r]}function uMe(s){for(const t of s)if(isNaN(t)||t===1/0||t===-1/0)return!1;return!0}function hMe(s){return s!==Math.floor(s)}function dMe(s){const t=s.toString();return t.indexOf(".")!==-1?t.split(".")[1].length:0}function fMe(s,t){for(;t!==0;)[s,t]=[t,s%t];return s}const gMe=s=>{if(s.tagName==="GROUP"){const t=Object.getOwnPropertySymbols(s).find(e=>e.toString()==="Symbol(sealed)");if(t&&s[t])return!0}return!1},dr=(s,t)=>{if(s.mesh&&s.mesh.texture&&s.name==="eraserTexture"){const e=s.mesh.texture.image;t.deleteTexture(e)}else if(s.tagName==="GROUP"&&s&&s.children)for(const e of s.children)dr(e,t)},hr=(s,t)=>{dr(s,t),s.removeAllChildren()},pMe=(s,t,e)=>{const r=e.parent;if(t){const n=t.children;if(n){for(const i of n)if(dr(i,r),i.tagName==="GROUP")for(const o of i.children)dr(o,r)}}t.parent.replaceChild(s,t)},mMe=(s,t,e)=>{if(s.w+s.x<=0||s.h+s.y<=0||s.w<=0||s.h<=0)return;const r=t.width,n=t.height,i={x:Math.floor(Math.max(0,s.x)),y:Math.floor(Math.max(0,s.y)),w:Math.floor(Math.min(r,s.w)),h:Math.floor(Math.min(n,s.h))};if(i.x+i.w>r&&(i.w=Math.floor(r-i.x)),i.y+i.h>n&&(i.h=Math.floor(n-i.y)),hMe(e)){const o=dMe(e),a=Math.pow(10,o),c=fMe(a,e*a),l=i.x%c,u=i.x-l;u>=0?(i.x=u,i.w=i.w+l):(i.x=0,i.w=i.w+l-u);const h=i.y%c,d=i.y-h;d>=0?(i.y=d,i.h=i.h+h):(i.y=0,i.h=i.h+h-d)}return i};function Pi(s){return`${Ga(s.x)},${Ga(s.y)} `}function Di(s,t){return`${Ga((s.x+t.x)/2)},${Ga((s.y+t.y)/2)} `}function Ga(s){return+s.toFixed(4)}const Nr=async(s,t,e=!1)=>{let r,n;return new Promise(function(i){if(e&&requestIdleCallback)requestIdleCallback(()=>{i(1)},{timeout:t});else{if(typeof window.requestIdleCallback=="function"){const o=typeof t=="number"&&!isNaN(t)&&t>0?t:0;n=window.requestIdleCallback(()=>{clearTimeout(r),i(1)},{timeout:o})}r=setTimeout(()=>{n&&window.cancelIdleCallback(n),i(1)},t||0)}}).then(function(){s()}).catch(function(){s()})},Zi=s=>Math.max(1,(window.devicePixelRatio||1)/1),Uc=(s,t)=>s.x+s.w<t.x||s.x>t.x+t.w||s.y+s.h<t.y||s.y>t.y+t.h?on.outside:s.x>=t.x&&s.y>=t.y&&s.x+s.w<=t.x+t.w&&s.y+s.h<=t.y+t.h?on.inside:on.intersect;function yMe(s){let t=0;for(let e=0;e<s.length;e++){const r=s.charCodeAt(e);r>=1&&r<=126||65376<=r&&r<=65439?t++:t+=2}return t}function vMe(s){if(!s||typeof s!="string")return!1;const t=s.trim();if(!t)return!1;const e=[/^\s*#{1,6}\s+.+/m,/^\s*[-*+]\s+.+/m,/^\s*\d+\.\s+.+/m,/\[([^\]]+)\]\(([^)]+)\)/,/\[([^\]]+)\]\[([^\]]+)\]/,/```[\s\S]*?```/,/`[^`]+`/,/^\s*\|.+\|/m,/!\[([^\]]*)\]\(([^)]+)\)/,/\*\*[^*]+\*\*/,/__[^_]+__/,/\*[^*]+\*/,/_[^_]+_/,/~~[^~]+~~/,/==[^=]+==/,/^\s*[-*+]\s+\[[ xX]\]\s+.+/m,/^\s*>\s+.+/m,/^\s*[-*]{3,}\s*$/m];let r=0;for(const o of e)o.test(t)&&r++;const i=[/^\s*#{1,6}\s+/m,/^\s*[-*+]\s+/m,/^\s*\d+\.\s+/m,/```[\s\S]*?```/,/^\s*\|.+\|/m].some(o=>o.test(t));return r>=2||i}class MMe{constructor(t,e){x(this,"plugin");x(this,"uid");x(this,"control");this.control=t,this.plugin=e,this.uid=e.displayer.uid}getNamespaceData(){var t;return la((t=this.plugin)==null?void 0:t.attributes[this.namespace])||{}}getAuthSpaceData(){var t;return la((t=this.plugin)==null?void 0:t.attributes[this.authSpace])||{}}getGlobalUndoRedoStackData(){var t;return la((t=this.plugin)==null?void 0:t.attributes[this.globalUndoRedoStackSpace])||{}}getUidFromKey(t){return t.split(Bt).length===2&&t.split(Bt)[0]||this.uid}isLocalId(t){return t.split(Bt).length===1}getLocalId(t){return t.split(Bt)[1]}isSelector(t){return this.getLocalId(t)===Le}}const wMe=new Set([Te.TranslateNode,Te.ScaleNode,Te.RotateNode,Te.SetPoint,Te.SetColorNode]),Vt=class Vt extends MMe{constructor(e,r,n){super(e,r);x(this,"namespace");x(this,"authSpace");x(this,"globalUndoRedoStackSpace");x(this,"serviceStorage",{});x(this,"storage",{});x(this,"authStorage",{});x(this,"globalUndoRedoStackStorage",{});x(this,"stateDisposer");x(this,"authDisposer");x(this,"asyncClockState",!1);x(this,"pendingSyncViews",new Set);x(this,"pendingSyncStorage");x(this,"limitNums",new Map);x(this,"destroyed",!1);x(this,"storageRevision",0);x(this,"viewStorageRevisions",new Map);x(this,"sceneStorageRevisions",new Map);x(this,"discardedSyncViews",new Set);x(this,"syncInterval");x(this,"limitComponents",ve.debounce((e,r)=>{var o,a,c,l,u,h,d,f;const n=((a=(o=this.storage)==null?void 0:o[e])==null?void 0:a[r])&&Object.keys(this.storage[e][r]).length||0;if(n===0)return;let i=this.limitNums.get(`${e}/${r}`);if(!i){const g=this.getLimitNum(n);this.limitNums.set(`${e}/${r}`,g),i=g}if(i>0&&n>=i){const g=Vt.componentsLimits.indexOf(i),y=g>=0&&g<Vt.componentsLimits.length-1;if((u=(l=(c=this.control.room)==null?void 0:c.callbacks)==null?void 0:l.listeners)!=null&&u.map.onObjectsLimit&&((d=(h=this.control.room)==null?void 0:h.callbacks)==null||d.dispatch("onObjectsLimit",b=>b(i,y))),!y){this.Logger.error(`[Appliance]: exceeds the limit of ${i} components, current: ${n}`),(f=this.control.room)==null||f.disconnect().then(()=>{var b,C,N,T,p;(N=(C=(b=this.control.room)==null?void 0:b.callbacks)==null?void 0:C.listeners)!=null&&N.map.onKickedWithReason&&(this.Logger.info("[Appliance]: onKickedWithReason callback is called"),(p=(T=this.control.room)==null?void 0:T.callbacks)==null||p.dispatch("onKickedWithReason",m=>m("kickByAdmin")))});return}console.warn(`exceeds the limit of ${i} components, current: ${n}`);const S=y?Vt.componentsLimits[g+1]:0;this.limitNums.set(`${e}/${r}`,S)}},2e3,{maxWait:5e3}));x(this,"clearLimitComponents",(e,r)=>{if(r)this.limitNums.delete(`${e}/${r}`);else for(const n of this.limitNums.keys())`${e}/`.indexOf(n)===0&&this.limitNums.delete(n)});this.syncInterval=n,this.namespace=Vt.namespace,this.authSpace=Vt.authSpace,this.globalUndoRedoStackSpace=Vt.globalUndoRedoStackSpace,this.serviceStorage=this.getNamespaceData(),this.storage=ve.cloneDeep(this.serviceStorage),this.authStorage=this.getAuthSpaceData(),this.globalUndoRedoStackStorage={},this.getLimitNums()}get Logger(){return this.control.logger}discardViewPendingSync(e){e&&(this.discardedSyncViews.add(e),this.pendingSyncViews.delete(e))}restoreViewPendingSync(e){e&&this.discardedSyncViews.delete(e)}isViewPendingSyncDiscarded(e){return this.discardedSyncViews.has(e)}canRunSync(e){return!this.destroyed&&(!e||!this.discardedSyncViews.has(e))}getSceneRevisionKey(e,r){return`${e}\0${r}`}getSceneDiffKey(e,r){return JSON.stringify([e,r])}getDataDiffKey(e,r,n){return JSON.stringify([e,r,n])}bumpStorageRevision(e,r){this.storageRevision+=1,this.viewStorageRevisions.set(e,this.storageRevision),r!==void 0&&this.sceneStorageRevisions.set(this.getSceneRevisionKey(e,r),this.storageRevision)}filterDiscardedViews(e){if(!this.discardedSyncViews.size)return e;const r={};for(const[n,i]of Object.entries(e))this.discardedSyncViews.has(n)||(r[n]=i);return r}hasId(e,r,n){const i=this.getLocalId(n)?this.transformKey(n):n;return!!(this.storage[e]&&this.storage[e][r]&&this.storage[e][r][i])}getLimitNum(e){return e>=Vt.componentsLimits[0]?Vt.componentsLimits[1]:Vt.componentsLimits[0]}getLimitNums(){for(const[e,r]of Object.entries(this.storage))if(e&&r){for(const[n,i]of Object.entries(r))if(n&&i){const o=this.getLimitNum(Object.keys(i).length);this.limitNums.set(`${e}/${n}`,o)}}}getViewIdBySecenPath(e){const r=this.getNamespaceData();for(const[n,i]of Object.entries(r))if(i){for(const o of Object.keys(i))if(o===e)return n}}getScenePathData(e){const r=this.getNamespaceData();for(const n of Object.values(r))if(n){for(const i of Object.keys(n))if(i===e)return ve.cloneDeep(n[i])}}hasTargetDataByViewId(e,r){const n=this.getNamespaceData();if(n&&n[e]){for(const i of Object.values(n[e]))for(const o of Object.keys(i))if(o===r)return!0}}getTargetDataByViewId(e,r){const n=this.getNamespaceData();let i,o;if(n&&n[e])for(const[a,c]of Object.entries(n[e]))for(const l of Object.keys(c))l===r&&(i=ve.cloneDeep(c[l]),o=a);return{data:i,scenePath:o}}getStorageData(e,r){var n;return(n=this.storage[e])!=null&&n[r]?ve.cloneDeep(this.storage[e][r]):void 0}getServiceStorageViewSnapshot(e){return this.storage[e]?ve.cloneDeep(this.storage[e]):{}}readViewStorageSnapshot(e){return{revision:this.viewStorageRevisions.get(e)||0,storage:this.getServiceStorageViewSnapshot(e)}}readSceneStorageSnapshot(e,r){return{revision:this.sceneStorageRevisions.get(this.getSceneRevisionKey(e,r))||0,storage:this.getStorageData(e,r)||{}}}hasSelector(e,r){const n=this.storage&&this.storage[e]&&this.storage[e][r];return!!(n&&Object.keys(n).find(i=>this.isOwn(i)&&this.getLocalId(i)===Le))}hasIncludeSelector(e,r,n){for(const i of Object.keys(this.storage))if(!(r&&i!==r)){for(const o of Object.keys(this.storage[i]))if(!(n&&o!==n)){for(const a of Object.keys(this.storage[i][o]))if(this.getLocalId(a)===Le){const c=this.storage[i][o][a],l=this.isLocalId(e)?this.transformKey(e):e;if(c&&c.selectIds&&c.selectIds.length&&c.selectIds.includes(l))return!0}}}return!1}addStorageStateListener(e){this.stateDisposer=Gc(async()=>{var c,l,u,h,d,f,g;const r=this.getNamespaceData(),{diffView:n,diffScenePath:i,diffData:o}=this.diffFunByView(this.serviceStorage,r);this.serviceStorage=r;const a={};if(Object.keys(n).length>0){for(const[y,S]of Object.entries(n))if(S&&!ve.isEqual((c=this.storage)==null?void 0:c[y],S.newValue)){const b=new Set([...Object.keys(((l=this.storage)==null?void 0:l[y])||{}),...Object.keys(S.newValue||{})]);a.diffView||(a.diffView={}),a.diffView[y]=S,this.storage||(this.storage={}),S.newValue===void 0?delete this.storage[y]:this.storage[y]=ve.cloneDeep(S.newValue),b.size?b.forEach(C=>this.bumpStorageRevision(y,C)):this.bumpStorageRevision(y)}}if(Object.keys(i).length>0){for(const[y,S]of Object.entries(i))if(S){const{viewId:b,newValue:C}=S,N=S.scenePath??y;S&&!ve.isEqual((h=(u=this.storage)==null?void 0:u[b])==null?void 0:h[N],C)&&(a.diffScenePath||(a.diffScenePath={}),a.diffScenePath[y]=S,this.storage||(this.storage={}),this.storage[b]||(this.storage[b]={}),S.newValue===void 0?delete this.storage[b][N]:this.storage[b][N]=ve.cloneDeep(S.newValue),this.bumpStorageRevision(b,N))}}if(Object.keys(o).length>0){for(const[y,S]of Object.entries(o))if(S){const{viewId:b,scenePath:C,newValue:N}=S,T=S.storageKey??y;S&&!ve.isEqual((g=(f=(d=this.storage)==null?void 0:d[b])==null?void 0:f[C])==null?void 0:g[T],N)&&(a.diffData||(a.diffData={}),a.diffData[y]=S,this.storage||(this.storage={}),this.storage[b]||(this.storage[b]={}),this.storage[b][C]||(this.storage[b][C]={}),S.newValue===void 0?delete this.storage[b][C][T]:this.storage[b][C][T]=ve.cloneDeep(S.newValue),this.bumpStorageRevision(b,C))}}this.logServiceDiff(a),Object.keys(a).length>0&&e(a),this.control.worker.publicMsgEmitter.emit("syncStorageChange",this.serviceStorage)})}logServiceDiff(e){var r,n,i;for(const o of Object.keys(e.diffView||{}))this.control.isServiceSyncReady(o)&&this.control.syncLogger.append("serviceDiff",o,"",[{diffType:"view",viewId:o}]);for(const[o,a]of Object.entries(e.diffScenePath||{})){if(!a||!this.control.isServiceSyncReady(a.viewId))continue;const c=a.scenePath??o;this.control.syncLogger.append("serviceDiff",a.viewId,c,[{diffType:"scenePath",viewId:a.viewId,scenePath:c}])}for(const[o,a]of Object.entries(e.diffData||{})){if(!a||!this.control.isServiceSyncReady(a.viewId))continue;const c=a.storageKey??o;this.control.syncLogger.append("serviceDiff",a.viewId,a.scenePath,[{diffType:"data",viewId:a.viewId,scenePath:a.scenePath,key:c,type:(r=a.newValue)==null?void 0:r.type,toolsType:((n=a.newValue)==null?void 0:n.toolsType)??((i=a.oldValue)==null?void 0:i.toolsType)}])}}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,r){const n=at(e),i=at(r),o={},a={},c={};for(const l of i)if(!n.includes(l)||e[l]===void 0){o[l]={newValue:r[l],oldValue:void 0};continue}for(const l of n){if(ve.isEqual(e[l],r[l]))continue;if(!i.includes(l)||r[l]===void 0){o[l]={newValue:void 0,oldValue:e[l]};continue}const u=this.diffFunByScenePath(e[l],r[l],l);Object.assign(a,u.diffScenePath),Object.assign(c,u.diffData)}return{diffData:c,diffScenePath:a,diffView:o}}diffFunByScenePath(e,r,n){const i=at(e),o=at(r),a={},c={};for(const l of o)if(!i.includes(l)||e[l]===void 0){a[this.getSceneDiffKey(n,l)]={newValue:r[l],oldValue:void 0,viewId:n,scenePath:l};continue}for(const l of i){if(ve.isEqual(e[l],r[l]))continue;if(!o.includes(l)||r[l]===void 0){a[this.getSceneDiffKey(n,l)]={newValue:void 0,oldValue:e[l],viewId:n,scenePath:l};continue}const u=this.diffFunByKeys(e[l],r[l],l,n);Object.assign(c,u)}return{diffScenePath:a,diffData:c}}diffFunByKeys(e,r,n,i){const o=at(e),a=at(r),c={};for(const l of a)(!o.includes(l)||e[l]===void 0)&&(c[this.getDataDiffKey(i,n,l)]={oldValue:void 0,newValue:r[l],viewId:i,scenePath:n,storageKey:l});for(const l of o)if(!ve.isEqual(e[l],r[l])){if(!a.includes(l)||r[l]===void 0){c[this.getDataDiffKey(i,n,l)]={newValue:void 0,oldValue:e[l],viewId:i,scenePath:n,storageKey:l};continue}a.includes(l)&&(c[this.getDataDiffKey(i,n,l)]={oldValue:e[l],newValue:r[l],viewId:i,scenePath:n,storageKey:l})}return c}transformKey(e){return this.uid+Bt+e}isOwn(e){return e.split(Bt)[0]===this.uid}dispatch(e){var C,N,T;if(this.destroyed)return;const{type:r,workId:n,ops:i,index:o,opt:a,toolsType:c,removeIds:l,updateNodeOpt:u,op:h,selectIds:d,isSync:f,scenePath:g,viewId:y}=e;if(!y||r!==le.Clear&&!this.canRunSync(y))return;const S=Number(e.needUndoTicker??e.collectUndoTicker??void 0),b=p=>{S?this.control.internalMsgEmitter.emit("ackStorageUndoTicker",S,y,g,p,{requestId:e.requestId,emitEventType:e.emitEventType}):e.emitEventType===Te.TranslateNode||(e.emitEventType,Te.CopyNode)};switch(r){case le.Clear:const p={};if(g&&this.storage[y]&&this.storage[y][g])delete this.storage[y][g],this.setState(p,{isSync:f,viewId:y,scenePath:g});else if(this.storage[y]){const E=Object.keys(this.storage[y]);delete this.storage[y],E.length?E.forEach(P=>this.bumpStorageRevision(y,P)):this.bumpStorageRevision(y),this.runSyncService({isSync:f,viewId:y})}Nr(()=>{var E,P;this.canRunSync(y)&&((E=this.control.pluginManager)==null||E.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||(P=this.control.miniMapManager)==null||P.updateMiniMapCamera(y),this.clearLimitComponents(y,g))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"));break;case le.CreateWork:if(g&&n&&c&&a){const E=this.isLocalId(n.toString())?this.transformKey(n):n;this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:E.toString()}),this.updateValue(E.toString(),{type:le.CreateWork,workId:n,toolsType:c,opt:a},{isSync:f,viewId:y,scenePath:g,onApplied:()=>b(E.toString())})}break;case le.DrawWork:if(g&&n&&typeof o=="number"&&(h!=null&&h.length)){const E=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][E]||void 0;if(P!=null&&P.ops||(P==null?void 0:P.type)===le.FullWork)return;const k=o?((P==null?void 0:P.op)||[]).slice(0,o).concat(h):h||(P==null?void 0:P.op),O=c||(P==null?void 0:P.toolsType),B=a||(P==null?void 0:P.opt),D=u||(P==null?void 0:P.updateNodeOpt);n&&O&&B&&k&&(this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:E.toString()}),this.updateValue(E.toString(),{...P,type:le.DrawWork,workId:n,updateNodeOpt:D,toolsType:O,opt:B,op:k,index:o},{isSync:f,viewId:y,scenePath:g,onApplied:()=>b(E.toString())}))}break;case le.FullWork:if(g&&n){const E=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][E]||void 0,k=u||(P==null?void 0:P.updateNodeOpt),O=c||(P==null?void 0:P.toolsType),B=a||(P==null?void 0:P.opt),D=i||(P==null?void 0:P.ops);if(!P&&e.emitEventType!==void 0&&wMe.has(e.emitEventType)){b(E.toString());break}O&&B&&(this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:E.toString()}),this.updateValue(E.toString(),{type:le.FullWork,updateNodeOpt:k,workId:E,toolsType:O,opt:B,ops:D},{isSync:f,viewId:y,scenePath:g,onApplied:()=>{b(E.toString())}}),Nr(()=>{var A,L;this.canRunSync(y)&&((A=this.control.pluginManager)==null||A.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||(L=this.control.miniMapManager)==null||L.updateMiniMapCamera(y),this.limitComponents(y,g))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case le.RemoveNode:if(g&&(l!=null&&l.length)){const E=l.map(O=>this.isLocalId(O+"")?this.transformKey(O):O);let P=0;const k=(C=this.storage[y])==null?void 0:C[g];k&&(Object.keys(k).map(O=>{E!=null&&E.includes(O)&&(P++,this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.delRenderPageElementId({viewId:y,scenePath:g,elementId:O}),this.updateValue(O,void 0,{isSync:f,viewId:y,scenePath:g,onApplied:()=>b(O)}))}),(N=this.control.pluginManager)==null||N.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||Nr(()=>{var O;this.canRunSync(y)&&((O=this.control.miniMapManager)==null||O.updateMiniMapCamera(y))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"))),S&&P===0&&b()}break;case le.UpdateNode:if(g&&n&&(u||i||a)){const E=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][E]||void 0;if(P){if(u){const k={...u};delete k.matrixDelta,delete k.previewMatrix,P.updateNodeOpt=k}if((i||h)&&(P.ops=i,P.op=h),a){const k=Ba(Uu(P.opt,a));k.matrix=$t(k.matrix),delete k.matrixDelta,delete k.previewMatrix,P.opt=k}P.type=le.FullWork,this.updateValue(E.toString(),P,{isSync:f,viewId:y,scenePath:g,onApplied:()=>b(E.toString())}),this.control.isUseSimple||Nr(()=>{var k;this.canRunSync(y)&&((k=this.control.miniMapManager)==null||k.updateMiniMapCamera(y))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"))}}break;case le.Select:if(!g)return;let m;d!=null&&d.length&&(m=d.map(E=>this.isLocalId(E+"")?this.transformKey(E):E));const v=this.transformKey(Le);if(m&&!((T=this.storage[y])!=null&&T[g]))return;const M=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][v]||void 0,R=a||(M==null?void 0:M.opt);m&&this.checkOtherSelector(v,m,{isSync:f,viewId:y,scenePath:g}),this.updateValue(v,m&&{type:le.Select,toolsType:Q.Selector,opt:R,selectIds:m},{isSync:f,viewId:y,scenePath:g,onApplied:()=>b(v)});break}}checkOtherSelector(e,r,n){var c;const{viewId:i,scenePath:o}=n,a=(c=this.storage[i])==null?void 0:c[o];if(a){for(const l of Object.keys(a))if(l!==e&&this.getLocalId(l)===Le){const u=a[l];if(u&&u.selectIds){const h=u.selectIds.filter(d=>!r.includes(d));h.length>0&&(u.selectIds=h),this.updateValue(l,h.length&&u||void 0,n)}}}}setState(e,r){const{viewId:n,scenePath:i}=r,o=at(e);for(let a=0;a<o.length;a++){const c=o[a],l=e[c];typeof l<"u"?(this.storage[n]||(this.storage[n]={}),this.storage[n][i]||(this.storage[n][i]={}),this.storage[n][i][c]=l):delete this.storage[n][i][c]}this.bumpStorageRevision(n,i),this.runSyncService(r)}updateValue(e,r,n){var u,h,d,f;const{viewId:i,scenePath:o,storage:a}=n,c=a||this.storage,l=(h=(u=c[i])==null?void 0:u[o])==null?void 0:h[e];if(r&&typeof r=="object"&&this.uid&&(r={...r,lastOperator:n.preserveLastOperator?r.lastOperator:this.uid},r.toolsType===Q.Text&&r.opt)){const g={...r.opt};delete g.uid,r.opt=g}if(r===void 0){const g=(d=c[i])==null?void 0:d[o];g&&delete g[e]}else c[i]||(c[i]={}),c[i][o]||(c[i][o]={}),c[i][o][e]=r;c===this.storage&&!ve.isEqual(l,r)&&this.bumpStorageRevision(i,o),n.onApplied,(f=n.onApplied)==null||f.call(n),this.runSyncService(n)}updateExistingValue(e,r,n){var a;const i=(a=this.storage[n.viewId])==null?void 0:a[n.scenePath];if(!i)return!1;const o=Object.prototype.hasOwnProperty.call(i,e)||!this.isLocalId(e)?e:this.transformKey(e);return Object.prototype.hasOwnProperty.call(i,o)?(this.updateValue(o,r,n),!0):!1}runSyncService(e){if(this.canRunSync(e.viewId)){if(e.viewId&&this.pendingSyncViews.add(e.viewId),e.storage&&(this.pendingSyncStorage=e.storage),!this.control.renderControl.isWritable){this.Logger.error("[Appliance]: The current state is not writable and synchronization cannot be synchronized");return}if(e.isSync){this.pendingSyncViews.clear();const r=this.pendingSyncStorage||this.storage;this.pendingSyncStorage=void 0,this.syncSerivice({storage:r});return}this.asyncClockState||(this.asyncClockState=!0,Nr(()=>{if(this.asyncClockState=!1,this.destroyed)return;const r=[...this.pendingSyncViews].filter(i=>this.canRunSync(i));this.pendingSyncViews.clear();const n=this.filterDiscardedViews(this.pendingSyncStorage||this.storage);this.pendingSyncStorage=void 0,r.length&&this.syncSerivice({storage:n})},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}}syncSerivice(e={storage:this.storage}){if(this.destroyed)return;const{storage:r}=e,n=this.filterDiscardedViews(r||this.storage);this.logLocalSyncChanges(this.serviceStorage,n);const i=at(this.serviceStorage),o=at(n),a=new Map;for(const c of i){if(!o.includes(c)){a.set(c,void 0);continue}ve.isEqual(this.serviceStorage[c],n[c])||this.syncViewData(n,c)}for(const c of o)i.includes(c)||a.set(c,n[c]);if(a.size>=o.length||a.size>5&&o.length<20)this.syncStorageView(n);else for(const[c,l]of a.entries())this.syncUpdataView(n,c,l)}logLocalSyncChanges(e,r){const n=new Set([...at(e),...at(r)]);for(const i of n){const o=e[i]||{},a=r[i]||{},c=new Set([...at(o),...at(a)]);for(const l of c){const u=o[l]||{},h=a[l]||{},d=new Set([...at(u),...at(h)]),f=[];for(const g of d){const y=u[g],S=h[g];ve.isEqual(y,S)||f.push({key:g,type:S==null?void 0:S.type,toolsType:(S==null?void 0:S.toolsType)??(y==null?void 0:y.toolsType)})}this.control.syncLogger.append("localSync",i,l,f)}}}syncViewData(e,r){const n=at(this.serviceStorage[r]),i=at(e[r]),o=new Map;for(const a of n){if(!i.includes(a)){o.set(a,void 0);continue}ve.isEqual(this.serviceStorage[r][a],e[r][a])||this.syncScenePathData(e,r,a)}for(const a of i)n.includes(a)||o.set(a,e[r][a]);if(o.size>=i.length||o.size>5&&i.length<20)this.syncStorageScenePath(r,e[r]);else for(const[a,c]of o.entries())this.syncUpdataScenePath(e,r,a,c)}syncScenePathData(e,r,n){const i=at(this.serviceStorage[r][n]),o=at(e[r][n]),a=new Map;for(const c of i){if(!o.includes(c)){a.set(c,void 0);continue}ve.isEqual(this.serviceStorage[r][n][c],e[r][n][c])||a.set(c,e[r][n][c])}for(const c of o)i.includes(c)||a.set(c,e[r][n][c]);if(a.size>=o.length||a.size>5&&o.length<50)this.syncStorageKey(r,n,e[r][n]);else for(const[c,l]of a.entries())this.syncUpdataKey(e,r,n,c,l)}syncUpdataView(e,r,n){var o;Object.keys(this.serviceStorage).length?(o=this.plugin)==null||o.updateAttributes([this.namespace,r],n):this.syncStorageView(e)}syncStorageView(e){var r;(r=this.plugin)==null||r.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,r,n,i){var a;Object.keys(this.serviceStorage[r]).length?(a=this.plugin)==null||a.updateAttributes([this.namespace,r,n],i):this.syncStorageScenePath(r,e[r])}syncStorageScenePath(e,r){var n;(n=this.plugin)==null||n.updateAttributes([this.namespace,e],r)}syncUpdataKey(e,r,n,i,o){var c;Object.keys(this.serviceStorage[r][n]).length?(c=this.plugin)==null||c.updateAttributes([this.namespace,r,n,i],o):this.syncStorageKey(r,n,e[r][n])}syncStorageKey(e,r,n){var i;(i=this.plugin)==null||i.updateAttributes([this.namespace,e,r],n)}keyTransformWorkId(e){const r=e.split(Bt);return r.length===2?r[1]:e}destroy(){this.destroyed||(this.destroyed=!0,this.limitComponents.cancel(),this.pendingSyncViews.clear(),this.pendingSyncStorage=void 0,this.discardedSyncViews.clear(),this.removeStorageStateListener(),this.serviceStorage={},this.storage={},this.storageRevision=0,this.viewStorageRevisions.clear(),this.sceneStorageRevisions.clear(),this.removeAuthStateListener(),this.authStorage={},this.globalUndoRedoStackStorage={})}transformToSerializableUndoStackItemData(e){const{data:r,scenePath:n}=e,i={};for(const o of r)i[o.key]={dataType:o.dataType,data:o.data};return{data:i,scenePath:n}}dispatchUndoTicker(e){const{viewId:r,undoTickerId:n,data:i,syncType:o,operation:a}=e,c=a===wt.syncUndoStack?"undoStack":"redoStack",l=o==="delete"?void 0:this.transformToSerializableUndoStackItemData(i);if(this.plugin){if(o==="delete"){const u=this.globalUndoRedoStackStorage[r]&&this.globalUndoRedoStackStorage[r][c];if(!u)return;delete u[n],this.plugin.updateAttributes([this.globalUndoRedoStackSpace,r,c,n],void 0);return}if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,r]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,r,c]))this.globalUndoRedoStackStorage[r][c][n]=l,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,r,c,n],l);else{const u={[n]:l};this.globalUndoRedoStackStorage[r][c]=u,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,r,c],u)}else{const u={[c]:{[n]:l}};this.globalUndoRedoStackStorage[r]=u,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,r],u)}else{const u={[r]:{[c]:{[n]:l}}};this.globalUndoRedoStackStorage=u,this.plugin.updateAttributes(this.globalUndoRedoStackSpace,u)}}}addGlobalUndoRedoStackListener(e){this.authDisposer=Gc(async()=>{const r=this.getGlobalUndoRedoStackData();if(ve.isEqual(this.globalUndoRedoStackStorage,r))return;const n=this.diffGlobalUndoRedoStackFun(this.globalUndoRedoStackStorage,r);this.globalUndoRedoStackStorage=r,e(n)})}diffGlobalUndoRedoStackFun(e,r){const n=at(e),i=at(r),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:r[a],oldValue:void 0};continue}for(const a of n)if(!ve.isEqual(e[a],r[a])){if(!i.includes(a)||r[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:r[a],oldValue:e[a]}}return o}dispatchPageAuth(e,r=!0){var l,u,h,d,f,g,y,S,b,C,N,T,p,m,v,M,R,E,P,k,O,B,D,A,L,U,Y,q,ie,z,V,Z,$,ee,oe,ce,me,pe;const{operation:n,viewId:i,scenePath:o,pageId:a,pageData:c}=e;switch(n){case wt.addPage:{if(!i||!o||!a)return;const j=[this.authSpace];Object.keys(this.authStorage).length&&j.push("pageAuth");const F=this.authStorage.pageAuth||{};this.authStorage.pageAuth=F,Object.keys(F).length&&j.push(i),F[i]=F[i]||{},Object.keys(F[i]).length&&j.push(o),F[i][o]=F[i][o]||{render:(c==null?void 0:c.render)||"localSelf",pages:{}},Object.keys(F[i][o].pages).length&&j.push("pages",a);const J={};if(c!=null&&c.elementIds)for(const ae of c.elementIds.keys())J[ae]=!0;F[i][o].pages[a]=J,r&&(j.length===1?(l=this.plugin)==null||l.updateAttributes(j,ve.cloneDeep(this.authStorage)):j.length===2?(u=this.plugin)==null||u.updateAttributes(j,ve.cloneDeep(F)):j.length===3?(h=this.plugin)==null||h.updateAttributes(j,ve.cloneDeep(F[i])):j.length===4?(d=this.plugin)==null||d.updateAttributes(j,ve.cloneDeep(F[i][o])):(f=this.plugin)==null||f.updateAttributes(j,ve.cloneDeep(J)));return}case wt.renderPage:{if(!i||!o||!(c!=null&&c.render))return;this.authStorage.pageAuth&&this.authStorage.pageAuth[i]&&this.authStorage.pageAuth[i][o]&&c.render!==this.authStorage.pageAuth[i][o].render&&(this.authStorage.pageAuth[i][o].render=c.render,r&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"pageAuth",i,o,"render"],c.render)));return}case wt.deletePage:{if(!i||!o||!a)return;(N=(C=(b=(S=(y=this.authStorage)==null?void 0:y.pageAuth)==null?void 0:S[i])==null?void 0:b[o])==null?void 0:C.pages)!=null&&N[a]&&(delete this.authStorage.pageAuth[i][o].pages[a],r&&((T=this.plugin)==null||T.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a],void 0)));return}case wt.clearPage:{if(!i||!o||!a)return;(R=(M=(v=(m=(p=this.authStorage)==null?void 0:p.pageAuth)==null?void 0:m[i])==null?void 0:v[o])==null?void 0:M.pages)!=null&&R[a]&&(delete this.authStorage.pageAuth[i][o].pages[a],r&&((E=this.plugin)==null||E.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a],{})));return}case wt.addElement:{if(!i||!o||!a||!(c!=null&&c.elementId))return;(D=(B=(O=(k=(P=this.authStorage)==null?void 0:P.pageAuth)==null?void 0:k[i])==null?void 0:O[o])==null?void 0:B.pages)!=null&&D[a]&&(this.authStorage.pageAuth[i][o].pages[a][c.elementId]=!0,r&&((A=this.plugin)==null||A.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a,c.elementId],!0)));return}case wt.deleteElement:{if(!i||!o||!a||!(c!=null&&c.elementId))return;(z=(ie=(q=(Y=(U=(L=this.authStorage)==null?void 0:L.pageAuth)==null?void 0:U[i])==null?void 0:Y[o])==null?void 0:q.pages)==null?void 0:ie[a])!=null&&z[c.elementId]&&(delete this.authStorage.pageAuth[i][o].pages[a][c.elementId],r&&((V=this.plugin)==null||V.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a,c.elementId],void 0)));return}case wt.clearViewScenePath:{if(!i||!o)return;(ee=($=(Z=this.authStorage)==null?void 0:Z.pageAuth)==null?void 0:$[i])!=null&&ee[o]&&(delete this.authStorage.pageAuth[i][o],r&&((oe=this.plugin)==null||oe.updateAttributes([this.authSpace,"pageAuth",i,o],void 0)));return}case wt.clearView:{if(!i)return;(me=(ce=this.authStorage)==null?void 0:ce.pageAuth)!=null&&me[i]&&(delete this.authStorage.pageAuth[i],r&&((pe=this.plugin)==null||pe.updateAttributes([this.authSpace,"pageAuth",i],void 0)));return}}}dispatchRenderAuth(e,r=!0){var l,u,h,d,f,g,y,S,b,C,N,T,p,m,v,M,R,E,P,k;const{operation:n,viewId:i,uid:o,renderData:a,isClear:c}=e;if(i)switch(n){case wr.setAuth:{if(!a||a.render===void 0&&a.hide===void 0&&a.clear===void 0){this.authStorage.renderAuth&&this.authStorage.renderAuth[i]&&(delete this.authStorage.renderAuth[i],r&&((l=this.plugin)==null||l.updateAttributes([this.authSpace,"renderAuth",i],void 0)));return}const O=[this.authSpace];Object.keys(this.authStorage).length&&O.push("renderAuth");const B=this.authStorage.renderAuth||{};Object.keys(B).length&&O.push(i),B[i]={},this.authStorage.renderAuth=B;const{render:D,hide:A,clear:L}=a;if(D===!0)B[i].render=!0;else if(ve.isSet(D)){B[i].render={};for(const U of D.keys())B[i].render[U]=!0}if(A===!0)B[i].hide=!0;else if(ve.isSet(A)){B[i].hide={};for(const U of A.keys())B[i].hide[U]=!0}if(L===!0)B[i].clear=!0;else if(ve.isSet(L)){B[i].clear={};for(const U of L.keys())B[i].clear[U]=!0}r&&(O.length===1?(u=this.plugin)==null||u.updateAttributes(O,ve.cloneDeep(this.authStorage)):O.length===2?(h=this.plugin)==null||h.updateAttributes(O,ve.cloneDeep(B)):(d=this.plugin)==null||d.updateAttributes(O,ve.cloneDeep(B[i])));return}case wr.setShow:{if(!o)return;const O=[this.authSpace];Object.keys(this.authStorage).length&&O.push("renderAuth");const B=this.authStorage.renderAuth||{};Object.keys(B).length&&O.push(i),B[i]=B[i]||{},this.authStorage.renderAuth=B,Object.keys(B[i]).length&&O.push("render"),B[i].render=B[i].render||{},B[i].render!==!0&&(Object.keys(B[i].render).length&&O.push(o),B[i].render[o]=!0),B[i].hide!==!0&&((f=B[i].hide)!=null&&f[o])&&(delete B[i].hide[o],r&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"renderAuth",i,"hide",o],void 0))),r&&(O.length===1?(y=this.plugin)==null||y.updateAttributes(O,ve.cloneDeep(this.authStorage)):O.length===2?(S=this.plugin)==null||S.updateAttributes(O,ve.cloneDeep(B)):O.length===3?(b=this.plugin)==null||b.updateAttributes(O,ve.cloneDeep(B[i])):(C=this.plugin)==null||C.updateAttributes(O,!0));return}case wr.setHide:{if(!o)return;const O=[this.authSpace];Object.keys(this.authStorage).length&&O.push("renderAuth");const B=this.authStorage.renderAuth||{};Object.keys(B).length&&O.push(i),B[i]=B[i]||{},this.authStorage.renderAuth=B,Object.keys(B[i]).length&&O.push("hide"),B[i].hide=B[i].hide||{},B[i].hide!==!0&&(Object.keys(B[i].hide).length&&O.push(o),B[i].hide[o]=!0),B[i].render!==!0&&((N=B[i].render)!=null&&N[o])&&(delete B[i].render[o],r&&((T=this.plugin)==null||T.updateAttributes([this.authSpace,"renderAuth",i,"render",o],void 0))),r&&(O.length===1?(p=this.plugin)==null||p.updateAttributes(O,ve.cloneDeep(this.authStorage)):O.length===2?(m=this.plugin)==null||m.updateAttributes(O,ve.cloneDeep(B)):O.length===3?(v=this.plugin)==null||v.updateAttributes(O,ve.cloneDeep(B[i])):(M=this.plugin)==null||M.updateAttributes(O,!0));return}case wr.setClear:{if(!o)return;const O=[this.authSpace];Object.keys(this.authStorage).length&&O.push("renderAuth");const B=this.authStorage.renderAuth||{};Object.keys(B).length&&O.push(i),B[i]=B[i]||{},this.authStorage.renderAuth=B,Object.keys(B[i]).length&&O.push("clear"),B[i].clear=B[i].clear||{},B[i].clear!==!0&&(Object.keys(B[i].clear).length&&O.push(o),c?B[i].clear[o]=!0:delete B[i].clear[o]),r&&(O.length===1?(R=this.plugin)==null||R.updateAttributes(O,ve.cloneDeep(this.authStorage)):O.length===2?(E=this.plugin)==null||E.updateAttributes(O,ve.cloneDeep(B)):O.length===3?(P=this.plugin)==null||P.updateAttributes(O,ve.cloneDeep(B[i])):(k=this.plugin)==null||k.updateAttributes(O,c?!0:void 0));return}}}addAuthStateListener(e){this.authDisposer=Gc(async()=>{const r=this.getAuthSpaceData(),{renderAuth:n,pageAuth:i}=r;let o,a;ve.isEqual(n,this.authStorage.renderAuth)||(o=this.diffAuthFun(this.authStorage.renderAuth||{},n||{}),this.authStorage.renderAuth=n),ve.isEqual(i,this.authStorage.pageAuth)||(a=this.diffAuthPageFun(this.authStorage.pageAuth||{},i||{}),this.authStorage.pageAuth=i),(o||a)&&e(o,a)})}removeAuthStateListener(){this.authDisposer&&this.authDisposer()}diffAuthFun(e,r){const n=at(e),i=at(r),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:r[a],oldValue:void 0};continue}for(const a of n)if(!ve.isEqual(e[a],r[a])){if(!i.includes(a)||r[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:r[a],oldValue:e[a]}}return o}diffAuthPageFun(e,r){const n=at(e),i=at(r),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:r[a],oldValue:void 0};continue}for(const a of n)if(!ve.isEqual(e[a],r[a])){if(!i.includes(a)||r[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:r[a],oldValue:e[a]}}return o}};x(Vt,"namespace","PluginState"),x(Vt,"authSpace","PluginAuth"),x(Vt,"globalUndoRedoStackSpace","GlobalUndoRedoStack"),x(Vt,"componentsLimits",[500,1e3]);let en=Vt;var ir=(s=>(s[s.Draw=1]="Draw",s[s.Delete=2]="Delete",s[s.Update=3]="Update",s))(ir||{});class iM{constructor(){x(this,"state","pending");x(this,"waiters",new Set)}wait(t){return this.state==="ready"?Promise.resolve("ready"):this.state==="cancelled"?Promise.resolve("cancelled"):new Promise(e=>{let r;const n=i=>{r&&clearTimeout(r),e(i)};this.waiters.add(n),t!==void 0&&(r=setTimeout(()=>{this.waiters.delete(n),e("timeout")},t))})}isReady(){return this.state==="ready"}begin(){this.state="pending"}markReady(){if(this.state==="ready")return;this.state="ready";const t=[...this.waiters];this.waiters.clear(),t.forEach(e=>e("ready"))}cancel(){this.state="cancelled";const t=[...this.waiters];this.waiters.clear(),t.forEach(e=>e("cancelled"))}}class SMe{constructor(){x(this,"roomMembers",[]);x(this,"onChangeHooks",new Set)}setRoomMembers(t){this.executChangeUidHook(this.roomMembers,t),this.roomMembers=t}executChangeUidHook(t,e){const r={online:e.map(n=>{var i;return((i=n.payload)==null?void 0:i.uid)||n.session}),offline:t.map(n=>{var i;return((i=n.payload)==null?void 0:i.uid)||n.session})};this.onChangeHooks.forEach(n=>n(r))}getAllRoomMembers(){return this.roomMembers}getRoomMember(t){return this.roomMembers.find(e=>{var r;return((r=e.payload)==null?void 0:r.uid)===t})}isOnLine(t){return!!this.getRoomMember(t)}onUidChangeHook(t){this.onChangeHooks.add(t)}destroy(){this.onChangeHooks.clear()}}function Qp(s,t,e){var r,n;for(const[i,o]of s.entries())((n=(r=o.roomMember)==null?void 0:r.payload)==null?void 0:n.uid)===t&&i!==e&&s.delete(i)}class TMe{constructor(t){x(this,"expirationTime",He.cursor.expirationTime);x(this,"isEnableCursor");x(this,"internalMsgEmitter");x(this,"publicMsgEmitter");x(this,"control");x(this,"eventName","applianc-cursor");x(this,"displayer");x(this,"roomMember");x(this,"animationId");x(this,"maxLastSyncTime");x(this,"willSendEventWorkers",[]);x(this,"willConsumeEventWorkers",new Map);x(this,"sendEventTimerId");x(this,"animationDrawWorkers",new Map);x(this,"animationEventWorkers",new Map);x(this,"drawActiveUids",new Set);x(this,"cursorInfoMap",new Map);x(this,"doneRenderCursorInfoMap",new Map);const{control:e,internalMsgEmitter:r,publicMsgEmitter:n}=t;this.internalMsgEmitter=r,this.publicMsgEmitter=n,this.expirationTime=ve.isNumber(e.pluginOptions.extras.cursor.expirationTime)?e.pluginOptions.extras.cursor.expirationTime:this.expirationTime,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.isEnableCursor=this.control.pluginOptions.extras.cursor.enable}activeCollector(){this.control.plugin&&this.isEnableCursor&&(this.displayer=this.control.room||this.control.play,this.displayer.addMagixEventListener(this.eventName,this.mainMagixEventListener.bind(this)))}mainMagixEventListener(t){var a;const{event:e,payload:r}=t;if(e!==this.eventName)return;const{uid:n,op:i,type:o}=r;if(((a=this.control.collector)==null?void 0:a.uid)!==n&&o===zs.Cursor&&(i!=null&&i.length)){if(this.drawActiveUids.has(n))return;const c=this.willConsumeEventWorkers.get(n)||[];for(const l of i){const{viewId:u}=l;ve.isNumber(l.consumPoint[0])&&ve.isNumber(l.consumPoint[1])&&(l.consumPoint=this.control.viewContainerManager.transformToOriginPoint(l.consumPoint,u)),this.control.renderControl.isFilterCursor(u)&&c.unshift({...l,timestamp:this.control.worker.now})}this.willConsumeEventWorkers.set(n,c),this.runAnimation()}}onFocusViewChange(){this.isEnableCursor&&(this.checkDrawWorks(),this.runAnimation())}updateRoomMembers(t){var r,n;const e=new Set(t.online);for(const i of this.drawActiveUids)e.has(i)||this.drawActiveUids.delete(i);for(const[i,o]of this.cursorInfoMap.entries())if(o){for(const[a,c]of o.entries()){const l=(n=(r=c.roomMember)==null?void 0:r.payload)==null?void 0:n.uid;l&&!e.has(l)&&o.delete(a)}o.size===0&&this.cursorInfoMap.delete(i)}}getKey(t,e){return`${t}${Bt}${e}`}getUidAndviewId(t){const[e,r]=t.split(Bt);return{uid:e,viewId:r}}removeRenderedCursorByUid(t,e){var r,n;for(const[i,o]of this.cursorInfoMap.entries()){if(!o||i===e)continue;let a=!1;for(const[c,l]of o.entries())((n=(r=l.roomMember)==null?void 0:r.payload)==null?void 0:n.uid)===t&&(o.delete(c),a=!0);a&&(o.size===0&&this.cursorInfoMap.delete(i),this.doneRenderCursorInfoMap.delete(i),this.internalMsgEmitter.emit([We.Cursor,i],o.size?Array.from(o.values(),c=>({x:c.x,y:c.y,roomMember:c.roomMember})):[]))}}dropAllEventCursor(t){var e,r;this.willConsumeEventWorkers.delete(t),this.animationEventWorkers.delete(t);for(const[n,i]of this.cursorInfoMap.entries()){if(!i)continue;let o=!1;for(const[a,c]of i.entries())c.type===0&&((r=(e=c.roomMember)==null?void 0:e.payload)==null?void 0:r.uid)===t&&(i.delete(a),o=!0);o&&(i.size===0&&this.cursorInfoMap.delete(n),this.doneRenderCursorInfoMap.delete(n),this.internalMsgEmitter.emit([We.Cursor,n],i.size?Array.from(i.values(),a=>({x:a.x,y:a.y,roomMember:a.roomMember})):[]))}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const t=this.control.viewContainerManager.focuedViewId;for(const[r,n]of this.animationDrawWorkers.entries()){const{viewId:i,uid:o}=this.getUidAndviewId(r);o!==((e=this.control.collector)==null?void 0:e.uid)&&i!==t&&n.workState===he.Done&&(n.consumPoint=[void 0,void 0])}}animationCursor(){var r,n,i,o;this.animationId=void 0;const t=this.control.worker.now;for(const[a,c]of this.animationDrawWorkers.entries()){const{uid:l,viewId:u}=this.getUidAndviewId(a),h=this.roomMember.getRoomMember(l);if(!h){this.animationDrawWorkers.delete(a),this.drawActiveUids.delete(l);continue}const{consumPoint:d,timestamp:f,workState:g,cursorTool:y}=c,S=this.cursorInfoMap.get(u)||new Map;if(d&&ve.isNumber(d[0])&&ve.isNumber(d[1])&&f+this.expirationTime>t){const b=(r=h.payload)==null?void 0:r.uid;b&&(this.removeRenderedCursorByUid(b,u),Qp(S,b,h.memberId)),S.set(h.memberId,{x:d[0],y:d[1],roomMember:h,timestamp:f,type:1,workState:g,cursorTool:y})}else S.delete(h.memberId),this.drawActiveUids.delete(l);S.size?this.cursorInfoMap.set(u,S):this.cursorInfoMap.delete(u),this.animationDrawWorkers.delete(a)}const e=new Set;for(const[a,c]of this.cursorInfoMap.entries())if(c)for(const[l,u]of c.entries())u.type===1&&u.workState!==he.Done&&e.add(l);else this.cursorInfoMap.delete(a);for(const[a,c]of this.willConsumeEventWorkers.entries()){const l=this.roomMember.getRoomMember(a);if(ve.isNumber(l==null?void 0:l.memberId)&&!e.has(l.memberId)){const u=c.pop();u?this.animationEventWorkers.set(a,u):this.willConsumeEventWorkers.delete(a)}}for(const[a,c]of this.animationEventWorkers.entries()){const l=this.roomMember.getRoomMember(a);if(!l){this.animationEventWorkers.delete(a);continue}const{viewId:u,consumPoint:h,timestamp:d,cursorTool:f}=c,g=this.cursorInfoMap.get(u)||new Map;if(h&&ve.isNumber(h[0])&&ve.isNumber(h[1])&&d+this.expirationTime>t){const y=(n=l.payload)==null?void 0:n.uid;y&&(this.removeRenderedCursorByUid(y,u),Qp(g,y,l.memberId)),g.set(l.memberId,{x:h[0],y:h[1],roomMember:l,timestamp:d,type:0,cursorTool:f})}else g.delete(l.memberId);g.size?this.cursorInfoMap.set(u,g):this.cursorInfoMap.delete(u),this.animationEventWorkers.delete(a)}for(const a of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(a)||(this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]));for(const[a,c]of this.cursorInfoMap.entries())if(c!=null&&c.size){const l=[];for(const[h,d]of c.entries()){const{timestamp:f,...g}=d;if(f+this.expirationTime>t)l.push(g);else{const y=(o=(i=g.roomMember)==null?void 0:i.payload)==null?void 0:o.uid;y&&g.type===1&&g.workState!==he.Done&&this.drawActiveUids.delete(y),c.delete(h),c.size===0&&(this.cursorInfoMap.delete(a),this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]))}}const u=this.doneRenderCursorInfoMap.get(a);ve.isEqual(u,l)||(this.doneRenderCursorInfoMap.set(a,l),this.internalMsgEmitter.emit([We.Cursor,a],l))}else this.cursorInfoMap.delete(a),this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(t,e){var r;if(this.displayer&&ze(this.displayer)){const n=ve.isNumber(t[0])&&ve.isNumber(t[1])&&this.control.viewContainerManager.transformToScenePoint(t,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:n,viewId:e,cursorTool:jc((r=this.control.worker.getCurrentToolsData())==null?void 0:r.toolsType)}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var t;this.displayer&&ze(this.displayer)&&this.displayer.isWritable&&this.displayer.dispatchMagixEvent(this.eventName,{type:zs.Cursor,op:ve.cloneDeep(this.willSendEventWorkers),uid:(t=this.control.collector)==null?void 0:t.uid}),this.willSendEventWorkers.length=0,this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}collectServiceCursor(t){var a,c,l,u;if(!this.isEnableCursor)return;const{op:e,uid:r,workState:n,viewId:i,cursorTool:o}=t;if(r&&e&&n&&i){const h=this.roomMember.getRoomMember(r);if(!h||r===((a=this.control.collector)==null?void 0:a.uid))return;this.dropAllEventCursor(r),n===he.Done?this.drawActiveUids.delete(r):this.drawActiveUids.add(r);const d=this.getKey(r,i);let f=[void 0,void 0];if(ve.isNumber(e[0])&&ve.isNumber(e[1])){const[b,C]=this.control.viewContainerManager.transformToOriginPoint(e,i);f=[b,C]}const g=((c=this.animationDrawWorkers.get(d))==null?void 0:c.cursorTool)||((u=(l=this.cursorInfoMap.get(i))==null?void 0:l.get(h.memberId))==null?void 0:u.cursorTool),y=zye(o,g)||De.pencil,S={consumPoint:f,workState:n,viewId:i,timestamp:this.control.worker.now,cursorTool:y};if(n===he.Start||n===he.Done){const b=this.willConsumeEventWorkers.get(r);n===he.Start&&b&&this.willConsumeEventWorkers.delete(r)}this.animationDrawWorkers.set(d,S),this.runAnimation()}}unabled(){var t;this.displayer&&ze(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:zs.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(t=this.control.collector)==null?void 0:t.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)),this.isEnableCursor||this.stopAnimation()}clearViewCursor(t){for(const[e]of this.animationDrawWorkers.entries()){const{viewId:r}=this.getUidAndviewId(e);r===t&&this.animationDrawWorkers.delete(e)}for(const[e,r]of this.willConsumeEventWorkers.entries()){const n=r.filter(i=>i.viewId!==t);n.length?this.willConsumeEventWorkers.set(e,n):this.willConsumeEventWorkers.delete(e)}for(const[e,r]of this.animationEventWorkers.entries())r.viewId===t&&this.animationEventWorkers.delete(e);this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([We.Cursor,t],[])}stopAnimation(){this.animationId!==void 0&&(cancelAnimationFrame(this.animationId),this.animationId=void 0),this.animationDrawWorkers.clear(),this.willConsumeEventWorkers.clear(),this.animationEventWorkers.clear(),this.drawActiveUids.clear(),this.cursorInfoMap.clear(),this.doneRenderCursorInfoMap.clear(),this.willSendEventWorkers.length=0,this.sendEventTimerId!==void 0&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}destroy(){var t;(t=this.displayer)==null||t.removeMagixEventListener(this.eventName),this.stopAnimation()}}function qu(s,t,e){const r=e(s);return!!t&&!!r&&t===r}function CMe(s,t){return!s.isService||!s.viewId||s.isAllViews?!0:qu(s.viewId,s.scenePath,t)}function IMe(s,t,e){return CMe(s,e)?!s.viewId||s.isAllViews||t(s.viewId)?"dispatch":"pending":"discard"}class pr{constructor(){x(this,"activeScenePath");x(this,"activeUndoTickerId");x(this,"forceEndedContext");x(this,"useEmtMsg");x(this,"emtType");x(this,"control");x(this,"mainEngine");x(this,"collectListener",(t,e)=>{const r=t;if(r.workState===he.Start)this.forceEndedContext=void 0,this.useEmtMsg=!1;else if(this.forceEndedContext&&(!this.forceEndedContext.viewId||this.forceEndedContext.viewId===r.viewId)&&(!this.forceEndedContext.scenePath||!r.scenePath||this.forceEndedContext.scenePath===r.scenePath))return;this.collect(t,e)})}static dispatch(t,e,r){var n;(n=tt.InternalMsgEmitter)==null||n.emit([t,e],r)}get serviceColloctor(){return this.control.collector}registerForMainEngine(t,e){return this.emtType=t,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collectListener),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collectListener)}collectForLocalWorker(t,e){var r,n,i;for(const[o,a]of t)(r=this.mainEngine)==null||r.queryTaskBatchData(a).forEach(c=>{var l;(l=this.mainEngine)==null||l.taskBatchData.delete(c)}),(n=this.mainEngine)==null||n.taskBatchData.add(o);if(e){this.mainEngine.consume();return}(i=this.mainEngine)==null||i.runAnimation()}collectForServiceWorker(t){Nr(()=>{t.forEach(e=>{var r;(r=this.serviceColloctor)==null||r.dispatch(e)})},this.mainEngine.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback"))}onAbort(t){}abort(t,e){var u;const r=this.lastEmtData,n=(u=this.control)==null?void 0:u.collector,i=e?(n==null?void 0:n.getLocalId(e))||e:void 0,o=r?[r.workId,...r.workIds||[]].filter(h=>h!==void 0).map(h=>h.toString()):[],a=i===void 0||o.some(h=>{const d=(n==null?void 0:n.getLocalId(h))||h;return h===e||d===i}),c=!!r&&(!t||r.viewId===t)&&a,l=!!this.forceEndedContext&&(!t||this.forceEndedContext.viewId===t);if(!c&&!l)return!1;if(c){const h=this.activeUndoTickerId;this.onAbort(h),this.forceEndedContext={viewId:r.viewId,scenePath:this.activeScenePath||r.scenePath},this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0}return this.useEmtMsg=!1,c}async pause(t,e){var r;if(this.lastEmtData){const n=this.lastEmtData;if(t&&n.viewId!==t||e&&this.activeScenePath!==e)return;this.useEmtMsg=!0;const i=this.activeUndoTickerId,o={...n,scenePath:this.activeScenePath||n.scenePath,workState:he.Done};return await this.collect(o,!0),this.forceEndedContext={viewId:n.viewId,scenePath:o.scenePath},(r=tt.InternalMsgEmitter)==null||r.emit(Te.ActiveMethod,!1,n.viewId),i}}recover(t,e){var n;const r=this.forceEndedContext;!this.useEmtMsg||!r||t&&r.viewId!==t||e&&r.scenePath!==e||(this.useEmtMsg=!1,this.forceEndedContext=void 0,tt.InternalMsgEmitter.hasListeners(Te.ActiveMethod)&&((n=tt.InternalMsgEmitter)==null||n.emit(Te.ActiveMethod,!0,r.viewId)))}discardRecovery(t,e){const r=this.forceEndedContext;!r||t&&r.viewId!==t||e&&r.scenePath!==e||(this.useEmtMsg=!1,this.forceEndedContext=void 0)}}function sM(s,t,e){return`${e.isLocalId(s)?s:e.getLocalId(s)}-${t}`}function bMe(s,t,e){const r=new Map,n=[];for(const i of s){const o=sM(i,t,e);r.set(i,o),n.push(o)}return{copyNodeKeyBySourceKey:r,expectedWorkIds:n}}class EMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.CopyNode)}collect(e){var l;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,viewId:n,requestId:i}=e,o=this.control.viewContainerManager.getView(n);if(!(o!=null&&o.displayer))return;const a=o.focusScenePath,c=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",c,n,{render:!0,storage:!0,copyAck:!0,source:$e.AsyncCopyNode});for(const u of r){const h=u.toString(),f=this.serviceColloctor.isLocalId(h)?this.serviceColloctor.transformKey(u):h,g=(l=this.serviceColloctor.getStorageData(n,a))==null?void 0:l[f];if(g){if(u===Le){const y=g&&this.copySelector({viewId:n,store:lt(g)});y&&this.pasteSelector({...y,viewId:n,scenePath:a,undoTickerId:c,requestId:i});break}if(g.toolsType===Q.Text&&g.opt&&g.opt.workState&&g.opt.workState!==he.Done){const y=g&&this.copyText({viewId:n,store:lt(g)});y&&this.pasteText({...y,viewId:n,scenePath:a,key:f,store:g,undoTickerId:c,requestId:i});break}}}}copyText(e){const{viewId:r,store:n}=e,i=this.control.viewContainerManager.getView(r);if(!this.serviceColloctor||!i)return;const o=i==null?void 0:i.cameraOpt,a=o&&[o.centerX,o.centerY],c=n.opt,l=c.boxPoint&&c.boxSize&&[c.boxPoint[0]+c.boxSize[0]/2,c.boxPoint[1]+c.boxSize[1]/2];return{bgCenter:a,textCenter:l}}pasteText(e){var S,b;const{bgCenter:r,textCenter:n,store:i,key:o,viewId:a,scenePath:c,undoTickerId:l,requestId:u}=e,h=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!h)return;const d=Math.floor(Math.random()*30+1),f=((S=h.cameraOpt)==null?void 0:S.scale)||1,g=r&&n&&[r[0]-n[0]+d,r[1]-n[1]+d]||[d/f,d/f],y=sM(o,l,this.serviceColloctor);if(i.toolsType===Q.Text&&i.opt){const C=i.opt;if(C&&C.boxPoint&&C.text){C.workState=he.Done;const N=C.boxPoint;C.boxPoint=[Math.round(N[0]+g[0]),Math.round(N[1]+g[1])],C.workState=he.Done;const T=this.control.viewContainerManager.transformToOriginPoint(C.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:y,x:T[0],y:T[1],opt:C,scale:((b=h.cameraOpt)==null?void 0:b.scale)||1,type:Cr.Text,isActive:!1,viewId:a,scenePath:c,requestId:u,emitEventType:Te.CopyNode}),this.collectForServiceWorker([{...i,opt:C,type:le.FullWork,workId:y,viewId:a,scenePath:c,needUndoTicker:l,requestId:u,emitEventType:Te.CopyNode}]),l&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",l,a,[y],c)}}}copySelector(e){var y,S,b,C,N,T,p,m,v;const{viewId:r,store:n}=e,i=this.control.viewContainerManager.getView(r),o=n.selectIds;if(!this.serviceColloctor||!(o!=null&&o.length)||!i)return;const a=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((y=i.cameraOpt)==null?void 0:y.centerX)||0,centerY:((S=i.cameraOpt)==null?void 0:S.centerY)||0,scale:((b=i.cameraOpt)==null?void 0:b.scale)||1}},l=this.control.hasOffscreenCanvas&&((C=i.displayer.canvasBgRef.current)==null?void 0:C.getBoundingClientRect())||((N=i.displayer.canvasContainerRef.current)==null?void 0:N.getBoundingClientRect()),u=(p=(T=i.displayer)==null?void 0:T.floatBarRef.current)==null?void 0:p.getBoundingClientRect(),h=l&&[l.x+l.width/2,l.y+l.height/2],d=u&&[u.x+u.width/2,u.y+u.height/2],f=h&&i.viewData&&i.viewData.convertToPointInWorld({x:h[0],y:h[1]}),g=d&&i.viewData&&i.viewData.convertToPointInWorld({x:d[0],y:d[1]});f&&g&&(c.offset={x:f.x-g.x,y:f.y-g.y});for(const M of o){const R=this.serviceColloctor.isLocalId(M)?this.serviceColloctor.transformKey(M):M,E=(v=(m=this.serviceColloctor)==null?void 0:m.getStorageData(i.id,i.focusScenePath))==null?void 0:v[R];E&&a.set(M,lt(E))}return{copyStores:a,copyCoordInfo:c}}pasteSelector(e){var N,T,p,m;const{copyStores:r,copyCoordInfo:n,viewId:i,scenePath:o,undoTickerId:a,requestId:c}=e,l=this.control.viewContainerManager.getView(i);if(!r.size||!this.serviceColloctor||!l)return;const{offset:u,cameraOpt:h}=n,{scale:d}=h,f=Math.floor(Math.random()*30+1),g=u&&[u.x+f,u.y+f]||[f/d,f/d],y=[],S=[],{copyNodeKeyBySourceKey:b,expectedWorkIds:C}=bMe(r.keys(),a,this.serviceColloctor);a&&C.length&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",a,i,C,o);for(const[v,M]of r.entries()){const R=b.get(v);if(!R)continue;const E={useAnimation:!1};if(M.toolsType===Q.Text&&M.opt){const P=M.opt;if(P&&P.boxPoint&&P.text){P.workState=he.Done;const k=P.boxPoint;P.boxPoint=[Math.round(k[0]+g[0]),Math.round(k[1]+g[1])],P.workState=he.Done;const O=this.control.viewContainerManager.transformToOriginPoint(P.boxPoint,i);this.control.textEditorManager.createTextForMasterController({workId:R,x:O[0],y:O[1],opt:P,scale:((N=l.cameraOpt)==null?void 0:N.scale)||1,type:Cr.Text,isActive:!1,viewId:i,scenePath:o,requestId:c,emitEventType:Te.CopyNode})}S.push({...M,opt:P,type:le.FullWork,workId:R,viewId:i,scenePath:o,requestId:c,needUndoTicker:a,emitEventType:Te.CopyNode});continue}if((M.toolsType===Q.Image||M.toolsType===Q.BackgroundSVG)&&(M.opt.uuid=R,M.opt.centerX=M.opt.centerX+g[0],M.opt.centerY=M.opt.centerY+g[1]),M.ops){const P=Bn(M.ops).map((O,B)=>{const D=B%3;return D===0?O+g[0]:D===1?O+g[1]:O}),k=xt(P);M.ops=k}if((T=M==null?void 0:M.opt)!=null&&T.eraserlines&&(p=M==null?void 0:M.opt)!=null&&p.eraserlines.length)for(const P of(m=M==null?void 0:M.opt)==null?void 0:m.eraserlines){const{op:k}=P;for(let O=0;O<k.length;O++){const B=k[O].map((D,A)=>A%2?D+g[1]:D+g[0]);P.op[O]=B}}S.push({...M,updateNodeOpt:E,type:le.FullWork,workId:R,viewId:i,scenePath:o,requestId:c,needUndoTicker:a,emitEventType:Te.CopyNode}),y.push([{...M,updateNodeOpt:E,workId:R,msgType:le.FullWork,dataType:Re.Local,emitEventType:Te.CopyNode,willSyncService:!1,willRefresh:!0,viewId:i,scenePath:o,requestId:c,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i),isRunBackgroundThread:this.control.isUseBackgroundThread},{workId:R,msgType:le.FullWork,emitEventType:Te.CopyNode}])}y.length&&this.collectForLocalWorker(y),S.length&&this.collectForServiceWorker(S)}}class xMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetColorNode);x(this,"undoTickerId")}onAbort(e){this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId===e&&(this.control.textEditorManager.UndoTickerId=void 0)}ensureUndoTicker(e,r,n,i){if(!(n===he.Start||n===he.Done&&!this.undoTickerId))return this.undoTickerId;const a=this.mainEngine.now;return this.undoTickerId=a,this.activeUndoTickerId=a,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",a,e,{render:!0,storage:!0,source:$e.MethodSetColorNode}),a}setTextColor(e,r,n,i,o,a){const{fontColor:c,fontBgColor:l}=n;r.opt&&(c&&(r.opt.fontColor=c),l&&(r.opt.fontBgColor=l),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:r.opt,viewId:i,canSync:!0,canWorker:!0,requestId:o,needUndoTicker:a}))}collect(e,r){var m,v;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,strokeColor:i,fillColor:o,fontColor:a,fontBgColor:c,viewId:l,workState:u,thickness:h,strokeType:d,requestId:f}=e,g=this.control.viewContainerManager.getView(l);if(!(g!=null&&g.displayer))return;if(u===he.Start)this.activeScenePath=e.scenePath||g.focusScenePath;else if(u===he.Doing&&!this.activeScenePath)return;const y=e.scenePath||this.activeScenePath||g.focusScenePath;u!==he.Done&&(this.lastEmtData={...e,scenePath:y});const S=[...n],b=this.serviceColloctor.storage,C=[],N={},T=this.ensureUndoTicker(l,y,u,n);this.undoTickerId&&(this.control.textEditorManager.UndoTickerId=this.undoTickerId);const p=new Set;for(;S.length;){const M=S.pop();if(!M)continue;const R=M.toString(),E=this.serviceColloctor.isLocalId(R),P=E?this.serviceColloctor.transformKey(M):R;let k=R;!E&&this.serviceColloctor.isOwn(k)&&(k=this.serviceColloctor.getLocalId(k));const O=(v=(m=b==null?void 0:b[l])==null?void 0:m[y])==null?void 0:v[P];if(O){const B=O.updateNodeOpt||{};if(a||c){if(a){B.fontColor=a;const[A,L,U,Y]=Ls(a);N.textColor=[A,L,U],N.textOpacity=Y}if(c)if(B.fontBgColor=na(c)?"transparent":c,na(c))N.textBgColor=void 0,N.textBgOpacity=void 0;else{const[A,L,U,Y]=Ls(c);N.textBgColor=[A,L,U],N.textBgOpacity=Y}if(O.toolsType===Q.Text&&O.opt&&u!==he.Start){k&&u===he.Done&&p.add(k.toString()),this.setTextColor(k,lt(O),B,l,f,u===he.Done&&T||void 0);continue}}if(i){B.strokeColor=i;const[A,L,U,Y]=Ls(i);N.strokeColor=[A,L,U],N.strokeOpacity=Y}if(o)if(B.fillColor=na(o)?"transparent":o,na(o))N.fillColor=void 0,N.fillOpacity=void 0;else{const[A,L,U,Y]=Ls(o);N.fillColor=[A,L,U],N.fillOpacity=Y}h&&(B.thickness=h,N.strokeWidth=h),d&&(N.strokeType=d,B.strokeType=d,B.lineCap=this.control.getLineCap(d),B.lineDash=this.control.getLineDash(d));const D={workId:k,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:B,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:l,scenePath:y,requestId:f,needUndoTicker:u===he.Done&&T||void 0};k&&u===he.Done&&p.add(k.toString()),C.push([D,{workId:k,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}if(u===he.Done&&T){const M=[...p];M.length&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",T,l,M,y)}C.length?(u===he.Done&&(this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId=void 0),this.collectForLocalWorker(C,r)):u===he.Done&&(this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId=void 0),Object.keys(N).length&&setTimeout(()=>{var M;(M=this.control.room)==null||M.setMemberState(N)},0),u===he.Done&&(this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class RMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.ZIndexNode);x(this,"zIndexMap",new Map);x(this,"zIndexMapForBackgroundSVG",new Map)}clearZIndex(e){this.zIndexMap.delete(e),this.zIndexMapForBackgroundSVG.delete(e)}getMinZIndex(e){var r;return((r=this.zIndexMap.get(e))==null?void 0:r.min)||0}getMinZIndexForBackgroundSVG(e){var r;return((r=this.zIndexMapForBackgroundSVG.get(e))==null?void 0:r.min)||0}getMaxZIndex(e){var r;return((r=this.zIndexMap.get(e))==null?void 0:r.max)||0}getMaxZIndexForBackgroundSVG(e){var r;return((r=this.zIndexMapForBackgroundSVG.get(e))==null?void 0:r.max)||0}setMaxZIndex(e,r){const n=this.getMinZIndex(r);this.zIndexMap.set(r,{min:n,max:e})}setMaxZIndexForBackgroundSVG(e,r){const n=this.getMinZIndexForBackgroundSVG(r);this.zIndexMapForBackgroundSVG.set(r,{min:n,max:e})}setMinZIndex(e,r){const n=this.getMaxZIndex(r);this.zIndexMap.set(r,{min:e,max:n})}setMinZIndexForBackgroundSVG(e,r){const n=this.getMaxZIndexForBackgroundSVG(r);this.zIndexMapForBackgroundSVG.set(r,{min:e,max:n})}addMaxLayer(e){const r=this.getMaxZIndex(e)+1;this.setMaxZIndex(r,e)}addMaxLayerForBackgroundSVG(e){const r=this.getMaxZIndexForBackgroundSVG(e)+1;this.setMaxZIndexForBackgroundSVG(r,e)}addMinLayer(e){const r=this.getMinZIndex(e)-1;this.setMinZIndex(r,e)}addMinLayerForBackgroundSVG(e){const r=this.getMinZIndexForBackgroundSVG(e)-1;this.setMinZIndexForBackgroundSVG(r,e)}correct(e){const r=e.sort((n,i)=>n[1]-i[1]);for(let n=1;n<r.length;n++){const i=r[n][1],o=r[n-1][1];i<=o&&(r[n][1]=o+1)}return r}collect(e){var S,b;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,layer:n,viewId:i,requestId:o}=e,a=this.control.viewContainerManager.getView(i);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...r],u=this.serviceColloctor.storage,h=[],d=[],f=[],g=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,i,{render:!0,storage:!0,source:$e.AsyncZIndexNode});l.length;){const C=l.pop();if(!C)continue;const N=C.toString(),T=this.serviceColloctor.isLocalId(N),p=T?this.serviceColloctor.transformKey(C):N;let m=N;!T&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const v=lt(u[i][c][p]);let M,R;if(v&&m===Le){if(v.selectIds){for(const k of v.selectIds){const O=y(k,this.serviceColloctor),B=(b=(S=u==null?void 0:u[i])==null?void 0:S[c])==null?void 0:b[O];B&&B.toolsType===Q.BackgroundSVG?(f.push(k),f.sort((D,A)=>{var Y,q,ie,z;const L=((q=(Y=u[y(D,this.serviceColloctor)])==null?void 0:Y.opt)==null?void 0:q.zIndex)||0,U=((z=(ie=u[y(D,this.serviceColloctor)])==null?void 0:ie.opt)==null?void 0:z.zIndex)||0;return L>U?1:D<A?-1:0})):(d.push(k),d.sort((D,A)=>{var Y,q,ie,z;const L=((q=(Y=u[y(D,this.serviceColloctor)])==null?void 0:Y.opt)==null?void 0:q.zIndex)||0,U=((z=(ie=u[y(D,this.serviceColloctor)])==null?void 0:ie.opt)==null?void 0:z.zIndex)||0;return L>U?1:D<A?-1:0}))}const E=v.updateNodeOpt||{};E.zIndexLayer=n;const P={workId:C,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:E,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:i,requestId:o,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i)};d.length&&(n===bn.Top?(this.addMaxLayer(i),M=this.getMaxZIndex(i)):(this.addMinLayer(i),M=this.getMinZIndex(i)),d.forEach(k=>{var A,L,U,Y,q;const O=(A=this.serviceColloctor)==null?void 0:A.isLocalId(k);let B=O&&((L=this.serviceColloctor)==null?void 0:L.transformKey(k))||k;const D=(Y=(U=u==null?void 0:u[i])==null?void 0:U[c])==null?void 0:Y[B];D&&(!O&&((q=this.serviceColloctor)!=null&&q.isOwn(B))&&(B=this.serviceColloctor.getLocalId(B)),E.zIndex=M,D!=null&&D.opt&&(D.opt.zIndex=M))})),f.length&&(n===bn.Top?(this.addMaxLayerForBackgroundSVG(i),R=this.getMaxZIndexForBackgroundSVG(i)):(this.addMinLayerForBackgroundSVG(i),R=this.getMinZIndexForBackgroundSVG(i)),f.forEach(k=>{var A,L,U,Y,q;const O=(A=this.serviceColloctor)==null?void 0:A.isLocalId(k);let B=O&&((L=this.serviceColloctor)==null?void 0:L.transformKey(k))||k;const D=(Y=(U=u==null?void 0:u[i])==null?void 0:U[c])==null?void 0:Y[B];D&&(!O&&((q=this.serviceColloctor)!=null&&q.isOwn(B))&&(B=this.serviceColloctor.getLocalId(B)),E.zIndexForBackgroundSVG=R,D!=null&&D.opt&&(D.opt.zIndex=R))})),P.willSerializeData=!0,h.push([P,{workId:C,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}continue}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",g,i,h.map(([C])=>{var N;return(N=C.workId)==null?void 0:N.toString()}).filter(Boolean),c),this.collectForLocalWorker(h));function y(C,N){return N.isLocalId(C)&&N.transformKey(C)||C}}}class kMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.TranslateNode);x(this,"cachePosition")}onAbort(){this.cachePosition=void 0}collect(e,r){var y,S,b;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,position:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===he.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=[...n],h=(y=this.serviceColloctor)==null?void 0:y.storage,d=[],f=new Set,g=o===he.Start&&this.mainEngine.now||void 0;for(g&&(this.activeUndoTickerId=g,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodTranslateNode}));u.length;){const C=u.pop();if(!C)continue;const N=C.toString(),T=this.serviceColloctor.isLocalId(N),p=T&&this.serviceColloctor.transformKey(C)||N;let m=N;!T&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const v=(b=(S=h==null?void 0:h[a])==null?void 0:S[l])==null?void 0:b[p];if(v&&m===Le){if(v.selectIds){o===he.Done&&v.selectIds.forEach(R=>{f.add(R.toString())});const M=this.control.viewContainerManager.transformToScenePoint([i.x,i.y],a);if(o===he.Start&&(this.cachePosition=M),this.cachePosition){const R=v.updateNodeOpt||{};R.translate=[M[0]-this.cachePosition[0],M[1]-this.cachePosition[1]],R.workState=o,this.control.cursor.isEnableCursor?R.useAnimation=!1:(R.uid=this.serviceColloctor.uid,o===he.Start?R.useAnimation=!1:o===he.Done&&(R.useAnimation=!0));const E={workId:C,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:R,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:a,scenePath:l,smoothSync:this.mainEngine.smoothSync};o===he.Done&&(E.textUpdateForWoker=!0,E.willSerializeData=!0,this.cachePosition=void 0,E.needUndoTicker=this.activeUndoTickerId),d.push([E,{workId:C,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:o}])}}continue}}if(o===he.Start?this.mainEngine.unWritable():o===he.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length){if(o===he.Done){const C=this.activeUndoTickerId;if(C){const N=[...f];this.mainEngine.internalMsgEmitter.emit("finalizeRequested",C,a,N,l)}}this.collectForLocalWorker(d,r)}o===he.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class AMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.DeleteNode)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,viewId:n,requestId:i}=e,o=this.control.viewContainerManager.getView(n);if(!(o!=null&&o.displayer))return;const a=o.focusScenePath,c=this.serviceColloctor.storage,l=[...r],u=[],h=[],d=this.mainEngine.now;for(this.control.textEditorManager.UndoTickerId=d;l.length;){const y=l.pop();if(!y)continue;const S=y.toString(),b=this.serviceColloctor.isLocalId(S),C=b?this.serviceColloctor.transformKey(y):S,N=(g=(f=c==null?void 0:c[n])==null?void 0:f[a])==null?void 0:g[C];if(N){let T=S;if(!b&&this.serviceColloctor.isOwn(T)&&(T=this.serviceColloctor.getLocalId(T)),N.toolsType===Q.Text){this.control.textEditorManager.delete(T,!0,!0);continue}h.push(T)}}h.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,n,{render:!0,storage:!0,source:$e.AsyncDeleteNode}),this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,n,h.slice(),a),u.push([{msgType:le.RemoveNode,emitEventType:Te.DeleteNode,removeIds:h,dataType:Re.Local,willSyncService:!0,willRefresh:!0,viewId:n,requestId:i,isRunBackgroundThread:this.control.isUseBackgroundThread,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)},void 0]),this.collectForLocalWorker(u))}}class PMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.ScaleNode);x(this,"targetText",new Map);x(this,"cacheTextInfo",new Map)}onAbort(e){this.targetText.clear(),this.cacheTextInfo.clear(),this.control.textEditorManager.UndoTickerId===e&&(this.control.textEditorManager.UndoTickerId=void 0)}async setTextStyle(e,r,n){const i=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:r,viewId:n,canSync:!1,canWorker:!1});return{key:e,textInfo:i}}async collect(e,r){var C,N,T;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,workState:i,viewId:o,originPoint:a,scenePoint:c,dir:l,scale:u,translate:h}=e,d=this.control.viewContainerManager.getView(o);if(!(d!=null&&d.displayer))return;if(i===he.Start)this.activeScenePath=e.scenePath||d.focusScenePath;else if(!this.activeScenePath)return;const f=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:f};const g=[...n],y=(C=this.serviceColloctor)==null?void 0:C.storage,S=[],b=i===he.Start&&this.mainEngine.now||void 0;for(b&&(this.activeUndoTickerId=b,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",b,o,{render:!0,storage:!0,isWritable:!0,source:$e.MethodScaleNode}),this.control.textEditorManager.UndoTickerId=b);g.length;){const p=g.pop();if(!p)continue;const m=p.toString(),v=this.serviceColloctor.isLocalId(m),M=v&&this.serviceColloctor.transformKey(p)||m;let R=m;!v&&this.serviceColloctor.isOwn(R)&&(R=this.serviceColloctor.getLocalId(R));const E=(T=(N=y==null?void 0:y[o])==null?void 0:N[f])==null?void 0:T[M];if(E&&R===Le&&E.selectIds){const P={...E.updateNodeOpt||{}};if(P.dir=l,P.originPoint=a,P.scenePoint=c,P.workState=i,P.scale=u,P.translate=h,i===he.Start){this.targetText.clear(),this.cacheTextInfo.clear();for(const O of E.selectIds){const B=this.serviceColloctor.isLocalId(O),D=B&&this.serviceColloctor.transformKey(O)||O;let A=D;!B&&this.serviceColloctor.isOwn(D)&&(A=this.serviceColloctor.getLocalId(D));const L=this.control.textEditorManager.get(A);L&&this.targetText.set(A,lt(L))}}if(this.targetText.size&&i!==he.Start&&u){const O=[];for(const[A,L]of this.targetText.entries()){const U=Math.floor(L.opt.fontSize*u[0]),Y=this.cacheTextInfo.get(A),q=!Y&&L.opt.fontSize!==U||Y&&Y.fontSize!==U,ie=this.control.textEditorManager.get(A);q&&(ie!=null&&ie.opt.boxPoint)&&ie.opt.boxSize&&O.push(this.setTextStyle(A,{...ie.opt,fontSize:U},o))}const B=await Promise.all(O),D=new Map(B.map(({key:A,textInfo:L})=>[A,L]));for(const[A,L]of this.targetText.entries()){const U=D.get(A)||this.control.textEditorManager.get(A)||L;this.cacheTextInfo.set(A,{fontSize:U.opt.fontSize,boxSize:U.opt.boxSize,boxPoint:L.opt.boxPoint})}this.cacheTextInfo.size&&(P.textInfos=new Map(this.cacheTextInfo))}this.control.cursor.isEnableCursor?P.useAnimation=!1:(P.uid=this.serviceColloctor.uid,i===he.Start?P.useAnimation=!1:i===he.Done&&(P.useAnimation=!0));const k={workId:p,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:P,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:o,scenePath:f,smoothSync:this.mainEngine.smoothSync};i===he.Done&&(k.willSerializeData=!0,this.targetText.clear(),k.needUndoTicker=this.activeUndoTickerId),S.push([k,{workId:p,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:i}]);continue}}if(i===he.Start?this.mainEngine.unWritable():i===he.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),S.length){if(i===he.Done){const p=this.activeUndoTickerId;p&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",p,o,S.map(([m])=>{var v;return(v=m.workId)==null?void 0:v.toString()}).filter(Boolean),f)}this.collectForLocalWorker(S,r)}i===he.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class DMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.RotateNode);x(this,"cacheOriginRotate",0)}onAbort(){this.cacheOriginRotate=0}collect(e,r){var y,S,b,C,N,T,p;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,angle:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===he.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=[...n],h=(y=this.serviceColloctor)==null?void 0:y.storage,d=[],f=new Set,g=o===he.Start&&this.mainEngine.now||void 0;for(g&&(this.activeUndoTickerId=g,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodRotateNode}));u.length;){const m=u.pop();if(!m)continue;const v=m.toString(),M=this.serviceColloctor.isLocalId(v),R=M&&this.serviceColloctor.transformKey(m)||v;let E=v;!M&&this.serviceColloctor.isOwn(E)&&(E=this.serviceColloctor.getLocalId(E));const P=(b=(S=h==null?void 0:h[a])==null?void 0:S[l])==null?void 0:b[R];if(P&&E===Le){if(((C=P.selectIds)==null?void 0:C.length)===1){const k=P.selectIds[0];if(o===he.Done&&f.add(k.toString()),o===he.Start){const A=((N=this.serviceColloctor)==null?void 0:N.isLocalId(k))&&((T=this.serviceColloctor)==null?void 0:T.transformKey(k))||k,L=h[a][l][A];this.cacheOriginRotate=((p=L==null?void 0:L.opt)==null?void 0:p.rotate)||0}const O={...P.updateNodeOpt||{},originPoint:void 0,scenePoint:void 0,scale:void 0,dir:void 0,translate:void 0};O.angle=(i+this.cacheOriginRotate)%360,O.workState=o,this.control.cursor.isEnableCursor?O.useAnimation=!1:(O.uid=this.serviceColloctor.uid,o===he.Start?O.useAnimation=!1:o===he.Done&&(O.useAnimation=!0));const B={workId:m,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:O,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:a,scenePath:l,smoothSync:this.mainEngine.smoothSync};o===he.Done&&(B.willRefreshSelector=!0,B.willSerializeData=!0,this.cacheOriginRotate=0,B.needUndoTicker=this.activeUndoTickerId),d.push([B,{workId:m,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:o}])}continue}}if(o===he.Start?this.mainEngine.unWritable():o===he.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length){if(o===he.Done){const m=this.activeUndoTickerId;if(m){const v=[...f];this.mainEngine.internalMsgEmitter.emit("finalizeRequested",m,a,v,l)}}this.collectForLocalWorker(d,r)}o===he.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class LMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetFontStyle);x(this,"timerId")}async setTextStyle(e,r,n,i,o,a){const{bold:c,underline:l,lineThrough:u,italic:h,fontSize:d}=n;if(r.toolsType&&jye(r.toolsType)===Cr.Text){r.opt&&(c&&(r.opt.bold=c),ve.isBoolean(l)&&(r.opt.underline=l),ve.isBoolean(u)&&(r.opt.lineThrough=u),h&&(r.opt.italic=h),d&&(r.opt.fontSize=d));const g=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:r.opt,viewId:i,canSync:!1,canWorker:!1,requestId:o,needUndoTicker:a});return{key:e,textInfo:g}}}async collect(e){var p,m,v,M,R,E;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,bold:n,italic:i,lineThrough:o,underline:a,viewId:c,fontSize:l,requestId:u}=e,h=this.control.viewContainerManager.getView(c);if(!(h!=null&&h.displayer))return;const d=h.focusScenePath,f=[...r],g=this.serviceColloctor.storage,y={},S=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",S,c,{render:!0,storage:!0,source:$e.AsyncSetFontStyle}),this.control.textEditorManager.UndoTickerId=S;const b=new Set,C=[];for(;f.length;){const P=f.pop();if(!P)continue;const k=P.toString(),O=this.serviceColloctor.isLocalId(k),B=O?this.serviceColloctor.transformKey(P):k;let D=k;!O&&this.serviceColloctor.isOwn(D)&&(D=this.serviceColloctor.getLocalId(D));const A=(m=(p=g==null?void 0:g[c])==null?void 0:p[d])==null?void 0:m[B];if(A){const L=A.updateNodeOpt||{};if(n&&(L.bold=n,y.bold=n==="bold"),i&&(L.italic=i,y.italic=i==="italic"),ve.isBoolean(o)&&(L.lineThrough=o,y.lineThrough=o),ve.isBoolean(a)&&(L.underline=a,y.underline=a),l&&(L.fontSize=l,y.textSize=l),A.toolsType===Q.Text&&A.opt){const U=this.setTextStyle(D,ve.cloneDeep(A),L,c,u,S);b.add(D),C.push(U);continue}if(A&&D===Le&&((v=A.selectIds)!=null&&v.length))for(const U of A.selectIds){const Y=(M=this.serviceColloctor)==null?void 0:M.isLocalId(U);let q=Y&&((R=this.serviceColloctor)==null?void 0:R.transformKey(U))||U;const ie=g[c][d][q]||void 0;if(!Y&&((E=this.serviceColloctor)!=null&&E.isOwn(q))&&(q=this.serviceColloctor.getLocalId(q)),ie&&ie.toolsType===Q.Text&&ie.opt){const z=this.setTextStyle(q,ve.cloneDeep(ie),L,c,u,S);b.add(q),C.push(z);continue}}}}const N=[...b];if(!N.length){this.mainEngine.internalMsgEmitter.emit("cancelUndoTicker",S,c,d),this.control.textEditorManager.UndoTickerId===S&&(this.control.textEditorManager.UndoTickerId=void 0);return}this.mainEngine.internalMsgEmitter.emit("finalizeRequested",S,c,N,d);const T=await Promise.all(C);for(const P of T)if(P){const{key:k,textInfo:O}=P;O&&(O.canSync=!0,O.canWorker=!0,O.needUndoTicker=S,this.control.textEditorManager.updateForViewEdited(k,O))}Object.keys(y).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var P;this.timerId=void 0,(P=this.control.room)==null||P.setMemberState(y)},0))}}class NMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetPoint)}collect(e,r){var N,T,p;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:n,pointMap:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===he.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=(N=this.serviceColloctor)==null?void 0:N.storage,h=[],d=o===he.Start&&this.mainEngine.now||void 0;d&&(this.activeUndoTickerId=d,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodSetPoint}));const f=n;if(!f)return;const g=f.toString(),y=this.serviceColloctor.isLocalId(g),S=y&&this.serviceColloctor.transformKey(f)||g;let b=g;!y&&this.serviceColloctor.isOwn(b)&&(b=this.serviceColloctor.getLocalId(b));const C=(p=(T=u==null?void 0:u[a])==null?void 0:T[l])==null?void 0:p[S];if(C&&b===Le&&C.selectIds){const m=C.updateNodeOpt||{};m.pointMap=i,m.workState=o;const v={workId:f,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:m,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:a,scenePath:l,needUndoTicker:o===he.Done&&this.activeUndoTickerId||void 0};h.push([v,{workId:f,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}o===he.Start?this.mainEngine.unWritable():o===he.Done&&this.mainEngine.abled(),h.length&&(o===he.Done&&this.activeUndoTickerId&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",this.activeUndoTickerId,a,h.map(([m])=>{var v;return(v=m.workId)==null?void 0:v.toString()}).filter(Boolean),l),this.collectForLocalWorker(h,r)),o===he.Done&&(this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class OMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetLock)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,isLocked:n,viewId:i,requestId:o}=e,a=this.control.viewContainerManager.getView(i);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...r],u=this.serviceColloctor.storage,h=[],d=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,i,{render:!0,storage:!0,source:$e.AsyncSetLock});l.length;){const y=l.pop();if(!y)continue;const S=y.toString(),b=this.serviceColloctor.isLocalId(S),C=b?this.serviceColloctor.transformKey(y):S;let N=S;!b&&this.serviceColloctor.isOwn(N)&&(N=this.serviceColloctor.getLocalId(N));const T=(g=(f=u==null?void 0:u[i])==null?void 0:f[c])==null?void 0:g[C];if(T){const p=T.updateNodeOpt||{};p.isLocked=n;const m={workId:N,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:p,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:i,requestId:o,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i)};h.push([m,{workId:N,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,i,h.map(([y])=>{var S;return(S=y.workId)==null?void 0:S.toString()}).filter(Boolean),c),this.collectForLocalWorker(h))}}class zMe extends pr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetShapeOpt)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,viewId:n,requestId:i,...o}=e,a=this.control.viewContainerManager.getView(n);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...r],u=this.serviceColloctor.storage,h=[],d=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,n,{render:!0,storage:!0,source:$e.AsyncSetShapeOpt});l.length;){const y=l.pop();if(!y)continue;const S=y.toString(),b=this.serviceColloctor.isLocalId(S),C=b?this.serviceColloctor.transformKey(y):S;let N=S;!b&&this.serviceColloctor.isOwn(N)&&(N=this.serviceColloctor.getLocalId(N));const T=(g=(f=u==null?void 0:u[n])==null?void 0:f[c])==null?void 0:g[C];if(T){const p={...T.updateNodeOpt,...o,willRefresh:!0};if(T&&N===Le){const m={workId:N,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:p,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:n,requestId:i,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)};h.push([m,{workId:N,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,n,h.map(([y])=>{var S;return(S=y.workId)==null?void 0:S.toString()}).filter(Boolean),c),this.collectForLocalWorker(h))}}const qp=[Te.TranslateNode,Te.ScaleNode,Te.RotateNode,Te.SetPoint,Te.SetColorNode];class Ve{constructor(t){x(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case Te.TranslateNode:return new kMe;case Te.ZIndexNode:return new RMe;case Te.CopyNode:return new EMe;case Te.SetColorNode:return new xMe;case Te.DeleteNode:return new AMe;case Te.ScaleNode:return new PMe;case Te.RotateNode:return new DMe;case Te.SetFontStyle:return new LMe;case Te.SetPoint:return new NMe;case Te.SetLock:return new OMe;case Te.SetShapeOpt:return new zMe}}getBuilder(t){return this.builders.get(t)}registerForMainEngine(t,e){return this.builders.forEach(r=>{r&&r.registerForMainEngine(t,e)}),this}destroy(){this.builders.forEach(t=>{t&&t.destroy()}),this.builders.clear()}async pause(){return await Promise.all([...this.builders.values()].map(t=>t==null?void 0:t.pause())),this}async finishActiveContinuousMethods(t,e){return(await Promise.all(qp.map(n=>{var i;return(i=this.builders.get(n))==null?void 0:i.pause(t,e)}))).filter(n=>n!==void 0)}abortActiveContinuousMethods(t,e){var n;let r=!1;return qp.forEach(i=>{var o;r=((o=this.builders.get(i))==null?void 0:o.abort(t,e))||r}),r&&((n=tt.InternalMsgEmitter)==null||n.emit(Te.ActiveMethod,!1,t)),r}recover(t,e){return this.builders.forEach(r=>{r&&r.recover(t,e)}),this}discardRecovery(t,e){return this.builders.forEach(r=>{r==null||r.discardRecovery(t,e)}),this}static emitMethod(t,e,r){pr.dispatch(t,e,r)}static activeListener(t){tt.InternalMsgEmitter.on(Te.ActiveMethod,t)}static unmountActiveListener(t){tt.InternalMsgEmitter.off(Te.ActiveMethod,t)}}const BMe="xiaomi-android-webview-offscreen-v1",jMe=new Set(["offscreenTransfer+webgl2","offscreenTransfer+webgl","offscreenTransfer+canvas2d","imageBitmap+webgl2","imageBitmap+webgl","imageBitmap+canvas2d","mainThread+canvas2d"]);function oM(s){return typeof s=="string"&&jMe.has(s)}function FMe(s){if(s==="mainThread+canvas2d")return{renderMode:"main-thread",contextType:"2d"};const[t,e]=s.split("+");return{renderMode:t==="offscreenTransfer"?"worker-offscreen-transfer":"worker-image-bitmap",contextType:e==="canvas2d"?"2d":e}}function Qt(s,t){return s==="main-thread"?"mainThread+canvas2d":`${s==="worker-offscreen-transfer"?"offscreenTransfer":"imageBitmap"}+${t==="2d"?"canvas2d":t}`}function UMe(s,t){return!!(s.fullWorkerUrl&&(t||s.subWorkerUrl))}const WMe={worker:!1,offscreenCanvas:!1,workerUrl:!1,offscreenTransfer:!1,imageBitmap:!1,webgl2:!1,webgl:!1},VMe=new Set(["__proto__","constructor","prototype"]),Zl=64;function Rd(s){const e=s.replace(/_/g,".").split(".");if(!(e.length<1||e.length>4||e.some(r=>!/^\d+$/.test(r)||Number(r)>99999)||Number(e[0])<1))return e.map(r=>String(Number(r))).join(".")}function vn(s,t){const e=s.match(t);return e?Rd(e[1]):void 0}function aM(s,t){const e=s.split(".").map(Number),r=t.split(".").map(Number);for(let n=0;n<r.length;n+=1){const i=(e[n]??0)-r[n];if(i!==0)return i}return 0}function kd(s=typeof navigator>"u"?"":navigator.userAgent){if(vn(s,/\bArkWeb\/(\d+(?:\.\d+)*)/i)){const a=vn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);return a?{kind:"harmonyArkWeb",version:a}:void 0}if(/\bAndroid\b/i.test(s)&&(/;\s*wv\)/i.test(s)||/\bVersion\/4\.0\b/i.test(s)&&/\bChrome\/\d+/i.test(s))){const c=vn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);return c?{kind:"androidWebView",version:c}:void 0}const e=vn(s,/\b(?:iPhone|iPad|iPod).*?\bOS\s+(\d+(?:[_.]\d+)*)/i);if(e)return{kind:"iosWebView",version:e};const r=vn(s,/\bEdg(?:A)?\/(\d+(?:\.\d+)*)/i);if(r)return{kind:"web",browser:"edge",version:r};const n=vn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);if(n)return{kind:"web",browser:"chrome",version:n};const i=vn(s,/\bFirefox\/(\d+(?:\.\d+)*)/i);if(i)return{kind:"web",browser:"firefox",version:i};const o=vn(s,/\bVersion\/(\d+(?:\.\d+)*).*\bSafari\//i);return o?{kind:"web",browser:"safari",version:o}:void 0}function $Me(s,t=kd(s)){return(t==null?void 0:t.kind)!=="androidWebView"||aM(t.version,"77")>0?!1:/\b(?:xiaomi|miui|mi[\s_-]*8)\b/i.test(s)}function Ad(s){if(!s||typeof s!="object"||Array.isArray(s))return!1;try{const t=Object.getPrototypeOf(s);return t===Object.prototype||t===null}catch{return!1}}function cM(s,t){if(!Number.isInteger(s))return!1;switch(t){case"renderMode":return s===Dr.OffscreenTransfer||s===Dr.ImageBitmap||s===Dr.MainThread;case"canvasContext":return s===Ka.WebGL;case"maskTextureFormat":return s===ah.SingleChannelTexture;case"maskTextureUpload":return s===ch.TextureSubImage2D;case"fontFaceFallback":return s===to.RefreshTextRender}}function YMe(s,t,e,r=[]){if(!Ad(t))return;const n=Object.entries(t);n.length>Zl&&r.push(`worker blacklist exceeds ${Zl} rules`);let i;for(const[o,a]of n.slice(0,Zl)){if(VMe.has(o))continue;const c=Rd(o);if(!c||!cM(a,e)){r.push(`invalid ${e} blacklist rule: ${o}`);continue}aM(s,c)<=0&&(i=i===void 0?a:Math.max(i,a))}return i}function GMe(s,t){var e;return t.kind==="web"?(e=s==null?void 0:s.web)==null?void 0:e[t.browser]:s==null?void 0:s[t.kind]}function Ns(s,t,e){const r=[];if(!Ad(s))return{issues:r};if(!t)return r.push(`${e} blacklist runtime version unavailable`),{issues:r};const n=GMe(s,t);return n?{level:YMe(t.version,n,e,r),runtime:t,issues:r}:{runtime:t,issues:r}}function Gn(s,t,e){const r={};for(const n of[s,t])if(Ad(n))for(const[i,o]of Object.entries(n)){const a=Rd(i);!a||!cM(o,e)||(r[a]=Math.max(r[a]??0,o))}return Object.keys(r).length>0?r:void 0}function bs(s,t,e){var i,o,a,c,l,u,h,d;const r={chrome:Gn((i=s==null?void 0:s.web)==null?void 0:i.chrome,(o=t==null?void 0:t.web)==null?void 0:o.chrome,e),edge:Gn((a=s==null?void 0:s.web)==null?void 0:a.edge,(c=t==null?void 0:t.web)==null?void 0:c.edge,e),firefox:Gn((l=s==null?void 0:s.web)==null?void 0:l.firefox,(u=t==null?void 0:t.web)==null?void 0:u.firefox,e),safari:Gn((h=s==null?void 0:s.web)==null?void 0:h.safari,(d=t==null?void 0:t.web)==null?void 0:d.safari,e)},n={androidWebView:Gn(s==null?void 0:s.androidWebView,t==null?void 0:t.androidWebView,e),iosWebView:Gn(s==null?void 0:s.iosWebView,t==null?void 0:t.iosWebView,e),harmonyArkWeb:Gn(s==null?void 0:s.harmonyArkWeb,t==null?void 0:t.harmonyArkWeb,e),web:Object.values(r).some(Boolean)?r:void 0};return Object.fromEntries(Object.entries(n).filter(([,f])=>f!==void 0))}function HMe(s,t=typeof navigator>"u"?"":navigator.userAgent){const e=kd(t);return Ns(s,e,"fontFaceFallback").level===to.RefreshTextRender}function Zp(s){var t,e;if(typeof OffscreenCanvas!="function")return!1;try{const r=new OffscreenCanvas(1,1).getContext(s);return r?((e=(t=r.getExtension)==null?void 0:t.call(r,"WEBGL_lose_context"))==null||e.loseContext(),!0):!1}catch{return!1}}function QMe(){if(typeof OffscreenCanvas!="function")return!1;try{return!!new OffscreenCanvas(1,1).getContext("2d")}catch{return!1}}function qMe(){return typeof OffscreenCanvas=="function"&&typeof OffscreenCanvas.prototype.transferToImageBitmap=="function"}function ZMe(s=!0){const t=typeof OffscreenCanvas=="function",e=typeof CanvasRenderingContext2D=="function"&&typeof CanvasRenderingContext2D.prototype.drawImage=="function";return{worker:typeof Worker=="function",offscreenCanvas:t,workerUrl:s,offscreenTransfer:typeof HTMLCanvasElement=="function"&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen=="function",imageBitmap:t&&QMe()&&qMe()&&e,webgl2:Zp("webgl2"),webgl:Zp("webgl")}}function KMe(s,t,e,r){return s==="main-thread"||t==="2d"||e===Ka.WebGL?"2d":t==="webgl"?r.webgl?"webgl":"2d":r.webgl2?"webgl2":r.webgl?"webgl":"2d"}function XMe(s){const t=s.userAgent??(typeof navigator>"u"?"":navigator.userAgent),e=s.capabilities??(s.useWorker==="mainThread"?WMe:ZMe(s.workerUrl)),r=kd(t),n=s.allowImageBitmapFallback!==!1,i=[],o=Ns(s.workerRenderModeBlacklist,r,"renderMode"),a=Ns(s.workerCanvasContextBlacklist,r,"canvasContext"),c=Ns(s.workerMaskTextureFormatBlacklist,r,"maskTextureFormat"),l=Ns(s.workerMaskTextureUploadBlacklist,r,"maskTextureUpload");i.push(...o.issues,...a.issues,...c.issues,...l.issues);let u=o.level;const h=a.level,d=c.level,f=l.level;$Me(t,r)&&(u=Math.max(u||0,Dr.OffscreenTransfer),i.push(`compatibility-policy:${BMe}:skip-offscreen-transfer`));const g=(S,b)=>({renderMode:S,mainThreadRenderMode:u===Dr.MainThread?"readback":"normal",contextType:KMe(S,s.requestedContextType,h||void 0,e),reason:b,capabilities:e,runtime:r,effectiveRenderModeLevel:u,effectiveContextLevel:h,effectiveMaskTextureFormatLevel:d,effectiveMaskTextureUploadLevel:f,issues:i});if(s.useWorker==="mainThread")return g("main-thread","use-worker-main-thread");if(!e.worker||!e.offscreenCanvas||!e.workerUrl)return g("main-thread","worker-capability-missing");if(u!==void 0&&u>=Dr.ImageBitmap)return g("main-thread","render-mode-blacklist");if(!(!s.useSimple||u!==void 0&&u>=Dr.OffscreenTransfer)&&e.offscreenTransfer)return g("worker-offscreen-transfer","default-offscreen-transfer");if(!n)return g("main-thread","image-bitmap-fallback-disabled");if(e.imageBitmap){const S=u===Dr.OffscreenTransfer?"render-mode-blacklist":s.useSimple?"worker-capability-missing":"use-simple-false";return g("worker-image-bitmap",S)}return g("main-thread","image-bitmap-unavailable")}const JMe=500;function Pd(s){const t=Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0));return Object.keys(t).length?` details=${JSON.stringify(t)}`:""}function _Me(s){return`[Appliance]: [${s.category}] stage=${s.stage} viewId=${s.viewId} generation=${s.generation??"pending"}${Pd(s.details||{})}`}function ewe(s){return`[Appliance]: [view-init] status=success viewId=${s.viewId} generation=${s.generation??"pending"} state=init-reconcile currentStage=ready${Pd(s.details||{})}`}class twe{constructor(t,e={}){x(this,"delayMs");x(this,"schedule");x(this,"cancel");x(this,"states",new Map);x(this,"destroyed",!1);this.emit=t,this.delayMs=e.delayMs??JMe;const r=e.schedule,n=e.cancel;this.schedule=r?(i,o)=>r(i,o):(i,o)=>globalThis.setTimeout(i,o),this.cancel=n?i=>n(i):i=>globalThis.clearTimeout(i)}record(t){if(this.destroyed)return;t.restartView&&!this.hasViewLifecycle(t.viewId,t.lifecycleGeneration)&&this.cancelView(t.viewId);const e=t.viewId;let r=this.states.get(e);if(r&&t.generation!==void 0&&r.generation!==void 0&&t.generation!==r.generation&&(this.clearState(e,r),r=void 0),!r){const n={viewId:t.viewId,generation:t.generation,lifecycleGeneration:t.lifecycleGeneration,currentCategory:t.category,currentStage:t.stage,details:{},status:"pending"};r=n,this.states.set(e,n),this.updateState(n,t),this.scheduleState(e,n);return}this.updateState(r,t),this.scheduleState(e,r)}completeView(t){if(this.destroyed)return;this.record({category:"init-reconcile",viewId:t.viewId,generation:t.generation,stage:"ready",details:t.details});const e=this.states.get(t.viewId);e&&(t.generation!==void 0&&(e.generation=t.generation),e.status="success")}cancelView(t){const e=this.states.get(t);e&&this.clearState(t,e)}destroy(){if(!this.destroyed){this.destroyed=!0;for(const[t,e]of this.states)this.clearState(t,e)}}updateState(t,e){t.generation=e.generation??t.generation,t.lifecycleGeneration=e.lifecycleGeneration??t.lifecycleGeneration,t.currentCategory=e.category,t.currentStage=e.stage,t.details={...e.details||{}}}scheduleState(t,e){e.timer!==void 0&&(this.cancel(e.timer),e.timer=void 0);try{e.timer=this.schedule(()=>{this.states.get(t)===e&&(e.timer=void 0,this.emitSummary(e),e.status==="success"&&this.states.get(t)===e&&this.states.delete(t))},this.delayMs)}catch(r){throw this.states.get(t)===e&&this.states.delete(t),r}}clearState(t,e){e.timer!==void 0&&(this.cancel(e.timer),e.timer=void 0),this.states.get(t)===e&&this.states.delete(t)}hasViewLifecycle(t,e){var r;return e===void 0?!1:((r=this.states.get(t))==null?void 0:r.lifecycleGeneration)===e}formatSummary(t){return`[Appliance]: [view-init] status=${t.status} viewId=${t.viewId} generation=${t.generation??"pending"} state=${t.currentCategory} currentStage=${t.currentStage}${Pd(t.details)}`}emitSummary(t){try{this.emit(this.formatSummary(t))}catch{}}}const Kl=200;function rwe(s){return s instanceof TouchEvent||s instanceof window.TouchEvent||(s==null?void 0:s.touches)&&(s==null?void 0:s.touches.length)||(s==null?void 0:s.changedTouches)&&(s==null?void 0:s.changedTouches.length)}function nwe(s){return rwe(s)&&(s.touches&&s.touches.length===1||s.changedTouches&&s.changedTouches.length===1)}function iwe(s){return s.touches&&s.touches.length?{x:s.touches[0].pageX,y:s.touches[0].pageY}:s.changedTouches&&s.changedTouches.length?{x:s.changedTouches[0].pageX,y:s.changedTouches[0].pageY}:{x:s.pageX,y:s.pageY}}function swe(s){const t=s.touches&&s.touches[0]||s.changedTouches&&s.changedTouches[0]||s;return{x:t.clientX,y:t.clientY}}class eo{constructor(t){x(this,"_logger");x(this,"initLogAggregator");x(this,"pendingArgsByChannel",new Map);x(this,"flushTimerByChannel",new Map);this._logger=t,this.initLogAggregator=new twe(e=>this.emit("info",[e]))}emit(t,e){try{if(this._logger){this._logger[t](...e);return}(t==="info"?console.info:t==="warn"?console.warn:console.error)(...e)}catch{}}flush(t,e){const r=this.pendingArgsByChannel.get(e)||null;this.flushTimerByChannel.delete(e),this.pendingArgsByChannel.delete(e),r&&this.emit(t,r)}debounce(t,e,r,n){this.pendingArgsByChannel.set(e,r);const i=this.flushTimerByChannel.get(e);i!=null&&clearTimeout(i),this.flushTimerByChannel.set(e,setTimeout(()=>this.flush(t,e),n))}error(...t){this.emit("error",t)}info(...t){this.emit("info",t)}warn(...t){this.emit("warn",t)}errorDebounced(t,...e){this.debounce("error",t,e,Kl)}infoDebounced(t,...e){this.debounce("info",t,e,Kl)}warnDebounced(t,...e){this.debounce("warn",t,e,Kl)}recordInitLogProgress(t){try{this.initLogAggregator.record(t)}catch{}}completeInitViewLogs(t){try{this.initLogAggregator.completeView(t)}catch{}}cancelInitViewLogs(t){try{this.initLogAggregator.cancelView(t)}catch{}}destroy(){this.initLogAggregator.destroy();for(const t of this.flushTimerByChannel.keys()){const e=this.flushTimerByChannel.get(t);e!==void 0&&clearTimeout(e)}this.flushTimerByChannel.clear(),this.pendingArgsByChannel.clear()}}function mt(s,t){try{const e=s;if(e.recordInitLogProgress){e.recordInitLogProgress(t);return}s.info(_Me(t))}catch{}}function owe(s,t){try{const e=s;if(e.completeInitViewLogs){e.completeInitViewLogs(t);return}s.info(ewe(t))}catch{}}function Ta(s,t){var e;try{(e=s==null?void 0:s.cancelInitViewLogs)==null||e.call(s,t)}catch{}}function awe(s){return s===Be.Stroke?Be.Normal:s}function Ti(s){const{pencilOptions:t}=s,e=awe(t.strokeType);return{strokeColor:t.strokeColor,thickness:t.thickness,isOpacity:t.isOpacity,zIndex:t.zIndex,scale:t.scale,rotate:t.rotate,translate:t.translate,eraserlines:t.eraserlines,strokeType:e,lineCap:e===Be.Normal?void 0:t.lineCap,lineDash:e===Be.Normal?void 0:t.lineDash}}function lM(s){return[s.start[0],s.start[1],0,s.end[0],s.end[1],0]}function Wc(s){const{minX:t,minY:e,maxX:r,maxY:n}=s.bbox;return[t,e,0,r,n,0]}function cwe(s){const{minX:t,minY:e,maxX:r,maxY:n}=s.bbox;return[t,e,0,r,e,0,r,n,0,t,n,0]}const lwe=(s,t)=>({toolsType:Q.Straight,opt:Ti(t),op:lM(s)}),uwe=(s,t)=>({toolsType:Q.Arrow,opt:Ti(t),op:lM(s)}),hwe=(s,t)=>({toolsType:Q.Rectangle,opt:{...Ti(t),fillColor:"transparent"},op:cwe(s)}),dwe=(s,t)=>({toolsType:Q.Ellipse,opt:{...Ti(t),fillColor:"transparent"},op:Wc(s)}),fwe=(s,t)=>({toolsType:Q.Polygon,opt:{...Ti(t),fillColor:"transparent",vertices:3,shapeType:Kt.Triangle},op:Wc(s)}),gwe=(s,t)=>({toolsType:Q.Polygon,opt:{...Ti(t),fillColor:"transparent",vertices:4,shapeType:Kt.Rhombus},op:Wc(s)}),pwe=(s,t)=>({toolsType:Q.Star,opt:{...Ti(t),fillColor:"transparent",vertices:10,innerVerticeStep:2,innerRatio:.4,shapeType:Kt.Pentagram},op:Wc(s)}),Hn={straight:lwe,arrow:uwe,rectangle:hwe,ellipse:dwe,triangle:fwe,rhombus:gwe,star:pwe};function mwe(s){return xt(s.op)}function Pn(s){if(!s.length)return s;const[t,e]=s[0],[r,n]=s[s.length-1];return t===r&&e===n?s:[...s,s[0]]}function ywe(s,t){const e=Pn(s).slice(0,-1),r=(t%e.length+e.length)%e.length;return Pn(e.slice(r).concat(e.slice(0,r)))}function Dd(s){return[...s].reverse()}function Li(s,t,e,r,n){const i=[];for(let o=0;o<n;o++){const a=ywe(e,o),c=Dd(a);i.push({id:`${t}-cw-${o}`,semanticKind:s,points:a,threshold:r},{id:`${t}-ccw-${o}`,semanticKind:s,points:c,threshold:r})}return i}function vwe(s,t,e,r){const n=[];return e.forEach((i,o)=>{n.push({id:`${t}-forward-${o}`,semanticKind:s,points:i,threshold:r},{id:`${t}-reverse-${o}`,semanticKind:s,points:Dd(i),threshold:r})}),n}const Kp=[[0,.5],[.25,.5],[.5,.5],[.75,.5],[1,.5]],Mwe=[[.05,.5],[.3,.5],[.55,.5],[.78,.5],[1,.5],[.8,.32],[1,.5],[.8,.68]],wwe=[[.05,.5],[.3,.5],[.55,.5],[.78,.5],[1,.5],[.8,.68],[1,.5],[.8,.32]],Swe=Pn([[.15,.2],[.85,.2],[.85,.8],[.15,.8]]),Twe=Pn([[.5,.12],[.88,.82],[.12,.82]]),Cwe=Pn([[.5,.08],[.92,.5],[.5,.92],[.08,.5]]),Iwe=Pn([[.5,.04],[.62,.34],[.95,.36],[.68,.56],[.78,.9],[.5,.7],[.22,.9],[.32,.56],[.05,.36],[.38,.34]]),bwe=Pn([[.5,.04],[.74,.88],[.08,.34],[.92,.34],[.26,.88]]),Ewe=Array.from({length:24},(s,t)=>{const e=Math.PI*2*t/24;return[.5+Math.cos(e)*.42,.5+Math.sin(e)*.3]}),Qn=[{id:"straight-base",semanticKind:"straight",points:Kp,threshold:.72},{id:"straight-reverse",semanticKind:"straight",points:Dd(Kp),threshold:.72},...vwe("arrow","arrow",[Mwe,wwe],.71),...Li("rectangle","rectangle",Swe,.68,4),...Li("ellipse","ellipse",Pn(Ewe),.64,12),...Li("triangle","triangle",Twe,.68,3),...Li("rhombus","rhombus",Cwe,.66,4),...Li("star","star",Iwe,.7,5),...Li("star","pentagram",bwe,.68,5)];function Es(s,t,e,r){const{metrics:n}=t;return n.closureRatio>.24||n.cornerCount<e||n.cornerCount>r?null:s}const xwe=[{kind:"straight",templates:Qn.filter(s=>s.semanticKind==="straight"),postProcessor(s,t){const{metrics:e}=t;return e.bboxDiagonal<8||e.closureRatio<.75||e.straightness<.94&&s.score<.8?null:s},mapper:Hn.straight,enabledInV1:!0},{kind:"arrow",templates:Qn.filter(s=>s.semanticKind==="arrow"),postProcessor(s,t){const{metrics:e}=t;return e.closureRatio<.12||e.cornerCount<4||e.cornerCount>7||e.straightness>.93?null:s.score>=Math.max(s.threshold,.71)?s:null},mapper:Hn.arrow,enabledInV1:!0},{kind:"rectangle",templates:Qn.filter(s=>s.semanticKind==="rectangle"),postProcessor(s,t){const e=Es(s,t,4,6);return!e||t.metrics.bboxCornerCloseness>.15||t.metrics.bboxCornerCloseness>=t.metrics.diamondCloseness?null:e},mapper:Hn.rectangle,enabledInV1:!0},{kind:"ellipse",templates:Qn.filter(s=>s.semanticKind==="ellipse"),postProcessor(s,t){const e=Es(s,t,6,12);return!e||t.metrics.radialVariance>.5?null:e},mapper:Hn.ellipse,enabledInV1:!0},{kind:"triangle",templates:Qn.filter(s=>s.semanticKind==="triangle"),postProcessor(s,t){return Es(s,t,3,4)},mapper:Hn.triangle,enabledInV1:!0},{kind:"rhombus",templates:Qn.filter(s=>s.semanticKind==="rhombus"),postProcessor(s,t){const e=Es(s,t,4,5);return!e||t.metrics.diamondCloseness>=t.metrics.bboxCornerCloseness?null:e},mapper:Hn.rhombus,enabledInV1:!0},{kind:"star",templates:Qn.filter(s=>s.semanticKind==="star"),postProcessor(s,t){const e=s.templateId.startsWith("pentagram"),r=Es(s,t,e?5:8,12);if(!r)return null;if(e){if(t.metrics.bboxCornerCloseness<.22||t.metrics.angleVariance<35)return null}else if(t.metrics.radialVariance<.34)return null;return r},mapper:Hn.star,enabledInV1:!0}];function Ld(){return xwe}const Rwe=64,Zu=250;function tn(s,t){const e=s[0]-t[0],r=s[1]-t[1];return Math.hypot(e,r)}function kwe(s){const t=[];for(const e of s){const r=t[t.length-1];(!r||tn(r,e)>.5)&&t.push(e)}return t}function uM(s){let t=0;for(let e=1;e<s.length;e++)t+=tn(s[e-1],s[e]);return t}function hM(s){let t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(const[i,o]of s)t=Math.min(t,i),e=Math.min(e,o),r=Math.max(r,i),n=Math.max(n,o);return{minX:t,minY:e,maxX:r,maxY:n}}function Awe(s,t=Rwe){if(s.length<=1)return s;const e=uM(s)/Math.max(t-1,1),r=[s[0]];let n=0,i=s[0],o=1;const a=[...s];for(;o<a.length;){const c=a[o],l=tn(i,c);if(l===0){o++;continue}if(n+l>=e){const u=(e-n)/l,h=[i[0]+u*(c[0]-i[0]),i[1]+u*(c[1]-i[1])];r.push(h),a.splice(o,0,h),n=0,i=h,o++}else n+=l,i=c,o++}for(;r.length<t;)r.push(a[a.length-1]);return r}function Vc(s){const t=s.reduce((e,r)=>[e[0]+r[0],e[1]+r[1]],[0,0]);return[t[0]/s.length,t[1]/s.length]}function Pwe(s,t){const e=Vc(s),r=Math.cos(t),n=Math.sin(t);return s.map(([i,o])=>{const a=i-e[0],c=o-e[1];return[a*r-c*n+e[0],a*n+c*r+e[1]]})}function Dwe(s){const t=Vc(s);return Math.atan2(t[1]-s[0][1],t[0]-s[0][0])}function Lwe(s,t=Zu){const e=hM(s),r=Math.max(e.maxX-e.minX,1),n=Math.max(e.maxY-e.minY,1);return s.map(([i,o])=>[(i-e.minX)/r*t,(o-e.minY)/n*t])}function Nwe(s){const t=Vc(s);return s.map(([e,r])=>[e-t[0],r-t[1]])}function dM(s){const t=Awe(s),e=Pwe(t,-Dwe(t)),r=Lwe(e);return Nwe(r)}function Owe(s,t){let e=0;const r=Math.min(s.length,t.length);for(let n=0;n<r;n++)e+=tn(s[n],t[n]);return e/Math.max(r,1)}function zwe(s,t,e){const[r,n]=s,[i,o]=t,[a,c]=e,l=Math.abs((c-o)*r-(a-i)*n+a*o-c*i),u=Math.hypot(c-o,a-i)||1;return l/u}function Ku(s,t){if(s.length<=2)return s;let e=0,r=0;for(let o=1;o<s.length-1;o++){const a=zwe(s[o],s[0],s[s.length-1]);a>e&&(e=a,r=o)}if(e<=t)return[s[0],s[s.length-1]];const n=Ku(s.slice(0,r+1),t),i=Ku(s.slice(r),t);return n.slice(0,-1).concat(i)}function Bwe(s){if(s.length<3)return[];const t=[];for(let e=0;e<s.length;e++){const r=s[(e-1+s.length)%s.length],n=s[e],i=s[(e+1)%s.length],o=[r[0]-n[0],r[1]-n[1]],a=[i[0]-n[0],i[1]-n[1]],c=o[0]*a[0]+o[1]*a[1],l=Math.hypot(o[0],o[1])*Math.hypot(a[0],a[1])||1,u=Math.acos(Math.max(-1,Math.min(1,c/l)));t.push(u*180/Math.PI)}return t}function jwe(s){const t=hM(s),e=Math.max(t.maxX-t.minX,1),r=Math.max(t.maxY-t.minY,1),n=Math.hypot(e,r)||1,i=uM(s),o=tn(s[0],s[s.length-1]),a=tn(s[0],s[s.length-1]),c=a/n,l=n*.045,h=c<.24&&s.length>2?s.slice(0,tn(s[0],s[s.length-1])<.5?-1:s.length):s,d=Ku(h,l),f=Bwe(d),g=f.length>0?Math.max(...f.map(v=>Math.abs(v-90))):90,y=d.map(([v,M])=>[(v-t.minX)/e,(M-t.minY)/r]),S=[[0,0],[1,0],[1,1],[0,1]],b=[[.5,0],[1,.5],[.5,1],[0,.5]],C=(v,M)=>v.reduce((R,E)=>{const P=Math.min(...M.map(k=>tn(E,k)));return R+P},0)/Math.max(v.length,1),N=Vc(s),T=s.map(v=>tn(v,N)),p=T.reduce((v,M)=>v+M,0)/Math.max(T.length,1),m=p>0?T.reduce((v,M)=>v+Math.abs(M-p)/p,0)/Math.max(T.length,1):0;return{bbox:t,metrics:{pathLength:i,chordLength:o,straightness:o/Math.max(i,1),closureDistance:a,closureRatio:c,bboxWidth:e,bboxHeight:r,bboxDiagonal:n,aspectRatio:e/r,cornerCount:Math.max(0,d.length),angleVariance:g,radialVariance:m,bboxCornerCloseness:C(y,S),diamondCloseness:C(y,b)}}}function Fwe(s){return s.map(t=>({template:t,normalized:dM(t.points)}))}const Uwe=Fwe(Ld().flatMap(s=>s.templates));function Wwe(s){const t=kwe(s.rawPoints);if(t.length<2)return null;const{bbox:e,metrics:r}=jwe(t);return{rawPoints:s.rawPoints,points:t,pencilOptions:s.pencilOptions,viewId:s.viewId,scenePath:s.scenePath,start:t[0],end:t[t.length-1],bbox:e,metrics:r}}function Vwe(s){const t=dM(s.points),e=new Map;for(const{template:r,normalized:n}of Uwe){const i=Owe(t,n),o=Math.max(0,1-i/(.5*Math.sqrt(2*Zu*Zu))),a={kind:r.semanticKind,templateId:r.id,threshold:r.threshold||.7,distance:i,score:o},c=e.get(r.semanticKind);(!c||a.score>c.score)&&e.set(r.semanticKind,a)}return[...e.values()].sort((r,n)=>n.score-r.score)}function $we(s){const t=Ld(),e=Vwe(s);if(s.metrics.bboxDiagonal>=8&&s.metrics.straightness>.975&&s.metrics.closureRatio>.75){const n=e.find(i=>i.kind==="straight")||{templateId:"straight-heuristic",score:.99,threshold:.72};return{kind:"straight",score:n.score,threshold:n.threshold,recognized:!0,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:n.templateId,metrics:s.metrics,candidates:e}}for(const n of e){const i=t.find(a=>a.kind===n.kind);if(!i||n.score<n.threshold)continue;const o=i.postProcessor?i.postProcessor(n,s):n;if(o)return{kind:i.kind,score:o.score,threshold:o.threshold,recognized:!0,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:o.templateId,metrics:s.metrics,candidates:e}}const r=e[0];return{kind:"none",score:(r==null?void 0:r.score)||0,threshold:(r==null?void 0:r.threshold)||1,recognized:!1,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:r==null?void 0:r.templateId,metrics:s.metrics,candidates:e}}function Ywe(s){return Wwe(s)}function Gwe(s){return $we(s)}function Xp(s,t){if(!s.recognized||s.kind==="none")return null;const e=Ld().find(r=>r.kind===s.kind);return(e==null?void 0:e.mapper(s,t))||null}const Hwe="__netless_appliance_plugin_markmap_runtime__";function Qwe(){return globalThis}function qwe(){return Qwe()[Hwe]}function Zwe(){return new Error('Markmap runtime is not registered. Install "markmap-lib", "markmap-view", and "mermaid", then import "@netless/appliance-plugin/markmap" before using insertMarkmap/updateMarkmap.')}function fM(){const s=qwe();if(!s)throw Zwe();return s}function yr(){const s=new Error("Font database operation aborted");return s.name="AbortError",s}const ti=class ti{constructor(){x(this,"fontDB");x(this,"FONT_DB_NAME","__APPLIANCE_PLUGIN_FONT_DB");x(this,"FONT_STORE_NAME","fonts");x(this,"FONT_DB_VERSION",1)}static getInstance(){return ti.instance||(ti.instance=new ti),ti.instance}async initFontDB(t){if(t!=null&&t.aborted)throw yr();return this.fontDB?this.fontDB:new Promise((e,r)=>{let n=!1;const i=()=>{t==null||t.removeEventListener("abort",a)},o=l=>{n||(n=!0,i(),l())},a=()=>o(()=>r(yr())),c=indexedDB.open(this.FONT_DB_NAME,this.FONT_DB_VERSION);t==null||t.addEventListener("abort",a,{once:!0}),c.onerror=()=>o(()=>r(new Error(`Failed to open font database: ${c.error}`))),c.onsuccess=()=>{const l=c.result;if(n||t!=null&&t.aborted){l.close(),n||o(()=>r(yr()));return}o(()=>{this.fontDB=l,e(l)})},c.onupgradeneeded=l=>{const u=l.target.result;u.objectStoreNames.contains(this.FONT_STORE_NAME)||u.createObjectStore(this.FONT_STORE_NAME,{keyPath:"fontFamily"}).createIndex("url","url",{unique:!1})}})}async getFontFromDB(t,e,r){try{if(r!=null&&r.aborted||(this.fontDB||(this.fontDB=await this.initFontDB(r)),r!=null&&r.aborted))throw yr();return new Promise((n,i)=>{const o=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly"),c=o.objectStore(this.FONT_STORE_NAME).get(t);let l=!1,u=null;const h=()=>{r==null||r.removeEventListener("abort",f)},d=g=>{l||(l=!0,h(),g())},f=()=>{try{o.abort()}catch{}d(()=>i(yr()))};r==null||r.addEventListener("abort",f,{once:!0}),c.onsuccess=()=>{c.result&&c.result.buffer&&(!e||c.result.url===e)?u=c.result.buffer:u=null},c.onerror=()=>d(()=>i(c.error)),o.onerror=()=>d(()=>i(o.error||c.error)),o.onabort=()=>d(()=>i(o.error||yr())),o.oncomplete=()=>d(()=>n(u)),r!=null&&r.aborted&&f()})}catch(n){if(r!=null&&r.aborted)throw n;return console.error(`Failed to get font from database for ${t}:`,n),null}}async saveFontToDB(t,e,r,n){try{if(n!=null&&n.aborted||(this.fontDB||(this.fontDB=await this.initFontDB(n)),n!=null&&n.aborted))throw yr();return new Promise((i,o)=>{const a=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite"),c=a.objectStore(this.FONT_STORE_NAME),l={fontFamily:t,url:e,buffer:r,timestamp:Date.now()},u=c.put(l);let h=!1;const d=()=>{n==null||n.removeEventListener("abort",g)},f=y=>{h||(h=!0,d(),y())},g=()=>{try{a.abort()}catch{}f(()=>o(yr()))};n==null||n.addEventListener("abort",g,{once:!0}),u.onsuccess=()=>{},u.onerror=()=>f(()=>o(u.error)),a.onerror=()=>f(()=>o(a.error||u.error)),a.onabort=()=>f(()=>o(a.error||yr())),a.oncomplete=()=>f(()=>i(!0)),n!=null&&n.aborted&&g()})}catch(i){if(n!=null&&n.aborted)throw i;return console.error(`Failed to save font to database for ${t}:`,i),!1}}async clearFontCache(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((t,e)=>{const i=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite").objectStore(this.FONT_STORE_NAME).clear();i.onsuccess=()=>{t(!0)},i.onerror=()=>{e(i.error)}})}catch(t){return console.error("Failed to clear font cache:",t),!1}}async getFontCacheStatus(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((t,e)=>{const i=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly").objectStore(this.FONT_STORE_NAME).getAll();i.onsuccess=()=>{const o=i.result||[],a=o.reduce((c,l)=>c+(l.buffer?l.buffer.byteLength:0),0);t({count:o.length,totalSize:a})},i.onerror=()=>{e(i.error)}})}catch(t){return console.error("Failed to get font cache status:",t),{count:0,totalSize:0}}}};x(ti,"instance");let Xu=ti;const Kwe=3e3;function ia(s){const t=new Error(s);return t.name="AbortError",t}class Xwe{constructor(t){x(this,"control");x(this,"getFullWorker");x(this,"getSubWorker");x(this,"indexDBUtils",Xu.getInstance());x(this,"fontFaceWorkerResolveMap",new Map);x(this,"fontFaceLoadGeneration",0);x(this,"activeFontFaceAttempt");x(this,"lastFontFacesAlreadyReady",!1);x(this,"documentFontsReadyLogged",!1);x(this,"documentFontsReadyWaiters",new Set);this.control=t.control,this.getFullWorker=t.getFullWorker,this.getSubWorker=t.getSubWorker}destroy(){this.fontFaceLoadGeneration+=1;const t=this.activeFontFaceAttempt;this.activeFontFaceAttempt=void 0,t&&!t.settled&&(t.settled=!0,t.timer&&clearTimeout(t.timer),t.controller.abort(),t.resolve({status:"timeout"}));for(const e of this.documentFontsReadyWaiters)e.cancel();this.documentFontsReadyWaiters.clear();for(const e of[...this.fontFaceWorkerResolveMap.keys()])this.resolveFontFaceWorkerRequest(e,!1,!0);this.lastFontFacesAlreadyReady=!1,this.documentFontsReadyLogged=!1}get Logger(){return this.control.logger}async waitDocumentFontsReady(t,e=Kwe,r){var n;r!=null&&r.aborted||typeof document>"u"||!((n=document.fonts)!=null&&n.ready)||await new Promise(i=>{let o=!1;const a=()=>{o||(o=!0,clearTimeout(c.timer),this.documentFontsReadyWaiters.delete(c),r==null||r.removeEventListener("abort",a),i())},c={timer:setTimeout(()=>{this.Logger.warn(`[Appliance]: document fonts ready timeout for ${t}; timeoutMs=${e}`),a()},e),cancel:a};this.documentFontsReadyWaiters.add(c),r==null||r.addEventListener("abort",a,{once:!0}),Promise.resolve(document.fonts.ready).then(()=>{o||(this.documentFontsReadyLogged||(this.documentFontsReadyLogged=!0,this.Logger.info(`[Appliance]: document fonts ready for ${t}`)),a())},l=>{o||(this.Logger.warn(`[Appliance]: document fonts ready failed for ${t}: ${(l==null?void 0:l.message)||l}`),a())})})}async clearFontCache(){return await this.indexDBUtils.clearFontCache()}async getFontCacheStatus(){return await this.indexDBUtils.getFontCacheStatus()}createFontFaceRequestId(t){return`${t}-${Date.now()}-${Math.random().toString(16).slice(2)}`}getFontFaceCssValue(t){return`12px "${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}isDocumentFontFaceReady(t){if(typeof document>"u"||!document.fonts)return!1;let e=!1;for(const r of document.fonts)if(r.family===t&&(e=!0,r.status!=="loaded"))return!1;return e&&(!document.fonts.check||document.fonts.check(this.getFontFaceCssValue(t)))}areDocumentFontFacesReady(){return this.control.extendFontFaces.every(t=>this.isDocumentFontFaceReady(t.fontFamily))}resolveFontFaceWorkerRequest(t,e,r=!1){const n=this.fontFaceWorkerResolveMap.get(t);if(n){if(clearTimeout(n.timer),n.signal&&n.onAbort&&n.signal.removeEventListener("abort",n.onAbort),this.fontFaceWorkerResolveMap.delete(t),r)try{n.worker.postMessage(new Set([{msgType:le.CancelFontFace,dataType:Re.Local,viewId:"",requestId:t}]))}catch{}n.resolve(e)}}requestFontFaceWorker(t,e,r,n){const i=e.requestId;return i?new Promise(o=>{const a=setTimeout(()=>{this.Logger.warn(`[Appliance]: font face worker request timeout: ${i}`),this.resolveFontFaceWorkerRequest(i,!1,!0)},this.control.loadFontFacesTimeout),c=()=>this.resolveFontFaceWorkerRequest(i,!1,!0);if(this.fontFaceWorkerResolveMap.set(i,{timer:a,resolve:o,worker:t,signal:n,onAbort:c}),n==null||n.addEventListener("abort",c,{once:!0}),n!=null&&n.aborted){c();return}try{t.postMessage(new Set([e]),r||[])}catch{this.resolveFontFaceWorkerRequest(i,!1,!0)}}):Promise.resolve(!1)}getWorkers(){return[this.getFullWorker(),this.getSubWorker()].filter(Boolean)}async areWorkerFontFacesReady(t){if(!this.control.hasOffscreenCanvas)return!0;const e=this.getWorkers();if(!e.length)return!1;const r=this.control.extendFontFaces.map(({fontFamily:i})=>({fontFamily:i}));return(await Promise.all(e.map(i=>this.requestFontFaceWorker(i,{msgType:le.CheckFontFace,dataType:Re.Local,viewId:"",fontFaces:r,requestId:this.createFontFaceRequestId("check")},void 0,t)))).every(Boolean)}async waitWorkerReadyForFontFaces(t){if(!this.control.hasOffscreenCanvas)return!0;const e=()=>this.control.isUseSimple?!!this.getFullWorker():!!this.getFullWorker()&&!!this.getSubWorker();if(e())return!0;const r=Date.now();return new Promise(n=>{let i=!1,o;const a=u=>{i||(i=!0,o&&clearTimeout(o),t==null||t.removeEventListener("abort",c),n(u))},c=()=>a(!1),l=()=>{if(t!=null&&t.aborted){a(!1);return}if(e()){a(!0);return}if(Date.now()-r>=this.control.loadFontFacesTimeout){a(!1);return}o=setTimeout(l,16)};t==null||t.addEventListener("abort",c,{once:!0}),l()})}assertAttemptActive(t,e){if(t.aborted||!e())throw ia("Font face load attempt is no longer active")}async getRuntimeFontFacesReadyState(t){if(!this.control.hasExtendFontFaces)return{documentReady:!0,workerReady:!0};const e=this.areDocumentFontFacesReady(),r=await this.areWorkerFontFacesReady(t);return{documentReady:e,workerReady:r}}async loadFontFaceBuffers(t,e){const r=[];for(const n of this.control.extendFontFaces){this.assertAttemptActive(t,e);let i;const o=await this.indexDBUtils.getFontFromDB(n.fontFamily,n.src,t);if(this.assertAttemptActive(t,e),o&&o.byteLength>0&&this.validateFontData(new Uint8Array(o))&&(i=o),!i&&(i=await this.loadFontInMainThread(n.src,t),this.assertAttemptActive(t,e),i&&i.byteLength>0)){const a=await this.indexDBUtils.saveFontToDB(n.fontFamily,n.src,i,t);this.assertAttemptActive(t,e),a||this.Logger.warn(`[Appliance]: Failed to save font ${n.fontFamily} to IndexedDB, but continuing with font loading`)}i&&i.byteLength>0?r.push({fontFamily:n.fontFamily,buffer:i}):this.Logger.warn(`[Appliance]: Font ${n.fontFamily} could not be loaded from any source`)}return r}async setDocumentFontFaces(t,e,r){if(typeof document>"u"||!document.fonts)return!1;for(const{fontFamily:n,buffer:i}of t){let o;try{if(this.assertAttemptActive(e,r),this.isDocumentFontFaceReady(n))continue;o=new FontFace(n,i.slice(0)),await o.load(),this.assertAttemptActive(e,r),document.fonts.add(o),await o.loaded,this.assertAttemptActive(e,r)}catch(a){if(e.aborted||!r()){if(o)try{document.fonts.delete(o)}catch{}throw ia("Document font load attempt is no longer active")}return this.Logger.error(`[Appliance]: set document font faces error: ${(a==null?void 0:a.message)||a}`),!1}}return this.assertAttemptActive(e,r),this.areDocumentFontFacesReady()}async setWorkerFontFaces(t,e,r){if(!this.control.hasOffscreenCanvas)return!0;const n=this.getWorkers();if(!n.length)return!1;const i=await Promise.all(n.map(o=>{const a=t.map(({fontFamily:c,buffer:l})=>({fontFamily:c,buffer:l.slice(0)}));return this.requestFontFaceWorker(o,{msgType:le.SetFontFace,dataType:Re.Local,viewId:"",fontBuffers:a,requestId:this.createFontFaceRequestId("set")},a.map(({buffer:c})=>c),e)}));return this.assertAttemptActive(e,r),i.every(Boolean)&&await this.areWorkerFontFacesReady(e)}async doLoadFontFaces(t,e,r=()=>!0){if(!e)throw new Error("Font face load requires an attempt signal");if(this.assertAttemptActive(e,r),this.lastFontFacesAlreadyReady=!1,!this.control.hasExtendFontFaces)return this.assertAttemptActive(e,r),this.lastFontFacesAlreadyReady=!0,{status:"success"};if(await this.waitDocumentFontsReady("fontFaceLoad",void 0,e),this.assertAttemptActive(e,r),!await this.waitWorkerReadyForFontFaces(e))return this.assertAttemptActive(e,r),{status:"timeout"};this.assertAttemptActive(e,r);const n=await this.getRuntimeFontFacesReadyState(e);if(this.assertAttemptActive(e,r),n.documentReady&&n.workerReady)return this.lastFontFacesAlreadyReady=!0,{status:"success"};t==null||t(),this.Logger.info(`[Appliance]: load font faces ${JSON.stringify(this.control.extendFontFaces)}`);const i=await this.loadFontFaceBuffers(e,r);if(this.assertAttemptActive(e,r),i.length!==this.control.extendFontFaces.length)return{status:"error"};const o=n.documentReady||await this.setDocumentFontFaces(i,e,r);this.assertAttemptActive(e,r);const a=n.workerReady||await this.setWorkerFontFaces(i,e,r);return this.assertAttemptActive(e,r),o&&a?(this.Logger.info("[Appliance]: set font faces success"),{status:"success"}):{status:"error"}}getLastFontFacesAlreadyReady(){return this.lastFontFacesAlreadyReady}async loadFontFaces(){const t=this.activeFontFaceAttempt;if(t&&t.generation===this.fontFaceLoadGeneration)return t.promise;const e=++this.fontFaceLoadGeneration,r=new AbortController;let n;const i={generation:e,controller:r,promise:new Promise(l=>{n=l}),resolve:l=>n(l),settled:!1,started:!1};this.activeFontFaceAttempt=i,this.lastFontFacesAlreadyReady=!1;const o=()=>this.activeFontFaceAttempt===i&&this.fontFaceLoadGeneration===i.generation,a=()=>{!o()||i.started||(i.started=!0,this.control.emitFontFaceLoadState({status:"start"}))},c=(l,u)=>{if(i.settled)return;const h=o();i.settled=!0,i.timer&&clearTimeout(i.timer),h&&i.started&&this.control.emitFontFaceLoadState(l),h&&l.status!=="success"&&(this.activeFontFaceAttempt=void 0,this.fontFaceLoadGeneration+=1),u&&r.abort(),i.resolve(l)};return i.timer=setTimeout(()=>c({status:"timeout"},!0),this.control.loadFontFacesTimeout),this.doLoadFontFaces(a,r.signal,o).then(l=>c(l,l.status!=="success"),l=>{!i.settled&&o()&&this.Logger.error(`[Appliance]: load font faces error: ${(l==null?void 0:l.message)||l}`),c(r.signal.aborted?{status:"timeout"}:{status:"error"},!0)}),i.promise}async loadFontInMainThread(t,e){try{if(e.aborted)throw ia("Font fetch aborted");const r=await fetch(t,{signal:e});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const n=await r.arrayBuffer();if(e.aborted)throw ia("Font fetch aborted");if(!n||n.byteLength===0)throw new Error("Empty font data received");const i=new Uint8Array(n);if(!this.validateFontData(i))throw new Error("Invalid font data format: not a valid font file");return n}catch(r){if(e.aborted)throw r;this.Logger.error(`[Appliance]: Failed to load font from ${t}: ${r instanceof Error?r.message:String(r)}`);return}}validateFontData(t){return t.length<4?!1:t[0]===119&&t[1]===79&&t[2]===70&&t[3]===50||t[0]===119&&t[1]===79&&t[2]===70&&t[3]===70||t[0]===0&&t[1]===1&&t[2]===0&&t[3]===0||t[0]===79&&t[1]===84&&t[2]===84&&t[3]===79||t.length>36&&t[36]===0&&t[37]===1&&t[38]===0&&t[39]===0}handleWorkerMessage(t){const{type:e,requestId:r,setFontFaceResult:n,fontFaceCheckResult:i,failedFonts:o}=t;return e!==le.SetFontFace&&e!==le.CheckFontFace?!1:(e===le.SetFontFace&&(o!=null&&o.length)&&this.Logger.info("[Appliance]: set font face has failed fonts: "+o.join(", ")),r&&this.resolveFontFaceWorkerRequest(r,e===le.CheckFontFace?!!i:!!n&&!(o!=null&&o.length)),!0)}}const Jwe=new Set([Q.Eraser,Q.PencilEraser,Q.BitMapEraser]),xs=2e3,sa=8e3,_we=32,Jp=8,eSe={x:1,y:1,width:3,height:2},_p=2;function em(s,t){return t.map(({x:e,y:r,expected:n,inside:i})=>{const o=Array.from(s.getImageData(e,r,1,1).data.slice(0,4));return{x:e,y:r,expected:n,actual:o,inside:i,ok:i?o[3]>=16&&o[0]>=o[3]-5&&o[1]<=5&&o[2]<=5:o[3]<=5}})}function Ju(s){return!!s&&s.length>=4&&s.every(({ok:t})=>t)}function oa(s){const t=s==null?void 0:s.programProbe;return(s==null?void 0:s.offscreenCanvas)===!0&&s.contextSupported===!0&&(t==null?void 0:t.passed)===!0&&Ju(t.destinationPixelChecks)}function tm(s,t){var e;return{renderMode:s.renderMode,contextType:((e=t==null?void 0:t.programProbe)==null?void 0:e.actualContextType)||s.contextType}}function tSe(s){const t=Math.max(0,s-Date.now());return t===0?Promise.resolve():new Promise(e=>{let r=!1,n,i;const o=()=>{r||(r=!0,i!==void 0&&clearTimeout(i),n!==void 0&&typeof globalThis.cancelAnimationFrame=="function"&&globalThis.cancelAnimationFrame(n),e())};i=setTimeout(o,Math.min(_we,t)),typeof globalThis.requestAnimationFrame=="function"&&(n=globalThis.requestAnimationFrame(o))})}function Zr(s,t){var e,r;return((e=s.getRenderContextTypeForView)==null?void 0:e.call(s,t))??((r=s.renderingCompatibilityDecision)==null?void 0:r.contextType)??"2d"}function rSe(s,t){const e=s||{},r=t||{},n=[],i=[],o=[];for(const a of Object.keys(r))a in e?ve.isEqual(e[a],r[a])||i.push(a):n.push(a);for(const a of Object.keys(e))a in r||o.push(a);return{added:n,updated:i,removed:o}}const Xl=new Set([Q.Pencil,Q.Arrow,Q.Straight,Q.Ellipse,Q.Rectangle,Q.Star,Q.Polygon,Q.Triangle,Q.Rhombus,Q.SpeechBalloon]);function rm(s){return s===Q.Pencil?$e.DrawingPencil:s===Q.Arrow||s===Q.Straight?$e.DrawingArrow:s===Q.Eraser?$e.DrawingEraser:s===Q.PencilEraser?$e.DrawingPencilEraser:s===Q.BitMapEraser?$e.DrawingBitMapEraser:$e.DrawingShape}function Rs(s){switch(s){case $e.DrawingPencil:case $e.DrawingArrow:case $e.DrawingShape:case $e.DrawingEraser:case $e.DrawingPencilEraser:case $e.DrawingBitMapEraser:return{kind:"stop-event"};case $e.MethodTranslateNode:return{kind:"method-pause",emitEventType:Te.TranslateNode};case $e.MethodScaleNode:return{kind:"method-pause",emitEventType:Te.ScaleNode};case $e.MethodRotateNode:return{kind:"method-pause",emitEventType:Te.RotateNode};case $e.MethodSetPoint:return{kind:"method-pause",emitEventType:Te.SetPoint};case $e.MethodSetColorNode:return{kind:"method-pause",emitEventType:Te.SetColorNode};case $e.AsyncCopyNode:case $e.AsyncPasteNode:case $e.AsyncDeleteNode:case $e.AsyncSetFontStyle:case $e.AsyncSetShapeOpt:case $e.AsyncZIndexNode:case $e.AsyncSetLock:case $e.AsyncUpdateElement:case $e.AsyncImage:case $e.AsyncIcon:case $e.AsyncMarkmap:case $e.Text:case $e.Clear:return{kind:"wait-owner"}}}const Ni=s=>typeof s=="number"&&Jwe.has(s),nm=s=>s===le.FullWork||s===le.UpdateNode||s===le.RemoveNode||s===le.DrawWork||s===le.Select||s===le.TextUpdate,Jl=4096;class nSe{get now(){var t;return((t=this.control.room)==null?void 0:t.calibrationTimestamp)||Date.now()}get newWorkId(){return this.now.toString()}setCurrentToolsData(t){this.currentToolsData=t}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(t){this.currentLocalWorkData=t}getWorkId(){return this.currentLocalWorkData.workId}get workState(){return this.currentLocalWorkData.workState}}class Oi extends Error{constructor(){super("render runtime recovery cancelled"),this.name="RenderRuntimeRecoveryCancelledError"}}class iSe extends nSe{constructor(e){super();x(this,"maxLastSyncTime",He.syncOpt.interval);x(this,"combineUnitTime",He.bezier.combineUnitTime);x(this,"maxCombineEraserTime",Id);x(this,"smoothSync",He.syncOpt.smoothSync);x(this,"isActive",!1);x(this,"currentToolsData");x(this,"currentLocalWorkData");x(this,"control");x(this,"internalMsgEmitter");x(this,"publicMsgEmitter");x(this,"taskBatchData",new Set);x(this,"fullWorker");x(this,"subWorker");x(this,"fullWorkerUrl");x(this,"subWorkerUrl");x(this,"methodBuilder");x(this,"zIndexNodeMethod");x(this,"subWorkerDrawCount",0);x(this,"fullWorkerDrawCount",0);x(this,"maxDrawCount",0);x(this,"_consumeCount",0);x(this,"_postCount",0);x(this,"reRenders",new Map);x(this,"localWorkViewId");x(this,"localPointsBatchData",new Map);x(this,"tasksqueue",new Map);x(this,"cameraUpdateStateByView",new Map);x(this,"cameraClearReplayByView",new Map);x(this,"cameraClearReplaySequence",0);x(this,"cameraFailureSequenceByView",new Map);x(this,"cameraUpdateEndWaitersByView",new Map);x(this,"viewLifecycleIdleWaitersByView",new Map);x(this,"cameraTaskSequenceByView",new Map);x(this,"cameraRecoverySequence",0);x(this,"pendingDprOwnerByView",new Map);x(this,"dprUpdateSequence",0);x(this,"localWorkFinalizeQueueByView",new Map);x(this,"localWorkFinalizeQueue",Promise.resolve());x(this,"operationBarrierQueueByView",new Map);x(this,"operationBarrierEpochByView",new Map);x(this,"operationBarrierInvalidationWaitersByView",new Map);x(this,"cancelledEraseTxnIds",new Set);x(this,"cancelledEraseTxnOwners",new Map);x(this,"cancelledLocalWorkOwners",new Map);x(this,"fullLayerBitmapEraseTxns",new Map);x(this,"fullLayerBitmapEraseTxnWaiters",new Map);x(this,"snapshotMap",new Map);x(this,"snapshotRequestIdByViewScene",new Map);x(this,"boundingRectMap",new Map);x(this,"boundingRectRequestIdByViewScene",new Map);x(this,"clearAllResolveMap",new Map);x(this,"localEventQueue",Promise.resolve());x(this,"localEventQueueByView",new Map);x(this,"localDoneDispatchTimersByView",new Map);x(this,"localEventSequence",0);x(this,"localInputEpochByView",new Map);x(this,"localInputTransactionEpochByView",new Map);x(this,"localDoneWaitSequence",0);x(this,"queuedLocalEventCount",0);x(this,"activeLocalEvent");x(this,"localDoneWaitByView",new Map);x(this,"delayWorkStateToDoneResolveByView",new Map);x(this,"localDoneWait");x(this,"delayWorkStateToDoneResolve");x(this,"animationId");x(this,"tmpImageConfigMap",new Map);x(this,"mainThread");x(this,"backgroundThreadManager");x(this,"willSelectorWorkIdByView",new Map);x(this,"isLockSentEventCursor",!1);x(this,"getVNodeInfoResolveMap",new Map);x(this,"refreshTextRenderResolveMap",new Map);x(this,"fontFaceManager");x(this,"isLocalWorkActive",!1);x(this,"hasMainViewInitAck",!1);x(this,"mainViewInitReady",new iM);x(this,"serviceSyncReadyViews",new Set);x(this,"mainViewInitAckCallbacks",new Set);x(this,"initAckedViewIds",new Set);x(this,"viewInitAckTimeoutTimers",new Map);x(this,"renderRuntimeCacheSavePromise");x(this,"pendingTransportMessages",new Map);x(this,"isRenderTransportReady",!1);x(this,"renderRuntimeFallbackSequence",0);x(this,"activeRenderRuntimeRecovery");x(this,"viewInitRecoveryAttempts",new Map);x(this,"viewInitRecoveryDestroying",new Set);x(this,"viewInitAckWaiters",new Map);x(this,"serviceSyncCommitWaiters",new Map);x(this,"viewServiceReadyWaiters",new Map);x(this,"initReconcileTasks",new Map);x(this,"serviceSyncSequence",0);x(this,"initGeneration",0);x(this,"viewGenerationById",new Map);x(this,"fullLayerFrameStateByView",new Map);x(this,"pendingDprByView",new Map);x(this,"viewRecoveryQueueByView",new Map);x(this,"initCameraOptByView",new Map);x(this,"markmapIdResolveMap",new Map);const{control:r,internalMsgEmitter:n,publicMsgEmitter:i}=e;this.control=r,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.combineUnitTime=this.control.pluginOptions.extras.bezier.combineUnitTime||this.combineUnitTime,this.smoothSync=ve.isBoolean(this.control.pluginOptions.extras.syncOpt.smoothSync)?this.control.pluginOptions.extras.syncOpt.smoothSync:this.smoothSync,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl||"",this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl||"",this.internalMsgEmitter=n,this.publicMsgEmitter=i,this.currentLocalWorkData={workState:he.Pending},this.fontFaceManager=new Xwe({control:this.control,getFullWorker:()=>this.fullWorker,getSubWorker:()=>this.subWorker})}getDoneWaitForView(e){var i;const r=(i=this.localDoneWaitByView)==null?void 0:i.get(e);if(r)return r;const n=this.localDoneWait;if(n&&(!n.viewId||n.viewId===e))return{...n,viewId:e}}getDoneResolverForView(e){var i,o;const r=(i=this.delayWorkStateToDoneResolveByView)==null?void 0:i.get(e);if(r)return r;const n=this.localDoneWait;if(this.delayWorkStateToDoneResolve&&!((o=this.delayWorkStateToDoneResolveByView)!=null&&o.size)&&(!(n!=null&&n.viewId)||n.viewId===e))return this.delayWorkStateToDoneResolve}getLocalWorkFinalizeQueue(e){return this.localWorkFinalizeQueueByView?this.localWorkFinalizeQueueByView.get(e)||Promise.resolve():this.localWorkFinalizeQueue||Promise.resolve()}setLocalWorkFinalizeQueue(e,r){if(this.localWorkFinalizeQueueByView){this.localWorkFinalizeQueueByView.set(e,r);return}this.localWorkFinalizeQueue=r}clearLocalWorkFinalizeQueue(e,r){if(this.localWorkFinalizeQueueByView){this.localWorkFinalizeQueueByView.get(e)===r&&this.localWorkFinalizeQueueByView.delete(e);return}this.localWorkFinalizeQueue===r&&(this.localWorkFinalizeQueue=Promise.resolve())}clearDoneWaitForView(e,r){var i,o,a,c,l,u;const n=(i=this.localDoneWaitByView)==null?void 0:i.get(e);r&&(n==null?void 0:n.token)!==r||((o=this.localDoneWaitByView)==null||o.delete(e),(a=this.delayWorkStateToDoneResolveByView)==null||a.delete(e),(!r||((c=this.localDoneWait)==null?void 0:c.token)===r)&&(((l=this.localDoneWait)==null?void 0:l.viewId)===void 0||((u=this.localDoneWait)==null?void 0:u.viewId)===e)&&(this.localDoneWait=void 0,this.delayWorkStateToDoneResolve=void 0))}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}get Logger(){return this.control.logger}logRenderRuntimeFallback(e,r,n="info"){const i=`[Appliance]: [render-runtime-fallback] stage=${e} ${JSON.stringify(r)}`;this.Logger[n](i)}logMainViewCameraTrace(e,r){const n=this.Logger,i=`[Appliance]: [main-view-camera] stage=${e} ${JSON.stringify(r)}`;n.infoDebounced?n.infoDebounced(`main-view-camera:${e}`,i):n.info(i)}logAppViewCameraTrace(e,r,n){const i=this.Logger,o=`[Appliance]: [app-view-camera] stage=${r} ${JSON.stringify({viewId:e,...n})}`;i!=null&&i.infoDebounced?i.infoDebounced(`app-view-camera:${e}:${r}`,o):i&&i.info(o)}closeImageBitmap(e){var r;if(e)try{(r=e.close)==null||r.call(e)}catch(n){this.logLocalWorkBarrierError(`[Appliance]: ImageBitmap release failed; error=${n instanceof Error?n.message:String(n)}`)}}getViewSceneRequestKey(e,r){return`${e}\0${r}`}settleSnapshotFailure(e,r,n){const i=this.getViewSceneRequestKey(e,r);if(this.snapshotRequestIdByViewScene.get(i)!==n)return;const o=this.snapshotMap.get(i);!o||o.requestId!==n||o.resolve(o.value.map(a=>a||null))}settleBoundingRectFailure(e,r,n){const i=this.getViewSceneRequestKey(e,r);if(this.boundingRectRequestIdByViewScene.get(i)!==n)return;const o=this.boundingRectMap.get(i);!o||o.requestId!==n||o.resolve({x:0,y:0,w:0,h:0})}settleViewRenderRequests(e){var r,n;for(const[i,o]of this.snapshotMap)o.viewId===e&&(this.snapshotMap.delete(i),this.snapshotRequestIdByViewScene.get(i)===o.requestId&&this.snapshotRequestIdByViewScene.delete(i),o.resolve(o.value.map(a=>a||null)));for(const[i,o]of this.boundingRectMap)o.viewId===e&&(this.boundingRectMap.delete(i),this.boundingRectRequestIdByViewScene.get(i)===o.requestId&&this.boundingRectRequestIdByViewScene.delete(i),o.resolve({x:0,y:0,w:0,h:0}));try{(r=this.mainThread)==null||r.discardView(e)}catch(i){this.logLocalWorkBarrierError(`[Appliance]: main snapshot cleanup failed; viewId=${e}; error=${i instanceof Error?i.message:String(i)}`)}try{(n=this.backgroundThreadManager)==null||n.discardView(e)}catch(i){this.logLocalWorkBarrierError(`[Appliance]: background snapshot cleanup failed; viewId=${e}; error=${i instanceof Error?i.message:String(i)}`)}}afterMainViewInitAck(e){const r=this.initGeneration;if(this.hasMainViewInitAck){window.setTimeout(()=>{if(this.initGeneration===r)try{e()}catch{}},0);return}this.mainViewInitAckCallbacks.add(e)}get isMainViewInitAck(){return this.hasMainViewInitAck}waitForMainViewInitAck(e=6e4){return this.mainViewInitReady.wait(e)}isViewInitAck(e){return this.initAckedViewIds.has(e)}ackMainViewInit(e,r,n){var d;const i=this.viewGenerationById.get(e),o=Zr(this.control,e),a=Qt(this.control.renderMode,o);if(r!==void 0&&i!==r){this.Logger.warn(`[Appliance]: [render-init] stage=ack-ignored viewId=${e} receivedGeneration=${r} currentGeneration=${i} reason=generation-mismatch`);return}if(this.initAckedViewIds.has(e)){this.Logger.warn(`[Appliance]: [render-init] stage=ack-ignored viewId=${e} reason=duplicate-ack`);return}if(mt(this.Logger,{category:"render-init",viewId:e,generation:r??i??"unknown",stage:"ack-received",details:{transport:this.control.renderMode,context:o,actualWorkerContext:n||"unreported"}}),this.control.renderMode!=="main-thread"&&n!==o){this.Logger.error(`[Appliance]: [render-init] stage=ack-context-mismatch viewId=${e} generation=${r??i??"unknown"} expectedContext=${o} actualContext=${n||"unreported"}`),Ta(this.Logger,e),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r??i,reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:"init-context-mismatch",reportError:`expected ${o}, actual ${n||"unreported"}`,reportContextType:n});return}this.initAckedViewIds.add(e);const c=`${e}:${r??i}`,l=(d=this.viewInitAckTimeoutTimers)==null?void 0:d.get(c);l&&(clearTimeout(l),this.viewInitAckTimeoutTimers.delete(c)),this.activeRenderRuntimeRecovery&&this.logRenderRuntimeFallback("init-acked",{recoveryId:this.activeRenderRuntimeRecovery.recoveryId,viewId:e,generation:r,elapsedMs:Date.now()-this.activeRenderRuntimeRecovery.startedAt});const u=this.viewInitAckWaiters.get(e);if(u){for(const f of[...u])r!==void 0&&f.generation!==r||(clearTimeout(f.timer),u.delete(f),f.resolve(!0));u.size||this.viewInitAckWaiters.delete(e)}if(e===Fe&&!this.hasMainViewInitAck&&(this.hasMainViewInitAck=!0,this.mainViewInitReady.markReady()),mt(this.Logger,{category:"render-init",viewId:e,generation:i??"unknown",stage:"ack-completed",details:{transport:this.control.renderMode,context:o,renderModel:a}}),i!==void 0&&this.scheduleInitReconcile(e,i),e!==Fe)return;const h=[...this.mainViewInitAckCallbacks];this.mainViewInitAckCallbacks.clear();for(const f of h)window.setTimeout(()=>{try{f()}catch{}},0)}scheduleInitReconcile(e,r){if(this.initReconcileTasks.has(e))return;mt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"ack-reconcile"});const n=this.reconcileViewInit(e,r).catch(i=>{this.viewGenerationById.get(e)===r&&(this.Logger.error(`[Appliance]: [init-reconcile] stage=failed viewId=${e} generation=${r} error=${i instanceof Error?i.message:String(i)}`),Ta(this.Logger,e))}).finally(()=>{this.initReconcileTasks.get(e)===n&&this.initReconcileTasks.delete(e)});this.initReconcileTasks.set(e,n)}isCurrentViewGeneration(e,r){return this.viewGenerationById.get(e)===r&&!!this.viewContainerManager.getView(e)}async reconcileViewInit(e,r){var i,o,a,c,l,u,h,d,f,g,y,S,b,C,N,T,p,m,v,M,R,E,P,k;let n=0;for(;this.isCurrentViewGeneration(e,r);){const O=this.viewContainerManager.getView(e);if(!O)return;const B=((o=(i=this.control).getPendingInitTargetScenePath)==null?void 0:o.call(i,e))||O.focusScenePath;if(!B){this.finalizeViewInitReady(e,r,void 0);return}const D=((c=(a=this.control).getPendingInitReconcileRevision)==null?void 0:c.call(a,e,B))||{anchorRevision:0,cameraRevision:0,forceFullRevision:0};if(O.focusScenePath!==B){const j=this.viewContainerManager.setViewScenePathBeforeRenderInit(e,B);mt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"retrigger-scene",details:{scenePath:B,applied:j}})}const A=(u=(l=this.control).getPendingInitCameraForScene)==null?void 0:u.call(l,e,B),L=A||O.cameraOpt,U=this.initCameraOptByView.get(e),Y=((h=this.cameraUpdateStateByView.get(e))==null?void 0:h.isRecovering)===!0,q=!!(!Y&&L&&(!U||!this.isSameCameraOpt(U,L)));if(mt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"retrigger-camera",details:{scenePath:B,source:Y?"camera-recovery":A?"padding":"window-manager",applied:q}}),q&&L){const j=((d=this.cameraFailureSequenceByView)==null?void 0:d.get(e))||0;this.updateCameraForReadyRenderer(e,L);const F=await this.waitForInitCameraCatchUp(e,r);if(!this.isCurrentViewGeneration(e,r))return;if(!F||(((f=this.cameraFailureSequenceByView)==null?void 0:f.get(e))||0)!==j){this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r,reportErrorCode:"INIT_CAMERA_CATCH_UP_FAILED",reportStage:"init-camera-catch-up",reportError:F?"camera renderer reported failure":"camera catch-up timeout"});return}this.initCameraOptByView.set(e,{...L})}const ie=((g=this.collector)==null?void 0:g.readSceneStorageSnapshot(e,B))||{revision:0,storage:{}},z=((b=(S=(y=this.control).getPendingInitLastApplied)==null?void 0:S.call(y,e,B))==null?void 0:b.storage)||((N=(C=this.control).getPendingInitServiceBaseline)==null?void 0:N.call(C,e,B))||{},V=rSe(z,ie.storage),Z=!((p=(T=this.control).hasPendingInitAppliedSnapshot)!=null&&p.call(T,e,B));mt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"read-service-snapshot",details:{scenePath:B,revision:ie.revision,keys:Object.keys(ie.storage).length}}),mt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"service-diff",details:{scenePath:B,added:V.added.length,updated:V.updated.length,removed:V.removed.length}}),mt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"service-full-sync",details:{scenePath:B,reason:Z?"first-init":"post-commit-dirty"}});const $=await this.submitInitServiceSnapshot(e,B,r,ie.revision);if(!this.isCurrentViewGeneration(e,r))return;if(!$){if(n+=1,n<2)continue;this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r,reportErrorCode:"SERVICE_SYNC_COMMIT_TIMEOUT",reportStage:"init-service-commit",reportError:"service sync commit timeout"});return}n=0,(v=(m=this.control).markPendingInitServiceApplied)==null||v.call(m,e,B,ie.storage,ie.revision);const ee=this.viewContainerManager.getView(e),oe=((R=(M=this.control).getPendingInitTargetScenePath)==null?void 0:R.call(M,e))||(ee==null?void 0:ee.focusScenePath),ce=((P=(E=this.control).getPendingInitReconcileRevision)==null?void 0:P.call(E,e,B))||{anchorRevision:0,cameraRevision:0,forceFullRevision:0},me=((k=this.collector)==null?void 0:k.readSceneStorageSnapshot(e,B).revision)||0,pe=[];if((oe!==B||ce.anchorRevision!==D.anchorRevision)&&pe.push("scene"),ce.cameraRevision!==D.cameraRevision&&pe.push("camera"),me!==ie.revision&&pe.push("service"),ce.forceFullRevision!==D.forceFullRevision&&pe.push("force"),pe.length){mt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"post-commit-dirty",details:{scenePath:B,reason:pe.join(",")}});continue}this.finalizeViewInitReady(e,r,B);return}}submitInitServiceSnapshot(e,r,n,i){const o=`init-service-${n}-${++this.serviceSyncSequence}`,a=this.waitForServiceSyncCommit(o,e,n);return this.control.textEditorManager.clear(e,!0),this.taskBatchData.add({msgType:le.Clear,dataType:Re.Service,viewId:e,viewGeneration:n,scenePath:r}),this.pullServiceDataForReadyRenderer(e,r,{isAsync:!1,useAnimation:!1}),this.taskBatchData.add({msgType:le.ServiceSyncCommit,dataType:Re.Service,viewId:e,viewGeneration:n,scenePath:r,serviceSyncId:o,serviceRevision:i}),mt(this.Logger,{category:"init-reconcile",viewId:e,generation:n,stage:"service-commit-sent",details:{scenePath:r,syncId:o,revision:i}}),this.consume(),a}waitForInitCameraCatchUp(e,r,n=ca+1e3){let i;const o=new Promise(c=>{i=setTimeout(()=>c(!1),n)}),a=this.waitForCameraUpdateEnd(e).then(()=>this.isCurrentViewGeneration(e,r),()=>!1);return Promise.race([a,o]).finally(()=>{i&&clearTimeout(i)})}waitForServiceSyncCommit(e,r,n,i=5e3){return new Promise(o=>{const a=setTimeout(()=>{this.serviceSyncCommitWaiters.delete(e),this.Logger.error(`[Appliance]: [init-reconcile] stage=service-commit-timeout viewId=${r} generation=${n} syncId=${e}`),o(!1)},i);this.serviceSyncCommitWaiters.set(e,{viewId:r,generation:n,resolve:o,timer:a})})}ackServiceSyncCommit(e){const r=e.serviceSyncId;if(!r)return;const n=this.serviceSyncCommitWaiters.get(r);!n||n.viewId!==e.viewId||n.generation!==e.viewGeneration||this.viewGenerationById.get(n.viewId)!==n.generation||(this.serviceSyncCommitWaiters.delete(r),clearTimeout(n.timer),mt(this.Logger,{category:"init-reconcile",viewId:n.viewId,generation:n.generation,stage:"service-commit-acked",details:{scenePath:e.scenePath||"none",syncId:r,revision:e.serviceRevision??0}}),n.resolve(!0))}finalizeViewInitReady(e,r,n){var o,a,c,l,u,h,d,f,g;if(!this.isCurrentViewGeneration(e,r))return;(o=this.cameraUpdateStateByView.get(e))!=null&&o.isRecovering||(a=this.viewInitRecoveryAttempts)==null||a.delete(e),(c=this.viewInitRecoveryDestroying)==null||c.delete(e),this.initCameraOptByView.delete(e),this.markServiceSyncReady(e),(u=(l=this.control).clearPendingViewInitState)==null||u.call(l,e),this.activeRenderRuntimeRecovery||(this.control.onViewServiceReady(e),this.dispatchCameraRecoveryReplay(e,r)),owe(this.Logger,{viewId:e,generation:r,details:{finalScenePath:n||"none",serviceSync:"ready"}}),this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"success"}),this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"success"});for(const[y,S]of this.viewInitAckTimeoutTimers||[])y.startsWith(`${e}:`)&&(clearTimeout(S),this.viewInitAckTimeoutTimers.delete(y));const i=this.viewServiceReadyWaiters.get(e);i==null||i.forEach(y=>{y.generation===r&&(clearTimeout(y.timer),y.resolve(!0),i.delete(y))}),i!=null&&i.size||this.viewServiceReadyWaiters.delete(e),((d=(h=this.control.pluginOptions)==null?void 0:h.extras)==null?void 0:d.useWorker)==="auto"&&this.control.renderingCompatibilityDecision.renderRuntimeCacheState!=="hit"&&!this.activeRenderRuntimeRecovery&&!this.renderRuntimeCacheSavePromise&&(this.renderRuntimeCacheSavePromise=((g=(f=this.control).persistRenderRuntimeDecision)==null?void 0:g.call(f))||Promise.resolve())}flushPendingTransportInitMessages(){if(!this.isRenderTransportReady)return;const e=new Set;for(const[r,n]of this.pendingTransportMessages)e.add(n),this.pendingTransportMessages.delete(r);if(e.size){for(const r of e)r.viewGeneration!==void 0&&this.armViewInitAckTimeout(r.viewId,r.viewGeneration),mt(this.Logger,{category:"render-init",viewId:r.viewId,generation:r.viewGeneration,stage:"sent",details:{renderModel:Qt(this.control.renderMode,Zr(this.control,r.viewId)),context:Zr(this.control,r.viewId),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}});e.size&&this.dispatchMessages(e)}}getPendingInitMessageKey(e){return`${e.msgType}:${e.viewId}:${e.scenePath||""}`}markServiceSyncReady(e){this.serviceSyncReadyViews.add(e)}waitForViewInitAck(e,r,n=5e3){return this.initAckedViewIds.has(e)&&this.viewGenerationById.get(e)===r?Promise.resolve(!0):new Promise(i=>{const o=this.viewInitAckWaiters.get(e)||new Set,a={generation:r,resolve:i,timer:setTimeout(()=>{o.delete(a),o.size||this.viewInitAckWaiters.delete(e),i(!1)},n)};o.add(a),this.viewInitAckWaiters.set(e,o)})}waitForViewServiceReady(e,r,n=1e4){return this.serviceSyncReadyViews.has(e)&&this.viewGenerationById.get(e)===r?Promise.resolve(!0):new Promise(i=>{const o=this.viewServiceReadyWaiters.get(e)||new Set,a={generation:r,resolve:i,timer:setTimeout(()=>{o.delete(a),o.size||this.viewServiceReadyWaiters.delete(e),i(!1)},n)};o.add(a),this.viewServiceReadyWaiters.set(e,o)})}armViewInitAckTimeout(e,r,n=1e4){const i=`${e}:${r}`,o=this.viewInitAckTimeoutTimers.get(i);o&&clearTimeout(o);const a=window.setTimeout(()=>{this.viewInitAckTimeoutTimers.delete(i),!(this.initAckedViewIds.has(e)||this.viewGenerationById.get(e)!==r)&&(this.Logger.error(`[Appliance]: [render-init] stage=ack-timeout viewId=${e} generation=${r}`),Ta(this.Logger,e),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r,reportErrorCode:"RENDER_INIT_TIMEOUT",reportStage:"worker-init-ack",reportError:"render init ack timeout"}))},n);this.viewInitAckTimeoutTimers.set(i,a)}async waitForViewInitCompletion(e){const r=this.viewGenerationById.get(e);if(r===void 0)return"stale";const n=await this.waitForViewInitAck(e,r,1e4);if(this.viewGenerationById.get(e)!==r)return"stale";if(!n)return"timeout";const i=await this.waitForViewServiceReady(e,r,15e3);return this.viewGenerationById.get(e)!==r?"stale":i?"completed":(this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r,reportErrorCode:"RENDER_INIT_TIMEOUT",reportStage:"worker-service-ready",reportError:"render service ready timeout"}),"timeout")}failViewInitOnTerminalRuntime(e){var n,i,o,a;const r=[...new Set([...this.viewInitAckWaiters.keys(),...this.viewServiceReadyWaiters.keys(),...[...this.serviceSyncCommitWaiters.values()].map(({viewId:c})=>c),...this.initReconcileTasks.keys(),...this.viewGenerationById.keys(),...this.viewContainerManager.getAllViews().filter(c=>!!c).map(c=>c.id)])];(i=(n=this.control).invalidateAllPendingViewInit)==null||i.call(n),this.serviceSyncCommitWaiters.forEach(c=>{clearTimeout(c.timer),c.resolve(!1)}),this.serviceSyncCommitWaiters.clear();for(const c of r){this.releaseCameraRecovery(c,`terminal-render-runtime:${e.reportErrorCode||"unknown"}`);const l=e.viewId===c?e.viewGeneration??this.viewGenerationById.get(c):this.viewGenerationById.get(c);this.viewGenerationById.set(c,(this.viewGenerationById.get(c)??0)+1),this.initAckedViewIds.delete(c),this.serviceSyncReadyViews.delete(c);const u=this.viewInitAckWaiters.get(c);u==null||u.forEach(d=>{clearTimeout(d.timer),d.resolve(!1)}),this.viewInitAckWaiters.delete(c);const h=this.viewServiceReadyWaiters.get(c);h==null||h.forEach(d=>{clearTimeout(d.timer),d.resolve(!1)}),this.viewServiceReadyWaiters.delete(c);for(const[d,f]of this.viewInitAckTimeoutTimers)d.startsWith(`${c}:`)&&(clearTimeout(f),this.viewInitAckTimeoutTimers.delete(d));this.initCameraOptByView.delete(c),this.Logger.error(`[Appliance]: [render-init] stage=failed viewId=${c} generation=${l??"unknown"} errorCode=${e.reportErrorCode} reason=terminal-main-thread-runtime`)}this.initReconcileTasks.clear(),this.pendingTransportMessages.clear(),(o=this.viewInitRecoveryAttempts)==null||o.clear(),(a=this.viewInitRecoveryDestroying)==null||a.clear(),this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"error"})}settlePendingViewInitWaitersForRecovery(){var e,r,n,i,o,a,c,l;(e=this.viewInitAckWaiters)==null||e.forEach(u=>{u.forEach(h=>{clearTimeout(h.timer),h.resolve(!1)})}),(r=this.viewInitAckWaiters)==null||r.clear(),(n=this.viewServiceReadyWaiters)==null||n.forEach(u=>{u.forEach(h=>{clearTimeout(h.timer),h.resolve(!1)})}),(i=this.viewServiceReadyWaiters)==null||i.clear(),(o=this.serviceSyncCommitWaiters)==null||o.forEach(u=>{clearTimeout(u.timer),u.resolve(!1)}),(a=this.serviceSyncCommitWaiters)==null||a.clear();for(const u of((c=this.viewInitAckTimeoutTimers)==null?void 0:c.values())||[])clearTimeout(u);(l=this.viewInitAckTimeoutTimers)==null||l.clear()}isViewScopedInitFailure(e){return e.reportErrorCode==="INIT_CAMERA_CATCH_UP_FAILED"||e.reportErrorCode==="SERVICE_SYNC_COMMIT_TIMEOUT"||e.reportErrorCode==="RENDER_INIT_TIMEOUT"&&e.reportStage==="worker-service-ready"}scheduleViewInitRecovery(e,r){const{viewId:n,viewGeneration:i}=e;if(!n||i===void 0){this.failViewInitOnTerminalRuntime(e);return}const o=this.cameraUpdateStateByView.get(n),a=o==null?void 0:o.recoveryOwner;if(this.viewGenerationById.get(n)!==i||!this.viewContainerManager.getView(n)){this.logRenderRuntimeFallback("ignored-stale-view",{recoveryId:r,viewId:n,generation:i,errorCode:e.reportErrorCode},"warn"),this.releaseCameraRecovery(n,"stale-or-removed-view",o,a);return}if(this.viewInitRecoveryAttempts||(this.viewInitRecoveryAttempts=new Map),this.viewInitRecoveryDestroying||(this.viewInitRecoveryDestroying=new Set),this.viewInitRecoveryDestroying.has(n)){this.logRenderRuntimeFallback("ignored-view-recovery-running",{recoveryId:r,viewId:n,generation:i,errorCode:e.reportErrorCode},"warn");return}const c=this.viewInitRecoveryAttempts.get(n)||0,l=c>=_p;l||this.viewInitRecoveryAttempts.set(n,c+1),this.logRenderRuntimeFallback(l?"view-init-recovery-exhausted":"view-init-recovery-start",{recoveryId:r,viewId:n,generation:i,attempt:c+1,maxAttempts:_p,errorCode:e.reportErrorCode},l?"error":"warn"),l&&(this.viewInitRecoveryAttempts.delete(n),this.releaseCameraRecovery(n,"view-init-recovery-exhausted",o,a)),this.viewInitRecoveryDestroying.add(n);try{this.destroyViewWorker(n,"preserve-storage",!l&&(o==null?void 0:o.isRecovering)===!0)}finally{this.viewInitRecoveryDestroying.delete(n)}if(l){this.Logger.error(`[Appliance]: [render-init] stage=failed viewId=${n} generation=${i} errorCode=${e.reportErrorCode} reason=view-init-recovery-exhausted`),n===Fe&&this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"error"});return}const u=this.viewContainerManager.mountView(n);if(o!=null&&o.isRecovering){const d=o.replayCamera;d&&this.control.queuePendingInitCamera(n,d.cameraOpt,d.scenePath)}const h=this.viewGenerationById.get(n);u.catch(d=>{var f;this.Logger.error(`[Appliance]: [render-init] stage=remount-failed viewId=${n} error=${d instanceof Error?d.message:String(d)}`),this.viewGenerationById.get(n)===h&&((f=this.viewInitRecoveryAttempts)==null||f.delete(n)),this.releaseCameraRecovery(n,"view-remount-failed",o,a)})}scheduleRenderRuntimeFallback(e){var c,l,u,h;if(e.reportErrorCode!==iMe&&e.reportErrorCode!=="SERVICE_SYNC_COMMIT_TIMEOUT"&&e.reportErrorCode!=="IMAGE_BITMAP_RENDER_FAILED"&&e.reportErrorCode!=="INIT_CAMERA_CATCH_UP_FAILED"&&e.reportErrorCode!=="RENDER_INIT_TIMEOUT"&&e.reportErrorCode!=="CAMERA_TRANSPORT_TIMEOUT"&&e.reportErrorCode!=="RENDERER_RUNTIME_ERROR")return;if(((l=(c=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:l.call(c))===!1){e.viewId&&this.releaseCameraRecovery(e.viewId,"manager-lifecycle-ended");return}const r=`render-recovery-${Date.now()}-${++this.renderRuntimeFallbackSequence}`,n=this.activeRenderRuntimeRecovery;if(n){if(e.reportErrorCode==="CAMERA_TRANSPORT_TIMEOUT"&&e.viewId){const d=this.cameraUpdateStateByView.get(e.viewId),f=n.views.find(g=>g.viewId===e.viewId);d!=null&&d.isRecovering&&d.replayCamera&&f?(f.replayCamera=this.cloneCameraReplay(d.replayCamera),f.cameraRecoveryOwner=d.recoveryOwner,this.control.queuePendingInitCamera(e.viewId,d.replayCamera.cameraOpt,d.replayCamera.scenePath)):d!=null&&d.isRecovering&&!f&&this.releaseCameraRecovery(e.viewId,"view-not-in-active-runtime-recovery",d)}this.logRenderRuntimeFallback("ignored-already-running",{recoveryId:n.recoveryId,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode},"warn");return}if(this.isViewScopedInitFailure(e)||e.reportErrorCode==="CAMERA_TRANSPORT_TIMEOUT"&&this.control.renderMode==="main-thread"){this.scheduleViewInitRecovery(e,r);return}if(this.control.renderMode==="main-thread"){this.logRenderRuntimeFallback("ignored-terminal-runtime",{recoveryId:r,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,renderModel:"mainThread+canvas2d"},"warn"),this.failViewInitOnTerminalRuntime(e);return}(h=(u=this.control).invalidateAllPendingViewInit)==null||h.call(u),this.serviceSyncReadyViews.clear();const i=this.viewContainerManager.getAllViews().filter(d=>!!d).map(d=>{var y,S;const f=this.cameraUpdateStateByView.get(d.id),g=f?this.beginCameraRecovery(d.id,f):void 0;return(S=(y=this.control).armPendingViewInit)==null||S.call(y,d.id),g&&this.control.queuePendingInitCamera(d.id,g.cameraOpt,g.scenePath),{viewId:d.id,view:d,lifecycleGeneration:this.control.getViewLifecycleGeneration(d.id),viewGeneration:this.viewGenerationById.get(d.id),scenePath:d.focusScenePath,cameraOpt:d.cameraOpt?{...d.cameraOpt}:void 0,replayCamera:g,cameraRecoveryOwner:f==null?void 0:f.recoveryOwner}}),o={recoveryId:r,startedAt:Date.now(),fromRenderMode:this.control.renderMode,fromContextType:this.control.renderingCompatibilityDecision.contextType,views:i,cacheInvalidation:Promise.resolve()};this.activeRenderRuntimeRecovery=o,this.settlePendingViewInitWaitersForRecovery(),o.cacheInvalidation=(this.renderRuntimeCacheSavePromise||Promise.resolve()).catch(()=>{}).then(()=>{var d,f;return(f=(d=this.control).invalidateRenderRuntimeDecision)==null?void 0:f.call(d)}).then(()=>{}).catch(d=>{this.logRenderRuntimeFallback("cache-invalidate-failed",{recoveryId:o.recoveryId,error:d instanceof Error?d.message:String(d)},"warn")}),this.control.queuePendingRuntimeReset(()=>this.runRenderRuntimeFallback(e,o)).then(d=>{d&&this.persistRecoveredRenderRuntime(o,d)}).catch(d=>{this.releaseRenderRuntimeRecoveryCameras(o,"unexpected-runtime-recovery-failure"),this.activeRenderRuntimeRecovery===o&&(this.activeRenderRuntimeRecovery=void 0),this.logRenderRuntimeFallback("failed",{recoveryId:o.recoveryId,errorCode:e.reportErrorCode,failureStage:"unexpected",error:d instanceof Error?d.message:String(d),elapsedMs:Date.now()-o.startedAt},"error")})}isRenderRuntimeRecoveryCurrent(e){return this.activeRenderRuntimeRecovery===e}assertRenderRuntimeRecoveryCurrent(e){var r,n;if(!this.isRenderRuntimeRecoveryCurrent(e))throw new Oi;if(((n=(r=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:n.call(r))===!1)throw e.cancelReason||(e.cancelReason="manager-lifecycle-ended"),new Oi;if(!this.viewContainerManager.getAllViews().some(i=>!!i))throw e.cancelReason||(e.cancelReason="no-active-views"),new Oi}isRenderRuntimeRecoveryViewCurrent(e){return this.viewContainerManager.getView(e.viewId)===e.view&&this.control.isPendingViewInitCurrent(e.viewId,e.lifecycleGeneration)}finishRenderRuntimeRecovery(e){var n,i;this.assertRenderRuntimeRecoveryCurrent(e);const r=[];for(const o of e.views)this.isRenderRuntimeRecoveryViewCurrent(o)&&(r.push(o.viewId),(i=(n=this.control).invalidatePendingViewInit)==null||i.call(n,o.viewId));this.activeRenderRuntimeRecovery=void 0,r.forEach(o=>{if(this.isServiceSyncReady(o)){this.control.onViewServiceReady(o);const a=this.viewGenerationById.get(o);a!==void 0&&this.dispatchCameraRecoveryReplay(o,a)}})}persistRecoveredRenderRuntime(e,r){const n=e.cacheInvalidation.then(async()=>{var i,o,a,c;this.activeRenderRuntimeRecovery||((o=(i=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:o.call(i))!==!1&&(this.control.renderMode!==r.renderMode||this.control.renderingCompatibilityDecision.contextType!==r.contextType||await((c=(a=this.control).persistRenderRuntimeDecision)==null?void 0:c.call(a)))}).catch(i=>{this.logRenderRuntimeFallback("cache-save-failed",{recoveryId:e.recoveryId,error:i instanceof Error?i.message:String(i)},"warn")});this.renderRuntimeCacheSavePromise=n}cancelRenderRuntimeRecovery(e){const r=this.activeRenderRuntimeRecovery;r&&(r.cancelReason=e,this.activeRenderRuntimeRecovery=void 0)}async runRenderRuntimeFallback(e,r=this.activeRenderRuntimeRecovery){if(r)try{return await this.runActiveRenderRuntimeFallback(e,r)}catch(n){if(!(n instanceof Oi))throw this.activeRenderRuntimeRecovery===r&&(this.activeRenderRuntimeRecovery=void 0),n;this.logRenderRuntimeFallback("cancelled",{recoveryId:r.recoveryId,reason:r.cancelReason||"runtime-recovery-cancelled",elapsedMs:Date.now()-r.startedAt}),this.releaseRenderRuntimeRecoveryCameras(r,r.cancelReason||"runtime-recovery-cancelled"),this.activeRenderRuntimeRecovery===r&&(this.activeRenderRuntimeRecovery=void 0);return}}async runActiveRenderRuntimeFallback(e,r){var m,v,M,R,E,P;const{recoveryId:n,startedAt:i,fromRenderMode:o,fromContextType:a}=r,{views:c}=r;this.assertRenderRuntimeRecoveryCurrent(r),this.serviceSyncReadyViews.clear(),this.logRenderRuntimeFallback("triggered",{recoveryId:n,from:`${o}/${a}`,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,reportStage:e.reportStage,contextLost:e.reportContextLost,glError:e.reportGlError,currentProgram:e.reportCurrentProgram,programLinked:e.reportProgramLinked,programHasUniforms:e.reportProgramHasUniforms,elapsedMs:Date.now()-i}),this.logRenderRuntimeFallback("drain-start",{recoveryId:n,viewIds:c.map(({viewId:k})=>k)});const l=await Promise.all(c.map(async k=>{const{viewId:O,scenePath:B}=k;if(!this.isRenderRuntimeRecoveryViewCurrent(k))return{viewId:O,status:"stale"};if(!B)return{viewId:O,status:"success"};try{return await this.forceDoneLocalWorks(O,B,"render-runtime-fallback")}catch(D){return{viewId:O,status:"failed",failureReason:D instanceof Error?D.message:String(D)}}}));this.assertRenderRuntimeRecoveryCurrent(r);const u=l.filter(k=>k.status==="failed");this.logRenderRuntimeFallback("drain-result",{recoveryId:n,status:u.length?"partial-failure":"success",failures:u.map(k=>({viewId:k.viewId,reason:k.failureReason})),elapsedMs:Date.now()-i},u.length?"warn":"info");const h=this.getRenderProbeCandidates(),d=Date.now(),f=h.findIndex(k=>k.renderMode===o&&(k.contextType===a||k.contextType==="webgl2"&&a==="webgl")),y=((v=(m=this.control.pluginOptions)==null?void 0:m.extras)==null?void 0:v.allowImageBitmapFallback)===!1&&o==="worker-image-bitmap"?h.length:f,S=this.getRenderProbeProfile();let b=S&&this.createRenderProbeSession(S);const C=new Map,N=new Set,T=k=>`${k.renderMode}:${k.contextType}`,p=(k,O)=>{const B=T(k);let D=C.get(B);if(!D&&(D=this.probeRenderRuntimeCandidate(k,Math.min(xs,O),b||void 0),C.set(B,D),k.renderMode==="worker-image-bitmap"&&k.contextType!=="2d")){const A=h.find(L=>L.renderMode===k.renderMode&&L.contextType==="2d");A&&!C.has(T(A))&&C.set(T(A),this.probeRenderRuntimeCandidate(A,Math.min(xs,O),b||void 0))}return D||Promise.resolve(void 0)};try{for(let k=y+1;k<h.length;k+=1){this.assertRenderRuntimeRecoveryCurrent(r);const O=h[k];if(N.has(T(O)))continue;const B=Qt(O.renderMode,O.contextType);this.logRenderRuntimeFallback("triggered",{recoveryId:n,from:`${o}/${a}`,to:B,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,elapsedMs:Date.now()-i});const D=sa-(Date.now()-d);if(D<=0){this.logRenderRuntimeFallback("failed",{recoveryId:n,target:B,errorCode:e.reportErrorCode,failureStage:"candidate-probe-budget"},"warn");break}const A=await p(O,D);this.assertRenderRuntimeRecoveryCurrent(r);let L=oa(A);if(L&&O.contextType!=="2d"&&((R=(M=this.control).requiresCanvas2DCompanionRenderProbe)!=null&&R.call(M))){const q=sa-(Date.now()-d),ie=h.find(V=>V.renderMode===O.renderMode&&V.contextType==="2d"),z=q>0&&ie?await p(ie,q):void 0;ie&&N.add(T(ie)),this.assertRenderRuntimeRecoveryCurrent(r),L=L&&oa(z)}const U=tm(O,A),Y=Qt(U.renderMode,U.contextType);if(this.logRenderRuntimeFallback(L?"candidate-probe-success":"candidate-probe-failed",{recoveryId:n,target:Y,errorCode:e.reportErrorCode,probeStage:(E=A==null?void 0:A.programProbe)==null?void 0:E.stage,probeError:((P=A==null?void 0:A.programProbe)==null?void 0:P.error)||(A?void 0:"timeout")},L?"info":"warn"),!!L){b&&(this.closeRenderProbeSession(b),b=void 0),this.control.applyRuntimeRenderingDecision(U.renderMode,U.contextType,"runtime-webgl-program-failure",`Runtime render recovery selected ${Y}`),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback";try{return await this.rebuildRenderRuntimeOnSerialQueue(c,U.renderMode,r),this.assertRenderRuntimeRecoveryCurrent(r),this.logRenderRuntimeFallback("success",{recoveryId:n,from:`${o}/${a}`,to:Y,elapsedMs:Date.now()-i}),this.finishRenderRuntimeRecovery(r),{renderMode:U.renderMode,contextType:U.contextType}}catch(q){if(q instanceof Oi)throw q;this.logRenderRuntimeFallback("failed",{recoveryId:n,target:B,errorCode:e.reportErrorCode,failureStage:"candidate-rebuild",error:q instanceof Error?q.message:String(q),elapsedMs:Date.now()-i},"warn"),C.clear(),b=S&&this.createRenderProbeSession(S)}}}}finally{b&&this.closeRenderProbeSession(b)}this.assertRenderRuntimeRecoveryCurrent(r),this.logRenderRuntimeFallback("fallback-main-thread-start",{recoveryId:n,from:`${o}/${a}`,to:"mainThread+canvas2d",errorCode:e.reportErrorCode,elapsedMs:Date.now()-i});try{return this.control.applyRuntimeRenderingDecision("main-thread","2d","runtime-webgl-program-failure","All worker render candidates failed; downgraded to mainThread Canvas2D"),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback",await this.rebuildRenderRuntimeOnSerialQueue(c,"main-thread",r),this.assertRenderRuntimeRecoveryCurrent(r),this.logRenderRuntimeFallback("fallback-main-thread-success",{recoveryId:n,to:"mainThread+canvas2d",elapsedMs:Date.now()-i}),this.logRenderRuntimeFallback("success",{recoveryId:n,to:"mainThread+canvas2d",elapsedMs:Date.now()-i}),this.finishRenderRuntimeRecovery(r),{renderMode:"main-thread",contextType:"2d"}}catch(k){if(k instanceof Oi)throw k;const O=k instanceof Error?k.message:String(k);this.logRenderRuntimeFallback("fallback-main-thread-failed",{recoveryId:n,errorCode:e.reportErrorCode,failureStage:"main-thread-canvas2d-rebuild",error:O,elapsedMs:Date.now()-i},"error"),this.logRenderRuntimeFallback("failed",{recoveryId:n,target:"mainThread+canvas2d",errorCode:e.reportErrorCode,failureStage:"main-thread-canvas2d-rebuild",error:O,elapsedMs:Date.now()-i},"error"),this.failViewInitOnTerminalRuntime(e),this.activeRenderRuntimeRecovery===r&&(this.activeRenderRuntimeRecovery=void 0);return}}async rebuildRenderRuntimeOnSerialQueue(e,r,n){var o,a,c,l,u,h,d,f,g,y,S,b;const{recoveryId:i}=n;this.assertRenderRuntimeRecoveryCurrent(n),this.destroy(!0,!0);for(const C of e){if(this.assertRenderRuntimeRecoveryCurrent(n),!this.isRenderRuntimeRecoveryViewCurrent(C)){this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,status:"view-stale"});continue}const{view:N}=C;(a=(o=this.control).clearPendingViewInitState)==null||a.call(o,C.viewId),(l=(c=this.control).armPendingViewInit)==null||l.call(c,C.viewId);const T=this.cameraUpdateStateByView.get(C.viewId),p=T!=null&&T.isRecovering&&T.replayCamera?this.cloneCameraReplay(T.replayCamera):C.replayCamera;p&&(C.replayCamera=this.cloneCameraReplay(p),(T==null?void 0:T.recoveryOwner)!==void 0&&(C.cameraRecoveryOwner=T.recoveryOwner),this.control.queuePendingInitCamera(C.viewId,p.cameraOpt,p.scenePath)),N.focusScenePath=C.scenePath;const m=(p==null?void 0:p.cameraOpt)||C.cameraOpt;if(m&&(N.cameraOpt={...m}),this.logRenderRuntimeFallback("surface-reset-start",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((u=this.activeRenderRuntimeRecovery)==null?void 0:u.startedAt)||Date.now())}),await N.displayer.resetRenderSurface(),this.assertRenderRuntimeRecoveryCurrent(n),this.logRenderRuntimeFallback("surface-reset-completed",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((h=this.activeRenderRuntimeRecovery)==null?void 0:h.startedAt)||Date.now())}),!this.isRenderRuntimeRecoveryViewCurrent(C)){this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,status:"view-removed",elapsedMs:Date.now()-(((d=this.activeRenderRuntimeRecovery)==null?void 0:d.startedAt)||Date.now())});continue}if(this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,generation:this.viewGenerationById.get(C.viewId),target:`${r}/${this.control.renderingCompatibilityDecision.contextType}`,elapsedMs:Date.now()-(((f=this.activeRenderRuntimeRecovery)==null?void 0:f.startedAt)||Date.now())}),this.control.isUseOffscreenTransfer){const v=N.displayer.canvasBgRef.current,M=N.displayer.canvasServiceFloatRef.current,R=N.displayer.canvasFloatRef.current;if(!v||!M||!R)throw new Error(`render surface unavailable: ${C.viewId}`);N.displayer.setTransferControlToOffscreenCanvas({bgCanvas:v,serviceCanvas:M,localCanvas:R})}this.logRenderRuntimeFallback("surface-created",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((g=this.activeRenderRuntimeRecovery)==null?void 0:g.startedAt)||Date.now())})}if(this.logRenderRuntimeFallback("reinit-start",{recoveryId:i,target:`${r}/${this.control.renderingCompatibilityDecision.contextType}`,elapsedMs:Date.now()-(((y=this.activeRenderRuntimeRecovery)==null?void 0:y.startedAt)||Date.now())}),await this.init(!0),this.assertRenderRuntimeRecoveryCurrent(n),this.control.renderMode!==r)throw new Error(`render mode changed during reinit: expected=${r}, actual=${this.control.renderMode}`);for(const C of e){if(this.assertRenderRuntimeRecoveryCurrent(n),!this.isRenderRuntimeRecoveryViewCurrent(C))continue;const{view:N}=C,T=this.cameraUpdateStateByView.get(C.viewId);T!=null&&T.isRecovering&&T.replayCamera&&(C.replayCamera=this.cloneCameraReplay(T.replayCamera),C.cameraRecoveryOwner=T.recoveryOwner,N.cameraOpt={...T.replayCamera.cameraOpt});const p=this.viewContainerManager.getViewInitData(C.viewId);if(!p)throw new Error(`view init data unavailable: ${C.viewId}`);(b=(S=this.control).resetPendingInitRendererBaseline)==null||b.call(S,C.viewId),this.createViewWorker(C.viewId,p,N.displayer);const m=this.viewGenerationById.get(C.viewId);if(m===void 0)throw new Error(`view generation unavailable: ${C.viewId}`);this.logRenderRuntimeFallback("init-sent",{recoveryId:i,viewId:C.viewId,generation:m,elapsedMs:Date.now()-n.startedAt});const v=await this.waitForViewInitCompletion(C.viewId);if(this.assertRenderRuntimeRecoveryCurrent(n),!!this.isRenderRuntimeRecoveryViewCurrent(C)&&v==="timeout")throw new Error(`render view init completion timeout: ${C.viewId}`)}}assertMarkmapRuntimeRegistered(e,r){try{fM()}catch(n){const i=n instanceof Error?n.message:String(n);throw this.Logger.error(`[Appliance]: [markmap] ${e} failed: ${i}; viewId=${r}`),n}}destroy(e=!1,r=!1){var o,a,c,l,u,h,d,f,g,y,S,b,C,N,T,p,m,v;const n=[],i=(M,R)=>{try{R()}catch(E){n.push(`${M}: ${E instanceof Error?E.message:String(E)}`)}};e||this.cancelRenderRuntimeRecovery("external-destroy"),this.initGeneration++,this.viewGenerationById.forEach((M,R)=>{this.viewGenerationById.set(R,M+1)}),this.animationId!==void 0&&(cancelAnimationFrame(this.animationId),this.animationId=void 0),this.viewInitAckWaiters.forEach(M=>{M.forEach(R=>{clearTimeout(R.timer),R.resolve(!1)})}),this.viewInitAckWaiters.clear(),this.serviceSyncCommitWaiters.forEach(M=>{clearTimeout(M.timer),M.resolve(!1)}),this.serviceSyncCommitWaiters.clear(),this.viewServiceReadyWaiters.forEach(M=>{M.forEach(R=>{clearTimeout(R.timer),R.resolve(!1)})}),this.viewServiceReadyWaiters.clear(),this.initReconcileTasks.clear(),this.fullLayerFrameStateByView.clear(),this.hasMainViewInitAck=!1,e||this.mainViewInitReady.cancel(),this.serviceSyncReadyViews.clear(),this.initAckedViewIds.clear(),this.pendingTransportMessages.clear(),(o=this.viewInitRecoveryAttempts)==null||o.clear(),(a=this.viewInitRecoveryDestroying)==null||a.clear();for(const M of this.viewInitAckTimeoutTimers.values())clearTimeout(M);this.viewInitAckTimeoutTimers.clear(),this.renderRuntimeCacheSavePromise=void 0,this.isRenderTransportReady=!1,this.initCameraOptByView.clear(),this.mainViewInitAckCallbacks.clear(),i("method-builder",()=>{var M;return(M=this.methodBuilder)==null?void 0:M.destroy()}),i("un-writable",()=>this.unWritable()),i("task-queue",()=>this.destroyTaskQueue(r)),this.taskBatchData.clear(),r||(this.cameraUpdateStateByView.clear(),(c=this.cameraClearReplayByView)==null||c.clear()),this.cameraFailureSequenceByView.clear(),this.cameraTaskSequenceByView.clear(),(l=this.localWorkFinalizeQueueByView)==null||l.clear(),this.operationBarrierQueueByView.clear(),(u=this.willSelectorWorkIdByView)==null||u.clear(),(h=this.operationBarrierInvalidationWaitersByView)==null||h.forEach(M=>{M.forEach(R=>R())}),(d=this.operationBarrierInvalidationWaitersByView)==null||d.clear(),(f=this.operationBarrierEpochByView)==null||f.clear(),[...this.fullLayerBitmapEraseTxns.keys()].forEach(M=>{this.finishFullLayerBitmapEraseTxn(M,"aborted")}),this.fullLayerBitmapEraseTxnWaiters.forEach(M=>{M.forEach(R=>R("aborted"))}),this.fullLayerBitmapEraseTxnWaiters.clear(),this.cancelledEraseTxnIds.clear(),this.cancelledEraseTxnOwners.clear(),(g=this.cancelledLocalWorkOwners)==null||g.clear();for(const M of this.pendingDprByView.keys())(S=(y=this.control)==null?void 0:y.viewContainerManager.getView(M))==null||S.displayer.cancelDprUpdate();this.pendingDprByView.clear(),(b=this.pendingDprOwnerByView)==null||b.clear(),this.viewRecoveryQueueByView.clear(),this.cameraUpdateEndWaitersByView.forEach((M,R)=>{var E;r&&((E=this.cameraUpdateStateByView.get(R))!=null&&E.isRecovering)||(M.forEach(P=>P()),this.cameraUpdateEndWaitersByView.delete(R))}),this.viewLifecycleIdleWaitersByView.forEach((M,R)=>{var E;r&&((E=this.cameraUpdateStateByView.get(R))!=null&&E.isRecovering)||(M.forEach(P=>P()),this.viewLifecycleIdleWaitersByView.delete(R))}),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.localEventQueueByView.clear(),(C=this.localInputEpochByView)==null||C.clear(),(N=this.localInputTransactionEpochByView)==null||N.clear(),this.localEventQueue=Promise.resolve(),this.localDoneDispatchTimersByView.forEach(M=>{M.forEach(R=>clearTimeout(R)),M.clear()}),this.localDoneDispatchTimersByView.clear();for(const M of((T=this.delayWorkStateToDoneResolveByView)==null?void 0:T.values())||[])M(!1);(p=this.delayWorkStateToDoneResolveByView)==null||p.clear(),(m=this.localDoneWaitByView)==null||m.clear(),(v=this.delayWorkStateToDoneResolve)==null||v.call(this,!1),this.delayWorkStateToDoneResolve=void 0,this.localDoneWait=void 0,this.isActive=!1,this.clearAllResolveMap.forEach(({timer:M,resolve:R},E)=>{M&&clearTimeout(M),R==null||R(E)}),this.clearAllResolveMap.clear(),this.snapshotMap.forEach(({resolve:M,value:R})=>{M(R.map(E=>E||null))}),this.snapshotMap.clear(),this.snapshotRequestIdByViewScene.clear(),this.boundingRectMap.forEach(({resolve:M})=>{M({x:0,y:0,w:0,h:0})}),this.boundingRectMap.clear(),this.boundingRectRequestIdByViewScene.clear(),this.refreshTextRenderResolveMap.forEach(({timer:M,resolve:R})=>{M&&clearTimeout(M),R==null||R(!1)}),this.refreshTextRenderResolveMap.clear(),this.settlePendingMarkmapRequestsOnDestroy(),this.getVNodeInfoResolveMap.forEach(({timer:M,resolve:R},E)=>{M&&clearTimeout(M),R==null||R({uuid:E})}),this.getVNodeInfoResolveMap.clear(),this.clearReRenders(1/0),i("font-face",()=>this.fontFaceManager.destroy()),i("main-thread",()=>{var M;return(M=this.mainThread)==null?void 0:M.destroy()}),this.mainThread=void 0,i("background-thread",()=>{var M;return(M=this.backgroundThreadManager)==null?void 0:M.destroy()}),this.backgroundThreadManager=void 0,i("full-worker",()=>{var M;return(M=this.fullWorker)==null?void 0:M.terminate()}),this.fullWorker=void 0,i("sub-worker",()=>{var M;return(M=this.subWorker)==null?void 0:M.terminate()}),this.subWorker=void 0,n.length&&this.Logger.error(`[Appliance]: MainEngine destroy completed with cleanup errors: ${n.join("; ")}`)}settlePendingMarkmapRequestsOnDestroy(){this.markmapIdResolveMap.forEach(({timer:e,resolve:r})=>{e&&clearTimeout(e),r==null||r()}),this.markmapIdResolveMap.clear()}get consumeCount(){return this._consumeCount}set consumeCount(e){this._consumeCount=e}acceptConsumeAck(e,r){if(!ve.isNumber(e)||r&&!Array.from(this.localPointsBatchData.keys()).some(i=>i.toString()===r))return!1;const n=Math.max(this.consumeCount,e);if(n===this.consumeCount)return!1;if(this.consumeCount=n,r){const i=this.getFullLayerBitmapEraseTxns().get(r);i&&i.phase!=="committed"&&i.phase!=="aborting"&&i.phase!=="aborted"&&(i.doingAckCount=Math.max(i.doingAckCount||0,n))}return this.runAnimation(),!0}get postCount(){return this._postCount}isServiceSyncReady(e){return this.serviceSyncReadyViews.has(e)}isRenderRuntimeRecovering(){return this.activeRenderRuntimeRecovery!==void 0}isViewInitReady(e){return this.isViewInitAck(e)&&this.isServiceSyncReady(e)}set postCount(e){this._postCount=e}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===Q.Pencil||e===Q.PencilEraser||e===Q.BitMapEraser||e===Q.LaserPen||e===Q.Arrow||e===Q.Straight||e===Q.Ellipse||e===Q.Rectangle||e===Q.Star||e===Q.Polygon||e===Q.SpeechBalloon||e===Q.Selector}get isCanDrawWork(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===Q.Pencil||e===Q.LaserPen||e===Q.Arrow||e===Q.Straight||e===Q.Ellipse||e===Q.Rectangle||e===Q.Star||e===Q.Polygon||e===Q.SpeechBalloon||e===Q.Triangle||e===Q.Rhombus||e===Q.BitMapEraser||e===Q.PencilEraser}get isUseZIndex(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===Q.Pencil||e===Q.Arrow||e===Q.Straight||e===Q.Ellipse||e===Q.Rectangle||e===Q.Star||e===Q.Polygon||e===Q.SpeechBalloon||e===Q.Text||e===Q.Image}get isCanRecordUndoRedo(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===Q.Pencil||e===Q.Eraser||e===Q.PencilEraser||e===Q.BitMapEraser||e===Q.Arrow||e===Q.Straight||e===Q.Ellipse||e===Q.Rectangle||e===Q.Star||e===Q.Polygon||e===Q.SpeechBalloon||e===Q.Text||e===Q.Image}get isCanSentCursor(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===Q.Pencil||e===Q.Text||e===Q.LaserPen||e===Q.Arrow||e===Q.Straight||e===Q.Ellipse||e===Q.Rectangle||e===Q.Star||e===Q.Polygon||e===Q.SpeechBalloon||e===Q.Triangle||e===Q.Rhombus||e===Q.Eraser||e===Q.PencilEraser||e===Q.BitMapEraser||e===Q.Selector||e===Q.Clicker}get isPostCountType(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===Q.Pencil||e===Q.Arrow||e===Q.Straight||e===Q.Ellipse||e===Q.Rectangle||e===Q.Star||e===Q.Polygon||e===Q.SpeechBalloon||e===Q.Triangle||e===Q.Rhombus||e===Q.Eraser||e===Q.PencilEraser||e===Q.BitMapEraser||e===Q.Selector}get isCanPostDraw(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===Q.Pencil||e===Q.PencilEraser||e===Q.BitMapEraser}get isCanStartEventConsum(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===Q.Selector||e===Q.Eraser||e===Q.PencilEraser||e===Q.BitMapEraser}async init(e=!1){e||this.destroy(!0),this.mainViewInitReady.begin(),this.control.emitInitLoadingChange({loading:!0,phase:"worker",status:"start"});try{this.Logger.info(`[Appliance]: [plugin-options] ${JSON.stringify(this.control.pluginOptions.extras)}`)}catch(r){this.Logger.warn(`[Appliance]: [plugin-options] stringify failed: ${(r==null?void 0:r.message)||r}`)}try{if(await this.on()===!1)return;this.internalMsgEmitterListener(),this.isActive=!0,this.control.emitInitLoadingChange({loading:!0,phase:"worker",status:"success"})}catch(r){throw this.mainViewInitReady.cancel(),this.control.emitInitLoadingChange({loading:!1,phase:"worker",status:"error"}),r}}async useBackgroundThread(){this.Logger.info("[Appliance]: use background thread");const{BackgroundThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-ZMuKk-bl.js"));this.backgroundThreadManager=new e(this)}async useMainThread(){this.Logger.info("[Appliance]: no OffscreenCanvas");const{MainThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-CsNG_bzI.js"));this.mainThread=new e(this),this.isRenderTransportReady=!0,this.flushPendingTransportInitMessages()}getRenderProbeCandidates(){var c,l;const e=this.control.renderingCompatibilityDecision,r=e.capabilities,n=((l=(c=this.control.pluginOptions)==null?void 0:c.extras)==null?void 0:l.allowImageBitmapFallback)!==!1,i=e.contextType==="webgl2"?["webgl2","2d"]:e.contextType==="webgl"?["webgl","2d"]:["2d"],o=e.renderMode==="worker-image-bitmap"&&e.reason!=="use-simple-false"?["worker-image-bitmap"]:["worker-offscreen-transfer","worker-image-bitmap"],a=[];for(const u of o)if(!(u==="worker-offscreen-transfer"&&!r.offscreenTransfer||u==="worker-image-bitmap"&&(!r.imageBitmap||!n)))for(const h of i)h==="webgl2"&&!r.webgl2||h==="webgl"&&!r.webgl||a.push({renderMode:u,contextType:h});return a}getRenderProbeProfile(){return{width:Jp,height:Jp,dpr:1,testRect:{...eSe}}}createRenderProbeDOMCanvas(e){if(typeof document>"u")return;const r=document.createElement("div");r.className="appliance-render-test-container",r.setAttribute("aria-hidden","true"),Object.assign(r.style,{position:"fixed",left:"0",top:"0",width:"1px",height:"1px",overflow:"hidden",pointerEvents:"none",zIndex:"-2147483647",contain:"layout style size"});let n;const i=()=>(n==null||n.remove(),n=document.createElement("canvas"),n.className="appliance-render-test-canvas",n.width=Math.max(1,Math.floor(e.width*e.dpr)),n.height=Math.max(1,Math.floor(e.height*e.dpr)),Object.assign(n.style,{width:"1px",height:"1px",opacity:"0",pointerEvents:"none"}),r.appendChild(n),n);return document.body.appendChild(r),i(),{get canvas(){return n},replaceCanvas:i,cleanup:()=>r.remove()}}async probeRenderRuntimeCandidate(e,r=xs,n){const i=!n,o=(n==null?void 0:n.profile)||this.getRenderProbeProfile(),a=n||o&&this.createRenderProbeSession(o);if(a)try{return await this.requestRenderProbeCandidate(a,e,r)}finally{i&&this.closeRenderProbeSession(a)}}createRenderProbeSession(e){const r=this.createRenderProbeDOMCanvas(e);if(!r)return;let n;try{n=new Worker(this.fullWorkerUrl,{type:"classic"})}catch{r.cleanup();return}const i={worker:n,profile:e,domTest:r,pending:new Map,destinationQueue:Promise.resolve(),closed:!1};n.onmessage=a=>{var h,d,f;const c=a.data;if(!c||c.type!==le.ProbeRenderCapabilities||!c.requestId)return;const l=i.pending.get(c.requestId);if(!l){try{(f=(d=(h=c.workerCapabilities)==null?void 0:h.programProbe)==null?void 0:d.imageBitmap)==null||f.close()}catch{}return}clearTimeout(l.timer);const u=i.destinationQueue.then(()=>this.finalizeRenderProbeResponse(i,l,c.workerCapabilities));i.destinationQueue=u.then(()=>{},()=>{}),u.then(g=>this.resolveRenderProbeEntry(i,c.requestId,l,g),()=>this.resolveRenderProbeEntry(i,c.requestId,l,void 0))};const o=()=>{i.closed=!0;for(const[a,c]of i.pending)i.pending.delete(a),clearTimeout(c.timer),c.resolve(void 0)};return n.onerror=o,n.onmessageerror=o,i}closeRenderProbeSession(e){if(e.closed&&e.pending.size===0){e.worker.terminate(),e.domTest.cleanup();return}e.closed=!0;for(const[r,n]of e.pending)e.pending.delete(r),clearTimeout(n.timer),n.resolve(void 0);e.worker.terminate(),e.domTest.cleanup()}resolveRenderProbeEntry(e,r,n,i){e.pending.get(r)===n&&(e.pending.delete(r),clearTimeout(n.timer),n.resolve(i))}requestRenderProbeCandidate(e,r,n){if(e.closed)return Promise.resolve(void 0);const i=`render-probe-${Date.now()}-${Math.random().toString(36).slice(2)}`,o=Date.now()+n;let a,c,l;try{if(r.renderMode==="worker-offscreen-transfer"){const u=e.domTest.replaceCanvas();c=u,a=u.transferControlToOffscreen()}else e.imageBitmapDestination||(e.imageBitmapDestination=e.domTest.replaceCanvas()),l=e.imageBitmapDestination;return new Promise(u=>{var d;const h=setTimeout(()=>{const f=e.pending.get(i);f&&(e.pending.delete(i),f.resolve(void 0))},n);e.pending.set(i,{candidate:r,sourceCanvas:c,destinationCanvas:l,deadlineAt:o,timer:h,resolve:u});try{e.worker.postMessage(new Set([{msgType:le.ProbeRenderCapabilities,type:le.ProbeRenderCapabilities,requestId:i,requestedContextType:r.contextType,probeTransport:r.renderMode,probeCanvas:a,probeProfile:e.profile}]),a?[a]:[])}catch{if(((d=e.pending.get(i))==null?void 0:d.resolve)!==u)return;e.pending.delete(i),clearTimeout(h),u(void 0)}})}catch{return Promise.resolve(void 0)}}async finalizeRenderProbeResponse(e,r,n){var a,c,l;const i=n==null?void 0:n.programProbe,o=i==null?void 0:i.imageBitmap;if(!n||!i)return n;try{if(i.passed!==!0)return n;const u=r.candidate.renderMode==="worker-image-bitmap"&&i.expectedPixelChecks||i.pixelChecks;if(!u||u.length<4)throw new Error("probe-pixel-check-template-missing");const h={width:Math.max(1,Math.floor(e.profile.width*e.profile.dpr)),height:Math.max(1,Math.floor(e.profile.height*e.profile.dpr))};if(((a=i.canvasSize)==null?void 0:a.width)!==h.width||((c=i.canvasSize)==null?void 0:c.height)!==h.height)throw new Error("probe-canvas-size-mismatch");let d;if(r.candidate.renderMode==="worker-offscreen-transfer"){if(!r.sourceCanvas)throw new Error("offscreen-transfer-dom-canvas-unavailable");d=await this.readTransferredCanvasDestinationPixels(r.sourceCanvas,h,u,r.deadlineAt)}else{if(!o)throw new Error("image-bitmap-missing");if(!i.imageBitmapRect)throw new Error("image-bitmap-rect-missing");const g=(l=r.destinationCanvas)==null?void 0:l.getContext("2d");if(!g)throw new Error("destination-2d-context-unavailable");g.clearRect(0,0,h.width,h.height);const{x:y,y:S,width:b,height:C}=i.imageBitmapRect;g.drawImage(o,0,0,b,C,y,S,b,C),d=em(g,u)}const f=Ju(d);return n.contextSupported=n.contextSupported&&f,n.programProbe={...i,passed:i.passed===!0&&f,stage:f?i.stage:"destination-pixel-check",error:f?i.error:r.candidate.renderMode==="worker-offscreen-transfer"?"offscreen-transfer-destination-pixel-check-failed":"destination-pixel-check-failed",destinationPixelChecks:d,imageBitmap:void 0},n}catch(u){return n.contextSupported=!1,n.programProbe={...i,passed:!1,stage:"destination-pixel-check",error:vr(u),destinationPixelChecks:void 0,imageBitmap:void 0},n}finally{try{o==null||o.close()}catch{}}}async readTransferredCanvasDestinationPixels(e,r,n,i){if(typeof document>"u")return;const o=document.createElement("canvas");o.width=r.width,o.height=r.height;const a=o.getContext("2d");if(!a)return;let c,l=0;for(;Date.now()<i;)if(await tSe(i),l+=1,!(l<2)&&(a.clearRect(0,0,r.width,r.height),a.drawImage(e,0,0,r.width,r.height,0,0,r.width,r.height),c=em(a,n),Ju(c)))return c;return c}async probeAndLockRenderRuntime(){var u,h;const e=this.getRenderProbeCandidates(),r=this.getRenderProbeProfile(),n=Date.now();this.Logger.info(`[Appliance]: [render-probe] stage=probe-start candidates=${e.map(d=>Qt(d.renderMode,d.contextType)).join(",")}`);const i=r&&this.createRenderProbeSession(r),o=new Map,a=new Set,c=d=>`${d.renderMode}:${d.contextType}`,l=(d,f)=>{const g=c(d);let y=o.get(g);if(!y&&(y=this.probeRenderRuntimeCandidate(d,Math.min(xs,f),i||void 0),o.set(g,y),d.renderMode==="worker-image-bitmap"&&d.contextType!=="2d")){const S=e.find(b=>b.renderMode===d.renderMode&&b.contextType==="2d");S&&!o.has(c(S))&&o.set(c(S),this.probeRenderRuntimeCandidate(S,Math.min(xs,f),i||void 0))}return y||Promise.resolve(void 0)};try{for(const d of e){if(a.has(c(d)))continue;const f=sa-(Date.now()-n);if(f<=0)break;const g=Qt(d.renderMode,d.contextType);this.Logger.info(`[Appliance]: [render-probe] stage=candidate-start renderModel=${g} canvasSize=${r?`${Math.floor(r.width*r.dpr)}x${Math.floor(r.height*r.dpr)}`:"unavailable"} logicalSize=${r?`${r.width}x${r.height}`:"unavailable"} dpr=${(r==null?void 0:r.dpr)??"unavailable"} rect=${r?`${r.testRect.x},${r.testRect.y},${r.testRect.width}x${r.testRect.height}`:"unavailable"}`);const y=await l(d,f),S=oa(y);let b=S,C,N;if(b&&d.contextType!=="2d"&&((h=(u=this.control).requiresCanvas2DCompanionRenderProbe)!=null&&h.call(u))){C=e.find(v=>v.renderMode===d.renderMode&&v.contextType==="2d");const m=sa-(Date.now()-n);N=C&&m>0?await l(C,m):void 0,C&&a.add(c(C)),b=b&&oa(N)}const T=tm(d,y),p=Qt(T.renderMode,T.contextType);if(!b){const m=S?"companion":"primary",v=S?N:y,M=v==null?void 0:v.programProbe,R=S?Qt((C==null?void 0:C.renderMode)||d.renderMode,(C==null?void 0:C.contextType)||"2d"):p,E=(M==null?void 0:M.error)||(v?"probe-result-incomplete":S?"timeout-or-budget":"timeout");this.Logger.warn(`[Appliance]: [render-probe] stage=candidate-failed renderModel=${p} requestedRenderModel=${g} failureSource=${m} failedRenderModel=${R} stageDetail=${(M==null?void 0:M.stage)||"probe-result-incomplete"} error=${E} canvasSize=${M!=null&&M.canvasSize?`${M.canvasSize.width}x${M.canvasSize.height}`:"unavailable"} rect=${M!=null&&M.testRect?`${M.testRect.x},${M.testRect.y},${M.testRect.width}x${M.testRect.height}`:"unavailable"} expected=rgba(255,0,0,255)/transparent workerActual=${JSON.stringify((M==null?void 0:M.pixelChecks)||[])} destinationActual=${JSON.stringify((M==null?void 0:M.destinationPixelChecks)||[])}`)}if(b)return this.control.applyRuntimeRenderingDecision(T.renderMode,T.contextType,"render-probe-passed",`render-probe-passed:${p}`),this.control.renderingCompatibilityDecision.renderRuntimeSource="probe",this.Logger.info(`[Appliance]: [render-probe] stage=probe-success renderModel=${p}${C?" companion=passed":""}`),!0}}finally{i&&this.closeRenderProbeSession(i)}return this.Logger.warn("[Appliance]: [render-probe] stage=probe-failed renderModel=mainThread+canvas2d"),this.control.applyRuntimeRenderingDecision("main-thread","2d","worker-program-probe-failed","All worker render candidates failed"),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback",await this.useMainThread(),!1}async on(e=!1){var a,c;const r=++this.initGeneration;if(!e&&(this.control.isUseBackgroundThread&&await this.useBackgroundThread(),r!==this.initGeneration))return!1;if(!this.control.hasOffscreenCanvas){await this.useMainThread(),this.control.logFinalRenderDecision();return}if(!this.fullWorkerUrl||!this.control.isUseSimple&&!this.subWorkerUrl)throw new Error("[Appliance]: no worker url config");if(((c=(a=this.control.pluginOptions)==null?void 0:a.extras)==null?void 0:c.useWorker)==="auto"&&this.control.renderingCompatibilityDecision.renderRuntimeCacheState!=="hit"&&!this.control.isRenderRuntimeDecisionLocked()){const l=await this.probeAndLockRenderRuntime();if(r!==this.initGeneration)return!1;if(!l){this.control.logFinalRenderDecision();return}}else this.control.renderingCompatibilityDecision.renderRuntimeCacheState==="hit"&&this.Logger.info(`[Appliance]: [render-probe] stage=probe-skipped reason=cache-hit renderModel=${Qt(this.control.renderMode,this.control.renderingCompatibilityDecision.contextType)}`);const i=(l,u)=>()=>{r!==this.initGeneration||!u()||this.scheduleRenderRuntimeFallback({type:le.ReportError,reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:`${l}-transport-error`,reportError:`${l} transport error`})};if(this.fullWorker=new Worker(this.fullWorkerUrl,{type:"classic"}),!this.control.isUseSimple){this.subWorker=new Worker(this.subWorkerUrl,{type:"classic"});const l=this.subWorker;l.onerror=i("subWorker",()=>this.subWorker===l),l.onmessageerror=i("subWorker-message",()=>this.subWorker===l)}const o=this.fullWorker;o.onerror=i("fullWorker",()=>this.fullWorker===o),o.onmessageerror=i("fullWorker-message",()=>this.fullWorker===o),this.fullWorker.onmessage=l=>{if(l.data){if(!this.acceptWorkerBatch(l.data,"fullWorker"))return;const{render:u,sp:h,fullWorkerDrawCount:d,workerTasksqueueCount:f,cameraTaskId:g,cameraTaskStatus:y,cameraTaskError:S,cameraSettledTaskId:b,viewId:C,viewGeneration:N,consumeCount:T,consumeWorkId:p}=l.data;if(C&&ve.isNumber(g)){const P=U0(y,S,"fullWorker");P?this.failCameraTask(C,g,P,N):this.ackCameraTask(C,g,N)}C&&ve.isNumber(b)?this.ackCameraSettledTask(C,b,N):this.isBusy&&f&&this.setWorkerTasksqueueCount(f);const m=this.control.isUseOffscreenTransfer?[]:(h||[]).filter(({type:P})=>P===le.ServiceSyncCommit),v=m.length?(h||[]).filter(({type:P})=>P!==le.ServiceSyncCommit):h;v!=null&&v.length&&this.collectorSyncData(v);const M=this.filterCancelledEraseRenders(u);if(this.control.isUseSimple){if(this.control.isUseOffscreenTransfer){this.acceptConsumeAck(T,p);return}let P=!0;if(M.length)try{this.viewContainerManager.render(M)}catch(k){P=!1,this.Logger.error(`[Appliance]: Bitmap/Pencil render apply failed; viewId=${C||"unknown"}; workId=${p||"unknown"}; error=${k instanceof Error?k.message:String(k)}`),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:C,viewGeneration:C?this.viewGenerationById.get(C):void 0,reportErrorCode:"IMAGE_BITMAP_RENDER_FAILED",reportStage:"main-thread-draw-image-bitmap",reportError:k instanceof Error?k.message:String(k)})}P&&m.length&&this.collectorSyncData(m),this.acceptConsumeAck(T,p);return}const R=M;if(d&&C){if(this.fullWorkerDrawCount=d,this.fullWorkerDrawCount<1/0){const P=Math.max(this.maxDrawCount,this.fullWorkerDrawCount);this.setMaxDrawCount(P),this.clearReRenders(this.fullWorkerDrawCount)}else this.setMaxDrawCount(0),this.clearReRenders(1/0);if(this.reRenders.size)for(const P of this.reRenders.values())R.push(...P)}let E=!0;if(R.length)try{this.viewContainerManager.render(R)}catch(P){E=!1,this.Logger.error(`[Appliance]: Bitmap/Pencil render apply failed; viewId=${C||"unknown"}; workId=${p||"unknown"}; error=${P instanceof Error?P.message:String(P)}`),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:C,viewGeneration:C?this.viewGenerationById.get(C):void 0,reportErrorCode:"IMAGE_BITMAP_RENDER_FAILED",reportStage:"main-thread-draw-image-bitmap",reportError:P instanceof Error?P.message:String(P)})}E&&m.length&&this.collectorSyncData(m),this.acceptConsumeAck(T,p)}},this.isRenderTransportReady=!0,this.control.lockRenderRuntimeDecision(),this.control.logFinalRenderDecision(),this.flushPendingTransportInitMessages(),this.subWorker&&(this.subWorker.onmessage=l=>{if(l.data){if(!this.acceptWorkerBatch(l.data,"subWorker"))return;const{render:u,sp:h,subWorkerDrawCount:d,consumeCount:f,consumeWorkId:g}=l.data;h!=null&&h.length&&this.collectorSyncData(h);const y=this.filterCancelledEraseRenders(u),S=y;if(ve.isNumber(d)){if(this.subWorkerDrawCount=d,this.fullWorkerDrawCount<1/0){const b=Math.max(this.maxDrawCount,this.subWorkerDrawCount);this.setMaxDrawCount(b)}if(y.length)if(this.subWorkerDrawCount>this.fullWorkerDrawCount){const b=[];for(const C of y)C.imageBitmap&&(C.isUnClose=!0,b.push(C));this.reRenders.set(this.subWorkerDrawCount,b)}else this.reRenders.size&&this.clearReRenders(this.subWorkerDrawCount)}if(S.length)try{this.viewContainerManager.render(S)}catch(b){this.Logger.error(`[Appliance]: SubWorker render apply failed; workId=${g||"unknown"}; error=${b instanceof Error?b.message:String(b)}`)}this.acceptConsumeAck(f,g)}})}async clearFontCache(){return await this.fontFaceManager.clearFontCache()}async getFontCacheStatus(){return await this.fontFaceManager.getFontCacheStatus()}getLastFontFacesAlreadyReady(){return this.fontFaceManager.getLastFontFacesAlreadyReady()}async loadFontFaces(){return await this.fontFaceManager.loadFontFaces()}createInternalRequestId(e){return`${e}_${this.now}_${Math.random().toString(36).slice(2)}`}waitRefreshTextRender(e){return new Promise(r=>{const n=setTimeout(()=>{this.refreshTextRenderResolveMap.delete(e),r(!1)},5e3);this.refreshTextRenderResolveMap.set(e,{timer:n,resolve:r})})}resolveRefreshTextRender(e,r=!0){var i;if(!e)return;const n=this.refreshTextRenderResolveMap.get(e);n&&(n.timer&&clearTimeout(n.timer),(i=n.resolve)==null||i.call(n,r),this.refreshTextRenderResolveMap.delete(e))}async refreshTextRenderForWorker(e){if(!e.length)return!0;const r=new Set,n=[];for(const o of e){if(!o.viewId||!this.isViewInitReady(o.viewId))continue;const a=this.createInternalRequestId("refresh_text_render");n.push(this.waitRefreshTextRender(a)),r.add({...o,requestId:a,msgType:le.UpdateNode,type:le.UpdateNode,dataType:Re.Service,toolsType:Q.Text,refreshTextRender:!0,useAnimation:!1,willRefresh:!0})}return this.post(r),(await Promise.all(n)).every(Boolean)}buildPropertyAppliedData(e,r,n){switch(e){case Te.SetColorNode:return{strokeColor:r==null?void 0:r.strokeColor,fillColor:r==null?void 0:r.fillColor,fontColor:r==null?void 0:r.fontColor,fontBgColor:r==null?void 0:r.fontBgColor,thickness:r==null?void 0:r.thickness,strokeType:r==null?void 0:r.strokeType};case Te.SetFontStyle:return{fontSize:r==null?void 0:r.fontSize,bold:r==null?void 0:r.bold,italic:r==null?void 0:r.italic,underline:r==null?void 0:r.underline,lineThrough:r==null?void 0:r.lineThrough};case Te.SetLock:return{isLocked:n==null?void 0:n.isLocked};case Te.SetShapeOpt:return{vertices:r==null?void 0:r.vertices,innerVerticeStep:r==null?void 0:r.innerVerticeStep,innerRatio:r==null?void 0:r.innerRatio,placement:r==null?void 0:r.placement};case Te.ZIndexNode:return{zIndexLayer:n==null?void 0:n.zIndexLayer};default:return{}}}clearReRenders(e=1/0){for(const r of this.reRenders.keys())if(ve.isNumber(Number(r))&&Number(r)<=e){const n=this.reRenders.get(Number(r));n==null||n.forEach(i=>{try{this.retireRenderedImageBitmap(i)}catch(o){this.Logger.error(`[Appliance]: releasing deferred render bitmap failed; drawCount=${r}; error=${o instanceof Error?o.message:String(o)}`)}}),this.reRenders.delete(r)}}retireRenderedImageBitmap(e){var n;const r=(n=this.control)==null?void 0:n.viewContainerManager;r?r.retireRenderImageBitmap(e.viewId,e.imageBitmap):this.closeImageBitmap(e.imageBitmap)}getFullLayerBitmapEraseTxns(){return this.fullLayerBitmapEraseTxns||(this.fullLayerBitmapEraseTxns=new Map),this.fullLayerBitmapEraseTxns}getBitmapEraserRenderer(){return this.control.disableUseWorker?"main-thread":this.control.isUseSimple?"simple-worker":"full-worker"}logBitmapEraserTrace(e,r,n={}){try{const i=this.Logger,o=`[Appliance]: [bitmap-eraser] stage=${e} ${JSON.stringify({viewId:r.viewId,scenePath:r.scenePath,workId:r.workId,renderer:this.getBitmapEraserRenderer(),...n})}`;if(e==="point-limit-force-done"){i.info(o);return}i.infoDebounced?i.infoDebounced(`bitmap-eraser:${r.viewId}:${r.workId}`,o):i.info(o)}catch{}}finishFullLayerBitmapEraseTxn(e,r){var o,a,c,l;const n=this.getFullLayerBitmapEraseTxns().get(e);n!=null&&n.commitTimeoutId&&clearTimeout(n.commitTimeoutId),n&&(n.phase=r==="committed"?"committed":"aborted",this.logBitmapEraserTrace("terminal",n,{status:r,elapsedMs:Math.max(0,Date.now()-(n.startedAt??Date.now())),forceDoneReason:n.forceDoneReason,doingAckCount:n.doingAckCount||0,pointCount:n.inputPointCount||0,updatedTargets:((o=n.updatedTargetIds)==null?void 0:o.size)||0,deletedTargets:((a=n.deletedTargetIds)==null?void 0:a.size)||0})),this.getFullLayerBitmapEraseTxns().delete(e);const i=(c=this.fullLayerBitmapEraseTxnWaiters)==null?void 0:c.get(e);i==null||i.forEach(u=>u(r)),(l=this.fullLayerBitmapEraseTxnWaiters)==null||l.delete(e)}async waitForFullLayerBitmapEraseTxns(e,r){const n=[...r].filter(a=>this.getFullLayerBitmapEraseTxns().has(a));if(!n.length)return;if(this.fullLayerBitmapEraseTxnWaiters||(this.fullLayerBitmapEraseTxnWaiters=new Map),(await Promise.all(n.map(a=>new Promise(c=>{let l=this.fullLayerBitmapEraseTxnWaiters.get(a);l||(l=new Set,this.fullLayerBitmapEraseTxnWaiters.set(a,l)),l.add(c)})))).includes("aborted")){const a=this.viewRecoveryQueueByView.get(e);a&&await a.catch(()=>{})}}rememberCancelledEraseTxn(e){var o;this.cancelledEraseTxnOwners||(this.cancelledEraseTxnOwners=new Map),this.cancelledEraseTxnIds.delete(e),this.cancelledEraseTxnIds.add(e);const r=this.getFullLayerBitmapEraseTxns().get(e),n=this.localPointsBatchData.get(e),i=(r==null?void 0:r.viewId)||(n==null?void 0:n.viewId);for(this.cancelledEraseTxnOwners.set(e,{viewId:i,viewGeneration:i?(o=this.viewGenerationById)==null?void 0:o.get(i):void 0});this.cancelledEraseTxnOwners.size>Jl;){const a=this.cancelledEraseTxnOwners.keys().next().value;if(a===void 0)break;this.cancelledEraseTxnOwners.delete(a),this.cancelledEraseTxnIds.delete(a)}for(;this.cancelledEraseTxnIds.size>Jl;){const a=this.cancelledEraseTxnIds.values().next().value;if(a===void 0)break;this.cancelledEraseTxnIds.delete(a),this.cancelledEraseTxnOwners.delete(a)}}isCancelledEraseResult(e,r,n){var o;if(!e||!this.cancelledEraseTxnIds.has(e))return!1;const i=(o=this.cancelledEraseTxnOwners)==null?void 0:o.get(e);return i?!(i.viewId&&r&&i.viewId!==r):!0}rememberCancelledLocalWork(e,r){var n;for(this.cancelledLocalWorkOwners||(this.cancelledLocalWorkOwners=new Map),this.cancelledLocalWorkOwners.delete(e),this.cancelledLocalWorkOwners.set(e,{viewId:r,viewGeneration:(n=this.viewGenerationById)==null?void 0:n.get(r)});this.cancelledLocalWorkOwners.size>Jl;){const i=this.cancelledLocalWorkOwners.keys().next().value;if(i===void 0)break;this.cancelledLocalWorkOwners.delete(i)}}isCancelledLocalWorkResult(e){return e.dataType===Re.Service||e.workId===void 0?!1:this.isCancelledLocalWork(e.workId.toString(),e.viewId)}isCancelledLocalWork(e,r){var c,l,u,h;const n=e.toString(),o=typeof((c=this.collector)==null?void 0:c.isOwn)=="function"&&typeof((l=this.collector)==null?void 0:l.getLocalId)=="function"&&((u=this.collector)!=null&&u.isOwn(n))?this.collector.getLocalId(n):n,a=(h=this.cancelledLocalWorkOwners)==null?void 0:h.get(o);return a?!r||a.viewId===r:!1}filterCancelledEraseRenders(e){return e!=null&&e.length?e.filter(r=>{const n=this.viewGenerationById.get(r.viewId);if(r.viewGeneration!==void 0&&n!==void 0&&r.viewGeneration!==n)return this.closeImageBitmap(r.imageBitmap),!1;if(r.drawCanvas!==void 0&&[...r.renderWorkIds||[],...r.workId!==void 0?[r.workId.toString()]:[]].some(o=>this.isCancelledLocalWork(o,r.viewId)))return this.closeImageBitmap(r.imageBitmap),!1;const i=[...r.renderEraseTxnIds||[],...r.eraseTxnId!==void 0?[r.eraseTxnId]:[]].some(o=>this.isCancelledEraseResult(o,r.viewId,r.viewGeneration));if(i)try{this.closeImageBitmap(r.imageBitmap)}catch(o){this.logLocalWorkBarrierError(`[Appliance]: releasing cancelled erase bitmap failed; viewId=${r.viewId}; eraseTxnId=${r.eraseTxnId}; error=${o instanceof Error?o.message:String(o)}`)}return!i}):[]}reportRenderFrameError(e,r){this.Logger.error(`[Appliance]: [render-image-bitmap-frame] stage=rejected reason=${e} source=${r.source} layer=Bg viewId=${r.viewId} receivedGeneration=${r.receivedGeneration??"unknown"} currentGeneration=${r.currentGeneration??"unknown"} taskId=${r.taskId??"unknown"} sequence=${r.sequence??"unknown"} lastTaskId=${r.lastTaskId??"unknown"} lastSequence=${r.lastSequence??"unknown"} maxSequence=${r.maxSequence??"unknown"}`)}acceptFullLayerFrame(e,r,n){if(!e.isFullFrameImageBitmap||e.frameSequence===void 0)return!0;const i=e.viewGeneration??n;if(i===void 0)return!0;const o=this.fullLayerFrameStateByView.get(e.viewId),a=(o==null?void 0:o.generation)===i?o:{generation:i,maxSequence:0},c=a[r];if(c){if(e.frameSequence===c.sequence)return this.reportRenderFrameError("duplicate-sequence",{source:r,viewId:e.viewId,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(e.viewId),taskId:e.taskId,sequence:e.frameSequence,lastTaskId:c.taskId,lastSequence:c.sequence,maxSequence:a.maxSequence}),!1;if(e.frameSequence<c.sequence)return this.reportRenderFrameError("out-of-order-sequence",{source:r,viewId:e.viewId,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(e.viewId),taskId:e.taskId,sequence:e.frameSequence,lastTaskId:c.taskId,lastSequence:c.sequence,maxSequence:a.maxSequence}),!1}return this.fullLayerFrameStateByView.set(e.viewId,{...a,generation:i,maxSequence:Math.max(a.maxSequence,e.frameSequence),[r]:{sequence:e.frameSequence,taskId:e.taskId}}),!0}acceptWorkerBatch(e,r="fullWorker"){var a,c,l,u;const{viewId:n,viewGeneration:i,render:o}=e;if(n&&i!==void 0&&this.viewGenerationById.get(n)!==i){const h=o==null?void 0:o.find(d=>d.isFullFrameImageBitmap);return o!=null&&o.length&&this.reportRenderFrameError("stale-generation",{source:r,viewId:n,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(n),taskId:h==null?void 0:h.taskId,sequence:h==null?void 0:h.frameSequence,maxSequence:(c=(a=this.fullLayerFrameStateByView)==null?void 0:a.get(n))==null?void 0:c.maxSequence}),o==null||o.forEach(d=>{try{this.closeImageBitmap(d.imageBitmap)}catch(f){this.logLocalWorkBarrierError(`[Appliance]: releasing stale render bitmap failed; viewId=${n}; error=${f instanceof Error?f.message:String(f)}`)}}),(l=e.sp)==null||l.forEach(d=>{try{this.closeImageBitmap(d.imageBitmap)}catch(f){this.logLocalWorkBarrierError(`[Appliance]: releasing stale message bitmap failed; viewId=${n}; error=${f instanceof Error?f.message:String(f)}`)}}),!1}return(u=e.sp)!=null&&u.length&&i!==void 0&&(e.sp=e.sp.map(h=>{const d=h.viewId||n;return h.viewGeneration!==void 0||h.viewId&&h.viewId!==n?h:{...h,viewId:d,viewGeneration:i}})),o!=null&&o.length&&(e.render=o.filter(h=>{var y,S;const d=h.viewId||n,f=d?this.viewGenerationById.get(d):void 0,g=h.viewGeneration??i;return d&&f!==void 0&&g!==void 0&&g!==f?(this.reportRenderFrameError("stale-generation",{source:r,viewId:d,receivedGeneration:g,currentGeneration:f,taskId:h.taskId,sequence:h.frameSequence,maxSequence:(S=(y=this.fullLayerFrameStateByView)==null?void 0:y.get(d))==null?void 0:S.maxSequence}),this.closeImageBitmap(h.imageBitmap),!1):this.acceptFullLayerFrame(h,r,i)?!0:(this.closeImageBitmap(h.imageBitmap),!1)})),!0}scheduleViewRecovery(e,r){const n=this.viewGenerationById.get(e),o=(this.viewRecoveryQueueByView.get(e)||Promise.resolve()).catch(()=>{}).then(async()=>{if(this.viewGenerationById.get(e)!==n||!this.viewContainerManager.getView(e))return;const a=this.viewContainerManager.getCurScenePath(e);a&&(this.Logger.error(`[Appliance]: rebuilding view after bitmap eraser failure; viewId=${e}; reason=${r}`),await this.clearViewScenePath(e,!0),!(this.viewGenerationById.get(e)!==n||this.viewContainerManager.getCurScenePath(e)!==a)&&this.pullServiceData(e,a,{isAsync:!0,useAnimation:!1}))});return this.viewRecoveryQueueByView.set(e,o),o.then(()=>{this.viewRecoveryQueueByView.get(e)===o&&(this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e))},a=>{this.viewRecoveryQueueByView.get(e)===o&&(this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e)),this.logLocalWorkBarrierError(`[Appliance]: view recovery failed; viewId=${e}; error=${a instanceof Error?a.message:String(a)}`)}),o}get isBusy(){return this.cameraUpdateStateByView.size>0||this.pendingDprByView.size>0||this.viewRecoveryQueueByView.size>0}isViewBusy(e){var r;return((r=this.cameraUpdateStateByView.get(e))==null?void 0:r.isBusy)===!0||this.pendingDprByView.has(e)||this.viewRecoveryQueueByView.has(e)||this.control.isClearBusy(e)}getLockSentEventCursor(){return this.isLockSentEventCursor}setLockSentEventCursor(e){this.isLockSentEventCursor=e}getTasksqueueState(){return this.isBusy&&he.Doing||he.Done}setMaxDrawCount(e){this.maxDrawCount=e}getFullWorkDrawCount(){return this.fullWorkerDrawCount}getMaxDrawCount(){return this.maxDrawCount}setSubWorkerDrawCount(e){this.subWorkerDrawCount=e}setConsumeCount(e,r){this.acceptConsumeAck(e,r)}getConsumeCount(){return this.consumeCount}getLocalInputPointCount(e,r){let n=0;for(const i of this.localPointsBatchData.values())i.viewId!==e||r&&i.toolsType!==r||(n=Math.max(n,Math.floor(i.rawPoints.length/2)));return n}setWorkerTasksqueueCount(e){ve.isNumber(e)}collectorSyncData(e){var c,l,u,h,d,f,g,y,S,b,C,N,T,p,m,v;const r=e.filter(M=>{if(this.isStaleViewStorageMessage(M))return M.imageBitmap&&this.closeImageBitmap(M.imageBitmap),!1;if(this.isCancelledLocalWorkResult(M))return this.closeImageBitmap(M.imageBitmap),!1;const R=this.isCancelledEraseResult(M.eraseTxnId,M.viewId,M.viewGeneration);return R&&this.closeImageBitmap(M.imageBitmap),!R}),n=new Set(r.filter(M=>M.eraseTxnId&&M.eraseTxnPhase==="applied").map(M=>M.eraseTxnId)),i=new Set(r.filter(M=>M.eraseTxnId&&M.eraseTxnPhase==="failed").map(M=>M.eraseTxnId)),o=new Map;for(const M of r){if(M.eraseTxnRecoveryRequired&&M.viewId&&o.set(M.viewId,"bitmap-eraser-done-restore-failed"),!M.eraseTxnId)continue;const R=this.getFullLayerBitmapEraseTxns().get(M.eraseTxnId);if(R){if(M.eraseTxnBeforeImages){R.beforeImages||(R.beforeImages=new Map);const E=M.eraseTxnBeforeImages;E instanceof Map?E.forEach((P,k)=>{R.beforeImages.has(k)||R.beforeImages.set(k,ve.cloneDeep(P)),(R.affectedTargetIds||(R.affectedTargetIds=new Set)).add(k)}):Object.entries(E).forEach(([P,k])=>{R.beforeImages.has(P)||R.beforeImages.set(P,ve.cloneDeep(k)),(R.affectedTargetIds||(R.affectedTargetIds=new Set)).add(P)})}if(M.type===le.UpdateNode&&M.workId!==void 0&&M.workId.toString()!==M.eraseTxnId&&((R.updatedTargetIds||(R.updatedTargetIds=new Set)).add(M.workId.toString()),(R.appliedTargetIds||(R.appliedTargetIds=new Set)).add(M.workId.toString())),M.type===le.RemoveNode&&((c=M.removeIds)!=null&&c.length)){const E=R.deletedTargetIds||(R.deletedTargetIds=new Set);M.removeIds.forEach(P=>{const k=P.toString();k!==M.eraseTxnId&&(E.add(k),(R.appliedTargetIds||(R.appliedTargetIds=new Set)).add(k))})}}}let a=!1;for(const M of r){if(this.fontFaceManager.handleWorkerMessage(M))continue;const{type:R,selectIds:E,opt:P,selectRect:k,strokeColor:O,fillColor:B,willSyncService:D,isSync:A,imageBitmap:L,canvasHeight:U,canvasWidth:Y,rect:q,op:ie,canTextEdit:z,points:V,selectorColor:Z,canRotate:$,scaleType:ee,textOpt:oe,toolsType:ce,workId:me,viewId:pe,dataType:j,canLock:F,isLocked:J,shapeOpt:ae,toolsTypes:K,thickness:te,strokeType:w,useStroke:I,isgl:W,imageSrc:G,isSubWorker:_,updateNodeOpt:ne,emitEventType:re,requestId:X,viewOwner:se,reportString:ue,reportBusiness:de,reportErrorCode:ge,index:ye,imageElement:Se,workState:be,isSelecting:Ie,needUndoTicker:Ce}=M;if(R===le.Init&&pe){this.ackMainViewInit(pe,M.viewGeneration,M.reportContextType);continue}if(R===le.ServiceSyncCommit&&pe){Promise.resolve().then(()=>this.ackServiceSyncCommit(M));continue}if(!pe)continue;const Ae=M.scenePath||this.viewContainerManager.getCurScenePath(pe);switch(R){case le.RefreshTextRender:this.resolveRefreshTextRender(X,!0);break;case le.SelectorTransform:{if(re&&be)try{(l=this.control.selectorApi)==null||l.onSelectorTransform({viewId:pe,emitEventType:re,workState:be})}catch(Ee){(h=(u=this.Logger)==null?void 0:u.error)==null||h.call(u,`[Appliance]: [selector] onSelectorTransform failed: ${Ee==null?void 0:Ee.message}`)}break}case le.Select:{const Ee=E!=null&&E.length?{...k,selectIds:E,canvasHeight:U,canvasWidth:Y,points:V}:void 0;if(Ee&&(P!=null&&P.strokeColor)&&(Ee.selectorColor=P.strokeColor),Ee&&Z&&(Ee.selectorColor=Z),Ee&&O&&(Ee.strokeColor=O),Ee&&(P!=null&&P.fillColor)&&(Ee.fillColor=P.fillColor),Ee&&B&&(Ee.fillColor=B),Ee&&ve.isBoolean($)&&(Ee.canRotate=$),Ee&&ee&&(Ee.scaleType=ee),Ee&&z&&(Ee.canTextEdit=z),Ee&&oe&&(Ee.textOpt=oe),Ee&&ve.isBoolean(F)&&(Ee.canLock=F),Ee&&ve.isBoolean(J)&&(Ee.isLocked=J),Ee&&ae&&(Ee.shapeOpt=ae),Ee&&K&&(Ee.toolsTypes=K),Ee&&te&&(Ee.thickness=te),Ee&&w&&(Ee.strokeType=w),Ee&&ve.isBoolean(I)&&(Ee.useStroke=I),pe&&this.viewContainerManager.showFloatBar(pe,!!Ee,Ee),D&&((d=this.collector)==null||d.dispatch({type:R,selectIds:E,opt:P,isSync:A,viewId:pe,scenePath:Ae,needUndoTicker:Ce,requestId:X,emitEventType:re})),Ie)break;try{(f=this.control.selectorApi)==null||f.onSelectorSync({viewId:pe,scenePath:Ae,selectIds:E,selectRect:k,selectorInfo:Ee})}catch(ke){(y=(g=this.Logger)==null?void 0:g.error)==null||y.call(g,`[Appliance]: [selector] onSelectorSync failed: ${ke==null?void 0:ke.message}`)}break}case le.Snapshot:if((L||Se)&&Ae){const Ee=this.getViewSceneRequestKey(pe,Ae);if(!X||this.snapshotRequestIdByViewScene.get(Ee)!==X){this.closeImageBitmap(L);break}const ke=this.snapshotMap.get(Ee);if(ke&&ke.requestId===X){const{resolve:Oe,value:Ne}=ke;if(Ne&&Oe){const je=ye||0;Ne[je]=L||Se,Ne.every(Je=>Je!==void 0)&&Oe(Ne)}}else this.closeImageBitmap(L)}break;case le.BoundingBox:if(q&&Ae){const Ee=this.getViewSceneRequestKey(pe,Ae);if(!X||this.boundingRectRequestIdByViewScene.get(Ee)!==X)break;const ke=this.boundingRectMap.get(Ee);ke&&ke.requestId===X&&ke.resolve(q)}break;case le.Cursor:ie&&this.control.cursor.collectServiceCursor({...M});break;case le.Clear:if(pe){this.viewContainerManager.showFloatBar(pe,!1);const Ee=(S=this.clearAllResolveMap.get(pe))==null?void 0:S.resolve;Ee&&Ee(pe);try{(b=this.control.selectorApi)==null||b.onSelectorCleared({viewId:pe,scenePath:Ae})}catch(ke){(N=(C=this.Logger)==null?void 0:C.error)==null||N.call(C,`[Appliance]: [selector] onSelectorCleared failed: ${ke==null?void 0:ke.message}`)}}break;case le.BackgroundSVGDelete:this.backgroundThreadManager&&pe&&this.backgroundThreadManager.consumeTargetOne(pe,{...M,msgType:le.BackgroundSVGDelete,viewId:pe,scenePath:Ae,dataType:Re.Local}).catch(Ee=>{this.logLocalWorkBarrierError(`[Appliance]: background SVG delete failed; viewId=${pe}; error=${Ee instanceof Error?Ee.message:String(Ee)}`)});break;case le.BackgroundSVGUpdate:this.backgroundThreadManager&&pe&&this.backgroundThreadManager.consumeTargetOne(pe,{...M,msgType:le.BackgroundSVGUpdate,viewId:pe,scenePath:Ae,dataType:Re.Local}).catch(Ee=>{this.logLocalWorkBarrierError(`[Appliance]: background SVG update failed; viewId=${pe}; error=${Ee instanceof Error?Ee.message:String(Ee)}`)});break;case le.TextUpdate:if(ce===Q.Text&&me&&pe){const Ee=re===Te.TranslateNode;re&&[Te.SetColorNode,Te.SetFontStyle,Te.SetLock,Te.SetShapeOpt,Te.ZIndexNode].includes(re)&&((T=this.control.selectorApi)==null||T.onPropertyApplied({type:re,viewId:pe,scenePath:Ae,requestId:X,data:this.buildPropertyAppliedData(re,P,ne)}));const ke=this.viewContainerManager.transformToOriginPoint((P==null?void 0:P.boxPoint)||[0,0],pe),Oe=(P==null?void 0:P.boxSize)||[0,0],Ne=(p=this.viewContainerManager.getView(pe))==null?void 0:p.cameraOpt;P?this.control.textEditorManager.updateTextForWorker({x:ke[0],y:ke[1],w:Oe[0],h:Oe[1],scale:(Ne==null?void 0:Ne.scale)||1,workId:me,opt:P,dataType:j,viewId:pe,canSync:D||!1,canWorker:!1,updateNodeOpt:ne,previewMatrix:M.previewMatrix,skipStorageDispatch:!0}):this.control.textEditorManager.delete(me,D||!1,!1),!!(Ce||Ee&&D)&&((m=this.collector)==null||m.dispatch({type:le.UpdateNode,workId:me,toolsType:Q.Text,opt:P,updateNodeOpt:ne,isSync:D||!1,viewId:pe,scenePath:Ae,needUndoTicker:Ce,requestId:X,emitEventType:re}))}break;case le.GetTextActive:ce===Q.Text&&me&&pe&&this.control.textEditorManager.updateTextForWorker({workId:me,isActive:!0,viewId:pe,dataType:Re.Local,canWorker:!1,canSync:!0},this.now);break;case le.GetImageBitMap:if(G&&pe&&me){const Ee=this.initGeneration,ke=this.viewGenerationById.get(pe),Oe=this.control.hasOffscreenCanvas;dve({src:G,isgl:W,useImageBitmap:Oe}).then(Ne=>{var nt;const je=Oe?Ne:void 0,Je=Oe?void 0:Ne;if(!(Ee===this.initGeneration&&this.viewGenerationById.get(pe)===ke&&!!this.viewContainerManager.getView(pe))){this.closeImageBitmap(je);return}const et=new Set;et.add({msgType:le.GetImageBitMap,dataType:Re.Local,workId:me,viewId:pe,viewGeneration:ke,viewOwner:se,imageSrc:G,requestId:X,isSubWorker:_,imageBitmap:je,imageElement:Je});try{if(Oe){const Qe=_&&this.subWorker?this.subWorker:this.fullWorker;if(!Qe||typeof Qe.postMessage!="function"){this.closeImageBitmap(je);return}je?Qe.postMessage(et,[je]):Qe.postMessage(et)}else{const Qe=(nt=this.mainThread)==null?void 0:nt.consume(et);Qe==null||Qe.catch(st=>{this.logLocalWorkBarrierError(`[Appliance]: image bitmap delivery failed; viewId=${pe}; workId=${me}; error=${st instanceof Error?st.message:String(st)}`)})}}catch(Qe){this.closeImageBitmap(je),this.logLocalWorkBarrierError(`[Appliance]: image bitmap delivery failed; viewId=${pe}; workId=${me}; error=${Qe instanceof Error?Qe.message:String(Qe)}`)}}).catch(Ne=>{this.logLocalWorkBarrierError(`[Appliance]: image bitmap load failed; viewId=${pe}; workId=${me}; src=${G}; error=${Ne instanceof Error?Ne.message:String(Ne)}`)})}break;case le.GetVNodeInfo:if(me){const Ee=me.toString(),ke=(v=this.getVNodeInfoResolveMap.get(Ee))==null?void 0:v.resolve,Oe={...M,uuid:Ee};ke&&ke(Oe)}break;case le.ReportError:case le.ReportLog:R===le.ReportError&&ge&&this.scheduleRenderRuntimeFallback(M),R===le.ReportError&&de&&Ae&&X&&(de==="snapshot"?this.settleSnapshotFailure(pe,Ae,X):this.settleBoundingRectFailure(pe,Ae,X)),ue&&(R===le.ReportError?this.Logger.error(`[Appliance]: [MasterControlForWorker] reportError ${ue}`):this.Logger.info(`[Appliance]: [MasterControlForWorker] reportLog ${ue}`));break;default:a=!0;break}}a&&this.collectorAsyncData(r),n.forEach(M=>{this.finishFullLayerBitmapEraseTxn(M,"committed")}),i.forEach(M=>{this.finishFullLayerBitmapEraseTxn(M,"aborted")}),o.forEach((M,R)=>{this.scheduleViewRecovery(R,M)})}collectorAsyncData(e){var r,n,i,o,a,c,l,u,h,d;for(const f of e){if(this.isStaleViewStorageMessage(f)){f.imageBitmap&&this.closeImageBitmap(f.imageBitmap);continue}if(this.isCancelledLocalWorkResult(f)){this.closeImageBitmap(f.imageBitmap);continue}if(this.isCancelledEraseResult(f.eraseTxnId,f.viewId,f.viewGeneration)){this.closeImageBitmap(f.imageBitmap);continue}const{type:g,op:y,workId:S,index:b,removeIds:C,ops:N,opt:T,updateNodeOpt:p,emitEventType:m,requestId:v,toolsType:M,isSync:R,viewId:E,isLockSentEventCursor:P,nextTasks:k,needUndoTicker:O,collectUndoTicker:B,undoScopeIds:D,undoScopePhase:A}=f;if(!E){console.error("[MasterControlForWorker] collectorAsyncData on viewId in",f);return}const L=f.scenePath||this.viewContainerManager.getCurScenePath(E),U=Number(B??O??void 0);if(U&&(D!=null&&D.length)&&(A==="collect"||A==="finalize")&&this.internalMsgEmitter.emit("collectExpectedWorkIds",U,E,D,L),A==="finalize"&&O&&Number(O)&&L){const Y=Number(O);Array.isArray(D)&&D.length===0?this.internalMsgEmitter.emit("cancelUndoTicker",Y,E,L):this.internalMsgEmitter.emit("finalizeRequested",Y,E,D||[],L)}switch(O&&Number(O)&&nm(g)&&(D!=null&&D.length)&&this.internalMsgEmitter.emit("reopenStorageAck",Number(O),E,D,L),g){case le.None:{const Y=this.initGeneration,q=(r=this.viewGenerationById)==null?void 0:r.get(E),ie=()=>{var z;return this.isActive&&this.initGeneration===Y&&((z=this.viewGenerationById)==null?void 0:z.get(E))===q};P&&Nr(()=>{ie()&&this.setLockSentEventCursor(!1)},this.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback")),O&&Number(O)&&Nr(()=>{ie()&&this.internalMsgEmitter.emit("ackRenderUndoTicker",Number(O),E,L,{requestId:v,emitEventType:m})},0,this.control.hasPolyfillMethod("requestIdleCallback"));break}case le.DrawWork:{(n=this.collector)==null||n.dispatch({type:g,op:y,opt:T,toolsType:M,workId:S,index:b,isSync:R,viewId:E,scenePath:L,updateNodeOpt:p,needUndoTicker:O,collectUndoTicker:B,requestId:v,emitEventType:m});break}case le.FullWork:{if((i=this.collector)==null||i.dispatch({type:g,ops:N,workId:S,updateNodeOpt:p,opt:T,toolsType:M,isSync:R,viewId:E,scenePath:L,needUndoTicker:O,collectUndoTicker:B,requestId:v,emitEventType:m}),M===Q.BackgroundSVG&&S&&this.markmapIdResolveMap.has(S.toString())){const q=this.markmapIdResolveMap.get(S.toString());q!=null&&q.timer&&(clearTimeout(q.timer),q.timer=void 0),q!=null&&q.resolve&&q.resolve(S.toString()),this.markmapIdResolveMap.delete(S.toString())}const Y=E?(o=this.willSelectorWorkIdByView)==null?void 0:o.get(E):void 0;Y&&S&&S.toString()===Y&&this.control.runEffectWork(()=>{var q;this.setShapeSelectorByWorkId(Y,E),(q=this.willSelectorWorkIdByView)==null||q.delete(E)});break}case le.UpdateNode:{m&&[Te.SetColorNode,Te.SetFontStyle,Te.SetLock,Te.SetShapeOpt,Te.ZIndexNode].includes(m)&&((a=this.control.selectorApi)==null||a.onPropertyApplied({type:m,viewId:E,scenePath:L,requestId:v,data:this.buildPropertyAppliedData(m,T,p)})),(c=this.collector)==null||c.dispatch({type:g,updateNodeOpt:p,workId:S,opt:T,ops:N,op:y,isSync:R,viewId:E,scenePath:L,needUndoTicker:O,collectUndoTicker:B,requestId:v,emitEventType:m});break}case le.RemoveNode:{if(m===Te.DeleteNode&&((l=this.control.selectorApi)==null||l.onRemoveNodeApplied({viewId:E,requestId:v,removeIds:C})),C&&this.control.textEditorManager.deleteBatch(C,!1,!1),(u=this.collector)==null||u.dispatch({type:g,removeIds:C,isSync:R,viewId:E,scenePath:L,needUndoTicker:O,collectUndoTicker:B,requestId:v,emitEventType:m}),E){const Y=(h=this.willSelectorWorkIdByView)==null?void 0:h.get(E);Y&&(C!=null&&C.includes(Y))&&((d=this.willSelectorWorkIdByView)==null||d.delete(E))}break}}k&&this.collectorAsyncData(k)}}isStaleViewStorageMessage(e){var n;if(!e.viewId)return!1;const r=(n=this.viewGenerationById)==null?void 0:n.get(e.viewId);return r===void 0?!1:e.viewGeneration!==void 0?e.viewGeneration!==r:nm(e.type)}async onLocalEventEnd(e,r,n=this.initGeneration,i=(o=>(o=this.localInputEpochByView)==null?void 0:o.get(r))()||0){var y,S,b,C,N;const a=this.viewContainerManager.getView(r),c=this.viewGenerationById.get(r);if(!a||!this.isActive||this.initGeneration!==n||(((y=this.localInputEpochByView)==null?void 0:y.get(r))||0)!==i||this.viewGenerationById.get(r)!==c)return;const{focusScenePath:l,cameraOpt:u}=a,h=this.viewContainerManager.transformToScenePoint(e,r),d=[],f=[],g=new Map;for(const[T,p]of this.localPointsBatchData){if(p.viewId!==r)continue;if(p.toolsType===Q.Text){const v=p.state;if(v&&v===he.Start){const M=p.opt;M.workState=he.Doing,M.boxPoint=[Math.round(h[0]),Math.round(h[1])],M.boxSize=[M.fontSize,M.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:this.newWorkId,x:e[0],y:e[1],scale:(u==null?void 0:u.scale)||1,opt:M,type:Cr.Text,isActive:!0,viewId:r,scenePath:l},this.now)}this.deleteLocalPoint(T);continue}else{const v=this.getFullLayerBitmapEraseTxns().get(T.toString());if(v&&v.phase!=="doing")continue;const M=this.getLocalPointInfo(T);v&&Math.floor(((M==null?void 0:M.rawPoints.length)||0)/2)>=this.getFullLayerBitmapEraserMaxInputPoints(M)||this.pushLocalPoint(T,h,he.Done,r),(v==null?void 0:v.phase)==="doing"&&this.markFullLayerBitmapEraseDoneStaging(v);const E=this.getLocalPointInfo(T);if(E){const P=this.createAutoShapeTask({workId:T,viewId:r,scenePath:l,points:[...E.rawPoints],opt:E.opt});P&&f.push(P),Ni(E.toolsType)&&E.toolsType!==Q.BitMapEraser&&E.undoTickerId&&l?g.set(E.undoTickerId,{scenePath:l,workIds:[]}):Xl.has(E.toolsType)&&E.undoTickerId&&l&&g.set(E.undoTickerId,{scenePath:l,workIds:[T.toString()]})}d.push(T)}}if(d.length){let T;g.forEach(({scenePath:m,workIds:v},M)=>{this.internalMsgEmitter.emit("finalizeRequested",M,r,v,m)});try{this.localDoneWaitByView||(this.localDoneWaitByView=new Map),this.delayWorkStateToDoneResolveByView||(this.delayWorkStateToDoneResolveByView=new Map),T=`${r}:done:${++this.localDoneWaitSequence}`,this.localDoneWaitByView.set(r,{token:T,workIds:d.map(String),viewId:r,startedAt:Date.now()});const m=((C=(b=(S=this.control.pluginOptions)==null?void 0:S.extras)==null?void 0:b.undoRedo)==null?void 0:C.ackTimeout)||ju,v=Lp(m);if(await new Promise(R=>{let E=!1,P,k;const O=()=>{if(k===void 0)return;const A=this.localDoneDispatchTimersByView.get(r);A==null||A.delete(k),A&&A.size===0&&this.localDoneDispatchTimersByView.delete(r),k=void 0},B=A=>{var L;E||(E=!0,P!==void 0&&clearTimeout(P),k!==void 0&&(clearTimeout(k),O()),((L=this.delayWorkStateToDoneResolveByView)==null?void 0:L.get(r))===B&&this.delayWorkStateToDoneResolveByView.delete(r),R(A))};P=setTimeout(()=>{const A=d.filter(L=>!this.getFullLayerBitmapEraseTxns().has(L.toString()));if(!A.length){B(!1);return}this.logLocalWorkBarrierError(`[Appliance]: local Done business wait failed; viewId=${r}; workIds=${A.join(",")}; timeoutMs=${v}`);try{this.timeoutLocalWorks(r,l||"","local-done-timeout",new Set(A.map(String)))}catch(L){this.logLocalWorkBarrierError(`[Appliance]: local Done timeout cleanup failed; viewId=${r}; error=${L instanceof Error?L.message:String(L)}`)}B(!1)},v),k=setTimeout(async()=>{var U;if(O(),E||!this.isActive||this.initGeneration!==n||(((U=this.localInputEpochByView)==null?void 0:U.get(r))||0)!==i||this.viewGenerationById.get(r)!==c||!this.viewContainerManager.getView(r)){B(!1);return}const A=new Set(f.map(Y=>{var q;return(q=Y.workId)==null?void 0:q.toString()}).filter(Boolean));if(d.forEach(Y=>{if(A.has(Y.toString())){this.deleteLocalPoint(Y);return}this.setLocalPointIsFullWork(Y)}),f.forEach(Y=>{Y.needUndoTicker&&l&&Y.workId!==void 0&&Y.workId!==null&&this.internalMsgEmitter.emit("finalizeRequested",Number(Y.needUndoTicker),r,[Y.workId.toString()],l),this.taskBatchData.add(Y)}),this.delayWorkStateToDoneResolveByView.set(r,B),!d.some(Y=>this.localPointsBatchData.has(Y))){B(!1);return}f.length&&A.size===d.length&&B(!0),this.consume()},0);let D=this.localDoneDispatchTimersByView.get(r);D||(D=new Set,this.localDoneDispatchTimersByView.set(r,D)),k!==void 0&&D.add(k)})&&d[0]){const R=d[0];d.forEach(E=>{this.deleteLocalPoint(E)}),this.willSelectorWorkIdByView||(this.willSelectorWorkIdByView=new Map),this.willSelectorWorkIdByView.set(r,R.toString())}}catch(m){this.Logger.error(`[Appliance]: [MasterControlForWorker] onLocalEventEnd error: ${m instanceof Error?m.message:String(m)}`)}const p=this.getDoneWaitForView(r);T!==void 0&&(p==null?void 0:p.token)===T&&p.workIds.every(m=>d.some(v=>v.toString()===m))&&this.clearDoneWaitForView(r,T),T!==void 0&&((N=this.getDoneWaitForView(r))==null?void 0:N.token)===T&&this.clearDoneWaitForView(r,T),d.length=0}}onLocalEventDoing(e,r){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)===Q.Text)return;this.currentLocalWorkData.workState===he.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:he.Doing});let n=!1;for(const[o,{state:a}]of this.localPointsBatchData.entries()){const c=this.localPointsBatchData.get(o);if(!c||c.viewId!==r)continue;const l=this.getFullLayerBitmapEraseTxns().get(o.toString());if(!(l&&l.phase!=="doing")&&this.isAbled()&&a!==he.Pending){const u=this.viewContainerManager.transformToScenePoint(e,r);this.pushLocalPoint(o,u,a===he.Start?he.Doing:a,r),n=!0}}if(!this.forceDoneFullLayerBitmapEraseAtPointLimit(r)&&n){this.runAnimation();return}}onLocalEventStart(e,r){var l,u;this.viewContainerManager.focuedViewId!==r&&this.viewContainerManager.setFocuedViewId(r),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const n=(l=this.currentToolsData)==null?void 0:l.toolsType,i=n===Q.Selector?Le:this.newWorkId,o=this.setZIndex(r);let a;if(n!==void 0&&n!==Q.Text&&n!==Q.Selector&&this.isCanRecordUndoRedo){a=this.now;const h=Ni(n)?{render:!0,storage:!0,scopeMode:"dynamic",source:rm(n)}:{render:!0,storage:!0,source:rm(n)};this.internalMsgEmitter.emit("addUndoTicker",a,r,h)}this.setCurrentLocalWorkData({workState:he.Start,toolsOpt:o,viewId:r,undoTickerId:a});const c=this.viewContainerManager.transformToScenePoint(e,r);if(this.pushLocalPoint(i,c,he.Start,r,o),n===Q.BitMapEraser){const h={workId:i.toString(),viewId:r,scenePath:this.viewContainerManager.getCurScenePath(r),undoTickerId:a,phase:"doing",startedAt:Date.now(),doingAckCount:0,updatedTargetIds:new Set,deletedTargetIds:new Set};this.getFullLayerBitmapEraseTxns().set(i.toString(),h),this.logBitmapEraserTrace("start",h,{maxInputPoints:this.getFullLayerBitmapEraserMaxInputPoints(this.getLocalPointInfo(i))})}if(n!==Q.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),i&&o&&n&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:i,toolsOpt:o,viewId:r},n),this.consumeCount=0,this.postCount=0,this.maxDrawCount=0,this.fullWorkerDrawCount=0,this.subWorkerDrawCount=0,this.clearReRenders(1/0),this.isCanDrawWork){const h=this.viewContainerManager.getCurScenePath(r);h&&((u=this.collector)!=null&&u.hasSelector(r,h))&&this.blurSelector(r,h)}this.consume()}}setLocalPointIsFullWork(e){const r=this.getLocalPointInfo(e);r&&(r.isFullWork=!0,this.localPointsBatchData.set(e,r))}getFullLayerBitmapEraserMaxInputPoints(e){var r;return Oc(((r=e==null?void 0:e.opt)==null?void 0:r.fullLayerDoingMaskMaxInputPoints)??this.control.pluginOptions.extras.pencilEraser.fullLayerDoingMaskMaxInputPoints)}forceDoneFullLayerBitmapEraseAtPointLimit(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==Q.BitMapEraser)return!1;let r=!1;for(const[i,o]of this.localPointsBatchData.entries()){if(o.viewId!==e||o.toolsType!==Q.BitMapEraser||o.state!==he.Start&&o.state!==he.Doing)continue;const a=this.getFullLayerBitmapEraseTxns().get(i.toString()),c=this.getFullLayerBitmapEraserMaxInputPoints(o);!a||a.phase!=="doing"||Math.floor(o.rawPoints.length/2)<c||(o.state=he.Done,o.isFullWork=!0,a.forceDoneReason??(a.forceDoneReason="point-limit"),this.logBitmapEraserTrace("point-limit-force-done",a,{pointCount:Math.floor(o.rawPoints.length/2),maxInputPoints:c}),this.markFullLayerBitmapEraseDoneStaging(a),this.localPointsBatchData.set(i,o),r=!0)}return r&&this.checkDrawingWork(e),r}pushLocalPoint(e,r,n,i,o){var c;let a=this.getLocalPointInfo(e);if(n===he.Start)a={state:he.Start,points:[...r],rawPoints:[...r],toolsType:(c=this.currentToolsData)==null?void 0:c.toolsType,opt:o||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:i,undoTickerId:this.currentLocalWorkData.undoTickerId,scenePath:this.viewContainerManager.getCurScenePath(i)};else if(a){a.state=n;const l=a.rawPoints.length-2;n===he.Done&&l>=0&&a.rawPoints[l]===r[0]&&a.rawPoints[l+1]===r[1]||(a.points.push(r[0],r[1]),a.rawPoints.push(r[0],r[1]))}a&&this.localPointsBatchData.set(e,a)}deleteLocalPoint(e){this.localPointsBatchData.delete(e)}getLocalPointInfo(e){return this.localPointsBatchData.get(e)}getLocalPointsInfo(){return this.localPointsBatchData}getLocalInputDebugState(){var c,l,u,h;const e=Date.now(),r=[...this.localPointsBatchData.entries()].map(([d,f])=>({workId:d,state:f.state,toolsType:f.toolsType,undoTickerId:f.undoTickerId,isFullWork:f.isFullWork,pointCount:Math.floor(f.points.length/2),rawPointCount:Math.floor(f.rawPoints.length/2),viewId:f.viewId})),n=[],i=this.viewContainerManager.getAllViews().flatMap(d=>{if(!d)return[];const f=d.focusScenePath;return f?d.displayer.commiter.getPendingTickerSnapshots(f):[]});this.control.isToolChangePending&&n.push("tool-change-pending"),this.queuedLocalEventCount>0&&n.push("local-event-queue-pending");const o=[...((c=this.localDoneWaitByView)==null?void 0:c.values())||[],...(l=this.localDoneWaitByView)!=null&&l.size?[]:this.localDoneWait?[this.localDoneWait]:[]];o.length&&(n.push("local-done-waiting"),r.length?r.every(d=>d.state===he.Done&&!d.pointCount)&&n.push("done-work-has-no-points"):n.push("done-waiting-without-local-work")),this.isLocalWorkActive&&this.currentLocalWorkData.workState===he.Pending&&n.push("active-work-with-pending-state"),i.some(d=>d.phase==="failed")&&n.push("undo-ticker-failed");const a=this.viewContainerManager.getAllViews().filter(d=>d&&this.control.isClearBusy(d.id)).map(d=>d.id);return a.length&&n.push("clear-operation-pending"),{timestamp:e,suspectedBlockers:n,toolChangePending:this.control.isToolChangePending,isAbled:this.isAbled(),isWritable:this.control.renderControl.isWritable,currentTool:(u=this.currentToolsData)==null?void 0:u.toolsType,currentLocalWorkData:{...this.currentLocalWorkData},isLocalWorkActive:this.isLocalWorkActive,localWorkViewId:this.getLocalWorkViewId(),queuedLocalEventCount:this.queuedLocalEventCount,activeLocalEvent:this.activeLocalEvent?{...this.activeLocalEvent,waitingMs:e-this.activeLocalEvent.startedAt}:void 0,localDoneWait:o[0]?{...o[0],waitingMs:e-(o[0].startedAt||e)}:void 0,localDoneWaits:o.map(d=>({...d,waitingMs:e-(d.startedAt||e)})),hasDoneResolver:(((h=this.delayWorkStateToDoneResolveByView)==null?void 0:h.size)||0)>0||!!this.delayWorkStateToDoneResolve,localPoints:r,taskBatchSize:this.taskBatchData.size,tasksqueueSize:this.tasksqueue.size,animationScheduled:this.animationId!==void 0,cameraStates:[...this.cameraUpdateStateByView.entries()].map(([d,f])=>{var g,y,S,b;return{viewId:d,isBusy:f.isBusy,hasPending:!!f.pendingCamera,hasPrepare:!!f.preparePromise,isRecovering:f.isRecovering===!0,recoveryFromGeneration:f.recoveryFromGeneration,recoveryOwner:f.recoveryOwner,hasReplayCamera:!!f.replayCamera,currentTaskId:f.currentTaskId,transactionTaskId:(g=f.transaction)==null?void 0:g.taskId,transactionGeneration:(y=f.transaction)==null?void 0:y.viewGeneration,coreAckReceived:(S=f.transaction)==null?void 0:S.coreAckReceived,settledAckReceived:(b=f.transaction)==null?void 0:b.settledAckReceived}}),operationBarrierViews:[...this.operationBarrierQueueByView.keys()],clearBusyViews:a,pendingTickers:i}}shouldUseAutoShape(e){var r;return((r=this.currentToolsData)==null?void 0:r.toolsType)===Q.Pencil&&!!(e!=null&&e.autoShape)}toAutoShapePoints(e){const r=[];for(let n=0;n<e.length-1;n+=2)r.push([e[n],e[n+1]]);return r}emitAutoShapeResult(e){const{viewId:r,workId:n,scenePath:i,result:o,recognized:a,mappedToolsType:c}=e,l=o.candidates[0],u={workId:n.toString(),viewId:r,scenePath:i,recognized:a,fallbackToPencil:!a,kind:o.kind,score:o.score,threshold:o.threshold,templateId:o.templateId,mappedToolsType:c,topCandidate:l?{kind:l.kind,score:l.score,threshold:l.threshold,templateId:l.templateId}:void 0,metrics:{cornerCount:o.metrics.cornerCount,straightness:o.metrics.straightness,closureRatio:o.metrics.closureRatio,radialVariance:o.metrics.radialVariance,bboxCornerCloseness:o.metrics.bboxCornerCloseness,diamondCloseness:o.metrics.diamondCloseness}};this.publicMsgEmitter.emit("autoShape",u)}createAutoShapeTask(e){const{workId:r,viewId:n,scenePath:i,points:o,opt:a}=e;if(!this.shouldUseAutoShape(a))return;const c=Ywe({rawPoints:this.toAutoShapePoints(o),pencilOptions:ve.cloneDeep(a),viewId:n,scenePath:i});if(!c)return;const l=Gwe(c),u=Xp(l,c)||this.mapAutoShapeFallback(l,c);if(this.emitAutoShapeResult({viewId:n,workId:r,scenePath:i,result:l,recognized:!!u,mappedToolsType:u==null?void 0:u.toolsType}),!!u)return{msgType:le.FullWork,dataType:Re.Local,workId:r,viewId:n,scenePath:i,toolsType:u.toolsType,opt:u.opt,ops:mwe(u),willRefresh:!0,willSyncService:!0,isRunSubWork:!0,clearPreviewLocalWork:!0,isLockSentEventCursor:!0,autoShapeResult:l,needUndoTicker:this.viewContainerManager.getUndoTickerId(n)}}mapAutoShapeFallback(e,r){const{metrics:n}=e;if(e.recognized||n.closureRatio>.1)return null;let i;return n.cornerCount>=4&&n.cornerCount<=6&&n.bboxCornerCloseness<=.15&&n.diamondCloseness>n.bboxCornerCloseness+.15?i="rectangle":n.cornerCount===3&&n.radialVariance<.28?i="triangle":n.cornerCount>=8&&n.cornerCount<=12&&n.radialVariance>.28?i="star":n.cornerCount>=5&&n.radialVariance<.22&&n.bboxCornerCloseness>.2&&(i="ellipse"),i?Xp({...e,kind:i,recognized:!0},r):null}correctStorage(e,r,n){var h,d;const i=new Map,o=[],a=new Map,c=[];Object.keys(e).forEach(f=>{var S,b,C;const g=(b=(S=e[f])==null?void 0:S.opt)==null?void 0:b.zIndex,y=(C=e[f])==null?void 0:C.toolsType;ve.isNumber(g)&&(y&&y===Q.BackgroundSVG?c.push([f,g]):o.push([f,g]))});const l=o.length&&((h=this.zIndexNodeMethod)==null?void 0:h.correct(o))||[],u=c.length&&((d=this.zIndexNodeMethod)==null?void 0:d.correct(c))||[];this.zIndexNodeMethod&&l.length&&(this.zIndexNodeMethod.setMinZIndex(l[0][1]||0,r),this.zIndexNodeMethod.setMaxZIndex(l[l.length-1][1]||0,r)),this.zIndexNodeMethod&&u.length&&(this.zIndexNodeMethod.setMinZIndexForBackgroundSVG(u[0][1]||0,r),this.zIndexNodeMethod.setMaxZIndexForBackgroundSVG(u[u.length-1][1]||0,r));for(const[f,g]of l){if(!e[f])continue;const y=e[f];y.opt&&ve.isNumber(y.opt.zIndex)&&y.opt.zIndex!==g&&(y.opt.zIndex=g,i.set(f,y))}i.size&&i.forEach((f,g)=>{var y;(y=this.collector)==null||y.updateValue(g,f,{viewId:r,scenePath:n,isSync:!0}),e[g]=f});for(const[f,g]of u){if(!e[f])continue;const y=e[f];y.opt&&ve.isNumber(y.opt.zIndex)&&y.opt.zIndex!==g&&(y.opt.zIndex=g,a.set(f,y))}return a.size&&a.forEach((f,g)=>{var y;(y=this.collector)==null||y.updateValue(g,f,{viewId:r,scenePath:n,isSync:!0}),e[g]=f}),e}originalEventLintener(e,r,n){var f,g;const i=((f=this.localInputTransactionEpochByView)==null?void 0:f.has(n))===!0;if(e===he.Start){if(!this.control.canAcceptLocalMutation(n))return Promise.resolve()}else if(e===he.Doing&&!this.control.canAcceptLocalMutation(n)||(e===he.Doing||e===he.Done)&&!i)return Promise.resolve();const o=++this.localEventSequence,a=this.initGeneration,c=this.viewGenerationById.get(n),l=((g=this.localInputEpochByView)==null?void 0:g.get(n))||0;this.localInputTransactionEpochByView||(this.localInputTransactionEpochByView=new Map),e===he.Start&&this.localInputTransactionEpochByView.set(n,l);const u=this.localInputTransactionEpochByView.get(n)??l;this.queuedLocalEventCount++;const h=this.localEventQueue.then(async()=>{var y,S,b;this.activeLocalEvent={sequence:o,state:e,viewId:n,startedAt:Date.now()};try{if(this.initGeneration!==a||!this.isActive||(((y=this.localInputEpochByView)==null?void 0:y.get(n))||0)!==u||this.viewGenerationById.get(n)!==c||!this.viewContainerManager.getView(n))return;await this.consumeOriginalEvent(e,r,n,o,a,u)}finally{this.queuedLocalEventCount=Math.max(0,this.queuedLocalEventCount-1),((S=this.activeLocalEvent)==null?void 0:S.sequence)===o&&(this.activeLocalEvent=void 0),e===he.Done&&((b=this.localInputTransactionEpochByView)==null?void 0:b.get(n))===u&&this.localInputTransactionEpochByView.delete(n)}}),d=h.catch(()=>{});return this.localEventQueue=d,this.localEventQueueByView.set(n,d),d.then(()=>{this.localEventQueueByView.get(n)===d&&this.localEventQueueByView.delete(n)}),h}async waitForLocalEventQueue(e){await(e&&this.localEventQueueByView?this.localEventQueueByView.get(e)||Promise.resolve():this.localEventQueue)}async finishActiveContinuousMethods(e,r){var l,u,h;const n=this.viewContainerManager.getUndoTickerId(e),i=await((l=this.methodBuilder)==null?void 0:l.finishActiveContinuousMethods(e,r))||[],o=new Set(i);n!==void 0&&o.add(n);const a=this.viewContainerManager.getUndoTickerId(e);if(a!==void 0&&o.add(a),!o.size)return;const c=(h=(u=this.viewContainerManager.getView(e))==null?void 0:u.displayer)==null?void 0:h.commiter;c&&await Promise.all([...o].map(d=>c.waitForTickerEnd(d,Math.max(this.maxLastSyncTime*4,1e3))))}async forceDoneLocalWorks(e,r,n,i={}){var d;this.operationBarrierQueueByView||(this.operationBarrierQueueByView=new Map);const o=this.operationBarrierQueueByView.get(e)||Promise.resolve(),a=((d=this.operationBarrierEpochByView)==null?void 0:d.get(e))||0,c=this.viewContainerManager.getView(e),l=this.viewGenerationById.get(e),u=o.then(()=>this.executeTransactionBarrier(e,r,n,a,i)).then(()=>{var g;return(((g=this.operationBarrierEpochByView)==null?void 0:g.get(e))||0)===a&&this.viewGenerationById.get(e)===l&&this.viewContainerManager.getView(e)===c?{status:"success",viewId:e,scenePath:r,reason:n}:{status:"failed",viewId:e,scenePath:r,reason:n,failureReason:"lifecycle-invalidated"}}).catch(f=>{const g=vr(f);let y="";try{this.timeoutLocalWorks(e,r,`${n}-barrier-failed`,void 0,f)}catch(S){y=vr(S),this.logLocalWorkBarrierError(`[Appliance]: force-Done failure cleanup failed; viewId=${e}; scenePath=${r}; reason=${n}; error=${y}`)}return{status:"failed",viewId:e,scenePath:r,reason:n,failureReason:y?`${g}; cleanup=${y}`:g}}),h=u.then(()=>{},()=>{});this.operationBarrierQueueByView.set(e,h);try{return await u}finally{this.operationBarrierQueueByView.get(e)===h&&this.operationBarrierQueueByView.delete(e)}}invalidateTransactionBarrier(e){var r,n,i;this.operationBarrierEpochByView||(this.operationBarrierEpochByView=new Map),this.operationBarrierEpochByView.set(e,(this.operationBarrierEpochByView.get(e)||0)+1),(n=(r=this.operationBarrierInvalidationWaitersByView)==null?void 0:r.get(e))==null||n.forEach(o=>o()),(i=this.operationBarrierInvalidationWaitersByView)==null||i.delete(e)}async waitForCurrentTransactionBarrier(e,r,n){if(!r())return!1;this.operationBarrierInvalidationWaitersByView||(this.operationBarrierInvalidationWaitersByView=new Map);let i;const o=new Promise(c=>{i=c});let a=this.operationBarrierInvalidationWaitersByView.get(e);a||(a=new Set,this.operationBarrierInvalidationWaitersByView.set(e,a)),a.add(i);try{return await Promise.race([n,o]),r()}finally{a.delete(i),a.size||this.operationBarrierInvalidationWaitersByView.delete(e)}}async executeTransactionBarrier(e,r,n="camera-update",i=(a=>(a=this.operationBarrierEpochByView)==null?void 0:a.get(e))()||0,o={}){var P,k,O,B,D,A;const c=this.viewContainerManager.getView(e),l=this.viewGenerationById.get(e),u=()=>{var L;return this.viewGenerationById.get(e)===l&&(((L=this.operationBarrierEpochByView)==null?void 0:L.get(e))||0)===i&&this.viewContainerManager.getView(e)===c};if(!await this.waitForCurrentTransactionBarrier(e,u,this.waitForLocalEventQueue(e)))return;if(o.syncStorage===!1){this.cancelLocalWorks(e,!1);return}const h=(P=c==null?void 0:c.displayer)==null?void 0:P.commiter,d=[...this.getFullLayerBitmapEraseTxns().values()].filter(L=>L.viewId===e&&(!L.scenePath||L.scenePath===r)&&L.phase!=="aborting"&&L.phase!=="aborted"),f=new Set(d.map(L=>L.workId));d.forEach(L=>{L.phase==="doing"&&(L.forceDoneReason??(L.forceDoneReason=n),this.logBitmapEraserTrace("force-done",L,{reason:n}))});const g=n==="set-readonly"||n==="disconnect"||n==="destroy"||n==="view-destroy",y=n==="set-readonly"||n==="disconnect",S=g||n==="scene-change",b=()=>((h==null?void 0:h.getPendingTickerSnapshots(r))||[]).filter(L=>L.source===$e.Text?S:g||Rs(L.source).kind!=="wait-owner");let C=b();const N=((B=(O=(k=this.control.pluginOptions)==null?void 0:k.extras)==null?void 0:O.undoRedo)==null?void 0:B.ackTimeout)||ju,T=Rye(N),p=Lp(N),m=[...this.localPointsBatchData.values()].some(L=>L.viewId===e&&(!L.scenePath||L.scenePath===r)&&L.toolsType!==Q.Text&&(L.state===he.Start||L.state===he.Doing));let v=!1;for(const L of C){if(L.finalizeRequested||L.phase!=="doing")continue;const U=Rs(L.source);if(U.kind==="stop-event"){if(!v&&(c!=null&&c.displayer)&&(v=!0,!await this.waitForCurrentTransactionBarrier(e,u,c.displayer.stopEventHandler())))return;continue}if(U.kind==="method-pause"&&!await this.waitForCurrentTransactionBarrier(e,u,Promise.resolve((A=(D=this.methodBuilder)==null?void 0:D.getBuilder(U.emitEventType))==null?void 0:A.pause(e,r))))return}if(m&&!v&&(c!=null&&c.displayer)&&(v=!0,!await this.waitForCurrentTransactionBarrier(e,u,c.displayer.stopEventHandler()))||!await this.waitForCurrentTransactionBarrier(e,u,this.waitForLocalEventQueue(e))||[...this.localPointsBatchData.values()].some(L=>L.viewId===e&&(!L.scenePath||L.scenePath===r)&&L.toolsType!==Q.Text&&(L.state===he.Start||L.state===he.Doing))&&(!await this.waitForCurrentTransactionBarrier(e,u,this.checkDrawingWork(e))||!await this.waitForCurrentTransactionBarrier(e,u,this.waitForLocalEventQueue(e)))||!await this.waitForCurrentTransactionBarrier(e,u,this.waitForFullLayerBitmapEraseTxns(e,f)))return;if(h&&(C=b()),h){const L=C.filter(U=>!U.finalizeRequested&&Rs(U.source).kind!=="wait-owner");for(const U of L)try{typeof h.cancelUndoTicker=="function"&&(h.cancelUndoTicker(U.tickerId,e,U.scenePath),this.logLocalWorkBarrierError(`[Appliance]: cancelled unfinalized Undo ticker before ${n}; viewId=${e}; tickerId=${U.tickerId}; source=${U.source}`))}catch(Y){this.logLocalWorkBarrierError(`[Appliance]: cancelling unfinalized Undo ticker failed; viewId=${e}; tickerId=${U.tickerId}; source=${U.source}; error=${Y instanceof Error?Y.message:String(Y)}`)}if(L.length){C=b();const U=C.filter(Y=>!Y.finalizeRequested&&Rs(Y.source).kind!=="wait-owner");typeof h.cancelUndoTicker=="function"&&U.length&&(U.forEach(Y=>{this.logLocalWorkBarrierError(`[Appliance]: unfinalized Undo ticker was not removed by cancellation; continuing without waiting; viewId=${e}; tickerId=${Y.tickerId}; source=${Y.source}`)}),C=C.filter(Y=>Y.finalizeRequested||Rs(Y.source).kind==="wait-owner"))}}const R=h?C.filter(L=>!L.finalizeRequested).map(L=>h.waitForFinalizeRequested(L,p)):[];if(!await this.waitForCurrentTransactionBarrier(e,u,Promise.all(R)))return;const E=h?C.map(L=>h.waitForDataDone(L,p)):[];!await this.waitForCurrentTransactionBarrier(e,u,Promise.all(E))||!y||await this.waitForCurrentTransactionBarrier(e,u,Promise.all(C.map(L=>h==null?void 0:h.waitForUndoStackEnd(L,T))))}async consumeOriginalEvent(e,r,n,i,o=this.initGeneration,a=(c=>(c=this.localInputEpochByView)==null?void 0:c.get(n))()||0){var f,g,y,S,b;const l=(f=this.viewGenerationById)==null?void 0:f.get(n);if(!this.isAbled()||!this.isActive||this.initGeneration!==o||(((g=this.localInputEpochByView)==null?void 0:g.get(n))||0)!==a||(e===he.Start||e===he.Doing)&&!this.control.canAcceptLocalMutation(n))return;const u=(y=this.collector)==null?void 0:y.uid,h=this.viewContainerManager.getCurScenePath(n);if(u&&!this.control.renderControl.isWritable)return;const d=((S=this.currentToolsData)==null?void 0:S.toolsType)===Q.Selector;switch((b=this.currentToolsData)==null?void 0:b.toolsType){case Q.Eraser:case Q.PencilEraser:case Q.BitMapEraser:{if(u&&!this.control.renderControl.isClearAble({uid:u,viewId:n,scenePath:h}))return;break}default:{if(u&&!this.control.renderControl.isRenderAble({uid:u,viewId:n,scenePath:h}))return;break}}switch(e){case he.Start:{const C=this.control.isSceneBusy(n);if(this.isViewBusy(n)||C||this.control.isToolChangePending)return;this.isLocalWorkActive=!0,this.setLocalWorkViewId(n),n&&this.onLocalEventStart(r,n),d&&this.viewContainerManager.showFloatBarBtn(n,!1)}break;case he.Doing:n&&n===this.getLocalWorkViewId()&&this.onLocalEventDoing(r,n);break;case he.Done:if(n&&n===this.getLocalWorkViewId()){this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:he.Done});try{await this.onLocalEventEnd(r,n,o,a)}finally{this.isLocalWorkActive=!1,this.setCurrentLocalWorkData({workState:he.Pending}),d&&this.viewContainerManager.showFloatBarBtn(n,!0),this.setLocalWorkViewId(void 0)}}break}this.isLocalWorkActive&&this.viewContainerManager.focuedViewId===n&&this.publicMsgEmitter.emit("workState",e,n),Nr(()=>{var C,N,T;!this.isActive||this.initGeneration!==o||(((C=this.localInputEpochByView)==null?void 0:C.get(n))||0)!==a||((N=this.viewGenerationById)==null?void 0:N.get(n))!==l||(T=this.control.pluginManager)==null||T.dispatchPluginEvent("localEvent",n,e,r)},Xa,this.control.hasPolyfillMethod("requestIdleCallback"))}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var a,c,l,u;const r=e.toolsType,i=((a=this.currentToolsData)==null?void 0:a.toolsType)!==e.toolsType,o=this.getLocalWorkViewId()||((c=this.viewContainerManager)==null?void 0:c.focuedViewId);if(i){const h=new Map;for(const d of this.getFullLayerBitmapEraseTxns().values()){if(d.phase!=="doing"||o&&d.viewId!==o)continue;let f=h.get(d.viewId);f||(f=new Set,h.set(d.viewId,f)),f.add(d.workId)}h.forEach((d,f)=>{this.cancelLocalWorks(f,!1,d)})}if(super.setCurrentToolsData(e),i){const h=o?(l=this.viewContainerManager)==null?void 0:l.getView(o):void 0;h!=null&&h.focusScenePath&&((u=this.collector)!=null&&u.hasSelector(h.id,h.focusScenePath)&&this.blurSelector(h.id,h.focusScenePath),this.control.textEditorManager.checkEmptyTextBlur()),this.taskBatchData.add({msgType:le.UpdateTools,dataType:Re.Local,toolsType:r,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,isRunSubWork:this.isRunSubWork,viewId:Vu,isRunBackgroundThread:this.control.isUseBackgroundThread}),this.runAnimation()}}prepareOnceWork(e,r){const{workId:n,toolsOpt:i,viewId:o}=e,a={msgType:le.CreateWork,dataType:Re.Local,viewId:o,toolsType:r};this.queryTaskBatchData(a).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({...a,workId:n,opt:{...i,syncUnitTime:this.maxLastSyncTime},dataType:Re.Local,isRunSubWork:this.isRunSubWork}),this.runAnimation()}createViewWorker(e,r,n){var d,f,g,y;(d=this.collector)==null||d.restoreViewPendingSync(e),this.fullLayerFrameStateByView.delete(e);const i=(this.viewGenerationById.get(e)||0)+1;this.viewGenerationById.set(e,i),(g=(f=this.control).bindPendingViewInit)==null||g.call(f,e,i),mt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"create-view",details:{renderModel:Qt(this.control.renderMode,Zr(this.control,e)),context:Zr(this.control,e),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}}),this.pendingTransportMessages.delete(`destroy:${e}`);const{offscreenCanvasOpt:o,layerOpt:a,dpr:c,cameraOpt:l}=r;l&&this.initCameraOptByView.set(e,{...l});const u={singleChannelTexture:this.control.renderingCompatibilityDecision.effectiveMaskTextureFormatLevel===void 0,textureSubImage2D:this.control.renderingCompatibilityDecision.effectiveMaskTextureUploadLevel===void 0},h={msgType:le.Init,dataType:Re.Local,viewId:e,viewGeneration:i,offscreenCanvasOpt:o,layerOpt:{...a,bitmapEraserMaskOptions:u},dpr:c,isImageBitmapTransport:this.control.renderMode==="worker-image-bitmap",cameraOpt:l,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1,combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,syncUnitTime:this.maxLastSyncTime,isUseSimple:this.control.isUseSimple,offscreenCanvas:n.transferControlToOffscreenCanvas,bitmapEraserMaskOptions:u};if(!this.isRenderTransportReady){this.pendingTransportMessages.set(this.getPendingInitMessageKey(h),h),mt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"sent-queued",details:{renderModel:Qt(this.control.renderMode,Zr(this.control,e)),context:Zr(this.control,e),reason:"transport-not-ready"}});return}mt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"sent",details:{renderModel:Qt(this.control.renderMode,Zr(this.control,e)),context:Zr(this.control,e),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}}),(y=this.cameraUpdateStateByView.get(e))!=null&&y.isRecovering||this.cameraUpdateDestroy(e),this.armViewInitAckTimeout(e,i),this.post(new Set([h])),this.taskBatchData.size&&this.consume()}discardViewTransactions(e){var a,c,l,u,h,d,f,g;this.invalidateTransactionBarrier(e);const r=(a=this.localDoneDispatchTimersByView)==null?void 0:a.get(e);r==null||r.forEach(y=>clearTimeout(y)),r==null||r.clear(),(c=this.localDoneDispatchTimersByView)==null||c.delete(e);const n=new Set;for(const[y,S]of this.localPointsBatchData){if(S.viewId!==e)continue;const b=y.toString();n.add(b),Ni(S.toolsType)&&this.rememberCancelledEraseTxn(b),this.localPointsBatchData.delete(y)}for(const[y,S]of this.getFullLayerBitmapEraseTxns())S.viewId===e&&(n.add(y),this.rememberCancelledEraseTxn(y),this.finishFullLayerBitmapEraseTxn(y,"aborted"));for(const y of[...this.taskBatchData])y.viewId===e&&this.taskBatchData.delete(y);this.tasksqueue.delete(e);for(const[y,S]of this.tasksqueue)S.viewId===e&&this.tasksqueue.delete(y);for(const[y,S]of this.reRenders){const b=S.filter(C=>{const N=C.viewId===e;return N&&this.retireRenderedImageBitmap(C),!N});b.length?this.reRenders.set(y,b):this.reRenders.delete(y)}const i=this.getDoneWaitForView(e);if(i&&i.workIds.some(y=>n.has(y))){const y=this.getDoneResolverForView(e);this.clearDoneWaitForView(e),y==null||y(!1)}this.currentLocalWorkData.viewId===e&&(this.setCurrentLocalWorkData({workState:he.Pending}),this.isLocalWorkActive=!1),(l=this.localEventQueueByView)==null||l.delete(e),this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),(h=(u=this.control)==null?void 0:u.viewContainerManager.getView(e))==null||h.displayer.cancelDprUpdate(),this.pendingDprByView.delete(e),(d=this.pendingDprOwnerByView)==null||d.delete(e),this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e),this.operationBarrierQueueByView.delete(e),(f=this.willSelectorWorkIdByView)==null||f.delete(e);const o=this.clearAllResolveMap.get(e);o!=null&&o.timer&&clearTimeout(o.timer),(g=o==null?void 0:o.resolve)==null||g.call(o,e),this.clearAllResolveMap.delete(e),this.settleViewRenderRequests(e)}destroyViewWorker(e,r,n=!1){var u,h,d,f,g,y;(u=this.viewInitRecoveryDestroying)!=null&&u.has(e)||(h=this.viewInitRecoveryAttempts)==null||h.delete(e),this.discardViewTransactions(e),this.fullLayerFrameStateByView.delete(e);const o=(this.viewGenerationById.get(e)||0)+1;this.viewGenerationById.set(e,o),this.initAckedViewIds.delete(e),this.serviceSyncReadyViews.delete(e);for(const[S,b]of this.serviceSyncCommitWaiters)b.viewId===e&&(clearTimeout(b.timer),b.resolve(!1),this.serviceSyncCommitWaiters.delete(S));const a=this.viewServiceReadyWaiters.get(e);a==null||a.forEach(S=>{clearTimeout(S.timer),S.resolve(!1)}),this.viewServiceReadyWaiters.delete(e);const c=this.viewInitAckWaiters.get(e);c==null||c.forEach(S=>{clearTimeout(S.timer),S.resolve(!1)}),this.viewInitAckWaiters.delete(e);for(const[S,b]of this.viewInitAckTimeoutTimers)S.startsWith(`${e}:`)&&(clearTimeout(b),this.viewInitAckTimeoutTimers.delete(S));this.initReconcileTasks.delete(e),this.control.invalidatePendingViewInit(e),(!n||!((d=this.cameraUpdateStateByView.get(e))!=null&&d.isRecovering))&&this.cameraUpdateDestroy(e,!1),this.initCameraOptByView.delete(e);for(const[S,b]of this.pendingTransportMessages)b.viewId===e&&this.pendingTransportMessages.delete(S);this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e);const l={msgType:le.Destroy,dataType:Re.Local,viewId:e,viewGeneration:o,isRunSubWork:!0};this.isRenderTransportReady?this.dispatchMessages(new Set([l])):this.pendingTransportMessages.set(`destroy:${e}`,l),r==="delete-storage"?((f=this.collector)==null||f.dispatch({type:le.Clear,viewId:e,isSync:!0}),(g=this.collector)==null||g.discardViewPendingSync(e)):r==="storage-already-deleted"&&((y=this.collector)==null||y.discardViewPendingSync(e)),this.control.renderControl.destoryByViewId(e,r!=="delete-storage")}onServiceDerive(e,r){var f,g,y,S,b,C,N,T;const{viewId:n}=r;if(!n||!this.isViewInitAck(n)||!this.isServiceSyncReady(n)){n&&this.control.queuePendingServiceDerive(n,e,r);return}const{newValue:i,oldValue:o,scenePath:a}=r,c=ve.cloneDeep(i)||{},l=e;let u=c.type;if(!i&&o&&(u=le.RemoveNode),!i&&o){if(l&&((f=this.collector)==null?void 0:f.getLocalId(l))===Le){this.collector.isOwn(l)?this.blurSelector(n,a):this.blurSelector(n,a,l);return}if(o.toolsType===Q.LaserPen)return}if(!qu(n,a,p=>{var m;return(m=this.viewContainerManager.getView(p))==null?void 0:m.focusScenePath}))return;if((g=this.collector)!=null&&g.isSelector(e)){const p=(y=this.collector)==null?void 0:y.getUidFromKey(e);if(p&&!this.control.roomMember.isOnLine(p))return}if(u&&l){if(!this.control.renderControl.isFilterAble({viewId:n,elementId:e,scenePath:a},u))return;const p=c;if(p.workId=(S=this.collector)!=null&&S.isOwn(l)?(b=this.collector)==null?void 0:b.getLocalId(l):l,p.msgType=u,p.toolsType===Q.LaserPen&&(p.isRunSubWork=!0),p.toolsType===Q.BackgroundSVG){if(!this.control.isUseBackgroundThread)return;p.isRunBackgroundThread=!0}if(p.dataType=Re.Service,p.viewId=n,p.scenePath=a,p.useAnimation=this.smoothSync&&((C=p.updateNodeOpt)==null?void 0:C.useAnimation)||!1,p.selectIds&&(p.selectIds=p.selectIds.map(m=>{var v,M;return(v=this.collector)!=null&&v.isOwn(m)?(M=this.collector)==null?void 0:M.getLocalId(m):m})),p&&p.toolsType===Q.Text||(o==null?void 0:o.toolsType)===Q.Text){this.control.textEditorManager.onServiceDerive(p);return}p.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(p)}this.runAnimation();const h=r.newValue&&((N=r.newValue)==null?void 0:N.toolsType),d=r.newValue&&((T=r.newValue.opt)==null?void 0:T.zIndex);if(h&&h===Q.BackgroundSVG){if(this.zIndexNodeMethod&&ve.isNumber(d)){const p=this.zIndexNodeMethod.getMinZIndexForBackgroundSVG(n);this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(n)<d&&this.zIndexNodeMethod.setMaxZIndexForBackgroundSVG(d,n),p>d&&this.zIndexNodeMethod.setMinZIndexForBackgroundSVG(d,n)}}else if(this.zIndexNodeMethod&&ve.isNumber(d)){const p=this.zIndexNodeMethod.getMinZIndex(n);this.zIndexNodeMethod.getMaxZIndex(n)<d&&this.zIndexNodeMethod.setMaxZIndex(d,n),p>d&&this.zIndexNodeMethod.setMinZIndex(d,n)}}pullServiceData(e,r,n={isAsync:!1,useAnimation:!1}){if(!this.isViewInitReady(e)){this.control.queuePendingInitServicePull(e,r);return}this.pullServiceDataForReadyRenderer(e,r,n)}pullServiceDataForReadyRenderer(e,r,n){var c,l,u,h,d,f,g;if(!qu(e,r,y=>{var S;return(S=this.viewContainerManager.getView(y))==null?void 0:S.focusScenePath}))return;let i=(c=this.collector)==null?void 0:c.getStorageData(e,r);const{isAsync:o,useAnimation:a}=n;if(i){this.control.syncLogger.append("pullServiceData",e,r,Object.entries(i).map(([S,b])=>({key:S,type:b==null?void 0:b.type,toolsType:b==null?void 0:b.toolsType}))),this.control.renderControl.isWritable&&(i=this.correctStorage(i,e,r));const y=Object.keys(i);for(const S of y){if((l=this.collector)!=null&&l.isSelector(S)){const C=(u=this.collector)==null?void 0:u.getUidFromKey(S);if(C&&!this.control.roomMember.isOnLine(C))continue}const b=(h=i[S])==null?void 0:h.type;if(b&&S){if(!this.control.renderControl.isFilterAble({viewId:e,elementId:S,scenePath:r},b))continue;const C=i[S];if(C.workId=(d=this.collector)!=null&&d.isOwn(S)?(f=this.collector)==null?void 0:f.getLocalId(S):S,C.msgType=b,C.dataType=Re.Service,C.viewId=e,C.scenePath=r,C.useAnimation=this.smoothSync&&(C.ops?!!a:(g=C.updateNodeOpt)==null?void 0:g.useAnimation)||!1,C.selectIds&&(C.selectIds=C.selectIds.map(N=>{var T,p;return(T=this.collector)!=null&&T.isOwn(N)?(p=this.collector)==null?void 0:p.getLocalId(N):N})),C.toolsType===Q.Text){this.control.shouldHoldServiceTextRenderForFontFace()?this.control.markInitFontFaceTextRenderSkipped():this.control.textEditorManager.onServiceDerive(C);continue}if(C.toolsType===Q.BackgroundSVG){if(!this.control.isUseBackgroundThread)continue;C.isRunBackgroundThread=!0}o&&C.updateNodeOpt&&C.updateNodeOpt.useAnimation&&(C.updateNodeOpt.useAnimation=!1),C.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(C)}this.internalMsgEmitter.emit("excludeIds",y,e)}o?this.consume():this.runAnimation()}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){var e;if(this.animationId=void 0,this.isAbled()&&this.localPointsBatchData.size)for(const[r,{state:n,isFullWork:i,points:o,opt:a,toolsType:c,undoTickerId:l,viewId:u}]of this.localPointsBatchData.entries()){if(!u||n===he.Done&&!i||n===he.Start&&!this.isCanStartEventConsum)continue;const h=o.map(d=>d);if(h.length||n===he.Done){if(this.isPostCountType&&n===he.Doing){if(this.postCount>this.consumeCount)continue;this.postCount++}const d=this.getDoneResolverForView(u),f=this.getDoneWaitForView(u);d&&n===he.Done&&(f!=null&&f.workIds.includes(r.toString()))&&(d(!0),this.setLockSentEventCursor(!0));const g=((e=this.getLocalPointInfo(r))==null?void 0:e.scenePath)||u&&this.viewContainerManager.getCurScenePath(u);n===he.Done&&l&&g&&Xl.has(c)&&this.internalMsgEmitter.emit("finalizeRequested",l,u,[r.toString()],g),this.taskBatchData.add({op:h,workState:n,workId:r,dataType:Re.Local,msgType:le.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:c,viewId:u,scenePath:g,opt:a,smoothSync:this.smoothSync,isLockSentEventCursor:this.getLockSentEventCursor(),syncUnitTime:this.maxLastSyncTime,disableEraseImage:this.control.disableEraseImage,disableEraseText:this.control.disableEraseText,postCount:this.isPostCountType&&this.postCount||void 0,fullWorkerDrawCount:this.isCanPostDraw&&this.fullWorkerDrawCount||void 0,needUndoTicker:n===he.Done&&l||void 0,collectUndoTicker:n!==he.Done&&Ni(c)&&l||void 0}),o.length=0}}if(this.taskBatchData.size){const r=new Set(this.taskBatchData),n=new Set,i=new Set;for(const o of r){const a=IMe({isService:o.dataType===Re.Service,isAllViews:o.viewId===Vu,viewId:o.viewId,scenePath:o.scenePath},c=>this.isViewInitAck(c),c=>{var l;return(l=this.viewContainerManager.getView(c))==null?void 0:l.focusScenePath});a==="dispatch"?n.add(o):a==="pending"&&i.add(o)}for(const o of n)if(o.msgType===le.DrawWork&&o.workState===he.Done&&o.workId!==void 0){const a=this.getFullLayerBitmapEraseTxns().get(o.workId.toString());a&&a.phase!=="aborting"&&(a.phase="committing",this.armBitmapEraserCommitTimeout(a))}this.post(n),this.taskBatchData.clear(),i.forEach(o=>this.taskBatchData.add(o))}}armBitmapEraserCommitTimeout(e){e.commitTimeoutId&&clearTimeout(e.commitTimeoutId),e.commitDeadlineAt??(e.commitDeadlineAt=Date.now()+zpe);const r=Math.max(0,e.commitDeadlineAt-Date.now());e.commitTimeoutId=setTimeout(()=>{const n=this.getFullLayerBitmapEraseTxns().get(e.workId);!n||n.phase!=="done-staging"&&n.phase!=="committing"||this.timeoutLocalWorks(e.viewId,e.scenePath||this.viewContainerManager.getCurScenePath(e.viewId)||"","bitmap-eraser-commit-timeout",new Set([e.workId]))},r)}markFullLayerBitmapEraseDoneStaging(e){var r;e.phase==="doing"&&(e.phase="done-staging",e.inputPointCount=Math.floor((((r=this.getLocalPointInfo(e.workId))==null?void 0:r.rawPoints.length)||0)/2),this.logBitmapEraserTrace("done-staging",e,{pointCount:e.inputPointCount,doingAckCount:e.doingAckCount||0}),this.armBitmapEraserCommitTimeout(e))}unWritable(){const e=new Set;this.localPointsBatchData.forEach(({viewId:r})=>{e.add(r)}),this.getFullLayerBitmapEraseTxns().forEach(({viewId:r})=>{e.add(r)}),e.forEach(r=>this.cancelLocalWorks(r,!1)),this.setCurrentLocalWorkData({workState:he.Unwritable}),this.setLockSentEventCursor(!0)}abled(){this.setCurrentLocalWorkData({workState:he.Pending}),this.setLockSentEventCursor(!1)}isAbled(){return this.currentLocalWorkData.workState!==he.Unwritable}postMainThread(e){if(!this.control.hasOffscreenCanvas&&this.mainThread){this.mainThread.consume(e).catch(r=>{this.logLocalWorkBarrierError(`[Appliance]: main-thread message consumption failed; error=${r instanceof Error?r.message:String(r)}`)});return}}postWebWorker(e){if(this.control.isUseSimple){const r=[...e].find(n=>n.msgType===le.Init&&n.offscreenCanvas);r!=null&&r.offscreenCanvas?this.fullWorker.postMessage(e,[r.offscreenCanvas.bgCanvas,r.offscreenCanvas.localCanvas,r.offscreenCanvas.serviceCanvas]):this.fullWorker.postMessage(e);return}else if(this.subWorker){this.fullWorker.postMessage(e);const r=new Set;for(const n of e.values()){const i=n.msgType;(i===le.Init||i===le.Clear||i===le.Destroy||i===le.UpdateCamera||i===le.Console||n.isRunSubWork)&&r.add(n)}r.size&&this.subWorker.postMessage(r)}}post(e){!this.isRenderTransportReady||!e.size||this.dispatchMessages(e)}dispatchMessages(e){const r=this.initGeneration,n=()=>{const i=ve.cloneDeep([...e]);setTimeout(()=>{if(this.initGeneration===r)for(const o of i)this.taskBatchData.add(o)},0)};if(this.control.isUseBackgroundThread){if(!this.backgroundThreadManager){n();return}const i=new Set;for(const o of e.values()){const a=o.msgType;(a===le.Init||a===le.Clear||a===le.Destroy||a===le.Console||o.isRunBackgroundThread)&&i.add(o)}i.size&&this.backgroundThreadManager.consume(i).catch(o=>{this.logLocalWorkBarrierError(`[Appliance]: background-thread message consumption failed; error=${o instanceof Error?o.message:String(o)}`)})}if(!this.control.hasOffscreenCanvas){if(!this.mainThread){n();return}this.postMainThread(e);return}this.postWebWorker(e)}updateNode(e,r,n,i){this.taskBatchData.add({msgType:le.UpdateNode,workId:e,updateNodeOpt:r,viewId:n,scenePath:i,dataType:Re.Local}),this.runAnimation()}destroyTaskQueue(e=!1){for(const[r,n]of this.cameraUpdateStateByView){if(e&&n.isRecovering){this.clearCameraTaskTimeouts(n),n.pendingCamera=void 0,n.transaction=void 0,n.preparePromise=void 0,n.currentTaskId=void 0;continue}this.cameraUpdateDestroy(r,!1)}this.tasksqueue.clear()}updateDpr(e,r){this.pendingDprOwnerByView||(this.pendingDprOwnerByView=new Map);const n=(this.dprUpdateSequence||0)+1;this.dprUpdateSequence=n,this.pendingDprOwnerByView.set(e,n),this.pendingDprByView.set(e,r);const i=this.initGeneration,o=this.viewGenerationById.get(e),a=()=>{var h;return((h=this.pendingDprOwnerByView)==null?void 0:h.get(e))===n},c=()=>a()&&(this.initGeneration!==i||this.viewGenerationById.get(e)!==o)?(this.releasePendingDprUpdate(e,n),!0):!a(),u=this.getLocalWorkFinalizeQueue(e).then(async()=>{if(await this.waitForLocalEventQueue(e),c())return;const h=this.viewContainerManager.getCurScenePath(e);if(h&&await this.forceDoneLocalWorks(e,h,"dpr-update"),c())return;const d=this.pendingDprByView.get(e);d!==void 0&&(this.applyDprUpdate(e,d),this.releasePendingDprUpdate(e,n))}).catch(async h=>{if(c())return;this.Logger.error(`[Appliance]: DPR transaction barrier failed; viewId=${e}; error=${h instanceof Error?h.message:String(h)}`);try{await this.scheduleViewRecovery(e,"dpr-transaction-barrier-failed")}catch{this.cancelPendingDprUpdate(e,n);return}if(c())return;const d=this.pendingDprByView.get(e);if(d!==void 0)try{this.applyDprUpdate(e,d),this.releasePendingDprUpdate(e,n)}catch(f){this.Logger.error(`[Appliance]: DPR apply failed after view recovery; viewId=${e}; error=${f instanceof Error?f.message:String(f)}`),this.cancelPendingDprUpdate(e,n)}});this.setLocalWorkFinalizeQueue(e,u),u.then(()=>this.clearLocalWorkFinalizeQueue(e,u),()=>this.clearLocalWorkFinalizeQueue(e,u))}releasePendingDprUpdate(e,r){var n;return((n=this.pendingDprOwnerByView)==null?void 0:n.get(e))!==r?!1:(this.pendingDprOwnerByView.delete(e),this.pendingDprByView.delete(e),this.resolveViewLifecycleIdleWaiters(e),!0)}cancelPendingDprUpdate(e,r){var n,i;((n=this.pendingDprOwnerByView)==null?void 0:n.get(e))===r&&((i=this.viewContainerManager.getView(e))==null||i.displayer.cancelDprUpdate(),this.releasePendingDprUpdate(e,r))}applyDprUpdate(e,r){var n;(n=this.viewContainerManager.getView(e))==null||n.displayer.commitDprUpdate(r),this.queryTaskBatchData({msgType:le.UpdateDpr,dataType:Re.Local,viewId:e}).forEach(i=>{this.taskBatchData.delete(i)}),this.taskBatchData.add({dataType:Re.Local,msgType:le.UpdateDpr,viewId:e,dpr:r,isRunSubWork:!0}),this.runAnimation()}cloneCameraReplay(e){return{cameraOpt:{...e.cameraOpt},scenePath:e.scenePath}}beginCameraClearReplay(e,r){this.cameraClearReplayByView||(this.cameraClearReplayByView=new Map);const n=this.cameraClearReplayByView.get(e),i=this.cameraUpdateStateByView.get(e),o=this.getActiveRenderRuntimeRecoveryView(e),a=(n==null?void 0:n.replay)||(i?this.getCameraReplayCandidate(e,i):o==null?void 0:o.replayCamera);this.cameraClearReplaySequence=(this.cameraClearReplaySequence||0)+1;const c={owner:this.cameraClearReplaySequence,viewGeneration:this.viewGenerationById.get(e),replay:a?{...this.cloneCameraReplay(a),scenePath:a.scenePath||r}:void 0,preserveRecovery:(n==null?void 0:n.preserveRecovery)===!0||(i==null?void 0:i.isRecovering)===!0||(i==null?void 0:i.recoveryOwner)!==void 0||!!o};if(this.cameraClearReplayByView.set(e,c),c.preserveRecovery&&a){let l=i;!l&&o&&(l={isBusy:!0},this.cameraUpdateStateByView.set(e,l)),l&&(this.clearCameraTaskTimeouts(l),l.pendingCamera=void 0,l.transaction=void 0,l.preparePromise=void 0,l.currentTaskId=void 0,l.isRecovering=!0,l.recoveryFromGeneration??(l.recoveryFromGeneration=(o==null?void 0:o.viewGeneration)??c.viewGeneration),l.recoveryOwner??(l.recoveryOwner=(o==null?void 0:o.cameraRecoveryOwner)??this.nextCameraRecoveryOwner()),this.updateCameraRecoveryReplay(e,l,a))}return c}finishCameraClearReplay(e,r){var u,h;if(((h=(u=this.cameraClearReplayByView)==null?void 0:u.get(e))==null?void 0:h.owner)!==r.owner)return;this.cameraClearReplayByView.delete(e);const n=r.replay,i=this.cameraUpdateStateByView.get(e),o=this.getActiveRenderRuntimeRecoveryView(e),a=(i==null?void 0:i.isRecovering)===!0||!!o,c=d=>{!r.preserveRecovery||!i||!i.isRecovering&&i.recoveryOwner===void 0||(i.isRecovering=!0,this.releaseCameraRecovery(e,d,i,i.recoveryOwner))};if(!n){c("missing-replay-camera-after-clear");return}if(this.viewGenerationById.get(e)!==r.viewGeneration&&!r.preserveRecovery&&!a)return;if(!this.viewContainerManager.getView(e)){c("view-removed-during-clear");return}const l=this.viewContainerManager.getCurScenePath(e);if(!l||n.scenePath&&n.scenePath!==l){c(`scene-superseded-during-clear:${n.scenePath||"unknown"}->${l||"unknown"}`);return}if(i!=null&&i.isRecovering){this.updateCameraRecoveryReplay(e,i,n);const d=this.viewGenerationById.get(e);d!==void 0&&!this.activeRenderRuntimeRecovery&&this.isViewInitReady(e)&&this.dispatchCameraRecoveryReplay(e,d);return}this.updateCamera(e,n.cameraOpt)}getCameraReplayCandidate(e,r){if(r.pendingCamera)return this.cloneCameraReplay(r.pendingCamera);if(r.replayCamera)return this.cloneCameraReplay(r.replayCamera);if(r.transaction)return{cameraOpt:{...r.transaction.camera},scenePath:r.transaction.scenePath};const n=this.viewContainerManager.getView(e);if(n!=null&&n.cameraOpt)return{cameraOpt:{...n.cameraOpt},scenePath:n.focusScenePath}}getActiveRenderRuntimeRecoveryView(e){var r;return(r=this.activeRenderRuntimeRecovery)==null?void 0:r.views.find(n=>n.viewId===e)}nextCameraRecoveryOwner(){return this.cameraRecoverySequence=(this.cameraRecoverySequence||0)+1,this.cameraRecoverySequence}updateCameraRecoveryReplay(e,r,n){const i=this.cloneCameraReplay(n);r.replayCamera=i;const o=this.getActiveRenderRuntimeRecoveryView(e);o&&(o.replayCamera=this.cloneCameraReplay(i),o.cameraRecoveryOwner=r.recoveryOwner),(!this.initAckedViewIds||!this.serviceSyncReadyViews||!this.isViewInitReady(e))&&this.control.queuePendingInitCamera(e,i.cameraOpt,i.scenePath)}beginCameraRecovery(e,r){const n=this.getCameraReplayCandidate(e,r);if(this.clearCameraTaskTimeouts(r),r.pendingCamera=void 0,r.transaction=void 0,r.preparePromise=void 0,r.currentTaskId=void 0,!n)return;r.isRecovering=!0,r.recoveryFromGeneration=this.viewGenerationById.get(e),r.recoveryOwner=this.nextCameraRecoveryOwner(),r.replayCamera=this.cloneCameraReplay(n);const i=this.getActiveRenderRuntimeRecoveryView(e);return i&&(i.replayCamera=this.cloneCameraReplay(n),i.cameraRecoveryOwner=r.recoveryOwner),this.cloneCameraReplay(n)}releaseCameraRecovery(e,r,n,i){const o=this.cameraUpdateStateByView.get(e);!(o!=null&&o.isRecovering)||n!==void 0&&o!==n||i!==void 0&&o.recoveryOwner!==i||(this.Logger.error(`[Appliance]: Camera recovery failed viewId=${e} recoveryOwner=${o.recoveryOwner??"unknown"} fromGeneration=${o.recoveryFromGeneration??"unknown"} reason=${r}`),this.cameraUpdateDestroy(e,!1))}releaseRenderRuntimeRecoveryCameras(e,r){for(const n of e.views){const i=this.cameraUpdateStateByView.get(n.viewId);!(i!=null&&i.isRecovering)||n.cameraRecoveryOwner===void 0||this.releaseCameraRecovery(n.viewId,r,i,n.cameraRecoveryOwner)}}dispatchCameraRecoveryReplay(e,r){var c,l,u;const n=this.cameraUpdateStateByView.get(e);if(!(n!=null&&n.isRecovering)||this.viewGenerationById.get(e)!==r)return!1;if(((l=(c=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:l.call(c))===!1)return this.releaseCameraRecovery(e,"manager-lifecycle-ended",n,n.recoveryOwner),!1;if(!this.viewContainerManager.getView(e))return this.releaseCameraRecovery(e,"view-removed-before-replay",n,n.recoveryOwner),!1;if(n.recoveryOwner===void 0)return this.releaseCameraRecovery(e,"missing-recovery-owner",n),!1;if(n.recoveryFromGeneration===r)return!1;const i=n.replayCamera;if(!i)return this.releaseCameraRecovery(e,"missing-replay-camera",n),!1;const o=this.viewContainerManager.getCurScenePath(e);if(!o)return this.releaseCameraRecovery(e,"missing-current-scene",n,n.recoveryOwner),!1;if(i.scenePath&&i.scenePath!==o)return this.releaseCameraRecovery(e,`scene-superseded:${i.scenePath}->${o}`,n,n.recoveryOwner),!1;const a=(u=this.cameraClearReplayByView)==null?void 0:u.get(e);return a?(a.preserveRecovery=!0,a.viewGeneration=r,a.replay=this.cloneCameraReplay(i),!1):(n.isRecovering=!1,n.replayCamera=void 0,n.pendingCamera=this.cloneCameraReplay(i),this.schedulePendingCameraForView(e,n),!0)}updateCamera(e,r){var a;const n=(a=this.cameraClearReplayByView)==null?void 0:a.get(e);let i=this.cameraUpdateStateByView.get(e);const o=this.getActiveRenderRuntimeRecoveryView(e);if(n){const c={cameraOpt:{...r},scenePath:this.viewContainerManager.getCurScenePath(e)};n.replay=c,n.viewGeneration=this.viewGenerationById.get(e),i!=null&&i.isRecovering?(n.preserveRecovery=!0,this.updateCameraRecoveryReplay(e,i,c)):o&&(n.preserveRecovery=!0,i||(i={isBusy:!0},this.cameraUpdateStateByView.set(e,i)),this.clearCameraTaskTimeouts(i),i.pendingCamera=void 0,i.transaction=void 0,i.preparePromise=void 0,i.currentTaskId=void 0,i.isRecovering=!0,i.recoveryFromGeneration=o.viewGeneration,i.recoveryOwner=this.nextCameraRecoveryOwner(),this.updateCameraRecoveryReplay(e,i,c));return}if(i!=null&&i.isRecovering){this.updateCameraRecoveryReplay(e,i,{cameraOpt:r,scenePath:this.viewContainerManager.getCurScenePath(e)});return}if(o){i||(i={isBusy:!0},this.cameraUpdateStateByView.set(e,i)),this.clearCameraTaskTimeouts(i),i.pendingCamera=void 0,i.transaction=void 0,i.preparePromise=void 0,i.currentTaskId=void 0,i.isRecovering=!0,i.recoveryFromGeneration=o.viewGeneration,i.recoveryOwner=this.nextCameraRecoveryOwner(),this.updateCameraRecoveryReplay(e,i,{cameraOpt:r,scenePath:this.viewContainerManager.getCurScenePath(e)});return}if(!this.isViewInitReady(e)){this.control.queuePendingInitCamera(e,r,this.viewContainerManager.getCurScenePath(e));return}this.updateCameraForReadyRenderer(e,r)}updateCameraForReadyRenderer(e,r){if(this.control.isSceneBusy(e)){this.control.deferSceneCamera(e,r);return}if(this.control.isClearBusy(e)){this.control.deferClearCamera(e,r);return}let n=this.cameraUpdateStateByView.get(e);n||(n={isBusy:!0},this.cameraUpdateStateByView.set(e,n)),n.pendingCamera={cameraOpt:r,scenePath:this.viewContainerManager.getCurScenePath(e)},this.schedulePendingCameraForView(e,n)}schedulePendingCameraForView(e,r){if(!r.isRecovering&&!r.preparePromise&&r.currentTaskId===void 0){if(!r.transaction){const n=this.enqueueCameraPreparation(e);r.preparePromise=n,n.then(()=>{this.cameraUpdateStateByView.get(e)!==r||(r==null?void 0:r.preparePromise)!==n||r.isRecovering||this.control.isSceneBusy(e)||(r.preparePromise=void 0,this.consumePendingCameraForView(e,r))}).catch(()=>{this.cameraUpdateStateByView.get(e)!==r||r.preparePromise!==n||r.isRecovering||(r.preparePromise=void 0,this.cameraUpdateDestroy(e))});return}this.consumePendingCameraForView(e,r)}}isSameCameraOpt(e,r){return e.scale===r.scale&&e.centerX===r.centerX&&e.centerY===r.centerY&&e.width===r.width&&e.height===r.height}enqueueCameraPreparation(e){const r=this.getLocalWorkFinalizeQueue(e).then(async()=>{await this.waitForLocalEventQueue(e);const i=this.viewContainerManager.getCurScenePath(e);!i||this.control.isSceneBusy(e)||await this.forceDoneLocalWorks(e,i,"camera-update")}),n=r.catch(()=>{});return this.setLocalWorkFinalizeQueue(e,n),n.then(()=>this.clearLocalWorkFinalizeQueue(e,n),()=>this.clearLocalWorkFinalizeQueue(e,n)),r}consumePendingCameraForView(e,r){var l,u,h;if(this.cameraUpdateStateByView.get(e)!==r||r.preparePromise||r.currentTaskId!==void 0||r.isRecovering||this.control.isSceneBusy(e))return;const n=r.pendingCamera;if(!n)return;const i=this.viewContainerManager.getCurScenePath(e);if(n.scenePath&&n.scenePath!==i){r.pendingCamera=void 0;return}r.pendingCamera=void 0;const o=(this.cameraTaskSequenceByView.get(e)||0)+1,a=this.viewGenerationById.get(e);this.cameraTaskSequenceByView.set(e,o),r.currentTaskId=o,r.transaction={taskId:o,camera:{...n.cameraOpt},scenePath:i,viewGeneration:a,recoveryOwner:r.recoveryOwner,coreAckReceived:!1,settledAckReceived:!1},this.blurCursor(e);const c={msgType:le.UpdateCamera,dataType:Re.Local,cameraOpt:n.cameraOpt,scenePath:i,isRunSubWork:!0,viewId:e,viewGeneration:a,cameraTaskId:o};this.post(new Set([{msgType:le.TasksQueue,dataType:Re.Local,isRunSubWork:!0,isRunBackgroundThread:this.control.isUseBackgroundThread,mainTasksqueueCount:o,cameraTaskId:o,tasksqueue:new Map([[e,c]]),viewId:e,viewGeneration:a}])),this.control.textEditorManager.onCameraChange(n.cameraOpt,e);try{(l=this.control.selectorApi)==null||l.onCameraChange(e)}catch(d){(h=(u=this.Logger)==null?void 0:u.error)==null||h.call(u,`[Appliance]: [selector] onCameraChange failed: ${d==null?void 0:d.message}`)}this.startCameraTaskTimeouts(e,r,o,a)}clearCameraTaskTimeouts(e){e.cameraAckSlowTimeoutId&&(clearTimeout(e.cameraAckSlowTimeoutId),e.cameraAckSlowTimeoutId=void 0),e.cameraTransportTimeoutId&&(clearTimeout(e.cameraTransportTimeoutId),e.cameraTransportTimeoutId=void 0)}startCameraTaskTimeouts(e,r,n,i){this.clearCameraTaskTimeouts(r),r.cameraAckSlowTimeoutId=setTimeout(()=>{var o,a;!this.isCurrentCameraTransaction(e,r,n,i)||r.currentTaskId!==n||(r.cameraAckSlowTimeoutId=void 0,(a=(o=this.Logger)==null?void 0:o.warn)==null||a.call(o,`[Appliance]: camera render ACK slow viewId=${e} taskId=${n} hasPending=${!!r.pendingCamera} elapsedMs=${su}`))},su),r.cameraTransportTimeoutId=setTimeout(()=>{!this.isCurrentCameraTransaction(e,r,n,i)||r.currentTaskId!==n||(r.cameraTransportTimeoutId=void 0,this.failCameraTask(e,n,{code:"CAMERA_TRANSPORT_TIMEOUT",business:"updateCamera",message:"renderer returned neither success nor failure ACK",elapsedMs:ca,stage:"transport"},i))},ca)}isCurrentCameraTransaction(e,r,n,i){const o=r.transaction;return this.cameraUpdateStateByView.get(e)===r&&(o==null?void 0:o.taskId)===n&&o.viewGeneration===i&&this.viewGenerationById.get(e)===i}completeCameraTransactionIfReady(e,r){const n=r.transaction;!n||!this.isCurrentCameraTransaction(e,r,n.taskId,n.viewGeneration)||r.currentTaskId!==void 0||r.pendingCamera||!n.coreAckReceived||!n.settledAckReceived||(e===Fe?this.logMainViewCameraTrace("completed",{taskId:n.taskId,scenePath:n.scenePath,camera:n.camera,renderFinished:!0}):this.logAppViewCameraTrace(e,"completed",{taskId:n.taskId,scenePath:n.scenePath,camera:n.camera,renderFinished:!0}),this.cameraUpdateDestroy(e))}ackCameraTask(e,r,n){const i=this.cameraUpdateStateByView.get(e);!i||i.currentTaskId!==r||!this.isCurrentCameraTransaction(e,i,r,n)||(this.clearCameraTaskTimeouts(i),i.currentTaskId=void 0,i.transaction.coreAckReceived=!0,i.pendingCamera?this.consumePendingCameraForView(e,i):this.completeCameraTransactionIfReady(e,i))}failCameraTask(e,r,n,i){var a,c;const o=this.cameraUpdateStateByView.get(e);if(!(!o||!this.isCurrentCameraTransaction(e,o,r,i))){if(this.cameraFailureSequenceByView.set(e,(this.cameraFailureSequenceByView.get(e)||0)+1),this.clearCameraTaskTimeouts(o),o.currentTaskId=void 0,this.Logger.error(`[Appliance]: renderer Camera task failed code=${n.code} business=${n.business} viewId=${e} taskId=${r} stage=${n.stage||"unknown"} elapsedMs=${n.elapsedMs??0} blockers=${JSON.stringify(n.blockingWorks||[])} error=${n.message}`),n.code==="CAMERA_TRANSPORT_TIMEOUT"){if(!this.beginCameraRecovery(e,o)){this.Logger.error(`[Appliance]: Camera recovery cannot start viewId=${e} taskId=${r} reason=missing-replay-camera`),this.cameraUpdateDestroy(e,!1);return}if(((c=(a=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:c.call(a))===!1){this.releaseCameraRecovery(e,"manager-lifecycle-ended",o);return}this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:i,reportErrorCode:"CAMERA_TRANSPORT_TIMEOUT",reportStage:n.stage||"camera-transport",reportError:n.message});return}o.pendingCamera?this.consumePendingCameraForView(e,o):this.cameraUpdateDestroy(e)}}ackCameraSettledTask(e,r,n){const i=this.cameraUpdateStateByView.get(e);!i||!this.isCurrentCameraTransaction(e,i,r,n)||(i.transaction.settledAckReceived=!0,this.completeCameraTransactionIfReady(e,i))}cameraUpdateDestroy(e,r=!0){var o,a,c,l;const n=this.cameraUpdateStateByView.get(e),i=this.getActiveRenderRuntimeRecoveryView(e);if(i&&(i.replayCamera=void 0,i.cameraRecoveryOwner=void 0),(n==null?void 0:n.recoveryOwner)!==void 0&&((o=this.viewInitRecoveryAttempts)==null||o.delete(e)),!n){r||(a=this.methodBuilder)==null||a.discardRecovery(e),this.resolveCameraUpdateEndWaiters(e);return}if(this.clearCameraTaskTimeouts(n),n.pendingCamera=void 0,n.transaction=void 0,n.preparePromise=void 0,n.currentTaskId=void 0,this.cameraUpdateStateByView.delete(e),this.resolveCameraUpdateEndWaiters(e),this.resolveViewLifecycleIdleWaiters(e),!r){(c=this.methodBuilder)==null||c.discardRecovery(e);return}!this.control.isSceneBusy(e)&&!this.control.isClearBusy(e)&&((l=this.methodBuilder)==null||l.recover(e,this.viewContainerManager.getCurScenePath(e)),this.runAnimation())}resolveCameraUpdateEndWaiters(e){var n;const r=(n=this.cameraUpdateEndWaitersByView)==null?void 0:n.get(e);r&&(this.cameraUpdateEndWaitersByView.delete(e),r.forEach(i=>i()))}waitForCameraUpdateEnd(e){var r;return(r=this.cameraUpdateStateByView)!=null&&r.has(e)?(this.cameraUpdateEndWaitersByView||(this.cameraUpdateEndWaitersByView=new Map),new Promise(n=>{const i=this.cameraUpdateEndWaitersByView.get(e)||new Set;i.add(n),this.cameraUpdateEndWaitersByView.set(e,i)})):Promise.resolve()}waitForViewLifecycleIdle(e){return this.hasPendingViewLifecycleWork(e)?(this.viewLifecycleIdleWaitersByView||(this.viewLifecycleIdleWaitersByView=new Map),new Promise(r=>{const n=this.viewLifecycleIdleWaitersByView.get(e)||new Set;n.add(r),this.viewLifecycleIdleWaitersByView.set(e,n)})):Promise.resolve()}hasPendingViewLifecycleWork(e){var r,n,i;return((r=this.cameraUpdateStateByView)==null?void 0:r.has(e))||((n=this.pendingDprByView)==null?void 0:n.has(e))||((i=this.viewRecoveryQueueByView)==null?void 0:i.has(e))||!1}resolveViewLifecycleIdleWaiters(e){var n;if(this.hasPendingViewLifecycleWork(e))return;const r=(n=this.viewLifecycleIdleWaitersByView)==null?void 0:n.get(e);r&&(this.viewLifecycleIdleWaitersByView.delete(e),r.forEach(i=>i()))}recoverAfterSceneChange(e){var r;(r=this.methodBuilder)==null||r.recover(e),this.runAnimation()}abortActiveContinuousMethods(e,r){var n;return((n=this.methodBuilder)==null?void 0:n.abortActiveContinuousMethods(e,r))||!1}abortActiveLocalInput(e,r){var g,y,S,b,C;const n=r==null?void 0:r.toString(),i=n?((g=this.collector)==null?void 0:g.getLocalId(n))||n:void 0,o=[...this.localPointsBatchData.entries()].filter(([,N])=>N.viewId===e).map(([N])=>N.toString()),a=[...this.getFullLayerBitmapEraseTxns().values()].filter(N=>N.viewId===e&&N.phase!=="committed"&&N.phase!=="aborted"),c=!n||((y=this.collector)==null?void 0:y.isLocalId(n))||((S=this.collector)==null?void 0:S.isOwn(n)),l=i!==void 0&&!!c&&o.includes(i),u=i!==void 0&&a.some(N=>{var T,p,m,v;return N.workId===i||((T=N.updatedTargetIds)==null?void 0:T.has(i))||((p=N.updatedTargetIds)==null?void 0:p.has(n||i))||((m=N.deletedTargetIds)==null?void 0:m.has(i))||((v=N.deletedTargetIds)==null?void 0:v.has(n||i))}),h=i===void 0||l||u,d=((b=this.localEventQueueByView)==null?void 0:b.has(e))||!1;return!(this.getLocalWorkViewId()===e||this.currentLocalWorkData.viewId===e||((C=this.activeLocalEvent)==null?void 0:C.viewId)===e||o.length>0||a.length>0||d)||!h?!1:(this.localInputEpochByView||(this.localInputEpochByView=new Map),this.localInputEpochByView.set(e,(this.localInputEpochByView.get(e)||0)+1),o.forEach(N=>this.rememberCancelledLocalWork(N,e)),this.currentLocalWorkData.viewId===e&&this.setCurrentLocalWorkData({workState:he.Pending}),this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.isLocalWorkActive=!1,!0)}async clearViewScenePath(e,r,n){var c,l;const i=this.viewContainerManager.getCurScenePath(e),o=this.isViewInitReady(e);if(n){const u=(c=this.collector)==null?void 0:c.uid;if(!(!u||this.control.renderControl.isClearAble({uid:u,viewId:e,scenePath:i})))return}const a=this.beginCameraClearReplay(e,i);try{if(o||this.control.queuePendingInitClear(e,i),a.preserveRecovery||this.cameraUpdateDestroy(e),this.cancelLocalWorks(e,!r),this.control.textEditorManager.clear(e,r),o&&(this.queryTaskBatchData({dataType:Re.Service,viewId:e}).forEach(u=>{this.taskBatchData.delete(u)}),this.queryTaskBatchData({msgType:le.Clear,dataType:Re.Local,viewId:e}).forEach(u=>{this.taskBatchData.delete(u)}),this.taskBatchData.add({dataType:Re.Local,msgType:le.Clear,viewId:e}),this.runAnimation()),r||(this.control.renderControl.isUsePageAuth(e)&&i?this.control.renderControl.clearRenderPage(e,i):(l=this.collector)==null||l.dispatch({type:le.Clear,viewId:e,scenePath:i})),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),!o)return;await new Promise(u=>{const h=this.clearAllResolveMap.get(e)||{resolve:void 0,timer:void 0};h.timer&&clearTimeout(h.timer),h.resolve=u,h.timer=setTimeout(()=>{const d=this.clearAllResolveMap.get(e);d!=null&&d.resolve&&d.resolve(e)},this.maxLastSyncTime),this.clearAllResolveMap.set(e,h)}).then(u=>{this.clearAllResolveMap.delete(u)})}finally{this.finishCameraClearReplay(e,a)}}internalMsgEmitterListener(){var e;this.methodBuilder=new Ve([Te.CopyNode,Te.SetColorNode,Te.DeleteNode,Te.RotateNode,Te.ScaleNode,Te.TranslateNode,Te.ZIndexNode,Te.SetFontStyle,Te.SetPoint,Te.SetLock,Te.SetShapeOpt]).registerForMainEngine(We.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(Te.ZIndexNode)}setZIndex(e){const r=this.currentToolsData&&ve.cloneDeep(this.currentToolsData.toolsOpt);return r&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),r.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),r}async checkDrawingWork(e){const r=new Set;let n=!1;for(const[i,o]of this.localPointsBatchData.entries()){const{state:a,viewId:c,toolsType:l,undoTickerId:u}=o,h=this.getFullLayerBitmapEraseTxns().get(i.toString()),d=a===he.Done&&o.isFullWork===!0&&l===Q.BitMapEraser&&(h==null?void 0:h.phase)==="done-staging";if(e===c&&(a===he.Start||a===he.Doing||d)){if(l===Q.Text)continue;o.state=he.Done,o.isFullWork=!0,this.localPointsBatchData.set(i,o),(h==null?void 0:h.phase)==="doing"&&this.markFullLayerBitmapEraseDoneStaging(h),u&&(r.add(u),o.scenePath&&l&&Xl.has(l)?this.internalMsgEmitter.emit("finalizeRequested",u,c,[i.toString()],o.scenePath):l&&Ni(l)&&l!==Q.BitMapEraser&&o.scenePath&&this.internalMsgEmitter.emit("finalizeRequested",u,c,[],o.scenePath)),n=!0}}if(n){this.consume();for(const[i,o]of this.localPointsBatchData.entries())o.viewId===e&&o.state===he.Done&&this.deleteLocalPoint(i)}return[...r]}cancelLocalWorks(e,r=!0,n){var f;const i=this.viewContainerManager.getCurScenePath(e);let o=i;const a=new Set,c=new Set,l=new Map;let u=!1;const h=new Set(n||[]);if(!n){for(const[g,y]of this.localPointsBatchData.entries())y.viewId===e&&h.add(g.toString());for(const g of this.getFullLayerBitmapEraseTxns().values())g.viewId===e&&h.add(g.workId)}for(const g of h){const y=this.getFullLayerBitmapEraseTxns().get(g);!y||y.viewId!==e||(y.phase="aborting",y.commitTimeoutId&&clearTimeout(y.commitTimeoutId),y.scenePath&&(o=y.scenePath),y.undoTickerId&&y.scenePath&&l.set(y.undoTickerId,y.scenePath),this.rememberCancelledEraseTxn(g))}for(const[g,y]of this.localPointsBatchData.entries()){const S=g.toString();if(y.viewId!==e||!h.has(S))continue;const b=y.scenePath||i;y.scenePath&&(o=y.scenePath),y.undoTickerId&&b&&l.set(y.undoTickerId,b),Ni(y.toolsType)&&this.rememberCancelledEraseTxn(S);const C=this.getDoneWaitForView(e);C!=null&&C.workIds.includes(g.toString())&&(u=!0),g!==Le&&(this.rememberCancelledLocalWork(S,e),a.add(S),y.state!==he.Start&&c.add(S)),this.localPointsBatchData.delete(g)}for(const g of h)g!==Le&&(this.rememberCancelledLocalWork(g,e),a.add(g)),this.finishFullLayerBitmapEraseTxn(g,"aborted");const d=this.getDoneWaitForView(e);d!=null&&d.workIds.some(g=>h.has(g))&&(u=!0);for(const g of[...this.taskBatchData])g.viewId===e&&g.workId!==void 0&&h.has(g.workId.toString())&&(g.msgType===le.CreateWork||g.msgType===le.DrawWork||g.msgType===le.RemoveNode)&&this.taskBatchData.delete(g);this.reRenders||(this.reRenders=new Map);for(const[g,y]of this.reRenders.entries()){const S=y.filter(b=>{const N=[...b.renderEraseTxnIds||[],...b.eraseTxnId!==void 0?[b.eraseTxnId]:[]].some(T=>h.has(T));return N&&this.retireRenderedImageBitmap(b),!N});S.length?this.reRenders.set(g,S):this.reRenders.delete(g)}if(u){const g=this.getDoneResolverForView(e);this.clearDoneWaitForView(e),g==null||g(!1)}l.forEach((g,y)=>{this.internalMsgEmitter.emit("cancelUndoTicker",y,e,g)}),a.size&&([...a].forEach(y=>{this.taskBatchData.add({msgType:le.RemoveNode,workId:y,viewId:e,dataType:Re.Local,isRunSubWork:!0,scenePath:o})}),r&&c.size&&((f=this.collector)==null||f.dispatch({type:le.RemoveNode,removeIds:[...c],viewId:e,scenePath:o})),this.consume()),this.currentLocalWorkData.viewId===e&&this.setCurrentLocalWorkData({workState:he.Pending})}timeoutLocalWorks(e,r,n,i,o){var d,f;this.invalidateTransactionBarrier(e);const a=(f=(d=this.viewContainerManager.getView(e))==null?void 0:d.displayer)==null?void 0:f.commiter,c=new Set;i&&i.forEach(g=>{const y=this.getFullLayerBitmapEraseTxns().get(g);(y==null?void 0:y.undoTickerId)!==void 0&&c.add(y.undoTickerId);const S=this.localPointsBatchData.get(g);(S==null?void 0:S.undoTickerId)!==void 0&&c.add(S.undoTickerId)});let l=[];try{l=(a==null?void 0:a.getPendingTickerSnapshots(r))||[],i&&(l=l.filter(g=>c.has(g.tickerId)))}catch(g){this.logLocalWorkBarrierError(`[Appliance]: reading pending Undo tickers failed; viewId=${e}; reason=${n}; error=${vr(g)}`)}const u=o?`; error=${vr(o)}`:"";this.logLocalWorkBarrierError(`[Appliance]: local work barrier failed; viewId=${e}; scenePath=${r}; reason=${n}${u}`);const h=new Set;[...i||this.getFullLayerBitmapEraseTxns().keys()].forEach(g=>{const y=this.getFullLayerBitmapEraseTxns().get(g.toString());(y==null?void 0:y.viewId)===e&&h.add(g.toString())}),h.forEach(g=>{const y=this.getFullLayerBitmapEraseTxns().get(g);y&&this.rollbackBitmapEraserTxn(y)});try{this.cancelLocalWorks(e,!1,i)}catch(g){this.logLocalWorkBarrierError(`[Appliance]: cancelling timed-out local work failed; viewId=${e}; reason=${n}; error=${vr(g)}`)}finally{l.forEach(g=>{try{a==null||a.cancelUndoTicker(g.tickerId,e,g.scenePath)}catch(y){this.logLocalWorkBarrierError(`[Appliance]: forcing Undo stack-end failed; viewId=${e}; tickerId=${g.tickerId}; reason=${n}; error=${vr(y)}`)}})}}rollbackBitmapEraserTxn(e){var o,a,c,l;if(e.phase==="aborted"||e.phase==="committed")return;e.phase="aborting",e.rollbackStartedAt=Date.now(),this.rememberCancelledEraseTxn(e.workId);try{this.post(new Set([{msgType:le.CancelBitmapEraser,dataType:Re.Local,viewId:e.viewId,workId:e.workId,isRunSubWork:!0,isRunBackgroundThread:!0}]))}catch(u){this.logLocalWorkBarrierError(`[Appliance]: bitmap eraser abort notification failed; viewId=${e.viewId}; workId=${e.workId}; error=${vr(u)}`)}const r=this.localPointsBatchData.get(e.workId);r&&(r.state=he.Pending,r.points=[],r.isFullWork=!1,this.localPointsBatchData.set(e.workId,r));const n=e.beforeImages;if(!(n!=null&&n.size)){this.scheduleViewRecovery(e.viewId,"bitmap-eraser-timeout-without-snapshot");return}const i=e.scenePath||this.viewContainerManager.getCurScenePath(e.viewId)||"";for(const[u,h]of n){const d=xt(h.op||[]);this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,viewId:e.viewId,scenePath:i,workId:u,toolsType:h.toolsType,opt:ve.cloneDeep(h.opt),ops:d,isFullWork:!0,isRunSubWork:!0,updateNodeOpt:{useAnimation:!1}});const f=(o=e.deletedTargetIds)==null?void 0:o.has(u),g=(a=this.collector)==null?void 0:a.hasId(e.viewId,i,u);f||!g?(c=this.collector)==null||c.dispatch({type:le.FullWork,viewId:e.viewId,scenePath:i,workId:u,toolsType:h.toolsType,opt:ve.cloneDeep(h.opt),ops:d,isSync:!0}):(l=this.collector)==null||l.dispatch({type:le.UpdateNode,viewId:e.viewId,scenePath:i,workId:u,toolsType:h.toolsType,opt:ve.cloneDeep(h.opt),ops:d,isSync:!0,updateNodeOpt:{useAnimation:!1}})}try{this.consume()}catch(u){this.scheduleViewRecovery(e.viewId,"bitmap-eraser-timeout-render-compensation-failed"),this.logLocalWorkBarrierError(`[Appliance]: bitmap eraser render compensation enqueue failed; viewId=${e.viewId}; workId=${e.workId}; error=${vr(u)}`)}}logLocalWorkBarrierError(e){var r;(r=this.Logger)==null||r.error(e)}removeDrawingWork(e){this.abortActiveLocalInput(e),this.cancelLocalWorks(e)}removeNodes(e,r){var i,o;const n=(i=this.viewContainerManager.getView(e))==null?void 0:i.focusScenePath;if(n&&r.length){for(const a of r)this.taskBatchData.add({msgType:le.RemoveNode,workId:a,viewId:e,dataType:Re.Local,isRunSubWork:!1});this.consume(),(o=this.collector)==null||o.dispatch({type:le.RemoveNode,removeIds:r,viewId:e,scenePath:n})}}hoverCursor(e,r){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)===Q.Selector&&!this.isViewBusy(r)){const i=this.viewContainerManager.getView(r);if(i&&i.displayer&&i.displayer.vDom){const c=i.displayer.vDom.state.floatBarData;if(c){const{x:l,y:u,w:h,h:d}=c;if(rM(e,{x:l,y:u,w:h,h:d}))return}}const o=this.viewContainerManager.transformToScenePoint(e,r),a={msgType:le.CursorHover,dataType:Re.Local,point:o,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:r};this.queryTaskBatchData({msgType:le.CursorHover,dataType:Re.Local,toolsType:this.currentToolsData.toolsType,viewId:r}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add(a),this.runAnimation()}}blurCursor(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==Q.Selector)return;const r={msgType:le.CursorBlur,dataType:Re.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:le.CursorHover,dataType:Re.Local,viewId:e}).forEach(i=>{this.taskBatchData.delete(i)}),this.taskBatchData.add(r),this.consume()}sendCursorEvent(e,r){var c,l,u;if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===he.Unwritable||this.isViewBusy(r))return;const n=(c=this.currentToolsData)==null?void 0:c.toolsType;if(this.workState===he.Pending&&n===Q.Selector&&(ve.isNumber(e[0])&&ve.isNumber(e[1])?this.hoverCursor(e,r):e[0]===void 0&&e[1]===void 0&&this.blurCursor(r)),!this.currentToolsData||!this.isCanSentCursor||!this.control.pluginOptions.extras.cursor.enable)return;const i=(l=this.collector)==null?void 0:l.uid,o=this.viewContainerManager.getCurScenePath(r);switch((u=this.currentToolsData)==null?void 0:u.toolsType){case Q.Eraser:case Q.PencilEraser:case Q.BitMapEraser:{if(i&&!this.control.renderControl.isClearAble({uid:i,viewId:r,filterLocalSelf:!1,scenePath:o}))return;break}default:if(i&&!this.control.renderControl.isWritable||i&&!this.control.renderControl.isRenderAble({uid:i,viewId:r,filterLocalSelf:!1,scenePath:o}))return;break}let a=[void 0,void 0];this.currentToolsData&&this.isCanSentCursor&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(a=e,this.control.cursor.sendEvent(a,r))}getBoundingRect(e){var r,n;{const i=(r=this.collector)==null?void 0:r.getScenePathData(e);if(!i)return;if(Object.keys(i).forEach(o=>{var a;((a=this.collector)==null?void 0:a.getLocalId(o))===Le&&delete i[o]}),Object.keys(i).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const o=this.viewContainerManager.mainView.id,a=this.getViewSceneRequestKey(o,e),c=(n=this.boundingRectMap)==null?void 0:n.get(a);if(c)return c.promise;const l=this.createInternalRequestId("bounding_rect");let u;const d=new Promise(g=>{u=g}).then(g=>{const y=this.boundingRectMap.get(a);return(y==null?void 0:y.requestId)===l&&(this.boundingRectMap.delete(a),this.boundingRectRequestIdByViewScene.delete(a)),g});this.boundingRectMap.set(a,{resolve:u,requestId:l,viewId:o,promise:d});const f={msgType:le.BoundingBox,dataType:Re.Local,scenePath:e,scenes:i,cameraOpt:{...this.viewContainerManager.mainView.cameraOpt},isRunSubWork:!0,viewId:o,requestId:l};return this.boundingRectRequestIdByViewScene.set(a,f.requestId),this.taskBatchData.add(f),this.runAnimation(),d}}}getSnapshot(e,r,n,i){var o,a,c,l,u;{const h=(o=this.collector)==null?void 0:o.getViewIdBySecenPath(e);if(!h)return;const d=this.getViewSceneRequestKey(h,e),f=(a=this.snapshotMap)==null?void 0:a.get(d);if(f)return f.promise;const g=(c=this.collector)==null?void 0:c.getStorageData(h,e);if(!g)return;if(Object.keys(g).forEach(y=>{var S;((S=this.collector)==null?void 0:S.getLocalId(y))===Le&&delete g[y]}),Object.keys(g).length){const y=this.viewContainerManager.mainView;if(!y)return;const S=r||((l=y.cameraOpt)==null?void 0:l.width),b=n||((u=y.cameraOpt)==null?void 0:u.height),C=this.createInternalRequestId("snapshot"),N=this.control.isUseBackgroundThread?[void 0,void 0]:[void 0];let T;const m=new Promise(M=>{T=M}).then(M=>{const R=this.snapshotMap.get(d);return(R==null?void 0:R.requestId)===C&&(this.snapshotMap.delete(d),this.snapshotRequestIdByViewScene.delete(d)),M.reverse()});this.snapshotMap.set(d,{resolve:T,value:N,requestId:C,viewId:h,promise:m});const v={msgType:le.Snapshot,dataType:Re.Local,scenePath:e,scenes:g,w:S,h:b,cameraOpt:i&&{...i,width:S,height:b}||y.cameraOpt,isRunSubWork:!0,isRunBackgroundThread:this.control.isUseBackgroundThread,viewId:h,requestId:C};return this.snapshotRequestIdByViewScene.set(d,v.requestId),this.taskBatchData.add(v),this.runAnimation(),m}}}queryTaskBatchData(e){const r=[];if(e)for(const n of this.taskBatchData.values()){let i=!0;for(const[o,a]of Object.entries(e))if(n[o]!==a){i=!1;break}i&&r.push(n)}return r}insertIconify(e,r){var a;if(!this.control.canAcceptLocalMutation(e))return;const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertIconify viewId is not exist");if(!r.src)throw new Error("iconify src must be required");if(!/^(http|https):\/\//.test(r.src))throw new Error("iconify src must be http or https");r.strokeColor||(r.strokeColor=(a=this.currentLocalWorkData.toolsOpt)==null?void 0:a.strokeColor);const o=n==null?void 0:n.focusScenePath;if(e&&o){const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncIcon}),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[r.uuid],o);const l={...r,type:an.Iconify};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:Q.Image,workId:r.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation()}}insertBackgroundSVG(e,r){if(!this.control.canAcceptLocalMutation(e))return;if(!this.control.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertBackgroundSVG viewId is not exist");if(!r.src)throw new Error("src must be required");if(r.src&&!/^(http|https):\/\//.test(r.src))throw new Error("iconify src must be http or https");const i=n==null?void 0:n.focusScenePath;if(e&&i){const o=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",o,e,{render:!0,storage:!0,source:$e.AsyncIcon}),tt.InternalMsgEmitter.emit("finalizeRequested",o,e,[r.uuid],i);const a={...r,locked:r.locked??!0,type:Gi.url};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayerForBackgroundSVG(e),a.zIndex=this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:Q.BackgroundSVG,workId:r.uuid,opt:a,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:o,isRunBackgroundThread:!0,scenePath:i}),this.runAnimation()}}async insertBackgroundMarkMap(e,r){var o;if(!this.control.canAcceptLocalMutation(e))return;if(this.assertMarkmapRuntimeRegistered("insertBackgroundMarkMap",e),!this.control.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");const n=this.viewContainerManager.getView(e);if(!n)throw new Error("instertBackgroundMarkMap viewId is not exist");if(!r.data)throw new Error("data must be required");if(r.data&&!vMe(r.data))throw new Error("data must be markdown string");const i=n==null?void 0:n.focusScenePath;if(e&&i){const a=r.uuid.toString();if((o=this.collector)!=null&&o.hasId(e,i,a))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already exist");if(this.markmapIdResolveMap.has(a))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already resolving");const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncMarkmap}),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[a],i);const l={...r,locked:r.locked??!0,type:Gi.markmap};return this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayerForBackgroundSVG(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:Q.BackgroundSVG,workId:a,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c,isRunBackgroundThread:!0}),this.runAnimation(),new Promise((u,h)=>{this.markmapIdResolveMap.set(a,{resolve:u,timer:setTimeout(()=>{const d=this.markmapIdResolveMap.get(a);d!=null&&d.timer&&(d.timer=void 0),h(a)},this.control.pluginOptions.extras.markmap.timeout)})}).then(u=>{if(u)return this.markmapIdResolveMap.delete(u),u}).catch(u=>{throw this.markmapIdResolveMap.delete(u),tt.InternalMsgEmitter.emit("ackRenderUndoTicker",c,e,i),tt.InternalMsgEmitter.emit("ackStorageUndoTicker",c,e,i),new Error(`instertBackgroundMarkMap svgInfo.uuid ${u} insert timeout`)})}}async updateBackgroundMarkMap(e,r,n){var l;if(!this.control.canAcceptLocalMutation(e))return;this.assertMarkmapRuntimeRegistered("updateBackgroundMarkMap",e);const i=this.viewContainerManager.getView(e);if(!i)throw new Error("updateBackgroundMarkMap viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(!o)throw new Error("updateBackgroundMarkMap scenePath is not exist");if((l=this.collector)!=null&&l.hasId(e,o,r))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already exist");if(this.markmapIdResolveMap.has(r))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already resolving");const a=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",a,e,{render:!0,storage:!0,source:$e.AsyncMarkmap}),tt.InternalMsgEmitter.emit("finalizeRequested",a,e,[r],o);const c={...n,type:Gi.markmap};this.taskBatchData.add({msgType:le.UpdateNode,dataType:Re.Local,toolsType:Q.BackgroundSVG,workId:r,opt:c,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:a,isRunBackgroundThread:!0}),this.runAnimation()}insertImage(e,r){if(!this.control.canAcceptLocalMutation(e))return;const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertImage viewId is not exist");if(r.src&&!/^(http|https):\/\//.test(r.src))throw new Error("Image src must be http or https");const i=n==null?void 0:n.focusScenePath;if(e&&i){const{src:o,uuid:a}=r;if(a&&!o){this.tmpImageConfigMap.set(a,r);return}const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncImage});const l={...r,type:an.Image};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:Q.Image,workId:r.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation(),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[r.uuid],i)}}lockImage(e,r,n){var a,c;if(!this.control.canAcceptLocalMutation(e))return;const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertImage viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(e&&o&&this.collector){const l=this.collector.getStorageData(e,o);if(!l)return;for(const[u,h]of Object.entries(l))if(h&&h.toolsType===Q.Image&&h.opt.uuid===r){const d=this.now,f=(a=this.collector)!=null&&a.isOwn(u)?(c=this.collector)==null?void 0:c.getLocalId(u):u;tt.InternalMsgEmitter.emit("addUndoTicker",d,e,{render:!0,storage:!0,source:$e.AsyncImage});const g={...h.opt,locked:n,type:an.Image};this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:Q.Image,workId:f,opt:g,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:d}),this.runAnimation(),tt.InternalMsgEmitter.emit("finalizeRequested",d,e,[f],o);return}}}completeImageUpload(e,r,n){if(!this.control.canAcceptLocalMutation(e))return;const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertImage viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(e&&o){const a=this.tmpImageConfigMap.get(r);a&&(a.src=n,this.insertImage(e,a),this.tmpImageConfigMap.delete(r));return}}getImagesInformation(e){const r=[];if(this.collector){const n=this.collector.getScenePathData(e);if(!n)return r;for(const i of Object.values(n))if(i&&i.toolsType===Q.Image){const o=i.opt;r.push({uuid:o.uuid,centerX:o.centerX,centerY:o.centerY,width:o.width,height:o.height,locked:o.locked,uniformScale:o.uniformScale,crossOrigin:o.crossOrigin})}}return r}setShapeSelectorByWorkId(e,r){this.taskBatchData.add({workId:Le,selectIds:[e],msgType:le.Select,dataType:Re.Local,viewId:r,willSyncService:!0}),this.runAnimation()}blurSelector(e,r,n){this.taskBatchData.add({workId:n||Le,selectIds:[],msgType:le.Select,dataType:Re.Service,viewId:e,scenePath:r}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:le.Console,dataType:Re.Local,isRunSubWork:!0,viewId:""}),this.consume()}sendClearUids(e,r){var i,o;const n=new Set;if(n.add({msgType:le.AuthClear,dataType:Re.Local,viewId:e,clearUids:r,localUid:(i=this.collector)==null?void 0:i.uid}),this.control.hasOffscreenCanvas)this.fullWorker.postMessage(n);else{const a=(o=this.mainThread)==null?void 0:o.consume(n);a==null||a.catch(c=>{this.logLocalWorkBarrierError(`[Appliance]: AuthClear delivery failed; viewId=${e}; error=${c instanceof Error?c.message:String(c)}`)})}}async getVNodeInfo(e,r,n){if(!this.getVNodeInfoResolveMap.has(e))return this.taskBatchData.add({msgType:le.GetVNodeInfo,dataType:Re.Local,isRunSubWork:!0,viewId:r,workIds:n,workId:e}),this.consume(),await new Promise(i=>{const o=this.getVNodeInfoResolveMap.get(e)||{resolve:void 0,timer:void 0};o.timer&&clearTimeout(o.timer),o.resolve=i,o.timer=setTimeout(()=>{const a=this.getVNodeInfoResolveMap.get(e);a!=null&&a.resolve&&a.resolve({uuid:e})},this.maxLastSyncTime*5),this.getVNodeInfoResolveMap.set(e,o)}).then(i=>{const{uuid:o}=i;return this.getVNodeInfoResolveMap.delete(o),i})}}class sSe{constructor(t){x(this,"internalMsgEmitter");x(this,"control");x(this,"roomHotkeyCheckers");x(this,"tmpCopyStore",new Map);x(this,"tmpCopyCoordInfo");var n;const{control:e,internalMsgEmitter:r}=t;this.control=e,this.internalMsgEmitter=r,this.roomHotkeyCheckers=((n=this.control.room)==null?void 0:n.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var t,e;return((e=(t=this.control)==null?void 0:t.room)==null?void 0:e.disableDeviceInputs)||!1}get isSelector(){var t;return((t=this.control.worker.currentToolsData)==null?void 0:t.toolsType)===Q.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(t){switch(t.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(t){var n,i,o;const e=this.control.viewContainerManager.focuedViewId,r=(n=this.control.viewContainerManager.focuedView)==null?void 0:n.focusScenePath;if(e&&r)switch(t){case"delete":this.isSelector&&((i=this.collector)!=null&&i.hasSelector(e,r))&&Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:[Le],viewId:e});break;case"copy":this.isSelector&&((o=this.collector)!=null&&o.hasSelector(e,r))&&this.copySelectorToTemp(e,r);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,r);break}(t==="changeToPencil"||t==="redo"||t==="undo")&&this.onSelfActiveHotkey(t)}colloctHotkey(t){if(this.isUseSelf){const e=this.checkHotkey(t);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(t){switch(t){case"changeToPencil":this.setMemberState({currentApplianceName:De.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:De.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:De.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:De.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:De.eraser});break;case"changeToHand":this.setMemberState({currentApplianceName:De.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:De.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:De.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:De.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:De.straight});break;case"redo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.redo();break;case"undo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.undo();break;case"changeToText":this.setMemberState({currentApplianceName:De.text});break;case"changeToPencilEraser":this.setMemberState({currentApplianceName:De.pencilEraser});break;case"delete":case"copy":case"paste":this.onActiveHotkey(t);break}}checkHotkey(t){for(const e of this.roomHotkeyCheckers){const{kind:r,checker:n}=e;if(n({nativeEvent:t,kind:this.getEventKey(t),key:t.key,altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey},this.keyboardKind))return r}}copySelectorToTemp(t,e){var l,u;const r=this.control.viewContainerManager.getView(t),n=(u=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:u.getBuilder(Te.CopyNode);if(!r||!this.collector||!n)return;const i=this.collector.transformKey(Le),o=this.collector.getStorageData(t,e);if(!o)return;const a=o[i],c=a&&n.copySelector({viewId:t,store:a});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(t,e){var i,o;const r=this.control.viewContainerManager.getView(t),n=(o=(i=this.mainEngine)==null?void 0:i.methodBuilder)==null?void 0:o.getBuilder(Te.CopyNode);if(!(!r||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!n)&&r.viewData&&this.tmpCopyCoordInfo){const a=ve.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=r.viewData.camera;a.x=a.x+l.centerX-c.centerX,a.y=a.y+l.centerY-c.centerY;const u=this.control.worker.now;this.control.worker.internalMsgEmitter.emit("addUndoTicker",u,t,{render:!0,storage:!0,copyAck:!0,source:$e.AsyncPasteNode}),n.pasteSelector({viewId:t,scenePath:e,copyStores:ve.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:l},undoTickerId:u})}}setMemberState(t){var e;(e=this.control.room)==null||e.setMemberState(t)}}const im=50;function oSe(s){if("diffType"in s){if(s.diffType==="view")return`view:${s.viewId}`;if(s.diffType==="scenePath")return`scenePath:${s.viewId}:${s.scenePath}`}return`data:${s.key}:${s.type??""}:${s.toolsType??""}`}class aSe{constructor(t,e){x(this,"batches",new Map);this.logger=t,this.batchWindowMs=e}append(t,e,r,n){if(!n.length)return;const i=`${t}:${e}:${r}`;let o=this.batches.get(i);o||(o={items:[],indexByIdentity:new Map,flushTimer:setTimeout(()=>this.flush(i),this.batchWindowMs)},this.batches.set(i,o));const a=Date.now();for(const c of n){const l=oSe(c),u=o.indexByIdentity.get(l);u!==void 0?o.items[u]={timestamp:a,item:c}:(o.indexByIdentity.set(l,o.items.length),o.items.push({timestamp:a,item:c}))}}flush(t){const e=this.batches.get(t);if(!e)return;clearTimeout(e.flushTimer),this.batches.delete(t);const[r,n,...i]=t.split(":"),o=i.join(":"),a=o?` viewId=${n} scenePath=${o}`:` viewId=${n} scope=view`;for(let c=0;c<e.items.length;c+=im){const u=e.items.slice(c,c+im).map(({timestamp:h,item:d})=>"diffType"in d&&d.diffType!=="data"?{timestamp:h,...d}:`${d.key},${d.type??""},${d.toolsType??""},${h}`);this.logger.info(`[Appliance]: [sync-data] source=${r}${a} changesLength=${u.length} changes=${JSON.stringify(u)}`)}}destroy(){this.clearPending()}clearPending(){for(const t of this.batches.values())clearTimeout(t.flushTimer);this.batches.clear()}}const sm=3,cSe="__APPLIANCE_PLUGIN_RENDER_MODE_DB",Ui="renderModes",lSe="appliance-plugin-render-runtime",Nd=1500,Od=1500;function uSe(s){return NM.hash(s)}function zd(){return globalThis.indexedDB}const om=new WeakSet;function hSe(s){if(!(typeof s!="object"||s===null)&&!om.has(s)&&(om.add(s),!!s.deleteDatabase))try{const t=s.deleteDatabase(lSe),e=()=>{t.onerror=null,t.onsuccess=null,t.onblocked=null};t.onerror=e,t.onsuccess=e,t.onblocked=e}catch{}}function Bd(s,t){return hSe(s),new Promise((e,r)=>{const n=s.open(cSe,sm);let i=!1;const o=()=>{n.onerror=null,n.onsuccess=null,n.onupgradeneeded=null,n.onblocked=null},a=(l,u=!1)=>{i||(i=!0,clearTimeout(c),u?n.onblocked=null:o(),r(l))},c=setTimeout(()=>{a(new Error("render runtime cache open timeout"),!0)},t);n.onerror=()=>{if(i){o();return}a(n.error||new Error("render runtime cache open failed"))},n.onblocked=()=>{a(new Error("render runtime cache open blocked"),!0)},n.onupgradeneeded=l=>{var u;try{const h=l.oldVersion||0;h>0&&h<sm&&n.result.objectStoreNames.contains(Ui)&&n.result.deleteObjectStore(Ui),n.result.objectStoreNames.contains(Ui)||n.result.createObjectStore(Ui)}catch(h){try{(u=n.transaction)==null||u.abort()}catch{}a(h instanceof Error?h:new Error(`render runtime cache upgrade failed: ${String(h)}`),!0)}},n.onsuccess=()=>{const l=n.result;if(i){l.close(),o();return}i=!0,clearTimeout(c),o(),e(l)}})}function jd(s,t,e,r){return new Promise((n,i)=>{let o,a;try{o=s.transaction(Ui,t),a=e(o.objectStore(Ui))}catch(d){i(d);return}let c=!1;const l=()=>{clearTimeout(h),a.onsuccess=null,a.onerror=null,o.oncomplete=null,o.onabort=null,o.onerror=null},u=(d,f=!1)=>{if(!c){if(c=!0,l(),f)try{o.abort()}catch{}i(d instanceof Error?d:new Error(`render runtime cache request failed: ${String(d)}`))}},h=setTimeout(()=>{u(new Error("render runtime cache operation timeout"),!0)},r);a.onsuccess=()=>{},a.onerror=()=>u(a.error||new Error("render runtime cache request failed")),o.onabort=()=>u(o.error||new Error("render runtime cache transaction aborted")),o.onerror=()=>u(o.error||new Error("render runtime cache transaction failed")),o.oncomplete=()=>{if(c)return;c=!0;let d;try{d=a.result}catch(f){l(),i(f);return}l(),n(d)}})}async function dSe(s,t=zd(),e={}){if(!t)return{reason:"indexeddb-unavailable"};const r=e.timeoutMs??Od;let n;try{n=await Bd(t,e.timeoutMs??Nd)}catch(i){return{readFailed:!0,reason:i instanceof Error?i.message:String(i)}}try{const i=await jd(n,"readonly",o=>o.get(s),r);return i===void 0?{reason:"miss"}:oM(i)?{renderModel:i}:{reason:"invalid-render-model"}}catch(i){return{readFailed:!0,reason:i instanceof Error?i.message:String(i)}}finally{n.close()}}async function fSe(s,t,e=zd(),r={}){if(!e||!oM(t))return!1;const n=r.timeoutMs??Od;let i;try{i=await Bd(e,r.timeoutMs??Nd)}catch{return!1}try{return await jd(i,"readwrite",o=>o.put(t,s),n),!0}catch{return!1}finally{i.close()}}async function gSe(s,t=zd(),e={}){if(!t)return!1;const r=e.timeoutMs??Od;let n;try{n=await Bd(t,e.timeoutMs??Nd)}catch{return!1}try{return await jd(n,"readwrite",i=>i.delete(s),r),!0}catch{return!1}finally{n.close()}}class pSe{constructor(t){x(this,"control");x(this,"roomMemberManager");x(this,"worker");x(this,"publicMsgEmitter");x(this,"renderUids",new Map);x(this,"pageAuth",new Map);x(this,"isLocalRender",!1);x(this,"isCurWritable",!1);var n;const{control:e,publicMsgEmitter:r}=t;this.control=e,this.publicMsgEmitter=r,this.roomMemberManager=e.roomMember,this.worker=e.worker,this.isCurWritable=((n=this.control.room)==null?void 0:n.isWritable)||!1}get isWritable(){return this.isCurWritable}onWritableChange(t){this.isCurWritable=t}addPage(t,e=!0){var l,u;const{viewId:r,render:n="localSelf",elementIds:i,pageId:o=(l=this.control.collector)==null?void 0:l.uid}=t,a=this.pageAuth.get(r)||new Map,c=this.control.viewContainerManager.getCurScenePath(r);if(c&&o){const h=a.get(c)||{render:"localSelf",pages:new Map};e&&(h.render=n);const d=i&&this.cloneElementIds(r,c,i,o)||new Set;h.pages.set(o,d),a.set(c,h),this.pageAuth.set(r,a),e&&this.pageAuthEffect(r),this.isLocalRender=!1,(u=this.control.collector)==null||u.dispatchPageAuth({operation:wt.addPage,viewId:r,scenePath:c,pageId:o,pageData:{render:n,elementIds:d}},!0)}}delPage(t,e){var o,a;const r=this.pageAuth.get(e);if(!r)return;const n=[...r.keys()].find(c=>{const l=r.get(c);return!!(l&&l.pages.has(t))});if(!n)return;const i=r.get(n);if(i){const{render:c,pages:l}=i,u=c==="localSelf"?(o=this.control.collector)==null?void 0:o.uid:c,h=l.get(t);h!=null&&h.size&&this.delElementIds(e,n,h),l.delete(t),u===t&&this.pageAuthEffect(e)}(a=this.control.collector)==null||a.dispatchPageAuth({operation:wt.deletePage,viewId:e,scenePath:n,pageId:t},!0)}delViewPage(t,e=!0){var n;this.pageAuth.get(t)&&(this.pageAuth.delete(t),e&&((n=this.control.collector)==null||n.dispatchPageAuth({operation:wt.clearView,viewId:t},e)))}clearRenderPage(t,e,r=!0){var a,c;const n=this.pageAuth.get(t);if(!n)return;const i=n.get(e);let o;if(i){const{render:l,pages:u}=i,h=l==="localSelf"?(a=this.control.collector)==null?void 0:a.uid:l;if(h){if(r){const d=u.get(h);d&&this.delElementIds(t,e,d)}u.set(h,new Set),o=h}}r&&o&&((c=this.control.collector)==null||c.dispatchPageAuth({operation:wt.clearPage,viewId:t,scenePath:e,pageId:o},r))}hasPage(t,e,r){const n=this.pageAuth.get(e);if(!n)return!1;const i=n.get(r);return i?i.pages.has(t):!1}getPageInfo(t,e,r){const n=this.pageAuth.get(e);if(!n)return;const i=n.get(r);if(i)return i.pages.get(t)}addRenderPageElementId(t,e=!0,r=!1){var u,h;const{viewId:n,elementId:i,scenePath:o}=t,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(o);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const y=f.get(g)||new Set;y.add(i),f.set(g,y),l=g}}r&&this.pageAuthEffect(n),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:wt.addElement,viewId:n,scenePath:o,pageId:l,pageData:{elementId:i}},e))}delRenderPageElementId(t,e=!0,r=!1){var u,h;const{viewId:n,elementId:i,scenePath:o}=t,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(o);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const y=f.get(g);y&&(y.delete(i),f.set(g,y),l=g)}}r&&this.pageAuthEffect(n),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:wt.deleteElement,viewId:n,scenePath:o,pageId:l,pageData:{elementId:i}},e))}setPageRender(t,e,r,n=!0){var a;const i=this.pageAuth.get(t);if(!i)throw new Error(`no view info in viewId: ${t}`);const o=i.get(e);o&&(o.render=r),e===this.control.viewContainerManager.getCurScenePath(t)&&this.pageAuthEffect(t),n||(this.isLocalRender=!0),n&&(this.isLocalRender=!1,(a=this.control.collector)==null||a.dispatchPageAuth({operation:wt.renderPage,viewId:t,scenePath:e,pageData:{render:r}},n))}isRenderAble(t){var c,l;const{uid:e,viewId:r,filterLocalSelf:n=!0,scenePath:i}=t,o=this.renderUids.get(r);if(o){const{render:u,hide:h}=o;if(u===void 0&&h===void 0)return!0;if(ve.isSet(u)){if(u.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&u.has("localSelf"))return!0}else if(u===!0&&(!h||ve.isSet(h)&&!h.has(e)&&!(n&&h.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===e)))return!0;return!1}const a=this.pageAuth.get(r);if(a&&i){const u=a.get(i);if(u){const{render:h}=u;if(h)return!(h==="localSelf"&&!n)}}return!0}isClearAble(t){var c;const{uid:e,viewId:r,filterLocalSelf:n=!0,scenePath:i}=t,o=this.renderUids.get(r);if(o){const{clear:l}=o;return!!(l===void 0||l===!0||ve.isSet(l)&&(l.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&l.has("localSelf")))}const a=this.pageAuth.get(r);if(a&&i){const l=a.get(i);if(l){const{render:u}=l;if(u)return!(u==="localSelf"&&!n)}}return!0}isFilterAble(t,e){var c,l,u,h;const{viewId:r,scenePath:n,elementId:i}=t,o=this.renderUids.get(r);if(o&&i){const{render:d,hide:f}=o;if(d===void 0&&f===void 0)return!0;const g=(c=this.control.collector)==null?void 0:c.getUidFromKey(i);return g?!!(ve.isSet(d)&&(d.has(g)||d.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===g)||d===!0&&(!f||ve.isSet(f)&&!f.has(g)&&!(f.has("localSelf")&&((u=this.control.collector)==null?void 0:u.uid)===g))):!1}const a=this.pageAuth.get(r);if(a&&n&&i){const d=a.get(n);if(d){const{render:f,pages:g}=d;if(!f)return!0;const y=(h=this.control.collector)==null?void 0:h.uid,S=f==="localSelf"?y:f,b=S&&g.get(S)||void 0;if(b)switch(e){case le.RemoveNode:return!0;default:return b.has(i)}return!1}}return!0}isFilterCursor(t){if(this.isUsePageAuth(t)){const e=this.control.viewContainerManager.getCurScenePath(t),r=this.pageAuth.get(t);if(e&&r){const n=r.get(e);if(n){const{render:i}=n;return i!=="localSelf"}}}return!0}isUsePageAuth(t){var n;if(!this.pageAuth.has(t))return!1;const r=this.control.viewContainerManager.getCurScenePath(t);return r&&((n=this.pageAuth.get(t))==null?void 0:n.has(r))||!1}publishRender(t){var o;const{viewId:e,option:r,isSync:n=!0}=t,i={};if(r){const{render:a,hide:c,clear:l}=r;a&&(i.render=a===!0&&!0||new Set(a)),c&&(i.hide=c===!0&&!0||new Set(c)),l&&(i.clear=l===!0&&!0||new Set(l)),this.renderUids.set(e,i)}else this.renderUids.delete(e);n&&((o=this.control.collector)==null||o.dispatchRenderAuth({operation:wr.setAuth,viewId:e,renderData:i},n)),this.renderEffect(e)}publishOneRender(t,e,r,n=!0){var a;const i=this.renderUids.get(t);let o;switch(r){case"show":i?(i.render||(i.render=new Set),ve.isSet(i.render)&&i.render.add(e),ve.isSet(i.hide)&&i.hide.delete(e)):this.renderUids.set(t,{render:new Set([e])}),o=wr.setShow;break;case"hide":i?(i.hide||(i.hide=new Set),ve.isSet(i.hide)&&i.hide.add(e),ve.isSet(i.render)&&i.render.delete(e)):this.renderUids.set(t,{hide:new Set([e])}),o=wr.setHide;break}i?this.renderUids.set(t,i):this.renderUids.delete(t),n&&o&&((a=this.control.collector)==null||a.dispatchRenderAuth({operation:o,viewId:t,uid:e},n)),this.renderEffect(t)}publishOneClear(t,e,r,n=!0){var o;const i=this.renderUids.get(t);r?i?(i.clear||(i.clear=new Set),ve.isSet(i.clear)&&i.clear.add(e)):this.renderUids.set(t,{clear:new Set([e])}):i&&ve.isSet(i.clear)&&i.clear.has(e)&&i.clear.delete(e),i?this.renderUids.set(t,i):this.renderUids.delete(t),n&&((o=this.control.collector)==null||o.dispatchRenderAuth({operation:wr.setClear,viewId:t,uid:e,isClear:r},n)),this.renderEffect(t)}syncRenderUids(t,e,r,n){const i=e===!0?!0:e&&Object.keys(e)?new Set(Object.keys(e)):void 0,o=r===!0?!0:r&&Object.keys(r)?new Set(Object.keys(r)):void 0,a=n===!0?!0:n&&Object.keys(n)?new Set(Object.keys(n)):void 0;i||o||a?this.renderUids.set(t,{render:i,hide:o,clear:a}):this.renderUids.delete(t),this.renderEffect(t),this.publicMsgEmitter.emit("syncRenderUids",t,{render:i,hide:o,clear:a})}syncPageAuth(t,e,r=!1){let n=!1;if(!e)this.pageAuth.delete(t);else{const i=this.pageAuth.get(t)||new Map;for(const[o,a]of Object.entries(e)){const{render:c,pages:l}=a,u=i.get(o),h=this.isLocalRender?u==null?void 0:u.render:c;if(h){h!==(u==null?void 0:u.render)&&(n=!0);const d=new Map;for(const[g,y]of Object.entries(l))d.set(g,new Set(Object.keys(y)));const f={render:h,pages:d};d.size&&i.set(o,f)}}i.size&&(this.pageAuth.set(t,i),this.publicMsgEmitter.emit("syncPageAuth",t,i))}(r||n)&&this.pageAuthEffect(t)}destoryByViewId(t,e=!1){var r;this.renderUids.has(t)&&(this.renderUids.delete(t),e||(r=this.control.collector)==null||r.dispatchRenderAuth({operation:wr.setAuth,viewId:t})),this.pageAuth.has(t)&&this.control.renderControl.delViewPage(t,!e)}renderEffect(t){var r;const e=(r=this.control.viewContainerManager.getView(t))==null?void 0:r.focusScenePath;e&&this.worker.clearViewScenePath(t,!0).then(()=>{var n;this.worker.pullServiceData(t,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(t,(n=this.renderUids.get(t))==null?void 0:n.clear)})}pageAuthEffect(t){var r;const e=(r=this.control.viewContainerManager.getView(t))==null?void 0:r.focusScenePath;e&&this.worker.clearViewScenePath(t,!0).then(()=>{this.worker.pullServiceData(t,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(t,!0)})}cloneElementIds(t,e,r,n){var a,c;const i=(a=this.control.collector)==null?void 0:a.getStorageData(t,e),o=new Set;if(i){for(const l of Object.keys(i))if(r.has(l)){const u=`${l}_${n}`;if(o.add(u),!Object.keys(i).includes(u)){const h=ve.cloneDeep(i[l]);(c=this.control.collector)==null||c.updateValue(u,{type:le.FullWork,...h,workId:u},{isSync:!0,viewId:t,scenePath:e})}}}return o}delElementIds(t,e,r){var i,o;const n=(i=this.control.collector)==null?void 0:i.getStorageData(t,e);if(n)for(const a of Object.keys(n))r.has(a)&&Object.keys(n).includes(a)&&((o=this.control.collector)==null||o.updateValue(a,void 0,{isSync:!0,viewId:t,scenePath:e}))}}class mSe{constructor(t){x(this,"internalMsgEmitter");x(this,"control");x(this,"maps",new Map);x(this,"showId");x(this,"color");x(this,"timer");x(this,"updateMiniMapCamera",ve.debounce(async t=>{const e=this.maps.get(t);if(e){const r=await this.getMiniMapCamera(t);if(r){const n=r.width/r.scale,i=r.height/r.scale,o=e.miniMapCamera.width/e.miniMapCamera.scale,a=e.miniMapCamera.height/e.miniMapCamera.scale;(n>=o||i>=a)&&(e.miniMapCamera=r);const c=e.miniMapCanvas.current;if(c){const l=c.getContext("2d");if(l){const u=this.control.viewContainerManager.getView(t);if(!(u!=null&&u.focusScenePath))return;const{miniMapCamera:h,contianer:d}=e,{width:f,height:g}=d.getBoundingClientRect(),y=Math.min(f/h.width,g/h.height);l.clearRect(0,0,c.width,c.height),c.width=h.width,c.height=h.height,c.style.width=`${h.width*y}px`,c.style.height=`${h.height*y}px`,await this.control.screenshotToCanvas(l,u.focusScenePath,h.width,h.height,h),this.listener.emitAsync([t,"viewCameraUpate"],1)}}}}},2e3,{maxWait:5e3}));var n;const{control:e,internalMsgEmitter:r}=t;this.control=e,this.internalMsgEmitter=r,this.color=((n=this.control.worker.currentToolsData)==null?void 0:n.toolsOpt.strokeColor)||"#000"}get listener(){return this.internalMsgEmitter}get activeViewId(){return this.showId}get highlightColor(){return this.color}setHighlightColor(t){this.color=t}async createMiniMap(t,e,r){const n=this.control.viewContainerManager.getView(t);if(!n)throw new Error("view not found");const i=n.cameraOpt;if(!i)throw new Error("view camera not found");const{width:o,height:a}=e.getBoundingClientRect();if(!o||!a)throw new Error("contianer width or height is 0");const c=H.createRef();this.maps.set(t,{contianer:e,miniMapCanvas:c,miniMapCamera:r,viewCamera:i}),this.showId=t,this.control.viewContainerManager.setActiveMiniMap(this.showId,!0);const l=Math.min(o/r.width,a/r.height),u=await new Promise(h=>{this.listener.once([t,"miniMapCreate"],()=>{const d=c.current;d&&(d.width=r.width,d.height=r.height,d.style.width=`${r.width*l}px`,d.style.height=`${r.height*l}px`),h(!0)}),this.timer=setTimeout(()=>{h(!1)},2e3)});return this.timer&&clearTimeout(this.timer),u}async getMiniMapCamera(t){const e=this.control.viewContainerManager.getView(t);if(!e)return;const{cameraOpt:r,focusScenePath:n}=e;if(!r||!n)return;const i={originX:r.centerX-r.width/r.scale/2,originY:r.centerY-r.height/r.scale/2,width:r.width/r.scale,height:r.height/r.scale};let o=await this.control.getBoundingRect(n)||i;o=bd(o,i)||i;let a=o.width,c=o.height,l=1;const u=a>r.width&&Math.min(r.width/a,l)||l,h=c>r.height&&Math.min(r.height/c,l)||l;return u<=h?(a=u<1&&r.width||a,c=Math.floor(c*u)+1,l=u):u>h&&(c=h<1&&r.height||c,a=Math.floor(a*h)+1,l=h),{scale:l,centerX:o.originX+o.width/2,centerY:o.originY+o.height/2,width:a,height:c}}getMiniMapCanvas(t){const e=this.maps.get(t);return(e==null?void 0:e.miniMapCanvas.current)||null}updateViewCamera(t,e){const r=this.maps.get(t);r&&(r.viewCamera=e,this.listener.emitAsync([t,"viewCameraUpate"],1))}destroyMiniMap(t){const e=t||this.showId;e&&(this.maps.delete(e),this.control.viewContainerManager.setActiveMiniMap(e,!1))}}const Ge="[Appliance]: [selector]",ySe=["bold","normal"],vSe=["italic","normal"],MSe=["top","left","right","bottom","topLeft","topRight","bottomLeft","bottomRight","leftTop","leftBottom","rightTop","rightBottom"];class wSe{constructor(t){x(this,"control");x(this,"logger");x(this,"lastSelectedIdsByView",new Map);x(this,"lastViewRectByView",new Map);x(this,"updateResolveMap",new Map);x(this,"clearResolveMap",new Map);x(this,"copyResolveMap",new Map);x(this,"deleteResolveMap",new Map);x(this,"lastRemoteSelectorByView",new Map);x(this,"cameraEmitThrottleByView",new Map);x(this,"pendingCameraChangeByView",new Map);x(this,"pendingPropertyGeometryByKey",new Map);x(this,"publicStorageHandler");x(this,"onUndoAckApplied",t=>{var a,c;const{viewId:e,scenePath:r,requestId:n,emitEventType:i}=t;if(!n)return;const o=this.copyResolveMap.get(n);!o||o.viewId!==e||i===Te.CopyNode&&(this.copyResolveMap.delete(n),o.timer&&clearTimeout(o.timer),(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,`${Ge} copySelectedElements done requestId=${n} viewId=${e} scenePath=${r} sourceCount=${o.sourceSelectedIds.length}`),o.resolve({ok:!0,requestId:n,sourceSelectedIds:o.sourceSelectedIds,createdIds:[]}))});this.control=t,this.logger=t.logger,this.bindPublicStorageListener(),this.control.internalMsgEmitter.on("undoAckApplied",this.onUndoAckApplied)}canAcceptLocalMutation(t){const e=this.control.canAcceptLocalMutation;return typeof e!="function"||e.call(this.control,t)}formatFieldsFromChanges(t){return Is(t).join("/")||"-"}hasShapeChanges(t){var e,r,n,i;return((e=t.shape)==null?void 0:e.vertices)!==void 0||((r=t.shape)==null?void 0:r.innerVerticeStep)!==void 0||((n=t.shape)==null?void 0:n.innerRatio)!==void 0||((i=t.shape)==null?void 0:i.placement)!==void 0}resolveShapeDispatchToolsTypes(t,e,r,n){if(!this.hasShapeChanges(n))return[];const i=Is(n).filter(a=>a.startsWith("shape.")),o=[];return r.forEach(a=>{const c=this.lookupToolsType(t,e,a);c&&(!n.toolsType||c===n.toolsType)&&i.some(l=>Fi(c,l))&&!o.includes(c)&&o.push(c)}),o}cancelUndoTicker(t,e,r){var i,o,a;if(!t)return;const n=r||((i=this.control.viewContainerManager)==null?void 0:i.getCurScenePath(e));n&&((a=(o=this.control.worker)==null?void 0:o.internalMsgEmitter)==null||a.emit("cancelUndoTicker",t,e,n))}resolveCancelableUndoTickerId(t,e){var r,n;return t??((n=(r=this.control.viewContainerManager)==null?void 0:r.getUndoTickerId)==null?void 0:n.call(r,e))}captureUndoTickerDuringDispatch(t){var n,i;let e;const r=(o,a)=>{a===t&&e===void 0&&(e=o)};return(i=(n=this.control.internalMsgEmitter)==null?void 0:n.on)==null||i.call(n,"addUndoTicker",r),{getUndoTickerId:()=>e,dispose:()=>{var o,a;(a=(o=this.control.internalMsgEmitter)==null?void 0:o.off)==null||a.call(o,"addUndoTicker",r)}}}destroy(){for(const[,t]of this.updateResolveMap)t.timer&&clearTimeout(t.timer),t.resolve({requestId:"",ok:!1,viewId:t.viewId,reason:"busy",selectedIds:t.selectedIds,skippedIds:t.skippedIds.length?t.skippedIds:void 0,warnings:t.warnings.length?t.warnings:void 0,geometryChanged:t.geometryChanged});this.updateResolveMap.clear();for(const[,t]of this.clearResolveMap)t.timer&&clearTimeout(t.timer),t.resolve({ok:!1,requestId:"",reason:"busy"});this.clearResolveMap.clear();for(const[,t]of this.copyResolveMap)t.timer&&clearTimeout(t.timer),t.resolve({ok:!1,requestId:"",reason:"busy"});this.copyResolveMap.clear();for(const[,t]of this.deleteResolveMap)t.timer&&clearTimeout(t.timer),t.resolve({ok:!1,requestId:"",reason:"busy"});this.deleteResolveMap.clear();for(const[,t]of this.pendingPropertyGeometryByKey)t.timer&&clearTimeout(t.timer);this.pendingPropertyGeometryByKey.clear(),this.control.internalMsgEmitter.off("undoAckApplied",this.onUndoAckApplied),this.unbindPublicStorageListener()}disposeView(t){var r;for(const[n,i]of this.updateResolveMap)i.viewId===t&&(i.timer&&clearTimeout(i.timer),i.resolve({requestId:"",ok:!1,viewId:t,reason:"busy",selectedIds:i.selectedIds,skippedIds:i.skippedIds.length?i.skippedIds:void 0,warnings:i.warnings.length?i.warnings:void 0,geometryChanged:i.geometryChanged}),this.updateResolveMap.delete(n));for(const[n,i]of this.clearResolveMap)i.viewId===t&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.clearResolveMap.delete(n));for(const[n,i]of this.copyResolveMap)i.viewId===t&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.copyResolveMap.delete(n));for(const[n,i]of this.deleteResolveMap)i.viewId===t&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.deleteResolveMap.delete(n));const e=this.cameraEmitThrottleByView.get(t);(r=e==null?void 0:e.cancel)==null||r.call(e),this.cameraEmitThrottleByView.delete(t),this.clearPendingCameraChange(t),this.lastSelectedIdsByView.delete(t),this.lastViewRectByView.delete(t),this.lastRemoteSelectorByView.delete(t);for(const[n,i]of this.pendingPropertyGeometryByKey)i.viewId===t&&(i.timer&&clearTimeout(i.timer),this.pendingPropertyGeometryByKey.delete(n))}resolveViewId(t){const e=this.control.viewContainerManager;return t||(e==null?void 0:e.focuedViewId)||Fe}getSelectedElements(t){var u,h,d;const e=this.resolveViewId(t);if(!e)return;const r=this.control.viewContainerManager,n=r==null?void 0:r.getView(e);if(!n)return;const i=(d=(h=(u=n.displayer)==null?void 0:u.vDom)==null?void 0:h.state)==null?void 0:d.floatBarData,o=(i==null?void 0:i.selectIds)??[],a=i&&ve.isNumber(i.x)&&ve.isNumber(i.y)&&ve.isNumber(i.w)&&ve.isNumber(i.h)?{x:i.x,y:i.y,w:i.w,h:i.h}:void 0,c=n.focusScenePath,l=[];for(const f of o){const g=this.buildSelectedElementInfo(e,c,f,i);g&&l.push(g)}return{viewId:e,scenePath:c,viewRect:a,selectedIds:o,selectedElements:l}}isElementPropertySupported(t,e){return Fi(t,e)}async blurSelector(t){var c,l,u,h,d,f,g,y,S;const e=this.genRequestId("clear"),r=this.resolveViewId(t);if(!r)return(l=(c=this.logger)==null?void 0:c.warn)==null||l.call(c,`${Ge} blurSelector rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(r))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(r),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(h=(u=this.logger)==null?void 0:u.warn)==null||h.call(u,`${Ge} blurSelector rejected: no-selection requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(r);if(o)return(f=(d=this.logger)==null?void 0:d.warn)==null||f.call(d,`${Ge} blurSelector rejected: ${o} requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:o};(y=(g=this.logger)==null?void 0:g.info)==null||y.call(g,`${Ge} blurSelector request requestId=${e} viewId=${r} selectedCount=${i.length}`);const a=(n==null?void 0:n.scenePath)||((S=this.control.viewContainerManager)==null?void 0:S.getCurScenePath(r));return new Promise(b=>{var N,T,p;const C=setTimeout(()=>{var m,v;this.clearResolveMap.has(e)&&(this.clearResolveMap.delete(e),(v=(m=this.logger)==null?void 0:m.warn)==null||v.call(m,`${Ge} blurSelector timeout requestId=${e} viewId=${r}`),b({ok:!1,requestId:e,reason:"busy"}))},5e3);this.clearResolveMap.set(e,{timer:C,resolve:b,viewId:r});try{(N=this.control.worker)==null||N.blurSelector(r,a||"",Le)}catch(m){this.clearResolveMap.delete(e),clearTimeout(C),(p=(T=this.logger)==null?void 0:T.error)==null||p.call(T,`${Ge} blurSelector failed requestId=${e} viewId=${r} err=${m==null?void 0:m.message}`),b({ok:!1,requestId:e,reason:"busy"})}})}async updateSelectedElements(t,e){var b,C,N,T,p,m,v,M,R,E,P,k,O,B;const r=this.genRequestId("update"),n=this.resolveViewId(t),i=e||{};if(!n)return(C=(b=this.logger)==null?void 0:b.warn)==null||C.call(b,`${Ge} updateSelectedElements rejected: no-view requestId=${r}`),{requestId:r,viewId:"",ok:!1,reason:"no-selection"};if(!this.canAcceptLocalMutation(n))return{requestId:r,viewId:n,ok:!1,reason:"busy"};const o=this.getSelectedElements(n),a=(o==null?void 0:o.selectedIds)??[];if(!a.length)return(T=(N=this.logger)==null?void 0:N.warn)==null||T.call(N,`${Ge} updateSelectedElements rejected: no-selection requestId=${r} viewId=${n}`),{requestId:r,viewId:n,ok:!1,reason:"no-selection",selectedIds:a};const c=this.detectSelectorTransforming(n);if(c)return(m=(p=this.logger)==null?void 0:p.warn)==null||m.call(p,`${Ge} updateSelectedElements rejected: ${c} requestId=${r} viewId=${n}`),{requestId:r,viewId:n,ok:!1,reason:c,selectedIds:a};if(!Object.keys(i).some(D=>i[D]!==void 0))return(M=(v=this.logger)==null?void 0:v.warn)==null||M.call(v,`${Ge} updateSelectedElements rejected: unsupported-change requestId=${r} viewId=${n}`),{requestId:r,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a};const u=[],h=[],d=[];let f={...i};for(const D of a){const A=this.lookupToolsType(n,o==null?void 0:o.scenePath,D);if(!A){h.push(D);continue}const L=this.validateStrokeTypeForChanges(D,f,A,u);L.strokeType!==f.strokeType&&(f=L)}if(f.strokeType!==void 0){const D=a.map(L=>this.lookupToolsType(n,o==null?void 0:o.scenePath,L)).filter(L=>!!L&&Fi(L,"strokeType"));D.length>0?f.strokeType===Be.Stroke&&(D.every(U=>U===Q.Pencil)||(delete f.strokeType,u.push({id:a.join(","),field:"strokeType",code:"unsupported-by-toolsType",message:"strokeType=Stroke requires all strokeType-capable selected elements to be Pencil"}))):delete f.strokeType}if(!this.collectPendingMethods(f).size)return this.flushUpdateSelectedElementsWarnings(n,r,u),(E=(R=this.logger)==null?void 0:R.warn)==null||E.call(R,`${Ge} updateSelectedElements no-valid-fields requestId=${r} viewId=${n} warnings=${u.length}`),{requestId:r,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0};const y=Is(f);for(const D of a){const A=this.lookupToolsType(n,o==null?void 0:o.scenePath,D),L=this.hasShapeChanges(f)&&!!f.toolsType&&A!==f.toolsType;this.hasApplicableChangesForToolsType(f,A)?d.push(D):h.includes(D)||(h.push(D),A&&y.length&&u.push({id:D,field:y.join(","),code:"unsupported-by-toolsType",toolsType:A,message:L?`selected element id=${D} toolsType=${A} skipped by requested toolsType=${f.toolsType}`:`selected element id=${D} toolsType=${A} does not support requested fields=[${y.join(",")}]`}))}const S=this.resolveShapeDispatchToolsTypes(n,o==null?void 0:o.scenePath,d,f);return d.length?((B=(O=this.logger)==null?void 0:O.info)==null||B.call(O,`${Ge} updateSelectedElements request requestId=${r} viewId=${n} scenePath=${(o==null?void 0:o.scenePath)||"-"} selectedCount=${a.length} fields=[${this.formatFieldsFromChanges(i)}]`),this.flushUpdateSelectedElementsWarnings(n,r,u),new Promise(D=>{var U,Y;const A=setTimeout(()=>{var ie,z;const q=this.updateResolveMap.get(r);q&&(this.updateResolveMap.delete(r),(z=(ie=this.logger)==null?void 0:ie.warn)==null||z.call(ie,`${Ge} updateSelectedElements timeout requestId=${r} viewId=${n}`),D({requestId:r,viewId:n,ok:!1,reason:"worker-failed",selectedIds:q.selectedIds,skippedIds:q.skippedIds.length?q.skippedIds:void 0,warnings:q.warnings.length?q.warnings:void 0,geometryChanged:q.geometryChanged}))},8e3);this.updateResolveMap.set(r,{timer:A,resolve:D,viewId:n,selectedIds:a,appliedIds:d,skippedIds:h,warnings:u,geometryChanged:!1});const L=this.captureUndoTickerDuringDispatch(n);try{this.dispatchUpdate(n,[Le],f,r,S)}catch(q){this.updateResolveMap.delete(r),clearTimeout(A),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(L.getUndoTickerId(),n),n,o==null?void 0:o.scenePath),(Y=(U=this.logger)==null?void 0:U.error)==null||Y.call(U,`${Ge} updateSelectedElements dispatch failed requestId=${r} viewId=${n} err=${q==null?void 0:q.message}`),D({requestId:r,viewId:n,ok:!1,reason:"worker-failed",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0})}finally{L.dispose()}})):(this.flushUpdateSelectedElementsWarnings(n,r,u),(k=(P=this.logger)==null?void 0:P.warn)==null||k.call(P,`${Ge} updateSelectedElements rejected: no-applicable-selection requestId=${r} viewId=${n}`),{requestId:r,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0})}async copySelectedElements(t){var a,c,l,u,h,d,f,g;const e=this.genRequestId("copy"),r=this.resolveViewId(t);if(!r)return(c=(a=this.logger)==null?void 0:a.warn)==null||c.call(a,`${Ge} copySelectedElements rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(r))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(r),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(u=(l=this.logger)==null?void 0:l.warn)==null||u.call(l,`${Ge} copySelectedElements rejected: no-selection requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(r);return o?((d=(h=this.logger)==null?void 0:h.warn)==null||d.call(h,`${Ge} copySelectedElements rejected: ${o} requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:o}):((g=(f=this.logger)==null?void 0:f.info)==null||g.call(f,`${Ge} copySelectedElements request requestId=${e} viewId=${r} scenePath=${(n==null?void 0:n.scenePath)||"-"} selectedCount=${i.length}`),new Promise(y=>{var C,N;const S=setTimeout(()=>{var T,p;this.copyResolveMap.has(e)&&(this.copyResolveMap.delete(e),(p=(T=this.logger)==null?void 0:T.warn)==null||p.call(T,`${Ge} copySelectedElements timeout requestId=${e} viewId=${r}`),y({ok:!1,requestId:e,reason:"busy"}))},5e3);this.copyResolveMap.set(e,{timer:S,resolve:y,viewId:r,sourceSelectedIds:i});const b=this.captureUndoTickerDuringDispatch(r);try{Ve.emitMethod(We.MainEngine,Te.CopyNode,{workIds:[Le],viewId:r,requestId:e})}catch(T){this.copyResolveMap.delete(e),clearTimeout(S),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(b.getUndoTickerId(),r),r,n==null?void 0:n.scenePath),(N=(C=this.logger)==null?void 0:C.error)==null||N.call(C,`${Ge} copySelectedElements failed requestId=${e} viewId=${r} err=${T==null?void 0:T.message}`),y({ok:!1,requestId:e,reason:"busy"})}finally{b.dispose()}}))}async deleteSelectedElements(t){var a,c,l,u,h,d,f,g;const e=this.genRequestId("delete"),r=this.resolveViewId(t);if(!r)return(c=(a=this.logger)==null?void 0:a.warn)==null||c.call(a,`${Ge} deleteSelectedElements rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(r))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(r),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(u=(l=this.logger)==null?void 0:l.warn)==null||u.call(l,`${Ge} deleteSelectedElements rejected: no-selection requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(r);return o?((d=(h=this.logger)==null?void 0:h.warn)==null||d.call(h,`${Ge} deleteSelectedElements rejected: ${o} requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:o}):((g=(f=this.logger)==null?void 0:f.info)==null||g.call(f,`${Ge} deleteSelectedElements request requestId=${e} viewId=${r} scenePath=${(n==null?void 0:n.scenePath)||"-"} selectedCount=${i.length}`),new Promise(y=>{var C,N;const S=setTimeout(()=>{var T,p;this.deleteResolveMap.has(e)&&(this.deleteResolveMap.delete(e),(p=(T=this.logger)==null?void 0:T.warn)==null||p.call(T,`${Ge} deleteSelectedElements timeout requestId=${e} viewId=${r}`),y({ok:!1,requestId:e,reason:"busy"}))},5e3);this.deleteResolveMap.set(e,{timer:S,resolve:y,viewId:r,removedIds:i.slice()});const b=this.captureUndoTickerDuringDispatch(r);try{Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:[Le],viewId:r,requestId:e})}catch(T){this.deleteResolveMap.delete(e),clearTimeout(S),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(b.getUndoTickerId(),r),r,n==null?void 0:n.scenePath),(N=(C=this.logger)==null?void 0:C.error)==null||N.call(C,`${Ge} deleteSelectedElements failed requestId=${e} viewId=${r} err=${T==null?void 0:T.message}`),y({ok:!1,requestId:e,reason:"busy"})}finally{b.dispose()}}))}async updateElement(t,e,r,n,i=!0){var g,y,S,b,C,N,T,p,m,v,M,R,E;if(!this.canAcceptLocalMutation(r))return!1;const o=this.control.collector,a=this.control.worker;if(!o||!a||!t||!e||!r||!n)return(y=(g=this.logger)==null?void 0:g.warn)==null||y.call(g,`${Ge} updateElement ignored: invalid-args viewId=${r||"-"} scenePath=${e||"-"} elementId=${t||"-"}`),!1;const c=(S=o.isLocalId)!=null&&S.call(o,t)&&typeof o.transformKey=="function"?o.transformKey(t):t;if((b=o.isSelector)!=null&&b.call(o,c))return(N=(C=this.logger)==null?void 0:C.warn)==null||N.call(C,`${Ge} updateElement ignored: selector-not-allowed viewId=${r} scenePath=${e}`),!1;let l=(m=(p=(T=o.storage)==null?void 0:T[r])==null?void 0:p[e])==null?void 0:m[c];if(!l)return(M=(v=this.logger)==null?void 0:v.warn)==null||M.call(v,`${Ge} updateElement ignored: not-found viewId=${r} scenePath=${e} elementId=${t}`),!1;const u=l.toolsType;if(!u||n.toolsType!==u)return(E=(R=this.logger)==null?void 0:R.warn)==null||E.call(R,`${Ge} updateElement ignored: toolsType-mismatch viewId=${r} scenePath=${e} elementId=${t} declared=${n.toolsType} actual=${u}`),!1;const h=this.normalizeUpdateElementInfo(n,u),d=this.buildUpdatedElementValue(l,h),f=a.now;return i&&(a.internalMsgEmitter.emit("addUndoTicker",f,r,{render:!0,storage:!0,source:$e.AsyncUpdateElement}),a.internalMsgEmitter.emit("finalizeRequested",f,r,[c],e)),await new Promise(P=>{Nr(()=>{var O,B;if(!this.canAcceptLocalMutation(r)){i&&this.cancelUndoTicker(f,r,e),P(!1);return}const k=o.plugin;k==null||k.updateAttributes([en.namespace,r,e,c],d),i&&(a.internalMsgEmitter.emit("ackRenderUndoTicker",f,r,e),a.internalMsgEmitter.emit("ackStorageUndoTicker",f,r,e,c)),P(!0),(B=(O=this.logger)==null?void 0:O.info)==null||B.call(O,`${Ge} updateElement notify viewId=${r} scenePath=${e} elementId=${t} toolsType=${u} fields=[${Is(h).join("/")||"-"}]`)},0,this.control.hasPolyfillMethod("requestIdleCallback")).catch(k=>{var O,B;this.cancelUndoTicker(f,r,e),(B=(O=this.logger)==null?void 0:O.warn)==null||B.call(O,`${Ge} updateElement err: ${k.message??"has unknown error"} viewId=${r} scenePath=${e} elementId=${t}`),P(!1)})})}onSelectorTransform(t){var a,c;const{viewId:e,emitEventType:r,workState:n}=t;this.control.publicMsgEmitter.emit("selectorTransformChange",t);const i=`${Ge} selectorTransformChange viewId=${e} emitEventType=${r} workState=${n}`,o=this.getDebounceLogger();o!=null&&o.infoDebounced?o.infoDebounced(`selector-transform-change:${e}`,i):(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,i)}onSelectorSync(t){var y,S,b,C;const{viewId:e,scenePath:r,selectIds:n,selectRect:i,selectorInfo:o}=t,a=n&&n.slice().sort()||[],c=this.lastSelectedIdsByView.get(e)||[],l=!this.isArrayEqual(a,c),u=i&&ve.isNumber(i.x)&&ve.isNumber(i.y)&&ve.isNumber(i.w)&&ve.isNumber(i.h)?{x:i.x,y:i.y,w:i.w,h:i.h}:void 0,d=!!this.pendingCameraChangeByView.get(e)&&!l&&!!(n!=null&&n.length);if(l){const N=this.getSelectedElements(e),T={viewId:e,scenePath:r,selectorId:Le,reason:n!=null&&n.length?"select":"clear",viewRect:u,selectedIds:(N==null?void 0:N.selectedIds)??n??[],selectorInfo:o};this.lastSelectedIdsByView.set(e,a),this.control.publicMsgEmitter.emit("selectedElementsChange",T);const p=`${Ge} selectedElementsChange reason=${T.reason} viewId=${e} count=${T.selectedIds.length}`,m=this.getDebounceLogger();m!=null&&m.infoDebounced?m.infoDebounced(`selected-elements-change:${e}`,p):(S=(y=this.logger)==null?void 0:y.info)==null||S.call(y,p)}const f=this.lastViewRectByView.get(e),g=!this.isRectEqual(f,u);if(g||l){let N="selector-action",T=n!=null&&n.length?"select":"clear";d&&g?(N="camera-change",T="cameraTransform"):g&&!l&&(n!=null&&n.length)&&(T="selectorTransform"),this.lastViewRectByView.set(e,u);const p={viewId:e,scenePath:r,selectorId:Le,source:N,action:T,viewRect:u};this.control.publicMsgEmitter.emit("selectorGeometryChange",p),this.logGeometry(e,T,(n==null?void 0:n.length)||0),N==="camera-change"&&this.clearPendingCameraChange(e)}if(!(n!=null&&n.length)&&l)for(const[N,T]of this.clearResolveMap.entries())T.viewId===e&&(this.clearResolveMap.delete(N),T.timer&&clearTimeout(T.timer),(C=(b=this.logger)==null?void 0:b.info)==null||C.call(b,`${Ge} blurSelector done requestId=${N} viewId=${e}`),T.resolve({ok:!0,requestId:N}))}onSelectorCleared(t){var a,c,l,u;const{viewId:e,scenePath:r,requestId:n}=t;if((this.lastSelectedIdsByView.get(e)||[]).length){const h={viewId:e,scenePath:r,selectorId:Le,reason:"clear",viewRect:void 0,selectedIds:[]};this.lastSelectedIdsByView.set(e,[]),this.control.publicMsgEmitter.emit("selectedElementsChange",h);const d=`${Ge} selectedElementsChange reason=clear viewId=${e} requestId=${n||"-"}`,f=this.logger;f!=null&&f.infoDebounced?f.infoDebounced(`selected-elements-change:${e}`,d):(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,d)}if(this.lastViewRectByView.get(e)){const h={viewId:e,scenePath:r,selectorId:Le,source:"selector-action",action:"clear",viewRect:void 0,requestId:n};this.lastViewRectByView.set(e,void 0),this.control.publicMsgEmitter.emit("selectorGeometryChange",h),this.logGeometry(e,"clear",0)}if(n&&this.clearResolveMap.has(n)){const h=this.clearResolveMap.get(n);this.clearResolveMap.delete(n),h.timer&&clearTimeout(h.timer),(u=(l=this.logger)==null?void 0:l.info)==null||u.call(l,`${Ge} blurSelector done requestId=${n} viewId=${e}`),h.resolve({ok:!0,requestId:n})}}onCameraChange(t){const e=this.getSelectedElements(t);if(!(e!=null&&e.selectedIds.length)){this.clearPendingCameraChange(t);return}this.setPendingCameraChange(t,{ts:Date.now(),viewRect:e.viewRect,selectedIds:e.selectedIds.slice()});let r=this.cameraEmitThrottleByView.get(t);r||(r=ve.throttle(n=>this.emitCameraGeometry(n),60,{leading:!0,trailing:!0}),this.cameraEmitThrottleByView.set(t,r)),r(t)}emitCameraGeometry(t){const e=this.getSelectedElements(t);if(!e||!e.selectedIds.length||!e.viewRect){this.clearPendingCameraChange(t);return}const r=this.lastViewRectByView.get(t);if(this.isRectEqual(r,e.viewRect))return;this.lastViewRectByView.set(t,e.viewRect);const n={viewId:t,scenePath:e.scenePath,selectorId:Le,source:"camera-change",action:"cameraTransform",viewRect:e.viewRect};this.control.publicMsgEmitter.emit("selectorGeometryChange",n),this.logGeometry(t,"cameraTransform",e.selectedIds.length),this.clearPendingCameraChange(t)}bindPublicStorageListener(){this.publicStorageHandler||(this.publicStorageHandler=t=>this.onSyncStorageChange(t),this.control.publicMsgEmitter.on("syncStorageChange",this.publicStorageHandler))}unbindPublicStorageListener(){this.publicStorageHandler&&(this.control.publicMsgEmitter.off("syncStorageChange",this.publicStorageHandler),this.publicStorageHandler=void 0)}tryResolveUpdateElements(t,e,r,n){var o,a;if(!e)return;const i=this.updateResolveMap.get(e);!i||i.viewId!==t||(i.geometryChanged=i.geometryChanged||n,this.updateResolveMap.delete(e),i.timer&&clearTimeout(i.timer),(a=(o=this.logger)==null?void 0:o.info)==null||a.call(o,`${Ge} updateSelectedElements done requestId=${e} viewId=${t} type=${r} geometryChanged=${i.geometryChanged} applied=${i.appliedIds.length}`),i.resolve({requestId:e,viewId:t,ok:!0,selectedIds:i.selectedIds,appliedIds:i.appliedIds,skippedIds:i.skippedIds.length?i.skippedIds:void 0,warnings:i.warnings.length?i.warnings:void 0,geometryChanged:i.geometryChanged}))}onRemoveNodeApplied(t){var i,o;const{viewId:e,requestId:r,removeIds:n}=t;if(r){const a=this.deleteResolveMap.get(r);if(a&&a.viewId===e){const c=n!=null&&n.length?n:a.removedIds;this.deleteResolveMap.delete(r),a.timer&&clearTimeout(a.timer),(o=(i=this.logger)==null?void 0:i.info)==null||o.call(i,`${Ge} deleteSelectedElements done requestId=${r} viewId=${e} removedCount=${c.length}`),a.resolve({ok:!0,requestId:r,removedIds:c});return}}}onSyncStorageChange(t){var n,i,o;if(!t||typeof t!="object")return;const e=this.control.collector;if(!e)return;const r=e.uid;for(const[a,c]of Object.entries(t)){if(!c)continue;let l=this.lastRemoteSelectorByView.get(a);l||(l=new Map,this.lastRemoteSelectorByView.set(a,l));const u=new Set;for(const[h,d]of Object.entries(c))if(d)for(const[f,g]of Object.entries(d)){if(((n=e.isLocalId)!=null&&n.call(e,f)?f:((i=e.getLocalId)==null?void 0:i.call(e,f))??f)!==Le)continue;const S=((o=e.getUidFromKey)==null?void 0:o.call(e,f))??(f.split(Bt)[0]||"");!S||S===r||(u.add(S),this.handleRemoteSelectorState(a,h,S,f,g,l))}for(const h of[...l.keys()]){if(u.has(h))continue;const d=l.get(h);if(!d||!d.selectedIds.length){l.delete(h);continue}this.handleRemoteSelectorState(a,"",h,`${h}${Bt}${Le}`,void 0,l)}}}handleRemoteSelectorState(t,e,r,n,i,o){var g;const a=o.get(r)||{selectedIds:[]};let c="update",l=[],u;if(i){const y=i,S=(y.selectIds||[]).slice().sort(),b=a.selectedIds,C=!this.isArrayEqual(S,b);!b.length&&S.length?c="select":C&&!S.length?c="clear":c=C?"select":"update",l=y.selectIds||[];const N=y.selectRect||y.rect||((g=y.updateNodeOpt)==null?void 0:g.rect);N&&ve.isNumber(N.x)&&ve.isNumber(N.y)&&ve.isNumber(N.w)&&ve.isNumber(N.h)&&(u={x:N.x,y:N.y,w:N.w,h:N.h})}else{if(!a.selectedIds.length)return;c="clear",l=[],u=void 0}const h=!this.isRectEqual(a.viewRect,u);if(!!this.isArrayEqual(a.selectedIds,l)&&!h)return;o.set(r,{selectedIds:l,viewRect:u});const f={viewId:t,scenePath:e,uid:r,selectorId:n,source:"sync",action:c,viewRect:u,selectedIds:l,selectedElements:this.buildRemoteSelectedElements(t,e,r,l)};this.control.publicMsgEmitter.emit("remoteSelectorChange",f),this.logRemoteSelector(t,r,c,l.length)}logRemoteSelector(t,e,r,n){var a,c;const i=`${Ge} remoteSelectorChange uid=${e} action=${r} viewId=${t} count=${n}`,o=this.getDebounceLogger();if(o!=null&&o.infoDebounced){o.infoDebounced(`remote-selector:${t}@${e}`,i);return}(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,i)}genRequestId(t){return`${t}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}setPendingCameraChange(t,e){this.clearPendingCameraChange(t);const r=setTimeout(()=>{const n=this.pendingCameraChangeByView.get(t);(n==null?void 0:n.ts)===e.ts&&this.pendingCameraChangeByView.delete(t)},400);this.pendingCameraChangeByView.set(t,{...e,timer:r})}clearPendingCameraChange(t){const e=this.pendingCameraChangeByView.get(t);e!=null&&e.timer&&clearTimeout(e.timer),this.pendingCameraChangeByView.delete(t)}getDebounceLogger(){return this.logger}detectSelectorTransforming(t){var l,u,h,d,f;const e=this.control.worker;if(!e)return null;const r=(l=e.getLocalWorkViewId)==null?void 0:l.call(e),n=e.isLocalWorkActive===!0&&r===t,i=(u=e.currentLocalWorkData)==null?void 0:u.workState,o=(f=(d=(h=this.control.viewContainerManager.getView(t))==null?void 0:h.displayer)==null?void 0:d.vDom)==null?void 0:f.state,a=o==null?void 0:o.operationType,c=a===Te.TranslateNode||a===Te.ScaleNode||a===Te.RotateNode||a===Te.SetPoint;return n&&c&&i&&i!==he.Pending&&i!==he.Done||n&&c?"selector-transforming":e.isBusy===!0?"busy":null}isArrayEqual(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}isRectEqual(t,e){return!t&&!e?!0:!t||!e?!1:t.x===e.x&&t.y===e.y&&t.w===e.w&&t.h===e.h}onPropertyApplied(t){const{type:e,viewId:r,requestId:n,data:i}=t,o=e===Te.SetFontStyle&&i.fontSize!==void 0||e===Te.SetColorNode&&i.thickness!==void 0;this.tryResolveUpdateElements(r,n,e,o),o&&this.schedulePropertyGeometryEmit(r,e,n)}schedulePropertyGeometryEmit(t,e,r){const n=r?`property-geometry:${t}:${e}:${r}`:`property-geometry:${t}:${e}`,i=this.pendingPropertyGeometryByKey.get(n);i!=null&&i.timer&&clearTimeout(i.timer);const o=setTimeout(()=>{this.pendingPropertyGeometryByKey.delete(n);const a=this.getSelectedElements(t);if(!a||!a.selectedIds.length)return;const c=e===Te.SetFontStyle?"setFontStyle":"setStyle",l={viewId:t,scenePath:a.scenePath,selectorId:Le,source:"property-change",action:c,viewRect:a.viewRect,requestId:r};this.lastViewRectByView.set(t,a.viewRect),this.control.publicMsgEmitter.emit("selectorGeometryChange",l),this.logGeometry(t,c,a.selectedIds.length)},0);this.pendingPropertyGeometryByKey.set(n,{timer:o,viewId:t,type:e,requestId:r})}lookupToolsType(t,e,r){var a,c,l,u;const n=this.control.collector;if(!n)return;const i=(a=n.isLocalId)!=null&&a.call(n,r)&&typeof n.transformKey=="function"?n.transformKey(r):r,o=(u=(l=(c=n.storage)==null?void 0:c[t])==null?void 0:l[e||""])==null?void 0:u[i];return o==null?void 0:o.toolsType}validateStrokeTypeForChanges(t,e,r,n){return e.strokeType===void 0?e:z0(e.strokeType)?(Fp(r,e.strokeType)||n.push({id:t,field:"strokeType",code:"unsupported-by-toolsType",toolsType:r,message:`strokeType not supported by toolsType=${r} for id=${t}, skipped`}),e):(n.push({id:t,field:"strokeType",code:"unsupported-value",toolsType:r,message:`strokeType=${e.strokeType} is not a valid EStrokeType for id=${t}, skipped`}),e)}flushUpdateSelectedElementsWarnings(t,e,r){var o,a,c,l;if(!r.length)return;const n=new Map,i=new Map;for(const u of r)if(u.code==="unsupported-by-toolsType"){const h=n.get(u.field)||{ids:[],toolsTypes:[]};h.ids.push(u.id),h.toolsTypes.push(u.toolsType),n.set(u.field,h)}else if(u.code==="unsupported-value"){const h=i.get(u.field)||[];h.push(u.id),i.set(u.field,h)}for(const[u,h]of n.entries()){const d=[...new Set(h.toolsTypes.filter(Boolean))].join(","),f=[...new Set(h.ids)].join(",");(a=(o=this.logger)==null?void 0:o.warn)==null||a.call(o,`${Ge} updateSelectedElements warn unsupported-by-toolsType requestId=${e} viewId=${t} field=${u} toolsTypes=[${d}] ids=[${f}]`)}for(const[u,h]of i.entries())(l=(c=this.logger)==null?void 0:c.warn)==null||l.call(c,`${Ge} updateSelectedElements warn unsupported-value requestId=${e} viewId=${t} field=${u} ids=[${[...new Set(h)].join(",")}]`)}collectPendingMethods(t){var r,n,i,o;const e=new Set;return(t.strokeColor!==void 0||t.fillColor!==void 0||t.fontColor!==void 0||t.fontBgColor!==void 0||t.thickness!==void 0||t.strokeType!==void 0)&&e.add(Te.SetColorNode),(t.fontSize!==void 0||t.bold!==void 0||t.italic!==void 0||t.underline!==void 0||t.lineThrough!==void 0)&&e.add(Te.SetFontStyle),t.isLocked!==void 0&&e.add(Te.SetLock),t.zIndexLayer!==void 0&&e.add(Te.ZIndexNode),(((r=t.shape)==null?void 0:r.vertices)!==void 0||((n=t.shape)==null?void 0:n.innerVerticeStep)!==void 0||((i=t.shape)==null?void 0:i.innerRatio)!==void 0||((o=t.shape)==null?void 0:o.placement)!==void 0)&&e.add(Te.SetShapeOpt),e}hasApplicableChangesForToolsType(t,e){return e?Is(t).some(r=>r.startsWith("shape.")&&t.toolsType&&e!==t.toolsType?!1:Fi(e,r)):!1}buildUpdatedElementValue(t,e){var o,a,c,l;const r=e,n={...t,opt:t.opt?{...t.opt}:void 0},i=n.opt||{};return r.strokeColor!==void 0&&(i.strokeColor=r.strokeColor),r.fillColor!==void 0&&(i.fillColor=r.fillColor),r.thickness!==void 0&&(i.thickness=r.thickness),r.strokeType!==void 0&&(i.strokeType=r.strokeType),r.fontColor!==void 0&&(i.fontColor=r.fontColor),r.fontBgColor!==void 0&&(i.fontBgColor=r.fontBgColor),r.fontSize!==void 0&&(i.fontSize=r.fontSize),r.bold!==void 0&&(i.bold=r.bold),r.italic!==void 0&&(i.italic=r.italic),r.underline!==void 0&&(i.underline=r.underline),r.lineThrough!==void 0&&(i.lineThrough=r.lineThrough),r.isLocked!==void 0&&(i.locked=r.isLocked),((o=r.shape)==null?void 0:o.vertices)!==void 0&&(i.vertices=r.shape.vertices),((a=r.shape)==null?void 0:a.innerVerticeStep)!==void 0&&(i.innerVerticeStep=r.shape.innerVerticeStep),((c=r.shape)==null?void 0:c.innerRatio)!==void 0&&(i.innerRatio=r.shape.innerRatio),((l=r.shape)==null?void 0:l.placement)!==void 0&&(i.placement=r.shape.placement),n.opt=i,r.zIndexLayer!==void 0&&(n.updateNodeOpt={...n.updateNodeOpt||{},zIndexLayer:r.zIndexLayer}),n}normalizeUpdateElementInfo(t,e){var d,f;const r={...t},n=[],i=g=>{var y,S;g in r&&(delete r[g],n.push(g),(S=(y=this.logger)==null?void 0:y.warn)==null||S.call(y,`${Ge} updateElement warn unsupported-by-toolsType toolsType=${e} field=${g}`))},o=g=>{var y,S;r.shape&&g in r.shape&&(delete r.shape[g],n.push(`shape.${g}`),(S=(y=this.logger)==null?void 0:y.warn)==null||S.call(y,`${Ge} updateElement warn unsupported-by-toolsType toolsType=${e} field=shape.${g}`)),r.shape&&!Object.keys(r.shape).length&&delete r.shape},a=g=>{var y,S;g in r&&(n.push(g),(S=(y=this.logger)==null?void 0:y.warn)==null||S.call(y,`${Ge} updateElement warn invalid-format toolsType=${e} field=${g} value=${JSON.stringify(r[g])}`),delete r[g])},c=g=>{var y,S;!r.shape||!(g in r.shape)||(n.push(`shape.${g}`),(S=(y=this.logger)==null?void 0:y.warn)==null||S.call(y,`${Ge} updateElement warn invalid-format toolsType=${e} field=shape.${g} value=${JSON.stringify(r.shape[g])}`),delete r.shape[g],Object.keys(r.shape).length||delete r.shape)};"strokeColor"in r&&typeof r.strokeColor!="string"&&a("strokeColor"),"fillColor"in r&&typeof r.fillColor!="string"&&a("fillColor"),"fontColor"in r&&typeof r.fontColor!="string"&&a("fontColor"),"fontBgColor"in r&&typeof r.fontBgColor!="string"&&a("fontBgColor"),"thickness"in r&&!Number.isFinite(r.thickness)&&a("thickness"),"fontSize"in r&&!Number.isFinite(r.fontSize)&&a("fontSize"),"strokeType"in r&&!Object.values(Be).includes(r.strokeType)&&a("strokeType"),"strokeType"in r&&r.strokeType!==void 0&&!Fp(e,r.strokeType)&&i("strokeType"),"bold"in r&&!ySe.includes(r.bold)&&a("bold"),"italic"in r&&!vSe.includes(r.italic)&&a("italic"),"underline"in r&&typeof r.underline!="boolean"&&a("underline"),"lineThrough"in r&&typeof r.lineThrough!="boolean"&&a("lineThrough"),"isLocked"in r&&typeof r.isLocked!="boolean"&&a("isLocked"),"zIndexLayer"in r&&![bn.Top,bn.Bottom].includes(r.zIndexLayer)&&a("zIndexLayer"),r.shape&&("vertices"in r.shape&&!Number.isFinite(r.shape.vertices)&&c("vertices"),"innerVerticeStep"in r.shape&&!Number.isFinite(r.shape.innerVerticeStep)&&c("innerVerticeStep"),"innerRatio"in r.shape&&!Number.isFinite(r.shape.innerRatio)&&c("innerRatio"),"placement"in r.shape&&!MSe.includes(r.shape.placement)&&c("placement"));const l=new Set(sve(e));return["strokeColor","fillColor","thickness","strokeType","fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough","isLocked","zIndexLayer"].forEach(g=>{l.has(g)||i(g)}),["vertices","innerVerticeStep","innerRatio","placement"].forEach(g=>{l.has(`shape.${g}`)||o(g)}),n.length&&((f=(d=this.logger)==null?void 0:d.info)==null||f.call(d,`${Ge} updateElement filtered toolsType=${e} dropped=[${n.join(",")}]`)),r}dispatchUpdate(t,e,r,n,i=[]){const o=We.MainEngine,a={};r.strokeColor!==void 0&&(a.strokeColor=r.strokeColor),r.fillColor!==void 0&&(a.fillColor=r.fillColor),r.fontColor!==void 0&&(a.fontColor=r.fontColor),r.fontBgColor!==void 0&&(a.fontBgColor=r.fontBgColor),r.thickness!==void 0&&(a.thickness=r.thickness),r.strokeType!==void 0&&(a.strokeType=r.strokeType),Object.keys(a).length&&Ve.emitMethod(o,Te.SetColorNode,{workIds:e,viewId:t,requestId:n,workState:he.Done,...a});const c={};if(r.fontSize!==void 0&&(c.fontSize=r.fontSize),r.bold!==void 0&&(c.bold=r.bold),r.italic!==void 0&&(c.italic=r.italic),r.underline!==void 0&&(c.underline=r.underline),r.lineThrough!==void 0&&(c.lineThrough=r.lineThrough),Object.keys(c).length&&Ve.emitMethod(o,Te.SetFontStyle,{workIds:e,viewId:t,requestId:n,workState:he.Done,...c}),r.isLocked!==void 0&&Ve.emitMethod(o,Te.SetLock,{workIds:e,viewId:t,requestId:n,workState:he.Done,isLocked:r.isLocked}),r.zIndexLayer!==void 0&&Ve.emitMethod(o,Te.ZIndexNode,{workIds:e,viewId:t,requestId:n,workState:he.Done,layer:r.zIndexLayer}),r.shape){const l={};if(r.shape.vertices!==void 0&&(l.vertices=r.shape.vertices),r.shape.innerVerticeStep!==void 0&&(l.innerVerticeStep=r.shape.innerVerticeStep),r.shape.innerRatio!==void 0&&(l.innerRatio=r.shape.innerRatio),r.shape.placement!==void 0&&(l.placement=r.shape.placement),Object.keys(l).length){if(!i.length)return;i.forEach(u=>{Ve.emitMethod(o,Te.SetShapeOpt,{workIds:e,viewId:t,toolsType:u,requestId:n,workState:he.Done,...l})})}}}buildSelectedElementInfo(t,e,r,n){var y,S,b;const i=this.control.collector,o=i&&i.isLocalId(r)?i.transformKey(r):r,a=(b=(S=(y=i==null?void 0:i.storage)==null?void 0:y[t])==null?void 0:S[e||""])==null?void 0:b[o];if(!a)return;const c=a.toolsType,l=a.opt,u=a.updateNodeOpt||{},h={};(l==null?void 0:l.strokeColor)!==void 0&&(h.strokeColor=l.strokeColor),(l==null?void 0:l.fillColor)!==void 0&&(h.fillColor=l.fillColor),(l==null?void 0:l.thickness)!==void 0&&(h.thickness=l.thickness),(l==null?void 0:l.strokeType)!==void 0&&(h.strokeType=l.strokeType),(l==null?void 0:l.fontColor)!==void 0&&(h.fontColor=l.fontColor),(l==null?void 0:l.fontBgColor)!==void 0&&(h.fontBgColor=l.fontBgColor),(l==null?void 0:l.zIndex)!==void 0&&(h.zIndex=l.zIndex);const d={id:r,toolsType:c,style:h};if(n&&(ve.isBoolean(n.canRotate)&&(d.canRotate=n.canRotate),ve.isBoolean(n.canLock)&&(d.canLock=n.canLock),n.scaleType&&(d.scaleType=n.scaleType),ve.isBoolean(n.isLocked)&&(d.isLocked=n.isLocked)),c===Q.Text&&l){const C=l,N={text:C.text,fontSize:C.fontSize,fontFamily:C.fontFamily,bold:C.bold,italic:C.italic,underline:C.underline,lineThrough:C.lineThrough,textAlign:C.textAlign,verticalAlign:C.verticalAlign,boxPoint:C.boxPoint,boxSize:C.boxSize};d.text=N}if(c===Q.Polygon){const C=l;d.shape={vertices:C.vertices}}else if(c===Q.Star){const C=l;d.shape={vertices:C.vertices,innerVerticeStep:C.innerVerticeStep,innerRatio:C.innerRatio}}else if(c===Q.SpeechBalloon){const C=l;d.shape={placement:C.placement}}const f=u.rect;f&&(d.rect={x:f.x,y:f.y,w:f.w,h:f.h});const g=u.centerPos;return g&&(d.centerPos=g),d}buildRemoteSelectedElements(t,e,r,n){if(!n.length)return[];const i=[];for(const o of n){const a=this.buildSelectedElementInfo(t,e,`${r}${Bt}${o}`,void 0);a&&(a.id=o,i.push(a))}return i}logGeometry(t,e,r){var a,c;const n=`${Ge} selectorGeometryChange action=${e} viewId=${t} count=${r}`,i=this.getDebounceLogger();if((e==="select"||e==="selectorTransform"||e==="cameraTransform")&&i!=null&&i.infoDebounced){i.infoDebounced(`selector-geometry:${t}:${e}`,n);return}(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,n)}}async function SSe({previousScenePath:s,attemptedScenePath:t,getCurrentScenePath:e,getTargetScenePath:r,yieldToNextTask:n=()=>new Promise(i=>window.setTimeout(i,0))}){const i=e(),o=r();if(i===o)return!1;if(i!==s||o!==t)return!0;await n();const a=e(),c=r();return a===c?!1:a!==s||c!==t}const lr=class lr{constructor(t){x(this,"backgroundImageLoadCoordinator");x(this,"toolChangePending",!1);x(this,"toolChangePendingTimer");x(this,"pendingSceneChecks",new Set);x(this,"pendingSceneChanges",new Map);x(this,"pendingClears",new Map);x(this,"pendingViewInitStates",new Map);x(this,"renderRuntimeCacheKey");x(this,"renderRuntimeBuildMarker",Npe);x(this,"renderRuntimeActivationPromise");x(this,"pendingViewInitQueue",Promise.resolve());x(this,"clearQueueByView",new Map);x(this,"viewOperationQueueByView",new Map);x(this,"forceDoneQueue",Promise.resolve());x(this,"forceDoneQueueByView",new Map);x(this,"localMutationFenceCount",0);x(this,"localMutationFenceByView",new Map);x(this,"roomLifecycleTerminal",!1);x(this,"destroyPromise");x(this,"isDestroying",!1);x(this,"isDestroyed",!1);x(this,"orphanRepairTimer");x(this,"lifecycleGeneration",0);x(this,"viewLifecycleGeneration",new Map);x(this,"version",zc);x(this,"plugin");x(this,"logger");x(this,"syncLogger");x(this,"room");x(this,"play");x(this,"collector");x(this,"hasSwitchToSelectorEffect");x(this,"snapshootStateMap");x(this,"_disableDeviceInputs");x(this,"_disableEraseImage");x(this,"_disableEraseText");x(this,"_disableCameraTransform");x(this,"initFontFaceTextRenderGate",!1);x(this,"initFontFaceTextRenderSkipped",!1);x(this,"mainViewMountedReady",new iM);x(this,"effectResolve");x(this,"hotkeyManager");x(this,"pluginOptions");x(this,"renderMode");x(this,"renderRuntimeDecisionLocked",!1);x(this,"renderingCompatibilityDecision");x(this,"roomMember");x(this,"cursor");x(this,"textEditorManager");x(this,"worker");x(this,"renderControl");x(this,"miniMapManager");x(this,"pluginManager");x(this,"callbacks");x(this,"selectorApi");x(this,"_isPolyfill",{requestIdleCallback:!1,cancelIdleCallback:!1});x(this,"onSceneChange",(t,e)=>{var a,c,l,u,h;if(this.isDestroying||this.isDestroyed)return Promise.resolve();const r=typeof t=="string"&&t.trim()?t:void 0,n=r||this.viewContainerManager.getAuthoritativeScenePath(e);if(!e||!n)return(c=(a=this.logger).warn)==null||c.call(a,`[Appliance]: [scene-path] stage=dropped-empty viewId=${e||""}`),Promise.resolve();if(r||this.logger.info(`[Appliance]: [scene-path] stage=authoritative-fallback viewId=${e} scenePath=${n}`),!this.worker.isViewInitAck(e)||!this.worker.isServiceSyncReady(e))return this.queuePendingInitScenePath(e,n),this.logger.info(`[Appliance]: [scene-path] stage=queued-before-ready viewId=${e} scenePath=${n}`),Promise.resolve();let i=this.pendingSceneChanges.get(e);i?(i.targetScenePath=n,i.isSceneBusy=!0,(l=i.deferredCamera)!=null&&l.scenePath&&i.deferredCamera.scenePath!==n&&(i.deferredCamera=void 0)):(i={targetScenePath:n,isSceneBusy:!0,running:!1,releaseMutationFence:this.acquireLocalMutationFence([e]),waiters:new Set},this.pendingSceneChanges.set(e,i)),this.worker.cameraUpdateDestroy(e),(h=(u=this.viewContainerManager.getView(e))==null?void 0:u.displayer)==null||h.setActive(!1);const o=new Promise(d=>{i==null||i.waiters.add(d)});return i.running||(i.running=!0,this.consumePendingSceneChanges(e,i).catch(d=>{var f,g;(g=(f=this.logger)==null?void 0:f.error)==null||g.call(f,`[Appliance]: scene change failed viewId=${e} scenePath=${(i==null?void 0:i.targetScenePath)||""} error=${(d==null?void 0:d.message)||d}`)})),o});x(this,"onRoomMembersChange",t=>{this.isDestroying||this.isDestroyed||(this.roomMember.setRoomMembers(la(t)),this.scheduleOrphanRepair())});x(this,"onMemberChange",ve.throttle(t=>{var o,a;if(this.setToolChangePending(!1,"member-change"),!this.room||!this.worker||!t||!this.room.isWritable)return;const e=this.getToolsKey(t),r=(o=this.worker.getCurrentToolsData())==null?void 0:o.toolsType,n=this.viewContainerManager.focuedViewId;n&&r===Q.Selector&&e!==Q.Selector&&this.worker.blurCursor(n);const i=this.getToolsOpt(e,t);this.worker.setCurrentToolsData(i),(a=this.pluginManager)==null||a.dispatchPluginEvent("setToolkey",e),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));x(this,"internalSceneChange",(t,e)=>{var r,n,i,o;if(!this.worker.isViewInitAck(t)||!this.worker.isServiceSyncReady(t)){this.queuePendingInitScenePath(t,e);return}this.isUseSimple||((r=this.miniMapManager)==null?void 0:r.activeViewId)===t&&((n=this.miniMapManager)==null||n.destroyMiniMap(t)),(i=this.pluginManager)==null||i.dispatchPluginEvent("sceneChange",t,e),(o=this.worker)==null||o.clearViewScenePath(t,!0).then(()=>{var a;(a=this.worker)==null||a.pullServiceData(t,e,{isAsync:!0,useAnimation:!1})})});x(this,"internalCameraChange",(t,e)=>{var r,n;(r=this.worker)==null||r.updateCamera(t,e),this.isUseSimple||(n=this.miniMapManager)==null||n.updateViewCamera(t,e)});var S,b,C;const{displayer:e,plugin:r,options:n,callbacks:i}=t;this.plugin=r,this.callbacks=i,this.room=ze(e)?e:void 0,this.play=lh(e)?e:void 0;let o;this.room&&(o=(S=this.room)==null?void 0:S.logger,this._disableDeviceInputs=this.room.disableDeviceInputs,this._disableEraseImage=this.room.disableEraseImage,this._disableEraseText=!1);const a=UMe(n.cdn,n.extras.useSimple),c=bs(He.workerRenderModeBlacklist,n.extras.workerRenderModeBlacklist,"renderMode"),l=bs(He.workerCanvasContextBlacklist,n.extras.workerCanvasContextBlacklist,"canvasContext"),u=bs(He.workerMaskTextureFormatBlacklist,n.extras.workerMaskTextureFormatBlacklist,"maskTextureFormat"),h=bs(He.workerMaskTextureUploadBlacklist,n.extras.workerMaskTextureUploadBlacklist,"maskTextureUpload"),d=bs(He.fontFaceFallbackBlacklist,n.extras.fontFaceFallbackBlacklist,"fontFaceFallback"),f=typeof navigator>"u"?"":navigator.userAgent;this.renderRuntimeCacheKey=uSe(f),this.renderingCompatibilityDecision=XMe({useWorker:n.extras.useWorker,allowImageBitmapFallback:n.extras.allowImageBitmapFallback,useSimple:n.extras.useSimple,requestedContextType:(b=n.extras.canvasOpt)==null?void 0:b.contextType,workerRenderModeBlacklist:c,workerCanvasContextBlacklist:l,workerMaskTextureFormatBlacklist:u,workerMaskTextureUploadBlacklist:h,workerUrl:a}),this.pluginOptions={...n,extras:{...n.extras,canvasOpt:n.extras.canvasOpt,workerRenderModeBlacklist:c,workerCanvasContextBlacklist:l,workerMaskTextureFormatBlacklist:u,workerMaskTextureUploadBlacklist:h,fontFaceFallbackBlacklist:d}},this.backgroundImageLoadCoordinator=new Ipe(this.pluginOptions.extras.backgroundImageLoadOptions,(C=this.callbacks)==null?void 0:C.onBackgroundImageLoadEvent),this.renderMode=this.renderingCompatibilityDecision.renderMode,this.renderingCompatibilityDecision.renderRuntimeSource="config",this.roomMember=new SMe;const g={control:this,internalMsgEmitter:lr.InternalMsgEmitter,publicMsgEmitter:lr.PublicMsgEmitter};this.cursor=new TMe(g),this.textEditorManager=new Gye(g),this.worker=new iSe(g),this.hotkeyManager=new sSe(g),this.renderControl=new pSe(g),this.pluginManager=new ym.PluginManager(g),this.isUseSimple||(this.miniMapManager=new mSe(g)),this.logger=new eo(o);const y=this.pluginOptions.extras.syncLogger.batchWindowMs??He.syncLogger.batchWindowMs;this.syncLogger=new aSe(this.logger,y>0?y:He.syncLogger.batchWindowMs)}get publicMsgEmitter(){return lr.PublicMsgEmitter}get internalMsgEmitter(){return lr.InternalMsgEmitter}emitInitLoadingChange(t){var e,r,n,i;try{(r=(e=this.callbacks)==null?void 0:e.onInitLoadingChange)==null||r.call(e,t)}catch(o){(i=(n=this.logger)==null?void 0:n.error)==null||i.call(n,`[Appliance]: onInitLoadingChange error: ${(o==null?void 0:o.message)||o}`)}}notifyMainViewMounted(){this.mainViewMountedReady.markReady()}isMainViewMounted(){var t;return((t=this.mainViewMountedReady)==null?void 0:t.isReady())??!0}waitForMainViewMounted(t){var e;return((e=this.mainViewMountedReady)==null?void 0:e.wait(t))??Promise.resolve("ready")}isRenderRuntimeRecoveryAllowed(){return!this.isDestroying&&!this.isDestroyed&&!this.roomLifecycleTerminal}appendPendingViewInitTask(t){this.pendingViewInitQueue||(this.pendingViewInitQueue=Promise.resolve());const e=this.pendingViewInitQueue.catch(()=>{}).then(t);return this.pendingViewInitQueue=e.then(()=>{},()=>{}),e}queuePendingRuntimeReset(t){return this.appendPendingViewInitTask(t)}queuePendingViewInit(t,e,r=this.getViewLifecycleGeneration(t)){const n=()=>this.appendPendingViewInitTask(async()=>{this.isPendingViewInitCurrent(t,r)&&await e()});return t===Fe||this.isMainViewMounted()?n():this.waitForMainViewMounted().then(i=>{if(!(i!=="ready"||!this.isPendingViewInitCurrent(t,r)))return n()})}emitFontFaceLoadState(t){var e,r;try{this.publicMsgEmitter.emit("fontFaceLoadState",t)}catch(n){(r=(e=this.logger)==null?void 0:e.error)==null||r.call(e,`[Appliance]: fontFaceLoadState listener error: ${(n==null?void 0:n.message)||n}`)}}emitFontFaceRenderState(t){var e,r;try{this.publicMsgEmitter.emit("fontFaceRenderState",t)}catch(n){(r=(e=this.logger)==null?void 0:e.error)==null||r.call(e,`[Appliance]: fontFaceRenderState listener error: ${(n==null?void 0:n.message)||n}`)}}hasPolyfillMethod(t){return this._isPolyfill[t]}registerPolyfillMethod(t){this._isPolyfill[t]=!0}get hasExtendFontFaces(){return this.extendFontFaces.length>0}get extendFontFaces(){var t;return((t=this.pluginOptions.extras.textEditor)==null?void 0:t.extendFontFaces)??He.textEditor.extendFontFaces}get loadFontFacesTimeout(){var t;return((t=this.pluginOptions.extras.textEditor)==null?void 0:t.loadFontFacesTimeout)??He.textEditor.loadFontFacesTimeout}loadFontFaces(){return this.worker.loadFontFaces()}beginInitFontFaceTextRenderGate(){this.initFontFaceTextRenderGate=!0,this.initFontFaceTextRenderSkipped=!1}markInitFontFaceTextRenderSkipped(){this.initFontFaceTextRenderGate&&(this.initFontFaceTextRenderSkipped=!0)}shouldHoldServiceTextRenderForFontFace(){return this.initFontFaceTextRenderGate}hasInitFontFaceTextRenderSkipped(){return this.initFontFaceTextRenderSkipped}endInitFontFaceTextRenderGate(){this.initFontFaceTextRenderGate=!1,this.initFontFaceTextRenderSkipped=!1}startInitFontFaceLoadAndRender(){if(!this.hasExtendFontFaces)return;this.beginInitFontFaceTextRenderGate();const t=this.lifecycleGeneration;setTimeout(()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==t){this.endInitFontFaceTextRenderGate();return}this.loadFontFaces().then(e=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==t)return;const r=this.hasInitFontFaceTextRenderSkipped();if(e.status==="success"&&(!this.worker.getLastFontFacesAlreadyReady()||r)||e.status!=="success"&&r&&HMe(this.pluginOptions.extras.fontFaceFallbackBlacklist))return this.refreshTextRender()}).catch(e=>{var r,n;(n=(r=this.logger)==null?void 0:r.error)==null||n.call(r,`[Appliance]: init font face load and render failed: ${(e==null?void 0:e.message)||e}`)}).finally(()=>{this.endInitFontFaceTextRenderGate()})},0)}waitNextFrame(){return new Promise(t=>requestAnimationFrame(()=>t()))}getSortedRefreshViews(){const t=this.viewContainerManager.getAllViews().filter(r=>!!r),e=this.viewContainerManager.focuedViewId;return t.sort((r,n)=>r.id===e?-1:n.id===e?1:0)}escapeCssIdentifier(t){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(t):t.replace(/([ #;?%&,.+*~':"!^$[\]()=>|/@])/g,"\\$1")}getTextEditorElement(t,e){var i;const r=`.editor-box #${this.escapeCssIdentifier(e)}`,n=[];t.container&&n.push(t.container),(i=t.viewData)!=null&&i.divElement&&n.push(t.viewData.divElement),t.displayer.eventTragetElement&&n.push(t.displayer.eventTragetElement),n.push(document);for(const o of n){const a=o.querySelector(r);if(a)return a}return document.getElementById(e)}measureViewTextEditorsForRender(t){const e=this.viewContainerManager.getView(t);if(!e)return{changed:!1,tasks:[]};let r=!1;const n=[];return this.textEditorManager.filterEditor(t).forEach((o,a)=>{const c=this.getTextEditorElement(e,a);let l=o.opt;if(c){const h=[c.offsetWidth,c.offsetHeight];h[0]&&h[1]&&!ve.isEqual(o.opt.boxSize,h)&&(l={...o.opt,boxSize:h},this.textEditorManager.updateForViewEdited(a,{...o,opt:l,canSync:!1,canWorker:!1,skipStorageDispatch:!0}),r=!0)}const u=this.textEditorManager.get(a)||o;n.push({viewId:t,scenePath:u.scenePath,workId:a,opt:u.opt})}),{changed:r,tasks:n}}async refreshViewTextRenderInternal(t){const e=this.viewContainerManager.getView(t),r=e==null?void 0:e.focusScenePath;if(!r||!this.collector)return{status:"error"};const n=this.collector.getStorageData(t,r);if(this.textEditorManager.clear(t,!0),n)for(const c of Object.keys(n)){const l=n[c];if(!l||l.toolsType!==Q.Text)continue;const u=l.type;if(!u||!this.renderControl.isFilterAble({viewId:t,elementId:c,scenePath:r},u))continue;const h={...l,workId:this.collector.isOwn(c)?this.collector.getLocalId(c):c,msgType:u,dataType:Re.Service,viewId:t,scenePath:r};this.textEditorManager.deriveTextEditorInfoFromServiceData(h,{canWorker:!1,canSync:!1,updateView:!1})}await this.viewContainerManager.renderTextEditorInfoAsync(t,this.textEditorManager.activeId),await this.waitNextFrame();const{changed:i,tasks:o}=this.measureViewTextEditorsForRender(t);return i&&(await this.viewContainerManager.renderTextEditorInfoAsync(t,this.textEditorManager.activeId),await this.waitNextFrame()),{status:await this.worker.refreshTextRenderForWorker(o)?"success":"error"}}async refreshViewTextRender(t,e=!0){var r,n;e&&this.emitFontFaceRenderState({status:"start"});try{const i=await this.refreshViewTextRenderInternal(t);return e&&this.emitFontFaceRenderState({status:i.status==="success"?"success":"error"}),i}catch(i){return(n=(r=this.logger)==null?void 0:r.error)==null||n.call(r,`[Appliance]: refreshViewTextRender failed: ${(i==null?void 0:i.message)||i}`),e&&this.emitFontFaceRenderState({status:"error"}),{status:"error"}}}async refreshTextRender(){var e,r;this.emitFontFaceRenderState({status:"start"});let t="success";try{for(const n of this.getSortedRefreshViews())(await this.refreshViewTextRenderInternal(n.id)).status==="error"&&(t="error");return this.emitFontFaceRenderState({status:t}),{status:t}}catch(n){return(r=(e=this.logger)==null?void 0:e.error)==null||r.call(e,`[Appliance]: refreshTextRender failed: ${(n==null?void 0:n.message)||n}`),this.emitFontFaceRenderState({status:"error"}),{status:"error"}}}async refreshViewRender(t){var e,r;try{const n=this.viewContainerManager.getView(t),i=(n==null?void 0:n.focusScenePath)||this.viewContainerManager.getAuthoritativeScenePath(t);return i?n!=null&&n.focusScenePath?(await this.worker.clearViewScenePath(t,!0),this.worker.pullServiceData(t,i,{isAsync:!0,useAnimation:!1}),await this.viewContainerManager.updateTextEditorInfoAsync(t,this.textEditorManager.activeId),await this.waitNextFrame(),{status:"success"}):(await this.onSceneChange(i,t),await this.viewContainerManager.updateTextEditorInfoAsync(t,this.textEditorManager.activeId),await this.waitNextFrame(),{status:"success"}):{status:"error"}}catch(n){return(r=(e=this.logger)==null?void 0:e.error)==null||r.call(e,`[Appliance]: refreshViewRender failed: ${(n==null?void 0:n.message)||n}`),{status:"error"}}}async refreshRender(){let t="success";for(const e of this.getSortedRefreshViews())(await this.refreshViewRender(e.id)).status==="error"&&(t="error");return{status:t}}get disableEraseText(){return this._disableEraseText||!1}set disableEraseText(t){this._disableEraseText=t}get disableEraseImage(){return this._disableEraseImage||!1}set disableEraseImage(t){this._disableEraseImage=t,this.room.disableEraseImage=t}get disableDeviceInputs(){return this._disableDeviceInputs||!1}set disableDeviceInputs(t){var r;this._disableDeviceInputs=t;const e=(r=this.worker.getCurrentToolsData())==null?void 0:r.toolsType;e&&this.effectViewContainer(e)}get disableCameraTransform(){return this._disableCameraTransform||!1}set disableCameraTransform(t){this._disableCameraTransform=t,this.room.disableCameraTransform=t}get disableUseWorker(){return this.renderMode==="main-thread"}get hasOffscreenCanvas(){return this.renderMode!=="main-thread"}get isUseOffscreenTransfer(){return this.renderMode==="worker-offscreen-transfer"}isServiceSyncReady(t){return this.worker.isServiceSyncReady(t)}onViewServiceReady(t){const e=this.viewContainerManager.getView(t);e&&e.displayer.setActive(this.canAcceptLocalMutation(t))}lockRenderRuntimeDecision(){this.renderRuntimeDecisionLocked=!0}isRenderRuntimeDecisionLocked(){return this.renderRuntimeDecisionLocked}ensureRenderRuntimeReady(){return this.worker.isActive?Promise.resolve():(this.renderRuntimeActivationPromise||(this.renderRuntimeActivationPromise=this.activeWorker().catch(t=>{throw this.renderRuntimeActivationPromise=void 0,t})),this.renderRuntimeActivationPromise)}getRenderContextTypeForView(t){var e,r;return((r=(e=this.viewContainerManager)==null?void 0:e.mainView)==null?void 0:r.id)===t?this.renderingCompatibilityDecision.contextType:"2d"}requiresCanvas2DCompanionRenderProbe(){return!1}async restoreCachedRenderRuntimeDecision(){if(this.pluginOptions.extras.useWorker!=="auto")return;const t=await dSe(this.renderRuntimeCacheKey),e=t.renderModel;let r;const n=e?FMe(e):void 0;if(n){const i=this.renderingCompatibilityDecision;if(n.renderMode==="worker-image-bitmap"&&this.pluginOptions.extras.allowImageBitmapFallback===!1){this.applyRuntimeRenderingDecision("main-thread","2d","image-bitmap-fallback-disabled",`cached-render-runtime:${e}:skip-image-bitmap-fallback`),i.renderRuntimeCacheState="hit",i.renderRuntimeSource="config",this.logger.info(`[Appliance]: [render-cache] stage=read-result renderModel=${e} action=skip-image-bitmap-fallback fallback=mainThread+canvas2d reason=config-disabled`),this.logFinalRenderDecision();return}const o={"worker-offscreen-transfer":0,"worker-image-bitmap":1,"main-thread":2},a={webgl2:0,webgl:1,"2d":2},c=n.renderMode==="main-thread"||n.renderMode==="worker-offscreen-transfer"&&i.capabilities.offscreenTransfer||n.renderMode==="worker-image-bitmap"&&i.capabilities.imageBitmap,l=n.contextType==="2d"||n.contextType==="webgl2"&&i.capabilities.webgl2||n.contextType==="webgl"&&i.capabilities.webgl,u=o[n.renderMode]>=o[i.renderMode]&&a[n.contextType]>=a[i.contextType];(!c||!l||!u)&&(r="cache-capability-mismatch")}if(n&&e&&!r){const i=this.renderingCompatibilityDecision;this.renderMode=n.renderMode,i.renderMode=n.renderMode,i.contextType=n.contextType,i.reason="cached-render-runtime-decision",i.renderRuntimeCacheState="hit",i.renderRuntimeSource="cache";const o=`cached-render-runtime:${n.renderMode}/${n.contextType}`;i.issues.includes(o)||(i.issues=[...i.issues,o]),this.logger.info(`[Appliance]: [render-cache] stage=read-result renderModel=${e}`),this.logFinalRenderDecision();return}this.logger.info(`[Appliance]: [render-cache] stage=read-result renderModel=none${t.reason||r?` reason=${r||t.reason}`:""}`)}async persistRenderRuntimeDecision(){var n,i;if(this.pluginOptions.extras.useWorker!=="auto")return;const t=this.renderingCompatibilityDecision;if(this.pluginOptions.extras.allowImageBitmapFallback===!1&&t.renderMode==="main-thread")return;const e=Qt(t.renderMode,t.contextType);await fSe(this.renderRuntimeCacheKey,e)?this.logger.info(`[Appliance]: [render-cache] stage=save renderModel=${e}`):(i=(n=this.logger).warn)==null||i.call(n,`[Appliance]: [render-cache] stage=save-failed renderModel=${e} reason=indexeddb-write-failed`)}async invalidateRenderRuntimeDecision(){var r,n;if(this.pluginOptions.extras.useWorker!=="auto")return;const t=await gSe(this.renderRuntimeCacheKey);this.renderingCompatibilityDecision.renderRuntimeCacheState=void 0;const e=Qt(this.renderMode,this.renderingCompatibilityDecision.contextType);t?this.logger.info(`[Appliance]: [render-cache] stage=invalidate renderModel=${e}`):(n=(r=this.logger).warn)==null||n.call(r,`[Appliance]: [render-cache] stage=invalidate-failed renderModel=${e}`)}ensurePendingViewInitState(t){var r,n,i,o;let e=this.pendingViewInitStates.get(t);if(!e){const a=(n=(r=this.collector)==null?void 0:r.readViewStorageSnapshot)==null?void 0:n.call(r,t);e={sequence:0,anchorRevision:0,serviceBaselineRevision:(a==null?void 0:a.revision)||0,serviceBaseline:(a==null?void 0:a.storage)||((o=(i=this.collector)==null?void 0:i.getServiceStorageViewSnapshot)==null?void 0:o.call(i,t))||{},scenes:new Map},this.pendingViewInitStates.set(t,e)}return e}armPendingViewInit(t){var n;const e=this.ensurePendingViewInitState(t),r=this.getViewLifecycleGeneration(t);(n=this.viewContainerManager.getView(t))==null||n.displayer.setActive(!1),mt(this.logger,{category:"init-padding",viewId:t,stage:"armed",restartView:!0,lifecycleGeneration:r,details:{lifecycleGeneration:r,baselineRevision:e.serviceBaselineRevision}})}bindPendingViewInit(t,e){const r=this.pendingViewInitStates.get(t);r&&(r.generation=e)}nextInitPaddingSequence(t){return t.sequence+=1,t.sequence}getSceneInitPaddingState(t,e){let r=t.scenes.get(e);return r||(r={cameraRevision:0,serviceDirty:!1,forceFullRefresh:!1,forceFullRevision:0,journal:[]},t.scenes.set(e,r)),r}appendInitPaddingJournal(t,e,r,n){const i=this.getSceneInitPaddingState(t,e);i.journal.push({kind:r,sequence:this.nextInitPaddingSequence(t),storageKey:n}),i.journal.length>128&&i.journal.shift()}queuePendingInitScenePath(t,e){if(!t||!e)return;const r=this.ensurePendingViewInitState(t);r.latestScenePath=e,r.anchorRevision=this.nextInitPaddingSequence(r),mt(this.logger,{category:"init-padding",viewId:t,generation:r.generation,stage:"accepted-scene",details:{scenePath:e,revision:r.anchorRevision}})}queuePendingInitServicePull(t,e){if(!t||!e)return;const r=this.ensurePendingViewInitState(t),n=this.getSceneInitPaddingState(r,e);n.serviceDirty=!0,n.forceFullRefresh=!0,n.forceFullRevision=this.nextInitPaddingSequence(r),this.appendInitPaddingJournal(r,e,"servicePull"),mt(this.logger,{category:"init-padding",viewId:t,generation:r.generation,stage:"accepted-service-pull",details:{scenePath:e,revision:n.forceFullRevision}})}queuePendingInitCamera(t,e,r){var a,c,l,u;if(!t)return;const n=r||((c=(a=this.viewContainerManager)==null?void 0:a.getView(t))==null?void 0:c.focusScenePath)||((u=(l=this.viewContainerManager)==null?void 0:l.getCurScenePath)==null?void 0:u.call(l,t));if(!n)return;const i=this.ensurePendingViewInitState(t),o=this.getSceneInitPaddingState(i,n);o.camera={...e},o.cameraRevision=this.nextInitPaddingSequence(i),mt(this.logger,{category:"init-padding",viewId:t,generation:i.generation,stage:"accepted-camera",details:{scenePath:n,revision:o.cameraRevision}})}queuePendingServiceDerive(t,e,r){if(!t||!e||!(r!=null&&r.scenePath))return;const n=this.ensurePendingViewInitState(t),i=this.getSceneInitPaddingState(n,r.scenePath);i.serviceDirty=!0,this.appendInitPaddingJournal(n,r.scenePath,"serviceDerive",e),mt(this.logger,{category:"init-padding",viewId:t,generation:n.generation,stage:"accepted-service-diff",details:{scenePath:r.scenePath,revision:n.sequence}})}queuePendingInitClear(t,e){var o,a,c,l;if(!t)return;const r=e||((a=(o=this.viewContainerManager)==null?void 0:o.getView(t))==null?void 0:a.focusScenePath)||((l=(c=this.viewContainerManager)==null?void 0:c.getCurScenePath)==null?void 0:l.call(c,t));if(!r)return;const n=this.ensurePendingViewInitState(t),i=this.getSceneInitPaddingState(n,r);i.serviceDirty=!0,i.forceFullRefresh=!0,i.forceFullRevision=this.nextInitPaddingSequence(n),this.appendInitPaddingJournal(n,r,"clear"),mt(this.logger,{category:"init-padding",viewId:t,generation:n.generation,stage:"accepted-clear",details:{scenePath:r,revision:n.sequence}})}getPendingInitTargetScenePath(t){var e;return(e=this.pendingViewInitStates.get(t))==null?void 0:e.latestScenePath}getPendingInitCameraForScene(t,e){var n,i;const r=(i=(n=this.pendingViewInitStates.get(t))==null?void 0:n.scenes.get(e))==null?void 0:i.camera;return r?{...r}:void 0}markPendingInitServiceApplied(t,e,r,n){const i=this.pendingViewInitStates.get(t);if(!i)return;const o=this.getSceneInitPaddingState(i,e);o.lastApplied=r?ve.cloneDeep(r):{},o.lastAppliedRevision=n,o.serviceDirty=!1,o.forceFullRefresh=!1}resetPendingInitRendererBaseline(t){var r,n;const e=[...((r=this.pendingViewInitStates.get(t))==null?void 0:r.scenes.keys())||[]];for(const i of e){const o=(n=this.pendingViewInitStates.get(t))==null?void 0:n.scenes.get(i);o&&(o.lastApplied=void 0,o.serviceDirty=!0,o.forceFullRefresh=!0)}}getPendingInitServiceBaseline(t,e){var r;return ve.cloneDeep(((r=this.pendingViewInitStates.get(t))==null?void 0:r.serviceBaseline[e])||{})}getPendingInitReconcileRevision(t,e){const r=this.pendingViewInitStates.get(t),n=r==null?void 0:r.scenes.get(e);return{anchorRevision:(r==null?void 0:r.anchorRevision)||0,cameraRevision:(n==null?void 0:n.cameraRevision)||0,forceFullRevision:(n==null?void 0:n.forceFullRevision)||0}}getPendingInitLastApplied(t,e){var n;const r=(n=this.pendingViewInitStates.get(t))==null?void 0:n.scenes.get(e);return{revision:r==null?void 0:r.lastAppliedRevision,storage:r!=null&&r.lastApplied?ve.cloneDeep(r.lastApplied):void 0}}hasPendingInitAppliedSnapshot(t,e){var r,n;return((n=(r=this.pendingViewInitStates.get(t))==null?void 0:r.scenes.get(e))==null?void 0:n.lastApplied)!==void 0}isPendingInitForceFullRefresh(t,e){var r,n;return((n=(r=this.pendingViewInitStates.get(t))==null?void 0:r.scenes.get(e))==null?void 0:n.forceFullRefresh)===!0}hasPendingInitServiceChanges(t,e){var r,n;return((n=(r=this.pendingViewInitStates.get(t))==null?void 0:r.scenes.get(e))==null?void 0:n.serviceDirty)===!0}clearPendingViewInitState(t){var e;(e=this.pendingViewInitStates)==null||e.delete(t)}getViewLifecycleGeneration(t){return this.viewLifecycleGeneration.get(t)||0}isPendingViewInitCurrent(t,e){return this.getViewLifecycleGeneration(t)===e}invalidatePendingViewInit(t){const e=this.getViewLifecycleGeneration(t)+1;return this.viewLifecycleGeneration.set(t,e),this.clearPendingViewInitState(t),Ta(this.logger,t),e}invalidateAllPendingViewInit(){const t=new Set(this.viewLifecycleGeneration.keys());for(const e of this.viewContainerManager.getAllViews())e!=null&&e.id&&t.add(e.id);for(const e of t)this.invalidatePendingViewInit(e);return this.pendingViewInitStates.clear(),t.size}applyWorkerRenderProbe(t){const e=this.renderingCompatibilityDecision,r=t.contextSupported;e.workerProbe=r?"passed":"failed",e.workerProgramProbe=t.programProbe,this.logFinalRenderDecision()}applyRuntimeRenderingDecision(t,e,r,n){this.renderMode=t;const i=this.renderingCompatibilityDecision;i.renderMode=t,i.contextType=e,i.reason=r,i.issues.includes(n)||(i.issues=[...i.issues,n])}logFinalRenderDecision(){const t=this.renderingCompatibilityDecision;this.logger.info(`[Appliance]: [render-capabilities] ${JSON.stringify({renderMode:t.renderMode,mainThreadRenderMode:t.mainThreadRenderMode,contextType:t.contextType,reason:t.reason,workerProbe:t.workerProbe,workerProgramProbe:t.workerProgramProbe,issues:t.issues})}`)}get isUseSimple(){return this.pluginOptions.extras.useSimple}get isUseBackgroundThread(){return this.pluginOptions.extras.useBackgroundThread}bindPlugin(t){this.plugin=t,this.collector&&(this.collector.removeStorageStateListener(),this.collector.removeAuthStateListener()),this.collector=new en(this,t,this.pluginOptions.extras.syncOpt.interval),this.activePlugin(),this.selectorApi&&this.selectorApi.destroy(),this.selectorApi=new wSe(this)}handleRemoteStorageRemoval(t,e,r={}){var a,c,l,u,h;const n=r.clearView===!0,i=(c=(a=this.worker)==null?void 0:a.abortActiveLocalInput)==null?void 0:c.call(a,t,e),o=(l=this.worker)==null?void 0:l.abortActiveContinuousMethods(t,r.abortAllContinuousMethods?void 0:e);i&&!n&&((u=this.worker)==null||u.cancelLocalWorks(t,!1)),(n||r.cancelTicker||i||o)&&this.viewContainerManager.cancelViewUndoTicker(t),n&&((h=this.worker)==null||h.clearViewScenePath(t,!0))}canForceDoneLocalWorks(t=!0){return!this.isDestroyed&&!!this.room&&this.room.phase===zi.Connected&&(!t||this.room.isWritable&&this.renderControl.isWritable)}isLocalMutationRuntimeAvailable(t){var e,r,n,i;return this.isDestroying||this.isDestroyed||this.roomLifecycleTerminal||!this.room||this.room.phase!==zi.Connected||!this.room.isWritable||!this.renderControl.isWritable||this.localMutationFenceCount>0||((r=(e=this.worker)==null?void 0:e.isRenderRuntimeRecovering)==null?void 0:r.call(e))===!0?!1:!t||((i=(n=this.worker)==null?void 0:n.isServiceSyncReady)==null?void 0:i.call(n,t))===!0}canAcceptLocalMutation(t){var e,r;return this.isLocalMutationRuntimeAvailable(t)?!t||!this.localMutationFenceByView.has(t)&&!this.isSceneBusy(t)&&!this.isClearBusy(t)&&!((r=(e=this.worker)==null?void 0:e.isViewBusy)!=null&&r.call(e,t)):!1}markRoomLifecycleTerminal(){var t,e;this.roomLifecycleTerminal||(this.roomLifecycleTerminal=!0,(e=(t=this.worker)==null?void 0:t.cancelRenderRuntimeRecovery)==null||e.call(t,"room-lifecycle-terminal"),this.viewContainerManager.getAllViews().forEach(r=>{r==null||r.displayer.setActive(!1)}))}canQueueViewLifecycleOperation(t){return this.isLocalMutationRuntimeAvailable(t)&&!!this.viewContainerManager.getView(t)}acquireLocalMutationFence(t){const e=t?new Set(t):void 0;e?e.forEach(n=>{this.localMutationFenceByView.set(n,(this.localMutationFenceByView.get(n)||0)+1)}):this.localMutationFenceCount++,this.viewContainerManager.getAllViews().forEach(n=>{n&&(!e||e.has(n.id))&&n.displayer.setActive(!1)});let r=!1;return()=>{r||(r=!0,e?e.forEach(n=>{const i=this.localMutationFenceByView.get(n)||0;i<=1?this.localMutationFenceByView.delete(n):this.localMutationFenceByView.set(n,i-1)}):this.localMutationFenceCount=Math.max(0,this.localMutationFenceCount-1),this.viewContainerManager.getAllViews().forEach(n=>{n&&(!e||e.has(n.id))&&this.canAcceptLocalMutation(n.id)&&!this.isSceneBusy(n.id)&&!this.isClearBusy(n.id)&&n.displayer.setActive(!0)}))}}forceDoneLocalWorks(t,e,r={}){var u;const n=r.syncStorage??(t!=="view-destroy"?!0:!!((u=this.room)!=null&&u.isWritable&&this.renderControl.isWritable));this.forceDoneQueueByView||(this.forceDoneQueueByView=new Map);const i=this.acquireLocalMutationFence(e),o=e?[...new Set(e)]:void 0,a=o?[this.forceDoneQueue,...o.map(h=>this.forceDoneQueueByView.get(h)||Promise.resolve())]:[this.forceDoneQueue,...this.forceDoneQueueByView.values()],c=Promise.all(a).then(async()=>{if(!this.canForceDoneLocalWorks(n))return this.logLifecycleError(`[Appliance]: force-Done unavailable reason=${t}`),{status:"failed",reason:t,views:[],failureReasons:["lifecycle-unavailable"]};const h=[];if(n)try{this.textEditorManager.forceDoneLocalText(e)}catch(b){const C=b instanceof Error?b.message:String(b);h.push(`text-finalize: ${C}`),this.logLifecycleError(`[Appliance]: force-Done Text finalize failed reason=${t} error=${C}`)}const d=e?new Set(e):void 0,f=this.viewContainerManager.getAllViews().filter(b=>!!b&&(!d||d.has(b.id))),g=await Promise.allSettled(f.map(async b=>{if(!this.canForceDoneLocalWorks(n))return{status:"failed",viewId:b.id,scenePath:b.focusScenePath,reason:t,failureReason:"lifecycle-unavailable"};const C=this.worker.forceDoneLocalWorks(b.id,b.focusScenePath,t,{syncStorage:n});return this.waitForForceDoneOrInvalidation(C,b,t)})),y=[];let S=h.length===0;return g.forEach((b,C)=>{var N,T,p,m,v;if(b.status==="rejected"){S=!1;const M=((N=b.reason)==null?void 0:N.message)||String(b.reason);y.push({status:"failed",viewId:((T=f[C])==null?void 0:T.id)||"unknown",scenePath:((p=f[C])==null?void 0:p.focusScenePath)||"",reason:t,failureReason:M}),h.push(`view=${((m=f[C])==null?void 0:m.id)||"unknown"}: ${M}`),this.logLifecycleError(`[Appliance]: force-Done failed viewId=${((v=f[C])==null?void 0:v.id)||"unknown"} reason=${t} error=${M}`)}else{if(y.push(b.value),b.value.status==="success")return;S=!1,h.push(`view=${b.value.viewId}: ${b.value.failureReason||"barrier-failed"}`),this.logLifecycleError(`[Appliance]: force-Done failed ACK viewId=${b.value.viewId} scenePath=${b.value.scenePath} reason=${t} error=${b.value.failureReason||"barrier-failed"}`)}}),this.canForceDoneLocalWorks(n)||(S=!1,h.push("lifecycle-invalidated"),this.logLifecycleError(`[Appliance]: force-Done lifecycle invalidated reason=${t}`)),{status:S?"success":"failed",reason:t,views:y,failureReasons:h}}).catch(h=>{const d=h instanceof Error?h.message:String(h);return this.logLifecycleError(`[Appliance]: force-Done aggregation failed reason=${t} error=${d}`),{status:"failed",reason:t,views:[],failureReasons:[`aggregation: ${d}`]}}).finally(()=>{try{i()}catch(h){this.logLifecycleError(`[Appliance]: force-Done mutation fence release failed reason=${t} error=${h instanceof Error?h.message:String(h)}`)}}),l=c.then(()=>{},()=>{});if(o){o.forEach(d=>{this.forceDoneQueueByView.set(d,l)});const h=()=>{o.forEach(d=>{this.forceDoneQueueByView.get(d)===l&&this.forceDoneQueueByView.delete(d)})};c.then(h,h)}else this.forceDoneQueue=l;return c}waitForForceDoneOrInvalidation(t,e,r){return new Promise((n,i)=>{let o=!1;const a=l=>{o||(o=!0,clearInterval(c),n(l))},c=setInterval(()=>{this.canForceDoneLocalWorks()||(this.worker.invalidateTransactionBarrier(e.id),a({status:"failed",viewId:e.id,scenePath:e.focusScenePath,reason:r,failureReason:"lifecycle-invalidated"}))},25);t.then(l=>a(l),l=>{o||(o=!0,clearInterval(c),i(l))})})}logLifecycleError(t){var e;(e=this.logger)==null||e.error(t)}destroy(t={}){var r,n;if(this.destroyPromise)return this.destroyPromise;const e=t.preserveStorage!==!1;return this.isDestroying=!0,(n=(r=this.worker)==null?void 0:r.cancelRenderRuntimeRecovery)==null||n.call(r,"manager-destroy"),this.destroyPromise=(async()=>{try{e&&this.canForceDoneLocalWorks()&&await this.forceDoneLocalWorks("destroy")}catch(i){this.logLifecycleError(`[Appliance]: force-Done before destroy failed: ${(i==null?void 0:i.message)||i}`)}finally{this.destroyImmediately()}})(),this.destroyPromise}destroyImmediately(){var r,n;if(this.isDestroyed)return;this.isDestroyed=!0;const t=[],e=(i,o)=>{try{o()}catch(a){t.push(`${i}: ${(a==null?void 0:a.message)||a}`)}};e("background-image",()=>this.backgroundImageLoadCoordinator.cancelAll()),e("main-view-ready",()=>this.mainViewMountedReady.cancel()),this.lifecycleGeneration++,this.viewLifecycleGeneration.forEach((i,o)=>{this.viewLifecycleGeneration.set(o,this.viewLifecycleGeneration.get(o)+1)}),e("sync-logger",()=>this.syncLogger.destroy()),this.pendingSceneChecks.clear(),(r=this.pendingViewInitStates)==null||r.clear(),this.pendingSceneChanges.forEach(i=>{i.releaseMutationFence(),i.waiters.forEach(o=>o())}),this.pendingSceneChanges.clear(),this.pendingClears.clear(),this.clearQueueByView.clear(),this.viewOperationQueueByView.clear(),(n=this.forceDoneQueueByView)==null||n.clear(),e("room-member",()=>this.roomMember.destroy()),e("orphan-repair",()=>{this.orphanRepairTimer&&clearTimeout(this.orphanRepairTimer),this.orphanRepairTimer=void 0}),e("tool-change",()=>{this.toolChangePendingTimer!==void 0&&(clearTimeout(this.toolChangePendingTimer),this.toolChangePendingTimer=void 0),this.toolChangePending=!1,this.onMemberChange.cancel()}),e("effect-waiter",()=>{const i=this.effectResolve;this.effectResolve=void 0,i==null||i(!1)}),e("view-container",()=>{var i;return(i=this.viewContainerManager)==null?void 0:i.destroy()}),e("worker",()=>{var i;return(i=this.worker)==null?void 0:i.destroy()}),e("collector",()=>{var i;return(i=this.collector)==null?void 0:i.destroy()}),e("cursor",()=>{var i;return(i=this.cursor)==null?void 0:i.destroy()}),e("text-editor",()=>{var i;return(i=this.textEditorManager)==null?void 0:i.destory()}),e("plugin-manager",()=>{var i;return(i=this.pluginManager)==null?void 0:i.destroy()}),e("mini-map",()=>{var i;return(i=this.miniMapManager)==null?void 0:i.destroyMiniMap()}),e("selector-api",()=>{var i;return(i=this.selectorApi)==null?void 0:i.destroy()}),this.selectorApi=void 0,e("logger",()=>{var i,o;return(o=(i=this.logger).destroy)==null?void 0:o.call(i)}),t.length&&this.logger.error(`[Appliance]: destroy completed with disposer errors: ${t.join("; ")}`)}async cleanCurrentScene(t=!0){if(this.isDestroying)return!1;const e=this.viewContainerManager.getPreferredFocusedViewId();if(!this.canQueueViewLifecycleOperation(e))return!1;const r=this.lifecycleGeneration,n=this.viewLifecycleGeneration.get(e)||0,i=()=>r===this.lifecycleGeneration&&(this.viewLifecycleGeneration.get(e)||0)===n&&!!this.viewContainerManager.getView(e);let o=this.pendingClears.get(e);o?o.isClearBusy=!0:(o={isClearBusy:!0},this.pendingClears.set(e,o));const a=this.enqueueViewOperation(e,async()=>{var g,y;const u=this.viewContainerManager.getCurScenePath(e);if(!u||(await this.worker.waitForViewLifecycleIdle(e),!i())||t&&(await this.worker.forceDoneLocalWorks(e,u,"clean-scene"),!i()))return!1;const h=this.worker.now;lr.InternalMsgEmitter.emit("addUndoTicker",h,e,{render:!0,storage:!0,source:$e.Clear}),lr.InternalMsgEmitter.emit("finalizeRequested",h,e,[ui],u);const d=(y=(g=this.viewContainerManager.getView(e))==null?void 0:g.displayer)==null?void 0:y.commiter,f=d==null?void 0:d.getPendingTickerSnapshots(u).find(S=>S.tickerId===h);if(await this.worker.clearViewScenePath(e,!1,!0),!i())return!1;if(lr.InternalMsgEmitter.emit("ackRenderUndoTicker",h,e,u),lr.InternalMsgEmitter.emit("ackStorageUndoTicker",h,e,u,ui),f&&d){try{await d.waitForUndoStackEnd(f,Ope)}catch(S){if(!i())return!1;this.logger.error(`[Appliance]: Clear Undo stack-end wait failed; viewId=${e}; scenePath=${u}; tickerId=${h}; error=${S instanceof Error?S.message:String(S)}`);try{d.cancelUndoTicker(h,e,u)}catch(b){this.logger.error(`[Appliance]: forcing Clear Undo stack-end failed; viewId=${e}; scenePath=${u}; tickerId=${h}; error=${b instanceof Error?b.message:String(b)}`)}}if(!i())return!1}return!0}),c=a.then(()=>{},()=>{});this.clearQueueByView.set(e,c);let l=!1;try{const u=await a;return l=!0,u}catch(u){throw u}finally{if(this.clearQueueByView.get(e)===c){this.clearQueueByView.delete(e);const u=this.pendingClears.get(e);this.pendingClears.delete(e),l&&(u!=null&&u.deferredCamera)?this.worker.updateCamera(e,u.deferredCamera):l&&!this.isSceneBusy(e)&&this.worker.recoverAfterSceneChange(e)}}}isClearBusy(t){var e;return((e=this.pendingClears.get(t))==null?void 0:e.isClearBusy)===!0}deferClearCamera(t,e){const r=this.pendingClears.get(t);r!=null&&r.isClearBusy&&(r.deferredCamera=e)}enqueueViewOperation(t,e){const n=(this.viewOperationQueueByView.get(t)||Promise.resolve()).then(()=>e()),i=n.then(()=>{},()=>{});this.viewOperationQueueByView.set(t,i);const o=()=>{this.viewOperationQueueByView.get(t)===i&&this.viewOperationQueueByView.delete(t)};return n.then(o,o),n}async setWritable(t){var r,n;let e;if(!t){if(e=await this.forceDoneLocalWorks("set-readonly"),this.isDestroyed)return e;(r=this.cursor)==null||r.unabled(),this.textEditorManager.checkEmptyTextBlur();const i=this.viewContainerManager.getAllViews();for(const o of i){o!=null&&o.focusScenePath&&(n=this.collector)!=null&&n.hasSelector(o.id,o.focusScenePath)&&this.worker.blurSelector(o.id,o.focusScenePath);const a=o==null?void 0:o.displayer;a&&(a.setActive(!1),await a.stopEventHandler())}}return e}onWritableChange(t){var n;if(this.isDestroying||this.isDestroyed)return;t?(this.worker.abled(),this.scheduleOrphanRepair()):this.worker.unWritable(),((n=this.worker.getCurrentToolsData())==null?void 0:n.toolsType)===Q.Text&&this.viewContainerManager.focuedViewId&&(t?this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId):this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId)),this.renderControl.onWritableChange(t),this.viewContainerManager.getAllViews().forEach(i=>{const o=i==null?void 0:i.displayer;o&&(o.bindToolsClass(),t?this.canAcceptLocalMutation(i==null?void 0:i.id)&&!this.isSceneBusy(i==null?void 0:i.id)&&!this.isClearBusy(i==null?void 0:i.id)&&o.setActive(!0):o.setActive(!1))})}async consumePendingSceneChanges(t,e){var r,n;try{for(;this.pendingSceneChanges.get(t)===e;){const i=(r=this.viewContainerManager.getView(t))==null?void 0:r.focusScenePath,o=e.targetScenePath;if(i===o)break;if(!i){if(this.logger.info(`[Appliance]: [scene-path] stage=recover-missing-current viewId=${t} scenePath=${o}`),this.viewContainerManager.setViewScenePath(t,o),((n=this.viewContainerManager.getView(t))==null?void 0:n.focusScenePath)!==o)break;continue}if(await this.applySceneChange(t,i,e),!await SSe({previousScenePath:i,attemptedScenePath:o,getCurrentScenePath:()=>{var c;return(c=this.viewContainerManager.getView(t))==null?void 0:c.focusScenePath},getTargetScenePath:()=>e.targetScenePath}))break}}finally{const i=this.pendingSceneChanges.get(t)===e,o=i?e.deferredCamera:void 0;e.running=!1,e.isSceneBusy=!1,i&&this.pendingSceneChanges.delete(t);try{i&&o&&(!o.scenePath||o.scenePath===e.targetScenePath)?this.worker.updateCamera(t,o.cameraOpt):i&&this.worker.recoverAfterSceneChange(t)}finally{try{e.releaseMutationFence()}finally{e.waiters.forEach(a=>a()),e.waiters.clear()}}}}isSceneBusy(t){var e;return((e=this.pendingSceneChanges.get(t))==null?void 0:e.isSceneBusy)===!0}deferSceneCamera(t,e){const r=this.pendingSceneChanges.get(t);r!=null&&r.isSceneBusy&&(r.deferredCamera={cameraOpt:e,scenePath:this.viewContainerManager.getCurScenePath(t)})}destroySceneChange(t){this.invalidatePendingViewInit(t);const e=this.pendingSceneChanges.get(t);this.pendingClears.delete(t),this.clearQueueByView.delete(t),this.viewOperationQueueByView.delete(t),e&&(e.isSceneBusy=!1,e.waiters.forEach(r=>r()),e.waiters.clear(),this.pendingSceneChanges.delete(t),e.releaseMutationFence())}async applySceneChange(t,e,r){await this.enqueueViewOperation(t,()=>this.applySceneChangeExclusive(t,e,r))}async applySceneChangeExclusive(t,e,r){var u;const n=this.lifecycleGeneration,i=this.viewLifecycleGeneration.get(t)||0,o=()=>n===this.lifecycleGeneration&&(this.viewLifecycleGeneration.get(t)||0)===i&&!!this.viewContainerManager.getView(t),a=this.viewContainerManager.getView(t);this.textEditorManager.forceDoneLocalText([t]);const c=a==null?void 0:a.displayer;if(c&&c.setActive(!1),await this.worker.forceDoneLocalWorks(t,e,"scene-change"),!o())return;const l=r.targetScenePath;l!==e&&(this.pendingSceneChecks.add(this.getPendingSceneCheckKey(t,e)),await this.reconcileSceneStorageIfPending(t,l),o()&&((u=this.collector)!=null&&u.hasSelector(t,e)&&this.worker.blurSelector(t,e),this.viewContainerManager.setViewScenePath(t,l),this.schedulePendingSceneChecks(t,l)))}getPendingSceneCheckKey(t,e){return JSON.stringify([t,e])}parsePendingSceneCheckKey(t){try{const e=JSON.parse(t);if(Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&typeof e[1]=="string")return[e[0],e[1]]}catch{}}async reconcileSceneStorageIfPending(t,e){const r=this.getPendingSceneCheckKey(t,e);this.pendingSceneChecks.has(r)&&await this.reconcileSceneStorage(t,e)}async reconcileSceneStorage(t,e){var i;if(this.isDestroying||this.isDestroyed)return;const r=this.getPendingSceneCheckKey(t,e),n=(i=this.collector)==null?void 0:i.getStorageData(t,e);if(!n||!this.collector){this.pendingSceneChecks.delete(r);return}for(const[o,a]of Object.entries(n)){if(!a)continue;if(o===Le||this.collector.isOwn(o)&&this.collector.getLocalId(o)===Le){this.collector.updateValue(o,void 0,{viewId:t,scenePath:e,isSync:!0});continue}if(!this.collector.isOwn(o))continue;const l=await Up(a);if(l.status==="unrecoverable")continue;const u=l.value;if(l.status==="already-stable")continue;const h=this.collector.getLocalId(o);h&&this.collector.dispatch({...u,workId:h,viewId:t,scenePath:e,isSync:!0})}this.pendingSceneChecks.delete(r)}schedulePendingSceneChecks(t,e){const r=this.lifecycleGeneration,n=()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==r)return;const o=this.getPendingSceneCheckKey(t,e);for(const a of[...this.pendingSceneChecks]){if(a===o||!this.pendingSceneChecks.has(a))continue;const c=this.parsePendingSceneCheckKey(a);c?this.reconcileSceneStorage(c[0],c[1]):this.pendingSceneChecks.delete(a)}},i=window.requestIdleCallback;i?i(n,{timeout:500}):window.setTimeout(n,0)}scheduleOrphanRepair(){this.isDestroying||this.isDestroyed||(this.orphanRepairTimer&&clearTimeout(this.orphanRepairTimer),this.orphanRepairTimer=setTimeout(()=>{this.orphanRepairTimer=void 0,this.repairOrphanStorage()},750))}captureOrphanRepairMembers(){var o;const t=this.roomMember.getAllRoomMembers(),e=(o=this.collector)==null?void 0:o.uid;if(!e)return;const r=t.filter(a=>{var c;return typeof a.memberId=="number"&&!!((c=a.payload)!=null&&c.uid)}).map(a=>{var c;return{memberId:a.memberId,uid:(c=a.payload)==null?void 0:c.uid}}).sort((a,c)=>a.memberId-c.memberId),n=r.find(a=>a.uid===e),i=r[0];if(!(!n||!i))return{digest:JSON.stringify(r),leaderMemberId:i.memberId,selfMemberId:n.memberId,selfUid:e,onlineUids:new Set(r.map(a=>a.uid))}}isCurrentOrphanRepairMembers(t){var r;if(this.isDestroying||this.isDestroyed||!((r=this.room)!=null&&r.isWritable)||this.room.phase!==zi.Connected)return!1;const e=this.captureOrphanRepairMembers();return!!e&&e.digest===t.digest}async repairOrphanStorage(){var n,i,o,a,c,l,u;if(this.isDestroying||this.isDestroyed||!((n=this.room)!=null&&n.isWritable)||this.room.phase!==zi.Connected||!this.collector)return;const t=this.collector,e=this.captureOrphanRepairMembers();if(!e||e.selfUid!==t.uid||e.selfMemberId!==e.leaderMemberId)return;const r=e.onlineUids;for(const[h,d]of Object.entries(t.storage)){if(this.isDestroying||this.isDestroyed)return;if(!t.isViewPendingSyncDiscarded(h))for(const[f,g]of Object.entries(d||{})){if(t.isViewPendingSyncDiscarded(h))break;for(const[y,S]of Object.entries(g||{})){if(!this.isCurrentOrphanRepairMembers(e))return;if(!S)continue;const b=S.lastOperator||((i=S.opt)==null?void 0:i.uid);if(!b||r.has(b)||!((((o=S.opt)==null?void 0:o.workState)||((a=S.updateNodeOpt)==null?void 0:a.workState))!==he.Done||!!((c=S.op)!=null&&c.length)&&!S.ops))continue;if(t.getLocalId(y)===Le||S.toolsType===Q.Selector){t.updateExistingValue(y,void 0,{viewId:h,scenePath:f,isSync:!0});continue}const T=await Up(S);if(!this.isCurrentOrphanRepairMembers(e))return;if(T.status==="unrecoverable"||T.status==="already-stable")continue;const p=(u=(l=t.storage[h])==null?void 0:l[f])==null?void 0:u[y];!p||p!==S||(T.value.lastOperator=b,t.updateExistingValue(y,T.value,{viewId:h,scenePath:f,isSync:!0,preserveLastOperator:!0}))}}}}requestToolChange(t){var i,o;const e={...(i=this.room)==null?void 0:i.state.memberState,...t},r=this.getToolsKey(e),n=(o=this.worker.getCurrentToolsData())==null?void 0:o.toolsType;if(r===n){this.setToolChangePending(!1,"same-tool",r);return}this.setToolChangePending(!0,"requested",r)}setToolChangePending(t,e="manual",r){this.toolChangePendingTimer!==void 0&&(clearTimeout(this.toolChangePendingTimer),this.toolChangePendingTimer=void 0),this.toolChangePending=t,t&&(this.toolChangePendingTimer=window.setTimeout(()=>{this.toolChangePendingTimer=void 0,this.toolChangePending=!1},500))}get isToolChangePending(){return this.toolChangePending||this.isDestroying}getToolsKey(t){const e=t.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case De.text:return t.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),Q.Text;case De.pencil:return t.useLaserPen?Q.LaserPen:Q.Pencil;case De.eraser:return Q.Eraser;case De.pencilEraser:return this.pluginOptions.extras.pencilEraser.useBitMap===!1?Q.PencilEraser:Q.BitMapEraser;case De.selector:return Q.Selector;case De.clicker:return Q.Clicker;case De.hand:return Q.Hand;case De.laserPointer:return Q.Hand;case De.arrow:return t.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),Q.Arrow;case De.straight:return t.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),Q.Straight;case De.ellipse:return t.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),Q.Ellipse;case De.rectangle:return t.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),Q.Rectangle;case De.shape:if(t.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),t.shapeType===Kt.Pentagram||t.shapeType===Kt.Star)return Q.Star;if(t.shapeType===Kt.Polygon||t.shapeType===Kt.Triangle||t.shapeType===Kt.Rhombus)return Q.Polygon;if(t.shapeType===Kt.SpeechBalloon)return Q.SpeechBalloon;break}return Q.Hand}getToolsOpt(t,e){if(t===Q.Clicker)return{toolsType:t,toolsOpt:{}};const r={strokeColor:Xn(e.strokeColor[0],e.strokeColor[1],e.strokeColor[2],e.strokeOpacity||1),thickness:e.strokeWidth,isOpacity:(e==null?void 0:e.strokeOpacity)&&e.strokeOpacity<1||(e==null?void 0:e.fillOpacity)&&e.fillOpacity<1||(e==null?void 0:e.textOpacity)&&e.textOpacity<1||(e==null?void 0:e.textBgOpacity)&&e.textBgOpacity<1||!1};switch(t){case Q.Text:r.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),r.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),r.textAlign=(e==null?void 0:e.textAlign)||"left",r.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",r.fontColor=(e==null?void 0:e.textColor)&&Xn(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||r.strokeColor||"rgba(0,0,0,1)",r.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&Xn(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",r.bold=(e==null?void 0:e.bold)&&"bold"||void 0,r.italic=(e==null?void 0:e.italic)&&"italic"||void 0,r.underline=(e==null?void 0:e.underline)||void 0,r.lineThrough=(e==null?void 0:e.lineThrough)||void 0,r.text="",r.strokeColor=void 0;break;case Q.Pencil:{const n=(e==null?void 0:e.strokeType)||Be.Normal;r.strokeType=n,r.autoShape=!!(e!=null&&e.autoShape),r.previewLocalOnly=!!(e!=null&&e.autoShape),r.lineCap=this.getLineCap(n),r.lineDash=this.getLineDash(n);break}case Q.PencilEraser:case Q.BitMapEraser:case Q.Eraser:if(r.thickness=Math.min(4,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1,t===Q.BitMapEraser){const n=r;n.fullLayerDoingMaskMaxInputPoints=Oc(this.pluginOptions.extras.pencilEraser.fullLayerDoingMaskMaxInputPoints),n.removeOnDone=this.pluginOptions.extras.pencilEraser.removeOnDone!==!1,n.maxImageWidth=this.pluginOptions.extras.pencilEraser.maxImageWidth,n.maxImageHeight=this.pluginOptions.extras.pencilEraser.maxImageHeight}break;case Q.LaserPen:{r.duration=(e==null?void 0:e.duration)||1,e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?r.strokeType=Be.Normal:r.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=r.strokeType;r.lineCap=this.getLineCap(n),r.lineDash=this.getLineDash(n);break}case Q.Arrow:case Q.Straight:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?r.strokeType=Be.Normal:r.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=r.strokeType;r.strokeType=n,r.lineCap=this.getLineCap(n),r.lineDash=this.getLineDash(n);break}case Q.Ellipse:case Q.Rectangle:case Q.Star:case Q.Polygon:case Q.SpeechBalloon:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?r.strokeType=Be.Normal:r.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=r.strokeType;r.lineCap=this.getLineCap(n),r.lineDash=this.getLineDash(n),t===Q.Star&&(e.shapeType===Kt.Pentagram?(r.vertices=10,r.innerVerticeStep=2,r.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(r.vertices=e.vertices,r.innerVerticeStep=e.innerVerticeStep,r.innerRatio=e.innerRatio)),t===Q.Polygon&&(e.shapeType===Kt.Triangle?r.vertices=3:e.shapeType===Kt.Rhombus?r.vertices=4:e.vertices&&(r.vertices=e.vertices)),r.fillColor=(e==null?void 0:e.fillColor)&&Xn(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",t===Q.SpeechBalloon&&(r.placement=e.placement||"bottomLeft");break}}return{toolsType:t,toolsOpt:r}}getLineCap(t){switch(t){case Be.Normal:return this.pluginOptions.extras.normalStroke.lineCap||He.normalStroke.lineCap;case Be.Dotted:return this.pluginOptions.extras.dottedStroke.lineCap||He.dottedStroke.lineCap;case Be.LongDotted:return this.pluginOptions.extras.longDottedStroke.lineCap||He.longDottedStroke.lineCap;default:return}}getLineDash(t){switch(t){case Be.Normal:return;case Be.Dotted:{const{segment:e,gap:r}=this.pluginOptions.extras.dottedStroke||He.dottedStroke;return[e,r]}case Be.LongDotted:{const{segment:e,gap:r}=this.pluginOptions.extras.longDottedStroke||He.longDottedStroke;return[e,r]}default:return}}effectViewContainer(t){var r,n,i,o,a;if(this.disableDeviceInputs===!0)this.room.disableDeviceInputs=!0,(r=this.worker)==null||r.unWritable(),(n=this.cursor)==null||n.unabled();else switch(t!==Q.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId),t){case Q.Text:case Q.Pencil:case Q.LaserPen:case Q.Arrow:case Q.Straight:case Q.Rectangle:case Q.Ellipse:case Q.Star:case Q.Polygon:case Q.SpeechBalloon:case Q.Triangle:case Q.Rhombus:case Q.Eraser:case Q.PencilEraser:case Q.BitMapEraser:case Q.Selector:case Q.Clicker:this.room.disableDeviceInputs=!0,(i=this.worker)==null||i.abled(),t===Q.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId);break;default:this.room.disableDeviceInputs=!1,(o=this.worker)==null||o.unWritable(),(a=this.cursor)==null||a.unabled();break}const e=this.lifecycleGeneration;setTimeout(()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==e)return;this.viewContainerManager.getAllViews().forEach(l=>{l!=null&&l.displayer&&l.displayer.bindToolsClass()})},0)}async getBoundingRect(t){var r,n,i,o,a;const e=await((r=this.worker)==null?void 0:r.getBoundingRect(t));if(e){const c=((i=(n=this.viewContainerManager.mainView)==null?void 0:n.viewData)==null?void 0:i.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},l=((a=(o=this.viewContainerManager.mainView)==null?void 0:o.viewData)==null?void 0:a.camera.scale)||1;return{width:Math.floor(e.w/l)+1,height:Math.floor(e.h/l)+1,originX:c.x,originY:c.y}}}async screenshotToCanvas(t,e,r,n,i,o,a){const c=await this.worker.getSnapshot(e,r,n,i);c&&c.forEach(l=>{if(l)try{t.drawImage(l,o||0,a||0)}catch(u){console.error("[screenshotToCanvas] Failed to draw ImageBitmap:",u)}l instanceof ImageBitmap?l.close():l instanceof HTMLImageElement&&l.remove()})}async scenePreview(t,e){var o,a,c,l;const r=(o=this.collector)==null?void 0:o.getViewIdBySecenPath(t);if(!r)return;const n=this.viewContainerManager.getView(r);if(!n||!((a=n.cameraOpt)!=null&&a.width)||!((c=n.cameraOpt)!=null&&c.height))return;const i=await((l=this.worker)==null?void 0:l.getSnapshot(t));if(i&&this.worker){const u=document.createElement("canvas"),h=u.getContext("2d"),{width:d,height:f}=n.cameraOpt;u.width=d,u.height=f,h&&(i.forEach(g=>{g&&(h.drawImage(g,0,0),g instanceof ImageBitmap?g.close():g instanceof HTMLImageElement&&g.remove())}),e.crossOrigin="anonymous",e.src=u.toDataURL(),e.onload=()=>{u.remove()},e.onerror=()=>{u.remove(),e.remove()})}}switchToText(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:De.text})}switchToSelector(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:De.selector})}async runEffectWork(t){if(this.hasSwitchToSelectorEffect){const e=await new Promise(r=>{this.effectResolve=r;try{this.switchToSelector()}catch(n){this.effectResolve=void 0,this.logLifecycleError(`[Appliance]: switchToSelector effect failed: ${n instanceof Error?n.message:String(n)}`),r(!1)}});this.effectResolve=void 0,e&&t&&t()}}setSnapshootData(){var t;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(t=this.room)==null?void 0:t.state.memberState))}getSnapshootData(t){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(t)}clearSnapshootData(){var t;(t=this.snapshootStateMap)==null||t.clear(),this.snapshootStateMap=void 0}useBitMapEraser(t){this.pluginOptions.extras.pencilEraser.useBitMap=t}consoleWorkerInfo(){var t;this.logger.info(`[Appliance]: [render-runtime] buildMarker=${this.renderRuntimeBuildMarker}`),(t=this.worker)==null||t.consoleWorkerInfo()}filterRenderByUid(t,e,r=!0){var i;this.viewContainerManager.getView(t)&&((i=this.renderControl)==null||i.publishRender({viewId:t,option:e,isSync:r}))}cancelFilterRender(t,e=!0){var r;(r=this.renderControl)==null||r.publishRender({viewId:t,isSync:e})}async createMiniMap(t,e){var n,i,o;if(this.isUseSimple)throw new Error("simple mode not support createMiniMap");const r=await((n=this.miniMapManager)==null?void 0:n.getMiniMapCamera(t));if(r&&await((i=this.miniMapManager)==null?void 0:i.createMiniMap(t,e,r))){const c=(o=this.miniMapManager)==null?void 0:o.getMiniMapCanvas(t);if(c){const l=c.getContext("2d");if(l){const u=this.viewContainerManager.getView(t);u!=null&&u.focusScenePath&&this.screenshotToCanvas(l,u.focusScenePath,r.width,r.height,r)}}}}async destroyMiniMap(t){var e;(e=this.miniMapManager)==null||e.destroyMiniMap(t)}insertIconify(t,e){var n;if(this.viewContainerManager.getView(t)&&this.room){const i=this.room.state.memberState,o=Xn(i.strokeColor[0],i.strokeColor[1],i.strokeColor[2],i.strokeOpacity||1);(n=this.worker)==null||n.insertIconify(t,{...e,strokeColor:o})}}insertBackgroundSVG(t,e){var r;if(!this.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");(r=this.worker)==null||r.insertBackgroundSVG(t,e)}reloadBackgroundImage(t){if(t.source!=="appliance")return{accepted:!1,reloadedCount:0,reason:"resourceNotFound"};const e=this.viewContainerManager.getView(t.viewId);return e?!e.focusScenePath||t.scenePath!==void 0&&e.focusScenePath!==t.scenePath?{accepted:!1,reloadedCount:0,reason:"sceneNotFocused"}:this.backgroundImageLoadCoordinator.reload({...t,scenePath:t.scenePath??e.focusScenePath}):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}}async insertBackgroundMarkMap(t,e){var r;if(!this.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");return await((r=this.worker)==null?void 0:r.insertBackgroundMarkMap(t,e))}updateBackgroundMarkMap(t,e,r){var i;const n=this.viewContainerManager.getView(t);if(n&&this.collector&&this.collector.hasTargetDataByViewId(t,e)){const{data:o,scenePath:a}=this.collector.getTargetDataByViewId(t,e);if(!a)throw new Error("updateBackgroundMarkMap scenePath is not exist");const c=n.focusScenePath;if(c&&c!==a)throw new Error("updateBackgroundMarkMap scenePath is not the focus scene path");if(o&&a)(i=this.worker)==null||i.updateBackgroundMarkMap(t,e,r);else throw new Error("updateBackgroundMarkMap data or scenePath is not exist")}}usePlugin(t){var e;return(e=this.pluginManager)==null?void 0:e.use(t)}async stopDraw(t){var r;const e=this.viewContainerManager.getView(t);e&&await((r=e.displayer)==null?void 0:r.stopEventHandler())}async setViewLocalScenePathChange(t,e){this.viewContainerManager.getView(t)&&await this.onSceneChange(e,t)}};x(lr,"InternalMsgEmitter",new iu),x(lr,"PublicMsgEmitter",new iu);let tt=lr;var _u=(s=>(s.Undo="undo",s.Redo="redo",s))(_u||{});const Xe=class Xe{createProxy(t,e,r){const n=new Proxy(t,{get(i,o,a){if(typeof o=="string"&&/^\d+$/.test(o))return Reflect.get(i,o,a);const c=Xe.interceptors.hasOwnProperty(o)?Xe.interceptors:i,l=Reflect.get(c,o,a);return typeof l=="function"&&c===Xe.interceptors?l.bind(n):l},set(i,o,a,c){const l=Xe.proxyCallbacks.get(c),u=(l==null?void 0:l.arrayType)||"undo";if(o==="length"){const h=i.length,d=[];if(a<h)for(let g=a;g<h;g++)d.push(i[g]);const f=Reflect.set(i,o,a,c);if(l!=null&&l.callback)for(let g=0;g<d.length;g++)l.callback({operation:"delete",index:a+g,oldValue:d[g],arrayType:u});return f}return typeof o=="string"&&/^\d+$/.test(o),Reflect.set(i,o,a,c)},deleteProperty(i,o){const a=Xe.proxyCallbacks.get(n),c=(a==null?void 0:a.arrayType)||"undo";if(typeof o=="string"&&/^\d+$/.test(o)){const l=parseInt(o,10),u=i[l],h=Reflect.deleteProperty(i,o);return a!=null&&a.callback&&u!==void 0&&a.callback({operation:"delete",index:l,oldValue:u,arrayType:c}),h}return Reflect.deleteProperty(i,o)}});return Xe.proxyToRaw.set(n,t),Xe.proxyCallbacks.set(n,{callback:e,arrayType:r}),n}};x(Xe,"proxyToRaw",new WeakMap),x(Xe,"proxyCallbacks",new WeakMap),x(Xe,"interceptors",{entries(...t){return Xe.proxyToRaw.get(this).entries(...t)},forEach(...t){return Xe.proxyToRaw.get(this).forEach(...t)},map(...t){return Xe.proxyToRaw.get(this).map(...t)},filter(...t){return Xe.proxyToRaw.get(this).filter(...t)},find(...t){return Xe.proxyToRaw.get(this).find(...t)},findIndex(...t){return Xe.proxyToRaw.get(this).findIndex(...t)},includes(...t){return Xe.proxyToRaw.get(this).includes(...t)},indexOf(...t){return Xe.proxyToRaw.get(this).indexOf(...t)},slice(...t){return Xe.proxyToRaw.get(this).slice(...t)},concat(...t){return Xe.proxyToRaw.get(this).concat(...t)},push(...t){const e=Xe.proxyToRaw.get(this),r=this,n=Xe.proxyCallbacks.get(r),i=(n==null?void 0:n.arrayType)||"undo",o=e.length,a=e.push(...t);if(n!=null&&n.callback)for(let c=o;c<e.length;c++)n.callback({operation:"add",index:c,newValue:e[c],arrayType:i});return a},customPush(...t){return Xe.proxyToRaw.get(this).push(...t)},pop(){const t=Xe.proxyToRaw.get(this),e=this,r=Xe.proxyCallbacks.get(e),n=(r==null?void 0:r.arrayType)||"undo",i=t.length,o=t[i-1],a=t.pop();return r!=null&&r.callback&&i>0&&r.callback({operation:"delete",index:i-1,oldValue:o,arrayType:n}),a},shift(){const t=Xe.proxyToRaw.get(this),e=this,r=Xe.proxyCallbacks.get(e),n=(r==null?void 0:r.arrayType)||"undo",i=t[0],o=t.shift();return r!=null&&r.callback&&t.length>0&&r.callback({operation:"delete",index:0,oldValue:i,arrayType:n}),o},unshift(...t){const e=Xe.proxyToRaw.get(this),r=this,n=Xe.proxyCallbacks.get(r),i=(n==null?void 0:n.arrayType)||"undo",o=e.unshift(...t);if(n!=null&&n.callback)for(let a=0;a<t.length;a++)n.callback({operation:"add",index:a,newValue:e[a],arrayType:i});return o},splice(t,e,...r){const n=Xe.proxyToRaw.get(this),i=this,o=Xe.proxyCallbacks.get(i),a=(o==null?void 0:o.arrayType)||"undo",c=e??n.length-t,l=n.slice(t,t+c),u=n.splice(t,c,...r);if(o!=null&&o.callback){for(let h=0;h<l.length;h++)o.callback({operation:"delete",index:t+h,oldValue:l[h],arrayType:a});for(let h=0;h<r.length;h++)o.callback({operation:"add",index:t+h,newValue:n[t+h],arrayType:a})}return u},customSplice(t,e,...r){const n=Xe.proxyToRaw.get(this),i=e??n.length-t;return n.splice(t,i,...r)},get length(){return Xe.proxyToRaw.get(this).length},set length(t){const e=Xe.proxyToRaw.get(this),r=this,n=Xe.proxyCallbacks.get(r),i=(n==null?void 0:n.arrayType)||"undo",o=e.length,a=[];if(t<o)for(let c=t;c<o;c++)a.push(e[c]);if(e.length=t,n!=null&&n.callback)for(let c=0;c<a.length;c++)n.callback({operation:"delete",index:t+c,oldValue:a[c],arrayType:i})}});let eh=Xe;const _r=class _r{constructor(t){x(this,"emitter",new iu);x(this,"undoStack");x(this,"redoStack");x(this,"worker");x(this,"control");x(this,"room");x(this,"viewId");x(this,"enableGlobal");x(this,"isTicking");x(this,"_undoTickerId");x(this,"scenePath");x(this,"tickStartStorerCache");x(this,"excludeIds",new Set);x(this,"pendingState",new Map);x(this,"tickerEndWaiters",new Map);x(this,"undoLifecycleListeners",new Set);x(this,"pendingWaitCancels",new Set);x(this,"destroyed",!1);x(this,"lifecycleCache",new Map);x(this,"stackRevision",0);x(this,"tickStartCaches",new Map);x(this,"tickStartExcludeIds",new Map);x(this,"timingFix");x(this,"ackTimeout");x(this,"isGlobalStackTransaction",!1);x(this,"pendingGlobalServiceData");x(this,"pendingArrayChanges",[]);x(this,"onChangeScene",ve.debounce(()=>{if(this.destroyed)return;const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){const e=this.undoStack.filter(n=>n.scenePath===t).length,r=this.redoStack.filter(n=>n.scenePath===t).length;this.emitUndoStepsUpdate(e),this.emitRedoStepsUpdate(r)}},_r.waitTime));const{control:e,internalMsgEmitter:r,viewId:n,enableGlobal:i}=t;this.control=e,this.emitter=r;const o=this.control.pluginOptions.extras.undoRedo;_r.MaxStackLength=o.maxStackLength||He.undoRedo.maxStackLength,this.timingFix=o.timingFix??He.undoRedo.timingFix,this.ackTimeout=o.ackTimeout||He.undoRedo.ackTimeout;const a=new eh,c=[],l=[];this.undoStack=a.createProxy(c,u=>{this.control.renderControl.isWritable&&this.handleArrayChange(u,wt.syncUndoStack)},_u.Undo),this.redoStack=a.createProxy(l,u=>{this.control.renderControl.isWritable&&this.handleArrayChange(u,wt.syncRedoStack)},_u.Redo),this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=n,this.enableGlobal=i}reportStackLength(t,e=this.undoStack.length,r=this.redoStack.length){var n,i,o;(o=(i=(n=this.room)==null?void 0:n.logger)==null?void 0:i.info)==null||o.call(i,`[Appliance]: [undo-stack] ${t} viewId=${this.viewId} undoLength=${e} redoLength=${r}`)}lifecycleKey(t){return`${t.viewId}|${t.scenePath}|${t.tickerId}|${t.transactionId}`}getIdentity(t,e){return{viewId:e.viewId,scenePath:e.scenePath,tickerId:t,transactionId:e.transactionId}}emitUndoLifecycle(t){if(this.destroyed)return;const e=this.lifecycleKey(t);for(this.lifecycleCache.set(e,t);this.lifecycleCache.size>100;){const r=this.lifecycleCache.keys().next().value;if(r===void 0)break;this.lifecycleCache.delete(r)}this.undoLifecycleListeners.forEach(r=>r(t))}onUndoLifecycle(t){return this.destroyed?()=>{}:(this.undoLifecycleListeners.add(t),()=>this.undoLifecycleListeners.delete(t))}getPendingTickerSnapshots(t){const e=[];return this.pendingState.forEach((r,n)=>{r.scenePath===t&&e.push({...this.getIdentity(n,r),source:r.source,startedAt:r.startedAt,barrierEpoch:r.barrierEpoch,phase:r.phase,ownerPromiseActive:r.ownerPromiseActive,finalizeRequested:r.finalizeRequested,scopeMode:r.scopeMode})}),e}waitForUndoStackEnd(t,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const r=this.lifecycleCache.get(this.lifecycleKey(t));return(r==null?void 0:r.phase)==="stack-end"?Promise.resolve(r):(r==null?void 0:r.phase)==="failed"?Promise.reject(r):new Promise((n,i)=>{let o,a=!1,c=!1,l=()=>{};const u=()=>{o!==void 0&&clearTimeout(o),l(),this.pendingWaitCancels.delete(h)},h=()=>{c||(c=!0,u(),i(new Error(`undo view destroyed: ${this.viewId}`)))},d=y=>{if(a)return;a=!0;const S=Math.max(0,y+e-Date.now());o=setTimeout(()=>{c=!0,u(),i(new Error(`undo stack end timeout: ${this.lifecycleKey(t)}`))},S)},f=()=>{const y=this.pendingState.get(t.tickerId);(y==null?void 0:y.transactionId)===t.transactionId&&y.finalizedAt!==void 0&&d(y.finalizedAt)},g=y=>{if(this.lifecycleKey(y)===this.lifecycleKey(t)){if(y.phase==="finalize-requested"){d(y.finalizedAt);return}if(y.phase==="data-done"){f();return}c=!0,u(),y.phase==="stack-end"?n(y):i(y)}};l=this.onUndoLifecycle(g),this.pendingWaitCancels.add(h),(r==null?void 0:r.phase)==="finalize-requested"?d(r.finalizedAt):(r==null?void 0:r.phase)==="data-done"&&f()})}waitForDataDone(t,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const r=this.lifecycleCache.get(this.lifecycleKey(t));return(r==null?void 0:r.phase)==="data-done"||(r==null?void 0:r.phase)==="stack-end"?Promise.resolve():(r==null?void 0:r.phase)==="failed"?Promise.reject(r):new Promise((n,i)=>{let o=!1,a,c=()=>{};const l=()=>{a!==void 0&&clearTimeout(a),c(),this.pendingWaitCancels.delete(u)},u=()=>{o||(o=!0,l(),i(new Error(`undo view destroyed: ${this.viewId}`)))},h=d=>{this.lifecycleKey(d)===this.lifecycleKey(t)&&d.phase!=="finalize-requested"&&(o=!0,l(),d.phase==="data-done"||d.phase==="stack-end"?n():i(d))};c=this.onUndoLifecycle(h),this.pendingWaitCancels.add(u),e!==void 0&&e>0&&(a=setTimeout(()=>{o||(o=!0,l(),i(new Error(`undo data done timeout: ${this.lifecycleKey(t)}`)))},e))})}waitForFinalizeRequested(t,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const r=this.lifecycleCache.get(this.lifecycleKey(t));return(r==null?void 0:r.phase)==="finalize-requested"||(r==null?void 0:r.phase)==="data-done"||(r==null?void 0:r.phase)==="stack-end"?Promise.resolve():(r==null?void 0:r.phase)==="failed"?Promise.reject(r):new Promise((n,i)=>{let o,a=!1,c=()=>{};const l=()=>{o!==void 0&&clearTimeout(o),c(),this.pendingWaitCancels.delete(u)},u=()=>{a||(a=!0,l(),i(new Error(`undo view destroyed: ${this.viewId}`)))},h=d=>{this.lifecycleKey(d)===this.lifecycleKey(t)&&(a=!0,l(),d.phase==="finalize-requested"||d.phase==="data-done"||d.phase==="stack-end"?n():i(d))};c=this.onUndoLifecycle(h),this.pendingWaitCancels.add(u),o=setTimeout(()=>{a=!0,l(),i(new Error(`undo finalize timeout: ${this.lifecycleKey(t)}`))},e)})}emitUndoStepsUpdate(t){this.emitter.emitAsync("onCanUndoStepsUpdate",t,this.viewId)}emitRedoStepsUpdate(t){this.emitter.emitAsync("onCanRedoStepsUpdate",t,this.viewId)}beginGlobalStackTransaction(){this.enableGlobal&&(this.isGlobalStackTransaction=!0)}flushPendingArrayChanges(){if(!this.enableGlobal||!this.pendingArrayChanges.length)return;const t=this.pendingArrayChanges.splice(0);for(const e of t)this.handleArrayChange(e.params,e.operation)}endGlobalStackTransaction(){if(!this.enableGlobal)return;const t=this.pendingGlobalServiceData;this.isGlobalStackTransaction=!1,this.pendingGlobalServiceData=void 0,this.flushPendingArrayChanges(),t&&this.pullServiceData(t)}ackRender(t,e,r){if(!this.timingFix){this.undoTickerEnd(t,e);return}const n=this.pendingState.get(t);!n||n.scenePath!==e||(n.gotRender=!0,this.mergeMeta(n,r),n.finalizeRequested&&(this.armAckTimeout(t,n),this.tryEnd(t)))}ackStorage(t,e,r,n){if(!this.timingFix)return;const i=this.pendingState.get(t);!i||i.scenePath!==e||(r&&i.ackedStorageKeys.add(r),Nye(i.scopeKeys,r)&&i.finalizeRequested&&(i.scopeKeys.size?i.gotStorage=[...i.scopeKeys].every(a=>i.ackedStorageKeys.has(a)):i.gotStorage=!0),this.mergeMeta(i,n),!i.finalizeRequested)||(this.armAckTimeout(t,i),this.tryEnd(t))}collectExpectedWorkIds(t,e,r){const n=this.pendingState.get(t);if(!n||n.scenePath!==e||!r.length)return;Yl(this.collector,this.viewId,e,r).forEach(o=>n.collectedScopeKeys.add(o)),n.scopeMode==="dynamic"&&n.finalizeRequested&&(n.scopeKeys.clear(),n.collectedScopeKeys.forEach(o=>n.scopeKeys.add(o)),n.expectedStorage&&n.scopeKeys.size?n.gotStorage=[...n.scopeKeys].every(o=>n.ackedStorageKeys.has(o)):n.expectedStorage&&!n.scopeKeys.size&&(n.gotStorage=!1),n.ackTimer&&clearTimeout(n.ackTimer),n.ackTimer=void 0,this.armAckTimeout(t,n),this.tryEnd(t))}reopenStorageAck(t,e,r){const n=this.pendingState.get(t);if(!n||n.scenePath!==e||!r.length)return;const i=Yl(this.collector,this.viewId,e,r);i.size&&(i.forEach(o=>n.ackedStorageKeys.delete(o)),n.finalizeRequested&&(n.expectedStorage&&n.scopeKeys.size?n.gotStorage=[...n.scopeKeys].every(o=>n.ackedStorageKeys.has(o)):n.expectedStorage&&!n.scopeKeys.size&&(n.gotStorage=n.scopeMode==="static"),n.ackTimer&&clearTimeout(n.ackTimer),n.ackTimer=void 0,this.armAckTimeout(t,n)))}finalizeRequested(t,e,r){const n=this.pendingState.get(t);if(!n||n.scenePath!==e)return;const i=n.finalizeRequested,o=Yl(this.collector,this.viewId,e,r);n.scopeMode==="dynamic"?(o.forEach(a=>n.collectedScopeKeys.add(a)),n.scopeKeys.clear(),n.collectedScopeKeys.forEach(a=>n.scopeKeys.add(a))):o.forEach(a=>n.scopeKeys.add(a)),n.finalizeRequested=!0,n.finalizedAt??(n.finalizedAt=Date.now()),n.phase="finalizing",n.gotStorage=Lye(n),this.armAckTimeout(t,n),i||this.emitUndoLifecycle({...this.getIdentity(t,n),phase:"finalize-requested",source:n.source,scopeMode:n.scopeMode,finalizedAt:n.finalizedAt}),this.tryEnd(t)}mergeMeta(t,e){Aye(t,e)}armAckTimeout(t,e){e.finalizeRequested&&Dye(e)&&(e.ackTimer=setTimeout(()=>{this.forceFlushPending(t)},this.ackTimeout))}tryEnd(t){const e=this.pendingState.get(t);if(!e||!Pye(e))return;const r=e.meta,n=e.phase==="failed";if(n||this.emitUndoLifecycle({...this.getIdentity(t,e),phase:"data-done",source:e.source,completedAt:Date.now()}),this.undoTickerEndSync(t,e.viewId,e.scenePath,!0),!n){const i=this.undoStack.some(o=>o.id===`${t}-${this.uid}`);e.phase="completed",this.stackRevision++,this.emitUndoLifecycle({...this.getIdentity(t,e),phase:"stack-end",source:e.source,outcome:i?"committed":"no-change",undoItemCreated:i,stackRevision:this.stackRevision})}r.copyAck&&r.emitEventType&&r.requestId&&this.emitter.emit("undoAckApplied",{viewId:e.viewId,scenePath:e.scenePath,requestId:r.requestId,emitEventType:r.emitEventType}),r.isWritable&&this.worker.abled()}forceFlushPending(t){const e=this.pendingState.get(t);if(!e)return;e.phase="failed";const r={...this.getIdentity(t,e),phase:"failed",source:e.source,reason:"timeout",missingRender:e.expectedRender&&!e.gotRender,missingStorageIds:[...e.scopeKeys].filter(n=>!e.ackedStorageKeys.has(n))};this.emitUndoLifecycle(r),e.gotRender=e.expectedRender,e.gotStorage=e.expectedStorage,this.tryEnd(t)}clearPendingState(t){const e=this.pendingState.get(t);e&&(e.ackTimer&&clearTimeout(e.ackTimer),this.pendingState.delete(t)),this.tickStartCaches.delete(t),this.tickStartExcludeIds.delete(t);const r=this.tickerEndWaiters.get(t);r&&(this.tickerEndWaiters.delete(t),r.forEach(n=>n()))}waitForTickerEnd(t,e){return!this.pendingState.has(t)&&this.undoTickerId!==t?Promise.resolve():new Promise(r=>{let n;const i=()=>{n!==void 0&&clearTimeout(n);const a=this.tickerEndWaiters.get(t);a==null||a.delete(i),(a==null?void 0:a.size)===0&&this.tickerEndWaiters.delete(t),r()},o=this.tickerEndWaiters.get(t)||new Set;o.add(i),this.tickerEndWaiters.set(t,o),e!==void 0&&(n=setTimeout(i,e))})}disposeViewTickers(t="view-destroyed"){var o,a,c;if(this.destroyed)return;const e=this.undoStack.length,r=this.redoStack.length,n=this.pendingState.size,i=this.isTicking;this.onChangeScene.cancel();for(const l of[...this.pendingWaitCancels])l();this.pendingWaitCancels.clear();for(const l of[...this.pendingState.keys()])this.clearPendingState(l);this.tickerEndWaiters.forEach(l=>{l.forEach(u=>u())}),this.tickerEndWaiters.clear(),this.undoLifecycleListeners.clear(),this.lifecycleCache.clear(),this.tickStartCaches.clear(),this.tickStartExcludeIds.clear(),this.excludeIds.clear(),this.pendingArrayChanges.length=0,this.pendingGlobalServiceData=void 0,this.isGlobalStackTransaction=!1,this.isTicking=!1,this._undoTickerId=void 0,this.scenePath=void 0,this.tickStartStorerCache=void 0,this.destroyed=!0,this.undoStack.customSplice(0),this.redoStack.customSplice(0),(e>0||r>0||n>0||i)&&((c=(a=(o=this.room)==null?void 0:o.logger)==null?void 0:a.info)==null||c.call(a,`[Appliance]: [undo-stack] undo-disposed:${t} viewId=${this.viewId} discardedUndoLength=${e} discardedRedoLength=${r} pendingTickerCount=${n} wasTicking=${i}`))}cancelUndoTicker(t,e,r){const n=this.pendingState.has(t),i=this.undoTickerId===t&&this.viewId===e&&this.scenePath===r;if(!n&&!i)return;const o=this.pendingState.get(t);i&&(this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()),this.clearPendingState(t),o&&(o.phase="cancelled",this.stackRevision++,this.emitUndoLifecycle({...this.getIdentity(t,o),phase:"stack-end",source:o.source,outcome:"no-change",undoItemCreated:!1,stackRevision:this.stackRevision}))}cancelViewUndoTicker(){const t=this.undoTickerId,e=this.scenePath;t===void 0||!e||this.cancelUndoTicker(t,this.viewId,e)}getStartCache(t){return this.tickStartCaches.get(t)||this.tickStartStorerCache}getExcludeIds(t){return this.tickStartExcludeIds.get(t)||this.excludeIds}resetLegacyTicker(){this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()}handleArrayChange(t,e){if(!this.collector||!this.enableGlobal)return;if(this.isGlobalStackTransaction){this.pendingArrayChanges.push({operation:e,params:{...t}});return}const{operation:r,oldValue:n,newValue:i}=t;let o,a;r==="delete"&&n?(o=n,a=n.id):r==="add"&&i&&(o=i,a=i.id),o&&a&&this.collector.dispatchUndoTicker({operation:e,syncType:r,viewId:this.viewId,undoTickerId:a,data:o})}get collector(){return this.control.collector}get undoTickerId(){return this._undoTickerId}get tmpTickStartStorerCache(){return this.tickStartStorerCache}get uid(){var t;return((t=this.control.collector)==null?void 0:t.uid)||""}addExcludeIds(t){const e=this.undoTickerId!==void 0?this.pendingState.get(this.undoTickerId):void 0;if(!(this.timingFix&&(e!=null&&e.scopeKeys.size))){if(this.timingFix&&this.undoTickerId!==void 0){const r=this.tickStartExcludeIds.get(this.undoTickerId);if(r)for(const n of t)r.add(n);return}if(this.isTicking)for(const r of t)this.excludeIds.add(r)}}undoTickerStart(t,e,r){var n,i,o;if(!this.destroyed){if(!this.timingFix){this.legacyUndoTickerStart(t,e);return}if(!r)throw new Error("[appliance-plugin] addUndoTicker expectedAcks is required");if(!r.source)throw new Error("[appliance-plugin] addUndoTicker source is required");if(this.collector&&(this.undoTickerId!==t||this.scenePath!==e)){if(this.undoTickerId&&this.viewId&&this.scenePath){const h=this.undoTickerId;this.pendingState.get(h)||this.undoTickerEndSync(h,this.viewId,this.scenePath)}this.isTicking=!0;const a=this.collector.transformKey(Le);this.excludeIds.add(a),this._undoTickerId=t,this.scenePath=e;const c=((n=this.collector)==null?void 0:n.storage[this.viewId])&&((i=this.collector)==null?void 0:i.storage[this.viewId][this.scenePath])||{},l=new Map(Object.entries(ve.cloneDeep(c))),u=new Set([a]);this.tickStartStorerCache=l,this.tickStartCaches.set(t,l),this.tickStartExcludeIds.set(t,u),this.pendingState.set(t,kye({tickerId:t,viewId:this.viewId,scenePath:e,expectedAcks:r})),(o=r.workIds)!=null&&o.length&&this.finalizeRequested(t,e,r.workIds.map(String))}}}legacyUndoTickerStart(t,e){var r,n;if(this.collector&&(this.undoTickerId!==t||this.scenePath!==e)){this.undoTickerId&&this.viewId&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath),this.isTicking=!0;const i=this.collector.transformKey(Le);this.excludeIds.add(i),this._undoTickerId=t,this.scenePath=e;const o=((r=this.collector)==null?void 0:r.storage[this.viewId])&&((n=this.collector)==null?void 0:n.storage[this.viewId][this.scenePath])||{};this.tickStartStorerCache=new Map(Object.entries(ve.cloneDeep(o)))}}undoTickerEnd(t,e,r){if(this.timingFix){this.forceFlushPending(t);return}this.undoTickerId&&t===this.undoTickerId&&e===this.scenePath?this.undoTickerEndSync(t,this.viewId,e,!0,r):this.resetLegacyTicker()}undoTickerEndSync(t,e,r,n=!0,i){var c,l;if(i&&i.length)for(const u of i)this.excludeIds.delete(u);const o=t===this.undoTickerId&&e===this.viewId&&r===this.scenePath,a=this.pendingState.has(t)&&e===this.viewId&&!!this.getStartCache(t);if((o||a)&&this.getStartCache(t)){const u=((c=this.collector)==null?void 0:c.storage[e])&&((l=this.collector)==null?void 0:l.storage[e][r])||{},h=this.pendingState.get(t),d=this.diffFun(this.getStartCache(t),new Map(Object.entries(u)),!0,this.getExcludeIds(t),h==null?void 0:h.scopeKeys);d.size&&(this.undoStack.push({id:`${t}-${this.uid}`,data:ve.cloneDeep(d),scenePath:r}),this.undoStack.length>_r.MaxStackLength&&this.undoStack.shift(),n&&this.emitUndoStepsUpdate(this.undoStack.length),this.redoStack.length&&(this.redoStack.length=0,n&&this.emitRedoStepsUpdate(this.redoStack.length))),o&&(this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()),this.clearPendingState(t),this.reportStackLength("undo-ticker-end")}}transformToUndoStackItem(t){const e=[];for(const[r,n]of Object.entries(t)){if(!(n!=null&&n.data))continue;const i=new Set;for(const[o,a]of Object.entries(n.data))i.add({key:o,dataType:a.dataType,data:a.data});e.push({id:r,scenePath:n.scenePath,data:i})}return e}pullServiceData(t){if(this.enableGlobal&&this.isGlobalStackTransaction){this.pendingGlobalServiceData=t;return}if(t){const{undoStack:e,redoStack:r}=t;if(e){const n=this.transformToUndoStackItem(e);for(let i=this.undoStack.length-1;i>=0;i--){const o=this.undoStack[i];n.findIndex(c=>c.id===o.id)===-1&&this.undoStack.customSplice(i,1)}for(const i of n){const o=this.undoStack.findIndex(a=>a.id===i.id);o!==-1?this.undoStack[o]=i:this.undoStack.customPush(i)}this.undoStack.sort((i,o)=>{const a=parseInt(i.id.split("-")[0]),c=parseInt(o.id.split("-")[0]);return a-c}),this.emitUndoStepsUpdate(this.undoStack.length)}if(r){const n=this.transformToUndoStackItem(r);for(let i=this.redoStack.length-1;i>=0;i--){const o=this.redoStack[i];n.findIndex(c=>c.id===o.id)===-1&&this.redoStack.customSplice(i,1)}for(const i of n){const o=this.redoStack.findIndex(a=>a.id===i.id);o!==-1?this.redoStack[o]=i:this.redoStack.customPush(i)}this.redoStack.sort((i,o)=>{const a=parseInt(i.id.split("-")[0]);return parseInt(o.id.split("-")[0])-a}),this.emitRedoStepsUpdate(this.redoStack.length)}}else this.clear()}undo(t){var r,n;let e;this.beginGlobalStackTransaction();try{if(this.undoTickerId&&this.tickStartStorerCache&&this.scenePath){const a=this.undoTickerId;this.timingFix&&this.forceFlushPending(a)}if(this.undoTickerId&&this.tickStartStorerCache&&this.scenePath){const a=this.undoTickerId,c=this.scenePath,l=this.getStartCache(a),u=this.pendingState.get(a);if(!l)return this.resetLegacyTicker(),this.undo(t);const h=((r=this.collector)==null?void 0:r.storage[this.viewId])&&((n=this.collector)==null?void 0:n.storage[this.viewId][c])||{},d=this.diffFun(l,new Map(Object.entries(h)),!1,this.getExcludeIds(a),u==null?void 0:u.scopeKeys),f=this.diffFun(l,new Map(Object.entries(h)),!0,this.getExcludeIds(a),u==null?void 0:u.scopeKeys);d.size===f.size?(this.undoStack.push({id:`${a}-${this.uid}`,data:ve.cloneDeep(d),scenePath:c}),this.undoStack.length>_r.MaxStackLength&&this.undoStack.shift()):d.size&&!f.size&&(e={id:`${a}-${this.uid}`,data:ve.cloneDeep(d),scenePath:c}),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear(),this.clearPendingState(a)}if(e)this.refreshPlugin(e);else{let a=this.undoStack.length-1;for(;a>=0;){const c=this.undoStack[a];if(c.scenePath===t){const l=c.id;c&&(this.redoStack.push(c),c.data&&this.refreshPlugin(c));const u=this.undoStack.findIndex(h=>h.id===l);u!==-1&&this.undoStack.splice(u,1);break}a--}}const i=this.undoStack.filter(a=>a.scenePath===t).length,o=this.redoStack.filter(a=>a.scenePath===t).length;return this.emitUndoStepsUpdate(i),this.emitRedoStepsUpdate(o),this.reportStackLength("undo-final",i,o),i}finally{this.endGlobalStackTransaction()}}redo(t){this.beginGlobalStackTransaction();try{let e=this.redoStack.length-1;for(;e>=0;){const i=this.redoStack[e];if(i.scenePath===t){const o=i.id;i&&(this.undoStack.push(i),i.data&&this.refreshPlugin(i,!0));const a=this.redoStack.findIndex(c=>c.id===o);a!==-1&&this.redoStack.splice(a,1);break}e--}const r=this.undoStack.filter(i=>i.scenePath===t).length,n=this.redoStack.filter(i=>i.scenePath===t).length;return this.emitUndoStepsUpdate(r),this.emitRedoStepsUpdate(n),this.reportStackLength("redo-final",r,n),n}finally{this.endGlobalStackTransaction()}}clear(){this.clearUndo(),this.clearRedo()}destroy(){this.destroyed||(this.onChangeScene.cancel(),this.disposeViewTickers("plugin-destroyed"),this.undoStack.customSplice(0),this.redoStack.customSplice(0))}clearUndo(){this.undoStack.length=0,this.emitUndoStepsUpdate(this.undoStack.length)}clearRedo(){this.redoStack.length=0,this.emitRedoStepsUpdate(this.redoStack.length)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){if(this.destroyed)return;const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){const e=this.undoStack.filter(n=>n.scenePath===t).length,r=this.redoStack.filter(n=>n.scenePath===t).length;this.emitUndoStepsUpdate(e),this.emitRedoStepsUpdate(r)}}especialDiff(t,e,r,n){if(e===ir.Update)switch(r==null?void 0:r.toolsType){case Q.Text:{if(n!=null&&n.opt&&(r!=null&&r.opt)){const o=ve.omit(n.opt,["uid","workState"]),a=ve.omit(r.opt,["uid","workState"]);if(t&&ve.isEqual(o,a))return!0;n.opt.workState!==he.Done&&(n.opt.workState=he.Done),r.opt.workState!==he.Done&&(r.opt.workState=he.Done)}break}}else if(e===ir.Draw||e===ir.Delete)switch(r==null?void 0:r.toolsType){case Q.Text:{if(r!=null&&r.opt){const o=r.opt.text;if(t&&!o)return!0;r.opt.workState!==he.Done&&(r.opt.workState=he.Done)}break}}return!1}normalizeUndoSnapshotValue(t,e){var n,i;if(!e)return e;if(((i=(n=this.collector)==null?void 0:n.getLocalId)==null?void 0:i.call(n,t))===Le||e.toolsType===Q.Selector)return;const r=hve(e);return r.status==="unrecoverable"?ve.cloneDeep(e):r.value}diffFun(t,e,r=!0,n=this.excludeIds,i){const o=new Set,a=t.keys(),c=e.keys();for(const l of a){if(!Np(l,n,i))continue;const u=this.normalizeUndoSnapshotValue(l,t.get(l)),h=this.normalizeUndoSnapshotValue(l,e.get(l));if(!(!u&&!h)){if(u&&h){if(ve.isEqual(h,u)||this.especialDiff(r,ir.Update,h,u))continue;o.add({dataType:ir.Update,key:l,data:[u,h]});continue}this.especialDiff(r,ir.Delete,u)||u&&o.add({dataType:ir.Delete,key:l,data:u})}}for(const l of c){if(!Np(l,n,i))continue;const u=this.normalizeUndoSnapshotValue(l,e.get(l));if(u&&!t.has(l)){if(this.especialDiff(r,ir.Draw,u))continue;o.add({dataType:ir.Draw,key:l,data:u})}}return o}isDrawEffectiveScene(t,e){const{key:r}=t;return!e.includes(r)}isDeleteEffectiveScene(t,e){const{key:r}=t;return!!e.includes(r)}isOldEffectiveScene(t,e){const{key:r}=t;return!!e.includes(r)}isNewEffectiveScene(t,e){const{key:r}=t;return!!e.includes(r)}refreshPlugin(t,e=!1){var l,u,h,d,f,g,y,S,b,C,N,T,p,m,v,M,R;let r;const{scenePath:n}=t,i=t.data;if(!i||!this.collector)return;const a={...this.collector.getStorageData(this.viewId,n)||{}};let c=!1;for(const E of i.values()){const{dataType:P,data:k,key:O}=E,B=this.collector.getStorageData(this.viewId,n),D=B&&Object.keys(B)||[];switch(P){case ir.Draw:if(r=e?this.isDrawEffectiveScene(E,D):this.isDeleteEffectiveScene(E,D),r)if(e&&!Array.isArray(k)){if((l=k.updateNodeOpt)!=null&&l.useAnimation&&(k.updateNodeOpt.useAnimation=!1),((u=this.collector)==null?void 0:u.getLocalId(O))===Le&&((h=this.collector)!=null&&h.isOwn(E.key))){const A=k.selectIds;if(A){const L=D.filter(Y=>{var q,ie;return((q=this.collector)==null?void 0:q.getLocalId(Y))===Le&&!((ie=this.collector)!=null&&ie.isOwn(Y))}).map(Y=>{var q;return(q=this.collector)==null?void 0:q.storage[this.viewId][n][Y]});let U=!1;for(const Y of L)for(let q=0;q<A.length;q++)(d=Y==null?void 0:Y.selectIds)!=null&&d.includes(A[q])&&(delete A[q],U=!0);U&&(k.selectIds=A.filter(Y=>!!Y))}}a[E.key]=k,c=!0}else!e&&!Array.isArray(E.data)&&(delete a[E.key],c=!0);break;case ir.Delete:if(r=e?this.isDeleteEffectiveScene(E,D):this.isDrawEffectiveScene(E,D),r){if(e&&!Array.isArray(k))delete a[O],c=!0;else if(!e&&!Array.isArray(k)){if((f=k.updateNodeOpt)!=null&&f.useAnimation&&(k.updateNodeOpt.useAnimation=!1),((g=this.collector)==null?void 0:g.getLocalId(E.key))===Le&&((y=this.collector)!=null&&y.isOwn(E.key))){const A=k.selectIds;if(A){const L=D.filter(Y=>{var q,ie;return((q=this.collector)==null?void 0:q.getLocalId(Y))===Le&&!((ie=this.collector)!=null&&ie.isOwn(Y))}).map(Y=>{var q;return(q=this.collector)==null?void 0:q.storage[this.viewId][n][Y]});let U=!1;for(const Y of L)for(let q=0;q<A.length;q++)(S=Y==null?void 0:Y.selectIds)!=null&&S.includes(A[q])&&(delete A[q],U=!0);U&&(k.selectIds=A.filter(Y=>!!Y))}}a[E.key]=k,c=!0}}break;case ir.Update:if(r=e?this.isNewEffectiveScene(E,D):this.isOldEffectiveScene(E,D),r){if(e&&Array.isArray(k)&&k.length===2){const A=k[1];if((b=A.updateNodeOpt)!=null&&b.useAnimation&&(A.updateNodeOpt.useAnimation=!1),((C=this.collector)==null?void 0:C.getLocalId(E.key))===Le&&((N=this.collector)!=null&&N.isOwn(E.key))){const L=A.selectIds;if(L){const U=D.filter(q=>{var ie,z;return((ie=this.collector)==null?void 0:ie.getLocalId(q))===Le&&!((z=this.collector)!=null&&z.isOwn(q))}).map(q=>{var ie;return(ie=this.collector)==null?void 0:ie.storage[this.viewId][n][q]});let Y=!1;for(const q of U)for(let ie=0;ie<L.length;ie++)q!=null&&q.selectIds&&((T=q.selectIds)!=null&&T.includes(L[ie]))&&(delete L[ie],Y=!0);Y&&(A.selectIds=L.filter(q=>!!q))}}a[O]=A,c=!0}else if(!e&&Array.isArray(k)&&k.length===2){const A=k[0];if((p=A.updateNodeOpt)!=null&&p.useAnimation&&(A.updateNodeOpt.useAnimation=!1),((m=this.collector)==null?void 0:m.getLocalId(E.key))===Le&&((v=this.collector)!=null&&v.isOwn(E.key))){const L=A.selectIds;if(L){const U=D.filter(q=>{var ie,z;return((ie=this.collector)==null?void 0:ie.getLocalId(q))===Le&&!((z=this.collector)!=null&&z.isOwn(q))}).map(q=>{var ie;return(ie=this.collector)==null?void 0:ie.storage[this.viewId][n][q]});let Y=!1;for(const q of U)for(let ie=0;ie<L.length;ie++)q!=null&&q.selectIds&&q.selectIds.includes(L[ie])&&(delete L[ie],Y=!0);Y&&(A.selectIds=L.filter(q=>!!q))}}a[E.key]=A,c=!0}}break}}if(c){const E=this.collector.plugin,P=(M=E==null?void 0:E.getAttributesValue)==null?void 0:M.call(E,[en.namespace]),k=(R=E==null?void 0:E.getAttributesValue)==null?void 0:R.call(E,[en.namespace,this.viewId]);P?k?E==null||E.updateAttributes([en.namespace,this.viewId,n],a):E==null||E.updateAttributes([en.namespace,this.viewId],{[n]:a}):E==null||E.updateAttributes([en.namespace],{[this.viewId]:{[n]:a}})}}};x(_r,"sdkCallBack"),x(_r,"MaxStackLength",He.undoRedo.maxStackLength),x(_r,"waitTime",100);let th=_r;const TSe=(s,t)=>({...s,...t}),am=(s,...t)=>t.reduce((e,r)=>({images:TSe(e.images,r==null?void 0:r.images),size:(r==null?void 0:r.size)||e.size,offset:{...e.offset,...r==null?void 0:r.offset}}),s),aa={[Q.Selector]:{applianceKey:De.selector,classSuffix:"selector",hostClassName:"cursor-selector"},[Q.Clicker]:{applianceKey:De.clicker,classSuffix:"clicker",hostClassName:"cursor-clicker"},[Q.Text]:{applianceKey:De.text,classSuffix:"text",hostClassName:"cursor-text"},[Q.Pencil]:{applianceKey:De.pencil,classSuffix:"pencil",hostClassName:"cursor-pencil"},[Q.LaserPen]:{applianceKey:De.laserPen,classSuffix:"laser-pen",hostClassName:"cursor-pencil"},[Q.Arrow]:{applianceKey:De.arrow,classSuffix:"arrow",hostClassName:"cursor-arrow"},[Q.Straight]:{applianceKey:De.straight,classSuffix:"straight",hostClassName:"cursor-straight"},[Q.Rectangle]:{applianceKey:De.rectangle,classSuffix:"rectangle",hostClassName:"cursor-rectangle"},[Q.Ellipse]:{applianceKey:De.ellipse,classSuffix:"ellipse",hostClassName:"cursor-ellipse"},[Q.Star]:{applianceKey:ar.star,classSuffix:"star",hostClassName:"cursor-shape"},[Q.Polygon]:{applianceKey:ar.polygon,classSuffix:"polygon",hostClassName:"cursor-shape"},[Q.SpeechBalloon]:{applianceKey:ar.speechBalloon,classSuffix:"speech-balloon",hostClassName:"cursor-shape"},[Q.Eraser]:{applianceKey:De.eraser,classSuffix:"eraser",hostClassName:"cursor-eraser"},[Q.PencilEraser]:{applianceKey:De.pencilEraser,classSuffix:"pencil-eraser",hostClassName:"cursor-eraser"},[Q.BitMapEraser]:{applianceKey:ar.bitMapEraser,classSuffix:"bitmap-eraser",hostClassName:"cursor-eraser"}},CSe={[Q.Selector]:De.selector,[Q.Clicker]:De.clicker,[Q.Text]:De.text,[Q.Pencil]:De.pencil,[Q.Arrow]:De.arrow,[Q.Straight]:De.straight,[Q.Rectangle]:De.rectangle,[Q.Ellipse]:De.ellipse,[Q.Eraser]:De.eraser,[Q.PencilEraser]:De.pencilEraser};function ISe(s,t){if(!(!s||t===void 0)&&s.currentApplianceName!==De.laserPointer)return t===Q.LaserPen?s.currentApplianceName===De.pencil&&s.useLaserPen?aa[t]:void 0:t===Q.Star||t===Q.Polygon||t===Q.SpeechBalloon?s.currentApplianceName===De.shape?aa[t]:void 0:t===Q.BitMapEraser?s.currentApplianceName===De.pencilEraser?aa[t]:void 0:CSe[t]===s.currentApplianceName?aa[t]:void 0}class gM{constructor(t){x(this,"options");this.options=fd(t)}getAppearance(t){return this.options.appearance[t]||Ma[t]}getLocal(t){var i;const e=Ma[t],r=this.getAppearance(t),n=am(e,e.local,r,r.local);return{...n,size:n.size||e.local.size,fallback:((i=r.local)==null?void 0:i.fallback)||"auto"}}getSynced(t){const e=Ma[t],r=this.getAppearance(t);return am(e,e.synced,r,r.synced)}getSyncedEnableShowName(t){return Ppe(this.options,t)}getLocalCursorOwnership(t){const e=this.options.appearance[t];return e&&(e.local||e.images||e.offset||e.size)?"custom":"plugin-default"}}function cm(s){const t=s.trim().toLowerCase();return t.startsWith("data:image/svg+xml")||/\.svg(?:[?#]|$)/i.test(t)}function Fd(s){const t=s.highResolution;if(!(!t||t===s.standardResolution||cm(s.standardResolution)||cm(t)))return t}function bSe(s){var c,l;const t=Math.round(-s.offset.x),e=Math.round(s.size.height-s.offset.y),r=s.fallback,n=`url("${s.images.standardResolution}") ${t} ${e}, ${r}`,i=Fd(s.images);if(!i)return n;const o=`image-set(url("${s.images.standardResolution}") 1x, url("${i}") 2x) ${t} ${e}, ${r}`,a=`-webkit-image-set(url("${s.images.standardResolution}") 1x, url("${i}") 2x) ${t} ${e}, ${r}`;return typeof CSS<"u"&&((c=CSS.supports)!=null&&c.call(CSS,"cursor",o))?o:typeof CSS<"u"&&((l=CSS.supports)!=null&&l.call(CSS,"cursor",a))?a:n}const pM=5e3,mM=128*1024*1024,yM=128,ESe=5e3;function xSe(s,t){if(t.activeCount!==0||t.estimatedBytes!==0||t.closeErrorCount!==0)return"error";if(s.activeCount>0||t.totalRetiredCount>0||t.totalReleasedCount>0)return"info"}class RSe{constructor(t={}){x(this,"pending",new Set);x(this,"awaitingPaint",new Set);x(this,"entries",new Map);x(this,"timeoutMs");x(this,"memoryPressureBytes");x(this,"memoryPressureCount");x(this,"memoryPressureReportIntervalMs");x(this,"scheduler");x(this,"onCloseError");x(this,"onScheduleError");x(this,"onTimeout");x(this,"onMemoryPressure");x(this,"activeEstimatedBytes",0);x(this,"peakActiveCount",0);x(this,"peakEstimatedBytes",0);x(this,"totalRetiredCount",0);x(this,"totalReleasedCount",0);x(this,"watchdogReleasedCount",0);x(this,"closeErrorCount",0);x(this,"lastMemoryPressureReportAt",-1/0);x(this,"frameHandle");x(this,"watchdogHandle");x(this,"destroyed",!1);x(this,"onFrame",()=>{if(this.frameHandle=void 0,!this.destroyed){for(const t of[...this.awaitingPaint])this.releaseEntry(t);this.awaitingPaint=this.pending,this.pending=new Set,this.entries.size?this.ensureFrame():this.stopSchedulersWhenEmpty()}});x(this,"onWatchdog",()=>{var o;if(this.watchdogHandle=void 0,this.destroyed)return;const t=this.scheduler.now(),e=new Set;let r=0,n=0,i=0;for(const a of[...this.entries.values()])a.deadlineAt<=t&&(e.add(a.viewId),r+=1,n+=a.estimatedBytes,i=Math.max(i,t-a.createdAt),this.releaseEntry(a));e.size&&(this.watchdogReleasedCount+=r,(o=this.onTimeout)==null||o.call(this,{viewIds:e,releasedCount:r,releasedEstimatedBytes:n,oldestAgeMs:i,snapshot:this.getMemorySnapshot()})),this.entries.size?this.ensureWatchdog():this.stopSchedulersWhenEmpty()});this.timeoutMs=t.timeoutMs??pM,this.memoryPressureBytes=t.memoryPressureBytes??mM,this.memoryPressureCount=t.memoryPressureCount??yM,this.memoryPressureReportIntervalMs=t.memoryPressureReportIntervalMs??ESe,this.scheduler={requestFrame:e=>requestAnimationFrame(e),cancelFrame:e=>cancelAnimationFrame(e),setTimer:(e,r)=>setTimeout(e,r),clearTimer:e=>clearTimeout(e),now:()=>Date.now(),...t.scheduler},this.onCloseError=t.onCloseError,this.onScheduleError=t.onScheduleError,this.onTimeout=t.onTimeout,this.onMemoryPressure=t.onMemoryPressure}retire(t,e){if(this.destroyed){this.closeBitmap(t,e);return}if(this.entries.has(e))return;const r=this.scheduler.now(),n={bitmap:e,viewId:t,createdAt:r,deadlineAt:r+this.timeoutMs,estimatedBytes:this.estimateBitmapBytes(e)};this.entries.set(e,n),this.pending.add(n),this.activeEstimatedBytes+=n.estimatedBytes,this.totalRetiredCount+=1,this.peakActiveCount=Math.max(this.peakActiveCount,this.entries.size),this.peakEstimatedBytes=Math.max(this.peakEstimatedBytes,this.activeEstimatedBytes),this.reportMemoryPressure(r),this.ensureWatchdog(),this.ensureFrame()}getMemorySnapshot(){const t=this.scheduler.now(),e=new Map;let r=0;for(const i of this.entries.values()){const o=Math.max(0,t-i.createdAt);r=Math.max(r,o);const a=e.get(i.viewId)||{activeCount:0,estimatedBytes:0,oldestAgeMs:0};a.activeCount+=1,a.estimatedBytes+=i.estimatedBytes,a.oldestAgeMs=Math.max(a.oldestAgeMs,o),e.set(i.viewId,a)}const n=[...e.entries()].map(([i,o])=>({viewId:i,...o})).sort((i,o)=>i.viewId.localeCompare(o.viewId));return{activeCount:this.entries.size,estimatedBytes:this.activeEstimatedBytes,peakActiveCount:this.peakActiveCount,peakEstimatedBytes:this.peakEstimatedBytes,totalRetiredCount:this.totalRetiredCount,totalReleasedCount:this.totalReleasedCount,watchdogReleasedCount:this.watchdogReleasedCount,closeErrorCount:this.closeErrorCount,oldestAgeMs:r,activeViews:n,destroyed:this.destroyed}}closeNow(t,e){const r=this.entries.get(e);r?this.releaseEntry(r):this.closeBitmap(t,e),this.stopSchedulersWhenEmpty()}releaseView(t){for(const e of[...this.entries.values()])e.viewId===t&&this.releaseEntry(e);this.stopSchedulersWhenEmpty()}destroy(){if(this.destroyed)return this.getMemorySnapshot();this.destroyed=!0,this.cancelSchedulers();for(const t of[...this.entries.values()])this.releaseEntry(t);return this.getMemorySnapshot()}ensureFrame(){var t;if(!(this.frameHandle!==void 0||!this.entries.size))try{this.frameHandle=this.scheduler.requestFrame(this.onFrame)}catch(e){(t=this.onScheduleError)==null||t.call(this,"request-frame",e,this.getMemorySnapshot())}}ensureWatchdog(){var e;if(this.watchdogHandle!==void 0||!this.entries.size)return;let t=1/0;for(const r of this.entries.values())t=Math.min(t,r.deadlineAt);try{this.watchdogHandle=this.scheduler.setTimer(this.onWatchdog,Math.max(0,t-this.scheduler.now()))}catch(r){(e=this.onScheduleError)==null||e.call(this,"set-watchdog",r,this.getMemorySnapshot());for(const n of[...this.entries.values()])this.releaseEntry(n)}}releaseEntry(t){this.entries.delete(t.bitmap)&&(this.pending.delete(t),this.awaitingPaint.delete(t),this.activeEstimatedBytes=Math.max(0,this.activeEstimatedBytes-t.estimatedBytes),this.closeBitmap(t.viewId,t.bitmap))}closeBitmap(t,e){var r;try{e.close(),this.totalReleasedCount+=1}catch(n){this.closeErrorCount+=1,(r=this.onCloseError)==null||r.call(this,t,n,this.getMemorySnapshot())}}estimateBitmapBytes(t){const e=Number.isFinite(t.width)?Math.max(0,t.width):0,r=Number.isFinite(t.height)?Math.max(0,t.height):0,n=Math.ceil(e*r*4);return Number.isSafeInteger(n)?n:0}reportMemoryPressure(t){var e;this.entries.size<this.memoryPressureCount&&this.activeEstimatedBytes<this.memoryPressureBytes||t-this.lastMemoryPressureReportAt<this.memoryPressureReportIntervalMs||(this.lastMemoryPressureReportAt=t,(e=this.onMemoryPressure)==null||e.call(this,this.getMemorySnapshot()))}stopSchedulersWhenEmpty(){this.entries.size||this.cancelSchedulers()}cancelSchedulers(){this.frameHandle!==void 0&&(this.scheduler.cancelFrame(this.frameHandle),this.frameHandle=void 0),this.watchdogHandle!==void 0&&(this.scheduler.clearTimer(this.watchdogHandle),this.watchdogHandle=void 0)}}const lm=3,um=128;function kSe(){return globalThis.__APPLIANCE_IMAGE_BITMAP_PIXEL_DIAGNOSTIC__===!0}class Qi{constructor(t){x(this,"internalMsgEmitter");x(this,"control");x(this,"mainView");x(this,"mainViewOrigin");x(this,"appViewOrigins",new Map);x(this,"appViews",new Map);x(this,"renderImageBitmapRetirement");x(this,"renderImageBitmapRecoveryViews",new Set);x(this,"renderImageBitmapPixelDiagnosticCanvas");x(this,"undoTickerStart",(t,e,r)=>{const n=this.getView(e);n&&n.displayer&&n.focusScenePath&&n.displayer.commiter.undoTickerStart(t,n.focusScenePath,r)});x(this,"addExcludeIds",(t,e)=>{const r=this.getView(e);r&&r.displayer&&r.focusScenePath&&r.displayer.commiter.addExcludeIds(t)});x(this,"onAckRenderUndoTicker",(t,e,r,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=r||i.focusScenePath;i.displayer.commiter.ackRender(t,o,n)});x(this,"onAckStorageUndoTicker",(t,e,r,n,i)=>{const o=this.getView(e);if(!(o!=null&&o.displayer)||!o.focusScenePath)return;const a=r||o.focusScenePath;o.displayer.commiter.ackStorage(t,a,n,i)});x(this,"onCollectExpectedWorkIds",(t,e,r,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.collectExpectedWorkIds(t,o,r)});x(this,"onFinalizeRequested",(t,e,r,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.finalizeRequested(t,o,r)});x(this,"onReopenStorageAck",(t,e,r,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.reopenStorageAck(t,o,r)});x(this,"onCancelUndoTicker",(t,e,r)=>{const n=this.getView(e);if(!(n!=null&&n.displayer)||!n.focusScenePath)return;const i=r||n.focusScenePath;n.displayer.commiter.cancelUndoTicker(t,e,i)});const{control:e,internalMsgEmitter:r}=t;this.control=e,this.internalMsgEmitter=r,this.renderImageBitmapRetirement=new RSe({onCloseError:(n,i,o)=>{var a,c;(c=(a=this.control.logger)==null?void 0:a.error)==null||c.call(a,`[Appliance]: [render-image-bitmap-memory] stage=close-error viewId=${n} activeCount=${o.activeCount} estimatedBytes=${o.estimatedBytes} closeErrorCount=${o.closeErrorCount} error=${i instanceof Error?i.message:String(i)}`)},onScheduleError:(n,i,o)=>{var a,c;(c=(a=this.control.logger)==null?void 0:a.error)==null||c.call(a,`[Appliance]: [render-image-bitmap-memory] stage=${n} activeCount=${o.activeCount} estimatedBytes=${o.estimatedBytes} error=${i instanceof Error?i.message:String(i)}`)},onMemoryPressure:n=>{var i,o;(o=(i=this.control.logger)==null?void 0:i.warn)==null||o.call(i,`[Appliance]: [render-image-bitmap-memory] stage=pressure activeCount=${n.activeCount} estimatedBytes=${n.estimatedBytes} peakActiveCount=${n.peakActiveCount} peakEstimatedBytes=${n.peakEstimatedBytes} oldestAgeMs=${n.oldestAgeMs} countThreshold=${yM} bytesThreshold=${mM}`)},onTimeout:n=>{var i,o;(o=(i=this.control.logger)==null?void 0:i.error)==null||o.call(i,`[Appliance]: [render-image-bitmap-memory] stage=watchdog-timeout viewIds=${[...n.viewIds].join(",")} timeoutMs=${pM} releasedCount=${n.releasedCount} releasedEstimatedBytes=${n.releasedEstimatedBytes} oldestAgeMs=${n.oldestAgeMs} remainingCount=${n.snapshot.activeCount} remainingEstimatedBytes=${n.snapshot.estimatedBytes}`);for(const a of n.viewIds)!this.getView(a)||this.renderImageBitmapRecoveryViews.has(a)||(this.renderImageBitmapRecoveryViews.add(a),this.control.refreshViewRender(a).catch(c=>{var l,u;(u=(l=this.control.logger)==null?void 0:l.error)==null||u.call(l,`[Appliance]: render ImageBitmap timeout recovery failed; viewId=${a}; error=${c instanceof Error?c.message:String(c)}`)}).finally(()=>this.renderImageBitmapRecoveryViews.delete(a)))}}),this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds),this.internalMsgEmitter.on("ackRenderUndoTicker",this.onAckRenderUndoTicker),this.internalMsgEmitter.on("ackStorageUndoTicker",this.onAckStorageUndoTicker),this.internalMsgEmitter.on("collectExpectedWorkIds",this.onCollectExpectedWorkIds),this.internalMsgEmitter.on("reopenStorageAck",this.onReopenStorageAck),this.internalMsgEmitter.on("finalizeRequested",this.onFinalizeRequested),this.internalMsgEmitter.on("cancelUndoTicker",this.onCancelUndoTicker)}get worker(){return this.control.worker}getUndoTickerId(t){const e=this.getView(t);if(e&&e.displayer&&e.focusScenePath)return e.displayer.commiter.undoTickerId}cancelViewUndoTicker(t){var r;const e=this.getView(t);(r=e==null?void 0:e.displayer)==null||r.commiter.cancelViewUndoTicker()}undo(){const t=this.focuedView;let e=0;if(t&&this.control.canAcceptLocalMutation(t.id)){const r=t.focusScenePath;e=t.displayer.commiter.undo(r)||0}return e}redo(){const t=this.focuedView;let e=0;if(t&&this.control.canAcceptLocalMutation(t.id)){const r=t.focusScenePath;e=t.displayer.commiter.redo(r)||0}return e}validator(t,e,r){var o;const n=ve.clone(t[e]),i=ve.clone(r);e==="focusScenePath"&&!ve.isEqual(n,i)&&(this.control.backgroundImageLoadCoordinator.cancelByViewScene(t.id,n),this.control.internalSceneChange(t.id,i),(o=t.displayer)==null||o.commiter.onChangeScene()),e==="cameraOpt"&&!ve.isEqual(n,i)&&this.control.internalCameraChange(t.id,i)}destroyAppView(t,e=!1){var n;this.disposeViewRenderImageBitmaps(t),this.renderImageBitmapRecoveryViews.delete(t),this.control.backgroundImageLoadCoordinator.cancelByViewScene(t),this.control.destroySceneChange(t),this.control.worker.cameraUpdateDestroy(t,!1);const r=this.appViews.get(t);r&&(r.displayer.commiter.disposeViewTickers("view-destroyed"),(n=this.control.selectorApi)==null||n.disposeView(t),this.control.textEditorManager.clear(t,e),r.displayer.destroy(),this.appViewOrigins.delete(t),this.appViews.delete(t))}createMianView(t){this.mainView&&this.disposeViewRenderImageBitmaps(Fe),this.mainViewOrigin=t,this.mainView=new Proxy(t,{set:(e,r,n)=>(this.worker.isActive&&this.validator(e,r,n),e[r]=n,!0)})}createAppView(t){const e=t.id;this.appViews.has(e)&&this.disposeViewRenderImageBitmaps(e),this.appViewOrigins.set(e,t);const r=new Proxy(t,{set:(n,i,o)=>(this.worker.isActive&&this.validator(n,i,o),n[i]=o,!0)});this.appViews.set(e,r)}isAppView(t){return t!==Fe&&this.appViews.has(t)}getPreferredFocusedViewId(){return this.focuedViewId||Fe}getView(t){var e;return t===Fe?this.mainView:(e=this.appViews)==null?void 0:e.get(t)}resolveView(t){const e=t||this.focuedViewId||Fe,r=this.getView(e);return!t&&!r&&e!==Fe?{viewId:Fe,view:this.getView(Fe)}:{viewId:e,view:r}}getViewElement(t){var e;return((e=t.viewData)==null?void 0:e.divElement)||t.container||t.displayer.eventTragetElement}getFloatbarContainer(t){const{view:e}=this.resolveView(t);return(e==null?void 0:e.displayer.customFloatbarContainerRef.current)||void 0}getViewOffsetToContainer(t,e){if(!t)return;const{viewId:r,view:n}=this.resolveView(e);if(!n)return;const i=this.getViewElement(n);if(!i)return;const o=i.getBoundingClientRect(),a=t.getBoundingClientRect();return{x:o.left-a.left,y:o.top-a.top,viewId:r}}getCurScenePath(t){const e=this.getView(t);if(e)return e.focusScenePath}getAuthoritativeScenePath(t){return this.getCurScenePath(t)}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(t,e){var r;if(t===Fe&&this.mainView)this.mainView.focusScenePath=e;else{const n=t&&((r=this.appViews)==null?void 0:r.get(t))||void 0;n&&(n.focusScenePath=e)}}setViewScenePathBeforeRenderInit(t,e){var i,o;const r=t===Fe?this.mainViewOrigin:this.appViewOrigins.get(t);if(!r)return!1;const n=r.focusScenePath!==e;return r.focusScenePath=e,n&&((o=(i=r.displayer)==null?void 0:i.commiter)==null||o.onChangeScene()),!0}setViewData(t,e){var r;if(t===Fe&&this.mainView)this.mainView.viewData=e;else{const n=t&&((r=this.appViews)==null?void 0:r.get(t))||void 0;n&&(n.viewData=e)}}setFocuedViewId(t){var e;this.focuedViewId=t,t===Fe?this.focuedView=this.mainView:this.focuedView=t&&((e=this.appViews)==null?void 0:e.get(t))||void 0,this.worker.currentToolsData&&this.worker.currentToolsData.toolsType===Q.Text&&this.activeTextEditor(t),this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(t,e){var n;let r;t===Fe?r=this.mainView:r=(n=this.appViews)==null?void 0:n.get(t),r&&(r.focusScenePath=e)}destroy(){var o,a,c,l,u,h;this.internalMsgEmitter.off("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.off("excludeIds",this.addExcludeIds),this.internalMsgEmitter.off("ackRenderUndoTicker",this.onAckRenderUndoTicker),this.internalMsgEmitter.off("ackStorageUndoTicker",this.onAckStorageUndoTicker),this.internalMsgEmitter.off("collectExpectedWorkIds",this.onCollectExpectedWorkIds),this.internalMsgEmitter.off("reopenStorageAck",this.onReopenStorageAck),this.internalMsgEmitter.off("finalizeRequested",this.onFinalizeRequested),this.internalMsgEmitter.off("cancelUndoTicker",this.onCancelUndoTicker),this.mainView&&(this.disposeViewRenderImageBitmaps(this.mainView.id),this.mainView.displayer.commiter.disposeViewTickers("view-destroyed"),(o=this.control.selectorApi)==null||o.disposeView(this.mainView.id)),(a=this.mainView)==null||a.displayer.destroy(),this.control.destroyMiniMap(Fe),this.appViews.forEach(d=>{this.destroyAppView(d.id,!0),this.control.destroyMiniMap(d.id)});const t=this.getRenderImageBitmapMemoryState(),e=this.renderImageBitmapRetirement.destroy(),r=e.closeErrorCount-t.closeErrorCount,n=`[Appliance]: [render-image-bitmap-memory] stage=destroy releasedCount=${t.activeCount-e.activeCount} releasedEstimatedBytes=${t.estimatedBytes-e.estimatedBytes} activeCount=${e.activeCount} estimatedBytes=${e.estimatedBytes} peakActiveCount=${e.peakActiveCount} peakEstimatedBytes=${e.peakEstimatedBytes} totalRetiredCount=${e.totalRetiredCount} totalReleasedCount=${e.totalReleasedCount} watchdogReleasedCount=${e.watchdogReleasedCount} closeErrorCount=${e.closeErrorCount} closeErrorsDuringDestroy=${r}`,i=xSe(t,e);i==="error"?(l=(c=this.control.logger)==null?void 0:c.error)==null||l.call(c,n):i==="info"&&((h=(u=this.control.logger)==null?void 0:u.info)==null||h.call(u,n)),this.renderImageBitmapRecoveryViews.clear()}setFocuedViewCameraOpt(t){if(this.focuedView){const e=this.focuedView.cameraOpt;ve.isEqual(e,t)||(this.focuedView.cameraOpt=t)}}transformToOriginPoint(t,e){const r=this.getView(e);if(r!=null&&r.viewData){const n=r.viewData.convertToPointOnScreen(t[0],t[1]);return[n.x,n.y]}return t}transformToScenePoint(t,e){const r=this.getView(e);if(r!=null&&r.viewData){const n=r.viewData.convertToPointInWorld({x:t[0],y:t[1]});return[n.x,n.y]}return t}inspectRenderImageBitmapPixels(t,e,r){const n=Math.min(1,um/Math.max(e,1),um/Math.max(r,1)),i=Math.max(1,Math.round(e*n)),o=Math.max(1,Math.round(r*n)),a=this.renderImageBitmapPixelDiagnosticCanvas||document.createElement("canvas");this.renderImageBitmapPixelDiagnosticCanvas=a,a.width!==i&&(a.width=i),a.height!==o&&(a.height=o);const c=a.getContext("2d");if(!c)throw new Error("render ImageBitmap pixel probe unavailable");c.clearRect(0,0,i,o),c.drawImage(t,0,0,i,o);const l=c.getImageData(0,0,i,o).data;let u=0,h=0;for(let d=0;d<l.length;d+=4){const f=l[d],g=l[d+1],y=l[d+2];l[d+3]!==0&&(u+=1,(f!==0||g!==0||y!==0)&&(h+=1))}return{sampleWidth:i,sampleHeight:o,visiblePixels:u,nonBlackPixels:h}}render(t){var n,i,o,a,c,l,u;let e,r=!1;for(const h of t){const{rect:d,imageBitmap:f,isFullFrameImageBitmap:g,isClear:y,isUnClose:S,drawCanvas:b,clearCanvas:C,viewId:N,viewGeneration:T,frameSequence:p,taskId:m}=h,v=(n=this.getView(N))==null?void 0:n.displayer;let M=!1;try{if(!(y&&C!==_e.None||b!==void 0&&b!==_e.None))continue;if(!v)throw new Error(`render View is unavailable: ${N}`);if(!d)throw new Error(`render rect is unavailable: ${N}`);const{dpr:E,canvasBgRef:P,canvasFloatRef:k,canvasServiceFloatRef:O,canvasTopRef:B}=v,D=Math.floor(d.w*E),A=Math.floor(d.h*E),L=d.x*E,U=d.y*E,Y=q=>{let ie;switch(q){case _e.TopFloat:ie=B==null?void 0:B.current;break;case _e.Float:ie=k.current;break;case _e.ServiceFloat:ie=O.current;break;case _e.Bg:ie=P.current;break;default:throw new Error(`render canvas target is unavailable: ${N}/${String(q)}`)}if(!ie)throw new Error(`render canvas is unavailable: ${N}/${String(q)}`);const z=ie.getContext("2d");if(!z)throw new Error(`render 2d context is unavailable: ${N}/${String(q)}`);return z};if(y&&C!==_e.None){Y(C).clearRect(L,U,D,A);continue}if(b!==void 0&&b!==_e.None){if(!f)throw new Error(`render ImageBitmap is unavailable: ${N}/${String(b)}`);const q=Y(b);let ie;const z=kSe()&&g&&b===_e.Bg;if(z)try{ie=this.inspectRenderImageBitmapPixels(f,f.width,f.height)}catch(V){(o=(i=this.control.logger)==null?void 0:i.warn)==null||o.call(i,`[Appliance]: [render-image-bitmap] stage=pixel-diagnostic-failed source=bitmap viewId=${N} generation=${T??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} error=${V instanceof Error?V.message:String(V)}`)}if(g?(q.clearRect(0,0,q.canvas.width,q.canvas.height),q.drawImage(f,0,0,q.canvas.width,q.canvas.height)):q.drawImage(f,0,0,D,A,L,U,D,A),z&&ie)try{const V=this.inspectRenderImageBitmapPixels(q.canvas,q.canvas.width,q.canvas.height);(ie.visiblePixels>0&&V.visiblePixels===0||ie.nonBlackPixels>0&&V.nonBlackPixels===0)&&((c=(a=this.control.logger)==null?void 0:a.warn)==null||c.call(a,`[Appliance]: [render-image-bitmap] stage=destination-pixel-loss viewId=${N} generation=${T??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} sourceVisible=${ie.visiblePixels} destinationVisible=${V.visiblePixels} sourceNonBlack=${ie.nonBlackPixels} destinationNonBlack=${V.nonBlackPixels}`))}catch(V){(u=(l=this.control.logger)==null?void 0:l.warn)==null||u.call(l,`[Appliance]: [render-image-bitmap] stage=pixel-diagnostic-failed source=destination viewId=${N} generation=${T??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} error=${V instanceof Error?V.message:String(V)}`)}M=!0}}catch(R){r||(e=R,r=!0)}finally{f&&!S&&(M?this.retireRenderImageBitmap(N,f):this.renderImageBitmapRetirement.closeNow(N,f))}}if(r)throw e}retireRenderImageBitmap(t,e){e&&this.renderImageBitmapRetirement.retire(t,e)}disposeViewRenderImageBitmaps(t){this.renderImageBitmapRetirement.releaseView(t)}getRenderImageBitmapMemoryState(){return this.renderImageBitmapRetirement.getMemorySnapshot()}showFloatBar(t,e,r){const n=this.getView(t),i=n==null?void 0:n.displayer.vDom;i&&i.showFloatBar(e,r)}activeTextEditor(t){const e=this.getView(t),r=e==null?void 0:e.displayer.vDom;r&&r.activeTextEditor()}unActiveTextEditor(t){const e=this.getView(t),r=e==null?void 0:e.displayer.vDom;r&&r.unActiveTextEditor()}showFloatBarBtn(t,e){const r=this.getView(t),n=r==null?void 0:r.displayer.vDom;n&&n.showFloatBarBtn(e)}updateTextEditorInfo(t,e,r){const n=this.getView(t),i=n==null?void 0:n.displayer.vDom;if(i){i.updateTextEditorInfo(e,r);return}r==null||r()}renderTextEditorInfo(t,e,r){const n=this.getView(t),i=n==null?void 0:n.displayer.vDom;if(i){i.renderTextEditorInfo(e,r);return}r==null||r()}renderTextEditorInfoAsync(t,e){return new Promise(r=>{this.renderTextEditorInfo(t,e,r)})}updateTextEditorInfoAsync(t,e){return new Promise(r=>{this.updateTextEditorInfo(t,e,r)})}setActiveMiniMap(t,e){const r=this.getView(t),n=r==null?void 0:r.displayer.vDom;n&&n.setActiveMiniMap(e&&t||void 0)}}x(Qi,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),x(Qi,"defaultScreenCanvasOpt",{autoRender:!1,contextType:"2d"}),x(Qi,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class vM{constructor(t,e,r){x(this,"control");x(this,"internalMsgEmitter");x(this,"commiter");x(this,"cachePoint");x(this,"cacheCursorPoint");x(this,"active",!0);x(this,"toolsKey");x(this,"activePointers",new Set);x(this,"currentDrawingPointerId");x(this,"pointerDrawingSession",0);x(this,"currentPointerDrawingSession");x(this,"pointerDonePromise");x(this,"isTouchDrawing",!1);x(this,"cursorMouseMove");x(this,"cursorMouseMoveDebounced");x(this,"cursorMouseMoveThrottled");x(this,"cursorMouseMoveFun");x(this,"cursorEventElement");x(this,"eventTargetTouchAction");x(this,"appliedCursorClassNames",[]);x(this,"pendingDpr");x(this,"dprMediaQuery");x(this,"dprMediaQueryListener");x(this,"pointLimitStopPending",!1);x(this,"localBitmapEraserPointCount",0);x(this,"_transferControlToOffscreenCanvas");x(this,"cursorMouseLeave",()=>{this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled.cancel():this.cursorMouseMoveDebounced.cancel(),this.cacheCursorPoint=[void 0,void 0],this.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)});x(this,"keydown",t=>{t.stopPropagation(),t.stopImmediatePropagation(),this.control.hotkeyManager.colloctHotkey(t)});x(this,"windowBlur",()=>{this.currentDrawingPointerId!==void 0&&this.cancelPointerDrawing("window-blur")});x(this,"visibilitychange",()=>{document.visibilityState==="hidden"&&this.currentDrawingPointerId!==void 0&&this.cancelPointerDrawing("document-hidden")});x(this,"pointerdown",t=>{var e;if(!this.pointerDonePromise){if(this.active&&this.consumeClickerEvent(t)){const r=this.getPoint(t);r&&this.worker.sendCursorEvent(r,this.viewId);return}if(!(!this.active||this.worker.isViewBusy(this.viewId)||this.control.isSceneBusy(this.viewId))){if(t.pointerType==="touch"&&(this.activePointers.add(t.pointerId),this.activePointers.size>1)){this.cancelPointerDrawing("multi-pointer-down",!0);return}if(t.button===0&&this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const r=this.getPoint(t);this.cachePoint=r,r&&(this.localBitmapEraserPointCount=this.isBitmapEraserTool()?1:0,this.currentDrawingPointerId=t.pointerId,this.currentPointerDrawingSession=++this.pointerDrawingSession,this.worker.originalEventLintener(he.Start,r,this.viewId),this.addPointerDocumentEvents())}}}});x(this,"pointermove",t=>{if(this.active){if(t.pointerType==="touch"){if(this.activePointers.size>1){this.cancelPointerDrawing("multi-pointer-move",!0);return}if(this.currentDrawingPointerId!==void 0&&t.pointerId!==this.currentDrawingPointerId)return;if(!this.worker.isAbled()){this.cancelPointerDrawing("worker-disabled",!0);return}}if(this.viewId){const e=this.getPoint(t);if(this.checkConsumeCount(e!==void 0))return;this.cachePoint=e,e&&this.worker.originalEventLintener(he.Doing,e,this.viewId)}}});x(this,"pointerup",t=>{if(this.active&&(t.pointerType==="touch"&&this.activePointers.delete(t.pointerId),!(this.currentDrawingPointerId!==void 0&&t.pointerId!==this.currentDrawingPointerId))){if(this.currentDrawingPointerId===void 0){this.clearPointerDocumentEvents();return}if(!this.pointLimitStopPending){if(t.pointerType==="touch"&&(this.activePointers.size>0||!this.worker.isAbled())){this.cancelPointerDrawing("touch-pointer-up-invalid",!0);return}if(t.button===0&&this.viewId){const e=this.getPoint(t)||this.cachePoint;e?this.finishPointerDone(e):this.cancelPointerDrawing("pointer-up-without-point")}t.pointerType==="touch"&&this.activePointers.size===0&&this.activePointers.clear()}}});x(this,"pointercancel",t=>{this.pointLimitStopPending||this.currentDrawingPointerId!==void 0&&t.pointerId!==this.currentDrawingPointerId||this.cancelPointerDrawing("pointer-cancel")});x(this,"touchstart",t=>{var r;if(this.pointerDonePromise)return;if(this.active&&this.consumeClickerEvent(t)){const n=this.getPoint(t);n&&this.worker.sendCursorEvent(n,this.viewId);return}if(!this.active||this.worker.isViewBusy(this.viewId)||this.control.isSceneBusy(this.viewId))return;if(t.touches.length!==1){this.cancelTouchDrawing();return}if(t.preventDefault(),!this.viewId)return;this.toolsKey=(r=this.worker.getCurrentToolsData())==null?void 0:r.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId);const e=this.getPoint(t);this.cachePoint=e,e&&(this.localBitmapEraserPointCount=this.isBitmapEraserTool()?1:0,this.isTouchDrawing=!0,this.worker.originalEventLintener(he.Start,e,this.viewId),document.addEventListener("touchmove",this.touchmove,{passive:!1}),document.addEventListener("touchend",this.touchend,!1),document.addEventListener("touchcancel",this.touchcancel,!1))});x(this,"touchmove",t=>{if(!this.active||!this.isTouchDrawing)return;if(t.touches.length!==1||!this.worker.isAbled()){this.cancelTouchDrawing();return}t.preventDefault();const e=this.getPoint(t);this.checkConsumeCount(e!==void 0)||(this.cachePoint=e,e&&this.worker.originalEventLintener(he.Doing,e,this.viewId))});x(this,"touchend",t=>{if(!this.active||!this.isTouchDrawing||this.pointLimitStopPending)return;if(t.touches.length>0||!this.worker.isAbled()){this.cancelTouchDrawing();return}t.preventDefault();const e=this.getPoint(t)||this.cachePoint;e?this.finishPointerDone(e):(this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0)});x(this,"touchcancel",()=>{this.pointLimitStopPending||this.cancelTouchDrawing("touch-cancel",!1)});this.control=t,this.internalMsgEmitter=e;const n={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:r,enableGlobal:!!this.control.pluginOptions.extras.undoRedo.enableGlobal};this.commiter=new th(n),this.cursorMouseMoveFun=i=>{const o=this.getPoint(i);this.cacheCursorPoint&&ve.isEqual(o,this.cacheCursorPoint)||(this.cacheCursorPoint=o,o&&this.worker.sendCursorEvent(o,this.viewId))},this.cursorMouseMoveDebounced=ve.debounce(this.cursorMouseMoveFun,this.moveDelayTime,{trailing:!0}),this.cursorMouseMoveThrottled=ve.throttle(this.cursorMouseMoveFun,this.moveDelayTime,{leading:!0}),this.cursorMouseMove=i=>{this.consumeClickerEvent(i),this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled(i):this.cursorMouseMoveDebounced(i)},this.setActive(t.renderControl.isWritable)}consumeClickerEvent(t){var e;return((e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType)!==Q.Clicker?!1:(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!0)}get moveDelayTime(){var t,e;return((e=(t=this.control.pluginOptions.extras)==null?void 0:t.cursor)==null?void 0:e.moveDelayTime)??He.cursor.moveDelayTime}requestDprUpdate(t){t===this.dpr&&this.pendingDpr===void 0||this.pendingDpr!==t&&(this.pendingDpr=t,this.worker.updateDpr(this.viewId,t))}commitDprUpdate(t){var e;this.pendingDpr===t&&(this.pendingDpr=void 0),this.dpr!==t&&(this.dpr=t,this.resizeCanvasBackingStore(),(e=this.vDom)==null||e.setDpr(t))}cancelDprUpdate(){this.pendingDpr=void 0}resizeCanvasBackingStore(){var n;if(this.control.isUseOffscreenTransfer)return;const t=this.width*this.dpr,e=this.height*this.dpr,r=[this.canvasBgRef.current,this.canvasFloatRef.current,this.canvasServiceFloatRef.current,(n=this.canvasTopRef)==null?void 0:n.current];for(const i of r)i&&(i.width=t,i.height=e)}observeDpr(){if(this.stopObservingDpr(),typeof window>"u"||!window.matchMedia)return;const t=window.devicePixelRatio||1,e=window.matchMedia(`(resolution: ${t}dppx)`),r=()=>{this.observeDpr(),this.setCanvassStyle()};this.dprMediaQuery=e,this.dprMediaQueryListener=r,e.addEventListener?e.addEventListener("change",r):e.addListener(r)}stopObservingDpr(){const t=this.dprMediaQuery,e=this.dprMediaQueryListener;t&&e&&(t.removeEventListener?t.removeEventListener("change",e):t.removeListener(e)),this.dprMediaQuery=void 0,this.dprMediaQueryListener=void 0}setTransferControlToOffscreenCanvas(t){this._transferControlToOffscreenCanvas={bgCanvas:t.bgCanvas.transferControlToOffscreen(),serviceCanvas:t.serviceCanvas.transferControlToOffscreen(),localCanvas:t.localCanvas.transferControlToOffscreen()}}async resetRenderSurface(){var t;this._transferControlToOffscreenCanvas=void 0,await((t=this.vDom)==null?void 0:t.resetRenderSurface()),this.resizeCanvasBackingStore()}get transferControlToOffscreenCanvas(){return this._transferControlToOffscreenCanvas}get worker(){return this.control.worker}bindToolsClass(){var c,l,u;const t=(l=(c=this.worker)==null?void 0:c.currentToolsData)==null?void 0:l.toolsType,e=this.control.renderControl.isWritable,r=this.worker.isAbled(),n=(u=this.control.room)==null?void 0:u.state.memberState,i=ISe(n,t),o=[],a=e&&r;if(a&&i){o.push(i.hostClassName),o.push(`cursor-tool-${i.classSuffix}`);const h=new gM(this.control.pluginOptions.extras.cursor),d=h.getLocalCursorOwnership(i.applianceKey),f=h.getLocal(i.applianceKey);o.push(d==="custom"?"custom-cursor":"plugin-cursor",`${d==="custom"?"custom-cursor":"plugin-cursor"}-${i.classSuffix}`),this.eventTragetElement&&this.eventTragetElement.style.setProperty("cursor",bSe(f),"important")}this.eventTragetElement&&(this.eventTragetElement.classList.remove(...this.appliedCursorClassNames),o.length&&this.eventTragetElement.classList.add(...o),this.appliedCursorClassNames=o,(!a||!i)&&this.eventTragetElement.style.removeProperty("cursor"))}mountView(){this.setCanvassStyle(),this.observeDpr(),this.control.viewContainerManager.mountView(this.viewId).catch(t=>{var r,n;const e=t instanceof Error?t.message:String(t);(n=(r=this.control.logger)==null?void 0:r.error)==null||n.call(r,`[Appliance]: view mount failed viewId=${this.viewId} error=${e}`)})}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}get parentElement(){var t;return(t=this.eventTragetElement)==null?void 0:t.parentElement}destroy(){this.cancelPointerDrawing("destroy"),this.pointerDonePromise=void 0,this.cancelDprUpdate(),this.stopObservingDpr(),this.cursorMouseMoveDebounced.cancel(),this.cursorMouseMoveThrottled.cancel(),this.commiter.destroy(),this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.clearViewCursor(this.viewId),this.internalMsgEmitter.removeAllListeners([We.Cursor,this.viewId])}getPoint(t){if(!this.eventTragetElement)return;const e=swe(t);if(!ve.isNumber(e.x)||!ve.isNumber(e.y))return;const r=this.eventTragetElement.getBoundingClientRect();return[e.x-r.left,e.y-r.top]}getActive(){return this.active}setActive(t){this.active=t,this.control.isUseBackgroundThread&&this.backgroundContainerRef&&this.backgroundContainerRef.current&&this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",t)}focusElement(){var t;(t=this.eventTragetElement)==null||t.focus()}async stopEventHandler(){if(this.pointerDonePromise){await this.pointerDonePromise;return}this.cachePoint&&await this.finishPointerDone(this.cachePoint)}finishPointerDone(t,e=0){if(this.pointerDonePromise)return this.pointerDonePromise;const r=this.currentPointerDrawingSession,n=this.viewId,i=this.toolsKey;this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.activePointers.clear(),this.currentDrawingPointerId=void 0,this.currentPointerDrawingSession=void 0,this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0;let o;try{e>0?o=(async()=>{if(await this.worker.waitForLocalEventQueue(n),this.worker.getLocalInputPointCount(n,i)<e){this.worker.removeDrawingWork(n);return}await this.worker.originalEventLintener(he.Done,t,n)})():o=Promise.resolve(this.worker.originalEventLintener(he.Done,t,n))}catch(c){o=Promise.reject(c)}const a=o.finally(()=>{this.pointerDonePromise===a&&(this.pointerDonePromise=void 0,this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.activePointers.clear(),this.currentDrawingPointerId=void 0,(r===void 0||r===this.currentPointerDrawingSession)&&(this.currentPointerDrawingSession=void 0),this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0)});return this.pointerDonePromise=a,a.catch(()=>{}),a}getTranslate(t){const r=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),n=r&&parseInt(r[0])||0,i=r&&parseInt(r[1])||0;return[n,i]}getContainerOffset(t,e){var i;const r=this.getTranslate(t);let n={x:e.x+t.offsetLeft-t.scrollLeft+r[0],y:e.y+t.offsetTop-t.scrollTop+r[1]};return(i=t.offsetParent)!=null&&i.nodeName&&t.offsetParent.nodeName!=="BODY"&&(n=this.getContainerOffset(t.offsetParent,n)),n}addPointerDocumentEvents(){document.addEventListener("pointermove",this.pointermove,!1),document.addEventListener("pointerup",this.pointerup,!1),document.addEventListener("pointercancel",this.pointercancel,!1),document.addEventListener("visibilitychange",this.visibilitychange,!1),window.addEventListener("blur",this.windowBlur,!1)}clearPointerDocumentEvents(){document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointercancel,!1),document.removeEventListener("visibilitychange",this.visibilitychange,!1),window.removeEventListener("blur",this.windowBlur,!1)}resetPointerDrawingState(){this.cachePoint=void 0,this.currentDrawingPointerId=void 0,this.currentPointerDrawingSession=void 0,this.activePointers.clear(),this.localBitmapEraserPointCount=0}cancelPointerDrawing(t,e=!1){const r=this.currentDrawingPointerId!==void 0;if(r&&t!=="destroy"&&!e&&this.toolsKey===Q.Pencil&&this.cachePoint){this.finishPointerDone(this.cachePoint,lm);return}r&&this.viewId&&(e&&this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId)),this.clearPointerDocumentEvents(),this.resetPointerDrawingState()}clearTouchDocumentEvents(){document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1),document.removeEventListener("touchcancel",this.touchcancel,!1)}cancelTouchDrawing(t="invalid-touch",e=!0){if(this.isTouchDrawing&&t==="touch-cancel"&&!e&&this.toolsKey===Q.Pencil&&this.cachePoint){this.finishPointerDone(this.cachePoint,lm);return}this.isTouchDrawing&&(e&&this.worker.unWritable(),this.viewId&&this.worker.removeDrawingWork(this.viewId)),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.localBitmapEraserPointCount=0,this.isTouchDrawing=!1}suppressNativeTouchGestures(t){var e;((e=this.eventTargetTouchAction)==null?void 0:e.element)!==t&&(this.restoreNativeTouchGestures(),this.eventTargetTouchAction={element:t,value:t.style.getPropertyValue("touch-action"),priority:t.style.getPropertyPriority("touch-action")},t.style.setProperty("touch-action","none","important"))}restoreNativeTouchGestures(t){const e=this.eventTargetTouchAction;!e||t&&e.element!==t||(e.value?e.element.style.setProperty("touch-action",e.value,e.priority):e.element.style.removeProperty("touch-action"),this.eventTargetTouchAction=void 0)}bindDisplayerEvent(t){this.suppressNativeTouchGestures(t),"PointerEvent"in window?t.addEventListener("pointerdown",this.pointerdown,!1):t.addEventListener("touchstart",this.touchstart,{passive:!1}),this.cursorEventElement=t.parentElement||t,this.cursorEventElement.addEventListener("mousemove",this.cursorMouseMove,!0),this.cursorEventElement.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){var e,r;t.removeEventListener("pointerdown",this.pointerdown,!1),t.removeEventListener("touchstart",this.touchstart,!1),this.restoreNativeTouchGestures(t),this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),(e=this.cursorEventElement)==null||e.removeEventListener("mousemove",this.cursorMouseMove,!0),(r=this.cursorEventElement)==null||r.removeEventListener("mouseleave",this.cursorMouseLeave,!1),this.cursorEventElement=void 0,t.removeEventListener("keydown",this.keydown,!0)}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}get maxDrawCount(){return this.control.pluginOptions.extras.bezier.maxDrawCount||He.bezier.maxDrawCount}isBitmapEraserTool(){const t=this.worker.getCurrentToolsData();return this.toolsKey===Q.BitMapEraser&&(t==null?void 0:t.toolsType)===Q.BitMapEraser}getFullLayerBitmapEraserMaxInputPoints(){var e;const t=this.worker.getCurrentToolsData();return this.toolsKey!==Q.BitMapEraser||(t==null?void 0:t.toolsType)!==Q.BitMapEraser?0:Oc((e=t.toolsOpt)==null?void 0:e.fullLayerDoingMaskMaxInputPoints)}checkConsumeCount(t=!0){if(this.pointLimitStopPending)return!0;const e=this.isBitmapEraserTool(),r=e?this.getFullLayerBitmapEraserMaxInputPoints():0;if(e&&t&&Math.max(this.localBitmapEraserPointCount,this.worker.getLocalInputPointCount(this.viewId,Q.BitMapEraser))>=r)return this.pointLimitStopPending=!0,this.stopEventHandler().catch(i=>{this.control.logger.error(`[Appliance]: Bitmap Eraser force-Done failed: ${i instanceof Error?i.message:String(i)}`)}).finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",Os.longBitmapEraser,this.viewId),this.pointLimitStopPending=!1,this.localBitmapEraserPointCount=0}),!0;e&&t&&(this.localBitmapEraserPointCount++,this.localBitmapEraserPointCount>=r&&(this.pointLimitStopPending=!0,Promise.resolve().then(()=>this.stopEventHandler()).catch(i=>{this.control.logger.error(`[Appliance]: Bitmap Eraser force-Done failed: ${i instanceof Error?i.message:String(i)}`)}).finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",Os.longBitmapEraser,this.viewId),this.pointLimitStopPending=!1,this.localBitmapEraserPointCount=0})));const n=this.worker.getConsumeCount();return this.cachePoint&&this.toolsKey&&this.toolsKey===Q.Pencil&&n>this.maxDrawCount?(this.stopEventHandler().catch(i=>{this.control.logger.error(`[Appliance]: Pencil force-Done failed: ${i instanceof Error?i.message:String(i)}`)}).finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",Os.longPencil,this.viewId)}),!0):!1}}class ASe extends vM{constructor(e,r,n){super(r,n,e);x(this,"_viewId");this._viewId=e}get viewId(){return this._viewId}setViewId(e){this._viewId=e}}class MM extends vM{constructor(t,e){super(t,e,Fe)}get viewId(){return Fe}updateSize(){this.setCanvassStyle()}}const PSe="index-module__Container__nLsM3",DSe="index-module__BackgroundBox__zfthZ",LSe="index-module__BackgroundSvgBox__Fv1ay",NSe="index-module__BackgroundSnapshotContent__NFLAl",OSe="index-module__BackgroundSnapshotBox__NEM-C",zSe="index-module__CanvasBox__j2Xe-",BSe="index-module__FloatCanvas__d1YR7",jSe="index-module__TopFloatCanvas__7IaCw",FSe="index-module__CanvasBoxSub__hcMeK",USe="index-module__SnapshotBox__--eeE",WSe="index-module__FloatBar__cm-EL",VSe="index-module__RotateBtn__HSSkf",$Se="index-module__ResizeBtn__yjvda",YSe="index-module__CursorBox__2UHvI",GSe="index-module__TextEditorContainer__Qm8KC",HSe="index-module__ResizeTowBox__HOllX",QSe="index-module__FloatBarBtn__FJrOG",yt={Container:PSe,BackgroundBox:DSe,BackgroundSvgBox:LSe,BackgroundSnapshotContent:NSe,BackgroundSnapshotBox:OSe,CanvasBox:zSe,FloatCanvas:BSe,TopFloatCanvas:jSe,CanvasBoxSub:FSe,SnapshotBox:USe,FloatBar:WSe,RotateBtn:VSe,ResizeBtn:$Se,CursorBox:YSe,TextEditorContainer:GSe,ResizeTowBox:HSe,FloatBarBtn:QSe},qSe={delete:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDZ2NmEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2aDBtMS0yYTIgMiAwIDAgMSAyLTJoMmEyIDIgMCAwIDEgMiAyaDBNMyA0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",duplicate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMSAySDZhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xVjRoMGwtMi0yeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTExIDJ2MWExIDEgMCAwIDAgMSAxaDFsLTItMnoiLz48cGF0aCBkPSJNOSAxNEg0YTEgMSAwIDAgMS0xLTFWNWgwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L2c+PC9zdmc+","layer-pressed":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzMzODFGRiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",layer:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",rotate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEzIDZhNiA2IDAgMSAxLTMuNzA5IDEuMjgzIi8+PHBhdGggZD0ibTEzIDYgMS40MTQgMi40NUwxMyA2bDIuNDUtMS40MTQiLz48L2c+PC9zdmc+","rotation-button":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+",rotation:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjRkZGIiBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+","font-colors-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","font-colors":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","to-bottom":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDEwdjhtMCAwLTItMm0yIDIgMi0ybS00IDZoMTJtLTYtNGg2bS02LTRoNm0tNi00aDYiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+","to-top":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDIydi04bTAgMC0yIDJtMi0yIDIgMm0tNC02aDEybS02IDRoNm0tNiA0aDZtLTYgNGg2IiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","bold-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",bold:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","underline-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",underline:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","italic-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",italic:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","unlock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiMzMzgxRkYiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0xYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDN2MyIgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+","lock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiM0NDRFNjAiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0zYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDV2MyIgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+",shapes:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","shapes-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","font-style-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","font-style":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",polygon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==","polygon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","polygon-vertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTA3NyAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU0My40NzQ1MjYgNDIuMzA3MzY4YTExOS4zNzY4NDIgMTE5LjM3Njg0MiAwIDAgMSAxMTAuODA3NTc5IDE2My44NGwxOTAuNTcxNzkgMTM4LjYxNzI2NGExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEgODMuMzc1MTU4IDIxOC43MDQ4NDJsLTc0LjMyMDg0MiAyMjguODM3MDUyYTExOS4zMjI5NDcgMTE5LjMyMjk0NyAwIDAgMS02MS4yNzgzMTYgMjIxLjg4NDYzMmMtNDYuNzgwNjMyIDAtODcuMzA5NDc0LTI2Ljk0NzM2OC0xMDYuODczMjYzLTY2LjEyODg0MmgtMjg5LjQxNDczN2ExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEtMTc5LjczODk0OC0xNDcuODMzMjYzbC03Mi4yNzI4NDItMjIyLjY5MzA1My0zLjM5NTM2OCAwLjEwNzc4OUExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAwIDEgMjEuODI3MzY4IDQ2Ni43Mjg0MjFMMjEuNTU3ODk1IDQ1OC4yMTMwNTNhMTE5LjM3Njg0MiAxMTkuMzc2ODQyIDAgMCAxIDE4My44MzQ5NDctMTAwLjUxMzY4NWwyMjMuNTAxNDc0LTE2Mi4zODQ4NDJhMTE5LjQzMDczNyAxMTkuNDMwNzM3IDAgMCAxIDExNC41ODAyMS0xNTMuMDYxMDUyek0yODkuNDE0NzM3IDg0MC4wNTcyNjNhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6IG01MDMuMTYxMjYzIDBhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6TTQ2Mi42ODYzMTYgMjQ5LjU4NjUyNkwyNDguMTMxMzY4IDQwNS41NTc4OTVhMTE5LjMyMjk0NyAxMTkuMzIyOTQ3IDAgMCAxLTQyLjg0NjMxNSAxNTMuMjIyNzM3bDcwLjcwOTg5NCAyMTcuMzU3NDczYTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMSAxMzIuNDE5MzY5IDEwOC4yMjA2MzJINjczLjY4NDIxMWExMTkuNDMwNzM3IDExOS40MzA3MzcgMCAwIDEgMTE5LjE2MTI2My0xMDguOTc1MTU4bDcxLjE0MTA1Mi0yMTguOTc0MzE2YTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMS02Mi4wODY3MzctMTY0LjIxNzI2M2wtMTg2LjM2OC0xMzUuMjc1Nzg5Yy0xOS45OTQ5NDcgMTUuMDkwNTI2LTQ1LjAwMjEwNSAyNC4xNDQ4NDItNzIuMDU3MjYzIDI0LjE0NDg0MmExMTguOTQ1Njg0IDExOC45NDU2ODQgMCAwIDEtODAuNzg4MjEtMzEuNDc0NTI3eiBtLTMyMS43NTE1NzkgMTUzLjkyMzM2OWE1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQwNjMxNiA1NC43MDMxNTggNTQuNzAzMTU4IDAgMCAwIDAtMTA5LjQwNjMxNnogbTc2Ny43MzA1MjYtMTIuNTU3NDc0YTU0LjcwMzE1OCA1NC43MDMxNTggMCAxIDAgMCAxMDkuNDA2MzE2IDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE2eiBtLTM2NS4xOTA3MzctMjg0LjAyNTI2M2E1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQ2MDIxIDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE1eiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",star:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","star-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","star-innerVertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTg1LjMzMzMzMyAwYTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODEuNDA4IDU5LjczMzMzM2g0OC4yMTMzMzR2ODUuMzMzMzM0TDE3MC42NjY2NjcgMTQ0Ljk4MTMzM1Y4NTMuMzMzMzMzaDY5My4zMzMzMzNsLTI2LjQ1MzMzMy02My40ODggNzguNzYyNjY2LTMyLjc2OCAzMi44NTMzMzQgNzguNzYyNjY3LTQyLjI0IDE3LjQ5MzMzM0g5MzguNjY2NjY3YTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODQuNzM2IDc1LjM0OTMzNEwxMDI0IDkzOC42NjY2NjdhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMS0xNzAuNjY2NjY3IDBIMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxLTg1LjMzMzMzNC04NS4zMzMzMzRWMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxIDAtMTcwLjY2NjY2N3ogbTc2NS4zNTQ2NjcgNTk5LjQ2NjY2N2wzMi44NTMzMzMgNzguNzYyNjY2LTc4Ljg0OCAzMi44NTMzMzQtMzIuNzY4LTc4Ljc2MjY2NyA3OC43NjI2NjctMzIuODUzMzMzeiBtLTY1LjcwNjY2Ny0xNTcuNTI1MzM0bDMyLjg1MzMzNCA3OC43NjI2NjctNzguNzYyNjY3IDMyLjg1MzMzMy0zMi43NjgtNzguNzYyNjY2IDc4Ljc2MjY2Ny0zMi44NTMzMzR6TTcxOS4zNiAyODQuNDE2bDMyLjg1MzMzMyA3OC43NjI2NjctNzguNzYyNjY2IDMyLjg1MzMzMy0zMi44NTMzMzQtNzguNzYyNjY3IDc4Ljc2MjY2Ny0zMi44NTMzMzN6IG0tNjUuNjIxMzMzLTE1Ny41MjUzMzNsMzIuODUzMzMzIDc4Ljc2MjY2Ni03OC43NjI2NjcgMzIuODUzMzM0LTMyLjg1MzMzMy03OC43NjI2NjcgNzguNzYyNjY3LTMyLjg1MzMzM3pNMzg1LjcwNjY2NyA1OS43MzMzMzN2ODUuMzMzMzM0aC04NS4zMzMzMzR2LTg1LjMzMzMzNGg4NS4zMzMzMzR6IG0xNzAuNjY2NjY2IDB2ODUuMzMzMzM0aC04NS4zMzMzMzN2LTg1LjMzMzMzNGg4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIiA+PC9wYXRoPjwvc3ZnPg==","star-innerRatio":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU2OS4zNDQgNDQ5LjUzNmwxNDYuOTQ0IDI4LjY3MiAxLjAyNC00LjYwOHY0LjYwOGgxLjAyNGM5LjcyOCAwIDE2Ljg5Ni03LjY4IDIwLjQ4LTE0Ljg0OGwxLjAyNC0yLjA0OHYtMi41NmMwLTUuNjMyIDAtMTEuMjY0LTUuMTItMTYuMzg0LTMuMDcyLTMuMDcyLTcuMTY4LTcuMTY4LTEyLjgtNy42OGwtMTI0LjkyOC0yNC4wNjRMNTQxLjY5NiAyODYuNzJjLTIuMDQ4LTQuNjA4LTYuNjU2LTguMTkyLTExLjc3Ni05LjcyOC01LjEyLTEuNTM2LTEwLjc1Mi0xLjUzNi0xNS4zNiAxLjAyNGwtMS41MzYgMC41MTItMS4wMjQgMS4wMjRjLTguMTkyIDguMTkyLTEwLjc1MiAxOS40NTYtNi42NTYgMjcuMTM2bDY0IDE0Mi44NDh6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PHBhdGggZD0iTTkzMS4zMjggNDAzLjQ1NmMtMTAuMjQtMzUuMzI4LTM4LjQtNjEuNDQtNzEuNjgtNjYuNTZsLTE4NC44MzItMzUuODQtODIuNDMyLTE4Mi43ODRjLTEyLjgtMzMuMjgtNDYuMDgtNTYuMzItODAuMzg0LTU2LjMyLTMzLjc5MiAwLTY0LjUxMiAyMC40OC03OS44NzIgNTMuNzZMMzQ5LjE4NCAyOTkuMDA4bC0xODQuMzIgMzUuMzI4Yy0zMy43OTIgNS4xMi02MS45NTIgMzEuMjMyLTcyLjE5MiA2Ni41Ni05LjcyOCAzNC4zMDQtMS4wMjQgNzIuMTkyIDIzLjA0IDk4LjgxNmwxMzEuNTg0IDEzMy42MzItMzUuODQgMTk2LjYwOGMtNS42MzIgMzQuODE2IDguNzA0IDcxLjY4IDM1Ljg0IDk0LjIwOCAxMy44MjQgMTEuMjY0IDM0LjMwNCAxOC40MzIgNTIuMjI0IDE4LjQzMiAxNi44OTYgMCAyOS42OTYtMy4wNzIgNDEuNDcyLTEwLjI0bDE2OC45Ni05MS4xMzYgMTY2LjkxMiA5MS4xMzYgMS4wMjQgMC41MTJjMTYuODk2IDYuNjU2IDI5LjY5NiA5LjcyOCA0MC40NDggOS43MjggMTQuMzM2IDAgMjcuNjQ4LTQuMDk2IDQwLjQ0OC03LjY4IDQuNjA4LTEuNTM2IDkuNzI4LTMuMDcyIDE0Ljg0OC00LjA5NmwyLjU2LTAuNTEyIDIuMDQ4LTEuNTM2YzI1LjA4OC0yMy4wNCAzNy44ODgtNTguODggMzIuNzY4LTkzLjY5NmwtMzMuMjgtMTk2LjYwOCAxMzEuNTg0LTEzNi4xOTJjMjQuMDY0LTI3LjY0OCAzMi4yNTYtNjIuOTc2IDIyLjAxNi05OC44MTZ6TTI3Ni45OTIgODM2LjA5Nmw0MS45ODQtMjMxLjkzNi0xNTcuMTg0LTE1OS4yMzJjLTUuNjMyLTUuNjMyLTguMTkyLTE3LjQwOC02LjY1Ni0yOS4xODQgMy41ODQtMTAuMjQgMTAuMjQtMTYuMzg0IDE5LjQ1Ni0xNy45MmwyMTguMTEyLTQxLjk4NCA5Ni4yNTYtMjE1LjU1MmMzLjA3Mi03LjE2OCAxMi44LTE0LjMzNiAyMC40OC0xNC4zMzZzMTcuNDA4IDcuMTY4IDIwLjQ4IDE0Ljg0OGw5OC4zMDQgMjE1LjA0IDIxOC4xMTIgNDEuOTg0YzcuMTY4IDEuNTM2IDE1LjM2IDcuMTY4IDE2Ljg5NiAxNi4zODR2My4wNzJjMi4wNDggMTEuNzc2LTAuNTEyIDIyLjUyOC02LjY1NiAzMC43Mkw2OTkuOTA0IDYwOS4yOGwzOS45MzYgMjMxLjQyNGMxLjUzNiAxMC43NTItMi4wNDggMjAuNDgtMTAuMjQgMjcuMTM2bC0xLjAyNCAwLjUxMmMtMi41NiAyLjU2LTYuNjU2IDQuMDk2LTExLjI2NCA0LjA5Ni0yLjA0OCAwLTcuMTY4LTEuNTM2LTExLjI2NC0zLjU4NGwtMTk3LjEyLTEwOC4wMzItMTk5LjE2OCAxMDIuOTEyYy00LjA5NiAyLjA0OC05LjIxNiAzLjU4NC0xMS43NzYgMy41ODQtNC42MDggMC04LjcwNC0xLjUzNi0xMS4yNjQtNC4wOTZsLTEuMDI0LTAuNTEyYy02LjY1Ni02LjE0NC0xMC43NTItMTYuMzg0LTguNzA0LTI2LjYyNHoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=",speechBallon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=","speechBallon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48L3N2Zz4=","speechBallon-placement":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU3NiAyMTMuMzMzMzMzbDIyLjYxMzMzMyAyMi42MTMzMzRhMzIgMzIgMCAwIDAgMC00NS4yMjY2NjdMNTc2IDIxMy4zMzMzMzN6IG0tNjIuNzItMTA3Ljk0NjY2NmEzMiAzMiAwIDEgMC00NS4yMjY2NjcgNDUuMjI2NjY2bDQ1LjIyNjY2Ny00NS4yMjY2NjZ6IG0tNDUuMjI2NjY3IDE3MC42NjY2NjZhMzIgMzIgMCAwIDAgNDUuMjI2NjY3IDQ1LjIyNjY2N2wtNDUuMjI2NjY3LTQ1LjIyNjY2N3pNNDQ4IDgxMC42NjY2NjdsLTIyLjYxMzMzMy0yMi42MTMzMzRhMzIgMzIgMCAwIDAgMCA0NS4yMjY2NjdsMjIuNjEzMzMzLTIyLjYxMzMzM3ogbTEwNy45NDY2NjctNjIuNzJhMzIgMzIgMCAxIDAtNDUuMjI2NjY3LTQ1LjIyNjY2N2w0NS4yMjY2NjcgNDUuMjI2NjY3eiBtLTQ1LjIyNjY2NyAxNzAuNjY2NjY2YTMyIDMyIDAgMSAwIDQ1LjIyNjY2Ny00NS4yMjY2NjZsLTQ1LjIyNjY2NyA0NS4yMjY2NjZ6TTgxMC42NjY2NjcgNTc2bC0yMi42MTMzMzQgMjIuNjEzMzMzYTMyIDMyIDAgMCAwIDQ1LjIyNjY2NyAwTDgxMC42NjY2NjcgNTc2eiBtMTA3Ljk0NjY2Ni02Mi43MmEzMiAzMiAwIDEgMC00NS4yMjY2NjYtNDUuMjI2NjY3bDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAtNDUuMjI2NjY3IDQ1LjIyNjY2N2w0NS4yMjY2NjctNDUuMjI2NjY3ek0yMTMuMzMzMzMzIDQ0OGwyMi42MTMzMzQtMjIuNjEzMzMzYTMyIDMyIDAgMCAwLTQ1LjIyNjY2NyAwbDIyLjYxMzMzMyAyMi42MTMzMzN6IG02Mi43MiAxMDcuOTQ2NjY3YTMyIDMyIDAgMCAwIDQ1LjIyNjY2Ny00NS4yMjY2NjdsLTQ1LjIyNjY2NyA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAgNDUuMjI2NjY2IDQ1LjIyNjY2N2wtNDUuMjI2NjY2LTQ1LjIyNjY2N3pNMzA5LjMzMzMzMyAyMTMuMzMzMzMzQTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMjM0LjY2NjY2NyAyODh2NjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDM3My4zMzMzMzMgMjEzLjMzMzMzM2gtNjR6TTIzNC42NjY2NjcgMjg4QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMTYwIDIxMy4zMzMzMzNoLTY0QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAyMzQuNjY2NjY3IDM1MnYtNjR6TTE2MCAyMTMuMzMzMzMzYzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2NnYtNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDk2IDIxMy4zMzMzMzNoNjR6TTIzNC42NjY2NjcgMTM4LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NiA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIzNC42NjY2NjcgNzQuNjY2NjY3djY0ek0zNDEuMzMzMzMzIDI0NS4zMzMzMzNoMjM0LjY2NjY2N3YtNjRIMzQxLjMzMzMzM3Y2NHogbTI1Ny4yOC01NC42MTMzMzNsLTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NiA4NS4zMzMzMzQgODUuMzMzMzM0IDQ1LjIyNjY2Ni00NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsLTg1LjMzMzMzNCA4NS4zMzMzMzMgNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2Njd6TTY1MC42NjY2NjcgODEwLjY2NjY2N2ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2NiAxMzguNjY2NjY2di02NEE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxIDcxNC42NjY2NjcgODEwLjY2NjY2N2gtNjR6IG0xMzguNjY2NjY2IDEzOC42NjY2NjZBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDkyOCA4MTAuNjY2NjY3aC02NGE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxLTc0LjY2NjY2NyA3NC42NjY2NjZ2NjR6TTkyOCA4MTAuNjY2NjY3YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY3LTEzOC42NjY2Njd2NjRjNDEuMjE2IDAgNzQuNjY2NjY3IDMzLjQ1MDY2NyA3NC42NjY2NjcgNzQuNjY2NjY3aDY0eiBtLTEzOC42NjY2NjctMTM4LjY2NjY2N0ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgNjUwLjY2NjY2NyA4MTAuNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY2LTc0LjY2NjY2N3YtNjR6IG0tMTA2LjY2NjY2NiAxMDYuNjY2NjY3aC0yMzQuNjY2NjY3djY0SDY4Mi42NjY2Njd2LTY0eiBtLTIxMi4wNTMzMzQgNTQuNjEzMzMzbDg1LjMzMzMzNC04NS4zMzMzMzMtNDUuMjI2NjY3LTQ1LjIyNjY2Ny04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsODUuMzMzMzMzIDg1LjMzMzMzMyA0NS4yMjY2NjctNDUuMjI2NjY2LTg1LjMzMzMzNC04NS4zMzMzMzQtNDUuMjI2NjY2IDQ1LjIyNjY2N3pNNjcyIDIzNC42NjY2NjdBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDgxMC42NjY2NjcgMzczLjMzMzMzM3YtNjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjctNzQuNjY2NjY2aC02NHpNODEwLjY2NjY2NyAzNzMuMzMzMzMzYTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAxMzguNjY2NjY2LTEzOC42NjY2NjZoLTY0QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgODEwLjY2NjY2NyAzMDkuMzMzMzMzdjY0eiBtMTM4LjY2NjY2Ni0xMzguNjY2NjY2QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCA4MTAuNjY2NjY3IDk2djY0YzQxLjIxNiAwIDc0LjY2NjY2NyAzMy40NTA2NjcgNzQuNjY2NjY2IDc0LjY2NjY2N2g2NHpNODEwLjY2NjY2NyA5NmExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAtMTM4LjY2NjY2NyAxMzguNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2N3YtNjR6TTc3OC42NjY2NjcgMzQxLjMzMzMzM3YyMzQuNjY2NjY3aDY0VjM0MS4zMzMzMzNoLTY0eiBtNTQuNjEzMzMzIDI1Ny4yOGw4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2NjctODUuMzMzMzM0IDg1LjMzMzMzNCA0NS4yMjY2NjcgNDUuMjI2NjY2eiBtMC00NS4yMjY2NjZsLTg1LjMzMzMzMy04NS4zMzMzMzQtNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2Ny00NS4yMjY2NjZ6TTEzOC42NjY2NjcgNzg5LjMzMzMzM2MwLTQxLjIxNiAzMy40NTA2NjctNzQuNjY2NjY3IDc0LjY2NjY2Ni03NC42NjY2NjZ2LTY0YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY2IDEzOC42NjY2NjZoNjR6TTIxMy4zMzMzMzMgNzE0LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NyA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIxMy4zMzMzMzMgNjUwLjY2NjY2N3Y2NHogbTc0LjY2NjY2NyA3NC42NjY2NjZBNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMSAyMTMuMzMzMzMzIDg2NHY2NGExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2Ny0xMzguNjY2NjY3aC02NHpNMjEzLjMzMzMzMyA4NjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjYtNzQuNjY2NjY3aC02NEExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMjEzLjMzMzMzMyA5Mjh2LTY0ek0yNDUuMzMzMzMzIDY4Mi42NjY2Njd2LTIzNC42NjY2NjdoLTY0VjY4Mi42NjY2NjdoNjR6IG0tNTQuNjEzMzMzLTIxMi4wNTMzMzRsODUuMzMzMzMzIDg1LjMzMzMzNCA0NS4yMjY2NjctNDUuMjI2NjY3LTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NnogbTAtNDUuMjI2NjY2bC04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2NjcgODUuMzMzMzM0LTg1LjMzMzMzNC00NS4yMjY2NjctNDUuMjI2NjY2eiIgIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4="};function At(s){return qSe[s]}const ZSe=s=>{const{workIds:t,mananger:e}=s;return H.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onPointerUp:r=>{r.cancelable&&r.preventDefault(),r.stopPropagation(),r.nativeEvent.stopImmediatePropagation(),Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:t||[Le],viewId:e.viewId})}},H.createElement("img",{alt:"icon",src:At("delete")}))},KSe=s=>{const{workIds:t,viewId:e}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:r=>{r.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.CopyNode,{workIds:t||[Le],viewId:e})}},H.createElement("img",{alt:"icon",src:At("duplicate")}))},hm=s=>{const{icon:t,onPointerUpHandler:e}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:e},H.createElement("img",{src:At(t)}))},XSe=s=>{const{open:t,setOpen:e,floatBarRef:r}=s,{floatBarData:n,mananger:i}=H.useContext(ut),[o,a]=H.useState([]),c=H.useMemo(()=>{if(r!=null&&r.current&&ve.isNumber(n==null?void 0:n.y)&&(i!=null&&i.height)){if(r.current.offsetTop&&r.current.offsetTop+n.y>180){const h={};return h.top="inherit",h.bottom=50,h}else if(!r.current.offsetTop&&(i==null?void 0:i.height)-r.current.offsetTop-n.y<120){const h={};return h.top="inherit",h.bottom=50,h}}},[r==null?void 0:r.current,n,i]),l=H.useMemo(()=>t?H.createElement("div",{className:"image-layer-menu",style:c},H.createElement(hm,{icon:"to-top",onPointerUpHandler:h=>{h.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.ZIndexNode,{workIds:[Le],layer:bn.Top,viewId:i==null?void 0:i.viewId})}}),H.createElement(hm,{icon:"to-bottom",onPointerUpHandler:h=>{h.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.ZIndexNode,{workIds:[Le],layer:bn.Bottom,viewId:i==null?void 0:i.viewId})}})):null,[t,c]),u=h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),e(!t)};return H.useEffect(()=>{ve.isEqual(n==null?void 0:n.selectIds,o)||n!=null&&n.selectIds&&!ve.isEqual(n==null?void 0:n.selectIds,o)&&(a(n==null?void 0:n.selectIds),e(!1))},[t,n,o,e]),H.createElement("div",{className:`button normal-button ${t&&"active"}`,onPointerUp:u},l,H.createElement("img",{alt:"icon",src:At(t?"layer-pressed":"layer")}))},Mo=s=>{s.stopPropagation(),s.nativeEvent.stopImmediatePropagation()},JSe=()=>H.createElement("svg",{style:{marginLeft:"2px"},viewBox:"0 0 1025 1024",width:"14",height:"14"},H.createElement("path",{d:"M1016.5248 493.8752c-9.984-9.984-26.2144-9.984-36.1984 0l-183.6032 183.6032c-29.952 29.952-78.6944 29.952-108.5952 0l-239.2064-239.2064c-14.4384-14.4384-22.3744-33.6896-22.3744-54.3232s7.936-39.8848 22.3744-54.3232l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984s-26.2144-9.984-36.1984 0l-183.6032 183.6032c-24.1152 24.1152-37.376 56.2176-37.376 90.5216 0 14.592 2.4576 28.8256 7.0656 42.1888l-374.8864 374.8864c-4.8128 4.8128-7.4752 11.3152-7.4752 18.1248l0 76.8c0 14.1312 11.4688 25.6 25.6 25.6l486.4 0c6.8096 0 13.312-2.7136 18.1248-7.4752l170.0864-170.0864c13.3632 4.6592 27.5968 7.0656 42.1888 7.0656 34.2528 0 66.4064-13.2608 90.5216-37.376l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984zM501.4016 870.4l-450.2016 0 0-40.6016 358.5024-358.5024c1.024 1.0752 1.9968 2.1504 3.0208 3.1744l239.2064 239.2064c1.024 1.024 2.0992 2.048 3.1744 3.0208l-153.7024 153.7024z",fill:"#000000"})),wM=s=>{const{activeColor:t,onPointerUpHandler:e}=s;return H.createElement("div",{className:`font-color-button ${t==="transparent"?"active":""}`,onPointerUp:e},H.createElement("div",{className:"circle none"}))},$c=s=>{const{color:t,activeColor:e,onPointerUpHandler:r}=s;return H.createElement("div",{className:`font-color-button ${t===e?"active":""}`,onPointerUp:r},H.createElement("div",{className:"circle",style:{backgroundColor:Et(t,1)}}))},Yc=s=>{const{opacity:t,activeColor:e,setCurOpacity:r}=s,[n,i]=H.useState({x:108,y:0}),o=H.useRef(0);if(H.useEffect(()=>{i({x:t*100+8,y:0})},[]),!e)return null;const a=(h,d)=>{const f=Math.min(Math.max(h-8,0),100)/100;(t!==f||d===he.Done)&&r(f,e,d)},c=(h,d)=>{d.x!==(n==null?void 0:n.x)&&i({x:d.x,y:0}),!o.current&&(o.current=setTimeout(()=>{o.current=0,a(d.x,he.Doing)},100))},l=()=>{r(t,e,he.Start)},u=(h,d)=>{d.x!==(n==null?void 0:n.x)&&i({x:d.x,y:0}),o.current&&(clearTimeout(o.current),o.current=0),a(d.x,he.Done)};return H.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:h=>{o.current&&(clearTimeout(o.current),o.current=0);const d=h.nativeEvent.offsetX,f=Math.min(Math.max(d-12,0),100)/100;i({x:f*100+8,y:0}),r(f,e,he.Done)}},H.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${Et(e,0)}, ${Et(e,1)})`}}),H.createElement("div",{className:"range-opacity"},H.createElement(Ki,{bounds:"parent",axis:"x",position:n,onDrag:c,onStart:l,onStop:u},H.createElement("div",{className:"circle",style:{backgroundColor:Et(e,t)},onPointerUp:Mo}))))},_Se=s=>{const{min:t,max:e,activeNumber:r,setActiveNumber:n,color:i}=s,[o,a]=H.useState({x:108,y:0}),c=H.useRef(0);if(H.useEffect(()=>{const f=Math.ceil((r-t)/(e-t)*100)+8;a({x:f,y:0})},[]),!r)return null;const l=(f,g)=>{const y=Math.ceil(Math.max(f-8,0)/100*(e-t)+t);(r!==y||g===he.Done)&&n(y,g)},u=(f,g)=>{g.x!==(o==null?void 0:o.x)&&a({x:g.x,y:0}),!c.current&&(c.current=setTimeout(()=>{c.current=0,l(g.x,he.Doing)},100))},h=()=>{n(r,he.Start)},d=(f,g)=>{g.x!==(o==null?void 0:o.x)&&a({x:g.x,y:0}),c.current&&(clearTimeout(c.current),c.current=0),l(g.x,he.Done)};return H.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:f=>{c.current&&(clearTimeout(c.current),c.current=0);const g=f.nativeEvent.offsetX,y=Math.ceil(Math.max(g-12,0)/100*(e-t)+t),S=Math.ceil((y-t)/(e-t)*100)+8;a({x:S,y:0}),n(y,he.Done)}},H.createElement("div",{className:"range-color",style:{backgroundColor:i}}),H.createElement("div",{className:"range-opacity"},H.createElement(Ki,{bounds:"parent",axis:"x",position:o,onDrag:u,onStart:h,onStop:d},H.createElement("div",{className:"circle",style:{backgroundColor:i},onPointerUp:Mo},H.createElement("div",{className:"range-opacity-data-icon"},r)))))},eTe=s=>{const{useStroke:t,color:e,activeStrokeType:r,setStrokeType:n}=s;return H.createElement("div",{className:"stroke-type-box"},!!t&&H.createElement("div",{className:`stroke-type-box-item Stroke ${r===Be.Stroke&&"active"}`,style:{backgroundColor:e},onPointerUp:()=>{n(Be.Stroke)}}),H.createElement("div",{className:`stroke-type-box-item Normal ${r===Be.Normal&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.Normal)}}),H.createElement("div",{className:`stroke-type-box-item Dotted ${r===Be.Dotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.Dotted)}}),H.createElement("div",{className:`stroke-type-box-item LongDotted ${r===Be.LongDotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.LongDotted)}}))},tTe=s=>{const{open:t,setOpen:e,floatBarRef:r}=s,{floatBarData:n,floatBarColors:i,mananger:o,setFloatBarData:a}=H.useContext(ut),[c,l]=H.useState(),[u,h]=H.useState(1);H.useEffect(()=>{if(n!=null&&n.strokeColor){const[C,N]=Bc(n.strokeColor);l(C),h(N)}},[n]);const d=H.useMemo(()=>{if(r!=null&&r.current&&n&&ve.isNumber(n==null?void 0:n.y)&&(o!=null&&o.height)){if(r.current.offsetTop&&r.current.offsetTop+n.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!r.current.offsetTop&&(o==null?void 0:o.height)-r.current.offsetTop-n.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[n,r,o==null?void 0:o.height]),f=H.useMemo(()=>H.createElement(Yc,{key:"strokeColors",opacity:u,activeColor:c,setCurOpacity:(C,N,T)=>{h(C);const p=Et(N,C);n!=null&&n.strokeColor&&a({strokeColor:p}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],strokeColor:p,workState:T,viewId:o==null?void 0:o.viewId})}}),[u,c,n==null?void 0:n.strokeColor,o==null?void 0:o.viewId,a]),g=H.useMemo(()=>c&&n&&n.thickness?H.createElement(_Se,{key:"strokeThickness",min:Math.min(n.thickness,(o==null?void 0:o.control.pluginOptions.extras.strokeWidth.min)||He.strokeWidth.min),max:Math.max(n.thickness,(o==null?void 0:o.control.pluginOptions.extras.strokeWidth.max)||He.strokeWidth.max),activeNumber:n.thickness,setActiveNumber:(C,N)=>{n!=null&&n.thickness&&a({thickness:C}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],thickness:C,workState:N,viewId:o==null?void 0:o.viewId})},color:c}):null,[c,n,o==null?void 0:o.control.pluginOptions.extras.strokeWidth.max,o==null?void 0:o.control.pluginOptions.extras.strokeWidth.min,o==null?void 0:o.viewId,a]),y=H.useMemo(()=>c&&n&&(n!=null&&n.strokeType)?H.createElement(eTe,{key:"strokeType",useStroke:n==null?void 0:n.useStroke,activeStrokeType:n.strokeType,setStrokeType:C=>{n.strokeType&&a({strokeType:C}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],strokeType:C,workState:he.Done,viewId:o==null?void 0:o.viewId})},color:c}):null,[c,n,o==null?void 0:o.viewId,a]),S=H.useMemo(()=>t?H.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},y,g,H.createElement("div",{className:"font-colors-line"}),i.concat().map((C,N)=>{const T=vo(...C);return H.createElement($c,{key:N,color:T,activeColor:c,onPointerUpHandler:p=>{p.stopPropagation(),l(T);const m=Et(T,u);n!=null&&n.strokeColor&&(n.strokeColor=m,a({strokeColor:m})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],workState:he.Done,strokeColor:m,viewId:o==null?void 0:o.viewId})}})}),f):null,[t,d,y,g,i,f,c,u,n,o==null?void 0:o.viewId,a]),b=H.useMemo(()=>c?H.createElement("div",{className:"color-bar-ring",style:{backgroundColor:Et(c,u)}},H.createElement("div",{className:"circle"})):null,[c,u]);return H.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!t)}},b,S)},rTe=s=>{const{open:t,setOpen:e,floatBarRef:r}=s,{floatBarData:n,floatBarColors:i,mananger:o,setFloatBarData:a}=H.useContext(ut),[c,l]=H.useState(),[u,h]=H.useState(1);H.useEffect(()=>{if(n!=null&&n.fillColor){const[S,b]=(n==null?void 0:n.fillColor)==="transparent"&&["transparent",1]||Bc(n.fillColor);l(S),h(b)}},[n]);const d=H.useMemo(()=>{if(r!=null&&r.current&&ve.isNumber(n==null?void 0:n.y)&&(o!=null&&o.height)){if(r.current.offsetTop&&r.current.offsetTop+n.y>200){const S={};return S.top="inherit",S.bottom=50,S}else if(!r.current.offsetTop&&(o==null?void 0:o.height)-r.current.offsetTop-n.y<140){const S={};return S.top="inherit",S.bottom=50,S}}},[r,n,o==null?void 0:o.height]),f=H.useMemo(()=>c&&c!=="transparent"?H.createElement(Yc,{key:"fillColors",opacity:u||0,activeColor:c,setCurOpacity:(S,b,C)=>{h(S);const N=Et(b,S);n!=null&&n.fillColor&&(n.fillColor=N,a({fillColor:N})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],fillColor:c&&Et(b,S),workState:C,viewId:o==null?void 0:o.viewId})}}):null,[c,u,n,o==null?void 0:o.viewId,a]),g=H.useMemo(()=>t?H.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:S=>{S.stopPropagation(),S.nativeEvent.stopImmediatePropagation()}},H.createElement(wM,{activeColor:c,onPointerUpHandler:S=>{S.stopPropagation(),l("transparent");const b="transparent";n!=null&&n.fillColor&&(n.fillColor=b,a({fillColor:b})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],workState:he.Done,fillColor:b,viewId:o==null?void 0:o.viewId})}}),i.map((S,b)=>{const C=vo(...S);return H.createElement($c,{key:b,color:C,activeColor:c,onPointerUpHandler:N=>{N.cancelable&&N.preventDefault(),N.stopPropagation(),l(C);const T=Et(C,u);n!=null&&n.fillColor&&(n.fillColor=T,a({fillColor:T})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],workState:he.Done,fillColor:T,viewId:o==null?void 0:o.viewId})}})}),f):null,[t,d,c,i,f,n,o==null?void 0:o.viewId,a,u]),y=H.useMemo(()=>{const S=c&&c!=="transparent"&&Et(c,u)||"transparent";return H.createElement("div",{className:"color-bar-fill"},H.createElement("div",{className:"circle",style:{backgroundColor:S}}))},[c,u]);return H.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onPointerUp:S=>{S.stopPropagation(),S.nativeEvent.stopImmediatePropagation(),e(!t)}},y,g)},nTe=s=>{const{open:t,setOpen:e,textOpt:r,workIds:n,floatBarRef:i}=s,{floatBarColors:o,mananger:a,setFloatBarData:c,floatBarData:l}=H.useContext(ut),[u,h]=H.useState(),[d,f]=H.useState(1);H.useEffect(()=>{if(r!=null&&r.fontColor){const[C,N]=(r==null?void 0:r.fontColor)==="transparent"&&["transparent",0]||Bc(r.fontColor);h(C),f(N)}},[r==null?void 0:r.fontColor]);const g=H.useMemo(()=>{if(i!=null&&i.current&&l&&ve.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+l.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-l.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[i,l,a==null?void 0:a.height]),y=H.useMemo(()=>u&&u!=="transparent"?H.createElement(Yc,{key:"fontColors",opacity:d,activeColor:u,setCurOpacity:(C,N,T)=>{f(C);const p=Et(N,C);l!=null&&l.textOpt&&(l.textOpt.fontColor=p,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],fontColor:u&&p,workState:T,viewId:a==null?void 0:a.viewId})}}):null,[c,u,d,a==null?void 0:a.control.room,a==null?void 0:a.viewId,l==null?void 0:l.textOpt,n]),S=H.useMemo(()=>t?H.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},o.map((C,N)=>{const T=vo(...C);return H.createElement($c,{key:N,color:T,activeColor:u,onPointerUpHandler:p=>{p.stopPropagation(),h(T);const m=Et(T,d);l!=null&&l.textOpt&&(l.textOpt.fontColor=m,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],workState:he.Done,fontColor:m,viewId:a==null?void 0:a.viewId})}})}),y):null,[c,t,o,y,u,d,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),b=H.useMemo(()=>{const C=u&&u!=="transparent"&&Et(u,d)||"transparent";return H.createElement("div",{className:"color-bar"},H.createElement("div",{className:"color-bar-color",style:{backgroundColor:C}}))},[u,d]);return H.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!t)}},H.createElement("img",{alt:"icon",src:At("font-colors")}),b,S)},iTe=s=>{const{open:t,setOpen:e,textOpt:r,workIds:n,floatBarRef:i}=s,{floatBarColors:o,mananger:a,setFloatBarData:c,floatBarData:l}=H.useContext(ut),[u,h]=H.useState(),[d,f]=H.useState(1);H.useEffect(()=>{if(r!=null&&r.fontBgColor){const[C,N]=(r==null?void 0:r.fontBgColor)==="transparent"&&["transparent",1]||Bc(r.fontBgColor);h(C),f(N)}},[r==null?void 0:r.fontBgColor]);const g=H.useMemo(()=>{if(i!=null&&i.current&&l&&ve.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+l.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-l.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[i,l,a==null?void 0:a.height]),y=H.useMemo(()=>u&&u!=="transparent"?H.createElement(Yc,{key:"fontBgColor",opacity:d||0,activeColor:u,setCurOpacity:(C,N,T)=>{f(C);const p=Et(N,C);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=p,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],fontBgColor:u&&Et(N,C),workState:T,viewId:a==null?void 0:a.viewId})}}):null,[u,d,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,c]),S=H.useMemo(()=>t?H.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},H.createElement(wM,{activeColor:u,onPointerUpHandler:C=>{C.stopPropagation();const N="transparent";h(N),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=N,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],workState:he.Done,fontBgColor:N,viewId:a==null?void 0:a.viewId})}}),o.map((C,N)=>{const T=vo(...C);return H.createElement($c,{key:N,color:T,activeColor:u,onPointerUpHandler:p=>{p.stopPropagation(),h(T);const m=Et(T,d);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=m,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],workState:he.Done,fontBgColor:Et(T,d),viewId:a==null?void 0:a.viewId})}})}),y):null,[c,t,o,y,d,u,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),b=H.useMemo(()=>{const C=u&&u!=="transparent"&&Et(u,d)||"transparent";return H.createElement("div",{className:"color-bar",style:{marginTop:0}},H.createElement("div",{className:"color-bar-color",style:{backgroundColor:C}}))},[u,d]);return H.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!t)}},H.createElement(JSe,null),b,S)},sTe=s=>{const{bold:t,setBold:e,workIds:r,viewId:n}=s,i=o=>{const a=t==="bold"?"normal":"bold";o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:r,viewId:n,bold:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:At(t==="bold"?"bold-active":"bold")}))},oTe=s=>{const{underline:t,setUnderline:e,workIds:r,viewId:n}=s,i=o=>{const a=!t;o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:r,viewId:n,underline:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:At(t?"underline-active":"underline")}))},aTe=s=>{const{lineThrough:t,setLineThrough:e,workIds:r,viewId:n}=s,i=o=>{const a=!t;o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:r,viewId:n,lineThrough:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:At(t?"line-through-active":"line-through")}))},cTe=s=>{const{italic:t,setItalic:e,workIds:r,viewId:n}=s,i=o=>{const a=t==="italic"?"normal":"italic";o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:r,viewId:n,italic:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:At(t==="italic"?"italic-active":"italic")}))},lTe=s=>{const{open:t,setOpen:e,textOpt:r,workIds:n,style:i,floatBarRef:o}=s,{mananger:a,floatBarData:c}=H.useContext(ut),[l,u]=H.useState("normal"),[h,d]=H.useState("normal"),[f,g]=H.useState(!1),[y,S]=H.useState(!1);H.useEffect(()=>{r!=null&&r.bold&&u(r.bold),ve.isBoolean(r==null?void 0:r.underline)&&g(r.underline||!1),ve.isBoolean(r==null?void 0:r.lineThrough)&&S(r.lineThrough||!1),r!=null&&r.italic&&d(r.italic)},[r]);const b=H.useMemo(()=>{if(i&&(o!=null&&o.current)&&ve.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(o.current.offsetTop&&o.current.offsetTop+c.y>180){const N={};return N.top="inherit",N.bottom=50,N}else if(!o.current.offsetTop&&(a==null?void 0:a.height)-o.current.offsetTop-c.y<120){const N={};return N.top="inherit",N.bottom=50,N}}},[i,o==null?void 0:o.current,c,a]),C=H.useMemo(()=>t?H.createElement("div",{className:"font-style-menu",style:b,onPointerUp:N=>{N.stopPropagation(),N.nativeEvent.stopImmediatePropagation()}},H.createElement(sTe,{workIds:n||[Le],bold:l,setBold:u,viewId:a==null?void 0:a.viewId}),H.createElement(oTe,{workIds:n||[Le],underline:f,setUnderline:g,viewId:a==null?void 0:a.viewId}),H.createElement(aTe,{workIds:n||[Le],lineThrough:y,setLineThrough:S,viewId:a==null?void 0:a.viewId}),H.createElement(cTe,{workIds:n||[Le],italic:h,setItalic:d,viewId:a==null?void 0:a.viewId})):null,[t,n,l,a==null?void 0:a.viewId,f,y,h,b]);return H.createElement("div",{className:`button normal-button ${t&&"active"}`,onPointerUp:N=>{N.stopPropagation(),N.nativeEvent.stopImmediatePropagation(),e(!t)}},H.createElement("img",{alt:"icon",src:At(t?"font-style-active":"font-style")}),C)},uTe=s=>{const{style:t,onClickHandler:e}=s;return H.createElement("div",{className:"font-size-menu",style:t,onPointerUp:r=>{r.stopPropagation(),r.nativeEvent.stopImmediatePropagation()}},Ar.map(r=>H.createElement("div",{className:"font-size-btn",key:r,onPointerUp:()=>{e(r)}},r)))},hTe=s=>{const t=H.useRef(null),{open:e,setOpen:r,textOpt:n,workIds:i,floatBarRef:o}=s,{mananger:a,floatBarData:c}=H.useContext(ut),[l,u]=H.useState(0),h=Ar.length-1;H.useEffect(()=>{n!=null&&n.fontSize&&(u(n.fontSize),t.current&&(t.current.value=n.fontSize.toString()))},[n==null?void 0:n.fontSize]);const d=H.useMemo(()=>{if(o!=null&&o.current&&ve.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(o.current.offsetTop&&o.current.offsetTop+c.y>180){const b={};return b.top="inherit",b.bottom=35,b}else if(!o.current.offsetTop&&(a==null?void 0:a.height)-o.current.offsetTop-c.y<120){const b={};return b.top="inherit",b.bottom=35,b}}},[o==null?void 0:o.current,c,a]);function f(b){u(b),b&&b>=Ar[0]&&b<=Ar[h]&&Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:i||[Le],fontSize:b,viewId:a==null?void 0:a.viewId})}const g=b=>{var C;(C=t.current)==null||C.blur(),r(!1),S(b)},y=H.useMemo(()=>e?H.createElement(uTe,{onClickHandler:g,style:d}):null,[e,g,d]),S=b=>{b>Ar[h]&&(b=Ar[h]),b<Ar[0]&&(b=Ar[0]),f(b)};return H.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onPointerUp:b=>{b.stopPropagation(),b.nativeEvent.stopImmediatePropagation()}},H.createElement("input",{className:"font-size-input",ref:t,onTouchEnd:()=>{t.current&&t.current.focus()},onClick:()=>{r(!e),t.current&&t.current.focus()},onKeyDown:b=>{if(b.stopPropagation(),b.nativeEvent.stopImmediatePropagation(),b.key==="Backspace"){const C=window.getSelection(),N=C==null?void 0:C.getRangeAt(0);if(N!=null&&N.collapsed)return b.cancelable&&b.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:b=>{var C;if(b.stopPropagation(),b.nativeEvent.stopImmediatePropagation(),t.current){const N=t.current.value,T=parseInt(N);isNaN(T)?t.current.value="0":t.current.value=T.toString(),T&&b.key==="Enter"&&(S(T),(C=t.current)==null||C.blur(),r(!1))}}}),H.createElement("div",{className:"font-size-btns"},H.createElement("div",{className:"font-size-add",onPointerUp:()=>{S(l+Ar[0])}}),H.createElement("div",{className:"font-size-cut",onPointerUp:()=>{S(l-Ar[0])}})),y)},dTe=s=>{const{workIds:t,mananger:e,islocked:r}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:n=>{n.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.SetLock,{workIds:t||[Le],isLocked:!r,viewId:e==null?void 0:e.viewId})}},H.createElement("img",{alt:"icon",src:At(r?"unlock-new":"lock-new")}))},rh=s=>{const{icon:t,min:e,max:r,step:n,value:i,onInputHandler:o}=s,[a,c]=H.useState(0),l=H.useRef(null),u=h=>{h>r&&(h=r),h<e&&(h=e),c(h),o(h),l.current&&(l.current.value=h.toString())};return H.useEffect(()=>{i&&(c(i),l.current&&(l.current.value=i.toString()))},[i]),H.createElement("div",{className:"button input-button"},H.createElement("img",{src:At(t)}),H.createElement("input",{className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&l.current.focus()},onKeyDown:h=>{if(h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),h.key==="Backspace"){const d=window.getSelection(),f=d==null?void 0:d.getRangeAt(0);if(f!=null&&f.collapsed)return h.cancelable&&h.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:h=>{if(h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),l.current){const d=l.current.value,f=parseInt(d);isNaN(f)?l.current.value="0":l.current.value=f.toString()}},onChange:h=>{const d=h.target.value,f=parseInt(d);f&&f&&f>=e&&f<=r&&u(f)}}),H.createElement("div",{className:"input-number-btns"},H.createElement("div",{className:"input-number-add",onPointerUp:()=>{u(a+n)}}),H.createElement("div",{className:"input-number-cut",onPointerUp:()=>{u(a-n)}})))},fTe=s=>{const{icon:t,min:e,max:r,step:n,value:i,onInputHandler:o}=s;return H.createElement("div",{className:"button input-button"},H.createElement("img",{src:At(t)}),H.createElement(gTe,{min:e,max:r,step:n,value:i,onInputHandler:o}))},gTe=s=>{const{value:t,min:e,max:r,onInputHandler:n}=s,[i,o]=H.useState({x:0,y:0});H.useEffect(()=>{o({x:t*100,y:0})},[]);const a=(u,h)=>{let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,r*100)),h.x!==(i==null?void 0:i.x)&&o({x:d,y:0});const f=d/100;t!==f&&n(f)},c=()=>{},l=(u,h)=>{let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,r*100)),h.x!==(i==null?void 0:i.x)&&o({x:d,y:0});const f=d/100;t!==f&&n(f)};return H.createElement("div",{className:"range-number-container",onPointerUp:u=>{const h=u.nativeEvent.offsetX-6;let d=Math.floor(Math.max(h,e*100));d=Math.floor(Math.min(d,r*100)),o({x:d,y:0});const f=d/100;t!==f&&n(f)}},H.createElement("div",{className:"range-number-color"}),H.createElement("div",{className:"range-number"},H.createElement(Ki,{bounds:"parent",axis:"x",position:i,onDrag:a,onStart:c,onStop:l},H.createElement("div",{className:"circle",onPointerUp:Mo}))))},pTe=s=>{const{icon:t,value:e,onChangeHandler:r,style:n}=s,[i,o]=H.useState(0),[a,c]=H.useState(),l=H.useRef(null),u=H.useCallback(f=>{f>=Ai.length&&(f=0),f<0&&(f=Ai.length-1),o(f),r(Ai[f]),c(!1),l.current&&(l.current.value=Ai[f])},[r]),h=H.useMemo(()=>{if(n&&n.bottom){const f={};return f.top="inherit",f.bottom=50,f}},[n]);H.useEffect(()=>{e&&(o(Ai.indexOf(e)),l.current&&(l.current.value=e))},[e]);const d=H.useMemo(()=>a?H.createElement(mTe,{options:Ai,onClickHandler:u,style:h}):null,[a,u,h]);return H.createElement("div",{className:"button input-button"},H.createElement("img",{src:At(t)}),H.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&(l.current.focus(),c(!a))}}),H.createElement("div",{className:"input-number-btns"},H.createElement("div",{className:"input-number-add",onPointerUp:()=>{u(i+1)}}),H.createElement("div",{className:"input-number-cut",onPointerUp:()=>{u(i-1)}})),d)},mTe=s=>{const{options:t,style:e,onClickHandler:r}=s;return H.createElement("div",{className:"select-option-menu",style:e},t.map((n,i)=>H.createElement("div",{className:"select-option-btn",key:n,onPointerUp:()=>{r(i)}},n)))},yTe=s=>{const{innerRatio:t,innerVerticeStep:e,vertices:r,mananger:n,setShapeOpt:i}=s,o=l=>{i({vertices:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:Q.Star,viewId:n.viewId,vertices:l})},a=l=>{i({innerVerticeStep:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:Q.Star,viewId:n.viewId,innerVerticeStep:l})},c=l=>{i({innerRatio:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:Q.Star,viewId:n.viewId,innerRatio:l})};return H.createElement(H.Fragment,null,H.createElement(rh,{value:r,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:o}),H.createElement(rh,{value:e,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:a}),H.createElement(fTe,{value:t,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:c}))},vTe=s=>{const{mananger:t,vertices:e,setShapeOpt:r}=s,n=i=>{r({vertices:i}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:Q.Polygon,viewId:t.viewId,vertices:i})};return H.createElement(rh,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:n})},MTe=s=>{const{mananger:t,placement:e,setShapeOpt:r}=s,n=i=>{r({placement:i}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:Q.SpeechBalloon,viewId:t.viewId,placement:i})};return H.createElement(pTe,{value:e,icon:"speechBallon-placement",onChangeHandler:n})},_l=s=>{const{icon:t,isActive:e,onPointerUpHandler:r}=s;return H.createElement("div",{className:`button tab-button ${e?"active":""}`,onPointerUp:r},H.createElement("img",{src:At(t)}))},wTe=s=>{const{toolsTypes:t,style:e,mananger:r,shapeOpt:n,setShapeOpt:i}=s,[o,a]=H.useState();H.useEffect(()=>{t.includes(Q.Polygon)?a(Q.Polygon):t.includes(Q.Star)?a(Q.Star):a(Q.SpeechBalloon)},[t]);const c=d=>{a(d)},l=H.useMemo(()=>o===Q.Polygon&&r&&n.vertices?H.createElement(vTe,{vertices:n.vertices,mananger:r,setShapeOpt:i}):null,[r,o,n,i]),u=H.useMemo(()=>o===Q.Star&&r&&n.vertices&&n.innerVerticeStep&&n.innerRatio?H.createElement(yTe,{mananger:r,vertices:n.vertices,innerVerticeStep:n.innerVerticeStep,innerRatio:n.innerRatio,setShapeOpt:i}):null,[r,o,n,i]),h=H.useMemo(()=>o===Q.SpeechBalloon&&r&&n.placement?H.createElement(MTe,{mananger:r,placement:n.placement,setShapeOpt:i}):null,[o,r,n.placement,i]);return H.createElement("div",{className:"shapeOpt-sub-menu",style:e,onPointerUp:Mo},H.createElement("div",{className:"shapeOpt-sub-menu-tabs"},t.includes(Q.Polygon)&&H.createElement(_l,{isActive:o===Q.Polygon,icon:o===Q.Polygon?"polygon-active":"polygon",onPointerUpHandler:c.bind(void 0,Q.Polygon)})||null,t.includes(Q.Star)&&H.createElement(_l,{isActive:o===Q.Star,icon:o===Q.Star?"star-active":"star",onPointerUpHandler:c.bind(void 0,Q.Star)})||null,t.includes(Q.SpeechBalloon)&&H.createElement(_l,{isActive:o===Q.SpeechBalloon,icon:o===Q.SpeechBalloon?"speechBallon-active":"speechBallon",onPointerUpHandler:c.bind(void 0,Q.SpeechBalloon)})||null),H.createElement("div",{className:"shapeOpt-sub-menu-content"},l,u,h))},STe=s=>{const{open:t,setOpen:e,floatBarRef:r,toolsTypes:n,shapeOpt:i}=s,{floatBarData:o,mananger:a,setFloatBarData:c}=H.useContext(ut),l=H.useRef(null),u=H.useMemo(()=>{if(r!=null&&r.current&&ve.isNumber(o==null?void 0:o.x)&&ve.isNumber(o==null?void 0:o.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+o.y>200){const g={};return g.top="inherit",g.bottom=50,g}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-(o==null?void 0:o.y)<140){const g={};return g.top="inherit",g.bottom=50,g}}},[r,o==null?void 0:o.x,o==null?void 0:o.y,a==null?void 0:a.height]),h=H.useCallback(g=>{c({shapeOpt:{...i,...g}})},[c,i]),d=H.useMemo(()=>t&&n&&a&&i?H.createElement(wTe,{shapeOpt:i,style:u,toolsTypes:n,mananger:a,setShapeOpt:h}):null,[t,u,n,a,i,h]),f=()=>{e(!t)};return H.createElement("div",{ref:l,className:`button normal-button ${t&&"active"}`,onPointerUp:f},d,H.createElement("img",{alt:"icon",src:At(t?"shapes-active":"shapes")}))},SM=H.memo(s=>{const{textOpt:t,workIds:e,noLayer:r,position:n,noDelete:i,noCopy:o}=s,{floatBarData:a,mananger:c}=H.useContext(ut),[l,u]=H.useState(0),[h,d]=H.useState(),f=H.useRef(null);H.useEffect(()=>{var E,P,k,O;const v={},M=(a==null?void 0:a.w)||((E=t==null?void 0:t.boxSize)==null?void 0:E[0])||0,R=(a==null?void 0:a.h)||((P=t==null?void 0:t.boxSize)==null?void 0:P[1])||0;if(n&&M&&R&&(c!=null&&c.width)&&(c!=null&&c.height)){if(n.y<60?n.y+R<c.height-60?v.bottom=-120:n.y+R<c.height?v.bottom=-58:n.y>0?v.top=62:v.top=-n.y+62:v.top=0,n.x<0)v.left=-n.x+3;else if(n.x+(((k=f.current)==null?void 0:k.offsetWidth)||M)>c.width){const B=c.width-(((O=f.current)==null?void 0:O.offsetWidth)||M)-n.x;v.left=B}d(v);return}d(void 0)},[f,n,a==null?void 0:a.w,a==null?void 0:a.h,c==null?void 0:c.width,c==null?void 0:c.height,t==null?void 0:t.boxSize]);const g=H.useMemo(()=>a!=null&&a.fillColor?H.createElement(rTe,{floatBarRef:f,open:l===3,setOpen:v=>{u(v===!0?3:0)}}):null,[a==null?void 0:a.fillColor,l,f]),y=H.useMemo(()=>a!=null&&a.strokeColor?H.createElement(tTe,{floatBarRef:f,open:l===2,setOpen:v=>{u(v===!0?2:0)}}):null,[a==null?void 0:a.strokeColor,l,f]),S=H.useMemo(()=>t!=null&&t.fontColor&&(c!=null&&c.viewId)?H.createElement(nTe,{floatBarRef:f,open:l===4,setOpen:v=>{u(v===!0?4:0)},textOpt:t,workIds:e}):null,[t,l,e,c,f]),b=H.useMemo(()=>t!=null&&t.fontBgColor&&(c!=null&&c.viewId)?H.createElement(iTe,{floatBarRef:f,open:l===5,setOpen:v=>{u(v===!0?5:0)},textOpt:t,workIds:e}):null,[t,l,e,c,f]),C=H.useMemo(()=>t&&(c!=null&&c.viewId)?H.createElement(lTe,{floatBarRef:f,open:l===6,setOpen:v=>{u(v===!0?6:0)},textOpt:t,workIds:e,style:h}):null,[t,l,e,c,h,f]),N=H.useMemo(()=>t&&(c!=null&&c.viewId)?H.createElement(hTe,{open:l===7,setOpen:v=>{u(v===!0?7:0)},textOpt:t,workIds:e,floatBarRef:f}):null,[t,l,e,c,f]),T=H.useMemo(()=>r?null:H.createElement(XSe,{open:l===1,setOpen:v=>{u(v===!0?1:0)},floatBarRef:f}),[r,l,f]),p=H.useMemo(()=>a!=null&&a.canLock&&c?H.createElement(dTe,{workIds:e,mananger:c,islocked:a.isLocked}):null,[a,c,e]),m=H.useMemo(()=>c&&(c!=null&&c.viewId)&&h&&(a!=null&&a.shapeOpt)&&(a!=null&&a.toolsTypes)?H.createElement(STe,{open:l===8,setOpen:v=>{u(v===!0?8:0)},floatBarRef:f,workIds:e,toolsTypes:a.toolsTypes,shapeOpt:a.shapeOpt}):null,[a,c,l,h,e,f]);return H.createElement("div",{className:"appliance-plugin-floatbtns",style:h,ref:f},c&&!i&&H.createElement(ZSe,{workIds:e,mananger:c}),T,p,!!(c!=null&&c.viewId)&&!o&&H.createElement(KSe,{workIds:e,viewId:c.viewId}),m,C,N,S,b,y,g)});function TM(s,t,e){const r=s||1,[n,i,o,a,c,l]=$t(t),u=((e==null?void 0:e[0])||0)*r,h=((e==null?void 0:e[1])||0)*r;return`matrix(${n*r},${i*r},${o*r},${a*r},${c*r+u},${l*r+h})`}const TTe=s=>{const{data:t,workId:e,updateOptInfo:r}=s,{opt:n,scale:i,translate:o,previewMatrix:a,x:c,y:l}=t,u=H.useRef(null),{floatBarData:h}=H.useContext(ut),d=H.useMemo(()=>{const{fontSize:y,fontFamily:S,underline:b,fontColor:C,lineThrough:N,textAlign:T,strokeColor:p,lineHeight:m,bold:v,italic:M}=n,R=Sd(y,m),E={fontSize:`${y}px`,lineHeight:`${R}px`,color:"transparent",caretColor:C,borderColor:p,minHeight:`${R}px`,pointerEvents:"none",paddingRight:`${M==="italic"?Math.round(y*.3):5}px`};return S&&(E.fontFamily=`${S}`),(N||b)&&(E.textDecoration=`${N&&"line-through"||""}${b&&" underline"||""}`),T&&(E.textAlign=`${T}`),v&&(E.fontWeight=`${v}`),M&&(E.fontStyle=`${M}`),E},[n]),f=H.useMemo(()=>{const y=[];if(n.text){const S=Bn(n.text);for(let b=0;b<S.length;b++){const C=S[b];C===""?y.push(H.createElement("div",{key:b})):y.push(H.createElement("div",{key:b},C))}}return y.length?y:H.createElement("div",null)},[n.text]),g=H.useMemo(()=>{if(!h)return{};const y=TM(i,a||n.matrix,o);return{left:`${c-h.x}px`,top:`${l-h.y}px`,zIndex:1,transform:y,transformOrigin:"left top",opacity:0,pointerEvents:"auto"}},[i,o,a,n.matrix,c,l,h]);return H.useEffect(()=>{if(!u.current)return;const y=u.current.offsetWidth,S=u.current.offsetHeight;if(!y||!S)return;const b=n.boxSize;if((b==null?void 0:b[0])!==y||b[1]!==S||!b){r({activeTextId:e,update:{boxSize:[y,S],workState:he.Done}});return}},[n.fontSize,n.italic,n.bold,n.boxSize,e,r,c,l,i,a,n.matrix,g.transform]),H.createElement("div",{className:"editor-box readonly","data-text-work-id":e,style:g},H.createElement("div",{className:"editor",ref:u,style:d},f))},CTe=s=>{const{mananger:t}=H.useContext(ut),e=H.useMemo(()=>{var n;const r=i=>{var u,h;if(!t)return;const{activeTextId:o,update:a,syncData:c}=i,l=o&&ve.cloneDeep(((u=t.control.textEditorManager)==null?void 0:u.get(o))||((h=s.editors)==null?void 0:h.get(o)));l&&l.opt&&(l.opt={...l.opt,...a},c&&(l.canSync=Object.keys(c).includes("canSync")&&c.canSync||l.canSync,l.canWorker=Object.keys(c).includes("canWorker")&&c.canWorker||l.canWorker),t.control.textEditorManager.updateForViewEdited(o,l))};if((n=s.editors)!=null&&n.size){const i=[];return s.editors.forEach((o,a)=>{if(s.selectIds&&s.selectIds.includes(a)){const c=H.createElement(TTe,{key:a,workId:a,data:o,updateOptInfo:r});i.push(c)}}),i}return null},[s.editors,s.selectIds,t]);return H.createElement(H.Fragment,null,e)},ITe=s=>{const{position:t,textOpt:e,workIds:r,noLayer:n,noCopy:i,noDelete:o,style:a}=s,c=H.useRef(null);return H.createElement("div",{className:yt.FloatBarBtn,ref:c,style:a},H.createElement(SM,{position:t,textOpt:e,workIds:r,noLayer:n,noCopy:i,noDelete:o}))},bTe=s=>{const{data:t,workId:e,showFloatBtns:r,handleKeyUp:n,handleFocus:i,runAnimation:o,updateSize:a,rightBoundBreak:c}=s,{activeTextEditor:l,activeTextId:u,mananger:h}=H.useContext(ut),{opt:d,scale:f,translate:g,previewMatrix:y,x:S,y:b}=t,{fontSize:C,fontFamily:N,underline:T,fontColor:p,lineThrough:m,textAlign:v,lineHeight:M,bold:R,italic:E}=d,P=H.useRef(null),k=H.useMemo(()=>{const I=C,W=Sd(I,M),G={fontSize:`${I}px`,lineHeight:`${W}px`,caretColor:p,color:"transparent",minHeight:`${W}px`,paddingRight:`${E==="italic"?Math.round(I*.3):5}px`,borderWidth:0};return N&&(G.fontFamily=`${N}`),(m||T)&&(G.textDecoration=`${m&&"line-through"||""} ${T&&" underline"||""}`),v&&(G.textAlign=`${v}`),R&&(G.fontWeight=`${R}`),E&&(G.fontStyle=`${E}`),G},[R,p,N,C,E,M,m,f,v,T]),O=H.useRef(!1),B=H.useRef(6),D=H.useRef(),A=H.useRef(),L=H.useRef(!1),U=H.useRef(!1),Y=H.useRef({fontSize:k.fontSize,lineHeight:k.lineHeight,fontStyle:k.fontStyle,fontWeight:k.fontWeight,fontFamily:k.fontFamily}),q=H.useMemo(()=>typeof window>"u"?!1:navigator.maxTouchPoints>0||"ontouchstart"in window,[]),ie=H.useMemo(()=>u===e?"hover":d.workState===he.Doing||d.workState===he.Start?"editing":l?"active":"none",[u,e,d.workState,l]);function z(I){if(!P.current)return;const G=I&&nwe(I.nativeEvent)?iwe(I.nativeEvent):void 0,_=()=>{D.current&&(cancelAnimationFrame(D.current),D.current=void 0),A.current&&(window.clearTimeout(A.current),A.current=void 0)},ne=re=>{const X=P.current,se=window==null?void 0:window.getSelection();if(!(!X||!se||!L.current)){if(document.activeElement!==X)try{X.focus({preventScroll:!0})}catch{X.focus()}if(re){const{x:ue,y:de}=re;if(document.caretPositionFromPoint){const ge=document.caretPositionFromPoint(ue,de);if(ge){const ye=X.contains(ge.offsetNode);if(ye){const Se=document.createRange();Se.setStart(ge.offsetNode,ge.offset),Se.collapse(!0),se.removeAllRanges(),se.addRange(Se),U.current=!0}if(ye)return}}else if(document.caretRangeFromPoint){const ge=document.caretRangeFromPoint(ue,de);if(ge){const ye=X.contains(ge.startContainer);if(ye&&(se.removeAllRanges(),se.addRange(ge),U.current=!0),ye)return}}if(Vye(se,X,re)){U.current=!0;return}}Yye({hasPoint:!!re,previousByPoint:U.current,hasSelectionInEditor:Op(se,X),rangeCount:se.rangeCount,isCollapsed:se.isCollapsed})||(Fye(se,X),U.current=!1)}};_(),ne(G),q&&(D.current=requestAnimationFrame(()=>{ne(),A.current=window.setTimeout(()=>{ne(),A.current=void 0},32),D.current=void 0}))}const V=H.useMemo(()=>{const I=TM(f,y||d.matrix,g);return{left:`${S-Pr*(f||1)}px`,top:`${b-Pr*(f||1)}px`,zIndex:2,transform:I,transformOrigin:"left top",borderColor:ie==="editing"||ie==="hover"?p:"transparent"}},[f,g,y,d.matrix,S,b,p,ie]),Z=H.useMemo(()=>{let I="";const W="<div></div>";if(d.text){const G=Bn(d.text);for(let _=0;_<G.length;_++){const ne=G[_];if(ne==="")I=I+W;else{const re=ne.replace(/[<>&]/g,X=>({"<":"&lt;",">":"&gt;","&":"&amp;"})[X]);I=I+`<div>${re}</div>`}}}else I=W;return I},[d.fontBgColor,d.text]),$=H.useMemo(()=>{var I,W;if(ie==="hover"){if(f&&r&&ve.isNumber(S)&&ve.isNumber(b)&&d.boxSize&&ve.isNumber((I=d.boxSize)==null?void 0:I[0])&&ve.isNumber((W=d.boxSize)==null?void 0:W[1])){const G={x:S,y:b},_={left:S,top:b,width:d.boxSize[0]*f,height:d.boxSize[1]*f};return H.createElement(ITe,{position:G,style:_,textOpt:d,workIds:[e],noLayer:!0,noCopy:!0,noDelete:!0})}return null}return null},[d,r,e,S,b,f,ie]);H.useEffect(()=>{L.current=u===e,u!==e&&(D.current&&(cancelAnimationFrame(D.current),D.current=void 0),A.current&&(window.clearTimeout(A.current),A.current=void 0),U.current=!1)},[u,e]),H.useEffect(()=>{if(u===e&&P.current){const I=window==null?void 0:window.getSelection(),W=Op(I,P.current);(document.activeElement!==P.current||!W)&&z(),i(P.current)}},[u,i,e,q]),H.useEffect(()=>{const I=P.current;if(!I)return;const W=D0(I),G=d.text||"";W!==G&&(u===e&&O.current||(I.innerHTML=Z))},[u,Z,d.boxSize,d.text,d.workState,e]),H.useEffect(()=>()=>{D.current&&cancelAnimationFrame(D.current),A.current&&window.clearTimeout(A.current)},[]),H.useEffect(()=>{if(P.current){const I=parseInt(getComputedStyle(P.current).paddingRight,10)+parseInt(getComputedStyle(P.current).borderWidth,10);B.current=Number(I)}},[]),H.useEffect(()=>{if(P.current){const I={fontSize:k.fontSize,lineHeight:k.lineHeight,fontStyle:k.fontStyle,fontWeight:k.fontWeight,fontFamily:k.fontFamily};if(!ve.isEqual(Y.current,I)){Y.current=I;const W=[P.current.offsetWidth,P.current.offsetHeight];a(e,W)}}},[k,e,a,ie,l,u]);const ee=H.useCallback(I=>{const W=h==null?void 0:h.parentElement,G=P.current;if(!W||!G||!c)return!1;const{lastLine:_}=zp(G);if(!_||_ instanceof Text)return!1;const ne=_==null?void 0:_.getBoundingClientRect(),re=W==null?void 0:W.getBoundingClientRect();if(!ne||!re)return!1;if(ne.right+I>re.right){const{textContent:X,textNodes:se}=$ye(_);if(!se.length)return!1;const ue=X.length,de=Cs(se,0);if(!de)return!1;let ge=0,ye=0,Se=ue;for(;ye<Se;){const be=Math.floor((ye+Se)/2),Ie=Cs(se,be);if(!Ie)break;const Ce=document.createRange();Ce.setStart(de.node,de.offset),Ce.setEnd(Ie.node,Ie.offset);const Ae=Ce.getBoundingClientRect(),Ee=re.right-Ae.right;if(Ee<I){if(be>0){const ke=Cs(se,be-1);if(!ke)break;const Oe=document.createRange();Oe.setStart(de.node,de.offset),Oe.setEnd(ke.node,ke.offset);const Ne=Oe.getBoundingClientRect();if(re.right-Ne.right>=I){ge=be-1;break}}Se=be}else{const ke=be+1;if(ke<ue){const Oe=Cs(se,ke);if(!Oe)break;const Ne=document.createRange();Ne.setStart(de.node,de.offset),Ne.setEnd(Oe.node,Oe.offset);const je=Ne.getBoundingClientRect();if(re.right-je.right<=I&&Ee>I){ge=be;break}}ye=ke}}if(!ge){const be=Cs(se,ye);if(!be)return!1;const Ie=document.createRange();Ie.setStart(de.node,de.offset),Ie.setEnd(be.node,be.offset);const Ce=Ie.getBoundingClientRect();re.right-Ce.right>I?ge=ye:ye>0&&(ge=ye-1)}if(ge>0){const be=X.slice(0,ge),Ie=X.slice(ge);_.textContent=be;const Ce=document.createElement("div");return Ie&&(Ce.textContent=Ie),P.current.appendChild(Ce),ee(I),!0}}return!1},[h==null?void 0:h.parentElement,d.fontBgColor,c]);function oe(I){if(I.stopPropagation(),I.nativeEvent.stopImmediatePropagation(),I.key==="Backspace"){const W=window.getSelection(),G=W==null?void 0:W.getRangeAt(0);if(G!=null&&G.collapsed)return I.cancelable&&I.preventDefault(),document.execCommand("delete",!1),!1}return!1}function ce(I,W){const G=window==null?void 0:window.getSelection();if(G!=null&&G.rangeCount&&I&&G&&G.anchorNode){const _=G.anchorOffset,ne=G.anchorNode.textContent||"",re=ne.slice(0,_)||"",X=ne.slice(_)||"",se=re.concat(I)||"";me(se,X,W)}}function me(I,W,G){const _=window==null?void 0:window.getSelection();if(!(_!=null&&_.rangeCount)||!_.anchorNode)return;const ne=I.split(/\n/);let re=_.anchorNode.parentNode;re===G&&(re=_.anchorNode);const X=[...G.childNodes],se=[];let ue,de=_.anchorOffset;for(;X.length;){const ge=X.pop();if(ge){if(ge===re){let ye=ne[0];ne.length===1&&(de=ne[0].length,ye=ne[0].concat(W)),re.nodeName==="#text"?(re.textContent=ye,ue=re):re.nodeName==="DIV"&&(re.innerText=ye,ue=re.childNodes[0]);break}se.push(ge),G.removeChild(ge)}}if(ne.length>1)for(let ge=1;ge<ne.length;ge++){let ye=ne[ge];const Se=document.createElement("div");ge===ne.length-1&&(de=ye.length,ye=ye.concat(W)),Se.innerText=ye,G.appendChild(Se),ge===ne.length-1&&(ue=Se.childNodes[0])}if(se.length){se.reverse();for(const ge of se)G.appendChild(ge)}if(ue&&ue.nodeName==="#text"){_.deleteFromDocument();const ge=document.createRange(),ye=Math.min(de,(ue==null?void 0:ue.length)||0);ge.setStart(ue,ye),ge.collapse(!0),_.removeAllRanges(),_.addRange(ge)}}function pe(I){if(I.cancelable&&I.preventDefault(),I.stopPropagation(),I.nativeEvent.stopImmediatePropagation(),P.current){const W=(I.clipboardData||window.clipboardData).getData("text"),G=window==null?void 0:window.getSelection();if(!(G!=null&&G.rangeCount))return;if(W&&G&&G.anchorNode){const _=nu(W,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]});ce(_,P.current),ee((f||1)*B.current),n(P.current)}o()}return!1}function j(I){zp(I)}const F=H.useCallback(()=>{const I=P.current;o(()=>{if(I){j(I);let W=!1;if(!O.current&&(W=ee((f||1)*B.current),W)){const G=window.getSelection();if(!(G!=null&&G.rangeCount))return!1;const _=document.createRange(),ne=P.current.lastChild;_.selectNodeContents(ne),_.collapse(!1),G.removeAllRanges(),G.addRange(_)}n(I)}})},[n,ee,o,f]);function J(){O.current=!0,o()}function ae(){O.current=!1,F()}function K(){F(),o()}const te=H.useCallback(()=>{if(ie==="active"&&P.current&&P.current.parentElement){const I=P.current.parentElement;I.style.borderColor=p}},[ie,p]),w=H.useCallback(()=>{if(ie==="active"&&P.current&&P.current.parentElement){const I=P.current.parentElement;I.style.borderColor="transparent"}},[ie]);return H.createElement(H.Fragment,null,$,H.createElement("div",{className:`editor-box ${ie}`,style:V,onPointerUp:()=>{var I;if(ie==="editing"){o(()=>{var W;(W=document.activeElement)==null||W.blur(),h==null||h.control.textEditorManager.checkEmptyTextBlur()});return}if(ie==="active"&&h){if((I=h.control.collector)!=null&&I.hasIncludeSelector(e)){o(()=>{var W;(W=document.activeElement)==null||W.blur(),h==null||h.control.textEditorManager.checkEmptyTextBlur()});return}if(h&&u!==e){h.control.textEditorManager.checkEmptyTextBlur(),h.control.textEditorManager.active(e,h.worker.now);return}}},onMouseOver:te,onMouseLeave:w},H.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:P,style:k,onKeyDown:oe,onPaste:pe,onTouchEnd:z,onInput:F,onCompositionStart:J,onCompositionUpdate:K,onCompositionEnd:ae,dangerouslySetInnerHTML:{__html:Z}})))},ETe=s=>{const t=H.useRef(null),{mananger:e}=H.useContext(ut),r=H.useRef(),n=H.useRef(),i=H.useRef();H.useEffect(()=>()=>{r.current&&cancelAnimationFrame(r.current),n.current&&cancelAnimationFrame(n.current),i.current&&cancelAnimationFrame(i.current)},[]);const o=H.useCallback(c=>{var f,g;const{activeTextId:l,update:u,syncData:h}=c;if(!e)return;const d=l&&ve.cloneDeep(((f=e.control.textEditorManager)==null?void 0:f.get(l))||((g=s.editors)==null?void 0:g.get(l)));d&&d.opt&&(d.opt={...d.opt,...u},h&&(d.canSync=Object.keys(h).includes("canSync")&&h.canSync||d.canSync,d.canWorker=Object.keys(h).includes("canWorker")&&h.canWorker||d.canWorker),e.control.textEditorManager.updateForViewEdited(l,d))},[e,s.editors]),a=H.useMemo(()=>{var g;const c=y=>{if(!e)return;const S=y.id,b=e.control.textEditorManager.get(S),C=he.Doing,N=[y.offsetWidth,y.offsetHeight];(!b||b&&(!ve.isEqual(b.opt.boxSize,N)||!ve.isEqual(b.opt.workState,C)))&&o({activeTextId:S,update:{boxSize:N,workState:C},syncData:{canSync:!0,canWorker:!0}})},l=y=>{var m,v;if(!e)return;const S=P0(y),b=y.id,C=e.control.textEditorManager.get(b),N=D0(y),T=he.Doing,p=[y.offsetWidth,y.offsetHeight];if(!C||C&&(C.opt.text!==N||!ve.isEqual(C.opt.boxSize,p)||!ve.isEqual(C.opt.workState,T))){const M=b&&ve.cloneDeep(((m=e.control.textEditorManager)==null?void 0:m.get(b))||((v=s.editors)==null?void 0:v.get(b)));M&&M.opt&&(M.opt={...M.opt,text:N,boxSize:p,workState:T},M.canSync=!0,M.canWorker=!0,e.control.textEditorManager.updateForViewEdited(b,M)),e.control.textEditorManager.publicMsgEmitter.emit("textChange",b,y,S,M)}},u=(y,S)=>{if(!e)return;const b=y,C=e.control.textEditorManager.get(b);if(C&&!(!S[0]||!S[1])&&!ve.isEqual(C.opt.boxSize,S)){const N=ve.cloneDeep(C);N.opt={...N.opt,boxSize:S},N.canSync=!1,N.canWorker=!1,e.control.textEditorManager.updateForViewEdited(b,N)}},h=()=>{t.current&&t.current.scrollTo({left:0,top:0,behavior:"instant"})},d=()=>{n.current&&(cancelAnimationFrame(n.current),n.current=void 0),i.current&&(cancelAnimationFrame(i.current),i.current=void 0),n.current=requestAnimationFrame(()=>{h(),n.current=void 0,i.current=requestAnimationFrame(()=>{h(),i.current=void 0})})},f=y=>{r.current&&cancelAnimationFrame(r.current),r.current=requestAnimationFrame(()=>{t!=null&&t.current&&(h(),y&&y(),d(),r.current=void 0)})};if((g=s.editors)!=null&&g.size){const y=[];return s.editors.forEach((S,b)=>{y.push(H.createElement(bTe,{key:b,workId:b,data:S,showFloatBtns:s.showFloatBtns||!1,handleFocus:c,handleKeyUp:l,updateSize:u,runAnimation:f,rightBoundBreak:s.rightBoundBreak||!1}))}),y}return null},[s.editors,s.showFloatBtns,s.rightBoundBreak,e,o]);return H.createElement("div",{className:`${s.className}`,ref:t},a)},ur=(s,t,e)=>({...s,...e==null?void 0:e[t]}),xTe=()=>{const{floatBarData:s,overwriteSelectorStyles:t}=H.useContext(ut),e={borderColor:s==null?void 0:s.selectorColor,...t.highlightBox},r={backgroundColor:s==null?void 0:s.selectorColor,...t.highlightBoxPoint};return H.createElement("div",{className:"appliance-plugin-highlight-box",style:e},H.createElement("div",{className:"point LT nwse-resize",style:ur(r,"LT",t.highlightBoxPoints)}),H.createElement("div",{className:"point LC ew-resize",style:ur(r,"LC",t.highlightBoxPoints)}),H.createElement("div",{className:"point LB nesw-resize",style:ur(r,"LB",t.highlightBoxPoints)}),H.createElement("div",{className:"point TC ns-resize",style:ur(r,"TC",t.highlightBoxPoints)}),H.createElement("div",{className:"point RT nesw-resize",style:ur(r,"RT",t.highlightBoxPoints)}),H.createElement("div",{className:"point RC ew-resize",style:ur(r,"RC",t.highlightBoxPoints)}),H.createElement("div",{className:"point RB nwse-resize",style:ur(r,"RB",t.highlightBoxPoints)}),H.createElement("div",{className:"point BC ns-resize",style:ur(r,"BC",t.highlightBoxPoints)}))},RTe=()=>{const{floatBarData:s,mananger:t,overwriteSelectorStyles:e}=H.useContext(ut),[r,n]=H.useState(),[i,o]=H.useState();H.useEffect(()=>{const l=[];if(t&&ve.isNumber(s==null?void 0:s.x)&&ve.isNumber(s==null?void 0:s.y)&&(s!=null&&s.points)){const u=t.viewId;if(t.control.viewContainerManager.getView(u))for(const d of s.points){const f=t.control.viewContainerManager.transformToOriginPoint(d,u);l.push(f)}l[0]&&n({x:l[0][0]-((s==null?void 0:s.x)||0),y:l[0][1]-((s==null?void 0:s.y)||0)}),l[1]&&o({x:l[1][0]-((s==null?void 0:s.x)||0),y:l[1][1]-((s==null?void 0:s.y)||0)})}},[t,s==null?void 0:s.points,s==null?void 0:s.x,s==null?void 0:s.y]);const a=H.useMemo(()=>r?H.createElement("div",{className:"point point-dot",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBoxPoint,...e.highlightBoxPointDot,left:r.x,top:r.y}}):null,[s==null?void 0:s.selectorColor,r]),c=H.useMemo(()=>i?H.createElement("div",{className:"point point-dot",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBoxPoint,...e.highlightBoxPointDot,left:i.x,top:i.y}}):null,[i,s==null?void 0:s.selectorColor]);return H.createElement("div",{className:"appliance-plugin-highlight-box",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBox}},a,c)},kTe=()=>{const{floatBarData:s,overwriteSelectorStyles:t}=H.useContext(ut),e={borderColor:s==null?void 0:s.selectorColor,...t.highlightBox},r={backgroundColor:s==null?void 0:s.selectorColor,...t.highlightBoxPoint};return H.createElement("div",{className:"appliance-plugin-highlight-box",style:e},H.createElement("div",{className:"point LT nwse-resize",style:ur(r,"LT",t.highlightBoxPoints)}),H.createElement("div",{className:"point LB nesw-resize",style:ur(r,"LB",t.highlightBoxPoints)}),H.createElement("div",{className:"point RT nesw-resize",style:ur(r,"RT",t.highlightBoxPoints)}),H.createElement("div",{className:"point RB nwse-resize",style:ur(r,"RB",t.highlightBoxPoints)}))},ATe=()=>{const{floatBarData:s,overwriteSelectorStyles:t}=H.useContext(ut);return H.createElement("div",{className:"appliance-plugin-highlight-box",style:{borderColor:s==null?void 0:s.selectorColor,...t.highlightBox}},H.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg",style:t.highlightBoxLock}))};function bt(s){return!!(s&&s.control.canAcceptLocalMutation(s.viewId))}const PTe=s=>{const{className:t}=s,{floatBarData:e,angle:r,setAngle:n,setOperationType:i,mananger:o,viewId:a}=H.useContext(ut),[c,l]=H.useState(he.Pending),[u,h]=H.useState(),[d,f]=H.useState(!1),[g,y]=H.useState(new Pe),[S,b]=H.useState(new Pe),[C,N]=H.useState(!1),T=H.useRef(0),p=H.useRef(!1),m=H.useRef(null),v=(O,B)=>{n(O),i(B===he.Done?Te.None:Te.RotateNode),l(B),B===he.Done?(f(!1),o==null||o.focusElement()):f(!0),Ve.emitMethod(We.MainEngine,Te.RotateNode,{workIds:[Le],angle:B===he.Start?0:O,workState:B,viewId:o==null?void 0:o.viewId})},M=(O,B)=>{if(!(B&&B!==a)){if(!O){p.current=!0,T.current&&clearTimeout(T.current),T.current=0,N(!0),f(!1),i(Te.None),l(he.Pending);return}N(!1)}},R=(O,B)=>{T.current&&(clearTimeout(T.current),T.current=0),l(he.Done),f(!1);const D=Math.round(Pe.GetAngleByPoints(g,S,new Pe(B.x,B.y)))||0;v(D,he.Done)};H.useEffect(()=>{const O=()=>{p.current&&(T.current&&clearTimeout(T.current),T.current=0,l(he.Pending),f(!1),i(Te.None))};return Ve.activeListener(M),document.addEventListener("pointercancel",O),()=>{Ve.unmountActiveListener(M),document.removeEventListener("pointercancel",O)}},[]),H.useEffect(()=>{if(window.__selectorE2E__)return window.__selectorRotateE2E__={start:(O=g.x,B=g.y)=>{if(!bt(o))return;p.current=!1;const D=Math.round(Pe.GetAngleByPoints(g,S,new Pe(O,B)))||0;v(D,he.Start)},doing:(O,B)=>{if(p.current)return;if(!bt(o)){p.current=!0,l(he.Pending),i(Te.None);return}const D=Math.round(Pe.GetAngleByPoints(g,S,new Pe(O,B)))||0;h({x:O,y:B}),v(D,he.Doing)},done:(O,B)=>{if(p.current||!bt(o))return;const D=Math.round(Pe.GetAngleByPoints(g,S,new Pe(O,B)))||0;h({x:O,y:B}),v(D,he.Done)}},()=>{window.__selectorRotateE2E__&&delete window.__selectorRotateE2E__}},[S,o,g]),H.useEffect(()=>{if(e&&(c===he.Pending||c===he.Done)){const O={x:(e==null?void 0:e.x)-20,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)},B={x:(e==null?void 0:e.x)+(e==null?void 0:e.w)/2,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)/2};b(new Pe(B.x,B.y)),y(new Pe(O.x,O.y)),h({x:O.x,y:O.y})}},[e,c]);const E=(O,B)=>{if(!bt(o))return!1;p.current=!1,T.current&&(clearTimeout(T.current),T.current=0),l(he.Start),f(!0);const D=Math.round(Pe.GetAngleByPoints(g,S,new Pe(B.x,B.y)))||0;v(D,he.Start)},P=(O,B)=>{if(p.current){T.current&&clearTimeout(T.current),T.current=0,f(!1),i(Te.None);return}if(!bt(o)){p.current=!0,l(he.Pending),f(!1),i(Te.None);return}R(O,B)},k=(O,B)=>{if(!p.current){if(!bt(o))return p.current=!0,T.current&&clearTimeout(T.current),T.current=0,l(he.Pending),f(!1),i(Te.None),!1;T.current||(h({x:B.x,y:B.y}),f(!0),T.current=setTimeout(()=>{if(T.current=0,p.current||!bt(o))return;const D=Math.round(Pe.GetAngleByPoints(g,S,new Pe(B.x,B.y)))||0;v(D,he.Doing)},60))}};return H.createElement(Ki,{disabled:C,position:u,onStart:E,onDrag:k,onStop:P},H.createElement("div",{className:`${t}`,style:e?{left:0,top:0,touchAction:"none"}:void 0},!d&&H.createElement("div",{className:"appliance-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},H.createElement("img",{alt:"icon",src:At("rotation-button")})),H.createElement("div",{ref:m,className:`appliance-plugin-rotate-mouse-pointer ${d?"active":""}`},H.createElement("img",{alt:"icon",src:At("rotation")}),H.createElement("div",{className:"angle-icon"},r,"°"))))};function DTe(s){const t=s==null?void 0:s.viewId;if(!t)return;const e=s.control.viewContainerManager.getView(t),r=e==null?void 0:e.focusScenePath,n=s.control.viewContainerManager.getUndoTickerId(t);!n||!r||(s.control.internalMsgEmitter.emit("cancelUndoTicker",n,t,r),s.control.worker.abled())}function LTe(s,t){const e=s.control.worker.now;return s.control.textEditorManager.active(t,e),e}const NTe="data-text-work-id";function OTe(s){var t,e;if(s instanceof HTMLElement)return((e=(t=s.closest(`[${NTe}]`))==null?void 0:t.dataset)==null?void 0:e.textWorkId)||void 0}const zTe=H.memo(s=>{const{editors:t,canSelectorSwitch:e}=s,{floatBarData:r,setOperationType:n,mananger:i,isNoPointerEvents:o,viewId:a}=H.useContext(ut),[c,l]=H.useState(),[u,h]=H.useState(!1),d=H.useRef(0),f=H.useRef(),g=H.useRef(he.Pending),y=H.useRef(!1),S=H.useMemo(()=>!!((r==null?void 0:r.scaleType)===Ye.none&&(r!=null&&r.canLock)),[r]),b=H.useMemo(()=>r&&r.w&&r.h?{position:"absolute",left:0,top:0,width:r.w,height:r.h,zIndex:2,pointerEvents:S||o?"none":"auto",touchAction:"none"}:{display:"none",pointerEvents:"none"},[r,S,o]),C=(v,M)=>{if(!(M&&M!==a)){if(!v||r!=null&&r.isLocked){y.current=!0,d.current&&clearTimeout(d.current),d.current=0,h(!0),g.current=he.Pending,n(Te.None);return}h(!1)}},N=(v,M)=>{d.current&&(clearTimeout(d.current),d.current=0);const R={x:M.x,y:M.y};n(Te.None),g.current=he.Done,l(R),Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Le],position:R,workState:he.Done,viewId:i==null?void 0:i.viewId})};H.useEffect(()=>{const v=()=>{y.current&&(d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=he.Pending,n(Te.None))};return Ve.activeListener(C),document.addEventListener("pointercancel",v),()=>{Ve.unmountActiveListener(C),document.removeEventListener("pointercancel",v)}},[]),H.useEffect(()=>{if(r&&(r!=null&&r.isLocked)){h(!0);return}h(!1)},[r]),H.useEffect(()=>{(g.current===he.Pending||g.current===he.Done)&&ve.isNumber(r==null?void 0:r.x)&&ve.isNumber(r==null?void 0:r.y)&&l({x:r==null?void 0:r.x,y:r==null?void 0:r.y})},[r==null?void 0:r.x,r==null?void 0:r.y]);const T=v=>{const M=v&&"target"in v?v.target:null,R=e?OTe(M):void 0;if(!bt(i)||!ve.isNumber(r==null?void 0:r.x)||!ve.isNumber(r==null?void 0:r.y))return!1;y.current=!1,d.current&&(clearTimeout(d.current),d.current=0),f.current=R,n(Te.TranslateNode),g.current=he.Start,Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Le],position:{x:r.x,y:r.y},workState:he.Start,viewId:i==null?void 0:i.viewId})},p=(v,M)=>{var k,O;if(y.current){d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,n(Te.None);return}if(!bt(i)){y.current=!0,d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=he.Pending,n(Te.None);return}const R=g.current,E=f.current;if(!!E&&R===he.Start&&i&&e){DTe(i),LTe(i,E),f.current=void 0,g.current=he.Pending,n(Te.None);const B=(k=i.control.viewContainerManager.getView(i.viewId))==null?void 0:k.focusScenePath;B&&i.control.worker.blurSelector(i.viewId,B);return}if(N(v,M),f.current&&(f.current=void 0),R===he.Start&&(t!=null&&t.size)&&E){const B=(O=i==null?void 0:i.control.viewContainerManager.getView(i.viewId))==null?void 0:O.focusScenePath;B&&(i==null||i.control.worker.blurSelector(i.viewId,B))}i==null||i.focusElement()},m=(v,M)=>{if(y.current)return;if(!bt(i))return y.current=!0,d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=he.Pending,n(Te.None),!1;if(d.current)return;const R={x:M.x,y:M.y};l(R),d.current=setTimeout(()=>{d.current=0,!(y.current||!bt(i))&&(R.x!==(c==null?void 0:c.x)||R.y!==(c==null?void 0:c.y))&&(f.current&&(f.current=void 0),g.current=he.Doing,Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Le],position:R,workState:he.Doing,viewId:i==null?void 0:i.viewId}))},60)};return H.createElement(Ki,{disabled:u,position:c,onStart:T,onDrag:m,onStop:p},H.createElement("div",{style:b},H.createElement(BTe,{editors:t,selectIds:(r==null?void 0:r.selectIds)||[]})))},(s,t)=>!!ve.isEqual(s,t)),BTe=H.memo(s=>{const{editors:t,selectIds:e}=s;return t?H.createElement(CTe,{editors:t,selectIds:e||[]}):null},(s,t)=>!(!ve.isEqual(s.editors,t.editors)||!ve.isEqual(s.selectIds,t.selectIds))),jTe=s=>{const{className:t}=s,[e,r]=H.useState({x:0,y:0,h:0,w:0}),[n,i]=H.useState(),[o,a]=H.useState(),[c,l]=H.useState(),{floatBarData:u,mananger:h,isNoPointerEvents:d,setOperationType:f,viewId:g}=H.useContext(ut),[y,S]=H.useState(),[b,C]=H.useState(!1),N=H.useRef(0),T=H.useRef(!1);H.useEffect(()=>{const O=()=>{T.current&&(N.current&&clearTimeout(N.current),N.current=0,f(Te.None))};if(u&&h){const B={x:u.x,y:u.y,w:u.w,h:u.h};r(B)}return Ve.activeListener(m),document.addEventListener("pointercancel",O),()=>{Ve.unmountActiveListener(m),document.removeEventListener("pointercancel",O)}},[]);const p=()=>{if(N.current&&(clearTimeout(N.current),N.current=0),y){const{scale:O,translate:B}=y;f(Te.None),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Le],scale:O,dir:c,translate:B,originPoint:n,scenePoint:o,workState:he.Done,viewId:h==null?void 0:h.viewId})}h==null||h.focusElement()},m=(O,B)=>{if(!(B&&B!==g)){if(!O){T.current=!0,N.current&&clearTimeout(N.current),N.current=0,S(void 0),C(!0);return}C(!1)}},v=O=>[[O.x,O.y],[O.x+O.w,O.y],[O.x+O.w,O.y+O.h],[O.x,O.y+O.h]],M=(O,B)=>{switch(B){case"top":case"topLeft":case"left":return O[2];case"topRight":return O[3];case"right":case"bottomRight":case"bottom":return O[0];case"bottomLeft":return O[1]}},R=(O,B,D,A)=>{let L=!1,U=!1;const Y={x:e.x,y:e.y,w:e.w,h:e.h},q=[1,1],ie=[0,0];switch(O){case"top":{const $=B.height+e.h;$<0?(U=!0,Y.y=e.y+e.h,Y.h=Math.abs($)):(Y.y=e.y-B.height,Y.h=e.h+B.height);break}case"topLeft":{const $=B.width+e.w;$<0?(L=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-B.width,Y.w=e.w+B.width);const ee=B.height+e.h;ee<0?(U=!0,Y.y=e.y+e.h,Y.h=Math.abs(ee)):(Y.y=e.y-B.height,Y.h=e.h+B.height);break}case"topRight":{const $=B.width+e.w;$<0?(L=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+B.width;const ee=B.height+e.h;ee<0?(U=!0,Y.y=e.y+e.h,Y.h=Math.abs(ee)):(Y.y=e.y-B.height,Y.h=e.h+B.height);break}case"bottom":{const $=B.height+e.h;$<0?(U=!0,Y.y=e.y+$,Y.h=Math.abs($)):Y.h=e.h+B.height;break}case"bottomLeft":{const $=B.width+e.w;$<0?(L=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-B.width,Y.w=e.w+B.width);const ee=B.height+e.h;ee<0?(U=!0,Y.y=e.y+ee,Y.h=Math.abs(ee)):Y.h=e.h+B.height;break}case"left":{const $=B.width+e.w;$<0?(L=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-B.width,Y.w=e.w+B.width);break}case"bottomRight":{const $=B.width+e.w;$<0?(L=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+B.width;const ee=B.height+e.h;ee<0?(U=!0,Y.y=e.y+ee,Y.h=Math.abs(ee)):Y.h=e.h+B.height;break}case"right":{const $=B.width+e.w;$<0?(L=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+B.width;break}}q[0]=Y.w/e.w,q[1]=Y.h/e.h;const V=v(Y).map($=>D.control.viewContainerManager.transformToScenePoint($,D.viewId)),Z=M(V,O);return U&&(ie[1]=Z[1]-A[1]),L&&(ie[0]=Z[0]-A[0]),{scale:q,translate:ie}},E=(O,B)=>{if(!bt(h)||!(u!=null&&u.w)||!(u!=null&&u.h))return!1;T.current=!1,S(void 0),N.current&&(clearTimeout(N.current),N.current=0);const D={x:u.x,y:u.y,w:u.w,h:u.h},A=v(D),L=A.map(q=>h.control.viewContainerManager.transformToScenePoint(q,h.viewId)),U=M(A,B),Y=M(L,B);r(D),i(U),a(Y),l(B),f(Te.ScaleNode),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Le],originPoint:U,scenePoint:Y,workState:he.Start,viewId:h.viewId})},P=(O,B,D,A)=>{if(!T.current&&!(!h||!n||!o)){if(!bt(h))return T.current=!0,N.current&&clearTimeout(N.current),N.current=0,f(Te.None),!1;N.current||(N.current=setTimeout(()=>{if(N.current=0,T.current||!bt(h))return;const{scale:L,translate:U}=R(B,A,h,o);(!ve.isEqual(L,y==null?void 0:y.scale)||!ve.isEqual(U,y==null?void 0:y.translate))&&(S({scale:L,translate:U}),f(Te.ScaleNode),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Le],scale:L,dir:B,translate:U,originPoint:n,scenePoint:o,workState:he.Doing,viewId:h.viewId}))},60))}},k=()=>{if(T.current){N.current&&clearTimeout(N.current),N.current=0,f(Te.None);return}if(!bt(h)){T.current=!0,N.current&&clearTimeout(N.current),N.current=0,f(Te.None);return}p()};return H.createElement(OM.Resizable,{className:`${t}`,boundsByDirection:!0,minWidth:-(((u==null?void 0:u.x)||0)+((u==null?void 0:u.w)||0)),minHeight:-(((u==null?void 0:u.y)||0)+((u==null?void 0:u.h)||0)),size:{width:(u==null?void 0:u.w)||0,height:(u==null?void 0:u.h)||0},style:{position:"absolute",left:u==null?void 0:u.x,top:u==null?void 0:u.y,pointerEvents:d?"none":"auto"},enable:b?!1:{top:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,right:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,bottom:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,left:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(u==null?void 0:u.scaleType)===Ye.proportional,onResizeStart:E,onResize:P,onResizeStop:k})},dm=s=>{const{id:t,pos:e,pointMap:r,type:n}=s,{setOperationType:i,mananger:o,floatBarData:a,viewId:c}=H.useContext(ut),[l,u]=H.useState({x:0,y:0}),[h,d]=H.useState(he.Pending),[f,g]=H.useState(!1),y=H.useRef(0),S=H.useRef(!1),b=H.useMemo(()=>a?{left:0,top:0}:{},[a]),C=(v,M)=>{if(!(M&&M!==c)){if(!v||a!=null&&a.isLocked){S.current=!0,y.current&&clearTimeout(y.current),y.current=0,g(!0),d(he.Pending),i(Te.None);return}g(!1)}};H.useEffect(()=>{const v=()=>{S.current&&(y.current&&clearTimeout(y.current),y.current=0,d(he.Pending),i(Te.None))};return Ve.activeListener(C),document.addEventListener("pointercancel",v),()=>{Ve.unmountActiveListener(C),document.removeEventListener("pointercancel",v)}},[]),H.useEffect(()=>{ve.isNumber(e.x)&&ve.isNumber(e.y)&&(h===he.Pending||h===he.Done)&&u({x:e.x,y:e.y})},[e,h]),H.useEffect(()=>{if(a&&(a!=null&&a.isLocked)){g(!0);return}g(!1)},[a]);const N=(v,M)=>{y.current&&(clearTimeout(y.current),y.current=0),i(Te.None),d(he.Done);const R={x:M.x,y:M.y};if(u(R),o!=null&&o.control.viewContainerManager){const E=o.control.viewContainerManager.transformToScenePoint([R.x,R.y],o.viewId),P=r.get(t);P&&n==="start"?P[0]=E:P&&n==="end"&&(P[1]=E),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Le,pointMap:r,workState:he.Done,viewId:o==null?void 0:o.viewId})}o==null||o.focusElement()},T=()=>{if(!bt(o)||!ve.isNumber(e.x)||!ve.isNumber(e.y))return!1;S.current=!1,y.current&&(clearTimeout(y.current),y.current=0),i(Te.SetPoint),d(he.Start),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Le,pointMap:r,workState:he.Start,viewId:o==null?void 0:o.viewId})},p=(v,M)=>{if(S.current)return;if(!bt(o))return S.current=!0,y.current&&clearTimeout(y.current),y.current=0,d(he.Pending),i(Te.None),!1;if(y.current)return;const R={x:M.x,y:M.y};u(R),y.current=setTimeout(()=>{if(y.current=0,!(S.current||!bt(o))&&o!=null&&o.control.viewContainerManager){const E=o.control.viewContainerManager.transformToScenePoint([R.x,R.y],o.viewId),P=r.get(t);P&&n==="start"?P[0]=E:P&&n==="end"&&(P[1]=E),d(he.Doing),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Le,pointMap:r,workState:he.Doing,viewId:o==null?void 0:o.viewId})}},60)},m=(v,M)=>{if(S.current){y.current&&clearTimeout(y.current),y.current=0,i(Te.None);return}if(!bt(o)){S.current=!0,y.current&&clearTimeout(y.current),y.current=0,d(he.Pending),i(Te.None);return}N(v,M)};return H.createElement(Ki,{disabled:f,position:l,onStart:T,onDrag:p,onStop:m},H.createElement("div",{className:"appliance-plugin-point-draggable-btn",style:b}))},FTe=s=>{const{className:t}=s,{floatBarData:e,mananger:r}=H.useContext(ut),[n,i]=H.useState(),[o,a]=H.useState(),[c,l]=H.useState(new Map);H.useEffect(()=>{const d=[];if(r&&(e!=null&&e.points)){const f=r.viewId;if(r.control.viewContainerManager.getView(f))for(const y of e.points){const S=r.control.viewContainerManager.transformToOriginPoint(y,f);d.push(S)}e!=null&&e.selectIds&&e.selectIds.length===1&&(c.set(e.selectIds[0],e.points),l(c))}d[0]&&i({x:d[0][0],y:d[0][1]}),d[1]&&a({x:d[1][0],y:d[1][1]})},[r,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const u=H.useMemo(()=>n&&(e!=null&&e.selectIds)?H.createElement(dm,{pos:n,type:"start",id:e.selectIds[0],pointMap:c}):null,[n,e==null?void 0:e.selectIds,c]),h=H.useMemo(()=>o&&(e!=null&&e.selectIds)?H.createElement(dm,{pos:o,type:"end",id:e.selectIds[0],pointMap:c}):null,[o,e==null?void 0:e.selectIds,c]);return H.createElement("div",{className:`${t}`},u,h)},UTe=H.forwardRef((s,t)=>{const{floatBarData:e,operationType:r}=H.useContext(ut),n=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.all||r===Te.RotateNode?null:H.createElement(xTe,null),[e,r]),i=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.both||r===Te.RotateNode?null:H.createElement(RTe,null),[e,r]),o=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.proportional||r===Te.RotateNode?null:H.createElement(kTe,null),[e,r]),a=H.useMemo(()=>(e==null?void 0:e.scaleType)===Ye.none&&(e!=null&&e.canLock)?H.createElement(ATe,null):null,[e]);return H.createElement("div",{ref:t,style:e?{transform:`translate(${e.x}px,${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none"}:void 0},a,n,i,o,s.children)}),WTe=H.memo(s=>{const{isHide:t,operationType:e,floatBarData:r}=s;return t&&e===Te.None&&ve.isNumber(r==null?void 0:r.x)&&ve.isNumber(r==null?void 0:r.y)&&ve.isNumber(r==null?void 0:r.w)&&ve.isNumber(r==null?void 0:r.h)?H.createElement("div",{className:yt.FloatBarBtn,style:{left:r==null?void 0:r.x,top:r==null?void 0:r.y,width:r.w,height:r.h}},H.createElement(SM,{position:{x:r.x,y:r.y},textOpt:r==null?void 0:r.textOpt,noLayer:r==null?void 0:r.isLocked})):null},(s,t)=>!!ve.isEqual(s,t)),VTe=H.forwardRef((s,t)=>{const{floatBarData:e,operationType:r,mananger:n}=H.useContext(ut),{editors:i,isHide:o,canSelectorSwitch:a}=s,c=H.useRef(null);H.useEffect(()=>{const d=c.current;if(!d)return;const f=g=>{g.stopPropagation(),g.stopImmediatePropagation(),n==null||n.control.worker.blurCursor(n.viewId)};return d.addEventListener("pointerdown",f,!1),()=>{d.removeEventListener("pointerdown",f,!1)}},[n]);const l=H.useMemo(()=>{var d;return e!=null&&e.canRotate&&((d=e==null?void 0:e.selectIds)==null?void 0:d.length)===1&&(r===Te.None||r===Te.RotateNode)?H.createElement(PTe,{className:yt.RotateBtn}):null},[e,r]),u=H.useMemo(()=>((e==null?void 0:e.scaleType)===Ye.all||(e==null?void 0:e.scaleType)===Ye.proportional)&&(r===Te.None||r===Te.ScaleNode)&&ve.isNumber(e==null?void 0:e.x)&&ve.isNumber(e==null?void 0:e.y)?H.createElement(jTe,{className:yt.ResizeBtn}):null,[e==null?void 0:e.scaleType,r,e==null?void 0:e.x,e==null?void 0:e.y]),h=H.useMemo(()=>(e==null?void 0:e.scaleType)===Ye.both&&(r===Te.None||r===Te.SetPoint)?H.createElement(FTe,{className:yt.ResizeTowBox}):null,[e==null?void 0:e.scaleType,r]);return H.createElement("div",{ref:c,className:yt.FloatBar,onPointerOver:d=>(Mo(d),n==null||n.control.worker.blurCursor(n.viewId),!1)},H.createElement(UTe,{ref:t}),H.createElement(zTe,{editors:i,canSelectorSwitch:a}),l,u,h,H.createElement(WTe,{isHide:o,operationType:r,floatBarData:e}))}),$Te=H.memo(VTe,(s,t)=>!!ve.isEqual(s,t)),YTe=s=>{var l,u;const{tool:t,visual:e,imageKey:r}=s,n=Ma[t],[i,o]=H.useState(e.images);H.useEffect(()=>o(e.images),[t,r,e.images]);const a=Fd(i),c=a?`${i.standardResolution} 1x, ${a} 2x`:void 0;return H.createElement("img",{className:"appliance-plugin-cursor-image","data-cursor-image-key":r,src:i.standardResolution,srcSet:c,width:(l=e.size)==null?void 0:l.width,height:(u=e.size)==null?void 0:u.height,alt:`${t}Cursor`,onError:()=>{i.standardResolution!==n.images.standardResolution&&o(n.images)}})};class GTe extends H.Component{constructor(){super(...arguments);x(this,"getCursorName",e=>{var r,n,i;return((r=e.payload)==null?void 0:r.nickName)||((n=e.payload)==null?void 0:n.cursorName)||((i=e.payload)==null?void 0:i.uid)});x(this,"detectAvatar",e=>{var r;return!!((r=e.payload)!=null&&r.avatar)});x(this,"getCursorBackgroundColor",e=>{var r;if((r=e.payload)!=null&&r.cursorBackgroundColor)return e.payload.cursorBackgroundColor;if(this.getCursorName(e))return`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`});x(this,"renderAvatar",(e,r)=>{var i;if(!this.detectAvatar(e))return null;const n=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;return H.createElement("img",{className:"appliance-plugin-cursor-avatar",style:{width:r?19:28,height:r?19:28,position:r?"initial":"absolute",borderColor:r?"white":n,marginRight:r?4:0},src:(i=e.payload)==null?void 0:i.avatar,alt:"avatar"})});x(this,"renderTag",e=>{var r;return(r=e.payload)!=null&&r.cursorTagName?H.createElement("span",{className:"appliance-plugin-cursor-tag",style:{backgroundColor:e.payload.cursorTagBackgroundColor||this.getCursorBackgroundColor(e)}},e.payload.cursorTagName):null})}render(){var g,y,S,b,C;const{roomMember:e,cursorTool:r,resolver:n,labelOptions:i}=this.props;if(!r)return null;const o=n.getSynced(r),a=o.images.key||"external",c=this.getCursorName(e),l=n.getSyncedEnableShowName(r),u=l&&!!c,h=l&&this.detectAvatar(e),d=l&&!!((g=e.payload)!=null&&g.cursorTagName),f=u||h||d;return H.createElement("div",{className:"appliance-plugin-cursor-box","data-appliance":r},H.createElement("div",{className:`appliance-plugin-cursor-visual${o.size?" appliance-plugin-cursor-visual-sized":""}`,style:{width:(y=o.size)==null?void 0:y.width,height:(S=o.size)==null?void 0:S.height,transform:`translate(${o.offset.x}px, calc(-100% + ${o.offset.y}px))`}},f&&H.createElement("div",{className:`appliance-plugin-cursor-label appliance-plugin-cursor-label-${i.placement}`,style:{gap:i.gap,"--cursor-label-gap":`${i.gap}px`}},H.createElement("div",{style:{opacity:f?1:0,backgroundColor:this.getCursorBackgroundColor(e),color:((b=e.payload)==null?void 0:b.cursorTextColor)||"#FFFFFF"},className:(C=e.payload)!=null&&C.theme?"appliance-plugin-cursor-inner-mellow":"appliance-plugin-cursor-inner"},h&&this.renderAvatar(e,u||d),u&&H.createElement("span",{className:"appliance-plugin-cursor-name-text",style:{maxWidth:i.maxWidth}},c),d&&this.renderTag(e))),H.createElement(YTe,{key:`${r}:${a}`,tool:r,visual:o,imageKey:a})))}}const HTe=s=>{var l;const{className:t,info:e,resolver:r,labelOptions:n}=s,{roomMember:i,cursorTool:o,...a}=e||{},c=typeof a.x=="number"&&typeof a.y=="number";return H.createElement("div",{"data-cursor-uid":(l=i==null?void 0:i.payload)==null?void 0:l.uid,className:t,style:c?{transform:`translate(${a.x}px, ${a.y}px)`}:{display:"none"}},i&&H.createElement(GTe,{roomMember:i,cursorTool:o,resolver:r,labelOptions:n}))},QTe=s=>{const{className:t,manager:e}=s,[r,n]=H.useState(),i=H.useMemo(()=>new gM(e.control.pluginOptions.extras.cursor),[e]),o=e.control.pluginOptions.extras.cursor.syncedLabel;H.useEffect(()=>(e.internalMsgEmitter.on([We.Cursor,e.viewId],a),()=>{e.internalMsgEmitter.off([We.Cursor,e.viewId],a)}),[e]);function a(c){n(c)}return H.useMemo(()=>r!=null&&r.length?H.createElement(H.Fragment,null,r.map(c=>c.roomMember?H.createElement(HTe,{key:c.roomMember.memberId,className:t,info:c,resolver:i,labelOptions:o}):null)):null,[t,r,o,i])},qTe=s=>{const{viewId:t,miniMapCanvas:e,highlightColor:r,miniMapManager:n,contianer:i}=s,[o,a]=H.useState();H.useEffect(()=>(c(),n.listener.addListener([t,"viewCameraUpate"],c),n.listener.emitAsync([t,"miniMapCreate"],!0),()=>{n.listener.removeListener([t,"viewCameraUpate"],c)}),[]);const c=()=>{const h=n.maps.get(t);h&&l(h.miniMapCamera,h.viewCamera)},l=(h,d)=>{const{width:f,height:g}=i.getBoundingClientRect(),y=Math.min(f/h.width,g/h.height),S=d.width/d.scale,b=d.height/d.scale,C=[d.centerX,d.centerY],N=[h.centerX,h.centerY],T=[C[0]-N[0],C[1]-N[1]],p=Math.min(h.scale*y,h.scale*y),m=[T[0]*p,T[1]*p,S,b,p];a(m)},u=h=>{var d;if(n.control.renderControl.isWritable){const f=h.nativeEvent.target||h.nativeEvent.srcElement;if(f&&h.nativeEvent&&o){const{width:g,height:y}=f.getBoundingClientRect(),[S,b]=[g/2,y/2],[C,N]=[(h.nativeEvent.offsetX-S)/o[4],(h.nativeEvent.offsetY-b)/o[4]],T=n.maps.get(t);if(T!=null&&T.viewCamera){const[p,m]=[T.miniMapCamera.centerX+C,T.miniMapCamera.centerY+N];(d=n.control.room)==null||d.moveCamera({centerX:p,centerY:m,animationMode:"immediately"})}}}};return H.createElement("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",pointerEvents:"auto"},onClick:u},H.createElement("canvas",{style:{pointerEvents:"none"},ref:e}),o&&H.createElement("div",{className:"minimap-highlightBox",style:{position:"absolute",top:"50%",left:"50%",width:o[2]*o[4],height:o[3]*o[4],boxSizing:"content-box",border:`2px solid ${r}`,transform:`translate(calc(-50% + ${o[0]}px), calc(-50% + ${o[1]}px))`,pointerEvents:"none"}}))},ZTe=s=>{const{miniMapManager:t,active:e,className:r}=s,n=H.useMemo(()=>{const i=t.maps;if(e){const o=i.get(e);if(o){const{miniMapCamera:a,viewCamera:c,...l}=o;if(l.contianer&&a&&c){const u=t.highlightColor;return Za.createPortal(H.createElement(qTe,{viewId:e,...l,highlightColor:u,miniMapManager:t}),l.contianer)}}}return null},[e,t]);return H.createElement("div",{className:r},n)},KTe=s=>{const{hasOffscreenCanvas:t,isUseSimple:e,generation:r,refs:n}=s;return t?H.createElement("div",{key:`worker-${r}`,className:yt.CanvasBox},H.createElement("canvas",{id:"bgCanvas",ref:n.canvasBgRef,style:{width:"100%",height:"100%"}}),H.createElement("canvas",{id:"serviceCanvas",className:yt.FloatCanvas,ref:n.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),H.createElement("canvas",{id:"localCanvas",className:yt.FloatCanvas,ref:n.canvasFloatRef,style:{width:"100%",height:"100%"}}),!e&&H.createElement("div",{id:"subLocalCanvas",className:yt.CanvasBoxSub,ref:n.subLocalCanvasContainerRef}),!e&&H.createElement("canvas",{id:"topCanvas",className:yt.TopFloatCanvas,ref:n.canvasTopRef,style:{width:"100%",height:"100%"}})):H.createElement("div",{key:`main-thread-${r}`,className:yt.CanvasBox,ref:n.canvasContainerRef})},XTe=2e3,ut=H.createContext({viewId:"",mananger:void 0,floatBarColors:[],overwriteSelectorStyles:{},floatBarData:void 0,dpr:1,angle:0,operationType:Te.None,scale:[1,1],isNoPointerEvents:!1,activeTextEditor:!1,activeTextId:void 0,setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class Ud extends H.Component{constructor(e){var n,i;super(e);x(this,"showTextFloatBar");x(this,"canSelectorSwitch");x(this,"rightBoundBreak");x(this,"isUnmounted",!1);x(this,"renderSurfaceResetWaiters",new Set);x(this,"setAngle",e=>{this.setState({angle:e})});x(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,showFloatBarBtn:!0,dpr:1,angle:0,operationType:Te.None,scale:[1,1],editors:this.editors,activeTextId:(n=this.props.mananger.control.textEditorManager)==null?void 0:n.activeId,activeMiniMapViewId:(i=this.props.mananger.control.miniMapManager)==null?void 0:i.activeViewId,renderSurfaceGeneration:0};const r=this.props.mananger.control.pluginOptions.extras.textEditor;this.showTextFloatBar=ve.isBoolean(r.showFloatBar)?r.showFloatBar:He.textEditor.showFloatBar,this.canSelectorSwitch=ve.isBoolean(r==null?void 0:r.canSelectorSwitch)?r.canSelectorSwitch:He.textEditor.canSelectorSwitch,this.rightBoundBreak=ve.isBoolean(r==null?void 0:r.rightBoundBreak)?r.rightBoundBreak:He.textEditor.rightBoundBreak}get editors(){return lt(this.props.mananger.control.textEditorManager.filterEditor(this.props.mananger.viewId))}componentDidMount(){this.isUnmounted=!1,this.props.mananger.vDom=this,this.props.mananger.mountView(),this.setState({dpr:this.props.mananger.dpr})}componentWillUnmount(){this.isUnmounted=!0;for(const e of this.renderSurfaceResetWaiters)clearTimeout(e.timer),e.resolve();this.renderSurfaceResetWaiters.clear(),this.props.mananger.vDom===this&&(this.props.mananger.vDom=void 0)}setDpr(e){this.state.dpr!==e&&this.setState({dpr:e})}resetRenderSurface(e=XTe){return this.isUnmounted?Promise.resolve():new Promise((r,n)=>{let i=!1;const o=c=>{i||(i=!0,clearTimeout(a.timer),this.renderSurfaceResetWaiters.delete(a),c?n(c):r())},a={timer:setTimeout(()=>o(new Error(`render surface reset timeout: ${this.props.viewId}; timeoutMs=${e}`)),e),resolve:()=>o(),reject:c=>o(c)};this.renderSurfaceResetWaiters.add(a),this.setState(c=>({renderSurfaceGeneration:c.renderSurfaceGeneration+1}),a.resolve)})}setActiveMiniMap(e){this.setState({activeMiniMapViewId:e})}showFloatBarBtn(e){this.setState({showFloatBarBtn:e})}showFloatBar(e,r){const n=e&&r&&{...this.state.floatBarData,...r}||void 0;this.setState({showFloatBar:e,floatBarData:n,angle:0})}activeTextEditor(){this.setState({activeTextEditor:!0})}unActiveTextEditor(){this.setState({activeTextEditor:!1})}updateTextEditorInfo(e,r){this.renderTextEditorInfo(e,r)}renderTextEditorInfo(e,r){this.setState({activeTextId:e,editors:this.editors},r)}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var r,n,i,o,a,c;const e=!!((n=(r=this.props.mananger.control)==null?void 0:r.room)!=null&&n.floatBarOptions);return H.createElement("div",{className:yt.Container},H.createElement(KTe,{hasOffscreenCanvas:this.props.mananger.control.hasOffscreenCanvas,isUseSimple:this.props.mananger.control.isUseSimple,generation:this.state.renderSurfaceGeneration,refs:this.props.refs}),!this.props.mananger.control.hasOffscreenCanvas&&this.props.refs.snapshotContainerRef&&H.createElement("div",{className:yt.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,this.props.mananger.control.isUseBackgroundThread&&!!this.props.refs.backgroundContainerRef&&H.createElement("div",{className:yt.BackgroundBox},H.createElement("div",{className:yt.BackgroundSvgBox,ref:this.props.refs.backgroundContainerRef}),!!this.props.refs.backgroundSnapshotContainerRef&&H.createElement("div",{className:yt.BackgroundSnapshotBox},H.createElement("div",{className:yt.BackgroundSnapshotContent,ref:this.props.refs.backgroundSnapshotContainerRef})))||null,H.createElement(ut.Provider,{value:{viewId:this.props.viewId,mananger:this.props.mananger,floatBarColors:e&&((a=(o=(i=this.props.mananger.control)==null?void 0:i.room)==null?void 0:o.floatBarOptions)==null?void 0:a.colors)||[],overwriteSelectorStyles:this.props.mananger.control.pluginOptions.extras.overwriteSelectorStyles||{},isNoPointerEvents:!this.state.showFloatBarBtn,floatBarData:this.state.floatBarData,dpr:this.state.dpr,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,activeTextEditor:this.state.activeTextEditor,activeTextId:this.state.activeTextId,setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&H.createElement($Te,{ref:this.props.refs.floatBarRef,editors:this.state.editors,isHide:e&&this.state.showFloatBarBtn,canSelectorSwitch:this.canSelectorSwitch})||null,((c=this.state.editors)==null?void 0:c.size)&&H.createElement(ETe,{className:yt.TextEditorContainer,showFloatBtns:this.showTextFloatBar&&e&&this.state.showFloatBarBtn||!1,editors:this.state.editors,rightBoundBreak:this.rightBoundBreak})||null),H.createElement("div",{className:"appliance-plugin-custom-floatbar-container","data-view-id":this.props.viewId,ref:this.props.refs.customFloatbarContainerRef}),H.createElement(QTe,{className:yt.CursorBox,manager:this.props.mananger}),!this.props.mananger.control.isUseSimple&&H.createElement(ZTe,{className:yt.MiniMapBox,active:this.state.activeMiniMapViewId,miniMapManager:this.props.mananger.control.miniMapManager}))}}class JTe extends MM{constructor(e,r){super(e,r);x(this,"width",1e3);x(this,"height",1e3);x(this,"dpr",Zi());x(this,"vDom");x(this,"eventTragetElement");x(this,"snapshotContainerRef");x(this,"backgroundSnapshotContainerRef");x(this,"canvasContainerRef",H.createRef());x(this,"subLocalCanvasContainerRef");x(this,"canvasTopRef");x(this,"canvasServiceFloatRef",H.createRef());x(this,"canvasFloatRef",H.createRef());x(this,"canvasBgRef",H.createRef());x(this,"backgroundContainerRef");x(this,"floatBarRef",H.createRef());x(this,"customFloatbarContainerRef",H.createRef());x(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=H.createRef()),this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef(),this.backgroundSnapshotContainerRef=H.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const r=this.eventTragetElement.offsetWidth||this.width,n=this.eventTragetElement.offsetHeight||this.height,i=Zi();i!==this.dpr&&this.requestDprUpdate(i),r&&n&&this.canvasContainerRef.current&&(r!==this.width||n!==this.height)&&(this.width=r,this.height=n,this.canvasContainerRef.current.style.width=`${r}px`,this.canvasContainerRef.current.style.height=`${n}px`),r&&n&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(r!==this.width||n!==this.height)&&(this.width=r,this.height=n),r&&n&&this.canvasBgRef.current&&(r!==this.width||n!==this.height)&&(this.width=r,this.height=n,this.resizeCanvasBackingStore()),r&&n&&this.backgroundContainerRef&&((e=this.backgroundContainerRef)!=null&&e.current)&&(r!==this.width||n!==this.height)&&(this.backgroundContainerRef.current.style.width=`${r}px`,this.backgroundContainerRef.current.style.height=`${n}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const r=e.querySelectorAll(".appliance-plugin-main-view-displayer");for(const n of r)n.remove()}}}createMainViewDisplayer(e){const r=document.createElement("div");return r.className="appliance-plugin-main-view-displayer",e.appendChild(r),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Za.render(H.createElement(Ud,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef,backgroundSnapshotContainerRef:this.backgroundSnapshotContainerRef}}),r),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class _Te extends ASe{constructor(e,r,n){super(e,r,n);x(this,"dpr",Zi());x(this,"width",1e3);x(this,"height",1e3);x(this,"vDom");x(this,"eventTragetElement");x(this,"canvasContainerRef",H.createRef());x(this,"subLocalCanvasContainerRef");x(this,"canvasTopRef");x(this,"canvasServiceFloatRef",H.createRef());x(this,"canvasFloatRef",H.createRef());x(this,"canvasBgRef",H.createRef());x(this,"backgroundContainerRef");x(this,"floatBarRef",H.createRef());x(this,"customFloatbarContainerRef",H.createRef());x(this,"containerOffset",{x:0,y:0});this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const r=Zi();if(r!==this.dpr&&this.requestDprUpdate(r),this.canvasContainerRef.current){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.width=n,this.height=i,this.canvasContainerRef.current.style.width=`${n}px`,this.canvasContainerRef.current.style.height=`${i}px`)}if(this.canvasBgRef.current){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.width=n,this.height=i,this.resizeCanvasBackingStore())}if(this.backgroundContainerRef&&((e=this.backgroundContainerRef)!=null&&e.current)){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.backgroundContainerRef.current.style.width=`${n}px`,this.backgroundContainerRef.current.style.height=`${i}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable))}}}createAppViewDisplayer(e,r){const n=document.createElement("div");return n.className="appliance-plugin-app-view-displayer",r.appendChild(n),this.eventTragetElement=r.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Za.render(H.createElement(Ud,{viewId:e,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef}}),n),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class _n extends Qi{constructor(e){super(e);x(this,"focuedViewId");x(this,"focuedView");x(this,"control");x(this,"tmpFocusedViewId");x(this,"checkScaleTimer");x(this,"windowManager");x(this,"mainViewLifecycleRevision",0);x(this,"appViewLifecycleRevisionById",new Map);x(this,"appScenePathRetryTimerById",new Map);x(this,"focusedChangeListener",e=>{var i;const r=((i=this.windowManager)==null?void 0:i.focused)||e||Fe;this.getView(r)?(this.tmpFocusedViewId=void 0,this.focuedViewId!==r&&this.setFocuedViewId(r)):r!==Fe?this.tmpFocusedViewId=r:this.tmpFocusedViewId=void 0});x(this,"mainViewScenePathChangeListener",e=>{this.control.onSceneChange(e,Fe)});x(this,"boxCloseListener",e=>{this.bumpAppViewLifecycleRevision(e.appId),this.appViews.get(e.appId)&&(this.destroyAppView(e.appId),this.control.worker.destroyViewWorker(e.appId,"delete-storage"))});x(this,"appScenePathChangeListener",e=>{const{appId:r,view:n}=e;!r||!n||this.consumeAppScenePathWhenReady(r,n)});x(this,"appsChangeListener",e=>{for(const r of this.appViews.keys())e.includes(r)||(this.bumpAppViewLifecycleRevision(r),this.destroyAppView(r),this.control.worker.destroyViewWorker(r,"storage-already-deleted"))});x(this,"mainViewHotkeyListener",e=>{this.onActiveHotkeyChange(e)});x(this,"appViewListeners",new Map);x(this,"onMainViewRelease",async e=>{const r=++this.mainViewLifecycleRevision;if(await this.mainViewDestroy(e),r!==this.mainViewLifecycleRevision||(await new Promise(i=>{setTimeout(()=>{i(!0)},0)}),r!==this.mainViewLifecycleRevision))return;this.mountMainView(e,r);const n=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(n),this.control.clearSnapshootData()});x(this,"mainViewDestroy",async e=>{var n,i;const r=this.mainView;if(r!=null&&r.displayer){if(this.control.invalidatePendingViewInit(r.id),await this.control.forceDoneLocalWorks("view-destroy",[r.id]),this.mainView!==r)return;this.control.backgroundImageLoadCoordinator.cancelByViewScene(r.id),this.control.destroySceneChange(r.id),(n=this.control.selectorApi)==null||n.disposeView(r.id),this.control.textEditorManager.clear(Fe,!0),this.removeMainViewListeners(r.viewData),this.disposeViewRenderImageBitmaps(r.id),r.displayer.destroy();const o=e.divElement;if(o){const a=o.getElementsByClassName("appliance-plugin-main-view-displayer");for(const c of a)c.remove()}if(r.container&&o!==r.container){const a=r.container.getElementsByClassName("appliance-plugin-main-view-displayer");for(const c of a)c.remove()}(i=this.control.worker)==null||i.destroyViewWorker(r.id,"preserve-storage"),this.mainView===r&&(this.mainView=void 0)}});x(this,"onMainViewMounted",async e=>{const r=++this.mainViewLifecycleRevision;await this.mainViewDestroy(e),r===this.mainViewLifecycleRevision&&this.mountMainView(e,r)});x(this,"onMainViewSizeUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData?this.updateMainViewCamera("size-updated"):this.logMainViewCameraTrace("listener-dropped",{source:"size-updated",reason:"main-view-missing"})});x(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData?this.updateMainViewCamera("camera-updated"):this.logMainViewCameraTrace("listener-dropped",{source:"camera-updated",reason:"main-view-missing"})});x(this,"updateMainViewCamera",e=>{if(this.mainView&&this.mainView.viewData){const r=this.mainView.viewData.camera;if(!ve.isNumber(r.scale)||r.scale===1/0){this.logMainViewCameraTrace("listener-dropped",{source:e,reason:"invalid-camera-scale",sourceCamera:r,sourceSize:this.mainView.viewData.size});return}const n=this.mainView.cameraOpt;if(n){const i=n.width,o=n.height,{width:a,height:c}=this.mainView.viewData.size;(a!==i||c!==o)&&this.mainView.displayer.updateSize();const l=r.scale===1/0?1:r.scale,u=r.centerX||0,h=r.centerY||0,d={...n,scale:l,centerX:u,centerY:h,width:a,height:c};!ve.isEqual(n,d)&&(this.mainView.cameraOpt=d),this.checkScaleTimer&&r.scale==1/0&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),!this.checkScaleTimer&&r.scale===1/0&&this.mainView.viewData&&this.mainView.viewData.camera.scale===1/0&&(this.checkScaleTimer=setTimeout(()=>{var g,y;(y=(g=this.mainView)==null?void 0:g.viewData)==null||y.moveCamera({scale:l,centerX:u,centerY:h,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});x(this,"onAppViewMounted",async e=>{var f;const{appId:r,view:n}=e,i=this.bumpAppViewLifecycleRevision(r);this.cancelAppScenePathRetry(r);const o=n.divElement;if(!o||!n.focusScenePath)return;const a=this.appViews.get(r);if(a&&a.displayer){if(this.control.invalidatePendingViewInit(r),await this.control.forceDoneLocalWorks("view-destroy",[r]),!this.isCurrentAppViewLifecycleRevision(r,i)||this.appViews.get(r)!==a)return;let g=o.getElementsByClassName("appliance-plugin-app-view-displayer");for(const y of g)y.remove();if(a.container&&a.container!==o){g=a.container.getElementsByClassName("appliance-plugin-app-view-displayer");for(const y of g)y.remove()}if(this.destroyAppView(e.appId,!0),(f=this.control.worker)==null||f.destroyViewWorker(r,"preserve-storage"),await new Promise(y=>{setTimeout(()=>{y(!0)},0)}),!this.isCurrentAppViewLifecycleRevision(r,i))return}if(!this.isCurrentAppViewLifecycleRevision(r,i))return;const c=new _Te(r,this.control,tt.InternalMsgEmitter),l=n.size.width||c.width,u=n.size.height||c.height;c.dpr;const h={cameraOpt:{..._n.defaultCameraOpt,...n.camera,width:l,height:u}};this.createAppView({id:r,container:o,displayer:c,cameraOpt:h.cameraOpt,focusScenePath:n.focusScenePath,viewData:n}),c.createAppViewDisplayer(r,o);const d=this.getAppViewListeners(r);n.callbacks.on("onSizeUpdated",d.onSizeUpdated),n.callbacks.on("onCameraUpdated",d.onCameraUpdated),n.callbacks.on("onActiveHotkey",d.onActiveHotkey),this.tmpFocusedViewId===r?(this.setFocuedViewId(r),this.tmpFocusedViewId=void 0):this.getPreferredFocusedViewId()===r&&this.setFocuedViewId(r),setTimeout(()=>{this.isCurrentAppViewLifecycleRevision(r,i)&&this.onAppViewCameraUpdated(r)},0)});x(this,"onAppViewSizeUpdated",async e=>{await new Promise(n=>{setTimeout(()=>{n(!0)},0)});const r=this.appViews.get(e);r&&r.viewData&&this.updateAppCamera(e)});x(this,"onAppViewCameraUpdated",async e=>{await new Promise(r=>{setTimeout(()=>{r(!0)},0)}),this.updateAppCamera(e)});x(this,"updateAppCamera",e=>{const r=this.appViews.get(e);if(r&&r.viewData){const n=r.viewData.camera,i=r.cameraOpt;if(i){const{width:o,height:a}=r.viewData.size,c=i.width,l=i.height;(o!==c||a!==l)&&r.displayer.updateSize();const u=n.scale===1/0?1:n.scale,h=n.centerX||0,d=n.centerY||0,f={...i,scale:u,centerX:h,centerY:d,width:o,height:a};ve.isEqual(f,i)||(r.cameraOpt=f)}}});this.control=e.control}bumpAppViewLifecycleRevision(e){const r=(this.appViewLifecycleRevisionById.get(e)||0)+1;return this.appViewLifecycleRevisionById.set(e,r),r}isCurrentAppViewLifecycleRevision(e,r){return this.appViewLifecycleRevisionById.get(e)===r}cancelAppScenePathRetry(e){const r=this.appScenePathRetryTimerById.get(e);r!==void 0&&clearTimeout(r),this.appScenePathRetryTimerById.delete(e)}consumeAppScenePathWhenReady(e,r){const n=this.appViewLifecycleRevisionById.get(e);if(n===void 0)return;this.cancelAppScenePathRetry(e);const i=()=>{var l,u,h,d,f;if(this.appScenePathRetryTimerById.delete(e),!this.isCurrentAppViewLifecycleRevision(e,n)||((l=this.getView(e))==null?void 0:l.viewData)!==r)return;const o=r.focusScenePath,a=(f=(d=(h=(u=this.windowManager)==null?void 0:u.queryOne)==null?void 0:h.call(u,e))==null?void 0:d.getFullScenePath)==null?void 0:f.call(d);if(o&&(!a||o===a)){this.control.onSceneChange(o,e);return}const c=setTimeout(i,0);this.appScenePathRetryTimerById.set(e,c)};i()}getPreferredFocusedViewId(){var r;const e=(r=this.windowManager)==null?void 0:r.focused;return e&&this.getView(e)?e:this.tmpFocusedViewId&&this.getView(this.tmpFocusedViewId)?this.tmpFocusedViewId:Fe}getAuthoritativeScenePath(e){var n,i,o,a,c,l,u,h;if(e!==Fe){const d=(a=(o=(i=(n=this.windowManager)==null?void 0:n.queryOne)==null?void 0:i.call(n,e))==null?void 0:o.getFullScenePath)==null?void 0:a.call(o);if(d)return d}else{const d=(l=(c=this.windowManager)==null?void 0:c.mainView)==null?void 0:l.focusScenePath;if(d)return d}return((h=(u=this.getView(e))==null?void 0:u.viewData)==null?void 0:h.focusScenePath)||super.getAuthoritativeScenePath(e)}logMainViewCameraTrace(e,r){const n=this.control.logger,i=`[Appliance]: [main-view-camera] stage=${e} ${JSON.stringify(r)}`;n.infoDebounced?n.infoDebounced(`main-view-camera:${e}`,i):n.info(i)}getAppViewListeners(e){let r=this.appViewListeners.get(e);return r||(r={onSizeUpdated:()=>{this.onAppViewSizeUpdated(e)},onCameraUpdated:()=>{this.onAppViewCameraUpdated(e)},onActiveHotkey:n=>{this.onActiveHotkeyChange(n)}},this.appViewListeners.set(e,r)),r}removeMainViewListeners(e){e&&(e.callbacks.off("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.off("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.off("onActiveHotkey",this.mainViewHotkeyListener))}removeAppViewListeners(e,r){const n=this.appViewListeners.get(e);r&&n&&(r.callbacks.off("onSizeUpdated",n.onSizeUpdated),r.callbacks.off("onCameraUpdated",n.onCameraUpdated),r.callbacks.off("onActiveHotkey",n.onActiveHotkey)),this.appViewListeners.delete(e)}destroyAppView(e,r=!1){this.cancelAppScenePathRetry(e);const n=this.appViews.get(e);this.removeAppViewListeners(e,n==null?void 0:n.viewData),super.destroyAppView(e,r)}destroy(){var e;this.mainViewLifecycleRevision++;for(const r of this.appScenePathRetryTimerById.keys())this.cancelAppScenePathRetry(r);this.appViewLifecycleRevisionById.clear(),this.removeWindowManagerListeners(),this.checkScaleTimer&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),this.removeMainViewListeners((e=this.mainView)==null?void 0:e.viewData);for(const[r,n]of this.appViews.entries())this.removeAppViewListeners(r,n.viewData);super.destroy(),this.appViewListeners.clear()}removeWindowManagerListeners(){var r;for(const n of this.appScenePathRetryTimerById.keys())this.cancelAppScenePathRetry(n);const e=(r=this.windowManager)==null?void 0:r.emitter;e&&(e.off("focusedChange",this.focusedChangeListener),e.off("mainViewScenePathChange",this.mainViewScenePathChangeListener),e.off("onMainViewMounted",this.onMainViewMounted),e.off("onAppViewMounted",this.onAppViewMounted),e.off("onMainViewRebind",this.onMainViewRelease),e.off("onBoxClose",this.boxCloseListener),e.off("onAppScenePathChange",this.appScenePathChangeListener),e.off("appsChange",this.appsChangeListener),this.windowManager=void 0)}getViewInitData(e){var n,i;const r=this.getView(e);if(r){const{width:o,height:a,dpr:c}=r.displayer,l={dpr:c,originalPoint:[o/2,a/2],offscreenCanvasOpt:{..._n.defaultScreenCanvasOpt,contextType:((i=(n=this.control).getRenderContextTypeForView)==null?void 0:i.call(n,e))??this.control.renderingCompatibilityDecision.contextType,width:o,height:a},layerOpt:{..._n.defaultLayerOpt,width:o,height:a},cameraOpt:{..._n.defaultCameraOpt,width:o,height:a}};if(r.viewData){const{scale:u,...h}=r.viewData.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u}}return l}}async mountView(e){const r=this.getView(e);if(!r)return;const n=this.control.getViewLifecycleGeneration(e),i=()=>this.getView(e)===r&&this.control.isPendingViewInitCurrent(e,n);if(i())return this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"start"}),this.control.armPendingViewInit(e),this.control.queuePendingViewInit(e,async()=>{var a,c,l,u,h,d;if(!i()||(this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.ensureRenderRuntimeReady()),!i())||(await r.displayer.resetRenderSurface(),!i()))return;this.control.isUseOffscreenTransfer&&r.displayer.canvasBgRef.current&&r.displayer.canvasServiceFloatRef.current&&r.displayer.canvasFloatRef.current&&r.displayer.setTransferControlToOffscreenCanvas({bgCanvas:r.displayer.canvasBgRef.current,serviceCanvas:r.displayer.canvasServiceFloatRef.current,localCanvas:r.displayer.canvasFloatRef.current});const o=this.getViewInitData(e);if(o&&((a=this.control.worker)==null||a.createViewWorker(e,o,r.displayer)),r.focusScenePath&&this.control.collector){let f=!1;if(this.control.collector.authStorage){const{renderAuth:g,pageAuth:y}=this.control.collector.authStorage;if(g){const S=g[e];if(S){const{render:b,hide:C,clear:N}=S;this.control.renderControl.syncRenderUids(e,b,C,N),f=!0}}if(!f&&y){const S=y[e];S&&(this.control.renderControl.syncPageAuth(e,S,!0),f=!0)}}(u=(l=(c=this.control.pluginOptions)==null?void 0:c.extras)==null?void 0:l.undoRedo)!=null&&u.enableGlobal&&r.displayer.commiter&&((h=this.control.collector)!=null&&h.globalUndoRedoStackStorage[r.id])&&r.displayer.commiter.pullServiceData(this.control.collector.globalUndoRedoStackStorage[r.id])}if((d=this.control.worker)!=null&&d.isActive){const f=await this.control.worker.waitForViewInitCompletion(e);if(!i())return;if(f==="timeout")throw this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"timeout"}),new Error(`view init completion timeout: ${e}`)}},n)}listenerWindowManager(e){this.removeWindowManagerListeners(),this.windowManager=e,e.emitter.on("focusedChange",this.focusedChangeListener),e.emitter.on("mainViewScenePathChange",this.mainViewScenePathChangeListener),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",this.boxCloseListener),e.emitter.on("onAppScenePathChange",this.appScenePathChangeListener),e.emitter.on("appsChange",this.appsChangeListener)}mountMainView(e,r){if(r!==this.mainViewLifecycleRevision)return;const n=e.divElement;if(!n||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const o=new JTe(this.control,tt.InternalMsgEmitter),a=e.size.width||o.width,c=e.size.height||o.height;o.dpr;const l={cameraOpt:{..._n.defaultCameraOpt,width:a,height:c}},{scale:u,...h}=e.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u},this.createMianView({id:Fe,container:n,displayer:o,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e});const d=this.getPreferredFocusedViewId();(!d||!this.getView(d))&&this.setFocuedViewId(Fe),o.createMainViewDisplayer(n),this.control.notifyMainViewMounted(),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.mainViewHotkeyListener)}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class kr extends tt{constructor(e){super(e);x(this,"windowManager");x(this,"viewContainerManager");const r={control:this,internalMsgEmitter:tt.InternalMsgEmitter,publicMsgEmitter:tt.PublicMsgEmitter};this.viewContainerManager=new _n(r)}requiresCanvas2DCompanionRenderProbe(){return!0}init(){}activePlugin(){this.collector&&(this.collector.addAuthStateListener((e,r)=>{e&&Object.keys(e).forEach(n=>{var o;const i=(o=e[n])==null?void 0:o.newValue;this.renderControl.syncRenderUids(n,i==null?void 0:i.render,i==null?void 0:i.hide,i==null?void 0:i.clear)}),r&&Object.keys(r).forEach(n=>{var o;const i=(o=r[n])==null?void 0:o.newValue;this.renderControl.syncPageAuth(n,i)})}),this.collector.addStorageStateListener(e=>{var a;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){const l=Object.keys(e.diffView||{});for(const u of l.length?l:[Fe])this.handleRemoteStorageRemoval(u,void 0,{clearView:!0});return}const{diffView:r,diffScenePath:n,diffData:i}=e,o=new Map;if(r){let c;Object.keys(r).forEach(l=>{const u=r[l];if(u&&!u.newValue)this.handleRemoteStorageRemoval(l,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue);else if(u&&u.newValue){for(const h of Object.keys(u.newValue))this.worker.pullServiceData(l,h,{isAsync:!1,useAnimation:!1});c=u.newValue}if(c)for(const h of Object.values(c)){const d=new Set;for(const f of Object.keys(h))f&&d.add(f);o.set(l,d)}})}if(n){let c;Object.keys(n).forEach(l=>{const u=n[l],h=(u==null?void 0:u.scenePath)??l;if(u&&u.viewId&&!u.newValue?(this.handleRemoteStorageRemoval(u.viewId,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!1}),c=u.newValue),u!=null&&u.viewId&&c){const d=new Set;for(const f of Object.keys(c))f&&d.add(f),o.set(u.viewId,d)}})}i&&Object.keys(i).forEach(c=>{var u,h,d,f;const l=i[c];if(l){const g=l.storageKey??c,{viewId:y}=l,S=!l.newValue&&((u=this.collector)==null?void 0:u.isOwn(g));if(!l.newValue){const C=!!S&&!!((h=this.collector)!=null&&h.isSelector(g));this.handleRemoteStorageRemoval(y,g,{abortAllContinuousMethods:C,cancelTicker:C})}const b=o.get(y)||new Set;b.add(g),o.set(y,b),(d=this.worker)==null||d.onServiceDerive(g,l),(f=this.miniMapManager)==null||f.updateMiniMapCamera(y)}});for(const[c,l]of o.entries())tt.InternalMsgEmitter.emit("excludeIds",[...l],c)}),this.pluginOptions.extras.undoRedo.enableGlobal&&this.collector.addGlobalUndoRedoStackListener(e=>{Object.keys(e).forEach(r=>{var o;const n=e[r],i=(o=this.viewContainerManager.getView(r))==null?void 0:o.displayer.commiter;i&&i.pullServiceData(n==null?void 0:n.newValue)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})}),this.room&&this.roomMember.onUidChangeHook(e=>{var r,n;(r=this.collector)!=null&&r.serviceStorage&&this.viewContainerManager.getAllViews().forEach(i=>{var o,a,c,l;if(i&&i.focusScenePath&&((o=this.collector)!=null&&o.serviceStorage[i.id])&&this.collector.serviceStorage[i.id][i.focusScenePath]){const u=Object.keys(this.collector.serviceStorage[i.id][i.focusScenePath]);for(const h of u){const d=(a=this.collector)==null?void 0:a.getUidFromKey(h);if(d&&!e.online.includes(d))if((c=this.collector)!=null&&c.isSelector(h))this.renderControl.isWritable&&((l=this.collector)==null||l.updateValue(h,void 0,{viewId:i.id,scenePath:i.focusScenePath,isSync:!0})),this.worker.blurSelector(i.id,i.focusScenePath,h);else{const f=this.textEditorManager.editors.get(h);f&&f.opt&&(f.opt.workState===he.Doing||f.opt.workState===he.Start)&&(Ws(f.opt.text)?this.textEditorManager.unActive(h):this.textEditorManager.delete(h))}}}}),(n=this.cursor)==null||n.updateRoomMembers(e)}))}async activeWorker(){await this.restoreCachedRenderRuntimeDecision(),await this.worker.init()}setWindowManager(e){var r,n,i,o,a;this.windowManager=e,(n=(r=this.windowManager)==null?void 0:r.mainView)!=null&&n.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(a=(o=(i=this.windowManager.appManager)==null?void 0:i.viewManager)==null?void 0:o.views)!=null&&a.size&&this.windowManager.appManager.viewManager.views.forEach((c,l)=>{this.viewContainerManager.onAppViewMounted({appId:l,view:c})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const eu=new WeakMap;function fm(s){return/^https?:\/\//i.test(s.trim())}function e1e(s){var e,r;const t=[];for(const[n,i]of Object.entries(s.appearance||{})){if(!i)continue;const o=[["default",i.images],["local",(e=i.local)==null?void 0:e.images],["synced",(r=i.synced)==null?void 0:r.images]];for(const[a,c]of o){if(!c)continue;fm(c.standardResolution)&&t.push({appliance:n,scope:a,density:"standard",key:c.key||"external",url:c.standardResolution});const l=Fd(c);l&&fm(l)&&t.push({appliance:n,scope:a,density:"high",key:c.key||"external",url:l})}}return t}function CM(s){eu.has(s)||(eu.set(s,new Map),window.setTimeout(()=>{try{const t=fd(s),e=e1e(t);if(!e.length)return;const r=eu.get(s);if(!r)return;const n=new Set;for(const i of e){if(n.has(i.url))continue;n.add(i.url);const o=new Image;let a;const c=()=>{a!==void 0&&window.clearTimeout(a),o.onload=null,o.onerror=null,r.delete(i.url)};o.onload=c,o.onerror=c,r.set(i.url,o),a=window.setTimeout(c,t.preloadTimeout),o.src=i.url}}catch{}},0))}function IM(s,t){var r;if(!t||!Array.isArray(t.sources)||!t.sources.includes("appliance")||typeof t.viewId!="string"||typeof t.scenePath!="string"||typeof t.imageUrl!="string")return!1;const e=(r=s==null?void 0:s[t.viewId])==null?void 0:r[t.scenePath];return e?Object.values(e).some(n=>{var i;return(n==null?void 0:n.toolsType)===Q.BackgroundSVG&&((i=n.opt)==null?void 0:i.src)===t.imageUrl}):!1}function bM(s,t,e){return new Proxy(s,{get(r,n,i){const o=Reflect.get(r,n,i);if(n==="destroy")return o;if(e()===t)return typeof o!="function"?o:(...a)=>{if(e()===t)return Reflect.apply(o,i,a)}},set(r,n,i,o){return e()!==t?!0:Reflect.set(r,n,i,o)}})}const we=class we extends Tm{constructor(){super(...arguments);x(this,"callbackDisplayer");x(this,"callbackStateName");x(this,"callbackOwnerManager");x(this,"ownedManager");x(this,"roomLifecycleDisposer");x(this,"roomLifecycleOwnerManager");x(this,"undoStepForwarderDisposer");x(this,"undoStepForwarderOwnerManager");x(this,"onPhaseChanged",e=>{var r;e===zi.Reconnecting&&((r=this.ownedManager)==null||r.setSnapshootData())});x(this,"updateRoomWritable",()=>{var r;const e=this.callbackDisplayer||this.displayer;(r=this.ownedManager)==null||r.onWritableChange(e.isWritable)});x(this,"roomStateChangeListener",async e=>{var n,i;e!=null&&e.roomMembers&&((n=this.ownedManager)==null||n.onRoomMembersChange(e.roomMembers));const r=this.callbackDisplayer||this.displayer;ze(r)&&!r.isWritable||e.memberState&&((i=this.ownedManager)==null||i.onMemberChange(e.memberState))})}static async getInstance(e,r){var N,T,p;(m=>{var v,M;try{(M=(v=r.callbacks)==null?void 0:v.onInitLoadingChange)==null||M.call(v,m)}catch(R){we.logger.error(`[ApplianceMultiPlugin] onInitLoadingChange error: ${(R==null?void 0:R.message)||R}`)}})({loading:!0,phase:"plugin",status:"start"});const i=e.displayer,o=new eo(ze(i)&&i.logger||we.logger),a=typeof navigator>"u"?"unknown":navigator.userAgent;o.info(`[Appliance]: [init-enter] version=${zc} userAgent=${a}`);const c=i.callbacks.on,l=i.callbacks.off,u=i.callbacks.once,h=e.cleanCurrentScene,d=e.mainView.setMemberState;r!=null&&r.logger&&(we.logger=new eo(r.logger));let f=i.getInvisiblePlugin(we.kind);f||(f=await we.createApplianceMultiPlugin(i,we.kind)),i&&f&&await we.createCurrentManager(e,{cdn:r.options.cdn,extras:a0(r.options.extras)},f,r.callbacks),(N=we.currentManager)==null||N.emitInitLoadingChange({loading:!0,phase:"plugin",status:"success"});const g={displayer:i,windowManager:e,currentManager:we.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(m){var R;we.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const v=(e.mainView||i).getBoundingRect(m),M=await((R=we.currentManager)==null?void 0:R.getBoundingRect(m));return!v.width||!v.height?M:bd(v,M)},screenshotToCanvasAsync:async function(m,v,M,R,E,P){var L;we.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let k=M,O=R,B=E.scale;k>this.maxScreenshotWidth&&(B=this.maxScreenshotWidth/k*B,k=this.maxScreenshotWidth),O>this.maxScreenshotHeight&&(B=Math.min(this.maxScreenshotHeight/O*B,B),O=this.maxScreenshotHeight),E.scale=B;const D=document.createElement("canvas"),A=D.getContext("2d");D.width=k*(P||1),D.height=O*(P||1),A&&((e.mainView||i).screenshotToCanvas(A,v,k,O,E,P),m.drawImage(D,Math.floor((M-k)/2),Math.floor((R-O)/2),k*(P||1),O*(P||1),0,0,k,O),D.remove()),we.currentManager&&await((L=we.currentManager)==null?void 0:L.screenshotToCanvas(m,v,k,O,E,Math.floor((M-k)/2),Math.floor((R-O)/2)))},scenePreviewAsync:async function(m,v,M,R,E){we.logger.info("[ApplianceMultiPlugin] scenePreviewAsync"),(e.mainView||i).scenePreview(m,v,M,R,E);const P=document.createElement("img");P.className="appliance-plugin-fill-scene-snapshot-img",v.append(P),getComputedStyle(v).position||(v.style.position="relative"),we.currentManager&&await we.currentManager.scenePreview(m,P)},fillSceneSnapshotAsync:async function(m,v,M,R,E){we.logger.info("[ApplianceMultiPlugin] fillSceneSnapshotAsync"),v.innerHTML="",(e.mainView||i).fillSceneSnapshot(m,v,M,R,E);const P=M||e.mainView.size.width,k=R||e.mainView.size.height;let O=await this.getBoundingRectAsync(m);O||(O={originX:0,originY:0,width:P,height:k});let B=Math.max(O==null?void 0:O.width,P),D=Math.max(O==null?void 0:O.height,k),A=1;const L=B>P&&Math.min(P/B,A)||A,U=D>k&&Math.min(k/D,A)||A;L<=U?(B=L<1&&P||B,D=Math.floor(D*L)+1,A=L):L>U&&(D=U<1&&k||D,B=Math.floor(B*U)+1,A=U);const Y={scale:A,centerX:O.originX+O.width/2,centerY:O.originY+O.height/2},q=document.createElement("canvas"),ie=q.getContext("2d");q.width=B,q.height=D,ie&&await this.screenshotToCanvasAsync(ie,m,B,D,Y,devicePixelRatio);const z=document.createElement("img");z.className="appliance-plugin-fill-scene-snapshot-img",z.src=q.toDataURL(),z.onload=()=>{q.remove()},z.onerror=()=>{q.remove(),z.remove()},v.append(z),getComputedStyle(v).position||(v.style.position="relative")},_callbacksOn:function(m,v){we.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&ze(i)&&i.isWritable?kr.InternalMsgEmitter.on(m,v):c.call(i.callbacks,m,v))},_callbacksOnce:function(m,v){we.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&ze(i)&&i.isWritable?kr.InternalMsgEmitter.on(m,v):u.call(i.callbacks,m,v))},_callbacksOff:function(m,v){we.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&ze(i)&&i.isWritable?kr.InternalMsgEmitter.off(m,v):l.call(i.callbacks,m,v))},canRedoSteps(){if(we.logger.info("[ApplianceMultiPlugin] canRedoSteps"),we.currentManager&&ze(i)&&!i.disableSerialization){const m=we.currentManager.viewContainerManager.focuedView,v=m==null?void 0:m.focusScenePath;if(m&&v)return m.displayer.commiter.redoStack.filter(M=>M.scenePath===v).length}return 0},canUndoSteps(){if(we.logger.info("[ApplianceMultiPlugin] canUndoSteps"),we.currentManager&&ze(i)&&!i.disableSerialization){const m=we.currentManager.viewContainerManager.focuedView,v=m==null?void 0:m.focusScenePath;if(m&&v)return m.displayer.commiter.undoStack.filter(E=>E.scenePath===v).length}return 0},undo:function(){return we.logger.info("[ApplianceMultiPlugin] undo"),we.currentManager&&ze(i)&&!i.disableSerialization&&i.isWritable?we.currentManager.viewContainerManager.undo():0},redo:function(){return we.logger.info("[ApplianceMultiPlugin] redo"),we.currentManager&&ze(i)&&!i.disableSerialization&&i.isWritable?we.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){we.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),we.currentManager&&ze(i)&&i.isWritable&&(we.currentManager.logger.info("[Appliance]: cleanCurrentScene"),we.currentManager.cleanCurrentScene().then(m=>{m&&h.call(e)}).catch(m=>{var v;(v=we.currentManager)==null||v.logger.error(`[Appliance]: cleanCurrentScene failed: ${(m==null?void 0:m.message)||m}`)}))},insertImage:function(m){if(we.logger.info("[ApplianceMultiPlugin] insertImage"),we.currentManager&&ze(i)&&i.isWritable){const v=we.currentManager.viewContainerManager.focuedViewId||Fe;we.currentManager.worker.insertImage(v,m)}},lockImage:function(m,v){if(we.logger.info("[ApplianceMultiPlugin] lockImage"),we.currentManager&&ze(i)&&i.isWritable){const M=we.currentManager.viewContainerManager.focuedViewId||Fe;we.currentManager.worker.lockImage(M,m,v)}},completeImageUpload:function(m,v){if(we.logger.info("[ApplianceMultiPlugin] completeImageUpload"),we.currentManager&&ze(i)&&i.isWritable){const M=we.currentManager.viewContainerManager.focuedViewId||Fe;we.currentManager.worker.completeImageUpload(M,m,v)}},getImagesInformation:function(m){return we.logger.info("[ApplianceMultiPlugin] completeImageUpload"),we.currentManager&&ze(i)&&i.isWritable?we.currentManager.worker.getImagesInformation(m):[]},insertText:function(m,v,M){if(we.logger.info("[ApplianceMultiPlugin] insertText"),we.currentManager&&ze(i)&&i.isWritable){const R=we.currentManager.viewContainerManager.focuedViewId||Fe;return we.currentManager.textEditorManager.insertText(R,m,v,M)}},updateText:function(m,v){we.logger.info("[ApplianceMultiPlugin] updateText"),we.currentManager&&ze(i)&&i.isWritable&&we.currentManager.textEditorManager.updateText(m,v)},callbacks:()=>({...i.callbacks,on:g._callbacksOn.bind(g),once:g._callbacksOnce.bind(g),off:g._callbacksOff.bind(g)}),destroy(){return we.logger.info("[Appliance]: [ApplianceMultiPlugin] destroy"),f?f.destroyOwnedPluginInstance(g.currentManager):Promise.resolve()},setMemberState(m){if(we.currentManager){we.currentManager.logger.info(`[Appliance]: setMemberState ${JSON.stringify(m)}`);const v=Object.keys(m);if(ze(i)&&i.isWritable){if(v.includes("currentApplianceName"))if(we.currentManager.requestToolChange(m),m.currentApplianceName&&m.currentApplianceName===De.laserPen){if(we.currentManager.isUseSimple)throw we.currentManager.logger.error("[Appliance]: [ApplianceMultiPlugin] laserPen must be not support in simple mode"),new Error("[Appliance]: [ApplianceMultiPlugin] laserPen must be not support in simple mode");m.currentApplianceName=De.pencil,m.useLaserPen=!0}else m.currentApplianceName&&m.currentApplianceName===De.pencil&&(m.useLaserPen=!1);try{d.call(e.mainView,m)}catch(M){throw we.currentManager.setToolChangePending(!1,"set-member-state-error"),M}return}}throw we.logger.error("[Appliance]: [ApplianceMultiPlugin] setMemberState must be called in writable room"),new Error("[Appliance]: [ApplianceMultiPlugin] setMemberState must be called in writable room")},createMiniMap:async function(m,v){if(we.logger.info("[ApplianceMultiPlugin] createMiniMap"),we.currentManager&&ze(i)&&i.isWritable)return we.currentManager.logger.info("[Appliance]: [ApplianceMultiPlugin] createMiniMap"),we.currentManager.createMiniMap(m,v)},destroyMiniMap:async function(m){if(we.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),we.currentManager&&ze(i)&&i.isWritable)return we.currentManager.logger.info("[Appliance]: [ApplianceMultiPlugin] destroyeMiniMap"),we.currentManager.destroyMiniMap(m)},filterRenderByUid(m,v,M){if(we.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),we.currentManager&&ze(i)&&i.isWritable)return we.currentManager.filterRenderByUid(m,v,M)},cancelFilterRender(m,v){if(we.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),we.currentManager&&ze(i)&&i.isWritable)return we.currentManager.cancelFilterRender(m,v)},addListener:(m,v)=>{kr.PublicMsgEmitter.on(m,v)},removeListener:(m,v)=>{kr.PublicMsgEmitter.off(m,v)},usePlugin:m=>{var v;we.logger.info("[ApplianceMultiPlugin] usePlugin",m.kind),(v=we.currentManager)==null||v.usePlugin(m)},getDisableDeviceInputs(){if(we.currentManager&&ze(i))return we.currentManager.disableDeviceInputs},setDisableDeviceInputs(m){we.logger.info(`[ApplianceMultiPlugin] setDisableDeviceInputs ${m}`),we.currentManager&&ze(i)&&(we.currentManager.disableDeviceInputs=m)},getDisableCameraTransform(){if(we.currentManager&&ze(i))return we.currentManager.disableCameraTransform},setDisableCameraTransform(m){we.logger.info(`[ApplianceMultiPlugin] setDisableCameraTransform ${m}`),we.currentManager&&ze(i)&&(we.currentManager.disableCameraTransform=m)},getDisableEraseImage(){if(we.currentManager&&ze(i))return we.currentManager.disableEraseImage},setDisableEraseImage(m){we.logger.info(`[ApplianceMultiPlugin] setDisableEraseImage ${m}`),we.currentManager&&ze(i)&&(we.currentManager.disableEraseImage=m)},setWritable:m=>g.setWritable(m),requestIdleCallback:(m,v)=>{const M=(v==null?void 0:v.timeout)||0,R=performance.now();let E;const P=new MessageChannel;let k;const O=B=>{try{m({didTimeout:B,timeRemaining:()=>{const A=performance.now()-R;return Math.max(0,M-A)}})}catch(D){we.logger.error("[ApplianceMultiPlugin] requestIdleCallback error:",D)}finally{P.port1.close(),P.port2.close(),E!==void 0&&cancelAnimationFrame(E),k!==void 0&&clearTimeout(k)}};return P.port1.onmessage=()=>{E=requestAnimationFrame(()=>{M>0&&performance.now()-R>=M?O(!0):O(!1)})},P.port2.postMessage(null),M>0&&(k=setTimeout(()=>{O(!0)},M)),k||E||0},cancelIdleCallback:m=>{try{clearTimeout(m),cancelAnimationFrame(m)}catch(v){we.logger.error("[ApplianceMultiPlugin] cancelIdleCallback error:",v)}},injectMethodToObject:(m,v)=>{if(typeof m[v]=="function"||typeof m[v]>"u"){(v==="requestIdleCallback"||v==="cancelIdleCallback")&&we.currentManager&&we.currentManager.registerPolyfillMethod(v);const M=g[v];m[v]=function(...R){if(we.currentManager===g.currentManager)return Reflect.apply(M,this,R)};return}v==="callbacks"&&(m.callbacks.on=g._callbacksOn.bind(g),m.callbacks.off=g._callbacksOff.bind(g),m.callbacks.once=g._callbacksOnce.bind(g))},blurText:()=>{we.logger.info("[ApplianceMultiPlugin] blurText"),we.currentManager&&ze(i)&&i.isWritable&&we.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(m,v)=>{var M;if(we.logger.info(`[ApplianceMultiPlugin] hasElements ${m}`),we.currentManager&&ze(i)&&i.isWritable){let R=m;if(!R){const E=we.currentManager.viewContainerManager.focuedView;R=E==null?void 0:E.focusScenePath}if(R){const E=(M=we.currentManager.collector)==null?void 0:M.getScenePathData(R);if(E){const P=Object.values(E);return P.length>0?v?P.some(k=>v(k.toolsType)):!0:!1}return!1}return!1}},getElements:(m,v)=>{var M;if(we.logger.info(`[ApplianceMultiPlugin] getElements ${m}`),we.currentManager&&ze(i)&&i.isWritable){let R=m;if(!R){const E=we.currentManager.viewContainerManager.focuedView;R=E==null?void 0:E.focusScenePath}if(R){const E=(M=we.currentManager.collector)==null?void 0:M.getScenePathData(R),P=E&&Object.values(E)||[];return E&&P.length>0&&v?P.filter(k=>v(k.toolsType)):P}return[]}},hasBackgroundImage:m=>{var v,M;return IM((M=(v=we.currentManager)==null?void 0:v.collector)==null?void 0:M.storage,m)},stopDraw:m=>{if(we.logger.info(`[ApplianceMultiPlugin] stopDraw ${m}`),we.currentManager&&ze(i))return we.currentManager.stopDraw(m)},loadFontFaces:()=>{var m;return we.logger.info("[ApplianceMultiPlugin] loadFontFaces"),((m=we.currentManager)==null?void 0:m.loadFontFaces())||Promise.resolve({status:"error"})},refreshViewRender:m=>{var v;return we.logger.info(`[ApplianceMultiPlugin] refreshViewRender ${m}`),((v=we.currentManager)==null?void 0:v.refreshViewRender(m))||Promise.resolve({status:"error"})},refreshRender:()=>{var m;return we.logger.info("[ApplianceMultiPlugin] refreshRender"),((m=we.currentManager)==null?void 0:m.refreshRender())||Promise.resolve({status:"error"})},refreshViewTextRender:m=>{var v;return we.logger.info(`[ApplianceMultiPlugin] refreshViewTextRender ${m}`),((v=we.currentManager)==null?void 0:v.refreshViewTextRender(m))||Promise.resolve({status:"error"})},refreshTextRender:()=>{var m;return we.logger.info("[ApplianceMultiPlugin] refreshTextRender"),((m=we.currentManager)==null?void 0:m.refreshTextRender())||Promise.resolve({status:"error"})},setViewLocalScenePathChange:async(m,v)=>{we.logger.info(`[ApplianceMultiPlugin] setViewLocalScenePathChange ${m} ${v}`),we.currentManager&&await we.currentManager.setViewLocalScenePathChange(v,m)},insertMarkmap:async(m,v)=>{if(we.logger.info(`[ApplianceMultiPlugin] insertMarkmap: ${m}, info: ${JSON.stringify(v)}`),we.currentManager&&we.currentManager.isUseBackgroundThread)return we.currentManager.worker.insertBackgroundMarkMap(m,v)},updateMarkmap:async(m,v,M)=>{if(we.logger.info(`[ApplianceMultiPlugin] updateMarkmap: ${m}, markmapId: ${v}, info: ${JSON.stringify(M)}`),we.currentManager&&we.currentManager.isUseBackgroundThread)return we.currentManager.worker.updateBackgroundMarkMap(m,v,M)},insertBackgroundImage:async(m,v)=>{if(we.logger.info(`[ApplianceMultiPlugin] insertBackgroundImage: ${m}, info: ${JSON.stringify(v)}`),we.currentManager&&we.currentManager.isUseBackgroundThread)return we.currentManager.worker.insertBackgroundSVG(m,v)},reloadBackgroundImage:async m=>{const v=we.currentManager;return v?v.reloadBackgroundImage(m):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}},getSelectedElements:m=>{var v,M;return(M=(v=we.currentManager)==null?void 0:v.selectorApi)==null?void 0:M.getSelectedElements(m)},isElementPropertySupported:(m,v)=>{var M,R;return((R=(M=we.currentManager)==null?void 0:M.selectorApi)==null?void 0:R.isElementPropertySupported(m,v))||!1},blurSelector:m=>{var v;if(we.currentManager&&ze(i)&&i.isWritable){const M=(v=we.currentManager)==null?void 0:v.selectorApi;return M?M.blurSelector(m):Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},updateSelectedElements:(m,v)=>{var M;if(we.currentManager&&ze(i)&&i.isWritable){const R=(M=we.currentManager)==null?void 0:M.selectorApi;return R?R.updateSelectedElements(m,v):Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:m,ok:!1,reason:"no-selection"})}return Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:m,ok:!1,reason:"no-writable permission"})},updateElement:(m,v,M,R,E=!0)=>{var P;if(we.currentManager&&ze(i)&&i.isWritable){const k=(P=we.currentManager)==null?void 0:P.selectorApi;return k?k.updateElement(m,v,M,R,E):Promise.resolve(!1)}return Promise.resolve(!1)},copySelectedElements:m=>{var v;if(we.currentManager&&ze(i)&&i.isWritable){const M=(v=we.currentManager)==null?void 0:v.selectorApi;return M?M.copySelectedElements(m):Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},deleteSelectedElements:m=>{var v;if(we.currentManager&&ze(i)&&i.isWritable){const M=(v=we.currentManager)==null?void 0:v.selectorApi;return M?M.deleteSelectedElements(m):Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},getFloatbarContainer:m=>{var v;return(v=we.currentManager)==null?void 0:v.viewContainerManager.getFloatbarContainer(m)},getViewOffsetToContainer:(m,v)=>{var M;return(M=we.currentManager)==null?void 0:M.viewContainerManager.getViewOffsetToContainer(m,v)}};g.injectMethodToObject(e,"undo"),g.injectMethodToObject(e,"redo"),g.injectMethodToObject(e,"cleanCurrentScene"),g.injectMethodToObject(e,"blurSelector"),g.injectMethodToObject(e,"updateElement"),g.injectMethodToObject(e,"insertImage"),g.injectMethodToObject(e,"completeImageUpload"),g.injectMethodToObject(e,"lockImage"),g.injectMethodToObject(e,"insertText"),g.injectMethodToObject(e,"updateText"),g.injectMethodToObject(i,"getImagesInformation"),g.injectMethodToObject(i,"callbacks"),g.injectMethodToObject(i,"screenshotToCanvasAsync"),g.injectMethodToObject(i,"getBoundingRectAsync"),g.injectMethodToObject(i,"scenePreviewAsync"),g.injectMethodToObject(i,"fillSceneSnapshotAsync"),g.injectMethodToObject(i,"blurSelector"),g.injectMethodToObject(i,"updateElement"),g.injectMethodToObject(e.mainView,"setMemberState"),ze(i)&&f&&(f.disposeRoomLifecycleInterceptor(),f.roomLifecycleDisposer=Cm(i,()=>g.currentManager,we.logger),f.roomLifecycleOwnerManager=g.currentManager),Object.defineProperty(e,"canUndoSteps",{get(){return g.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return g.canRedoSteps()}}),f==null||f.bindUndoStepForwarders(e);const y={...g,callbacks:g.callbacks()};Object.defineProperty(y,"disableDeviceInputs",{set(m){g.setDisableDeviceInputs(m)},get(){return g.getDisableDeviceInputs()}}),Object.defineProperty(y,"disableCameraTransform",{set(m){g.setDisableCameraTransform(m)},get(){return g.getDisableCameraTransform()}}),Object.defineProperty(y,"disableEraseImage",{set(m){g.setDisableEraseImage(m)},get(){return g.getDisableEraseImage()}});const S=bM(y,g.currentManager,()=>we.currentManager);f&&we.currentManager&&(we.currentManager.bindPlugin(f),f.init(i));const b=we.currentManager;e._appliancePlugin=S;const C=(T=we.currentManager)==null?void 0:T.pluginOptions.extras.cursor;if(C&&((p=we.currentManager)==null||p.worker.afterMainViewInitAck(()=>{CM(C)})),!b)throw e._appliancePlugin===S&&delete e._appliancePlugin,new Error("ApplianceMultiPlugin initialization was cancelled");if(b.startInitFontFaceLoadAndRender(),b.isMainViewMounted()){const m=await b.worker.waitForMainViewInitAck();if(m!=="ready"||we.currentManager!==b)throw e._appliancePlugin===S&&delete e._appliancePlugin,new Error(`ApplianceMultiPlugin initialization ${m==="timeout"?"timed out":"was cancelled"}`)}else b.logger.info("[Appliance]: main view not mounted yet, deferring render-init ack wait"),b.waitForMainViewMounted().then(m=>{if(!(m!=="ready"||we.currentManager!==b))return b.worker.waitForMainViewInitAck().then(v=>{b.logger.info(`[Appliance]: deferred render-init ${v}`)})}).catch(m=>{b.logger.error(`[Appliance]: deferred render-init failed: ${(m==null?void 0:m.message)||m}`)});return S}static onCreate(e){e&&we.currentManager&&(we.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,r){try{await e.createInvisiblePlugin(we,{})}catch(i){if(!e.isWritable){await e.setWritable(!0);const a=await this.createApplianceMultiPlugin(e,r);return await e.setWritable(!1),a}throw(e.logger||we.logger).error(`[Appliance]: create invisible plugin failed: ${(i==null?void 0:i.message)||i}`),i}let n=e.getInvisiblePlugin(r);return n||(n=await we.createApplianceMultiPlugin(e,r)),n}static beginManagerDestroy(e){if(!e)return Promise.resolve();if(we.drainingManager===e&&we.drainingPromise)return we.drainingPromise;we.currentManager===e&&(we.currentManager=void 0),we.drainingManager=e;const r=e.destroy({preserveStorage:!0}).finally(()=>{we.drainingManager===e&&(we.drainingManager=void 0),we.drainingPromise===r&&(we.drainingPromise=void 0)});return we.drainingPromise=r,r}init(e){this.unbindDisplayerCallbacks();const r=this.ownedManager,n=e.state;r==null||r.onRoomMembersChange(n.roomMembers),ze(e)&&(r==null||r.onMemberChange(n.memberState));const i=lh(e)?"onPlayerStateChanged":"onRoomStateChanged";this.callbackDisplayer=e,this.callbackStateName=i,this.callbackOwnerManager=r,e.callbacks.on(i,this.roomStateChangeListener),e.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),e.callbacks.on("onPhaseChanged",this.onPhaseChanged)}unbindDisplayerCallbacks(e){if(e!==void 0&&this.callbackOwnerManager!==e)return;const r=this.callbackDisplayer,n=this.callbackStateName;r&&n&&(r.callbacks.off(n,this.roomStateChangeListener),r.callbacks.off("onEnableWriteNowChanged",this.updateRoomWritable),r.callbacks.off("onPhaseChanged",this.onPhaseChanged)),this.callbackDisplayer=void 0,this.callbackStateName=void 0,this.callbackOwnerManager=void 0}disposeRoomLifecycleInterceptor(e){var r;e!==void 0&&this.roomLifecycleOwnerManager!==e||((r=this.roomLifecycleDisposer)==null||r.call(this),this.roomLifecycleDisposer=void 0,this.roomLifecycleOwnerManager=void 0)}bindUndoStepForwarders(e){this.disposeUndoStepForwarders();let r=!0;const n=new Set,i=(l,u,h,d=3)=>{if(!r||this.ownedManager!==o)return;const f=e.focused||Fe;if(d>0&&f!==u){const g=setTimeout(()=>{n.delete(g),i(l,u,h,d-1)},100);n.add(g);return}e.emitter.emit(l,h)},o=this.ownedManager,a=(l,u)=>i("canUndoStepsChange",u,l),c=(l,u)=>i("canRedoStepsChange",u,l);kr.InternalMsgEmitter.on("onCanUndoStepsUpdate",a),kr.InternalMsgEmitter.on("onCanRedoStepsUpdate",c),this.undoStepForwarderDisposer=()=>{r=!1,n.forEach(l=>clearTimeout(l)),n.clear(),kr.InternalMsgEmitter.off("onCanUndoStepsUpdate",a),kr.InternalMsgEmitter.off("onCanRedoStepsUpdate",c)},this.undoStepForwarderOwnerManager=o}disposeUndoStepForwarders(e){var r;e!==void 0&&this.undoStepForwarderOwnerManager!==e||((r=this.undoStepForwarderDisposer)==null||r.call(this),this.undoStepForwarderDisposer=void 0,this.undoStepForwarderOwnerManager=void 0)}destroyOwnedPluginInstance(e){return this.unbindDisplayerCallbacks(e),this.disposeRoomLifecycleInterceptor(e),this.disposeUndoStepForwarders(e),this.destroyOwnedManager(e)}destroyOwnedManager(e=this.ownedManager){return e?(this.ownedManager===e&&(this.ownedManager=void 0),we.beginManagerDestroy(e)):Promise.resolve()}destroy(){we.logger.info("[ApplianceMultiPlugin] passive destroy"),this.unbindDisplayerCallbacks(),this.disposeRoomLifecycleInterceptor(),this.disposeUndoStepForwarders(),this.destroyOwnedManager()}};x(we,"drainingManager"),x(we,"drainingPromise"),x(we,"kind","appliance-multi-plugin"),x(we,"currentManager"),x(we,"logger",{info:console.log,warn:console.warn,error:console.error}),x(we,"createCurrentManager",async(e,r,n,i)=>{we.drainingPromise&&await we.drainingPromise;const o=we.currentManager;if(o)try{await we.beginManagerDestroy(o),o.logger.info("[Appliance]: replace old manager success")}catch(l){throw o.logger.error(`[Appliance]: replace old manager failed: ${(l==null?void 0:l.message)||l}`),l}const a={plugin:n,displayer:e.displayer,options:r,callbacks:i},c=new kr(a);c.setWindowManager(e),we.currentManager=c,n.ownedManager=c});let nh=we;var t1e=xr,r1e=function(){return t1e.Date.now()},n1e=r1e,i1e=/\s/;function s1e(s){for(var t=s.length;t--&&i1e.test(s.charAt(t)););return t}var o1e=s1e,a1e=o1e,c1e=/^\s+/;function l1e(s){return s&&s.slice(0,a1e(s)+1).replace(c1e,"")}var u1e=l1e,h1e=wi,d1e=jr,f1e="[object Symbol]";function g1e(s){return typeof s=="symbol"||d1e(s)&&h1e(s)==f1e}var p1e=g1e,m1e=u1e,gm=On,y1e=p1e,pm=NaN,v1e=/^[-+]0x[0-9a-f]+$/i,M1e=/^0b[01]+$/i,w1e=/^0o[0-7]+$/i,S1e=parseInt;function T1e(s){if(typeof s=="number")return s;if(y1e(s))return pm;if(gm(s)){var t=typeof s.valueOf=="function"?s.valueOf():s;s=gm(t)?t+"":t}if(typeof s!="string")return s===0?s:+s;s=m1e(s);var e=M1e.test(s);return e||w1e.test(s)?S1e(s.slice(2),e?2:8):v1e.test(s)?pm:+s}var C1e=T1e,I1e=On,tu=n1e,mm=C1e,b1e="Expected a function",E1e=Math.max,x1e=Math.min;function R1e(s,t,e){var r,n,i,o,a,c,l=0,u=!1,h=!1,d=!0;if(typeof s!="function")throw new TypeError(b1e);t=mm(t)||0,I1e(e)&&(u=!!e.leading,h="maxWait"in e,i=h?E1e(mm(e.maxWait)||0,t):i,d="trailing"in e?!!e.trailing:d);function f(m){var v=r,M=n;return r=n=void 0,l=m,o=s.apply(M,v),o}function g(m){return l=m,a=setTimeout(b,t),u?f(m):o}function y(m){var v=m-c,M=m-l,R=t-v;return h?x1e(R,i-M):R}function S(m){var v=m-c,M=m-l;return c===void 0||v>=t||v<0||h&&M>=i}function b(){var m=tu();if(S(m))return C(m);a=setTimeout(b,y(m))}function C(m){return a=void 0,d&&r?f(m):(r=n=void 0,o)}function N(){a!==void 0&&clearTimeout(a),l=0,r=c=n=a=void 0}function T(){return a===void 0?o:C(tu())}function p(){var m=tu(),v=S(m);if(r=arguments,n=this,c=m,v){if(a===void 0)return g(c);if(h)return clearTimeout(a),a=setTimeout(b,t),f(c)}return a===void 0&&(a=setTimeout(b,t)),o}return p.cancel=N,p.flush=T,p}var k1e=R1e,A1e=k1e,P1e=On,D1e="Expected a function";function L1e(s,t,e){var r=!0,n=!0;if(typeof s!="function")throw new TypeError(D1e);return P1e(e)&&(r="leading"in e?!!e.leading:r,n="trailing"in e?!!e.trailing:n),A1e(s,t,{leading:r,maxWait:t,trailing:n})}var N1e=L1e;const O1e=un(N1e);class z1e extends MM{constructor(e,r){super(e,r);x(this,"width",1e3);x(this,"height",1e3);x(this,"dpr",Zi());x(this,"vDom");x(this,"eventTragetElement");x(this,"snapshotContainerRef");x(this,"backgroundContainerRef");x(this,"backgroundSnapshotContainerRef");x(this,"canvasContainerRef",H.createRef());x(this,"subLocalCanvasContainerRef");x(this,"canvasTopRef");x(this,"canvasServiceFloatRef",H.createRef());x(this,"canvasFloatRef",H.createRef());x(this,"canvasBgRef",H.createRef());x(this,"floatBarRef",H.createRef());x(this,"customFloatbarContainerRef",H.createRef());x(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=H.createRef()),this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef(),this.backgroundSnapshotContainerRef=H.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,r=this.eventTragetElement.offsetHeight,n=Zi();n!==this.dpr&&this.requestDprUpdate(n),e&&r&&this.canvasContainerRef.current&&(e!==this.width||r!==this.height)&&(this.width=e,this.height=r),e&&r&&this.backgroundContainerRef&&this.backgroundContainerRef.current&&(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.backgroundContainerRef.current.style.width=`${e}px`,this.backgroundContainerRef.current.style.height=`${r}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable)),e&&r&&this.canvasBgRef.current&&(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.resizeCanvasBackingStore())}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",Za.render(H.createElement(Ud,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef,backgroundSnapshotContainerRef:this.backgroundSnapshotContainerRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Wi extends Qi{constructor(e){super(e);x(this,"focuedViewId");x(this,"control");x(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new z1e(this.control,tt.InternalMsgEmitter),{width:r,height:n,dpr:i}=e,o={cameraOpt:{...Wi.defaultCameraOpt,width:r,height:n}},a=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(a){const{scale:c,...l}=a.camera;o.cameraOpt={...o.cameraOpt,...l,scale:c===1/0?1:c},this.createMianView({id:Fe,displayer:e,focusScenePath:a.focusScenePath||a.scenePath,cameraOpt:o.cameraOpt,viewData:a}),this.setFocuedViewId(Fe),e.createMainViewDisplayer(this.control.divMainView),this.control.notifyMainViewMounted()}}getViewInitData(e){var n,i;const r=this.getView(e);if(r){const{width:o,height:a,dpr:c}=r.displayer,l={dpr:c,originalPoint:[o/2,a/2],offscreenCanvasOpt:{...Wi.defaultScreenCanvasOpt,contextType:((i=(n=this.control).getRenderContextTypeForView)==null?void 0:i.call(n,e))??this.control.renderingCompatibilityDecision.contextType,width:o,height:a},layerOpt:{...Wi.defaultLayerOpt,width:o,height:a},cameraOpt:{...Wi.defaultCameraOpt,width:o,height:a}};if(r.viewData){const{scale:u,...h}=r.viewData.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u}}return l}}async mountView(e){const r=this.getView(e);if(!r)return;const n=this.control.getViewLifecycleGeneration(e),i=()=>this.getView(e)===r&&this.control.isPendingViewInitCurrent(e,n);if(i())return this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"start"}),this.control.armPendingViewInit(e),this.control.queuePendingViewInit(e,async()=>{var a,c;if(!i()||(this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.ensureRenderRuntimeReady()),!i())||(await r.displayer.resetRenderSurface(),!i())||(this.control.isUseOffscreenTransfer&&r.displayer.canvasBgRef.current&&r.displayer.canvasServiceFloatRef.current&&r.displayer.canvasFloatRef.current&&r.displayer.setTransferControlToOffscreenCanvas({bgCanvas:r.displayer.canvasBgRef.current,serviceCanvas:r.displayer.canvasServiceFloatRef.current,localCanvas:r.displayer.canvasFloatRef.current}),!i()))return;const o=this.getViewInitData(e);if(o&&((a=this.control.worker)==null||a.createViewWorker(e,o,r.displayer)),(c=this.control.worker)!=null&&c.isActive){const l=await this.control.worker.waitForViewInitCompletion(e);if(!i())return;if(l==="timeout")throw this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"timeout"}),new Error(`view init completion timeout: ${e}`)}},n)}}class sr extends tt{constructor(e){super(e);x(this,"viewContainerManager");x(this,"divMainView");x(this,"bindMainViewListener",e=>{this.divMainView=e,this.plugin&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView()});x(this,"onCameraChange",O1e(e=>{var n;const r=this.viewContainerManager.mainView;r&&r.cameraOpt&&(r.cameraOpt.width!==e.width||r.cameraOpt.height!==e.height)&&((n=this.viewContainerManager.mainView)==null||n.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},Xa,{leading:!1}));const r={control:this,internalMsgEmitter:sr.InternalMsgEmitter,publicMsgEmitter:sr.PublicMsgEmitter};this.viewContainerManager=new Wi(r)}init(){sr.InternalMsgEmitter.on(We.BindMainView,this.bindMainViewListener)}destroy(e={}){return sr.InternalMsgEmitter.off(We.BindMainView,this.bindMainViewListener),this.onCameraChange.cancel(),super.destroy(e)}activePlugin(){this.plugin&&this.divMainView&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView(),this.collector&&(this.collector.addStorageStateListener(e=>{var a;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){const l=Object.keys(e.diffView||{});for(const u of l.length?l:[Fe])this.handleRemoteStorageRemoval(u,void 0,{clearView:!0});return}const{diffView:r,diffScenePath:n,diffData:i}=e,o=new Map;if(r){let c;Object.keys(r).forEach(l=>{const u=r[l];if(u&&!u.newValue)this.handleRemoteStorageRemoval(l,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue);else if(u&&u.newValue){for(const h of Object.keys(u.newValue))this.worker.pullServiceData(l,h,{isAsync:!1,useAnimation:!0});c=u.newValue}if(c)for(const h of Object.values(c)){const d=new Set;for(const f of Object.keys(h))f&&d.add(f);o.set(l,d)}})}if(n){let c;Object.keys(n).forEach(l=>{const u=n[l],h=(u==null?void 0:u.scenePath)??l;if(u&&u.viewId&&!u.newValue?(this.handleRemoteStorageRemoval(u.viewId,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!0}),c=u.newValue),u!=null&&u.viewId&&c){const d=new Set;for(const f of Object.keys(c))f&&d.add(f),o.set(u.viewId,d)}})}i&&Object.keys(i).forEach(c=>{var u,h,d,f;const l=i[c];if(l){const g=l.storageKey??c,{viewId:y}=l,S=!l.newValue&&((u=this.collector)==null?void 0:u.isOwn(g));if(!l.newValue){const C=!!S&&!!((h=this.collector)!=null&&h.isSelector(g));this.handleRemoteStorageRemoval(y,g,{abortAllContinuousMethods:C,cancelTicker:C})}const b=o.get(y)||new Set;b.add(g),o.set(y,b),(d=this.worker)==null||d.onServiceDerive(g,l),(f=this.miniMapManager)==null||f.updateMiniMapCamera(y)}});for(const[c,l]of o.entries())tt.InternalMsgEmitter.emit("excludeIds",[...l],c)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var r;(r=this.collector)!=null&&r.serviceStorage&&this.viewContainerManager.getAllViews().forEach(n=>{var i,o,a,c,l,u;if(n&&n.focusScenePath&&((i=this.collector)!=null&&i.serviceStorage[n.id])&&((o=this.collector)!=null&&o.serviceStorage[n.id][n.focusScenePath])){const h=Object.keys((a=this.collector)==null?void 0:a.serviceStorage[n.id][n.focusScenePath]);for(const d of h){const f=(c=this.collector)==null?void 0:c.getUidFromKey(d);if(f&&!e.online.includes(f))if((l=this.collector)!=null&&l.isSelector(d))this.renderControl.isWritable&&((u=this.collector)==null||u.updateValue(d,void 0,{viewId:n.id,scenePath:n.focusScenePath,isSync:!0})),this.worker.blurSelector(n.id,n.focusScenePath,d);else{const g=this.textEditorManager.editors.get(d);g&&g.opt&&(g.opt.workState===he.Doing||g.opt.workState===he.Start)&&(Ws(g.opt.text)?this.textEditorManager.unActive(d):this.textEditorManager.delete(d))}}}})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})})))}async activeWorker(){await this.restoreCachedRenderRuntimeDecision(),await this.worker.init()}}const Me=class Me extends Tm{constructor(){super(...arguments);x(this,"callbackDisplayer");x(this,"callbackStateName");x(this,"callbackOwnerManager");x(this,"ownedManager");x(this,"roomLifecycleDisposer");x(this,"roomLifecycleOwnerManager");x(this,"onPhaseChanged",e=>{var r;e===zi.Reconnecting&&((r=this.ownedManager)==null||r.setSnapshootData())});x(this,"updateRoomWritable",()=>{var r;const e=this.callbackDisplayer||this.displayer;(r=this.ownedManager)==null||r.onWritableChange(e.isWritable)});x(this,"roomStateChangeListener",async e=>{const r=this.ownedManager;r instanceof sr&&(e.cameraState&&r.onCameraChange(e.cameraState),e.sceneState&&r.onSceneChange(e.sceneState.scenePath,Fe)),e!=null&&e.roomMembers&&(r==null||r.onRoomMembersChange(e.roomMembers));const n=this.callbackDisplayer||this.displayer;ze(n)&&!n.isWritable||e.memberState&&(r==null||r.onMemberChange(e.memberState))})}static async getInstance(e,r){var C,N,T;const n=new eo(ze(e)&&e.logger||Me.logger),i=typeof navigator>"u"?"unknown":navigator.userAgent;n.info(`[Appliance]: [init-enter] version=${zc} userAgent=${i}`),(p=>{var m,v;try{(v=(m=r.callbacks)==null?void 0:m.onInitLoadingChange)==null||v.call(m,p)}catch(M){Me.logger.error(`[ApplianceSinglePlugin] onInitLoadingChange error: ${(M==null?void 0:M.message)||M}`)}})({loading:!0,phase:"plugin",status:"start"});const a=e.callbacks.on,c=e.callbacks.off,l=e.callbacks.once,u=e.cleanCurrentScene.bind(e),h=e.setMemberState.bind(e);r!=null&&r.logger&&(Me.logger=new eo(r.logger));let d=e.getInvisiblePlugin(Me.kind);d||(d=await Me.createAppliancePlugin(e,Me.kind)),e&&d&&await Me.createCurrentManager(e,{cdn:r.options.cdn,extras:a0(r.options.extras)},d,r.callbacks),d&&Me.currentManager&&(Me.currentManager.bindPlugin(d),d.init(e)),Me.effectInstance(r==null?void 0:r.cursorAdapter,Me.currentManager),(C=Me.currentManager)==null||C.emitInitLoadingChange({loading:!0,phase:"plugin",status:"success"});const f={displayer:e,currentManager:Me.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(p){var M;Me.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const m=e.getBoundingRect(p),v=await((M=Me.currentManager)==null?void 0:M.getBoundingRect(p));return!m.width||!m.height?v:bd(m,v)},screenshotToCanvasAsync:async function(p,m,v,M,R,E){var A;Me.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let P=v,k=M,O=R.scale;P>this.maxScreenshotWidth&&(O=this.maxScreenshotWidth/P*O,P=this.maxScreenshotWidth),k>this.maxScreenshotHeight&&(O=Math.min(this.maxScreenshotHeight/k*O,O),k=this.maxScreenshotHeight),R.scale=O;const B=document.createElement("canvas"),D=B.getContext("2d");B.width=P*(E||1),B.height=k*(E||1),D&&(e.screenshotToCanvas(D,m,P,k,R,E),p.drawImage(B,Math.floor((v-P)/2),Math.floor((M-k)/2),P*(E||1),k*(E||1),0,0,P,k),B.remove()),Me.currentManager&&await((A=Me.currentManager)==null?void 0:A.screenshotToCanvas(p,m,P,k,R,Math.floor((v-P)/2),Math.floor((M-k)/2)))},scenePreviewAsync:async function(p,m,v,M,R){Me.logger.info("[ApplianceSinglePlugin] scenePreviewAsync"),e.scenePreview(p,m,v,M,R);const E=document.createElement("img");E.className="appliance-plugin-fill-scene-snapshot-img",m.append(E),getComputedStyle(m).position||(m.style.position="relative"),Me.currentManager&&await Me.currentManager.scenePreview(p,E)},fillSceneSnapshotAsync:async function(p,m,v,M,R){var z,V;Me.logger.info("[ApplianceSinglePlugin] fillSceneSnapshotAsync"),m.innerHTML="",e.fillSceneSnapshot(p,m,v,M,R);const E=v||((z=e.state.cameraState)==null?void 0:z.width)||0,P=M||((V=e.state.cameraState)==null?void 0:V.height)||0;let k=await this.getBoundingRectAsync(p);k||(k={originX:0,originY:0,width:E,height:P});let O=Math.max(k==null?void 0:k.width,E),B=Math.max(k==null?void 0:k.height,P),D=1;const A=O>E&&Math.min(E/O,D)||D,L=B>P&&Math.min(P/B,D)||D;A<=L?(O=A<1&&E||O,B=Math.floor(B*A)+1,D=A):A>L&&(B=L<1&&P||B,O=Math.floor(O*L)+1,D=L);const U={scale:D,centerX:k.originX+k.width/2,centerY:k.originY+k.height/2},Y=document.createElement("canvas"),q=Y.getContext("2d");Y.width=O,Y.height=B,q&&await this.screenshotToCanvasAsync(q,p,O,B,U,devicePixelRatio);const ie=document.createElement("img");ie.className="appliance-plugin-fill-scene-snapshot-img",ie.src=Y.toDataURL(),ie.onload=()=>{Y.remove()},ie.onerror=()=>{Y.remove(),ie.remove()},m.append(ie),getComputedStyle(m).position||(m.style.position="relative")},_callbacksOn:function(p,m){Me.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&ze(e)&&e.isWritable?sr.InternalMsgEmitter.on(p,m):a.call(e.callbacks,p,m))},_callbacksOnce:function(p,m){Me.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&ze(e)&&e.isWritable?sr.InternalMsgEmitter.on(p,m):l.call(e.callbacks,p,m))},_callbacksOff:function(p,m){Me.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&ze(e)&&e.isWritable?sr.InternalMsgEmitter.off(p,m):c.call(e.callbacks,p,m))},canRedoSteps(){if(Me.logger.info("[ApplianceSinglePlugin] canRedoSteps"),Me.currentManager&&ze(e)&&!e.disableSerialization){const p=Me.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.redoStack.filter(v=>v.scenePath===m).length}return 0},canUndoSteps(){if(Me.logger.info("[ApplianceSinglePlugin] canUndoSteps"),Me.currentManager&&ze(e)&&!e.disableSerialization){const p=Me.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.undoStack.filter(v=>v.scenePath===m).length}return 0},undo:function(){return Me.logger.info("[ApplianceSinglePlugin] undo"),Me.currentManager&&ze(e)&&!e.disableSerialization?Me.currentManager.viewContainerManager.undo():0},redo:function(){return Me.logger.info("[ApplianceSinglePlugin] redo"),Me.currentManager&&ze(e)&&!e.disableSerialization?Me.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(p){Me.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),Me.currentManager&&ze(e)&&e.isWritable&&Me.currentManager.cleanCurrentScene().then(m=>{m&&u.call(e,p)}).catch(m=>{var v;(v=Me.currentManager)==null||v.logger.error(`[Appliance]: cleanCurrentScene failed: ${(m==null?void 0:m.message)||m}`)})},insertImage:function(p){Me.logger.info("[ApplianceSinglePlugin] insertImage"),Me.currentManager&&ze(e)&&e.isWritable&&Me.currentManager.worker.insertImage(Fe,p)},lockImage:function(p,m){Me.logger.info("[ApplianceSinglePlugin] lockImage"),Me.currentManager&&ze(e)&&e.isWritable&&Me.currentManager.worker.lockImage(Fe,p,m)},completeImageUpload:function(p,m){Me.logger.info("[ApplianceSinglePlugin] completeImageUpload"),Me.currentManager&&ze(e)&&e.isWritable&&Me.currentManager.worker.completeImageUpload(Fe,p,m)},getImagesInformation:function(p){return Me.logger.info("[ApplianceSinglePlugin] completeImageUpload"),Me.currentManager&&ze(e)&&e.isWritable?Me.currentManager.worker.getImagesInformation(p):[]},insertText:function(p,m,v){if(Me.logger.info("[ApplianceSinglePlugin] insertText"),Me.currentManager&&ze(e)&&e.isWritable)return Me.currentManager.textEditorManager.insertText(Fe,p,m,v)},updateText:function(p,m){Me.logger.info("[ApplianceMultiPlugin] updateText"),Me.currentManager&&ze(e)&&e.isWritable&&Me.currentManager.textEditorManager.updateText(p,m)},callbacks:()=>({...e.callbacks,on:f._callbacksOn.bind(f),once:f._callbacksOnce.bind(f),off:f._callbacksOff.bind(f)}),destroy(){return Me.logger.info("[ApplianceSinglePlugin] destroy"),d?d.destroyOwnedPluginInstance(f.currentManager):Promise.resolve()},setMemberState(p){var v,M,R;Me.logger.info(`[ApplianceSinglePlugin] setMemberState ${JSON.stringify(p)}`);const m=Object.keys(p);if(ze(e)&&e.isWritable){if(m.includes("currentApplianceName"))if((v=Me.currentManager)==null||v.requestToolChange(p),p.currentApplianceName&&p.currentApplianceName===De.laserPen){if((M=Me.currentManager)!=null&&M.isUseSimple)throw new Error("[ApplianceMultiPlugin] laserPen must be not support in simple mode");p.currentApplianceName=De.pencil,p.useLaserPen=!0}else p.currentApplianceName&&p.currentApplianceName===De.pencil&&(p.useLaserPen=!1);try{h(p)}catch(E){throw(R=Me.currentManager)==null||R.setToolChangePending(!1,"set-member-state-error"),E}return}throw new Error("setMemberState must be called in writable room")},createMiniMap:async function(p,m){if(Me.logger.info("[ApplianceSinglePlugin] createMiniMap"),Me.currentManager&&ze(e)&&e.isWritable)return Me.currentManager.createMiniMap(p,m)},destroyMiniMap:async function(p){if(Me.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),Me.currentManager&&ze(e)&&e.isWritable)return Me.currentManager.destroyMiniMap(p)},filterRenderByUid(p,m,v){if(Me.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),Me.currentManager&&ze(e)&&e.isWritable)return Me.currentManager.filterRenderByUid(p,m,v)},cancelFilterRender(p,m){if(Me.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),Me.currentManager&&ze(e)&&e.isWritable)return Me.currentManager.cancelFilterRender(p,m)},addListener:(p,m)=>{sr.PublicMsgEmitter.on(p,m)},removeListener:(p,m)=>{sr.PublicMsgEmitter.off(p,m)},usePlugin:p=>{var m;Me.logger.info("[ApplianceSinglePlugin] usePlugin",p.kind),(m=Me.currentManager)==null||m.usePlugin(p)},getDisableDeviceInputs(){if(Me.currentManager&&ze(e))return Me.currentManager.disableDeviceInputs},setDisableDeviceInputs(p){Me.logger.info(`[ApplianceSinglePlugin] setDisableDeviceInputs ${p}`),Me.currentManager&&ze(e)&&(Me.currentManager.disableDeviceInputs=p)},getDisableCameraTransform(){if(Me.currentManager&&ze(e))return Me.currentManager.disableCameraTransform},setDisableCameraTransform(p){Me.logger.info(`[ApplianceSinglePlugin] setDisableCameraTransform ${p}`),Me.currentManager&&ze(e)&&(Me.currentManager.disableCameraTransform=p)},getDisableEraseImage(){if(Me.currentManager&&ze(e))return Me.currentManager.disableEraseImage},setDisableEraseImage(p){Me.logger.info(`[ApplianceSinglePlugin] setDisableEraseImage ${p}`),Me.currentManager&&ze(e)&&(Me.currentManager.disableEraseImage=p)},setWritable:p=>f.setWritable(p),requestIdleCallback:(p,m)=>{const v=(m==null?void 0:m.timeout)||0,M=performance.now();let R;const E=new MessageChannel;let P;const k=O=>{try{p({didTimeout:O,timeRemaining:()=>{const D=performance.now()-M;return Math.max(0,v-D)}})}catch(B){Me.logger.error("[ApplianceSinglePlugin] requestIdleCallback error:",B)}finally{E.port1.close(),E.port2.close(),R!==void 0&&cancelAnimationFrame(R),P!==void 0&&clearTimeout(P)}};return E.port1.onmessage=()=>{R=requestAnimationFrame(()=>{v>0&&performance.now()-M>=v?k(!0):k(!1)})},E.port2.postMessage(null),v>0&&(P=setTimeout(()=>{k(!0)},v)),P||R||0},cancelIdleCallback:p=>{try{clearTimeout(p),cancelAnimationFrame(p)}catch(m){Me.logger.error("[ApplianceSinglePlugin] cancelIdleCallback error:",m)}},injectMethodToObject:(p,m)=>{if(typeof p[m]=="function"||typeof p[m]>"u"){const v=f[m];p[m]=function(...M){if(Me.currentManager===f.currentManager)return Reflect.apply(v,this,M)};return}m==="callbacks"&&(p.callbacks.on=f._callbacksOn.bind(f),p.callbacks.off=f._callbacksOff.bind(f),p.callbacks.once=f._callbacksOnce.bind(f))},blurText:()=>{Me.logger.info("[ApplianceSinglePlugin] blurText"),Me.currentManager&&ze(e)&&e.isWritable&&Me.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(p,m)=>{var v;if(Me.logger.info(`[ApplianceSinglePlugin] hasElements ${p}`),Me.currentManager&&ze(e)&&e.isWritable){let M=p;if(!M){const R=Me.currentManager.viewContainerManager.focuedView;M=R==null?void 0:R.focusScenePath}if(M){const R=(v=Me.currentManager.collector)==null?void 0:v.getScenePathData(M);if(R){const E=Object.values(R);return E.length>0?m?E.some(P=>m(P.toolsType)):!0:!1}return!1}return!1}},getElements:(p,m)=>{var v;if(Me.logger.info(`[ApplianceSinglePlugin] getElements ${p}`),Me.currentManager&&ze(e)&&e.isWritable){let M=p;if(!M){const R=Me.currentManager.viewContainerManager.focuedView;M=R==null?void 0:R.focusScenePath}if(M){const R=(v=Me.currentManager.collector)==null?void 0:v.getScenePathData(M),E=R&&Object.values(R)||[];return R&&E.length>0&&m?E.filter(P=>m(P.toolsType)):E}return[]}},hasBackgroundImage:p=>{var m,v;return IM((v=(m=Me.currentManager)==null?void 0:m.collector)==null?void 0:v.storage,p)},stopDraw:p=>{if(Me.logger.info(`[ApplianceSinglePlugin] stopDraw ${p}`),Me.currentManager&&ze(e))return Me.currentManager.stopDraw(p)},loadFontFaces:()=>{var p;return Me.logger.info("[ApplianceSinglePlugin] loadFontFaces"),((p=Me.currentManager)==null?void 0:p.loadFontFaces())||Promise.resolve({status:"error"})},refreshViewRender:p=>{var m;return Me.logger.info(`[ApplianceSinglePlugin] refreshViewRender ${p}`),((m=Me.currentManager)==null?void 0:m.refreshViewRender(p))||Promise.resolve({status:"error"})},refreshRender:()=>{var p;return Me.logger.info("[ApplianceSinglePlugin] refreshRender"),((p=Me.currentManager)==null?void 0:p.refreshRender())||Promise.resolve({status:"error"})},refreshViewTextRender:p=>{var m;return Me.logger.info(`[ApplianceSinglePlugin] refreshViewTextRender ${p}`),((m=Me.currentManager)==null?void 0:m.refreshViewTextRender(p))||Promise.resolve({status:"error"})},refreshTextRender:()=>{var p;return Me.logger.info("[ApplianceSinglePlugin] refreshTextRender"),((p=Me.currentManager)==null?void 0:p.refreshTextRender())||Promise.resolve({status:"error"})},setViewLocalScenePathChange:async(p,m)=>{Me.logger.info(`[ApplianceSinglePlugin] setViewLocalScenePathChange ${p} ${m}`),Me.currentManager&&await Me.currentManager.setViewLocalScenePathChange(p,m)},insertMarkmap:async(p,m)=>{if(Me.logger.info(`[ApplianceSinglePlugin] insertMarkmap: ${p}, info: ${JSON.stringify(m)}`),Me.currentManager&&Me.currentManager.isUseBackgroundThread)return Me.currentManager.worker.insertBackgroundMarkMap(p,m)},updateMarkmap:async(p,m,v)=>{if(Me.logger.info(`[ApplianceSinglePlugin] updateMarkmap: ${p}, markmapId: ${m}, info: ${JSON.stringify(v)}`),Me.currentManager&&Me.currentManager.isUseBackgroundThread)return Me.currentManager.worker.updateBackgroundMarkMap(p,m,v)},insertBackgroundImage:async(p,m)=>{if(Me.logger.info(`[ApplianceSinglePlugin] insertBackgroundImage: ${p}, info: ${JSON.stringify(m)}`),Me.currentManager&&Me.currentManager.isUseBackgroundThread)return Me.currentManager.worker.insertBackgroundSVG(p,m)},reloadBackgroundImage:async p=>{const m=Me.currentManager;return m?m.reloadBackgroundImage(p):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}},getSelectedElements:p=>{var m,v;return(v=(m=Me.currentManager)==null?void 0:m.selectorApi)==null?void 0:v.getSelectedElements(p)},isElementPropertySupported:(p,m)=>{var v,M;return((M=(v=Me.currentManager)==null?void 0:v.selectorApi)==null?void 0:M.isElementPropertySupported(p,m))||!1},blurSelector:p=>{var m;if(Me.currentManager&&ze(e)&&e.isWritable){const v=(m=Me.currentManager)==null?void 0:m.selectorApi;return v?v.blurSelector(p):Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},updateSelectedElements:p=>{var m;if(Me.currentManager&&ze(e)&&e.isWritable){const v=(m=Me.currentManager)==null?void 0:m.selectorApi;return v?v.updateSelectedElements(Fe,p):Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:Fe,ok:!1,reason:"no-selection"})}return Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:Fe,ok:!1,reason:"no-writable permission"})},updateElement:(p,m,v,M,R=!0)=>{var E;if(Me.currentManager&&ze(e)&&e.isWritable){const P=(E=Me.currentManager)==null?void 0:E.selectorApi;return P?P.updateElement(p,m,v,M,R):Promise.resolve(!1)}return Promise.resolve(!1)},copySelectedElements:p=>{var m;if(Me.currentManager&&ze(e)&&e.isWritable){const v=(m=Me.currentManager)==null?void 0:m.selectorApi;return v?v.copySelectedElements(p):Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},deleteSelectedElements:p=>{var m;if(Me.currentManager&&ze(e)&&e.isWritable){const v=(m=Me.currentManager)==null?void 0:m.selectorApi;return v?v.deleteSelectedElements(p):Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},getFloatbarContainer:p=>{var m;return(m=Me.currentManager)==null?void 0:m.viewContainerManager.getFloatbarContainer(p)},getViewOffsetToContainer:(p,m)=>{var v;return(v=Me.currentManager)==null?void 0:v.viewContainerManager.getViewOffsetToContainer(p,m)}};f.injectMethodToObject(e,"undo"),f.injectMethodToObject(e,"redo"),f.injectMethodToObject(e,"cleanCurrentScene"),f.injectMethodToObject(e,"blurSelector"),f.injectMethodToObject(e,"updateElement"),f.injectMethodToObject(e,"insertImage"),f.injectMethodToObject(e,"completeImageUpload"),f.injectMethodToObject(e,"lockImage"),f.injectMethodToObject(e,"getImagesInformation"),f.injectMethodToObject(e,"insertText"),f.injectMethodToObject(e,"updateText"),f.injectMethodToObject(e,"callbacks"),f.injectMethodToObject(e,"screenshotToCanvasAsync"),f.injectMethodToObject(e,"getBoundingRectAsync"),f.injectMethodToObject(e,"scenePreviewAsync"),f.injectMethodToObject(e,"fillSceneSnapshotAsync"),f.injectMethodToObject(e,"setMemberState"),ze(e)&&d&&(d.disposeRoomLifecycleInterceptor(),d.roomLifecycleDisposer=Cm(e,()=>f.currentManager,Me.logger),d.roomLifecycleOwnerManager=f.currentManager),Object.defineProperty(e,"canUndoSteps",{get(){return f.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return f.canRedoSteps()}});const g={...f,callbacks:f.callbacks()};Object.defineProperty(g,"disableDeviceInputs",{set(p){f.setDisableDeviceInputs(p)},get(){return f.getDisableDeviceInputs()}}),Object.defineProperty(g,"disableEraseImage",{set(p){f.setDisableEraseImage(p)},get(){return f.getDisableEraseImage()}}),Object.defineProperty(g,"disableCameraTransform",{set(p){f.setDisableCameraTransform(p)},get(){return f.getDisableCameraTransform()}});const y=bM(g,f.currentManager,()=>Me.currentManager),S=Me.currentManager;e._appliancePlugin=y;const b=(N=Me.currentManager)==null?void 0:N.pluginOptions.extras.cursor;if(b&&((T=Me.currentManager)==null||T.worker.afterMainViewInitAck(()=>{CM(b)})),!S)throw e._appliancePlugin===y&&delete e._appliancePlugin,new Error("ApplianceSinglePlugin initialization was cancelled");if(S.startInitFontFaceLoadAndRender(),S.isMainViewMounted()){const p=await S.worker.waitForMainViewInitAck();if(p!=="ready"||Me.currentManager!==S)throw e._appliancePlugin===y&&delete e._appliancePlugin,new Error(`ApplianceSinglePlugin initialization ${p==="timeout"?"timed out":"was cancelled"}`)}else S.logger.info("[Appliance]: main view not mounted yet, deferring render-init ack wait"),S.waitForMainViewMounted().then(p=>{if(!(p!=="ready"||Me.currentManager!==S))return S.worker.waitForMainViewInitAck().then(m=>{S.logger.info(`[Appliance]: deferred render-init ${m}`)})}).catch(p=>{S.logger.error(`[Appliance]: deferred render-init failed: ${(p==null?void 0:p.message)||p}`)});return y}static onCreate(e){e&&Me.currentManager&&(Me.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,r){try{await e.createInvisiblePlugin(Me,{})}catch(i){if(!e.isWritable){await e.setWritable(!0);const o=await this.createAppliancePlugin(e,r);return await e.setWritable(!1),o}throw i}let n=e.getInvisiblePlugin(r);return n||(n=await Me.createAppliancePlugin(e,r)),n}static beginManagerDestroy(e){if(!e)return Promise.resolve();if(Me.drainingManager===e&&Me.drainingPromise)return Me.drainingPromise;Me.currentManager===e&&(Me.currentManager=void 0),Me.drainingManager=e;const r=e.destroy({preserveStorage:!0}).finally(()=>{Me.drainingManager===e&&(Me.drainingManager=void 0),Me.drainingPromise===r&&(Me.drainingPromise=void 0)});return Me.drainingPromise=r,r}static effectInstance(e=Me.cursorAdapter,r=Me.currentManager){Me.disposeCursorAdapterBinding(),Me.cursorAdapter=e,Me.cursorAdapterOwnerManager=e?r:void 0;const n=e==null?void 0:e.onAddedCursor;if(e&&typeof n=="function"){const i=function(o){o.onCursorMemberChanged=a=>{try{a.appliance===De.pencil||a.appliance===De.shape||a.appliance===De.text||a.appliance===De.arrow||a.appliance===De.straight||a.appliance===De.rectangle||a.appliance===De.ellipse||a.appliance===De.eraser||a.appliance===De.selector?o!=null&&o.divElement&&(o.divElement.style.display="none"):o!=null&&o.divElement&&(o.divElement.style.display="block")}catch(c){throw c}},n.call(e,o)};e.onAddedCursor=i,Me.cursorAdapterBinding={adapter:e,original:n,wrapper:i,owner:r}}}static disposeCursorAdapterBinding(e){const r=Me.cursorAdapterBinding;e!==void 0&&(r==null?void 0:r.owner)!==e&&Me.cursorAdapterOwnerManager!==e||(r&&r.adapter.onAddedCursor===r.wrapper&&(r.adapter.onAddedCursor=r.original),Me.cursorAdapterBinding=void 0,Me.cursorAdapter=void 0,Me.cursorAdapterOwnerManager=void 0)}init(e){this.unbindDisplayerCallbacks();const r=this.ownedManager,n=e.state;r==null||r.onRoomMembersChange(n.roomMembers),ze(e)&&n!=null&&n.memberState&&(r==null||r.onMemberChange(n.memberState));const i=lh(e)?"onPlayerStateChanged":"onRoomStateChanged";this.callbackDisplayer=e,this.callbackStateName=i,this.callbackOwnerManager=r,e.callbacks.on(i,this.roomStateChangeListener),e.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),e.callbacks.on("onPhaseChanged",this.onPhaseChanged)}unbindDisplayerCallbacks(e){if(e!==void 0&&this.callbackOwnerManager!==e)return;const r=this.callbackDisplayer,n=this.callbackStateName;r&&n&&(r.callbacks.off(n,this.roomStateChangeListener),r.callbacks.off("onEnableWriteNowChanged",this.updateRoomWritable),r.callbacks.off("onPhaseChanged",this.onPhaseChanged)),this.callbackDisplayer=void 0,this.callbackStateName=void 0,this.callbackOwnerManager=void 0}disposeRoomLifecycleInterceptor(e){var r;e!==void 0&&this.roomLifecycleOwnerManager!==e||((r=this.roomLifecycleDisposer)==null||r.call(this),this.roomLifecycleDisposer=void 0,this.roomLifecycleOwnerManager=void 0)}destroyOwnedPluginInstance(e){return this.unbindDisplayerCallbacks(e),this.disposeRoomLifecycleInterceptor(e),Me.disposeCursorAdapterBinding(e),this.destroyOwnedManager(e)}destroyOwnedManager(e=this.ownedManager){return e?(this.ownedManager===e&&(this.ownedManager=void 0),Me.beginManagerDestroy(e)):Promise.resolve()}destroy(){Me.logger.info("[ApplianceSinglePlugin] passive destroy"),this.unbindDisplayerCallbacks(),this.disposeRoomLifecycleInterceptor(),Me.disposeCursorAdapterBinding(),this.destroyOwnedManager()}};x(Me,"drainingManager"),x(Me,"drainingPromise"),x(Me,"kind","appliance-single-plugin"),x(Me,"cursorAdapter"),x(Me,"cursorAdapterOwnerManager"),x(Me,"cursorAdapterBinding"),x(Me,"currentManager"),x(Me,"logger",{info:console.log,warn:console.warn,error:console.error}),x(Me,"createCurrentManager",async(e,r,n,i)=>{Me.drainingPromise&&await Me.drainingPromise,Me.currentManager&&await Me.beginManagerDestroy(Me.currentManager);const o={plugin:n,displayer:e,options:r,callbacks:i},a=new sr(o);a.init(),Me.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),Me.currentManager=a,n&&(n.ownedManager=a)});let ih=Me;const Yi=class Yi extends H.Component{constructor(){super(...arguments);x(this,"mainViewRef",null)}componentDidMount(){Yi.emiter||(Yi.emiter=sr.InternalMsgEmitter),Yi.emiter.emit(We.BindMainView,this.mainViewRef)}render(){return H.createElement(H.Fragment,null,this.props.children,H.createElement("div",{className:"appliance-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};x(Yi,"emiter");let sh=Yi;const B1e=Object.freeze(Object.defineProperty({__proto__:null,ActiveContainerType:Mm,ApplianceMultiPlugin:nh,ApplianceNames:De,AppliancePluginCursorNames:ar,ApplianceSigleWrapper:sh,ApplianceSinglePlugin:ih,Camera_Ack_Slow_Timeout:su,Camera_Transport_Fallback_Timeout:ca,Camera_Update_Business_Timeout:Sm,Cursor_Hover_Id:wm,ECanvasShowType:_e,EDataType:Re,EForceStopReason:Os,EImageType:an,EMatrixrRelationType:on,EOperationType:wt,EPostMessageType:le,ERenderFilterType:wr,ESVGType:Gi,EScaleType:Ye,EStrokeType:Be,EToolsKey:Q,ElayerType:bn,EmitEventType:Te,EventMessageType:zs,EventWorkState:he,EvevtWorkState:he,FontFaceFallbackBlacklistLevel:to,InternalMsgEmitterType:We,Main_View_Id:Fe,Renderer_Business_Default_Timeout:Ja,ShapeType:Kt,Task_Time_Interval:Xa,WorkerCanvasContextBlacklistLevel:Ka,WorkerMaskTextureFormatBlacklistLevel:ah,WorkerMaskTextureUploadBlacklistLevel:ch,WorkerRenderModeBlacklistLevel:Dr},Symbol.toStringTag,{value:"Module"}));exports.BaseShapeTool=xe;exports.Cursor_Hover_Id=wm;exports.DefaultAppliancePluginExtrasOptions=He;exports.ECanvasShowType=_e;exports.EDataType=Re;exports.EImageType=an;exports.EMatrixrRelationType=on;exports.EPostMessageType=le;exports.ESVGType=Gi;exports.EToolsKey=Q;exports.EmitEventType=Te;exports.EventWorkState=he;exports.Group=dt;exports.Main_View_Id=Fe;exports.MaxDelayBatchScheduler=Q0;exports.ObserverMap=Yu;exports.Scene=bc;exports.ServiceRenderScheduler=Sve;exports.Storage_Selector_key=Le;exports.Storage_Splitter=Bt;exports.Storage_ViewId_ALL=Vu;exports.Task_Time_Interval=Xa;exports.VNodeManager=j0;exports.ViewContainerManager=Qi;exports.acceptIncomingEraserGeometryDelta=nme;exports.cancelDoingForGeometryMismatch=f0;exports.computRect=Ue;exports.flushServiceRenderBarrier=Z0;exports.formatRendererBusinessError=H0;exports.geometryDigest=Zs;exports.getEraserBatchDelay=q0;exports.getIconImageSrc=F0;exports.getMarkmapRuntimeOrThrow=fM;exports.getOutgoingEraserGeometryDelta=Kpe;exports.getRectMatrixrRelation=Uc;exports.getSafetyRect=Sn;exports.getShapeInstance=Td;exports.hasDoingGeometryTransform=_pe;exports.index=B1e;exports.isCameraUpdateTimeoutError=gve;exports.isEqual=In;exports.isIntersectForPoint=rM;exports.isNumber=gt;exports.normalizeAffineMatrix=$t;exports.normalizeCameraTaskError=U0;exports.removeAllChildren=hr;exports.removeTexture=dr;exports.resolveCursorToolName=jc;exports.runCameraUpdateWithTimeout=V0;exports.toRendererBusinessError=Hu;exports.transformToNormalData=Bn;exports.transformToSerializableData=xt;exports.waitForCameraUpdateTask=$0;exports.waitForRendererBusiness=Gu;