@mlightcad/data-model 1.15.16 → 1.15.17

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.
@@ -9,7 +9,7 @@
9
9
  `).replace(ex,"").replace(/\\[A-Za-z][^;]*;/g,"").replace(/[{}]/g,"").trim()}function rx(i,t,e=1){const n=i.trim();if(!n||t<=0)return 0;const r=ix(n),s=tx.test(n);return r?Math.max(t,an(r,t,e)):s?t:0}function an(i,t,e=1){if(!i||t<=0)return 0;const n=Tl(i),r=Math.max(...n.split(/\r\n|\r|\n/g).map(s=>s.length),0);return r===0?0:Math.max(t,r*t*J_*e)}function Rf(i){const t=Tl(i);return Math.max(t.split(/\r\n|\r|\n/g).length,1)}function Bf(i,t,e,n=1){if(t<=0||i<=0)return 0;if(i===1)return t;const r=Math.max(e,0)*(5/3),s=n===2?r:Math.max(r,1);return t+(i-1)*t*s}function Ll(i,t,e){switch(e){case exports.AcGiMTextAttachmentPoint.TopCenter:return{minX:-i/2,minY:-t,maxX:i/2,maxY:0};case exports.AcGiMTextAttachmentPoint.TopRight:return{minX:-i,minY:-t,maxX:0,maxY:0};case exports.AcGiMTextAttachmentPoint.MiddleLeft:return{minX:0,minY:-t/2,maxX:i,maxY:t/2};case exports.AcGiMTextAttachmentPoint.MiddleCenter:return{minX:-i/2,minY:-t/2,maxX:i/2,maxY:t/2};case exports.AcGiMTextAttachmentPoint.MiddleRight:return{minX:-i,minY:-t/2,maxX:0,maxY:t/2};case exports.AcGiMTextAttachmentPoint.BottomLeft:case exports.AcGiMTextAttachmentPoint.BaselineLeft:return{minX:0,minY:0,maxX:i,maxY:t};case exports.AcGiMTextAttachmentPoint.BottomCenter:case exports.AcGiMTextAttachmentPoint.BaselineCenter:return{minX:-i/2,minY:0,maxX:i/2,maxY:t};case exports.AcGiMTextAttachmentPoint.BottomRight:case exports.AcGiMTextAttachmentPoint.BaselineRight:return{minX:-i,minY:0,maxX:0,maxY:t};case exports.AcGiMTextAttachmentPoint.TopLeft:default:return{minX:0,minY:-t,maxX:i,maxY:0}}}function Ml(i,t){let e;t&&t.lengthSq()>0?e=t.clone().normalize():e=new A(Math.cos(i),Math.sin(i),0);const n=new A(-e.y,e.x,e.z);return n.lengthSq()===0?n.set(0,1,0):n.normalize(),{xAxis:e,yAxis:n}}function Ff(i,t,e,n,r,s=0,a){if(e<=0&&n<=0)return i.expandByPoint(t),i;const o=Ll(e,n,r),{xAxis:c,yAxis:l}=Ml(s,a?new A(a.x,a.y,a.z||0):void 0),h=[[o.minX,o.minY],[o.maxX,o.minY],[o.maxX,o.maxY],[o.minX,o.maxY]];for(const[u,d]of h)i.expandByPoint(new x(t.x+c.x*u+l.x*d,t.y+c.y*u+l.y*d,t.z+c.z*u+l.z*d));return i}function sx(i){const t=i.extentsWidth>0?i.extentsWidth:i.width>0?i.width:an(i.contents,i.height),e=Bf(Rf(i.contents),i.height,i.lineSpacingFactor,i.lineSpacingStyle??1);return{width:t,height:e,attachment:i.attachmentPoint,rotation:i.rotation,direction:i.direction.lengthSq()>0?i.direction.clone():void 0,location:new x(i.location.x,i.location.y,i.location.z??0)}}function ax(i,t){const{xAxis:e,yAxis:n}=Ml(t.rotation,t.direction),r=i.x-t.location.x,s=i.y-t.location.y,a=(i.z??0)-t.location.z;return{x:r*e.x+s*e.y+a*e.z,y:r*n.x+s*n.y+a*n.z}}function ox(i){const t=Ll(i.width,i.height,i.attachment),{xAxis:e,yAxis:n}=Ml(i.rotation,i.direction);return[[t.minX,t.minY],[t.maxX,t.minY],[t.maxX,t.maxY],[t.minX,t.maxY]].map(([s,a])=>new x(i.location.x+e.x*s+n.x*a,i.location.y+e.y*s+n.y*a,i.location.z+e.z*s+n.z*a))}function cx(i,t,e){const n=Ll(t.width,t.height,t.attachment),{x:r,y:s}=ax(i,t),a=n.minX-e.padX,o=n.maxX+e.padX,c=n.minY-e.padYBelow,l=n.maxY+e.padYAbove;if(r<a||r>o||s<c||s>l)return null;const h=r<n.minX?n.minX-r:r>n.maxX?n.maxX-r:0,u=s<n.minY?n.minY-s:s>n.maxY?s-n.maxY:0;return h+u}var Xf=(i=>(i[i.Fit=1]="Fit",i[i.Left=2]="Left",i[i.Right=3]="Right",i[i.Center=4]="Center",i))(Xf||{}),zf=(i=>(i[i.OutwardFromCenter=1]="OutwardFromCenter",i[i.InwardToTheCenter=2]="InwardToTheCenter",i))(zf||{}),Yf=(i=>(i[i.OnConvexSide=1]="OnConvexSide",i[i.OnConcaveSide=2]="OnConcaveSide",i))(Yf||{});const No=Math.PI*2;function lx(i,t){const e=typeof i=="number"?i:Number(i);return Number.isFinite(e)?e:t}const sh=class sh extends rt{constructor(){super(...arguments),this._textString="",this._textSize=0,this._xScale=1,this._characterSpacing=0,this._styleName="",this._fontName="",this._bigFontName="",this._offsetFromArc=0,this._rightOffset=0,this._leftOffset=0,this._center=new x,this._radius=0,this._startAngle=0,this._endAngle=0,this._normal=new A(0,0,1),this._characterSet=0,this._pitchAndFamily=0,this._isShx=!1,this._isBold=!1,this._isItalic=!1,this._isUnderlined=!1,this._alignment=1,this._isReverse=!1,this._wizardFlag=0,this._textPosition=1,this._textDirection=1,this._arcId=""}get dxfTypeName(){return"ARCALIGNEDTEXT"}get textString(){return this._textString}set textString(t){this._textString=t??""}get textSize(){return this._textSize}set textSize(t){this._textSize=t}get xScale(){return this._xScale}set xScale(t){this._xScale=t}get characterSpacing(){return this._characterSpacing}set characterSpacing(t){this._characterSpacing=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t??""}get fontName(){return this._fontName}set fontName(t){this._fontName=t??""}get bigFontName(){return this._bigFontName}set bigFontName(t){this._bigFontName=t??""}get offsetFromArc(){return this._offsetFromArc}set offsetFromArc(t){this._offsetFromArc=t}get rightOffset(){return this._rightOffset}set rightOffset(t){this._rightOffset=t}get leftOffset(){return this._leftOffset}set leftOffset(t){this._leftOffset=t}get center(){return this._center}set center(t){this._center.copy(t)}get radius(){return this._radius}set radius(t){this._radius=t}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=t}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get characterSet(){return this._characterSet}set characterSet(t){this._characterSet=t}get pitchAndFamily(){return this._pitchAndFamily}set pitchAndFamily(t){this._pitchAndFamily=t}get isShx(){return this._isShx}set isShx(t){this._isShx=t}get isBold(){return this._isBold}set isBold(t){this._isBold=t}get isItalic(){return this._isItalic}set isItalic(t){this._isItalic=t}get isUnderlined(){return this._isUnderlined}set isUnderlined(t){this._isUnderlined=t}get alignment(){return this._alignment}set alignment(t){this._alignment=t}get isReverse(){return this._isReverse}set isReverse(t){this._isReverse=t}get wizardFlag(){return this._wizardFlag}set wizardFlag(t){this._wizardFlag=t}get textPosition(){return this._textPosition}set textPosition(t){this._textPosition=t}get textDirection(){return this._textDirection}set textDirection(t){this._textDirection=t}get arcId(){return this._arcId}set arcId(t){this._arcId=t??""}applyRawTextColor(t){if(!Number.isFinite(t))return;const e=new U,n=t>>>24&255;if(t===0||n===193)e.setByBlock();else if(t===256||n===192||n===200)e.setByLayer();else if(t>0&&t<256)e.colorIndex=t;else if(n===194||n===195||n===197)e.setRGBValue(t&16777215);else return;this._rawTextColor=t,this.color=e}rawTextColor(){if(this._rawTextColor!=null&&Number.isFinite(this._rawTextColor))return this._rawTextColor;if(this.color.isByBlock)return 0;if(this.color.isByLayer)return 256;const t=this.color.colorIndex;if(t!=null&&t>0&&t<256)return t;const e=this.color.RGB;return e!=null?(194<<24|e&16777215)>>0:256}glyphPlacements(){const t=Array.from(this._textString).filter(w=>w!=="\r");if(this._isReverse&&t.reverse(),t.length===0)return[];const e=this._textSize>0?this._textSize:1,n=this._xScale>0?this._xScale:1,r=t.map(w=>w===" "||w===`
10
10
  `?e*.5*n:an(w,e,n)),s=r.reduce((w,P)=>w+P,0),a=this._textPosition!==2,o=this._textDirection===1,c=Math.abs(this._radius)+(a?1:-1)*this._offsetFromArc,l=a===o?0:a?e:-e,h=Math.max(1e-6,c+l);let u=this._endAngle-this._startAngle;for(;u<=1e-9;)u+=No;for(;u>No;)u-=No;const d=u*h,g=Math.max(0,d-this._leftOffset-this._rightOffset),f=Math.max(0,t.length-1);let p=this._characterSpacing;this._alignment===1&&f>0&&(p=(g-s)/f);const m=s+p*f;let y=this._leftOffset;this._alignment===3?y=d-this._rightOffset-m:(this._alignment===4||this._alignment===0)&&(y=this._leftOffset+(g-m)/2);const b=this.extrusionMatrix(),_=[];for(let w=0;w<t.length;w++){const P=r[w]??0,S=t[w]??"";if(S===`
11
11
  `)continue;const v=y+P/2,k=this._startAngle+v/h,L=new x(this._center.x+h*Math.cos(k),this._center.y+h*Math.sin(k),this._center.z);let C=k+Math.PI/2;this._textDirection===1&&(C+=Math.PI),_.push({text:S,position:L.applyMatrix4(b),rotation:this.rotationInWcs(C,b)}),y+=P+p}return _}get geometricExtents(){const t=new H,e=this.glyphPlacements();if(e.length===0)return t.expandByPoint(this._center),t;const n=this._textSize>0?this._textSize:1;for(const r of e){const s=an(r.text,n,this._xScale>0?this._xScale:1),a=Math.max(s,n)/2;t.expandByPoint(new x(r.position.x-a,r.position.y-a,r.position.z)),t.expandByPoint(new x(r.position.x+a,r.position.y+a,r.position.z))}return t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.textString,set:t=>{this.textString=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.textSize,set:t=>{this.textSize=t}}}]}]}}subWorldDraw(t,e){const n=this.glyphPlacements();if(n.length===0)return;const r=this.getTextStyle(),s=this._textSize>0?this._textSize:1,a=[];for(const o of n){const l={text:this._isUnderlined?`\\L${o.text}`:o.text,height:s,width:1/0,widthFactor:this._xScale>0?this._xScale:1,position:o.position,rotation:o.rotation,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineCenter};a.push(t.mtext(l,r,e))}return a.length===1?a[0]:t.group(a)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbArcAlignedText"),t.writeString(1,this._textString),t.writeString(2,this._fontName),t.writeString(3,this._bigFontName),t.writeString(7,this._styleName),t.writePoint3d(10,this._center),t.writeDouble(40,this._radius),t.writeDouble(41,this._xScale),t.writeDouble(42,this._textSize),t.writeDouble(43,this._characterSpacing),t.writeDouble(44,this._offsetFromArc),t.writeDouble(45,this._rightOffset),t.writeDouble(46,this._leftOffset),t.writeAngle(50,this._startAngle),t.writeAngle(51,this._endAngle),t.writeInt16(70,this._isReverse?1:0),t.writeInt16(71,this._textDirection),t.writeInt16(72,this._alignment),t.writeInt16(73,this._textPosition),t.writeInt16(74,this._isBold?1:0),t.writeInt16(75,this._isItalic?1:0),t.writeInt16(76,this._isUnderlined?1:0),t.writeInt16(77,this._characterSet),t.writeInt16(78,this._pitchAndFamily),t.writeInt16(79,this._isShx?1:0),t.writeInt32(90,this.rawTextColor()),t.writeVector3d(210,this._normal),t.writeInt16(280,this._wizardFlag),this._arcId&&t.writeHandle(330,this._arcId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbArcAlignedText");let e=this._center.x,n=this._center.y,r=this._center.z,s=this._normal.x,a=this._normal.y,o=this._normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value),u=c.value==null?"":String(c.value);switch(l){case 1:this._textString=u;break;case 2:this._fontName=u;break;case 3:this._bigFontName=u;break;case 7:this._styleName=u;break;case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 40:this._radius=h;break;case 41:this._xScale=h;break;case 42:this._textSize=h;break;case 43:this._characterSpacing=h;break;case 44:this._offsetFromArc=h;break;case 45:this._rightOffset=h;break;case 46:this._leftOffset=h;break;case 50:this._startAngle=h;break;case 51:this._endAngle=h;break;case 70:this._isReverse=h!==0;break;case 71:this._textDirection=h;break;case 72:this._alignment=h;break;case 73:this._textPosition=h;break;case 74:this._isBold=h!==0;break;case 75:this._isItalic=h!==0;break;case 76:this._isUnderlined=h!==0;break;case 77:this._characterSet=h;break;case 78:this._pitchAndFamily=h;break;case 79:this._isShx=h!==0;break;case 90:this.applyRawTextColor(h);break;case 210:s=h;break;case 220:a=h;break;case 230:o=h;break;case 280:this._wizardFlag=h;break;case 330:this._arcId=u;break}}return this._center.set(e,n,r),this._normal.set(s,a,o),this}getTextStyle(){var r,s;const t=(s=(r=this.database)==null?void 0:r.tables)==null?void 0:s.textStyleTable,e=(t==null?void 0:t.resolveAt(this._styleName))??(t==null?void 0:t.resolveAt(gt)),n=e?{...e.textStyle}:{name:this._styleName||gt,standardFlag:0,fixedTextHeight:0,widthFactor:this._xScale>0?this._xScale:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:this._textSize,font:this._fontName||"txt",bigFont:this._bigFontName};return this._fontName&&(n.font=this._fontName),this._bigFontName&&(n.bigFont=this._bigFontName),this._xScale>0&&(n.widthFactor=this._xScale),n}isPlanarInWcs(){return Math.abs(this._normal.x)<1e-10&&Math.abs(this._normal.y)<1e-10&&this._normal.z>0}extrusionMatrix(){return this.isPlanarInWcs()?new X:new X().setFromExtrusionDirection(this._normal)}rotationInWcs(t,e){if(this.isPlanarInWcs())return t;const n=new A(Math.cos(t),Math.sin(t),0);return n.transformDirection(e),Math.atan2(n.y,n.x)}};sh.typeName="ArcAlignedText";let Ks=sh;function hx(i,t=0){return lx(i,t)}var jf=(i=>(i[i.LEFT=0]="LEFT",i[i.CENTER=1]="CENTER",i[i.RIGHT=2]="RIGHT",i[i.ALIGNED=3]="ALIGNED",i[i.MIDDLE=4]="MIDDLE",i[i.FIT=5]="FIT",i))(jf||{}),Vf=(i=>(i[i.BASELINE=0]="BASELINE",i[i.BOTTOM=1]="BOTTOM",i[i.MIDDLE=2]="MIDDLE",i[i.TOP=3]="TOP",i))(Vf||{});const ah=class ah extends rt{constructor(){super(),this._hasAlignmentPoint=!1,this._generationFlag=0,this._normal=new A(0,0,1),this._textString="",this._height=0,this._thickness=0,this._position=new x,this._alignmentPoint=new x,this._rotation=0,this._oblique=0,this._horizontalMode=0,this._verticalModel=0,this._styleName="",this._widthFactor=1}get dxfTypeName(){return"TEXT"}get textString(){return this._textString}set textString(t){this._textString=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get height(){return this._height}get annotative(){return ve(this)}set annotative(t){pe(this,t)}set height(t){this._height=t}get position(){return this._position}set position(t){this._position.copy(t)}get alignmentPoint(){return this._alignmentPoint}set alignmentPoint(t){this._alignmentPoint.copy(t),this._hasAlignmentPoint=!0}get hasAlignmentPoint(){return this._hasAlignmentPoint}set hasAlignmentPoint(t){this._hasAlignmentPoint=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get horizontalMode(){return this._horizontalMode}set horizontalMode(t){this._horizontalMode=t}get verticalMode(){return this._verticalModel}set verticalMode(t){this._verticalModel=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get generationFlag(){return this._generationFlag}set generationFlag(t){this._generationFlag=t}get isBackward(){return(this._generationFlag&2)!==0}set isBackward(t){this._generationFlag=t?this._generationFlag|2:this._generationFlag&-3}get isUpsideDown(){return(this._generationFlag&4)!==0}set isUpsideDown(t){this._generationFlag=t?this._generationFlag|4:this._generationFlag&-5}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get geometricExtents(){const t=new H,{anchor:e,attachmentPoint:n}=this.resolveTextAnchor(),r=this.extrusionDrawingAdjust(),s=an(this.textString,this.height,Math.abs(r.widthFactor));return Ff(t,e,s,this.height,n,r.rotation)}subGetGripPoints(){return[this.resolveTextAnchor().anchor]}subMoveGripPointsAt(t,e){const n=qt(e,this._normal);return le(t,n,this._position),this._alignmentPoint.add(n),this}subGetOsnapPoints(t,e,n,r){E.Insertion===t&&r.push(this.resolveTextAnchor().anchor)}transformBy(t){const e=this._position.clone(),n=this._position.clone().add(new A(Math.cos(this._rotation),Math.sin(this._rotation),0)),r=this._position.clone().add(new A(-Math.sin(this._rotation),Math.cos(this._rotation),0)),s=this._position.clone().add(new A(0,0,1));e.applyMatrix4(t),n.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const a=new A(n).sub(e),o=new A(r).sub(e),c=new A(s).sub(e),l=o.length(),h=a.length(),u=c.length();this._position.copy(e),h>0&&(this._rotation=Math.atan2(a.y,a.x)),l>0&&(this._height*=l,h>0&&(this._widthFactor*=h/l)),u>0&&(this._thickness*=u);const d=this._alignmentPoint.clone();return d.applyMatrix4(t),this._alignmentPoint.copy(d),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.textString,set:t=>{this.textString=t}}},{name:"annotative",type:"boolean",editable:!0,accessor:{get:()=>this.annotative,set:t=>{this.annotative=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.styleName);if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}resolveAnnotativePresentation(){var u;const{anchor:t,attachmentPoint:e}=this.resolveTextAnchor(),n=this.extrusionDrawingAdjust(),r=Ht(this),s=r.length>0||fe(this);let a=this.height,o=t,c=n.rotation,l,h;if(s&&r.length>0){const d=Ne(this.height,r);l=je(r,(u=this.database)==null?void 0:u.cannoscale)??r.find(f=>f.isDefault)??r[0],a=De(d,l.scale.scaleFactor);const g=l.contextData;if(g instanceof Hr){const p=g.horizontalMode!==0||g.alignmentPoint.x!==0||g.alignmentPoint.y!==0||g.alignmentPoint.z!==0?g.alignmentPoint:g.position;o=this.pointToWcs(p),c=g.rotation}h=Ve(r,l)}return{height:a,position:o,attachmentPoint:e,rotation:c,preferred:l,annotationScale:h}}subWorldDraw(t,e){const{height:n,position:r,attachmentPoint:s,rotation:a,annotationScale:o}=this.resolveAnnotativePresentation(),c=this.extrusionDrawingAdjust(),l={text:this.textString,height:n,width:1/0,widthFactor:c.widthFactor,position:r,rotation:a,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:s},h=t.mtext(l,this.getTextStyle(),e);if(h&&o){const u=h.userData;u.annotationScale=o}return h}pointToWcs(t){return oe(t,this._normal)}extrusionDrawingAdjust(){if(this._normal.x===0&&this._normal.y===0&&this._normal.z===1)return{rotation:this._rotation,widthFactor:this._widthFactor};if(this._normal.x===0&&this._normal.y===0&&this._normal.z<0)return{rotation:-this._rotation,widthFactor:-this._widthFactor};const t=new A(Math.cos(this._rotation),Math.sin(this._rotation),0);return t.transformDirection(new X().setFromExtrusionDirection(this._normal)),{rotation:Math.atan2(t.y,t.x),widthFactor:this._widthFactor}}resolveTextAnchor(){const t=this.resolveAttachmentPoint();if(t===exports.AcGiMTextAttachmentPoint.BaselineLeft)return{anchor:this.pointToWcs(this._position),attachmentPoint:t};const e=this._alignmentPoint;return!this._hasAlignmentPoint||e.x===0&&e.y===0&&e.z===0?{anchor:this.pointToWcs(this._position),attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft}:{anchor:this.pointToWcs(e),attachmentPoint:t}}resolveAttachmentPoint(){const t=this._horizontalMode,e=this._verticalModel;if(t===4)return exports.AcGiMTextAttachmentPoint.MiddleCenter;if(t===3||t===5)return exports.AcGiMTextAttachmentPoint.BaselineLeft;switch(e){case 3:return t===1?exports.AcGiMTextAttachmentPoint.TopCenter:t===2?exports.AcGiMTextAttachmentPoint.TopRight:exports.AcGiMTextAttachmentPoint.TopLeft;case 2:return t===1?exports.AcGiMTextAttachmentPoint.MiddleCenter:t===2?exports.AcGiMTextAttachmentPoint.MiddleRight:exports.AcGiMTextAttachmentPoint.MiddleLeft;case 1:return t===1?exports.AcGiMTextAttachmentPoint.BottomCenter:t===2?exports.AcGiMTextAttachmentPoint.BottomRight:exports.AcGiMTextAttachmentPoint.BottomLeft;case 0:default:return t===1?exports.AcGiMTextAttachmentPoint.BaselineCenter:t===2?exports.AcGiMTextAttachmentPoint.BaselineRight:exports.AcGiMTextAttachmentPoint.BaselineLeft}}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbText"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,this.position),t.writeDouble(40,this.height),t.writeString(1,this.textString),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeString(7,this.styleName||"Standard"),this.generationFlag!==0&&t.writeInt16(71,this.generationFlag),t.writeInt16(72,this.horizontalMode);const e=this.horizontalMode!==0||this.verticalMode!==0,n=this.hasAlignmentPoint?this.alignmentPoint:e?this.position:this.alignmentPoint;return t.writePoint3d(11,n),t.writeVector3d(210,this.normal),t.writeSubclassMarker("AcDbText"),t.writeInt16(73,this.verticalMode),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbText");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.alignmentPoint.x,a=this.alignmentPoint.y,o=this.alignmentPoint.z,c=!1,l=this.normal.x,h=this.normal.y,u=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 10:e=f;break;case 20:n=f;break;case 30:r=f;break;case 11:s=f,c=!0;break;case 21:a=f,c=!0;break;case 31:o=f,c=!0;break;case 1:this.textString=String(d.value);break;case 7:this.styleName=String(d.value);break;case 39:this.thickness=f;break;case 40:this.height=f;break;case 41:this.widthFactor=f;break;case 50:this.rotation=O.degToRad(f);break;case 51:this.oblique=O.degToRad(f);break;case 71:this.generationFlag=f;break;case 72:this.horizontalMode=f;break;case 73:this.verticalMode=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break;case 100:{if(String(d.value)==="AcDbText")break;return t.pushBackItem(d),this.finishTextDxfIn(e,n,r,s,a,o,c,l,h,u),this}}}return this.finishTextDxfIn(e,n,r,s,a,o,c,l,h,u),this}finishTextDxfIn(t,e,n,r,s,a,o,c,l,h){this.position=new x(t,e,n),o&&!(r===0&&s===0&&a===0)?(this.alignmentPoint=new x(r,s,a),this._hasAlignmentPoint=!0):(this.alignmentPoint=new x(t,e,n),this._hasAlignmentPoint=!1);const u=new A(c,l,h);u.lengthSq()>0&&this.normal.copy(u.normalize())}};ah.typeName="Text";let Ci=ah;var Et=(i=>(i[i.Invisible=1]="Invisible",i[i.Const=2]="Const",i[i.Verifiable=4]="Verifiable",i[i.Preset=8]="Preset",i))(Et||{}),ke=(i=>(i[i.MultiLine=2]="MultiLine",i[i.ConstMultiLine=4]="ConstMultiLine",i))(ke||{});const oh=class oh extends Ci{get dxfTypeName(){return"ATTDEF"}constructor(){super(),this._flags=0,this._prompt="",this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&1)!==0}set isInvisible(t){t?this._flags|=1:this._flags&=-2}get prompt(){return this._prompt}set prompt(t){this._prompt=t}get isConst(){return(this._flags&2)!==0}set isConst(t){t?this._flags|=2:this._flags&=-3}get isVerifiable(){return(this._flags&4)!==0}set isVerifiable(t){t?this._flags|=4:this._flags&=-5}get isPreset(){return(this._flags&8)!==0}set isPreset(t){t?this._flags|=8:this._flags&=-9}get isMTextAttribute(){return(this._mtextFlag&2)!==0}set isMTextAttribute(t){t?this._mtextFlag|=2:this._mtextFlag&=-3}get isConstMTextAttribute(){return(this._mtextFlag&4)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=4:this._mtextFlag&=-5}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}isLooseInDrawingSpace(){const t=this.database;if(!t)return!1;const e=this.getAttrWithoutException("ownerId");if(!e)return!1;const n=t.tables.blockTable.getIdAt(e);return n?n.isModelSapce||n.isPaperSapce:!1}resolveDisplayText(){if(!this.isInvisible){if(this.isLooseInDrawingSpace())return this.tag||this.textString;if(this.isConst||this.isConstMTextAttribute)return this.textString}}resolveMTextAnnotativePresentation(t){var y;const e=this.mtext,n=(e==null?void 0:e.height)??this.height,r=(e==null?void 0:e.width)??0,s=e!=null&&e.location?new x(e.location):this.position.clone(),a=e!=null&&e.direction?new A(e.direction):new A(1,0,0),o=(e==null?void 0:e.attachmentPoint)??exports.AcGiMTextAttachmentPoint.TopLeft,c=Ht(this),l=c.length>0||fe(this);let h=n,u=r,d=s,g=a,f=o,p,m;if(l&&c.length>0){p=je(c,(y=this.database)==null?void 0:y.cannoscale)??c.find(_=>_.isDefault)??c[0],h=De(Ne(n,c),p.scale.scaleFactor);const b=p.contextData;b instanceof sn&&(d=b.insertionPoint.clone(),g=b.direction.clone(),f=b.attachmentPoint,b.definedWidth>0&&(u=b.definedWidth)),m=Ve(c,p)}return{contents:t,height:h,width:u,position:d,direction:g,attachmentPoint:f,preferred:p,annotationScale:m}}subWorldDraw(t,e){const n=this.resolveDisplayText();if(n===void 0)return;if(this.isMTextAttribute&&this.mtext){const s=this.resolveMTextAnnotativePresentation(n),a={text:s.contents,height:s.height,width:s.width,position:s.position,rotation:this.mtext.rotation,directionVector:s.direction,attachmentPoint:s.attachmentPoint,drawingDirection:this.mtext.drawingDirection,lineSpaceFactor:this.mtext.lineSpacingFactor,lineSpaceStyle:this.mtext.lineSpacingStyle},o=t.mtext(a,this.getTextStyle(),e);if(o&&s.annotationScale){const c=o.userData??(o.userData={});c.annotationScale=s.annotationScale}return o}if(n===this.textString)return super.subWorldDraw(t,e);const r=this.textString;this.textString=n;try{return super.subWorldDraw(t,e)}finally{this.textString=r}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttributeDefinition"),t.writeString(3,this.prompt),t.writeString(2,this.tag),t.writeInt16(70,this._flags),t.writeInt16(73,this.fieldLength),t.writeInt16(74,this.lockPositionInBlock?1:0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbAttributeDefinition");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){if(String(e.value)==="AcDbAttributeDefinition")continue;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData&&t.readItem(););break}const r=Number(e.value);switch(n){case 2:this.tag=String(e.value);break;case 3:this.prompt=String(e.value);break;case 70:this.isInvisible=(r&1)!==0,this.isConst=(r&2)!==0,this.isVerifiable=(r&4)!==0,this.isPreset=(r&8)!==0;break;case 71:this.isMTextAttribute=(r&2)!==0,this.isConstMTextAttribute=(r&4)!==0;break;case 73:this.fieldLength=r;break;case 74:this.verticalMode=r;break;case 280:this.lockPositionInBlock=r!==0;break}}return this}};oh.typeName="AttDef";let Zs=oh;function ux(i){return i!=null&&typeof i=="object"&&"blockTableRecord"in i}const ch=class ch extends Ci{get dxfTypeName(){return"ATTRIB"}get resolvedColor(){var t;if(this.color.isByBlock){const e=(t=this.database)==null?void 0:t.tables.blockTable.getEntityById(this.ownerId);if(ux(e))return e.resolvedColor}return this.resolveStandardColor()}constructor(){super(),this._flags=0,this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&Et.Invisible)!==0}set isInvisible(t){t?this._flags|=Et.Invisible:this._flags&=~Et.Invisible}get isConst(){return(this._flags&Et.Const)!==0}set isConst(t){t?this._flags|=Et.Const:this._flags&=~Et.Const}get isVerifiable(){return(this._flags&Et.Verifiable)!==0}set isVerifiable(t){t?this._flags|=Et.Verifiable:this._flags&=~Et.Verifiable}get isPreset(){return(this._flags&Et.Preset)!==0}set isPreset(t){t?this._flags|=Et.Preset:this._flags&=~Et.Preset}get isMTextAttribute(){return(this._mtextFlag&ke.MultiLine)!==0}set isMTextAttribute(t){t?this._mtextFlag|=ke.MultiLine:this._mtextFlag&=~ke.MultiLine}get isConstMTextAttribute(){return(this._mtextFlag&ke.ConstMultiLine)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=ke.ConstMultiLine:this._mtextFlag&=~ke.ConstMultiLine}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}resolveMTextAnnotativePresentation(t){var y;const e=this.mtext,n=(e==null?void 0:e.height)??this.height,r=(e==null?void 0:e.width)??0,s=e!=null&&e.location?new x(e.location):this.position.clone(),a=e!=null&&e.direction?new A(e.direction):new A(1,0,0),o=(e==null?void 0:e.attachmentPoint)??exports.AcGiMTextAttachmentPoint.TopLeft,c=Ht(this),l=c.length>0||fe(this);let h=n,u=r,d=s,g=a,f=o,p,m;if(l&&c.length>0){p=je(c,(y=this.database)==null?void 0:y.cannoscale)??c.find(_=>_.isDefault)??c[0],h=De(Ne(n,c),p.scale.scaleFactor);const b=p.contextData;b instanceof sn&&(d=b.insertionPoint.clone(),g=b.direction.clone(),f=b.attachmentPoint,b.definedWidth>0&&(u=b.definedWidth)),m=Ve(c,p)}return{contents:t,height:h,width:u,position:d,direction:g,attachmentPoint:f,preferred:p,annotationScale:m}}subWorldDraw(t,e){if(!this.isInvisible){if(this.isMTextAttribute&&this.mtext){const n=this.resolveMTextAnnotativePresentation(this.mtext.contents||this.textString),r={text:n.contents,height:n.height,width:n.width,position:n.position,rotation:this.mtext.rotation,directionVector:n.direction,attachmentPoint:n.attachmentPoint,drawingDirection:this.mtext.drawingDirection,lineSpaceFactor:this.mtext.lineSpacingFactor,lineSpaceStyle:this.mtext.lineSpacingStyle},s=t.mtext(r,this.getTextStyle(),e);if(s&&n.annotationScale){const a=s.userData??(s.userData={});a.annotationScale=n.annotationScale}return s}return super.subWorldDraw(t,e)}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttribute"),t.writeInt16(70,this.isInvisible?1:0),t.writeInt16(73,this.fieldLength),t.writeString(2,this.tag),t.writeInt16(74,this.isReallyLocked?1:0),this.mtext&&t.writeInt16(71,this.isMTextAttribute?1:0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbAttribute");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){if(String(e.value)==="AcDbAttribute")continue;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData&&t.readItem(););break}const r=Number(e.value);switch(n){case 2:this.tag=String(e.value);break;case 70:this.isInvisible=(r&Et.Invisible)!==0,this.isConst=(r&Et.Const)!==0,this.isVerifiable=(r&Et.Verifiable)!==0,this.isPreset=(r&Et.Preset)!==0;break;case 71:this.isMTextAttribute=(r&ke.MultiLine)!==0,this.isConstMTextAttribute=(r&ke.ConstMultiLine)!==0;break;case 73:this.fieldLength=r;break;case 74:this.verticalMode=r;break;case 280:this.lockPositionInBlock=r!==0;break}}return this}};ch.typeName="Attrib";let Cr=ch;const dx=()=>({hits:0,misses:0,hitMs:0,missBuildMs:0,missCompactMs:0,cloneMs:0,setCloneMs:0,applyMs:0}),Iu=()=>({hits:0,misses:0,hitMs:0,missBuildMs:0,missCompactMs:0,cloneMs:0,setCloneMs:0,applyMs:0,topLevel:dx(),blockMisses:[]}),ht=class ht{constructor(){this._lruTotalBytes=0,this._retiredCompactedTemplates=[],this._blocks=new Map,this._lruBytes=new Map}static get profileStats(){return this._profileStats}static resetProfile(){this._profileStats=Iu(),this._drawDepth=0}static get instance(){return this._instance||(this._instance=new ht),this._instance}createKey(t,e){let n=e.toString();return!n&&e.isByColor&&(n=`RGB:${e.red},${e.green},${e.blue}`),`${t}_${n}`}createCacheKey(t,e,n){return n?this.createKey(t,e):t}set(t,e){if(this._blocks.set(t,e),ht.lruEnabled){const n=this._lruBytes.get(t)??0,r=this.estimateTemplateBytes(e);this._lruBytes.set(t,r),this._lruTotalBytes+=r-n,this.enforceLruBudget()}return e}enforceLruBudget(){const t=ht.lruMaxEntries;for(;t>0&&this._blocks.size>t;)this.evictOldest();const e=ht.lruMaxEstimatedBytes;for(;e>0&&this._lruTotalBytes>e&&this._blocks.size>1;)this.evictOldest()}evictOldest(){var r;const t=this._blocks.keys().next();if(t.done||t.value===void 0)return;const e=t.value,n=this._blocks.get(e);this._blocks.delete(e),this._lruTotalBytes-=this._lruBytes.get(e)??0,this._lruBytes.delete(e),n&&(Eu(n)?this._retiredCompactedTemplates.push(n):(r=n.dispose)==null||r.call(n))}estimateTemplateBytes(t){var r,s;let e=0;const n=[t];for(;n.length>0;){const a=n.pop();if(a==null)continue;if(a.geometry){const c=a.geometry.attributes;if(c)for(const h in c){const u=(r=c[h])==null?void 0:r.array;u&&(e+=u.byteLength)}const l=(s=a.geometry.index)==null?void 0:s.array;l&&(e+=l.byteLength)}const o=a.children;if(o)for(let c=0;c<o.length;c++)n.push(o[c])}return e}peek(t){return this._blocks.get(t)}get(t){const e=this._blocks.get(t);if(!e)return;if(ht.lruEnabled&&(this._blocks.delete(t),this._blocks.set(t,e)),ht.profiling){const r=performance.now();if(this.maybeCompactTemplate(e,!0)){const l=performance.now()-r;ht._profileStats.missCompactMs+=l,ht._drawDepth===1&&(ht._profileStats.topLevel.missCompactMs+=l)}const a=performance.now(),o=e.fastDeepClone(),c=performance.now()-a;return ht._profileStats.cloneMs+=c,ht._drawDepth===1&&(ht._profileStats.topLevel.cloneMs+=c),Ro(o,t),o}this.maybeCompactTemplate(e,!0);const n=e.fastDeepClone();return Ro(n,t),n}has(t){return this._blocks.has(t)}clear(){var t;this._blocks.forEach(e=>{var n;(n=e.dispose)==null||n.call(e)}),this._blocks.clear(),this._lruBytes.clear(),this._lruTotalBytes=0,this._retiredCompactedTemplates.forEach(e=>{var n;(n=e.dispose)==null||n.call(e)}),this._retiredCompactedTemplates.length=0,(t=ht.onCleared)==null||t.call(ht)}async prebuildAll(t,e,n){const r=[];for(const l of e)!l||!l.name||this.shouldSkipPrebuild(l)||r.push(l);const s=r.length;let a=0;const o=new U().setForeground(),c=new qa;for(const l of r){const h=this.createCacheKey(l.name,o,!1);this.has(h)||this.draw(t,l,o,[],!0),a++,n&&await n(a,s,l.name),await c.maybeYield(ji)}}draw(t,e,n,r=[],s=!0,a,o){const c=ht.profiling;c&&ht._drawDepth++;const l=c&&ht._drawDepth===1,h=ht._profileStats,u=[];try{if(e!=null){const d=n.RGB??0,g=e.name;let f;if(g&&this.has(g))f=g;else if(g){const y=this.createKey(g,n);this.has(y)&&(f=y)}let p;if(f!==void 0){const y=c?performance.now():0;if(p=this.get(f),c){const b=performance.now()-y;h.hits++,h.hitMs+=b,l&&(h.topLevel.hits++,h.topLevel.hitMs+=b)}}else{const y=c?performance.now():0;let b=!1;const _=e.newIterator();for(const k of _)if(k.visibility)if(k.color.isByBlock){b=!0;const L=_x(k.color);try{n.isForeground?k.color.setForeground():k.color.setRGBValue(d),this.addEntity(k,u,t)}finally{k.color.copy(L),xx(L)}}else this.addEntity(k,u,t);p=t.group(u);let w=0;c&&(w=performance.now()-y,h.missBuildMs+=w,l&&(h.topLevel.missBuildMs+=w));let P=0;const S=!!s&&!!g&&!g.startsWith("*U");if(p&&S){const k=c?performance.now():0,L=this.maybeCompactTemplate(p,!1);c&&L&&(P=performance.now()-k,h.missCompactMs+=P,l&&(h.topLevel.missCompactMs+=P))}f=this.createCacheKey(g,n,b);const v=c?h.setCloneMs:0;if(p&&S){if(bx(p),this.set(f,p),c){const k=performance.now();p=p.fastDeepClone();const L=performance.now()-k;h.setCloneMs+=L,l&&(h.topLevel.setCloneMs+=L)}else p=p.fastDeepClone();Ro(p,f)}c&&(h.misses++,l&&h.topLevel.misses++,h.blockMisses.push({blockName:g||"(unnamed)",buildMs:w,compactMs:P,setCloneMs:h.setCloneMs-v}))}const m=c?performance.now():0;if(p&&a&&(ls.copy(a),p.applyMatrix(ls),o&&(o.x!=0||o.y!=0||o.z!=1)&&(Do.setFromExtrusionDirection(o),p.applyMatrix(Do),ls.premultiply(Do))),p&&r&&r.length>0){const y=a!=null?gx.copy(ls).invert():void 0;r.forEach(b=>{y&&b.applyMatrix(y),p.addChild(b)})}if(c){const y=performance.now()-m;h.applyMs+=y,l&&(h.topLevel.applyMs+=y)}return p}else return t.group(u)}finally{c&&ht._drawDepth--}}shouldSkipPrebuild(t){const e=t.name;if(ct.isModelSapceName(e)||ct.isPaperSapceName(e)||e.startsWith("*U")||this.blockHasByBlockColor(t))return!0;for(const n of t.newIterator())if(n.visibility)return!1;return!0}blockHasByBlockColor(t){for(const e of t.newIterator())if(e.visibility&&e.color.isByBlock)return!0;return!1}addEntity(t,e,n){if(!t.visibility)return;const r=t.worldDraw(n);r&&(this.attachEntityInfo(r,t),e.push(r))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}maybeCompactTemplate(t,e){return!t.compactForInstancing||Eu(t)||!yx(t,e)?!1:(t.compactForInstancing(),!0)}};ht.profiling=!1,ht.lruEnabled=!0,ht.lruMaxEntries=512,ht.lruMaxEstimatedBytes=64*1024*1024,ht._profileStats=Iu(),ht._drawDepth=0;let Vn=ht;const ls=new X,Do=new X,gx=new X,fx=8,px=32,Uf=[];function mx(i){const t=i.childCount;return typeof t=="number"?t:Number.POSITIVE_INFINITY}function Eu(i){return i.isCompacted===!0}function yx(i,t){const e=mx(i);return e<fx?!1:e>=px?!0:t}function bx(i){const t=i.prepareCacheTemplate;typeof t=="function"&&t.call(i)}function Ro(i,t){const e=i.userData;e.blockCacheKey=t}function _x(i){const t=Uf.pop()??new U;return t.copy(i),t}function xx(i){Uf.push(i)}const hr="AcDbBlockRepresentation",Cl="AcDbRepData",Oi="ACAD_ENHANCEDBLOCK",Ol="AcDbBlockRepBTag",wx="AcDbBlockRepETag",vx="AcDbDynamicBlockTrueName",Ax="AcDbDynamicBlockGUID";function Qs(i){return i?i.trim().toUpperCase().startsWith("*U"):!1}class vc extends pt{constructor(){super(...arguments),this._blockId=""}get blockId(){return this._blockId}set blockId(t){this._blockId=t??""}dxfOutFields(t){return super.dxfOutFields(t),t.writeObjectId(340,this._blockId),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbBlockRepresentationData");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}n===340&&(this._blockId=String(e.value??""))}return this}}class Ni{constructor(t){typeof t=="string"?(this._blockRefId=t,this._blockRef=void 0):(this._blockRef=t,this._blockRefId=t.objectId)}static isDynamicBlock(t,e){return new Ni(t).isDynamicBlock(e)}static drawableBlockTableRecord(t){const e=new Ni(t);if(e.isDynamicBlock()){const n=e.anonymousBlockTableRecord();if(n&&t.database){const r=t.database.tables.blockTable.getIdAt(n);if(r)return r;const s=t.database.getObjectById(n);if(s instanceof ct)return s}}return t.blockTableRecord}blockId(){return this._blockRefId}isDynamicBlock(t){const e=this.resolveBlockRef(t);if(!e)return!1;if(this.getRepresentationData(e)||this.hasRepresentationDictionary(e))return!0;const n=e.blockTableRecord;return n?!!(this.getDynamicDefinitionIdFromBTag(n)||this.blockTableRecordIsEnhanced(n)):!1}anonymousBlockTableRecord(t){const e=this.resolveBlockRef(t);if(!e||!this.isDynamicBlock(t))return;const n=e.blockTableRecord;if(n&&(Qs(n.name)||this.getDynamicDefinitionIdFromBTag(n)!=null))return n.objectId}dynamicBlockTableRecord(t){var a;const e=this.resolveBlockRef(t);if(!e)return;const n=(a=this.getRepresentationData(e))==null?void 0:a.blockId;if(n)return n;const r=e.blockTableRecord;if(!r)return;const s=this.getDynamicDefinitionIdFromBTag(r);if(s)return s;if(this.blockTableRecordIsEnhanced(r))return r.objectId}resolveBlockRef(t){if(this._blockRef)return this._blockRef;const e=t??this.guessDatabase();if(!e)return;const n=e.getObjectById(this._blockRefId);return n instanceof he?n:void 0}guessDatabase(){var t;return(t=this._blockRef)==null?void 0:t.database}getExtensionDictionary(t){const e=t.extensionDictionary;if(!e||!t.database)return;const n=t.database.getObjectById(e);return n instanceof K?n:void 0}hasRepresentationDictionary(t){const e=this.getExtensionDictionary(t);return e?e.getAt(hr)!=null||e.has(hr):!1}getRepresentationData(t){const e=this.getExtensionDictionary(t);if(!e)return;const n=e.getAt(hr),r=n instanceof K?n:this.asDictionary(n);if(!r)return;const s=r.getAt(Cl);if(s instanceof vc)return s}asDictionary(t){if(!t)return;if(t instanceof K)return t;if(!t.database)return;const e=t.database.getObjectById(t.objectId);return e instanceof K?e:void 0}getDynamicDefinitionIdFromBTag(t){const e=t.getXData(Ol);if(e){for(const n of e)if(Number(n.code)===Ft.ExtendedDataHandle){const r=String(n.value??"").trim();if(r)return r.toUpperCase()}}}blockTableRecordIsEnhanced(t){const e=this.getExtensionDictionary(t);return e?e.getAt(Oi)!=null||e.has(Oi):!1}}const Sx=1e-10;function te(i,t,e){const n=t?i.length:i.length-1;if(n<1||i.length<2)return[];const r=[];for(let s=0;s<n;s++){const a=i[s],o=i[(s+1)%i.length];if(ho(a,o))continue;const c=!t&&(s===0||s===n-1);r.push({kind:"line",line:new Dt(a,o),extent:"bounded",extendable:e??c})}return r}function Nl(i,t,e,n){const r=t?i.length:i.length-1;if(r<1||i.length<2)return[];const s=[];for(let a=0;a<r;a++){const o=i[a],c=i[(a+1)%i.length],h=!t&&(a===0||a===r-1),u=o.bulge??0;if(Math.abs(u)>Sx){const f=Gf(new J(o,c,u),e,n,h);f&&s.push(f);continue}const d=Je(o.x,o.y,e,n),g=Je(c.x,c.y,e,n);ho(d,g)||s.push({kind:"line",line:new Dt(d,g),extent:"bounded",extendable:h})}return s}function Px(i,t,e){const n=[];for(const r of i){if(r instanceof ot){n.push(...Nl(r.vertices,r.closed,t,e));continue}if(r instanceof xn)for(const s of r.curves){const a=kx(s,t,e);a&&n.push(...a)}}return n}function Hf(i,t){return i.map(e=>Tb(e,t))}function kx(i,t,e){if(i instanceof mt){const n=Je(i.startPoint.x,i.startPoint.y,t,e),r=Je(i.endPoint.x,i.endPoint.y,t,e);return ho(n,r)?[]:[{kind:"line",line:new Dt(n,r),extent:"bounded",extendable:!1}]}if(i instanceof J){const n=Gf(i,t,e,!1);return n?[n]:[]}if(i instanceof Ge){const n=Ix(i,t,e,!1);return n?[n]:[]}if(i instanceof Xt){const n=i.clone(),r=Ex(t,e);return r&&n.transform(r),[{kind:"spline",spline:n,extendable:!1}]}return[]}function Gf(i,t,e,n){if(i.closed||Math.abs(i.deltaAngle-z)<1e-10){const c=Je(i.center.x,i.center.y,t,e);return{kind:"circArc",arc:new bt(c,i.radius,0,z,e,Ai(e)),extendable:!1}}const r=Je(i.startPoint.x,i.startPoint.y,t,e),s=Je(i.endPoint.x,i.endPoint.y,t,e),a=Je(i.midPoint.x,i.midPoint.y,t,e),o=bt.tryCreateByThreePoints(r,s,a);return o?{kind:"circArc",arc:o,extendable:n&&!o.closed}:ho(r,s)?null:{kind:"line",line:new Dt(r,s),extent:"bounded",extendable:n}}function Ix(i,t,e,n){const r=Je(i.center.x,i.center.y,t,e),s=new X().setFromExtrusionDirection(new A(e.x,e.y,e.z)),a=new A(Math.cos(i.rotation),Math.sin(i.rotation),0).transformDirection(s);if(a.lengthSq()===0)return null;const o=i.clockwise?i.endAngle:i.startAngle,c=i.clockwise?i.startAngle:i.endAngle,l=new xe(r,e,a,i.majorAxisRadius,i.minorAxisRadius,o,c);return{kind:"ellipseArc",arc:l,extendable:n&&!l.closed&&Math.abs(l.deltaAngle-z)>1e-10}}function Je(i,t,e,n){return oe({x:i,y:t,z:e},n)}function Ex(i,t){if(Math.abs(t.x)<1e-10&&Math.abs(t.y)<1e-10&&Math.abs(t.z-1)<1e-10&&Math.abs(i)<1e-10)return null;const n=new X().setFromExtrusionDirection(new A(t.x,t.y,t.z));return Math.abs(i)<1e-10?n:n.multiply(new X().makeTranslation(0,0,i))}function ho(i,t){const e=i.x-t.x,n=i.y-t.y,r=(i.z??0)-(t.z??0);return e*e+n*n+r*r<1e-20}const ui=class ui extends rt{constructor(t){super(),this._columnCount=1,this._rowCount=1,this._columnSpacing=0,this._rowSpacing=0,this._blockName=t??"",this._position=new x,this._rotation=0,this._normal=new A(0,0,1),this._scaleFactors=new x(1,1,1),this._attribs=new Map}get dxfTypeName(){return"INSERT"}get annotative(){if(ve(this))return!0;const t=this.blockTableRecord;return!!(t!=null&&t.annotative)}set annotative(t){pe(this,t)}get position(){return this._position}set position(t){this._position.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scaleFactors(){return this._scaleFactors}set scaleFactors(t){this._scaleFactors.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get blockName(){return this._blockName}set blockName(t){this._blockName=t}get columnCount(){return this._columnCount}set columnCount(t){this._columnCount=Math.max(1,Math.floor(t)||1)}get rowCount(){return this._rowCount}set rowCount(t){this._rowCount=Math.max(1,Math.floor(t)||1)}get columnSpacing(){return this._columnSpacing}set columnSpacing(t){this._columnSpacing=t}get rowSpacing(){return this._rowSpacing}set rowSpacing(t){this._rowSpacing=t}get blockTableRecord(){if(this._blockName)return this.database.tables.blockTable.getAt(this._blockName)}get drawableBlockTableRecord(){return Ni.drawableBlockTableRecord(this)}appendAttributes(t){this._attribs.set(t.objectId,t),t.ownerId=this.objectId,this.syncAttributeDatabases()}syncAttributeDatabases(){try{const t=this.database,e=new Map;this._attribs.forEach(n=>{n.database=t,t.commitObjectHandle(n),n.ownerId=this.objectId,e.set(n.objectId,n)}),this._attribs=e}catch{}}attributeIterator(){return new Ti(this._attribs)}get blockTransform(){var u,d,g;const t=this.drawableBlockTableRecord,e=(t==null?void 0:t.origin)??x.ORIGIN,n=((u=this._drawPresentation)==null?void 0:u.position)??this._position,r=((d=this._drawPresentation)==null?void 0:d.rotation)??this._rotation,s=((g=this._drawPresentation)==null?void 0:g.scaleFactors)??this._scaleFactors,a=new X().makeTranslation(-e.x,-e.y,-e.z),o=new X().makeScale(s.x,s.y,s.z),c=new vi().setFromAxisAngle(A.Z_AXIS,r),l=new X().makeRotationFromQuaternion(c),h=new X().makeTranslation(n.x,n.y,0);return new X().multiplyMatrices(h,l).multiply(o).multiply(a)}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return le(t,e,this._position),this}subGetOsnapPoints(t,e,n,r,s,a){const o=a??new X;E.Insertion===t?r.push(this.getInsertionPoint(o)):s?this.subEntityGetOsnapPoints(t,e,n,r,s,o):this.collectBlockOsnapPoints(t,e,n,r,o)}transformBy(t){const e=new X().setFromExtrusionDirection(this._normal),n=new X().makeRotationZ(this._rotation),r=new X().multiplyMatrices(e,n),s=this._position.clone(),a=new x(this._scaleFactors.x,0,0).applyMatrix4(r).add(s),o=new x(0,this._scaleFactors.y,0).applyMatrix4(r).add(s),c=new x(0,0,this._scaleFactors.z).applyMatrix4(r).add(s);s.applyMatrix4(t),a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new A(a).sub(s),h=new A(o).sub(s),u=new A(c).sub(s);let d=new A().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new X().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f);return this._position.copy(s),this._normal.copy(d),this._rotation=Math.atan2(p.y,p.x),this._scaleFactors.set(l.length(),h.length(),u.length()),this._attribs.forEach(m=>m.transformBy(t)),this}get properties(){const t={type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"annotative",type:"boolean",editable:!0,accessor:{get:()=>this.annotative,set:e=>{this.annotative=e}}},{name:"blockName",type:"float",editable:!1,accessor:{get:()=>this._blockName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:e=>{this.position.x=e}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:e=>{this.position.y=e}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:e=>{this.position.z=e}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:e=>{this.rotation=e}}},{name:"scaleFactorsX",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.x,set:e=>{this.scaleFactors.x=e}}},{name:"scaleFactorsY",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.y,set:e=>{this.scaleFactors.y=e}}},{name:"scaleFactorsZ",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.z,set:e=>{this.scaleFactors.z=e}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:e=>{this.normal.x=e}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:e=>{this.normal.y=e}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:e=>{this.normal.z=e}}}]}]};if(this._attribs.size>0){const e={groupName:"attribute",properties:[]};t.groups.push(e),this._attribs.forEach(n=>{e.properties.push({name:n.tag,type:"string",editable:!n.isConst,skipTranslation:!0,accessor:{get:()=>n.textString,set:r=>{n.textString=r}}})})}return t}get geometricExtents(){const t=new H,e=this.drawableBlockTableRecord;if(e!=null){const r=e.newIterator();for(const s of r)t.union(s.geometricExtents)}const n=this.getFullInsertionTransform();return t.applyMatrix4(n),t}subGetIntersectCurves(){const t=this.drawableBlockTableRecord;if(t==null)return[];const e=[],n=Math.max(1,this.columnCount),r=Math.max(1,this.rowCount);for(let s=0;s<r;s++)for(let a=0;a<n;a++){const o=new X().makeTranslation(a*this.columnSpacing,s*this.rowSpacing,0),c=new X().multiplyMatrices(this.getFullInsertionTransform(),o);for(const l of t.newIterator())e.push(...Hf(l.subGetIntersectCurves(),c))}return e}resolveAnnotativePresentation(){var c,l;const t=Ht(this),e=t.length>0||fe(this)||!!((c=this.blockTableRecord)!=null&&c.annotative);let n=this._position.clone(),r=this._rotation,s=this._scaleFactors.clone(),a,o;if(e&&t.length>0){a=je(t,(l=this.database)==null?void 0:l.cannoscale)??t.find(u=>u.isDefault)??t[0],o=Ve(t,a);const h=a.contextData;h instanceof Sr&&(n=h.position.clone(),r=h.rotation,s=new x(h.scaleX,h.scaleY,h.scaleZ))}else e&&(o=Yn(this).annotationScale);return{position:n,rotation:r,scaleFactors:s,preferred:a,annotationScale:o}}attachAnnotationScaleDrawInfo(t,e){if(!t||!this.annotative)return t;let n=e;n||(n=Yn(this).annotationScale),n||(n={drawnScaleFactor:1,supportedScaleFactors:[1],supportedScaleNames:[]});const r=t.userData??(t.userData={});return r.annotationScale=n,t}subWorldDraw(t){const e=this.resolveAnnotativePresentation();this._drawPresentation=e;try{return this.subWorldDrawWithPresentation(t,e)}finally{this._drawPresentation=void 0}}subWorldDrawWithPresentation(t,e){const n=this.drawableBlockTableRecord;if(n!=null){const r=[];this._attribs.forEach(c=>{if(!c.isInvisible){const l=c.worldDraw(t);l&&r.push(l)}});const s=Math.max(1,this.columnCount),a=Math.max(1,this.rowCount);if(s===1&&a===1)return this.attachAnnotationScaleDrawInfo(Vn.instance.draw(t,n,this.resolvedColor,r,!0,this.blockTransform,this._normal),e.annotationScale);const o=[];for(let c=0;c<a;c++)for(let l=0;l<s;l++){const h=new X().makeTranslation(l*this.columnSpacing,c*this.rowSpacing,0),u=new X().multiplyMatrices(this.blockTransform,h),d=Vn.instance.draw(t,n,this.resolvedColor,l===0&&c===0?r:[],!0,u,this._normal);d&&o.push(d)}return this.attachAnnotationScaleDrawInfo(t.group(o),e.annotationScale)}else return t.group([])}dxfOut(t,e=!1){super.dxfOut(t,e);let n=!1;for(const r of this.attributeIterator())n=!0,t.writeStart("ATTRIB"),r.dxfOut(t,e);return n&&(t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity")),this}collectBlockOsnapPoints(t,e,n,r,s){const a=this.drawableBlockTableRecord;if(!a)return;const o=new X().multiplyMatrices(s,this.getFullInsertionTransform()),c=o.clone().invert(),l=new x(e).applyMatrix4(c),h=new x(n).applyMatrix4(c),u=[];for(const d of a.newIterator()){const g=[];if(d instanceof ui){d.subGetOsnapPoints(t,e,n,g,void 0,o);for(let f=0;f<g.length;f++)u.push(g[f]);continue}d.subGetOsnapPoints(t,l,h,g,void 0,o),g.forEach(f=>u.push(new x(f).applyMatrix4(o)))}if(u.length!==0)if(t===E.Nearest||t===E.Perpendicular||t===E.Tangent){const d=me(e,u);d&&r.push(d)}else for(let d=0;d<u.length;d++)r.push(u[d])}subEntityGetOsnapPoints(t,e,n,r,s,a,o=new Set,c){const l=Q_(s),h=l.objectId;let u=c===void 0?l.occurrence:c;if(h===this.objectId||o.has(this.objectId))return u;o.add(this.objectId);try{const d=this.drawableBlockTableRecord;if(d==null)return u;const g=new X().multiplyMatrices(a,this.getFullInsertionTransform()),f=g.clone().invert(),p=new x(e).applyMatrix4(f),m=new x(n).applyMatrix4(f);for(const y of d.newIterator()){if(y.objectId===h){if(u>0){u-=1;continue}const b=[];return y.subGetOsnapPoints(t,p,m,b,h,g),y instanceof ui?b.forEach(_=>{r.push(_.clone())}):b.forEach(_=>{r.push(new x(_).applyMatrix4(g))}),-1}if(y instanceof ui){const b=y.subEntityGetOsnapPoints(t,e,n,r,s,g,o,u);if(b<0)return-1;u=b}}return u}finally{o.delete(this.objectId)}}getInsertionPoint(t){var r;const e=((r=this.drawableBlockTableRecord)==null?void 0:r.origin)??x.ORIGIN,n=new X().multiplyMatrices(t,this.getFullInsertionTransform());return new x(e).applyMatrix4(n)}getFullInsertionTransform(){const t=new X().setFromExtrusionDirection(this._normal);return new X().multiplyMatrices(t,this.blockTransform)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockReference"),t.writePoint3d(10,this.position),t.writeString(2,this.blockName),t.writeDouble(41,this.scaleFactors.x),t.writeDouble(42,this.scaleFactors.y),t.writeDouble(43,this.scaleFactors.z),t.writeAngle(50,this.rotation),this.columnCount>1&&t.writeInt16(70,this.columnCount),this.rowCount>1&&t.writeInt16(71,this.rowCount),this.columnSpacing!==0&&t.writeDouble(44,this.columnSpacing),this.rowSpacing!==0&&t.writeDouble(45,this.rowSpacing),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbBlockReference");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.scaleFactors.x,a=this.scaleFactors.y,o=this.scaleFactors.z,c=O.radToDeg(this.rotation),l=this.normal.x,h=this.normal.y,u=this.normal.z,d=this.columnCount,g=this.rowCount,f=this.columnSpacing,p=this.rowSpacing;const m=()=>{this.position=new x(e,n,r),this.scaleFactors=new x(s,a,o),this.rotation=O.degToRad(c),this.normal.copy(new A(l,h,u)),this.columnCount=d>0?d:1,this.rowCount=g>0?g:1,this.columnSpacing=f,this.rowSpacing=p};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const b=Number(y.code),_=Number(y.value);switch(b){case 10:e=_;break;case 20:n=_;break;case 30:r=_;break;case 2:this.blockName=String(y.value);break;case 41:s=_;break;case 42:a=_;break;case 43:o=_;break;case 44:f=_;break;case 45:p=_;break;case 50:c=_;break;case 66:break;case 70:d=_;break;case 71:g=_;break;case 210:l=_;break;case 220:h=_;break;case 230:u=_;break;case 100:return t.pushBackItem(y),m(),this}}return m(),this}};ui.typeName="BlockReference";let he=ui;const Zn=new A,Tu=new A,Lu=new x,Mu=[0,Math.PI/2,Math.PI,Math.PI/2*3],Ya=class Ya extends Mt{constructor(t,e,n=A.Z_AXIS){if(super(),this._geoData=null,this._thickness=0,t!==void 0&&e!==void 0){const r=Ai(n);this._geo=new bt(t,e,0,z,n,r)}}get dxfTypeName(){return"CIRCLE"}get _geo(){return this._geoData==null&&(this._geoData=new bt(new x,1,0,z,A.Z_AXIS,A.X_AXIS)),this._geoData}set _geo(t){this._geoData=t}get center(){return this._geo.center}set center(t){this._geo.center=t}get radius(){return this._geo.radius}set radius(t){this._geo.radius=t}get normal(){return this._geo.normal}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"circArc",arc:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}subGetOsnapPoints(t,e,n,r){switch(t){case E.Center:case E.Centroid:r.push(this._geo.center);break;case E.Quadrant:r.push(this._geo.getPointAtAngle(0)),r.push(this._geo.getPointAtAngle(Math.PI/2)),r.push(this._geo.getPointAtAngle(Math.PI)),r.push(this._geo.getPointAtAngle(Math.PI/2*3));break;case E.Nearest:{const s=this._geo.nearestPoint(e);r.push(s)}break;case E.Tangent:{const s=this._geo.tangentPoints(e);r.push(...s);break}case E.Perpendicular:{const s=this._geo.perpendicularPoints(e),a=me(e,s);a&&r.push(a);break}}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"diameter",type:"float",editable:!1,accessor:{get:()=>this._geo.radius*2}},{name:"perimeter",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){const t=new Array;t.push(this.center);for(const e of Mu)t.push(this._geo.getPointAtAngle(e));return t}subMoveGripPointsAt(t,e){return It(t,n=>{this.moveGripAt(n,e)}),this}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t);const e=qt(this.center,this.normal);return t.writeSubclassMarker("AcDbCircle"),t.writePoint3d(10,e),t.writeDouble(40,this.radius),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbCircle");let e=0,n=0,r=0,s=this.radius,a=this.normal.x,o=this.normal.y,c=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const l=t.readItem();if(!l)break;const h=Number(l.code),u=Number(l.value);switch(h){case 10:e=u;break;case 20:n=u;break;case 30:r=u;break;case 40:s=u;break;case 39:this.thickness=u;break;case 210:a=u;break;case 220:o=u;break;case 230:c=u;break}}return this.applyDxfInGeometry(e,n,r,s,a,o,c),this}applyDxfInGeometry(t,e,n,r,s,a,o){Zn.set(s,a,o),Zn.lengthSq()>0&&Zn.normalize(),Ms(Tu,Zn),ll(Lu,{x:t,y:e,z:n},Zn),this._geo=new bt(Lu,r,0,z,Zn,Tu)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,n=this.radius;return Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2)>=n?1:-1}createOffsetCurve(t){const e=this._geo.offset(t);return e?new Ya(e.center,e.radius,e.normal):null}moveGripAt(t,e){switch(t){case 0:this.transformBy(X.makeTranslation(e));break;case 1:case 2:case 3:case 4:{const n=Mu[t-1],r=this._geo.getPointAtAngle(n),a=new x(r.x+e.x,r.y+e.y,(r.z??0)+(e.z??0)).distanceTo(this.center);a>0&&(this.radius=a);break}}}};Ya.typeName="Circle";let Js=Ya;const Ji=[0,Math.PI/2,Math.PI,Math.PI/2*3],ja=class ja extends Mt{constructor(t,e,n,r,s,a,o){super(),this._geoData=null,t!==void 0&&e!==void 0&&n!==void 0&&r!==void 0&&s!==void 0&&a!==void 0&&o!==void 0&&(this._geo=new xe(t,e,n,r,s,a,o))}get dxfTypeName(){return"ELLIPSE"}get _geo(){return this._geoData==null&&(this._geoData=new xe(new x,A.Z_AXIS,A.X_AXIS,1,1,0,Math.PI*2)),this._geoData}set _geo(t){this._geoData=t}get center(){return this._geo.center}set center(t){this._geo.center=t}get majorAxis(){return this._geo.majorAxis}get majorAxisRadius(){return this._geo.majorAxisRadius}set majorAxisRadius(t){this._geo.majorAxisRadius=t}get minorAxisRadius(){return this._geo.minorAxisRadius}set minorAxisRadius(t){this._geo.minorAxisRadius=t}get startAngle(){return this._geo.startAngle}set startAngle(t){this._geo.startAngle=t}get endAngle(){return this._geo.endAngle}set endAngle(t){this._geo.endAngle=t}get normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"ellipseArc",arc:this._geo.clone(),extendable:!this.closed}]}get closed(){return this._geo.closed||Math.abs(this._geo.deltaAngle-z)<1e-10}get area(){return this._geo.area}subGetGripPoints(){const t=new Array;if(t.push(this._geo.center),this.closed)for(const e of Ji)t.push(this._geo.getPointAtAngle(e));else t.push(this._geo.startPoint),t.push(this._geo.endPoint);return t}subMoveGripPointsAt(t,e){return It(t,n=>{this.moveGripAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){switch(t){case E.EndPoint:this.closed||(r.push(this._geo.startPoint),r.push(this._geo.endPoint));break;case E.MidPoint:this.closed||r.push(this._geo.midPoint);break;case E.Center:case E.Centroid:r.push(this._geo.center);break;case E.Quadrant:if(this.closed)for(const s of Ji)r.push(this._geo.getPointAtAngle(s));break;case E.Nearest:r.push(this._geo.nearestPoint(e));break;case E.Tangent:r.push(...this._geo.tangentPoints(e));break;case E.Perpendicular:{const s=this._geo.perpendicularPoints(e),a=me(e,s);a&&r.push(a);break}}}transformBy(t){return this._geo.transform(t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"majorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.majorAxisRadius,set:t=>{this.center.x=t}}},{name:"minorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.minorAxisRadius,set:t=>{this.minorAxisRadius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.ellipticalArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbEllipse"),t.writePoint3d(10,this.center);const e=this._geo.majorAxis,n=this.majorAxisRadius;return t.writePoint3d(11,{x:e.x*n,y:e.y*n,z:e.z*n}),t.writeVector3d(210,this.normal),t.writeDouble(40,this.minorAxisRadius/this.majorAxisRadius),t.writeDouble(41,this.startAngle),t.writeDouble(42,this.endAngle),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbEllipse");let e=this.center.x,n=this.center.y,r=this.center.z,s=this.majorAxis.x*this.majorAxisRadius,a=this.majorAxis.y*this.majorAxisRadius,o=this.majorAxis.z*this.majorAxisRadius,c=this.normal.x,l=this.normal.y,h=this.normal.z,u=this.majorAxisRadius>0?this.minorAxisRadius/this.majorAxisRadius:1,d=this.startAngle,g=this.endAngle;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const f=t.readItem();if(!f)break;const p=Number(f.code),m=Number(f.value);switch(p){case 10:e=m;break;case 20:n=m;break;case 30:r=m;break;case 11:s=m;break;case 21:a=m;break;case 31:o=m;break;case 210:c=m;break;case 220:l=m;break;case 230:h=m;break;case 40:u=m;break;case 41:d=m;break;case 42:g=m;break}}return this.applyDxfInGeometry(e,n,r,s,a,o,c,l,h,u,d,g),this}applyDxfInGeometry(t,e,n,r,s,a,o,c,l,h,u,d){const g=Math.hypot(r,s,a)||1;this._geo=new xe({x:t,y:e,z:n},{x:o,y:c,z:l},{x:r,y:s,z:a},g,g*h,u,d)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.center,n=t.x-e.x,r=t.y-e.y,s=this.majorAxis,a=Math.hypot(s.x,s.y)||1,o=this.minorAxisRadius/this.majorAxisRadius*a||1,c=s.x/a,l=s.y/a,h=-l,u=c,d=n*c+r*l,g=n*h+r*u;return(d/a)**2+(g/o)**2>=1?1:-1}moveGripAt(t,e){switch(t){case 0:this.transformBy(X.makeTranslation(e));break;case 1:if(this.closed)this.moveQuadrantGripAt(Ji[0],e);else{const n=this._geo.startPoint;this._geo.startAngle=$e(this._geo.center,{x:n.x+e.x,y:n.y+e.y,z:(n.z??0)+(e.z??0)},this._geo.normal)}break;case 2:if(this.closed)this.moveQuadrantGripAt(Ji[1],e);else{const n=this._geo.endPoint;this._geo.endAngle=$e(this._geo.center,{x:n.x+e.x,y:n.y+e.y,z:(n.z??0)+(e.z??0)},this._geo.normal)}break;case 3:case 4:this.closed&&this.moveQuadrantGripAt(Ji[t-1],e);break}}moveQuadrantGripAt(t,e){const n=this._geo.getPointAtAngle(t),r=new x(n.x+e.x,n.y+e.y,(n.z??0)+(e.z??0)),s=this._geo.center,a=r.x-s.x,o=r.y-s.y,c=(r.z??0)-(s.z??0),l=t===0||t===Math.PI?this._geo.majorAxis:this._geo.minorAxis,h=a*l.x+o*l.y+c*l.z,u=Math.abs(h);u<=0||(t===0||t===Math.PI?this.majorAxisRadius=u:this.minorAxisRadius=u)}createOffsetCurve(t){const e=this._geo.offset(t);return e?new ja(e.center,e.normal,e.majorAxis,e.majorAxisRadius,e.minorAxisRadius,e.startAngle,e.endAngle):null}};ja.typeName="Ellipse";let ta=ja;const lh=class lh extends rt{get dxfTypeName(){return"3DFACE"}constructor(){super(),this._vertices=[new x,new x,new x],this._edgeInvisibilities=0}getVertexAt(t){return t<0?this._vertices[0]:t>=this._vertices.length?this._vertices[this._vertices.length-1]:this._vertices[t]}setVertexAt(t,e){if(t<0&&this._vertices[0].copy(e),t>=3)return this._vertices.length===3&&this._vertices.push(new x),this._vertices[3].copy(e);this._vertices[t].copy(e)}setEdgeInvisibilities(t){this._edgeInvisibilities=t}isEdgeVisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");return(this._edgeInvisibilities&1<<t)===0}makeEdgeInvisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");this._edgeInvisibilities=this._edgeInvisibilities|1<<t}get geometricExtents(){return new H().setFromPoints(this._vertices)}subGetIntersectCurves(){return te(this._vertices,!0)}get area(){const t=[this.getVertexAt(0),this.getVertexAt(1),this.getVertexAt(2)],e=this.getVertexAt(3);return(e.x!==t[2].x||e.y!==t[2].y||e.z!==t[2].z)&&t.push(e),qd(t)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return Gi(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){lo(this._vertices,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this}get directBatchPrimitive(){return"lineSegments"}subWorldDraw(t){const e=this._vertices.length,n=new Float32Array(e*3),r=new Uint16Array(e*2);for(let s=0;s<e;s++)n[s*3]=this._vertices[s].x,n[s*3+1]=this._vertices[s].y,n[s*3+2]=this._vertices[s].z,this.isEdgeVisibleAt(s)&&(r[s*2]=s,r[s*2+1]=(s+1)%4);return t.lineSegments(n,3,r)}dxfOutFields(t){super.dxfOutFields(t);const e=this.getVertexAt(0),n=this.getVertexAt(1),r=this.getVertexAt(2),s=this.getVertexAt(3);t.writeSubclassMarker("AcDbFace"),t.writePoint3d(10,e),t.writePoint3d(11,n),t.writePoint3d(12,r),t.writePoint3d(13,s);let a=0;for(let o=0;o<4;++o)this.isEdgeVisibleAt(o)||(a|=1<<o);return t.writeInt16(70,a),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFace");const e=[0,1,2,3].map(r=>{const s=this._vertices[r];return s?{x:s.x,y:s.y,z:s.z}:{x:0,y:0,z:0}});let n=this._edgeInvisibilities;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),a=Number(r.value);switch(s){case 10:case 11:case 12:case 13:e[s-10].x=a;break;case 20:case 21:case 22:case 23:e[s-20].y=a;break;case 30:case 31:case 32:case 33:e[s-30].z=a;break;case 70:n=a;break}}return e.forEach((r,s)=>this.setVertexAt(s,r)),this._edgeInvisibilities=n,this}};lh.typeName="Face";let ea=lh;var Ut=(i=>(i[i.DecimalDegrees=0]="DecimalDegrees",i[i.DegreesMinutesSeconds=1]="DegreesMinutesSeconds",i[i.Gradians=2]="Gradians",i[i.Radians=3]="Radians",i[i.SurveyorsUnits=4]="SurveyorsUnits",i))(Ut||{}),_t=(i=>(i[i.Scientific=1]="Scientific",i[i.Decimal=2]="Decimal",i[i.Engineering=3]="Engineering",i[i.Architectural=4]="Architectural",i[i.Fractional=5]="Fractional",i[i.WindowsDesktop=6]="WindowsDesktop",i))(_t||{}),ft=(i=>(i[i.Undefined=0]="Undefined",i[i.Inches=1]="Inches",i[i.Feet=2]="Feet",i[i.Miles=3]="Miles",i[i.Millimeters=4]="Millimeters",i[i.Centimeters=5]="Centimeters",i[i.Meters=6]="Meters",i[i.Kilometers=7]="Kilometers",i[i.Microinches=8]="Microinches",i[i.Mils=9]="Mils",i[i.Yards=10]="Yards",i[i.Angstroms=11]="Angstroms",i[i.Nanometers=12]="Nanometers",i[i.Microns=13]="Microns",i[i.Decimeters=14]="Decimeters",i[i.Dekameters=15]="Dekameters",i[i.Hectometers=16]="Hectometers",i[i.Gigameters=17]="Gigameters",i[i.Astronomical=18]="Astronomical",i[i.LightYears=19]="LightYears",i[i.Parsecs=20]="Parsecs",i[i.USSurveyFeet=21]="USSurveyFeet",i[i.USSurveyInch=22]="USSurveyInch",i[i.USSurveyYard=23]="USSurveyYard",i[i.USSurveyMile=24]="USSurveyMile",i[i.Max=24]="Max",i))(ft||{});function Tx(i){return i==4||i==5||i==6||i==7||i==12||i==13||i==14||i==15||i==16||i==17}function Lx(i){return i==1||i==2||i==3||i==8||i==9||i==10||i==21}const I={ACADVER:"ACADVER",ANNOALLVISIBLE:"ANNOALLVISIBLE",ANGBASE:"ANGBASE",ANGDIR:"ANGDIR",AUNITS:"AUNITS",AUPREC:"AUPREC",CANNOSCALE:"CANNOSCALE",CECOLOR:"CECOLOR",CELTSCALE:"CELTSCALE",CELTYPE:"CELTYPE",CELWEIGHT:"CELWEIGHT",CETRANSPARENCY:"CETRANSPARENCY",CLAYER:"CLAYER",CMLEADERSTYLE:"CMLEADERSTYLE",CMLSCALE:"CMLSCALE",CMLSTYLE:"CMLSTYLE",COLORTHEME:"COLORTHEME",COMPAREHATCH:"COMPAREHATCH",COMPAREPROPS:"COMPAREPROPS",COMPARERCMARGIN:"COMPARERCMARGIN",COMPARETEXT:"COMPARETEXT",COMPARETOLERANCE:"COMPARETOLERANCE",DYNMODE:"DYNMODE",DYNPROMPT:"DYNPROMPT",DWGNAME:"DWGNAME",EXTMAX:"EXTMAX",EXTMIN:"EXTMIN",GRIPCOLOR:"GRIPCOLOR",GRIPHOT:"GRIPHOT",GRIPOBJLIMIT:"GRIPOBJLIMIT",GRIPS:"GRIPS",GRIPSIZE:"GRIPSIZE",HPANG:"HPANG",HPASSOC:"HPASSOC",HPBACKGROUNDCOLOR:"HPBACKGROUNDCOLOR",HPCOLOR:"HPCOLOR",HPDOUBLE:"HPDOUBLE",HPISLANDDETECTION:"HPISLANDDETECTION",HPLAYER:"HPLAYER",HPNAME:"HPNAME",HPSCALE:"HPSCALE",HPSEPARATE:"HPSEPARATE",HPTRANSPARENCY:"HPTRANSPARENCY",INSUNITS:"INSUNITS",LOGINNAME:"LOGINNAME",LTSCALE:"LTSCALE",LUNITS:"LUNITS",LUPREC:"LUPREC",LWDISPLAY:"LWDISPLAY",MEASUREMENT:"MEASUREMENT",MEASUREMENTCOLOR:"MEASUREMENTCOLOR",MODELBKCOLOR:"MODELBKCOLOR",OSMODE:"OSMODE",ORTHOMODE:"ORTHOMODE",OPENPROF:"OPENPROF",PAPERBKCOLOR:"PAPERBKCOLOR",PDMODE:"PDMODE",PDSIZE:"PDSIZE",PICKBOX:"PICKBOX",POLARADDANG:"POLARADDANG",POLARMODE:"POLARMODE",POLARANG:"POLARANG",SHORTCUTMENU:"SHORTCUTMENU",TEXTSTYLE:"TEXTSTYLE",TILEMODE:"TILEMODE",DIMSTYLE:"DIMSTYLE",UNITMODE:"UNITMODE"},Mx=Object.freeze(Object.values(I));function Cx(){try{const i=typeof process<"u"&&process.env?process.env:void 0;if(!i)return"";const t=i.USERNAME||i.USER||i.LOGNAME||"";return typeof t=="string"?t.trim():""}catch{return""}}const Va=class Va{constructor(){this.registry=new Map,this.cache=new Map,this.events={sysVarChanged:new wt},this.registerVar({name:I.ANNOALLVISIBLE,type:"boolean",isDbVar:!0,defaultValue:!0}),this.registerVar({name:I.ANGBASE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:I.ANGDIR,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:I.AUNITS,type:"number",isDbVar:!0,defaultValue:Ut.DecimalDegrees}),this.registerVar({name:I.AUPREC,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:I.CANNOSCALE,type:"string",isDbVar:!0,defaultValue:"1:1"}),this.registerVar({name:I.CECOLOR,type:"color",isDbVar:!0,defaultValue:new U(exports.AcCmColorMethod.ByLayer)}),this.registerVar({name:I.CELTSCALE,type:"number",isDbVar:!0,defaultValue:-1}),this.registerVar({name:I.CELTYPE,type:"string",isDbVar:!0,defaultValue:Pt}),this.registerVar({name:I.CELWEIGHT,type:"number",isDbVar:!0,defaultValue:exports.AcGiLineWeight.ByLayer}),this.registerVar({name:I.CETRANSPARENCY,type:"transparency",isDbVar:!0,defaultValue:new At}),this.registerVar({name:I.CLAYER,type:"string",isDbVar:!0,defaultValue:"0"}),this.registerVar({name:I.CMLEADERSTYLE,type:"string",isDbVar:!0,defaultValue:Qe}),this.registerVar({name:I.CMLSCALE,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:I.CMLSTYLE,type:"string",isDbVar:!0,defaultValue:Ze}),this.registerVar({name:I.COLORTHEME,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:I.COMPAREHATCH,type:"number",isDbVar:!0,defaultValue:js}),this.registerVar({name:I.COMPAREPROPS,type:"number",isDbVar:!1,defaultValue:sf}),this.registerVar({name:I.COMPARERCMARGIN,type:"number",isDbVar:!0,defaultValue:Vs}),this.registerVar({name:I.COMPARETEXT,type:"number",isDbVar:!0,defaultValue:Us}),this.registerVar({name:I.COMPARETOLERANCE,type:"number",isDbVar:!0,defaultValue:Hs}),this.registerVar({name:I.DYNMODE,type:"number",isDbVar:!1,defaultValue:3}),this.registerVar({name:I.DYNPROMPT,type:"boolean",isDbVar:!1,defaultValue:!0}),this.registerVar({name:I.DWGNAME,type:"string",isDbVar:!0,readOnly:!0,defaultValue:"Drawing1.dwg"}),this.registerVar({name:I.GRIPCOLOR,type:"number",isDbVar:!1,defaultValue:$g}),this.registerVar({name:I.GRIPHOT,type:"number",isDbVar:!1,defaultValue:qg}),this.registerVar({name:I.GRIPOBJLIMIT,type:"number",isDbVar:!1,defaultValue:100}),this.registerVar({name:I.GRIPS,type:"number",isDbVar:!1,defaultValue:2}),this.registerVar({name:I.GRIPSIZE,type:"number",isDbVar:!1,defaultValue:Kg}),this.registerVar({name:I.HPANG,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:I.HPASSOC,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:I.HPBACKGROUNDCOLOR,type:"color",isDbVar:!0,defaultValue:new U(exports.AcCmColorMethod.None)}),this.registerVar({name:I.HPCOLOR,type:"color",isDbVar:!0,defaultValue:new U(exports.AcCmColorMethod.ByLayer)}),this.registerVar({name:I.HPDOUBLE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:I.HPISLANDDETECTION,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:I.HPLAYER,type:"string",isDbVar:!0,defaultValue:"."}),this.registerVar({name:I.HPNAME,type:"string",isDbVar:!1,defaultValue:Hg}),this.registerVar({name:I.HPSCALE,type:"number",isDbVar:!1,defaultValue:1}),this.registerVar({name:I.HPSEPARATE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:I.HPTRANSPARENCY,type:"transparency",isDbVar:!0,defaultValue:new At}),this.registerVar({name:I.INSUNITS,type:"number",isDbVar:!0,defaultValue:ft.Millimeters}),this.registerVar({name:I.LOGINNAME,type:"string",isDbVar:!1,readOnly:!0,defaultValue:Cx()}),this.registerVar({name:I.LUNITS,type:"number",isDbVar:!0,defaultValue:_t.Decimal}),this.registerVar({name:I.LUPREC,type:"number",isDbVar:!0,defaultValue:4}),this.registerVar({name:I.LWDISPLAY,type:"boolean",isDbVar:!0,defaultValue:!1}),this.registerVar({name:I.MEASUREMENT,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:I.MEASUREMENTCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new U(exports.AcCmColorMethod.ByColor);return t.setRGB(96,165,250),t})()}),this.registerVar({name:I.MODELBKCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new U(exports.AcCmColorMethod.ByColor);return t.setRGB(0,0,0),t})()}),this.registerVar({name:I.OSMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:I.ORTHOMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:I.OPENPROF,type:"boolean",isDbVar:!1,defaultValue:!1}),this.registerVar({name:I.PAPERBKCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new U(exports.AcCmColorMethod.ByColor);return t.setRGB(255,255,255),t})()}),this.registerVar({name:I.PICKBOX,type:"number",isDbVar:!1,defaultValue:10}),this.registerVar({name:I.POLARADDANG,type:"string",isDbVar:!1,defaultValue:""}),this.registerVar({name:I.POLARMODE,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:I.POLARANG,type:"number",isDbVar:!1,defaultValue:90}),this.registerVar({name:I.SHORTCUTMENU,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:I.TEXTSTYLE,type:"string",isDbVar:!0,defaultValue:gt}),this.registerVar({name:I.TILEMODE,type:"number",isDbVar:!0,defaultValue:1}),this.registerVar({name:I.UNITMODE,type:"number",isDbVar:!0,defaultValue:0})}static instance(){return this._instance||(this._instance=new Va),this._instance}registerVar(t){const e=this.normalizeName(t.name);this.registry.set(e,{...t,name:e}),t.isDbVar||this.cache.set(e,t.defaultValue)}registerMany(t){t.forEach(e=>this.registerVar(e))}setLoginName(t){const e=this.normalizeName(I.LOGINNAME);this.cache.set(e,t.trim())}getVar(t,e){t=this.normalizeName(t);const n=this.getDescriptor(t);if(!n)throw new Error(`System variable ${t} not found!`);if(n.isDbVar)return e[t.toLowerCase()];if(this.cache.has(t))return this.cache.get(t)}getDefaultValue(t){t=this.normalizeName(t);const e=this.getDescriptor(t);if(!e)throw new Error(`System variable ${t} not found!`);return e.defaultValue}applyVarMutation(t,e,n,r,s){const a=this.normalizeName(t);if(this.hasValueChanged(e,n)){if(r.transactionManager.isRecording())r.transactionManager.recordSysvar(a,e);else if(r.transactionManager.strictMode&&!r.transactionManager.isApplyingUndoRedo())throw new Error(`Cannot change system variable ${a} outside an active transaction.`);s(),!r.transactionManager.isApplyingUndoRedo()&&!r.transactionManager.isRecording()&&this.events.sysVarChanged.dispatch({database:r,name:a,newVal:n,oldVal:e})}}setVar(t,e,n){t=this.normalizeName(t);const r=this.getDescriptor(t);if(r){if(r.readOnly)throw new Error(`System variable ${t} is read-only!`);const s=this.getVar(t,n);if(r.type==="transparency"){const a=this.parseTransparency(e);if(a==null||a.isInvalid)throw new Error("Invalid transparency value!");e=a}else if(r.type!=="string"&&(typeof e=="string"||e instanceof String)){if(r.type==="number"){const a=Number(e);if(Number.isNaN(a))throw new Error("Invalid number input!");e=a}else if(r.type==="boolean")e=this.parseBoolean(e);else if(r.type==="color"){const a=this.parseColorSysVar(t,e,n);if(a==null)throw new Error("Invalid color value!");e=a}}else r.type==="boolean"&&(e=!!e);if(t===I.GRIPCOLOR.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<mc||a>yc)throw new Error(`Invalid GRIPCOLOR value! Valid range is ${mc} to ${yc}.`);e=a}if(t===I.GRIPHOT.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<bc||a>_c)throw new Error(`Invalid GRIPHOT value! Valid range is ${bc} to ${_c}.`);e=a}if(t===I.GRIPOBJLIMIT.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<0||a>32767)throw new Error("Invalid GRIPOBJLIMIT value! Valid range is 0 to 32767.");e=a}if(t===I.GRIPS.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<0||a>2)throw new Error("Invalid GRIPS value! Valid range is 0 to 2.");e=a}if(t===I.GRIPSIZE.toLowerCase()){const a=Math.trunc(e);if(!Number.isFinite(a)||a<xc||a>wc)throw new Error(`Invalid GRIPSIZE value! Valid range is ${xc} to ${wc}.`);e=a}t===I.COMPAREHATCH.toLowerCase()&&(e=Me("COMPAREHATCH",e,Ja,to)),t===I.COMPAREPROPS.toLowerCase()&&(e=Me("COMPAREPROPS",e,af,of)),t===I.COMPARERCMARGIN.toLowerCase()&&(e=Me("COMPARERCMARGIN",e,eo,no)),t===I.COMPARETEXT.toLowerCase()&&(e=Me("COMPARETEXT",e,io,ro)),t===I.COMPARETOLERANCE.toLowerCase()&&(e=Me("COMPARETOLERANCE",e,so,ao)),r.isDbVar?this.applyVarMutation(t,s,e,n,()=>{n[t.toLowerCase()]=e}):this.applyVarMutation(t,s,e,n,()=>{this.cache.set(t,e)})}else throw new Error(`System variable ${t} not found!`)}getDescriptor(t){return this.registry.get(this.normalizeName(t))}getAllDescriptors(){return[...this.registry.values()]}parseBoolean(t){if(t==null)return!1;const e=String(t).trim().toLowerCase(),n=new Set(["true","t","1","yes","y"]),r=new Set(["false","f","0","no","n"]);return n.has(e)?!0:(r.has(e),!1)}parseColorSysVar(t,e,n){const r=e.trim().toLowerCase();return t===I.HPCOLOR.toLowerCase()&&(r==="."||r==="use current")?n.cecolor.clone():t===I.HPBACKGROUNDCOLOR.toLowerCase()&&(r===""||r==="."||r==="none")?new U(exports.AcCmColorMethod.None):U.fromString(e)}parseTransparency(t){if(t instanceof At)return t;if(typeof t=="number")return At.deserialize(t);if(!(typeof t!="string"&&!(t instanceof String)))return At.fromString(String(t))}hasValueChanged(t,e){return t instanceof U&&e instanceof U||t instanceof At&&e instanceof At?!t.equals(e):!Object.is(t,e)}normalizeName(t){return t.toLowerCase()}};Va._instance=null;let xt=Va;const Wf="Load Database",Cu=3e4,Ox=12e4,Nx=1024*1024;class Wt extends Sd{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=el.getInstance().getEntry(Wf),n=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const r=await this.data.task(t);return this.progress&&(await this.progress(this.data.progress.value,this.data.stage,"END",r?r.data:null),this.data.progress.value+=this.data.step,this.data.progress.value>100&&(this.data.progress.value=100)),e&&(e.data[this.name]=Date.now()-n),r}}class Dl{constructor(t={}){this.config={useWorker:t.useWorker??!0,...t}}async read(t,e,n={}){const{minimumChunkSize:r=10,progress:s,timeout:a,sysVars:o}=n,c={name:Wf,data:{total:0},format(){let d="";return Object.keys(this.data).forEach(g=>{g!=="total"&&(d+=`- ${g}: ${this.data[g]} ms
12
- `)}),d+=`- total: ${this.data.total} ms`,d}};el.getInstance().collect(c),this.progress=s;const l={value:0},h=new Pd;h.setCompleteCallback(()=>this.onFinished()),h.setErrorCallback(d=>this.onError(d)),h.addTask(new Wt({stage:"START",step:1,progress:l,task:async d=>d},s)),h.addTask(new Wt({stage:"PARSE",step:5,progress:l,task:async d=>await this.parse(d,a)},s)),h.addTask(new Wt({stage:"LTYPE",step:1,progress:l,task:async d=>(this.processLineTypes(d.model,e),d)},s)),h.addTask(new Wt({stage:"STYLE",step:1,progress:l,task:async d=>(this.processTextStyles(d.model,e),d)},s)),h.addTask(new Wt({stage:"DIMSTYLE",step:1,progress:l,task:async d=>(this.processDimStyles(d.model,e),d)},s)),h.addTask(new Wt({stage:"LAYER",step:1,progress:l,task:async d=>(this.processLayers(d.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),d)},s)),h.addTask(new Wt({stage:"VPORT",step:1,progress:l,task:async d=>(this.processViewports(d.model,e),d)},s)),h.addTask(new Wt({stage:"HEADER",step:1,progress:l,task:async d=>{if(this.processClasses(d.model,e),this.processHeader(d.model,e),o){const g=xt.instance();for(const[f,p]of Object.entries(o))g.setVar(f,p,e)}return d}},s)),h.addTask(new Wt({stage:"BLOCK_RECORD",step:5,progress:l,task:async d=>(this.processBlockTables(d.model,e),d)},s)),h.addTask(new Wt({stage:"OBJECT",step:5,progress:l,task:async d=>(this.processObjects(d.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),d)},s)),h.addTask(new Wt({stage:"BLOCK",step:5,progress:l,task:async d=>(await this.processBlocks(d.model,e),d)},s)),h.addTask(new Wt({stage:"ENTITY",step:100,progress:l,task:async d=>(await this.processEntities(d.model,e,r,l,s),d)},s)),h.addTask(new Wt({stage:"END",step:0,progress:l,task:async d=>d},s));const u=Date.now();await h.run(t),c.data.total=Date.now()-u}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&this.progress(100,"END","END")}getParserWorkerTimeout(t,e){const n=e??this.config.timeout;if(n!=null)return n;const r=Math.ceil(t.byteLength/Nx),s=Cu+r*1e3;return Math.min(Ox,Math.max(Cu,s))}async parse(t,e){throw new Error("Not impelemented yet!")}processLineTypes(t,e){throw new Error("Not impelemented yet!")}processTextStyles(t,e){throw new Error("Not impelemented yet!")}processDimStyles(t,e){throw new Error("Not impelemented yet!")}processLayers(t,e){throw new Error("Not impelemented yet!")}processViewports(t,e){throw new Error("Not impelemented yet!")}processHeader(t,e){throw new Error("Not impelemented yet!")}processClasses(t,e){}processBlockTables(t,e){throw new Error("Not impelemented yet!")}processObjects(t,e){throw new Error("Not impelemented yet!")}processBlocks(t,e){throw new Error("Not impelemented yet!")}processEntities(t,e,n,r,s){throw new Error("Not impelemented yet!")}}class $f{constructor(t,e,n){this._chunkSize=-1,this._minimumChunkSize=50,this._count=t,this._numerOfChunk=e<1?1:e,this._minimumChunkSize=n,this.calculateChunkSize()}get count(){return this._count}get numerOfChunk(){return this._numerOfChunk}get minimumChunkSize(){return this._minimumChunkSize}set minimumChunkSize(t){this._minimumChunkSize=t,this.calculateChunkSize()}get chunkSize(){return this._chunkSize}calculateChunkSize(){let t=this._count/this._numerOfChunk;t<this._minimumChunkSize&&(t=Math.min(this._minimumChunkSize,this._count)),this._chunkSize=t<1?this._count:Math.floor(t)}async scheduleTask(t){await ji(),await t()}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let n=0;const r=async()=>{const s=n,a=Math.min(n+this._chunkSize,this._count);await t(s,a),n=a,n<this._count&&await this.scheduleTask(r)};await r(),await(e==null?void 0:e())}}class qf extends Dl{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}async processEntities(t,e,n,r,s){let a=t.tables.blockTable.modelSpace.newIterator().toArray();const o=a.length,c=new $f(o,100-r.value,n);this.config.convertByEntityType&&(a=this.groupAndFlattenByType(a));const l=e.tables.blockTable.modelSpace;await c.processChunk(async(h,u)=>{let d=[],g=h<u?a[h].type:"";for(let f=h;f<u;f++){const p=a[f];this.config.convertByEntityType&&p.type!==g&&(this.triggerEvents(l,d),d=[],g=p.type),d.push(p)}if(this.triggerEvents(l,d),s){let f=r.value+u/o*(100-r.value);f>100&&(f=100),await s(f,"ENTITY","IN-PROGRESS")}})}processBlocks(){const t=this._database.tables.blockTable.newIterator();for(const e of t){const n=e.newIterator().toArray();this.triggerEvents(e,n)}}processHeader(){}processClasses(){}processBlockTables(){}processObjects(){const t=this._database.objects.layout.newIterator();for(const a of t)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.layoutName});const e=this._database.objects.imageDefinition.newIterator();for(const a of e)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const n=this._database.objects.mleaderStyle.newIterator();for(const a of n)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const r=this._database.objects.layerFilter.newIterator();for(const a of r)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const s=this._database.objects.layerIndex.newIterator();for(const a of s)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId})}processViewports(){}processLayers(){this._database.tables.layerTable.newIterator().toArray().forEach(e=>{this._database.events.layerAppended.dispatch({database:this._database,layer:e})})}processLineTypes(){}processTextStyles(){}processDimStyles(){}groupAndFlattenByType(t){const e={},n=[];for(const r of t)e[r.type]||(e[r.type]=[],n.push(r.type)),e[r.type].push(r);return n.flatMap(r=>e[r])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}var Kf=(i=>(i[i.Center=0]="Center",i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.OverFirst=3]="OverFirst",i[i.OverSecond=4]="OverSecond",i))(Kf||{}),vn=(i=>(i[i.Center=0]="Center",i[i.Above=1]="Above",i[i.Outside=2]="Outside",i[i.JIS=3]="JIS",i[i.Below=4]="Below",i))(vn||{}),na=(i=>(i[i.Feet=0]="Feet",i[i.None=1]="None",i[i.Inch=2]="Inch",i[i.FeetAndInch=3]="FeetAndInch",i[i.Leading=4]="Leading",i[i.Trailing=8]="Trailing",i[i.LeadingAndTrailing=12]="LeadingAndTrailing",i))(na||{}),ci=(i=>(i[i.None=0]="None",i[i.Leading=1]="Leading",i[i.Trailing=2]="Trailing",i[i.LeadingAndTrailing=3]="LeadingAndTrailing",i))(ci||{}),Zf=(i=>(i[i.Bottom=0]="Bottom",i[i.Middle=1]="Middle",i[i.Top=2]="Top",i))(Zf||{});const Ua=class Ua extends cn{constructor(t,e){t=t||{},ge(t,Ua.DEFAULT_DIM_VALUES),super(t,e)}get dimpost(){return this.getAttr("dimpost")}set dimpost(t){this.setAttr("dimpost",t)}get dimapost(){return this.getAttr("dimapost")}set dimapost(t){this.setAttr("dimapost",t)}get dimscale(){return this.getAttr("dimscale")}set dimscale(t){this.setAttr("dimscale",t)}get annotative(){return ve(this)}set annotative(t){pe(this,t)}get dimasz(){return this.getAttr("dimasz")}set dimasz(t){this.setAttr("dimasz",t)}get dimexo(){return this.getAttr("dimexo")}set dimexo(t){this.setAttr("dimexo",t)}get dimdli(){return this.getAttr("dimdli")}set dimdli(t){this.setAttr("dimdli",t)}get dimexe(){return this.getAttr("dimexe")}set dimexe(t){this.setAttr("dimexe",t)}get dimrnd(){return this.getAttr("dimrnd")}set dimrnd(t){this.setAttr("dimrnd",t)}get dimdle(){return this.getAttr("dimdle")}set dimdle(t){this.setAttr("dimdle",t)}get dimtp(){return this.getAttr("dimtp")}set dimtp(t){this.setAttr("dimtp",t)}get dimtm(){return this.getAttr("dimtm")}set dimtm(t){this.setAttr("dimtm",t)}get dimtxt(){return this.getAttr("dimtxt")}set dimtxt(t){this.setAttr("dimtxt",t)}get dimcen(){return this.getAttr("dimcen")}set dimcen(t){this.setAttr("dimcen",t)}get dimtsz(){return this.getAttr("dimtsz")}set dimtsz(t){this.setAttr("dimtsz",t)}get dimaltf(){return this.getAttr("dimaltf")}set dimaltf(t){this.setAttr("dimaltf",t)}get dimlfac(){return this.getAttr("dimlfac")}set dimlfac(t){this.setAttr("dimlfac",t)}get dimtvp(){return this.getAttr("dimtvp")}set dimtvp(t){this.setAttr("dimtvp",t)}get dimtfac(){return this.getAttr("dimtfac")}set dimtfac(t){this.setAttr("dimtfac",t)}get dimgap(){return this.getAttr("dimgap")}set dimgap(t){this.setAttr("dimgap",t)}get dimtfill(){return this.getAttr("dimtfill")}set dimtfill(t){this.setAttr("dimtfill",t)}get dimtfillclr(){return this.getAttr("dimtfillclr")}set dimtfillclr(t){this.setAttr("dimtfillclr",t)}get dimaltrnd(){return this.getAttr("dimaltrnd")}set dimaltrnd(t){this.setAttr("dimaltrnd",t)}get dimtol(){return this.getAttr("dimtol")}set dimtol(t){this.setAttr("dimtol",t)}get dimlim(){return this.getAttr("dimlim")}set dimlim(t){this.setAttr("dimlim",t)}get dimtih(){return this.getAttr("dimtih")}set dimtih(t){this.setAttr("dimtih",t)}get dimtoh(){return this.getAttr("dimtoh")}set dimtoh(t){this.setAttr("dimtoh",t)}get dimtxtdirection(){return this.getAttr("dimtxtdirection")}set dimtxtdirection(t){this.setAttr("dimtxtdirection",t)}get dimse1(){return this.getAttr("dimse1")}set dimse1(t){this.setAttr("dimse1",t)}get dimse2(){return this.getAttr("dimse2")}set dimse2(t){this.setAttr("dimse2",t)}get dimtad(){return this.getAttr("dimtad")}set dimtad(t){this.setAttr("dimtad",t)}get dimzin(){return this.getAttr("dimzin")}set dimzin(t){this.setAttr("dimzin",t)}get dimazin(){return this.getAttr("dimazin")}set dimazin(t){this.setAttr("dimazin",t)}get dimalt(){return this.getAttr("dimalt")}set dimalt(t){this.setAttr("dimalt",t)}get dimaltd(){return this.getAttr("dimaltd")}set dimaltd(t){this.setAttr("dimaltd",t)}get dimtofl(){return this.getAttr("dimtofl")}set dimtofl(t){this.setAttr("dimtofl",t)}get dimsah(){return this.getAttr("dimsah")}set dimsah(t){this.setAttr("dimsah",t)}get dimtix(){return this.getAttr("dimtix")}set dimtix(t){this.setAttr("dimtix",t)}get dimsoxd(){return this.getAttr("dimsoxd")}set dimsoxd(t){this.setAttr("dimsoxd",t)}get dimclrd(){return this.getAttr("dimclrd")}set dimclrd(t){this.setAttr("dimclrd",t)}get dimclre(){return this.getAttr("dimclre")}set dimclre(t){this.setAttr("dimclre",t)}get dimclrt(){return this.getAttr("dimclrt")}set dimclrt(t){this.setAttr("dimclrt",t)}get dimadec(){return this.getAttr("dimadec")}set dimadec(t){this.setAttr("dimadec",t)}get dimunit(){return this.getAttr("dimunit")}set dimunit(t){this.setAttr("dimunit",t)}get dimdec(){return this.getAttr("dimdec")}set dimdec(t){this.setAttr("dimdec",t)}get dimtdec(){return this.getAttr("dimtdec")}set dimtdec(t){this.setAttr("dimtdec",t)}get dimaltu(){return this.getAttr("dimaltu")}set dimaltu(t){this.setAttr("dimaltu",t)}get dimalttd(){return this.getAttr("dimalttd")}set dimalttd(t){this.setAttr("dimalttd",t)}get dimaunit(){return this.getAttr("dimaunit")}set dimaunit(t){this.setAttr("dimaunit",t)}get dimfrac(){return this.getAttr("dimfrac")}set dimfrac(t){this.setAttr("dimfrac",t)}get dimlunit(){return this.getAttr("dimlunit")}set dimlunit(t){this.setAttr("dimlunit",t)}get dimdsep(){return this.getAttr("dimdsep")}set dimdsep(t){this.setAttr("dimdsep",t)}get dimtmove(){return this.getAttr("dimtmove")}set dimtmove(t){this.setAttr("dimtmove",t)}get dimjust(){return this.getAttr("dimjust")}set dimjust(t){this.setAttr("dimjust",t)}get dimsd1(){return this.getAttr("dimsd1")}set dimsd1(t){this.setAttr("dimsd1",t)}get dimsd2(){return this.getAttr("dimsd2")}set dimsd2(t){this.setAttr("dimsd2",t)}get dimtolj(){return this.getAttr("dimtolj")}set dimtolj(t){this.setAttr("dimtolj",t)}get dimtzin(){return this.getAttr("dimtzin")}set dimtzin(t){this.setAttr("dimtzin",t)}get dimaltz(){return this.getAttr("dimaltz")}set dimaltz(t){this.setAttr("dimaltz",t)}get dimalttz(){return this.getAttr("dimalttz")}set dimalttz(t){this.setAttr("dimalttz",t)}get dimfit(){return this.getAttr("dimfit")}set dimfit(t){this.setAttr("dimfit",t)}get dimupt(){return this.getAttr("dimupt")}set dimupt(t){this.setAttr("dimupt",t)}get dimatfit(){return this.getAttr("dimatfit")}set dimatfit(t){this.setAttr("dimatfit",t)}get dimtxsty(){return this.getAttr("dimtxsty")}set dimtxsty(t){this.setAttr("dimtxsty",t)}get dimldrblk(){return this.getAttr("dimldrblk")}set dimldrblk(t){this.setAttr("dimldrblk",t)}get dimblk(){return this.getAttr("dimblk")}set dimblk(t){this.setAttr("dimblk",t)}get dimblk1(){return this.getAttr("dimblk1")}set dimblk1(t){this.setAttr("dimblk1",t)}get dimblk2(){return this.getAttr("dimblk2")}set dimblk2(t){this.setAttr("dimblk2",t)}get dimlwd(){return this.getAttr("dimlwd")}set dimlwd(t){this.setAttr("dimlwd",t)}get dimlwe(){return this.getAttr("dimlwe")}set dimlwe(t){this.setAttr("dimlwe",t)}dxfOut(...t){const[e,n=!1]=t;return e.writeHandle(105,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),n&&this.dxfOutXData(e),this}dxfOutFields(t){super.dxfOutFields(t);const e=this.database.tables.textStyleTable.getAt(this.dimtxsty),n=this.database.tables.blockTable.getAt(this.dimldrblk),r=this.database.tables.blockTable.getAt(this.dimblk),s=this.database.tables.blockTable.getAt(this.dimblk1),a=this.database.tables.blockTable.getAt(this.dimblk2);return t.writeSubclassMarker("AcDbDimStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),t.writeString(3,this.dimpost),t.writeString(4,this.dimapost),t.writeDouble(40,this.dimscale),t.writeDouble(41,this.dimasz),t.writeDouble(42,this.dimexo),t.writeDouble(43,this.dimdli),t.writeDouble(44,this.dimexe),t.writeDouble(140,this.dimtxt),t.writeDouble(147,this.dimgap),t.writeInt16(69,this.dimtfill),t.writeInt16(70,this.dimtfillclr),t.writeInt16(170,this.dimalt),t.writeInt16(171,this.dimtol),t.writeInt16(172,this.dimlim),t.writeInt16(173,this.dimtih),t.writeInt16(174,this.dimtoh),t.writeInt16(295,this.dimtxtdirection),t.writeObjectId(340,e==null?void 0:e.objectId),t.writeObjectId(341,n==null?void 0:n.objectId),t.writeObjectId(342,r==null?void 0:r.objectId),t.writeObjectId(343,s==null?void 0:s.objectId),t.writeObjectId(344,a==null?void 0:a.objectId),t.writeInt16(371,this.dimlwd),t.writeInt16(372,this.dimlwe),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbDimStyleTableRecord");const e=s=>s===0?0:1;let n=-1,r=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code);if(a===100){t.pushBackItem(s);break}const o=Number(s.value);switch(a){case 2:this.name=String(s.value);break;case 70:r||n===69?this.dimtfillclr=o:r=!0;break;case 69:this.dimtfill=o===1||o===2?o:0;break;case 3:this.dimpost=String(s.value);break;case 4:this.dimapost=String(s.value);break;case 5:this.dimblk=String(s.value);break;case 6:this.dimblk1=String(s.value);break;case 7:this.dimblk2=String(s.value);break;case 40:this.dimscale=o;break;case 41:this.dimasz=o;break;case 42:this.dimexo=o;break;case 43:this.dimdli=o;break;case 44:this.dimexe=o;break;case 45:this.dimrnd=o;break;case 46:this.dimdle=o;break;case 47:this.dimtp=o;break;case 48:this.dimtm=o;break;case 140:this.dimtxt=o;break;case 141:this.dimcen=o;break;case 142:this.dimtsz=o;break;case 143:this.dimaltf=o;break;case 144:this.dimlfac=o;break;case 145:this.dimtvp=o;break;case 146:this.dimtfac=o;break;case 147:this.dimgap=o;break;case 148:this.dimaltrnd=o;break;case 71:this.dimtol=e(o);break;case 72:this.dimlim=e(o);break;case 73:this.dimtih=e(o);break;case 74:this.dimtoh=e(o);break;case 75:this.dimse1=e(o);break;case 76:this.dimse2=e(o);break;case 77:this.dimtad=o;break;case 78:this.dimzin=o;break;case 79:this.dimazin=o;break;case 170:this.dimalt=e(o);break;case 171:this.dimaltd=o;break;case 172:this.dimtofl=e(o);break;case 173:this.dimsah=e(o);break;case 174:this.dimtix=e(o);break;case 175:this.dimsoxd=e(o);break;case 176:this.dimclrd=o;break;case 177:this.dimclre=o;break;case 178:this.dimclrt=o;break;case 179:this.dimadec=o;break;case 270:this.dimunit=o;break;case 271:this.dimdec=o;break;case 272:this.dimtdec=o;break;case 273:this.dimaltu=o;break;case 274:this.dimalttd=o;break;case 275:this.dimaunit=o;break;case 276:this.dimfrac=o;break;case 277:this.dimlunit=o;break;case 278:this.dimdsep=typeof s.value=="string"?s.value:String.fromCharCode(o||46);break;case 279:this.dimtmove=o;break;case 280:this.dimjust=o;break;case 281:this.dimsd1=e(o);break;case 282:this.dimsd2=e(o);break;case 283:this.dimtolj=o;break;case 284:this.dimtzin=o;break;case 285:this.dimaltz=o;break;case 286:this.dimalttz=o;break;case 287:this.dimfit=o;break;case 288:this.dimupt=e(o);break;case 289:this.dimatfit=o;break;case 294:case 295:this.dimtxtdirection=e(o);break;case 340:this.dimtxsty=String(s.value);break;case 341:this.dimldrblk=String(s.value);break;case 342:this.dimblk=String(s.value);break;case 343:this.dimblk1=String(s.value);break;case 344:this.dimblk2=String(s.value);break;case 371:this.dimlwd=o;break;case 372:this.dimlwe=o;break}n=a}return this}};Ua.DEFAULT_DIM_VALUES={name:"",dimpost:"",dimapost:"",dimscale:1,dimasz:2.5,dimexo:.625,dimdli:.38,dimexe:.18,dimrnd:0,dimdle:0,dimtp:0,dimtm:0,dimtxt:2.5,dimcen:2.5,dimtsz:0,dimaltf:0,dimlfac:1,dimtvp:0,dimtfac:1,dimgap:1,dimtfill:0,dimtfillclr:0,dimaltrnd:0,dimtol:0,dimlim:0,dimtih:0,dimtoh:0,dimtxtdirection:0,dimse1:0,dimse2:0,dimtad:0,dimzin:0,dimazin:0,dimalt:0,dimaltd:2,dimtofl:0,dimsah:0,dimtix:0,dimsoxd:0,dimclrd:0,dimclre:0,dimclrt:0,dimadec:0,dimunit:2,dimdec:4,dimtdec:4,dimaltu:2,dimalttd:2,dimaunit:0,dimfrac:0,dimlunit:2,dimdsep:".",dimtmove:0,dimjust:0,dimsd1:0,dimsd2:0,dimtolj:0,dimtzin:0,dimaltz:0,dimalttz:0,dimfit:0,dimupt:0,dimatfit:3,dimtxsty:gt,dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let Qt=Ua;function Qf(){return{color:new U,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new At,linetype:"Continuous",lineWeight:1,materialId:-1}}const Dx=["name",...Object.keys(Qf())];class Wr extends cn{constructor(t,e){t=t||{},ge(t,Qf()),super(t,e)}get color(){return this.getAttr("color")}set color(t){this.setAttr("color",t.clone())}get description(){return this.getAttr("description")}set description(t){this.setAttr("description",t)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get isFrozen(){return(this.standardFlags&1)==1}set isFrozen(t){const e=t?1:0;this.standardFlags=this.standardFlags|e}get isHidden(){return this.getAttr("isHidden")}set isHidden(t){this.setAttr("isHidden",t)}get isInUse(){return this.getAttr("isInUse")}set isInUse(t){this.setAttr("isInUse",t)}get isLocked(){return(this.standardFlags&4)==4}set isLocked(t){const e=t?4:0;this.standardFlags=this.standardFlags|e}get isOff(){return this.getAttr("isOff")}set isOff(t){this.setAttr("isOff",t)}get isPlottable(){return this.getAttr("isPlottable")}set isPlottable(t){this.setAttr("isPlottable",t)}get transparency(){return this.getAttr("transparency")}set transparency(t){this.setAttr("transparency",t.clone())}get linetype(){return this.getAttr("linetype")}set linetype(t){this.setAttr("linetype",t)}get lineStyle(){var e;const t=(e=this.database)==null?void 0:e.tables.linetypeTable.getAt(this.linetype);if(t)return{type:"UserSpecified",...t.linetype}}get lineWeight(){return this.getAttr("lineWeight")}set lineWeight(t){this.setAttr("lineWeight",t)}get materialId(){return this.getAttr("materialId")}set materialId(t){this.setAttr("materialId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeCmColor(this.color),t.writeString(6,this.linetype||"Continuous"),t.writeInt16(290,this.isPlottable?1:0),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency),this.description&&t.writeString(4,this.description),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLayerTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=Number(e.value);break;case 62:{const r=Number(e.value);this.isOff=r<0,this.color.colorIndex=Math.abs(r);break}case 420:this.color.setRGBValue(Number(e.value));break;case 6:this.linetype=String(e.value);break;case 290:this.isPlottable=Number(e.value)!==0;break;case 370:this.lineWeight=Number(e.value);break;case 440:this.transparency=At.deserialize(Number(e.value));break;case 4:this.description=String(e.value);break}}return this}}const Rx=1,Bo=2,Bx=4;class An extends cn{constructor(t,e){t=t||{},ge(t,{standardFlag:0,description:"",totalPatternLength:0}),super(t,e)}get numDashes(){const t=this.getAttrWithoutException("pattern");return t?t.length:0}get patternLength(){return this.getAttr("totalPatternLength")}get comments(){return this.getAttr("description")}get linetype(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),description:this.getAttr("description"),totalPatternLength:this.getAttr("totalPatternLength"),pattern:this.getAttrWithoutException("pattern")}}dashLengthAt(t){if(t<0||t>=this.numDashes)throw new Error('Index must be greater than or equal to zero, but less than the value of property "numDashes".');return this.getAttr("pattern")[t].elementLength}toPreviewSvgString(t){const e=Math.max((t==null?void 0:t.width)??220,1),n=Math.max((t==null?void 0:t.height)??36,1),r=Math.min(Math.max((t==null?void 0:t.padding)??8,0),Math.floor(e/2)),s=Math.max((t==null?void 0:t.strokeWidth)??2,.5),a=(t==null?void 0:t.stroke)??"currentColor",o=this.escapeSvgAttribute(a),c=this.escapeSvgAttribute((t==null?void 0:t.textFill)??a),l=this.escapeSvgAttribute((t==null?void 0:t.fontFamily)??"sans-serif"),h=n/2,u=r,d=Math.max(e-r,u+1),g=d-u,f=this.getAttrWithoutException("pattern")??[];if(f.length===0||this.patternLength<=0||!f.some(F=>F.elementLength!==0))return this.buildSvgString({width:e,height:n,stroke:o,strokeWidth:s,textFill:c,fontFamily:l,lineSegments:[[u,d]],dots:[],texts:[],y:h});const p=f.some(F=>this.isComplexPatternElement(F)&&(F.elementTypeFlag&Bo)!==0),m=Math.max((t==null?void 0:t.repeats)??(p?2:4),1),y=p?Math.min(Math.max(n*.55,Math.min(8,n*.85)),n*.8):0,b=Math.max(s*2,4),_=this.buildPreviewSegments(f,y,b),w=g/(this.patternLength*m),P=.5,S=Math.max(s*2,2),v=_.map(F=>F.kind==="dot"?S:F.kind==="text"?Math.max(F.units*w,F.minPx):Math.max(F.units*w,F.kind==="dash"?P:0)),k=v.reduce((F,$)=>F+$,0),L=k>0?g/(k*m):1,C=v.map(F=>F*L),N=[],D=[],tt=[];let G=u;for(;G<d-1e-6;){for(let F=0;F<_.length&&!(G>=d);F++){const $=_[F],T=C[F],W=Math.min(G+T,d);if($.kind==="dash"&&W>G)N.push([G,W]);else if($.kind==="dot")D.push(G);else if($.kind==="text"&&$.label.trim().length>0){const st=(G+W)*.5;tt.push({x:st,y:h,text:$.label,fontSize:Math.min($.fontSize*L,n*.8),rotationDeg:$.rotationDeg})}G=W}if(k<=0)break}return this.buildSvgString({width:e,height:n,stroke:o,strokeWidth:s,textFill:c,fontFamily:l,lineSegments:N,dots:D,texts:tt,y:h})}buildPreviewSegments(t,e,n){const r=[],s=new Set;for(let a=0;a<t.length;a++){if(s.has(a))continue;const o=t[a];if(this.isComplexPatternElement(o)){let c=0;for(;r.length>0&&r[r.length-1].kind==="gap";){const d=r.pop();c+=d.units}let l=c+Math.abs(o.elementLength);for(let d=a+1;d<t.length;d++){const g=t[d];if(this.isComplexPatternElement(g)||g.elementLength>=0)break;l+=Math.abs(g.elementLength),s.add(d)}const h=(o.elementTypeFlag&Bo)!==0,u=h?this.resolveEmbeddedText(o.text):"";if(h&&u.trim().length>0){const d=this.estimateTextWidthPx(u,e)+n;r.push({kind:"text",units:Math.max(l,1e-6),minPx:d,label:u,fontSize:e,rotationDeg:this.previewTextRotationDeg(o)})}else l>0&&r.push({kind:"gap",units:l});continue}o.elementLength===0?r.push({kind:"dot"}):o.elementLength>0?r.push({kind:"dash",units:o.elementLength}):r.push({kind:"gap",units:Math.abs(o.elementLength)})}return r}estimateTextWidthPx(t,e){let n=0;for(const r of t)r===" "?n+=.33:/[iIlj1.'|]/.test(r)?n+=.35:/[mwMW@%]/.test(r)?n+=.85:n+=.62;return Math.max(n*e,e*.5)}isComplexPatternElement(t){const e=t.elementTypeFlag??0;return(e&Bo)!==0?(t.text??"").length>0:(e&Bx)!==0?t.shapeNumber!=null&&t.shapeNumber!==0:!1}resolveEmbeddedText(t){var o,c;const e=t??"";if(e.trim().length>0)return this.decodeAutoCadTextEscapes(e);const n=(this.comments??"").trim();if(!n)return this.decodeAutoCadTextEscapes(e);const r=(o=n.split(/\s+-\s+/)[0])==null?void 0:o.trim();if(r&&r!==n)return this.decodeAutoCadTextEscapes(r);const s=n.match(/-{2,}\s*([^-]+?)\s*-{2,}/);if((c=s==null?void 0:s[1])!=null&&c.trim())return this.decodeAutoCadTextEscapes(s[1].trim());const a=(this.name??"").trim();return a&&n.length>a.length+2?this.decodeAutoCadTextEscapes(a):this.decodeAutoCadTextEscapes(r||e)}decodeAutoCadTextEscapes(t){return t.replace(/%%(\d{1,3}|[cCdDpP%])/g,(e,n)=>{if(n==="%")return"%";if(n==="c"||n==="C")return"Ø";if(n==="d"||n==="D")return"°";if(n==="p"||n==="P")return"±";const r=Number.parseInt(n,10);return Number.isFinite(r)&&r>=0&&r<=255?String.fromCharCode(r):`%%${n}`})}previewTextRotationDeg(t){const e=t.rotation??0;return(((t.elementTypeFlag??0)&Rx)!==0?e:this.uprightLinetypeAngle(e))*180/Math.PI}uprightLinetypeAngle(t){const e=Math.PI*2;let n=((t+Math.PI)%e+e)%e-Math.PI;return(n>Math.PI/2||n<-Math.PI/2)&&(n+=Math.PI,n>Math.PI&&(n-=e)),n}buildSvgString(t){const{width:e,height:n,stroke:r,strokeWidth:s,textFill:a,fontFamily:o,lineSegments:c,dots:l,texts:h,y:u}=t,d=c.map(([p,m])=>`<line x1="${p.toFixed(2)}" y1="${u.toFixed(2)}" x2="${m.toFixed(2)}" y2="${u.toFixed(2)}" stroke="${r}" stroke-width="${s.toFixed(2)}" stroke-linecap="round" />`).join(""),g=l.map(p=>`<circle cx="${p.toFixed(2)}" cy="${u.toFixed(2)}" r="${(s/2).toFixed(2)}" fill="${r}" />`).join(""),f=h.map(p=>{const m=Math.abs(p.rotationDeg)>1e-6?` transform="rotate(${p.rotationDeg.toFixed(2)} ${p.x.toFixed(2)} ${p.y.toFixed(2)})"`:"";return`<text x="${p.x.toFixed(2)}" y="${p.y.toFixed(2)}" fill="${a}" font-family="${o}" font-size="${p.fontSize.toFixed(2)}" text-anchor="middle" dominant-baseline="middle"${m}>${this.escapeSvgText(p.text)}</text>`}).join("");return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${n}" viewBox="0 0 ${e} ${n}" role="img" aria-label="${this.escapeSvgAttribute(this.name)} linetype preview">${d}${g}${f}</svg>`}escapeSvgAttribute(t){return t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;")}escapeSvgText(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLinetypeTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeString(3,this.comments),t.writeInt16(72,65),t.writeInt16(73,this.numDashes),t.writeDouble(40,this.patternLength);for(const e of this.getAttrWithoutException("pattern")??[])t.writeDouble(49,e.elementLength),t.writeInt16(74,e.elementTypeFlag),e.elementTypeFlag!==0&&(e.shapeNumber!=null&&t.writeInt16(75,e.shapeNumber),e.styleObjectId&&t.writeObjectId(340,e.styleObjectId),e.scale!=null&&t.writeDouble(46,e.scale),e.rotation!=null&&t.writeDouble(50,e.rotation),e.offsetX!=null&&t.writeDouble(44,e.offsetX),e.offsetY!=null&&t.writeDouble(45,e.offsetY),e.text&&t.writeString(9,e.text));return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLinetypeTableRecord");const e=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}switch(r){case 2:this.name=String(n.value);break;case 70:this.setAttr("standardFlag",Number(n.value));break;case 3:this.setAttr("description",String(n.value));break;case 72:break;case 73:break;case 40:this.setAttr("totalPatternLength",Number(n.value));break;case 49:e.push({elementLength:Number(n.value),elementTypeFlag:0});break;case 74:e.length>0&&(e[e.length-1].elementTypeFlag=Number(n.value));break;case 75:e.length>0&&(e[e.length-1].shapeNumber=Number(n.value));break;case 340:e.length>0&&(e[e.length-1].styleObjectId=String(n.value));break;case 46:e.length>0&&(e[e.length-1].scale=Number(n.value));break;case 50:e.length>0&&(e[e.length-1].rotation=Number(n.value));break;case 44:e.length>0&&(e[e.length-1].offsetX=Number(n.value));break;case 45:e.length>0&&(e[e.length-1].offsetY=Number(n.value));break;case 9:e.length>0&&(e[e.length-1].text=String(n.value));break}}return this.setAttr("pattern",e),this}}class ia extends cn{constructor(t){typeof t=="string"&&(t={name:t}),super(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRegAppTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbRegAppTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break}}return this}}class uo extends cn{constructor(t,e){t=t||{},ge(t,{standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:0,font:"",bigFont:""}),super(t,e),this.setAttr("font",this.getFileNameWithoutExtension(this.getAttr("font")||this.getAttrWithoutException("extendedFont")||this.name))}get obliquingAngle(){return this.getAttr("obliqueAngle")}set obliquingAngle(t){this.setAttr("obliqueAngle",t)}get annotative(){return ve(this)}set annotative(t){pe(this,t)}get priorSize(){return this.getAttr("lastHeight")}set priorSize(t){this.setAttr("lastHeight",t)}get textSize(){return this.getAttr("fixedTextHeight")}set textSize(t){this.setAttr("fixedTextHeight",t)}get xScale(){return this.getAttr("widthFactor")}set xScale(t){this.setAttr("widthFactor",t)}get isVertical(){return(this.getAttr("standardFlag")&4)===4}set isVertical(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|4:e&-5)}get isShapeFile(){return(this.getAttr("standardFlag")&1)===1}set isShapeFile(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|1:e&-2)}get fileName(){return this.getAttr("font")}set fileName(t){this.setAttr("font",t)}get bigFontFileName(){return this.getAttr("bigFont")}set bigFontFileName(t){this.setAttr("bigFont",t)}get textStyle(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),fixedTextHeight:this.getAttr("fixedTextHeight"),widthFactor:this.getAttr("widthFactor"),obliqueAngle:this.getAttr("obliqueAngle"),textGenerationFlag:this.getAttr("textGenerationFlag"),lastHeight:this.getAttr("lastHeight"),font:this.getAttr("font"),bigFont:this.getAttr("bigFont"),extendedFont:this.getAttrWithoutException("extendedFont")}}getFileNameWithoutExtension(t){const e=t.split("/").pop();if(e){const n=e.lastIndexOf(".");return n===-1?e:e.substring(0,n)}return t}get dxfFontFileName(){var e;const t=((e=this.fileName)==null?void 0:e.trim())??"";return!t||!this.isShapeFile||/\.[^./\\]+$/i.test(t)?t:`${t}.shx`}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTextStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeDouble(40,this.textSize),t.writeDouble(41,this.xScale),t.writeAngle(50,this.obliquingAngle),t.writeInt16(71,this.getAttr("textGenerationFlag")),t.writeDouble(42,this.priorSize),t.writeString(3,this.dxfFontFileName),t.writeString(4,this.bigFontFileName),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbTextStyleTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break;case 70:this.setAttr("standardFlag",Number(e.value));break;case 40:this.textSize=Number(e.value);break;case 41:this.xScale=Number(e.value);break;case 50:this.obliquingAngle=Number(e.value);break;case 71:this.setAttr("textGenerationFlag",Number(e.value));break;case 42:this.priorSize=Number(e.value);break;case 3:this.fileName=this.getFileNameWithoutExtension(String(e.value));break;case 4:this.bigFontFileName=String(e.value);break}}return this}dxfInXData(t){super.dxfInXData(t),this.applyExtendedFontFromXData()}applyExtendedFontFromXData(){const t=this.getXData("ACAD");if(t){for(const n of t)if(Number(n.code)===1e3&&n.value!=null){const r=String(n.value).trim();if(r){this.setAttr("extendedFont",r);break}}}if(!(this.getAttr("font")??"").trim()){const n=this.getAttrWithoutException("extendedFont")||this.name||"";n&&(this.fileName=this.getFileNameWithoutExtension(n))}}}class Jf extends cn{constructor(t,e){t=t||{},ge(t,{standardFlags:0,origin:new x(0,0,0),xAxis:new x(1,0,0),yAxis:new x(0,1,0),isOrthographic:!1,elevation:0}),super(t,e)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get origin(){return this.getAttr("origin")}set origin(t){this.setAttr("origin",t.clone())}get xAxis(){return this.getAttr("xAxis")}set xAxis(t){this.setAttr("xAxis",t.clone())}get yAxis(){return this.getAttr("yAxis")}set yAxis(t){this.setAttr("yAxis",t.clone())}get isOrthographic(){return this.getAttr("isOrthographic")}set isOrthographic(t){this.setAttr("isOrthographic",t)}get elevation(){return this.getAttr("elevation")}set elevation(t){this.setAttr("elevation",t)}get baseUcsId(){return this.getAttrWithoutException("baseUcsId")}set baseUcsId(t){this.setAttr("baseUcsId",t)}get orthographicType(){return this.getAttrWithoutException("orthographicType")}set orthographicType(t){this.setAttr("orthographicType",t)}get orthographicOrigin(){return this.getAttrWithoutException("orthographicOrigin")}set orthographicOrigin(t){this.setAttr("orthographicOrigin",t==null?void 0:t.clone())}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbUCSTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writePoint3d(10,this.origin),t.writePoint3d(11,this.xAxis),t.writePoint3d(12,this.yAxis),t.writeDouble(146,this.elevation),t.writeInt16(79,this.isOrthographic?1:0),this.isOrthographic&&t.writeObjectId(346,this.baseUcsId),this.orthographicType!=null&&this.orthographicOrigin&&(t.writeInt16(71,this.orthographicType),t.writePoint3d(13,this.orthographicOrigin)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbUCSTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}const r=Number(e.value);switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 10:this.origin.x=r;break;case 20:this.origin.y=r;break;case 30:this.origin.z=r;break;case 11:this.xAxis.x=r;break;case 21:this.xAxis.y=r;break;case 31:this.xAxis.z=r;break;case 12:this.yAxis.x=r;break;case 22:this.yAxis.y=r;break;case 32:this.yAxis.z=r;break;case 79:this.isOrthographic=r!==0;break;case 146:this.elevation=r;break;case 346:this.baseUcsId=String(e.value);break;case 71:this.orthographicType=r;break;case 13:this.orthographicOrigin=this.orthographicOrigin??new x,this.orthographicOrigin.x=r;break;case 23:this.orthographicOrigin&&(this.orthographicOrigin.y=r);break;case 33:this.orthographicOrigin&&(this.orthographicOrigin.z=r);break}}return this}}const Fx=()=>({center:new M,viewDirectionFromTarget:new x(0,0,1),viewTarget:new x(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:exports.AcGiRenderMode.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new x(0,0,0),ucsXAxis:new x(1,0,0),ucsYAxis:new x(0,1,0),orthographicType:exports.AcGiOrthographicType.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:exports.AcGiDefaultLightingType.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0,aspectRatio:void 0});class Rl extends cn{constructor(t,e){t=t||{},ge(t,{gsView:Fx()}),super(t,e)}get gsView(){return this.getAttr("gsView")}get centerPoint(){return this.gsView.center}set centerPoint(t){this.gsView.center.copy(t)}get viewDirectionFromTarget(){return this.gsView.viewDirectionFromTarget}set viewDirectionFromTarget(t){this.gsView.viewDirectionFromTarget.copy(t)}get viewTarget(){return this.gsView.viewTarget}set viewTarget(t){this.gsView.viewTarget.copy(t)}get viewHeight(){return this.gsView.viewHeight}set viewHeight(t){this.gsView.viewHeight=t}get viewTwistAngle(){return this.gsView.viewTwistAngle}set viewTwistAngle(t){this.gsView.viewTwistAngle=t}get lensLength(){return this.gsView.lensLength}set lensLength(t){this.gsView.lensLength=t}get frontClippingPlane(){return this.gsView.frontClippingPlane}set frontClippingPlane(t){this.gsView.frontClippingPlane=t}get backClippingPlane(){return this.gsView.backClippingPlane}set backClippingPlane(t){this.gsView.backClippingPlane=t}get renderMode(){return this.gsView.renderMode}set renderMode(t){this.gsView.renderMode=t}get viewMode(){return this.gsView.viewMode}set viewMode(t){this.gsView.viewMode=t}get ucsIconSetting(){return this.gsView.ucsIconSetting}set ucsIconSetting(t){this.gsView.ucsIconSetting=t}get ucsOrigin(){return this.gsView.ucsOrigin}set ucsOrigin(t){this.gsView.ucsOrigin.copy(t)}get ucsXAxis(){return this.gsView.ucsXAxis}set ucsXAxis(t){this.gsView.ucsXAxis.copy(t)}get ucsYAxis(){return this.gsView.ucsYAxis}set ucsYAxis(t){this.gsView.ucsYAxis.copy(t)}get orthographicType(){return this.gsView.orthographicType}set orthographicType(t){this.gsView.orthographicType=t}get shadePlotSetting(){return this.gsView.shadePlotSetting}set shadePlotSetting(t){this.gsView.shadePlotSetting=t}get shadePlotObjectId(){return this.gsView.shadePlotObjectId}set shadePlotObjectId(t){this.gsView.shadePlotObjectId=t}get visualStyleObjectId(){return this.gsView.visualStyleObjectId}set visualStyleObjectId(t){this.gsView.visualStyleObjectId=t}get isDefaultLightingOn(){return this.gsView.isDefaultLightingOn}set isDefaultLightingOn(t){this.gsView.isDefaultLightingOn=t}get defaultLightingType(){return this.gsView.defaultLightingType}set defaultLightingType(t){this.gsView.defaultLightingType=t}get brightness(){return this.gsView.brightness}set brightness(t){this.gsView.brightness=t}get contrast(){return this.gsView.contrast}set contrast(t){this.gsView.contrast=t}get ambientColor(){return this.gsView.ambientColor}set ambientColor(t){this.gsView.ambientColor=t}get aspectRatio(){return this.gsView.aspectRatio}set aspectRatio(t){this.gsView.aspectRatio=t}}const Ou=2,Xx=.45,zx=1e5;function Yx(i){var n;const t=i,e=t.aspectRatio??((n=t.gsView)==null?void 0:n.aspectRatio);return Number.isFinite(e)?e:void 0}function jx(i,t){if(Number.isFinite(t)&&t>0)return t;const e=Yx(i);return e!=null&&e>0?e:1}function Vx(i,t){const e=Math.max(i.min.x,t.min.x),n=Math.max(i.min.y,t.min.y),r=Math.min(i.max.x,t.max.x),s=Math.min(i.max.y,t.max.y);return e>=r||n>=s?0:(r-e)*(s-n)}function Nu(i){return{x:(i.min.x+i.max.x)/2,y:(i.min.y+i.max.y)/2}}function Ux(i){if(!i||i.isEmpty())return!1;const t=i.max.x-i.min.x,e=i.max.y-i.min.y;return t>0&&e>0}class Sn extends Rl{static isActiveVportName(t){return t.toLowerCase()===Ei.toLowerCase()}constructor(t,e){t=t||{},ge(t,{circleSides:100,lowerLeftCorner:new M(0,0),upperRightCorner:new M(1,1),snapBase:new M(0,0),snapAngle:0,snapSpacing:new M(0,0),standardFlag:0,gridSpacing:new M,gridMajor:10,ucsElevation:0}),super(t,e)}get circleSides(){return this.getAttr("circleSides")}set circleSides(t){this.setAttr("circleSides",t)}get center(){return this.centerPoint}set center(t){this.centerPoint=t}get lowerLeftCorner(){return this.getAttr("lowerLeftCorner")}set lowerLeftCorner(t){this.getAttr("lowerLeftCorner").copy(t)}get upperRightCorner(){return this.getAttr("upperRightCorner")}set upperRightCorner(t){this.getAttr("upperRightCorner").copy(t)}get snapBase(){return this.getAttr("snapBase")}set snapBase(t){this.getAttr("snapBase").copy(t)}get snapAngle(){return this.getAttr("snapAngle")}set snapAngle(t){this.setAttr("snapAngle",t)}get snapIncrements(){return this.getAttr("snapSpacing")}set snapIncrements(t){this.getAttr("snapSpacing").copy(t)}get gridMajor(){return this.getAttr("gridMajor")}set gridMajor(t){this.setAttr("gridMajor",t)}get gridIncrements(){return this.getAttr("gridSpacing")}set gridIncrements(t){this.getAttr("gridSpacing").copy(t)}get standardFlag(){return this.getAttr("standardFlag")}set standardFlag(t){this.setAttr("standardFlag",t)}get snapEnabled(){return!!(this.standardFlag&256)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}modelViewBox(t){const e=this.centerPoint,n=this.viewHeight;if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(n)||n<=0)return;const r=this.viewTwistAngle;let s=e.x,a=e.y;if(Number.isFinite(r)&&r!==0){const d=Math.cos(r),g=Math.sin(r);s=e.x*d-e.y*g,a=e.x*g+e.y*d}const o=this.viewTarget;o&&Number.isFinite(o.x)&&Number.isFinite(o.y)&&(s+=o.x,a+=o.y);const c=jx(this,t),l=n*c,h=n/2,u=l/2;return new Lt().expandByPoint({x:s-u,y:a-h}).expandByPoint({x:s+u,y:a+h})}static isModelViewBoxUsable(t,e){if(t.isEmpty()||e.isEmpty())return!1;const n=t.max.x-t.min.x,r=t.max.y-t.min.y,s=e.max.x-e.min.x,a=e.max.y-e.min.y;if(n<=0||r<=0||s<=0||a<=0||n>s*Ou||r>a*Ou)return!1;const o=Math.max(s,a)*Xx,c=Nu(t),l=Nu(e);if(Math.hypot(c.x-l.x,c.y-l.y)>o)return!1;const u=n*r,d=Vx(t,e);return!(d<=0||d/u<.25)}resolveModelViewBox(t,e){const n=this.modelViewBox(t);if(!(!n||!Sn.isModelViewBoxStructurallyValid(n))){if(Ux(e)){if(!Sn.isModelViewBoxUsable(n,e))return}else if(!Sn.isModelViewBoxPlausibleWithoutExtents(n))return;return n}}static isModelViewBoxStructurallyValid(t){if(t.isEmpty())return!1;const e=t.max.x-t.min.x,n=t.max.y-t.min.y;return Number.isFinite(e)&&Number.isFinite(n)&&e>0&&n>0}static isModelViewBoxPlausibleWithoutExtents(t){const e=t.max.x-t.min.x,n=t.max.y-t.min.y;return Math.max(e,n)<=zx}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewportTableRecord"),t.writeString(2,this.name),t.writeDouble(40,this.gsView.viewHeight),this.gsView.aspectRatio!=null&&Number.isFinite(this.gsView.aspectRatio)&&t.writeDouble(41,this.gsView.aspectRatio),t.writeDouble(45,this.gsView.viewHeight),t.writePoint2d(10,this.lowerLeftCorner),t.writePoint2d(11,this.upperRightCorner),t.writePoint2d(12,this.center),t.writePoint2d(13,this.snapBase),t.writePoint2d(14,this.snapIncrements),t.writePoint2d(15,this.gridIncrements),t.writeInt16(70,this.standardFlag),t.writeInt16(71,this.circleSides),t.writeDouble(42,this.gsView.lensLength),t.writePoint3d(16,this.gsView.viewDirectionFromTarget),t.writePoint3d(17,this.gsView.viewTarget),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.gsView.viewTwistAngle),t.writeInt16(61,this.gridMajor),t.writeDouble(146,this.ucsElevation),t.writeInt16(170,this.shadePlotSetting),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLightingOn?1:0),t.writeInt16(281,this.backgroundObjectId?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(333,this.shadePlotObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewportTableRecord");const e=[...this.gsView.frozenLayers??[]];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}const s=Number(n.value);switch(r){case 2:this.name=String(n.value);break;case 1:this.gsView.styleSheet=String(n.value);break;case 10:this.lowerLeftCorner.x=s;break;case 20:this.lowerLeftCorner.y=s;break;case 11:this.upperRightCorner.x=s;break;case 21:this.upperRightCorner.y=s;break;case 12:this.center.x=s,this.gsView.center.x=s;break;case 22:this.center.y=s,this.gsView.center.y=s;break;case 13:this.snapBase.x=s;break;case 23:this.snapBase.y=s;break;case 14:this.snapIncrements.x=s;break;case 24:this.snapIncrements.y=s;break;case 15:this.gridIncrements.x=s;break;case 25:this.gridIncrements.y=s;break;case 16:this.gsView.viewDirectionFromTarget.x=s;break;case 26:this.gsView.viewDirectionFromTarget.y=s;break;case 36:this.gsView.viewDirectionFromTarget.z=s;break;case 17:this.gsView.viewTarget.x=s;break;case 27:this.gsView.viewTarget.y=s;break;case 37:this.gsView.viewTarget.z=s;break;case 40:case 45:this.gsView.viewHeight=s;break;case 41:Number.isFinite(s)&&s>0&&(this.gsView.aspectRatio=s);break;case 42:this.gsView.lensLength=s;break;case 43:this.gsView.frontClippingPlane=s;break;case 44:this.gsView.backClippingPlane=s;break;case 50:this.snapAngle=s;break;case 51:this.gsView.viewTwistAngle=s;break;case 61:this.gridMajor=s;break;case 70:this.standardFlag=s;break;case 71:s>=1&&s<=2e4&&(this.circleSides=s),this.gsView.viewMode=s;break;case 72:this.circleSides=s;break;case 74:this.gsView.ucsIconSetting=s;break;case 110:this.gsView.ucsOrigin.x=s;break;case 120:this.gsView.ucsOrigin.y=s;break;case 130:this.gsView.ucsOrigin.z=s;break;case 111:this.gsView.ucsXAxis.x=s;break;case 121:this.gsView.ucsXAxis.y=s;break;case 131:this.gsView.ucsXAxis.z=s;break;case 112:this.gsView.ucsYAxis.x=s;break;case 122:this.gsView.ucsYAxis.y=s;break;case 132:this.gsView.ucsYAxis.z=s;break;case 79:this.gsView.orthographicType=s;break;case 281:this.gsView.renderMode=s;break;case 331:case 441:e.push(String(n.value));break;case 332:this.backgroundObjectId=String(n.value);break;case 146:this.ucsElevation=s;break;case 170:this.shadePlotSetting=s;break;case 282:this.defaultLightingType=s;break;case 292:this.isDefaultLightingOn=s!==0;break;case 333:this.shadePlotObjectId=String(n.value);break;case 348:this.gsView.visualStyleObjectId=String(n.value);break}}return this.gsView.frozenLayers=e,this}}class tp extends Rl{constructor(t,e){t=t||{};const n=t.viewWidth!==void 0;ge(t,{standardFlags:0,ucsAssociated:!1,cameraPlottable:!1,ucsElevation:0}),super(t,e),n||(this.viewWidth=this.viewHeight)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get viewWidth(){return this.getAttr("viewWidth")}set viewWidth(t){this.setAttr("viewWidth",t)}get ucsAssociated(){return this.getAttr("ucsAssociated")}set ucsAssociated(t){this.setAttr("ucsAssociated",t)}get cameraPlottable(){return this.getAttr("cameraPlottable")}set cameraPlottable(t){this.setAttr("cameraPlottable",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}get ucsObjectId(){return this.getAttrWithoutException("ucsObjectId")}set ucsObjectId(t){this.setAttr("ucsObjectId",t)}get ucsBaseObjectId(){return this.getAttrWithoutException("ucsBaseObjectId")}set ucsBaseObjectId(t){this.setAttr("ucsBaseObjectId",t)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get liveSectionObjectId(){return this.getAttrWithoutException("liveSectionObjectId")}set liveSectionObjectId(t){this.setAttr("liveSectionObjectId",t)}get sunObjectId(){return this.getAttrWithoutException("sunObjectId")}set sunObjectId(t){this.setAttr("sunObjectId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeDouble(40,this.gsView.viewHeight),t.writePoint2d(10,this.centerPoint),t.writeDouble(41,this.viewWidth),t.writePoint3d(11,this.gsView.viewDirectionFromTarget),t.writePoint3d(12,this.gsView.viewTarget),t.writeDouble(42,this.gsView.lensLength),t.writeDouble(43,this.gsView.frontClippingPlane),t.writeDouble(44,this.gsView.backClippingPlane),t.writeAngle(50,this.gsView.viewTwistAngle),t.writeInt16(71,this.gsView.viewMode),t.writeInt16(281,this.gsView.renderMode),t.writeInt16(72,this.ucsAssociated?1:0),t.writeInt16(73,this.cameraPlottable?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(334,this.liveSectionObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),t.writeObjectId(361,this.sunObjectId),this.ucsAssociated&&(t.writePoint3d(110,this.gsView.ucsOrigin),t.writePoint3d(111,this.gsView.ucsXAxis),t.writePoint3d(112,this.gsView.ucsYAxis),t.writeInt16(79,this.gsView.orthographicType),t.writeDouble(146,this.ucsElevation),t.writeObjectId(345,this.ucsObjectId),t.writeObjectId(346,this.ucsBaseObjectId)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}const r=Number(e.value);switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 40:this.gsView.viewHeight=r;break;case 10:this.centerPoint.x=r;break;case 20:this.centerPoint.y=r;break;case 41:this.viewWidth=r;break;case 11:this.gsView.viewDirectionFromTarget.x=r;break;case 21:this.gsView.viewDirectionFromTarget.y=r;break;case 31:this.gsView.viewDirectionFromTarget.z=r;break;case 12:this.gsView.viewTarget.x=r;break;case 22:this.gsView.viewTarget.y=r;break;case 32:this.gsView.viewTarget.z=r;break;case 42:this.gsView.lensLength=r;break;case 43:this.gsView.frontClippingPlane=r;break;case 44:this.gsView.backClippingPlane=r;break;case 50:this.gsView.viewTwistAngle=r*Math.PI/180;break;case 71:this.gsView.viewMode=r;break;case 281:this.gsView.renderMode=r;break;case 72:this.ucsAssociated=r!==0;break;case 73:this.cameraPlottable=r!==0;break;case 332:this.backgroundObjectId=String(e.value);break;case 334:this.liveSectionObjectId=String(e.value);break;case 348:this.gsView.visualStyleObjectId=String(e.value);break;case 361:this.sunObjectId=String(e.value);break;case 110:this.gsView.ucsOrigin.x=r;break;case 120:this.gsView.ucsOrigin.y=r;break;case 130:this.gsView.ucsOrigin.z=r;break;case 111:this.gsView.ucsXAxis.x=r;break;case 121:this.gsView.ucsXAxis.y=r;break;case 131:this.gsView.ucsXAxis.z=r;break;case 112:this.gsView.ucsYAxis.x=r;break;case 122:this.gsView.ucsYAxis.y=r;break;case 132:this.gsView.ucsYAxis.z=r;break;case 79:this.gsView.orthographicType=r;break;case 146:this.ucsElevation=r;break;case 345:this.ucsObjectId=String(e.value);break;case 346:this.ucsBaseObjectId=String(e.value);break}}return this}}const Di=192,Ri=193,$i=194,$r=195,Bl=200;function Fo(i){if(i.isByBlock)return Ri<<24>>0;if(i.isByLayer)return Di<<24>>0;const t=i.colorIndex;if(t!=null&&t>0&&t<256)return($r<<24|t&255)>>0;const e=i.RGB;return e!=null?($i<<24|e&16777215)>>0:Ri<<24>>0}function zt(i){const t=new U(exports.AcCmColorMethod.ByBlock);if(!Number.isFinite(i))return t;switch(i>>>24&255){case Di:t.setByLayer();break;case Ri:case Bl:t.setByBlock();break;case $r:t.colorIndex=i&255;break;case $i:t.setRGBValue(i&16777215);break;default:i===256?t.setByLayer():i===0?t.setByBlock():i>0&&i<256&&(t.colorIndex=i);break}return t}function Fl(i){if(i==null)return new U(exports.AcCmColorMethod.ByBlock);if(typeof i=="number")return zt(i);if(typeof i=="object"){const t=i,e=t.method!=null&&t.method!==0?t.method&255:typeof t.rgb=="number"?t.rgb>>>24&255:0;if(typeof t.rgb=="number"&&Number.isFinite(t.rgb)&&e>=Di&&e<=Bl&&(t.rgb>>>24&255)===e)return zt(t.rgb>>0);if(e===Di||t.index===256){const n=new U;return n.setByLayer(),n}if(e===Ri||t.index===0)return new U(exports.AcCmColorMethod.ByBlock);if(e===$i&&typeof t.rgb=="number"){const n=new U;return n.setRGBValue(t.rgb&16777215),n}if(e===$r){const n=typeof t.rgb=="number"?t.rgb&255:(t.index??0)&255;return zt(n)}if(typeof t.index=="number"&&t.index>=0&&t.index<=256)return zt(t.index);if(typeof t.rgb=="number"&&Number.isFinite(t.rgb))return zt(t.rgb>>0)}return new U(exports.AcCmColorMethod.ByBlock)}function Hx(i){const t=Fl(i);if(t.isByBlock)return 0;if(t.isByLayer)return 256;const e=t.colorIndex;if(e!=null&&e>0&&e<256)return e;const n=t.RGB;return typeof n=="number"?($i<<24|n&16777215)>>0:0}const Gx=127;var ep=(i=>(i[i.Extents=1]="Extents",i[i.Circle=2]="Circle",i[i.Circle3P=3]="Circle3P",i[i.CircularArc=4]="CircularArc",i[i.CircularArc3P=5]="CircularArc3P",i[i.Polyline=6]="Polyline",i[i.Polygon=7]="Polygon",i[i.Mesh=8]="Mesh",i[i.Shell=9]="Shell",i[i.Text=10]="Text",i[i.Text2=11]="Text2",i[i.Xline=12]="Xline",i[i.Ray=13]="Ray",i[i.AttributeColor=14]="AttributeColor",i[i.AttributeLayer=16]="AttributeLayer",i[i.AttributeLinetype=18]="AttributeLinetype",i[i.AttributeMarker=19]="AttributeMarker",i[i.AttributeFill=20]="AttributeFill",i[i.AttributeTrueColor=22]="AttributeTrueColor",i[i.AttributeLineweight=23]="AttributeLineweight",i[i.AttributeLtscale=24]="AttributeLtscale",i[i.AttributeThickness=25]="AttributeThickness",i[i.PushMatrix=29]="PushMatrix",i[i.PopMatrix=31]="PopMatrix",i[i.PolylineWithNormals=32]="PolylineWithNormals",i[i.LwPolyline=33]="LwPolyline",i[i.UnicodeText=36]="UnicodeText",i[i.UnicodeText2=38]="UnicodeText2",i[i.EllipticArc=44]="EllipticArc",i))(ep||{});const En=A.Z_AXIS,Wx=529;function $x(i){const t=i>>24&255;return t===$i?{rgb:i&16777215}:t===Di?{colorIndex:256}:t===Ri?{colorIndex:0}:t===$r?{colorIndex:i&255}:{colorIndex:i&255}}function Xo(i){return new A(i.x,i.y,i.z??0)}function zo(i){return new x(i.x,i.y,i.z??0)}function Du(i){return{x:i[0],y:i[1],z:i[2]}}class Ac{constructor(t,e={}){this._index=8,this._colorIndex=256,this._layer="0",this._linetype=Pt,this._lineweight=exports.AcGiLineWeight.ByLineWeightDefault,this._ltscale=1,this._thickness=0,this._fill=!1,this._layers=[],this._linetypes=[],this._matrices=[],this._buffer=t,this._database=e.database,this._dxfversion=e.dxfversion??"AC1015",this._encoding=e.encoding??(this._dxfversion<"AC1024"?"windows-1252":"utf-8"),this._layer=e.defaultLayer??"0",this._database&&(this._database.tables.layerTable.newIterator().toArray().forEach(n=>this._layers.push(n.name)),this._database.tables.linetypeTable.newIterator().toArray().forEach(n=>this._linetypes.push(n.name)))}get extents(){return this._extents}scanExtents(){var n;const t=this._buffer;let e=this._index;for(;e<t.length;){const r=new DataView(t.buffer,t.byteOffset+e,8),s=r.getUint32(0,!0),a=r.getUint32(4,!0);if(s<8)break;if(a===1){const o=t.subarray(e+8,e+s);return this.readExtents(o),((n=this._extents)==null?void 0:n.length)===2?[this._extents[0],this._extents[1]]:void 0}e+=s}}worldDraw(t){const e=[],n=t.subEntityTraits,r={color:n.color.clone(),lineType:n.lineType,lineTypeScale:n.lineTypeScale,lineWeight:n.lineWeight,layer:n.layer,thickness:n.thickness},s=this._buffer;let a=this._index;for(;a<s.length;){const o=new DataView(s.buffer,s.byteOffset+a,8),c=o.getUint32(0,!0),l=o.getUint32(4,!0);if(c<8)break;const h=s.subarray(a+8,a+c);this.dispatchChunk(t,e,l,h),l!==20&&(this._fill=!1),a+=c}if(n.color=r.color,n.lineType=r.lineType,n.lineTypeScale=r.lineTypeScale,n.lineWeight=r.lineWeight,n.layer=r.layer,n.thickness=r.thickness,e.length!==0)return t.group(e)}dispatchChunk(t,e,n,r){switch(n){case 1:this.readExtents(r);break;case 2:this.drawCircle(t,e,r);break;case 3:this.drawCircle3P(t,e,r);break;case 4:this.drawCircularArc(t,e,r);break;case 5:this.drawCircularArc3P(t,e,r);break;case 44:this.drawEllipticArc(t,e,r);break;case 6:this.drawPolyline(t,e,r,!1);break;case 32:this.drawPolyline(t,e,r,!0);break;case 7:this.drawPolygon(t,e,r);break;case 33:this.drawLwPolyline(t,e,r);break;case 9:this.drawShell(t,e,r);break;case 10:this.drawText(t,e,r,!1);break;case 36:this.drawText(t,e,r,!0);break;case 11:this.drawText2(t,e,r,!1);break;case 38:this.drawText2(t,e,r,!0);break;case 12:this.drawXline(t,e,r,!1);break;case 13:this.drawXline(t,e,r,!0);break;case 14:this.readAttributeColor(r);break;case 16:this.readAttributeLayer(r);break;case 18:this.readAttributeLinetype(r);break;case 20:this.readAttributeFill(r);break;case 22:this.readAttributeTrueColor(r);break;case 23:this.readAttributeLineweight(r);break;case 24:this.readAttributeLtscale(r);break;case 25:this.readAttributeThickness(r);break;case 29:this.pushMatrix(r);break;case 31:this.popMatrix();break}}applyTraits(t){const e=t.subEntityTraits;e.layer=this._layer,e.lineTypeScale=this._ltscale,e.thickness=this._thickness,e.lineWeight=this._lineweight,this._rgbColor!=null?e.color=new U(exports.AcCmColorMethod.ByColor,this._rgbColor):this._colorIndex===256?e.color=new U(exports.AcCmColorMethod.ByLayer):this._colorIndex===0?e.color=new U(exports.AcCmColorMethod.ByBlock):this._colorIndex===7?e.color=new U(exports.AcCmColorMethod.ByACI,7):e.color=new U(exports.AcCmColorMethod.ByACI,this._colorIndex),e.lineType={name:this._linetype,type:this.resolveLineStyleType(),standardFlag:0,description:"",totalPatternLength:0}}resolveLineStyleType(){return this._linetype===Pt?"ByLayer":this._linetype===Oe?"ByBlock":"UserSpecified"}transformPoint(t){const e=Array.isArray(t)?Du(t):t,n=zo(e);return this._matrices.length>0&&n.applyMatrix4(this._matrices[this._matrices.length-1]),n}transformVector(t){const e=Array.isArray(t)?Du(t):t,n=Xo(e);return this._matrices.length>0&&n.transformDirection(this._matrices[this._matrices.length-1]),!Number.isFinite(n.lengthSq())||n.lengthSq()<1e-24?En.clone():n.normalize()}pushEntity(t,e){e&&t.push(e)}readExtents(t){const e=new ie(t),n=e.readVertex(),r=e.readVertex();this._extents=[new x(n[0],n[1],n[2]),new x(r[0],r[1],r[2])]}readAttributeColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);this._rgbColor=void 0,this._colorIndex=e>256||e<0?256:e}readAttributeLayer(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e<this._layers.length&&(this._layer=this._layers[e])}readAttributeLinetype(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e+2<this._linetypes.length?this._linetype=this._linetypes[e+2]:e===32766?this._linetype=Oe:this._linetype=Pt}readAttributeFill(t){this._fill=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0)!==0}readAttributeTrueColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0),n=$x(e);this._rgbColor=n.rgb,n.colorIndex!=null&&(this._colorIndex=n.colorIndex)}readAttributeLineweight(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e>Wx?this._lineweight=e-4294967296:this._lineweight=e}readAttributeLtscale(t){this._ltscale=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}readAttributeThickness(t){this._thickness=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}pushMatrix(t){const e=new Float64Array(t.buffer,t.byteOffset,16),n=new X().fromArray(Array.from(e));n.transpose(),this._matrices.push(n)}popMatrix(){this._matrices.length>0&&this._matrices.pop()}loadVertices(t,e){const n=new ie(t);let r=n.readLong();e&&(r+=1);const s=[];for(;r>0;){const[o,c,l]=n.readVertex();s.push(this.transformPoint({x:o,y:c,z:l})),r-=1}let a=En;return e&&s.length>0&&(a=Xo(s.pop())),{vertices:s,normal:a}}drawCircle(t,e,n){const r=new ie(n),s=r.readVertex(),a=r.readFloat(),o=this.transformVector(r.readVertex());let c=zo({x:s[0],y:s[1],z:s[2]});o.equals(En)||(c=qt(c,o)),c=this.transformPoint(c);const l=Ai(o),h=new bt(oe(c,o),a,0,z,o,l);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircle3P(t,e,n){const r=new ie(n),s=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),c=bt.computeCenterPoint(s,a,o);if(!c)return;const l=c.distanceTo(s),h=new bt(c,l,0,z,En);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircularArc(t,e,n){const r=new ie(n),s=r.readVertex(),a=r.readFloat(),o=r.readVertex(),c=r.readVertex(),l=r.readFloat(),h=this.transformVector(o),u=zo({x:s[0],y:s[1],z:s[2]}),d=Xo({x:c[0],y:c[1],z:c[2]});this._matrices.length>0&&d.transformDirection(this._matrices[this._matrices.length-1]);const g=Number.isFinite(d.lengthSq())&&d.lengthSq()>=1e-24?d.normalize():Ai(h),f=0,p=l,m=new bt(this.transformPoint(u),a,f,p,h,g);this.applyTraits(t),this.pushEntity(e,t.circularArc(m))}drawCircularArc3P(t,e,n){const r=new ie(n),s=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),c=bt.computeCenterPoint(s,o,a);if(!c)return;const l=c.distanceTo(s),h=$e(c,s,En),u=$e(c,o,En),d=new bt(c,l,h,u,En);this.applyTraits(t),this.pushEntity(e,t.circularArc(d))}drawEllipticArc(t,e,n){const r=new ie(n),s=this.transformPoint(r.readVertex()),a=this.transformVector(r.readVertex()),o=r.readFloat(),c=r.readFloat(),l=r.readFloat(),h=r.readFloat(),u=r.readFloat(),d=oe({x:Math.cos(u)*o,y:Math.sin(u)*o,z:0},a),g=new xe(s,a,d,o,c,l,h);this.applyTraits(t),this.pushEntity(e,t.ellipticalArc(g))}drawPolyline(t,e,n,r){var a,o;const{vertices:s}=this.loadVertices(n,r);if(s.length!==0){if(s.length===1){this.applyTraits(t);const c=((a=this._database)==null?void 0:a.pdmode)??0,l=((o=this._database)==null?void 0:o.pdsize)??0;this.pushEntity(e,t.point(s[0],{displayMode:c,displaySize:l}));return}this.applyTraits(t),this.pushEntity(e,t.lines(s))}}drawPolygon(t,e,n){const{vertices:r}=this.loadVertices(n,!1);if(r.length<2)return;if(this._fill){const a=new ot(r.map(l=>({x:l.x,y:l.y})),!0),o=new Ye;o.add(a);const c=t.subEntityTraits;c.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},c.drawOrder=-1,this.applyTraits(t),this.pushEntity(e,t.area(o));return}const s=[...r,r[0]];this.applyTraits(t),this.pushEntity(e,t.lines(s))}drawLwPolyline(t,e,n){const r=new mf(n,this._dxfversion,this._encoding);let s=0,a=!1;r.readUnsignedLong();const o=r.readBitShort();o&8&&(s=r.readBitDouble()),o&512&&(a=!0);const c=r.readBitLong();if(c<=0)return;const l=o&16?r.readBitLong():0;this._dxfversion>="AC1024"&&(o&1024&&r.readBitLong(),o&32&&r.readBitLong());const h=r.readRawDouble(2),u=[this.transformPoint({x:h[0],y:h[1],z:s})];let d=h;for(let g=1;g<c;g++){const f=r.readBitDoubleDefault(1,d[0]),p=r.readBitDoubleDefault(1,d[1]);d=[f,p],u.push(this.transformPoint({x:f,y:p,z:s}))}for(let g=0;g<l;g++)r.readBitDouble();a&&u.length>1&&u.push(u[0].clone()),this.applyTraits(t),this.pushEntity(e,t.lines(u))}drawShell(t,e,n){const r=new ie(n),s=r.readLong(),a=[];for(let h=0;h<s;h++){const[u,d,g]=r.readVertex();a.push(this.transformPoint({x:u,y:d,z:g}))}const o=r.readLong(),c=[];let l=0;for(;l<o;){const h=Math.abs(r.readSignedLong());l+=1+h;const u=[];for(let g=0;g<h;g++)u.push(r.readLong());const d=u.map(g=>a[g]).filter(Boolean);if(d.length>=3)for(let g=0;g<d.length;g++)c.push(d[g]),c.push(d[(g+1)%d.length])}c.length!==0&&(this.applyTraits(t),this.pushEntity(e,t.lines(c)))}drawText(t,e,n,r){const s=new ie(n),a=this.transformPoint(s.readVertex()),o=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),[l,h,u]=s.readStruct([8,8,8]),d=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);this.drawTextPrimitive(t,e,{insert:a,normal:o,textDirection:c,text:d,height:l,widthFactor:h,obliqueAngle:u})}drawText2(t,e,n,r){const s=new ie(n),a=this.transformPoint(s.readVertex()),o=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),l=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);s.readSignedLong(),s.readSignedLong();const[h,u,d]=s.readStruct([8,8,8]);s.readFloat(),this.drawTextPrimitive(t,e,{insert:a,normal:o,textDirection:c,text:l,height:h,widthFactor:u,obliqueAngle:d})}drawTextPrimitive(t,e,n){const r=Math.atan2(n.textDirection.y,n.textDirection.x),s={text:n.text,height:n.height,width:1/0,widthFactor:n.widthFactor,position:n.insert,rotation:r*180/Math.PI,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft},a={name:gt,standardFlag:0,fixedTextHeight:0,widthFactor:n.widthFactor,obliqueAngle:n.obliqueAngle*180/Math.PI,textGenerationFlag:0,lastHeight:n.height,font:"txt",bigFont:""};this.applyTraits(t),this.pushEntity(e,t.mtext(s,a))}drawXline(t,e,n,r){const s=new ie(n),a=this.transformPoint(s.readVertex()),o=this.transformPoint(s.readVertex()),c=new A().subVectors(o,a);if(c.lengthSq()===0)return;const l=1e6,h=r?a.clone().add(c.normalize().multiplyScalar(l)):a.clone().sub(c.normalize().multiplyScalar(l)),u=o.clone().add(c.normalize().multiplyScalar(l));this.applyTraits(t),this.pushEntity(e,t.lines([h,u]))}}function qx(i,t){if(!(t!=null&&t.length))return;const e=Gr(t);return i!=null&&i>0&&e.length>=i?e.subarray(0,i):e}const Kx="ASM_Data";function Sc(i){return String(i).trim().toUpperCase()}function Zx(i){let t,e;const n={};for(;!i.atEndOfObject&&!i.atEof;){const r=i.readItem();if(!r)break;switch(Number(r.code)){case 320:t=Sc(String(r.value));break;case 2:e=String(r.value),n[e]??(n[e]=[]);break;case 310:e&&(r.value instanceof Uint8Array?n[e].push(r.value):n[e].push(String(r.value)));break}}return{ownerHandle:t,hexChunks:n[Kx]??[]}}function Qx(i){const t={};for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)!==0){i.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"||n==="EOF"){i.readItem();break}if(i.readItem(),n==="ACDSRECORD"){const r=Zx(i);if(r.ownerHandle&&r.hexChunks.length>0){const s=Gr(r.hexChunks);s.length>0&&(t[r.ownerHandle]=s)}}else i.skipToEndOfObject()}return{byOwnerHandle:t}}function np(i,t){for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)===0){if(String(e.value).toUpperCase()==="ENDSEC"){i.readItem();break}break}if(i.readItem(),Number(e.code)!==9)continue;const n=String(e.value).toUpperCase();Jx(i,t,n)}}function Jx(i,t,e){switch(e){case"$ACADVER":{const n=Se(i);n&&(t.version=n);break}case"$DWGCODEPAGE":{const n=Se(i);n&&(t.dwgCodePage=n);break}case"$CECOLOR":{const n=dt(i);t.cecolor.colorIndex=n??256;break}case"$ANGBASE":t.angbase=dt(i)??0;break;case"$ANGDIR":t.angdir=dt(i)??0;break;case"$AUNITS":{const n=dt(i);n!=null&&(t.aunits=n);break}case"$AUPREC":{const n=dt(i);n!=null&&(t.auprec=n);break}case"$LUNITS":{const n=dt(i);n!=null&&(t.lunits=n);break}case"$LUPREC":{const n=dt(i);n!=null&&(t.luprec=n);break}case"$UNITMODE":{const n=dt(i);n!=null&&(t.unitmode=n);break}case"$MEASUREMENT":{const n=dt(i);n!=null&&(t.measurement=n);break}case"$CELTYPE":t.celtype=Se(i)||Pt;break;case"$CETRANSPARENCY":{Ru(i,t,I.CETRANSPARENCY);break}case"$CELTSCALE":t.celtscale=dt(i)??1;break;case"$CELWEIGHT":{const n=dt(i);n!=null&&(t.celweight=n);break}case"$LWDISPLAY":t.lwdisplay=(dt(i)??0)!==0;break;case"$TILEMODE":t.tilemode=dt(i)??1;break;case"$PSLTSCALE":t.psltscale=(dt(i)??1)!==0;break;case"$CMLSTYLE":case"CMLSTYLE":t.cmlstyle=Se(i)||Ze;break;case"$CMLSCALE":case"CMLSCALE":{const n=dt(i);n!=null&&Number.isFinite(n)&&(t.cmlscale=n);break}case"$CMLEADERSTYLE":case"CMLEADERSTYLE":t.cmleaderstyle=Se(i)||Qe;break;case"$HPLAYER":case"HPLAYER":t.hplayer=Se(i)||".";break;case"$HPTRANSPARENCY":{Ru(i,t,I.HPTRANSPARENCY);break}case"$LTSCALE":t.ltscale=dt(i)??1;break;case"$EXTMAX":{const n=Bu(i);n&&(t.extmax=n);break}case"$EXTMIN":{const n=Bu(i);n&&(t.extmin=n);break}case"$INSUNITS":{const n=dt(i);n!=null&&(t.insunits=n);break}case"$OSMODE":t.osmode=dt(i)??0;break;case"$ORTHOMODE":t.orthomode=dt(i)??0;break;case"$COMPAREHATCH":{const n=ir(dt(i),Ja,to);n!=null&&(t.comparehatch=n);break}case"$COMPARERCMARGIN":{const n=ir(dt(i),eo,no);n!=null&&(t.comparercmargin=n);break}case"$COMPARETEXT":{const n=ir(dt(i),io,ro);n!=null&&(t.comparetext=n);break}case"$COMPARETOLERANCE":{const n=ir(dt(i),so,ao);n!=null&&(t.comparetolerance=n);break}case"$PDMODE":t.pdmode=dt(i)??0;break;case"$PDSIZE":t.pdsize=dt(i)??0;break;case"$TEXTSTYLE":t.textstyle=Se(i)||gt;break;case"$DIMSTYLE":t.dimstyle=Se(i)||gt;break;case"$CLAYER":t.clayer=Se(i)||"0";break;case"$HANDSEED":{const n=Se(i);n&&t.initializeHandleSeed(n);break}default:tw(i);break}}function Se(i){const t=i.readItem();if(t){if(Number(t.code)===9||Number(t.code)===0){i.pushBackItem(t);return}return String(t.value)}}function dt(i){const t=i.readItem();if(!t)return;if(Number(t.code)===9||Number(t.code)===0){i.pushBackItem(t);return}const e=Number(t.value);return Number.isFinite(e)?e:void 0}function Ru(i,t,e){const n=i.readItem();if(!n||Number(n.code)===9||Number(n.code)===0){n&&i.pushBackItem(n),xt.instance().setVar(e,"ByLayer",t);return}const r=Number(n.code),s=String(n.value).trim();if(s===""){xt.instance().setVar(e,"ByLayer",t);return}if(r===440){const a=Number(s);xt.instance().setVar(e,Number.isFinite(a)?a:"ByLayer",t);return}xt.instance().setVar(e,s,t)}function Bu(i){let t=0,e=0,n=0,r=!1;for(;!i.atEof;){const s=i.peekItem();if(!s)break;const a=Number(s.code);if(a===9||a===0)break;i.readItem();const o=Number(s.value);a===10?(t=o,r=!0):a===20?(e=o,r=!0):a===30&&(n=o,r=!0)}return r?new x(t,e,n):void 0}function tw(i){for(;!i.atEof;){const t=i.peekItem();if(!t)break;const e=Number(t.code);if(e===9||e===0)break;i.readItem()}}class ip{constructor(t){this._expression=t}get expression(){return this._expression}}var rp=(i=>(i[i.Cancel=0]="Cancel",i[i.Ok=1]="Ok",i))(rp||{});class go{constructor(){this._name="",this._filterExpression="",this._nestedFilters=[],this._parent=null,this._allowDelete=!0,this._allowRename=!0,this._dynamicallyGenerated=!1,this._isProxy=!1}get name(){return this._name}setName(t){return!this.allowRename()&&this._name.length>0?!1:(this._name=t,!0)}set name(t){this.setName(t)}get filterExpression(){return this._filterExpression}setFilterExpression(t){return this.isIdFilter()?!1:(this._filterExpression=t??"",!0)}set filterExpression(t){this.setFilterExpression(t)}filterExpressionTree(){return this.isIdFilter()||!this._filterExpression?null:new ip(this._filterExpression)}getNestedFilters(){return this._nestedFilters}get nestedFilters(){return this._nestedFilters}parent(){return this._parent}isIdFilter(){return!1}allowNested(){return!0}allowDelete(){return this._allowDelete}setAllowDelete(t){this._allowDelete=t}allowRename(){return this._allowRename}setAllowRename(t){this._allowRename=t}dynamicallyGenerated(){return this._dynamicallyGenerated}setDynamicallyGenerated(t){this._dynamicallyGenerated=t}isProxy(){return this._isProxy}setIsProxy(t){this._isProxy=t}addNested(t){return!t||t===this||!this.allowNested()||!(this._parent==null)&&!this.isIdFilter()&&t.isIdFilter()||this._nestedFilters.includes(t)?!1:(t._parent&&t._parent.removeNested(t),t._parent=this,this._nestedFilters.push(t),!0)}removeNested(t){const e=this._nestedFilters.indexOf(t);return e<0?!1:(this._nestedFilters.splice(e,1),t._parent===this&&(t._parent=null),!0)}generateNested(){return!1}compareTo(t){return t?this.isIdFilter()===t.isIdFilter()&&this._name===t._name&&this._filterExpression===t._filterExpression:!1}filter(t){return t?this._filterExpression?ew(this._filterExpression,t):!0:!1}showEditor(){return 0}}function ew(i,t){const e=i.trim();return e?Fu(e,"OR").some(r=>Fu(r,"AND").every(a=>nw(a,t))):!0}function Fu(i,t){const e=new RegExp(`\\s+${t}\\s+`,"i");return i.split(e).map(n=>n.trim()).filter(n=>n.length>0)}function nw(i,t){var a;const e=i.trim().match(/^([A-Za-z_]+)\s*(==|=)\s*"?(.*?)"?\s*$/);if(!e)return!1;const n=e[1].toUpperCase(),r=e[3],s=rw(r);switch(n){case"NAME":return iw(t.name,r);case"LOCKED":return s!=null?t.isLocked===s:!1;case"FROZEN":return s!=null?t.isFrozen===s:!1;case"OFF":return s!=null?t.isOff===s:!1;case"PLOT":return s!=null?t.isPlottable===s:!1;case"COLOR":{const o=(a=t.color)==null?void 0:a.colorIndex;return o!=null&&String(o)===r}case"LINETYPE":return t.linetype.localeCompare(r,void 0,{sensitivity:"accent"})===0;default:return!1}}function iw(i,t){return/[*?]/.test(t)?new RegExp(`^${t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".")}$`,"i").test(i):i.localeCompare(t,void 0,{sensitivity:"accent"})===0}function rw(i){const t=i.trim().toLowerCase();return t==="true"||t==="1"?!0:t==="false"||t==="0"?!1:null}class nn{constructor(t,e){this._root=t??nn.createDefaultRoot(),this._current=e===void 0?this._root:e}static createDefaultRoot(){const t=new go;return t.setName("All"),t.setAllowDelete(!1),t.setAllowRename(!1),t.setFilterExpression(""),t}get root(){return this._root}get current(){return this._current}set current(t){this._current=t}clone(){return new nn(this._root,this._current)}}class sp extends go{constructor(){super(),this._layerIds=[]}isIdFilter(){return!0}layerIds(){return this._layerIds}get layerIdList(){return this._layerIds}addLayerId(t){return!t||this._layerIds.includes(t)?!1:(this._layerIds.push(t),!0)}removeLayerId(t){const e=this._layerIds.indexOf(t);return e<0?!1:(this._layerIds.splice(e,1),!0)}filter(t){return t?this._layerIds.includes(t.objectId):!1}setFilterExpression(t){return!1}}const fo="ACAD_LAYERFILTERS",Bi="ACLYDICTIONARY";function ap(i){const t=nn.createDefaultRoot(),e=new nn(t,t),n=Xu(i,Bi),r=Xu(i,fo);if(n){for(const[s,a]of Object.entries(n.entries)){const o=Pc(i,a,s);o&&t.addNested(o)}return e}if(r)for(const[s,a]of Object.entries(r.entries)){const o=Pc(i,a,s);o&&t.addNested(o)}return e}function op(i){const t=[];for(const e of i.root.getNestedFilters())t.push(hp(e));return{nodes:t}}function cp(i){const t=new en;for(const e of i)t.add({code:e.code,value:e.value});return t}function sw(i){return i?i.toArray().map(t=>({code:Number(t.code),value:t.value})):[]}function Xu(i,t){let e;for(const n of i.dictionaries.values()){const r=n.entries[t];if(!r)continue;const s=i.dictionaries.get(We(r));if(!s)continue;if(!(n.ownerObjectId?i.xrecords.has(We(n.ownerObjectId)):!1))return s;e=s}return e}function Pc(i,t,e){const n=i.xrecords.get(We(t));if(!n)return;const r=lp(n.data,e),s=r.isIdFilter?new sp:new go;if(s.setAllowRename(!0),s.setName(r.name||e),!r.isIdFilter)s.setFilterExpression(r.filterExpression);else{const a=s;for(const o of r.layerIds)a.addLayerId(o)}for(const a of aw(i,n)){const o=Pc(i,a.handle,a.key);o&&s.addNested(o)}return s}function aw(i,t){const e=[],n=new Set,r=We(t.handle),s=t.extensionDictionaryId?We(t.extensionDictionaryId):void 0,a=(o,c)=>{const l=We(c);n.has(l)||(n.add(l),e.push({key:o,handle:c}))};for(const o of i.dictionaries.values()){const c=o.ownerObjectId?We(o.ownerObjectId):void 0;if(!c||!(c===r||c===s))continue;const h=o.entries[Bi];if(h){const u=i.dictionaries.get(We(h));if(u){for(const[d,g]of Object.entries(u.entries))a(d,g);continue}}for(const[u,d]of Object.entries(o.entries))u===Bi||u===fo||a(u,d)}return e}function lp(i,t=""){const e=[],n=[];let r=0,s,a,o;for(const f of i){const p=Number(f.code),m=f.value;p===1&&typeof m=="string"?e.push(m):p===300&&typeof m=="string"?a=m:p===301&&typeof m=="string"?o=m:p===70||p===90?r=Number(m)||0:p===290||p===280?s=Number(m)===1:(p===330||p===340||p===350||p===360)&&m!=null&&String(m).length>0&&n.push(We(String(m)))}const c=e[0],h=a||(c==="AcLyLayerFilter"||c==="AcLyLayerGroup"?void 0:c)||t,u=e[1]??"";let d=o??u;!o&&d&&d!=="*"&&!/==/.test(d)&&(d=`NAME=="${d}"`);const g=o!=null&&o.length>0?!1:s===!0&&n.length>0?!0:n.length>0&&(d.length===0||d==="*");return{name:h,filterExpression:g?"":d,flags:r,layerIds:n,isIdFilter:g}}function hp(i){const t=i.isIdFilter(),e=up(i),n=i.getNestedFilters().map(s=>hp(s));return{key:i.name||(t?"Group":"Filter"),isIdFilter:t,data:e,children:n}}function up(i){const t=[];if(t.push({code:1,value:i.name}),i.isIdFilter()){t.push({code:1,value:""}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:1});const e=i;for(const n of e.layerIds())t.push({code:330,value:n})}else t.push({code:1,value:i.filterExpression||"*"}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:0});return t}function We(i){return i.trim().toUpperCase()}class Es extends pt{constructor(){super(...arguments),this._schema=0,this._value=""}get schema(){return this._schema}set schema(t){this._schema=t}get value(){return this._value}set value(t){this._value=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("DictionaryVariables"),t.writeInt16(280,this._schema),t.writeString(1,this._value),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("DictionaryVariables")||t.atSubclassData("AcDbDictionaryVar");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 280:this._schema=Number(e.value);break;case 1:this._value=String(e.value);break}}return this}}class dp extends pt{constructor(){super(...arguments),this._name="",this._unnamed=!1,this._selectable=!0,this._entityIds=[]}get name(){return this._name}set name(t){this._name=t}get unnamed(){return this._unnamed}set unnamed(t){this._unnamed=t}get selectable(){return this._selectable}set selectable(t){this._selectable=t}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbGroup"),this.name&&t.writeString(300,this.name),t.writeInt16(70,this.unnamed?1:0),t.writeInt16(71,this.selectable?1:0);for(const e of this._entityIds)t.writeObjectId(340,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbGroup"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 300:this._name=String(e.value);break;case 70:this._unnamed=Number(e.value)!==0;break;case 71:this._selectable=Number(e.value)!==0;break;case 340:this._entityIds.push(String(e.value));break}}return this}}class gp extends pt{constructor(){super(),this._boundaryVertices=[],this._clipBoundaryDisplayEnabled=!1,this._frontClippingEnabled=!1,this._backClippingEnabled=!1}get boundaryVertices(){return this._boundaryVertices}set boundaryVertices(t){this._boundaryVertices=t.map(e=>e.clone())}get clipBoundaryNormal(){return this._clipBoundaryNormal}set clipBoundaryNormal(t){this._clipBoundaryNormal=t==null?void 0:t.clone()}get clipBoundaryOrigin(){return this._clipBoundaryOrigin}set clipBoundaryOrigin(t){this._clipBoundaryOrigin=t==null?void 0:t.clone()}get clipBoundaryDisplayEnabled(){return this._clipBoundaryDisplayEnabled}set clipBoundaryDisplayEnabled(t){this._clipBoundaryDisplayEnabled=t}get frontClippingEnabled(){return this._frontClippingEnabled}set frontClippingEnabled(t){this._frontClippingEnabled=t}get frontClippingDistance(){return this._frontClippingDistance}set frontClippingDistance(t){this._frontClippingDistance=t}get backClippingEnabled(){return this._backClippingEnabled}set backClippingEnabled(t){this._backClippingEnabled=t}get backClippingDistance(){return this._backClippingDistance}set backClippingDistance(t){this._backClippingDistance=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFilter"),this._boundaryVertices.length>0&&(t.writeInt16(70,this._boundaryVertices.length),this._boundaryVertices.forEach(e=>t.writePoint2d(10,e)),t.writeVector3d(210,this._clipBoundaryNormal),t.writePoint3d(11,this._clipBoundaryOrigin),t.writeInt16(71,this._clipBoundaryDisplayEnabled?1:0),t.writeInt16(72,this._frontClippingEnabled?1:0),this._frontClippingEnabled&&this._frontClippingDistance!=null&&t.writeDouble(40,this._frontClippingDistance),t.writeInt16(73,this._backClippingEnabled?1:0),this._backClippingEnabled&&this._backClippingDistance!=null&&t.writeDouble(41,this._backClippingDistance)),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFilter");let e=null,n=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===100){t.pushBackItem(r);break}const a=Number(r.value);switch(s){case 70:break;case 10:e&&this._boundaryVertices.push(new M(e.x,e.y)),e={x:a,y:0};break;case 20:e&&(e.y=a);break;case 210:this._clipBoundaryNormal=this._clipBoundaryNormal??new x,this._clipBoundaryNormal.x=a;break;case 220:this._clipBoundaryNormal&&(this._clipBoundaryNormal.y=a);break;case 230:this._clipBoundaryNormal&&(this._clipBoundaryNormal.z=a);break;case 11:this._clipBoundaryOrigin=this._clipBoundaryOrigin??new x,this._clipBoundaryOrigin.x=a;break;case 21:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.y=a);break;case 31:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.z=a);break;case 71:this._clipBoundaryDisplayEnabled=a!==0;break;case 72:this._frontClippingEnabled=a!==0;break;case 73:this._backClippingEnabled=a!==0;break;case 40:n||(this._frontClippingDistance=a,n=!0);break;case 41:this._backClippingDistance=a;break}}return e&&this._boundaryVertices.push(new M(e.x,e.y)),this}}class fp extends gp{constructor(){super(),this._layerNames=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}add(t){const e=t==null?void 0:t.trim();return!e||this._layerNames.includes(e)?!1:(this._layerNames.push(e),!0)}getAt(t){if(t<0||t>=this._layerNames.length)throw new Error("The layer index is out of range!");return this._layerNames[t]}remove(t){const e=this._layerNames.indexOf(t);return e<0?!1:(this._layerNames.splice(e,1),!0)}layerCount(){return this._layerNames.length}indexClass(){return"AcDbLayerIndex"}isValid(){return this._layerNames.some(t=>t.length>0)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerFilter");for(const e of this._layerNames)t.writeString(8,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbLayerFilter");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 8:this.add(String(e.value));break;case 100:return t.pushBackItem(e),this}}return this}}class pp extends pt{constructor(){super(),this._lastUpdatedAt=0,this._lastUpdatedAtU=0,this._isUptoDate=!1,this._objectBeingIndexedId=""}get lastUpdatedAt(){return this._lastUpdatedAt}set lastUpdatedAt(t){this._lastUpdatedAt=t}get lastUpdatedAtU(){return this._lastUpdatedAtU}set lastUpdatedAtU(t){this._lastUpdatedAtU=t}get isUptoDate(){return this._isUptoDate}set isUptoDate(t){this._isUptoDate=t}objectBeingIndexedId(){return this._objectBeingIndexedId}setObjectBeingIndexedId(t){this._objectBeingIndexedId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbIndex"),t.writeDouble(40,this.lastUpdatedAt),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbIndex");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 40:this.lastUpdatedAt=Number(e.value),this.lastUpdatedAtU=this.lastUpdatedAt;break;case 100:return t.pushBackItem(e),this}}return this}}class mp extends pp{constructor(){super(),this._layerNames=[],this._idBufferIds=[],this._idBufferEntryCounts=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}get idBufferIds(){return this._idBufferIds}set idBufferIds(t){this._idBufferIds=[...t]}get idBufferEntryCounts(){return this._idBufferEntryCounts}set idBufferEntryCounts(t){this._idBufferEntryCounts=[...t]}get entries(){const t=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length),e=[];for(let n=0;n<t;n++)e.push({layerName:this._layerNames[n]??"",idBufferId:this._idBufferIds[n]??"",idBufferEntryCount:this._idBufferEntryCounts[n]??0});return e}set entries(t){this._layerNames=t.map(e=>e.layerName),this._idBufferIds=t.map(e=>e.idBufferId),this._idBufferEntryCounts=t.map(e=>e.idBufferEntryCount)}compute(t,e){if(e&&this.setObjectBeingIndexedId(e.objectId),t){this._layerNames=[];for(const n of t.newIterator())this._layerNames.push(n.name)}return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}newIterator(t){return null}rebuildFull(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}rebuildModified(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerIndex");const e=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length);for(let n=0;n<e;n++)this._layerNames[n]!=null&&t.writeString(8,this._layerNames[n]),this._idBufferIds[n]&&t.writeHandle(360,this._idBufferIds[n]),this._idBufferEntryCounts[n]!=null&&t.writeInt32(90,this._idBufferEntryCounts[n]);return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLayerIndex");const e=[],n=[],r=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;switch(Number(s.code)){case 8:e.push(String(s.value));break;case 360:n.push(String(s.value));break;case 90:r.push(Number(s.value));break;case 100:return t.pushBackItem(s),this.layerNames=e,this.idBufferIds=n,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}return this.layerNames=e,this.idBufferIds=n,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}class po extends pt{constructor(){super(),this._contentType=2,this._drawMLeaderOrderType=1,this._drawLeaderOrderType=0,this._bitFlags=0,this._maxLeaderSegmentsPoints=-1,this._firstSegmentAngleConstraint=0,this._secondSegmentAngleConstraint=0,this._leaderLineType=1,this._leaderLineColor=new U(exports.AcCmColorMethod.ByLayer),this._leaderLineWeight=-2,this._enableLanding=!0,this._landingGap=2,this._enableDogleg=!0,this._doglegLength=8,this._description="",this._arrowSize=4,this._defaultMTextContents="",this._textLeftAttachmentType=1,this._textAngleType=1,this._textAlignmentType=0,this._textRightAttachmentType=1,this._textColor=new U(exports.AcCmColorMethod.ByLayer),this._textHeight=4,this._enableFrameText=!1,this._textAlignAlwaysLeft=!1,this._alignSpace=0,this._blockColor=new U(exports.AcCmColorMethod.ByBlock),this._blockScale=new A(1,1,1),this._enableBlockScale=!0,this._blockRotation=0,this._enableBlockRotation=!1,this._blockConnectionType=0,this._scale=1,this._overwritePropChanged=!1,this._annotative=!1,this._breakSize=0,this._textAttachmentDirection=0,this._bottomTextAttachmentType=9,this._topTextAttachmentType=9,this._extendLeaderToText=!1}get unknown1(){return this._unknown1}set unknown1(t){this._unknown1=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get drawMLeaderOrderType(){return this._drawMLeaderOrderType}set drawMLeaderOrderType(t){this._drawMLeaderOrderType=t}get drawLeaderOrderType(){return this._drawLeaderOrderType}set drawLeaderOrderType(t){this._drawLeaderOrderType=t}get bitFlags(){return this._bitFlags}set bitFlags(t){this._bitFlags=t}get maxLeaderSegmentsPoints(){return this._maxLeaderSegmentsPoints}set maxLeaderSegmentsPoints(t){this._maxLeaderSegmentsPoints=t}get maxLeaderSegmentPoints(){return this.maxLeaderSegmentsPoints}set maxLeaderSegmentPoints(t){this.maxLeaderSegmentsPoints=t}get firstSegmentAngleConstraint(){return this._firstSegmentAngleConstraint}set firstSegmentAngleConstraint(t){this._firstSegmentAngleConstraint=t}get secondSegmentAngleConstraint(){return this._secondSegmentAngleConstraint}set secondSegmentAngleConstraint(t){this._secondSegmentAngleConstraint=t}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor.copy(t)}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get enableLanding(){return this._enableLanding}set enableLanding(t){this._enableLanding=t}get landingEnabled(){return this.enableLanding}set landingEnabled(t){this.enableLanding=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get enableDogleg(){return this._enableDogleg}set enableDogleg(t){this._enableDogleg=t}get doglegEnabled(){return this.enableDogleg}set doglegEnabled(t){this.enableDogleg=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get description(){return this._description}set description(t){this._description=t}get arrowSymbolId(){return this._arrowSymbolId}set arrowSymbolId(t){this._arrowSymbolId=t}get arrowheadId(){return this.arrowSymbolId}set arrowheadId(t){this.arrowSymbolId=t}get arrowSize(){return this._arrowSize}set arrowSize(t){this._arrowSize=t}get arrowheadSize(){return this.arrowSize}set arrowheadSize(t){this.arrowSize=t}get defaultMTextContents(){return this._defaultMTextContents}set defaultMTextContents(t){this._defaultMTextContents=t}get defaultMText(){return this.defaultMTextContents}set defaultMText(t){this.defaultMTextContents=t}get textString(){return this.defaultMTextContents}set textString(t){this.defaultMTextContents=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textStyle(){return this.textStyleId}set textStyle(t){this.textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor.copy(t)}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get enableFrameText(){return this._enableFrameText}set enableFrameText(t){this._enableFrameText=t}get textFrameEnabled(){return this.enableFrameText}set textFrameEnabled(t){this.enableFrameText=t}get textAlignAlwaysLeft(){return this._textAlignAlwaysLeft}set textAlignAlwaysLeft(t){this._textAlignAlwaysLeft=t}get alignSpace(){return this._alignSpace}set alignSpace(t){this._alignSpace=t}get blockId(){return this._blockId}set blockId(t){this._blockId=t}get blockContentId(){return this.blockId}set blockContentId(t){this.blockId=t}get blockColor(){return this._blockColor}set blockColor(t){this._blockColor.copy(t)}get blockContentColor(){return this.blockColor}set blockContentColor(t){this.blockColor=t}get blockScale(){return this._blockScale.clone()}set blockScale(t){this._blockScale.copy(t)}get blockContentScale(){return this.blockScale}set blockContentScale(t){this.blockScale=t}get enableBlockScale(){return this._enableBlockScale}set enableBlockScale(t){this._enableBlockScale=t}get blockContentScaleEnabled(){return this.enableBlockScale}set blockContentScaleEnabled(t){this.enableBlockScale=t}get blockRotation(){return this._blockRotation}set blockRotation(t){this._blockRotation=t}get blockContentRotation(){return this.blockRotation}set blockContentRotation(t){this.blockRotation=t}get enableBlockRotation(){return this._enableBlockRotation}set enableBlockRotation(t){this._enableBlockRotation=t}get blockContentRotationEnabled(){return this.enableBlockRotation}set blockContentRotationEnabled(t){this.enableBlockRotation=t}get blockConnectionType(){return this._blockConnectionType}set blockConnectionType(t){this._blockConnectionType=t}get blockContentConnectionType(){return this.blockConnectionType}set blockContentConnectionType(t){this.blockConnectionType=t}get scale(){return this._scale}set scale(t){this._scale=t}get scaleFactor(){return this.scale}set scaleFactor(t){this.scale=t}get overwritePropChanged(){return this._overwritePropChanged}set overwritePropChanged(t){this._overwritePropChanged=t}get overwritePropertyValue(){return this.overwritePropChanged}set overwritePropertyValue(t){this.overwritePropChanged=t}get annotative(){return this._annotative}set annotative(t){this._annotative=t}get breakSize(){return this._breakSize}set breakSize(t){this._breakSize=t}get breakGapSize(){return this.breakSize}set breakGapSize(t){this.breakSize=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get bottomTextAttachmentType(){return this._bottomTextAttachmentType}set bottomTextAttachmentType(t){this._bottomTextAttachmentType=t}get bottomTextAttachmentDirection(){return this.bottomTextAttachmentType}set bottomTextAttachmentDirection(t){this.bottomTextAttachmentType=t}get topTextAttachmentType(){return this._topTextAttachmentType}set topTextAttachmentType(t){this._topTextAttachmentType=t}get topTextAttachmentDirection(){return this.topTextAttachmentType}set topTextAttachmentDirection(t){this.topTextAttachmentType=t}get extendLeaderToText(){return this._extendLeaderToText}set extendLeaderToText(t){this._extendLeaderToText=t}get unknown2(){return this._unknown2}set unknown2(t){this._unknown2=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeaderStyle"),t.writeInt16(179,this.unknown1),t.writeInt16(170,this.contentType),t.writeInt16(171,this.drawMLeaderOrderType),t.writeInt16(172,this.drawLeaderOrderType),t.writeInt32(90,this.maxLeaderSegmentsPoints),t.writeDouble(40,this.firstSegmentAngleConstraint),t.writeDouble(41,this.secondSegmentAngleConstraint),t.writeInt16(173,this.leaderLineType),t.writeInt32(91,Fo(this.leaderLineColor)),t.writeHandle(340,this.leaderLineTypeId),t.writeInt32(92,this.leaderLineWeight),t.writeBoolean(290,this.enableLanding),t.writeDouble(42,this.landingGap),t.writeBoolean(291,this.enableDogleg),t.writeDouble(43,this.doglegLength),t.writeString(3,this.description),t.writeHandle(341,this.arrowSymbolId),t.writeDouble(44,this.arrowSize),t.writeString(300,this.defaultMTextContents),t.writeHandle(342,this.textStyleId),t.writeInt16(174,this.textLeftAttachmentType),t.writeInt16(175,this.textAngleType),t.writeInt16(176,this.textAlignmentType),t.writeInt16(178,this.textRightAttachmentType),t.writeInt32(93,Fo(this.textColor)),t.writeDouble(45,this.textHeight),t.writeBoolean(292,this.enableFrameText),t.writeBoolean(297,this.textAlignAlwaysLeft),t.writeDouble(46,this.alignSpace),t.writeHandle(343,this.blockId),t.writeInt32(94,Fo(this.blockColor)),t.writeDouble(47,this._blockScale.x),t.writeDouble(49,this._blockScale.y),t.writeDouble(140,this._blockScale.z),t.writeBoolean(293,this.enableBlockScale),t.writeDouble(141,this.blockRotation),t.writeBoolean(294,this.enableBlockRotation),t.writeInt16(177,this.blockConnectionType),t.writeDouble(142,this.scale),t.writeBoolean(295,this.overwritePropChanged),t.writeBoolean(296,this.annotative),t.writeDouble(143,this.breakSize),t.writeInt16(271,this.textAttachmentDirection),t.writeInt16(272,this.bottomTextAttachmentType),t.writeInt16(273,this.topTextAttachmentType),t.writeBoolean(298,this.unknown2),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbMLeaderStyle");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 179:this.unknown1=r;break;case 170:this.contentType=r;break;case 171:this.drawMLeaderOrderType=r;break;case 172:this.drawLeaderOrderType=r;break;case 90:this.maxLeaderSegmentsPoints=r;break;case 40:this.firstSegmentAngleConstraint=r;break;case 41:this.secondSegmentAngleConstraint=r;break;case 173:this.leaderLineType=r;break;case 91:this.leaderLineColor=zt(r);break;case 340:this.leaderLineTypeId=String(e.value);break;case 92:this.leaderLineWeight=r;break;case 290:this.enableLanding=r!==0;break;case 42:this.landingGap=r;break;case 291:this.enableDogleg=r!==0;break;case 43:this.doglegLength=r;break;case 3:this.description=String(e.value);break;case 341:this.arrowSymbolId=String(e.value);break;case 44:this.arrowSize=r;break;case 300:this.defaultMTextContents=String(e.value);break;case 342:this.textStyleId=String(e.value);break;case 174:this.textLeftAttachmentType=r;break;case 175:this.textAngleType=r;break;case 176:this.textAlignmentType=r;break;case 178:this.textRightAttachmentType=r;break;case 93:this.textColor=zt(r);break;case 45:this.textHeight=r;break;case 292:this.enableFrameText=r!==0;break;case 297:this.textAlignAlwaysLeft=r!==0;break;case 46:this.alignSpace=r;break;case 343:this.blockId=String(e.value);break;case 94:this.blockColor=zt(r);break;case 47:this._blockScale.x=r;break;case 49:this._blockScale.y=r;break;case 140:this._blockScale.z=r;break;case 293:this.enableBlockScale=r!==0;break;case 141:this.blockRotation=r;break;case 294:this.enableBlockRotation=r!==0;break;case 177:this.blockConnectionType=r;break;case 142:this.scale=r;break;case 295:this.overwritePropChanged=r!==0;break;case 296:this.annotative=r!==0;break;case 143:this.breakSize=r;break;case 271:this.textAttachmentDirection=r;break;case 272:this.bottomTextAttachmentType=r;break;case 273:this.topTextAttachmentType=r;break;case 298:this.unknown2=r!==0;break;case 100:return t.pushBackItem(e),this}}return this}}class Xl extends pt{constructor(){super(),this._styleName="STANDARD",this._flags=0,this._description="",this._fillColor=new U,this._startAngle=90,this._endAngle=90,this._elements=[]}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get flags(){return this._flags}set flags(t){this._flags=t}get description(){return this._description}set description(t){this._description=t}get fillColor(){return this._fillColor}set fillColor(t){this._fillColor.copy(t)}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=t}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=t}get elementCount(){return this._elements.length}get elements(){return this._elements.map(t=>({offset:t.offset,color:t.color.clone(),lineType:t.lineType}))}set elements(t){this._elements=t.map(e=>({offset:e.offset,color:e.color.clone(),lineType:e.lineType}))}addElement(t){this._elements.push({offset:t.offset,color:t.color.clone(),lineType:t.lineType})}removeElementAt(t){if(t<0||t>=this._elements.length)throw new Error("The element index is out of range!");this._elements.splice(t,1)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMlineStyle"),t.writeString(2,this.styleName),t.writeInt16(70,this.flags),t.writeString(3,this.description),t.writeCmColor(this.fillColor),t.writeDouble(51,this.startAngle),t.writeDouble(52,this.endAngle),t.writeInt16(71,this.elementCount),this._elements.forEach(e=>{t.writeDouble(49,e.offset),t.writeCmColor(e.color),t.writeString(6,e.lineType)}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMlineStyle");const e=[];let n,r=0;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 2:this.styleName=String(s.value);break;case 70:this.flags=o;break;case 3:this.description=String(s.value);break;case 51:this.startAngle=o;break;case 52:this.endAngle=o;break;case 71:r=o;break;case 49:{n={offset:o,color:new U,lineType:"BYLAYER"},n.color.colorIndex=256,e.push(n);break}case 62:n?n.color.colorIndex=o:this.fillColor.colorIndex=o;break;case 420:n?n.color.setRGBValue(o):this.fillColor.setRGBValue(o);break;case 6:n&&(n.lineType=String(s.value));break;case 100:return t.pushBackItem(s),this.finishMlineElements(e,r),this}}return this.finishMlineElements(e,r),this}finishMlineElements(t,e){const n=Math.max(e,t.length);if(n<=0){this.elements=[];return}this.elements=Array.from({length:n},(r,s)=>{const a=t[s];if(a)return a;const o=new U;return o.colorIndex=256,{offset:0,color:o,lineType:"BYLAYER"}})}}class yp extends pt{constructor(){super(),this._isLoaded=!0,this._resolutionUnits=0,this._sourceFileName="",this._classVersion=0,this._imageSize=new M,this._pixelSize=new M(1,1)}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}get classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize.copy(t)}get isLoaded(){return this._isLoaded}set isLoaded(t){this._isLoaded=t}get resolutionUnits(){return this._resolutionUnits}set resolutionUnits(t){this._resolutionUnits=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImageDef"),t.writeInt32(90,this.classVersion),t.writeString(1,this.sourceFileName),t.writePoint2d(10,this.imageSize),t.writeDouble(11,this.pixelSize.x),t.writeDouble(12,this.pixelSize.y),t.writeInt16(280,this.isLoaded?1:0),t.writeInt16(281,this.resolutionUnits),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbRasterImageDef");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 1:this.sourceFileName=String(e.value);break;case 90:this.classVersion=r;break;case 10:this.imageSize.x=r;break;case 20:this.imageSize.y=r;break;case 11:this.pixelSize.x=r;break;case 12:this.pixelSize.y=r;break;case 280:this.isLoaded=r!==0;break;case 281:this.resolutionUnits=r;break;case 100:return t.pushBackItem(e),this}}return this}}class bp extends pt{constructor(){super(...arguments),this._entityIds=[]}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbSortentsTable");for(const e of this._entityIds)t.writeObjectId(331,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSortentsTable"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 331:this._entityIds.push(String(e.value));break}}return this}}const at=i=>i?i.trim().toUpperCase():"";class _p{constructor(t){this._db=t,this._dictionaries=new Map,this._xrecords=new Map,this._unknownObjectCount=0}get unknownObjectCount(){return this._unknownObjectCount}read(t){for(this._unknownObjectCount=0;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"){t.readItem();break}t.readItem(),this.readObject(t,n)}this.finishNamedObjectDictionaries(),this.materializeBufferedDictionaries(),this.finishCannoscale(),this.finishAnnoallvisible(),this.finishLayerFilterTree(),this.linkLayoutsToBlockTableRecords(),this._db.objects.layout.numEntries===0&&this._db.createDefaultData({layout:!0})}readObject(t,e){switch(e){case"LAYOUT":{const n=new jn;n.dxfIn(t),n.layoutName&&this._db.objects.layout.setAt(n.layoutName,n);break}case"IMAGEDEF":{const n=new yp;n.dxfIn(t),this._db.objects.imageDefinition.setAt(n.objectId,n);break}case"LAYER_FILTER":{const n=new fp;n.dxfIn(t),this._db.objects.layerFilter.setAt(n.objectId,n);break}case"LAYER_INDEX":{const n=new mp;n.dxfIn(t),this._db.objects.layerIndex.setAt(n.objectId,n);break}case"MLEADERSTYLE":{const n=new po;n.dxfIn(t),this._db.objects.mleaderStyle.setAt(n.objectId,n);break}case"MLINESTYLE":{const n=new Xl;n.dxfIn(t),this._db.objects.mlineStyle.setAt(n.styleName||n.objectId,n);break}case"GROUP":{const n=new dp;n.dxfIn(t);const r=n.name||n.objectId;this._db.objects.group.setAt(r,n);break}case"SORTENTSTABLE":{const n=new bp;n.dxfIn(t),this._db.objects.sortentsTable.setAt(n.objectId,n);break}case"DICTIONARY":case"ACDBDICTIONARYWDFLT":{const n=this.readPersistDictionary(t);n.handle&&this._dictionaries.set(at(n.handle),n);break}case"SCALE":{const n=new zn;n.dxfIn(t);const r=n.scaleName||at(n.objectId);r&&this._db.objects.scale.setAt(r,n);break}case"DICTIONARYVAR":{const n=new Es;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.dictionaryVar.setAt(r,n);break}case"ACDB_MTEXTOBJECTCONTEXTDATA_CLASS":{const n=new sn;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_TEXTOBJECTCONTEXTDATA_CLASS":{const n=new Hr;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_ALDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_ANGDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_ARCDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_DMDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_ORDDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_RADDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_RADIMOBJECTCONTEXTDATA_CLASS":case"ACDB_RADDIMLGCOBJECTCONTEXTDATA_CLASS":{const n=new Pr;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_HATCHSCALECONTEXTDATA_CLASS":{const n=new kr;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_BLKREFOBJECTCONTEXTDATA_CLASS":{const n=new Sr;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_LEADEROBJECTCONTEXTDATA_CLASS":{const n=new Al;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_MLEADEROBJECTCONTEXTDATA_CLASS":{const n=new Ir;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_MTEXTATTRIBUTEOBJECTCONTEXTDATA_CLASS":{const n=new Gs;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"XRECORD":{const n=new oo;n.dxfIn(t);const r=at(n.objectId);if(r){this._db.objects.xrecord.setAt(r,n);const s={handle:r,ownerObjectId:at(n.ownerId),data:n.data?n.data.toArray().map(a=>({code:Number(a.code),value:a.value})):[]};n.extensionDictionary&&(s.extensionDictionaryId=at(n.extensionDictionary)),this._xrecords.set(r,s)}break}default:this._unknownObjectCount+=1,t.skipToEndOfObject();break}}finishNamedObjectDictionaries(){if(this._dictionaries.size===0)return;let t;for(const s of this._dictionaries.values())if(!s.ownerObjectId||s.ownerObjectId==="0"){t=s;break}if(!(t!=null&&t.handle))return;const e=this._db.objects.dictionary;e.objectId=t.handle,e.ownerId="0";const n={ACAD_LAYOUT:this._db.objects.layout,ACAD_GROUP:this._db.objects.group,ACAD_SORTENTS:this._db.objects.sortentsTable,ACAD_MLEADERSTYLE:this._db.objects.mleaderStyle,ACAD_MLINESTYLE:this._db.objects.mlineStyle,ACAD_SCALELIST:this._db.objects.scale,ISM_RASTER_IMAGE_DICT:this._db.objects.imageDefinition,MLIGHT_XRECORD:this._db.objects.xrecord},r=this.collectLoadedObjectsByHandle();for(const[s,a]of Object.entries(t.entries)){const o=n[s.toUpperCase()];if(!o)continue;o.objectId=a,o.ownerId=t.handle,e.setAt(s,o);const c=this._dictionaries.get(at(a));if(c)for(const[l,h]of Object.entries(c.entries)){const u=r.get(at(h));if(!u)continue;const d=at(u.objectId);let g=!1;for(const[,f]of o.entries())if(at(f.objectId)===d){g=!0;break}!o.getAt(l)&&!g&&o.setAt(l,u)}}}collectLoadedObjectsByHandle(){const t=new Map,e=n=>{const r=at(n.objectId);r&&t.set(r,n)};for(const[,n]of this._db.objects.layout.entries())e(n);for(const[,n]of this._db.objects.group.entries())e(n);for(const[,n]of this._db.objects.sortentsTable.entries())e(n);for(const[,n]of this._db.objects.imageDefinition.entries())e(n);for(const[,n]of this._db.objects.mleaderStyle.entries())e(n);for(const[,n]of this._db.objects.mlineStyle.entries())e(n);for(const[,n]of this._db.objects.layerFilter.entries())e(n);for(const[,n]of this._db.objects.layerIndex.entries())e(n);for(const[,n]of this._db.objects.xrecord.entries())e(n);for(const[,n]of this._db.objects.scale.entries())e(n);for(const[,n]of this._db.objects.dictionaryVar.entries())e(n);for(const[,n]of this._db.objects.objectContextData.entries())e(n);return t}materializeBufferedDictionaries(){if(this._dictionaries.size===0)return;const t=new Map;for(const a of this._db.getRootDictionaries()){const o=at(a.objectId);o&&(t.set(o,a),this._db.registerObjectHandle(a))}const e=new Map;for(const[a,o]of this._dictionaries){const c=this._db.getObjectById(a)??t.get(a);if(c instanceof K){e.set(a,c);continue}const l=new K(this._db);this._db.releaseObjectHandle(l),l.objectId=a,l.ownerId=o.ownerObjectId||"0",o.extensionDictionaryId&&(l.extensionDictionary=o.extensionDictionaryId),this._db.registerObjectHandle(l),e.set(a,l)}const n=this.collectLoadedObjectsByHandle();for(const[a,o]of e)n.set(a,o);for(const[a,o]of this._dictionaries){const c=e.get(a);if(c)for(const[l,h]of Object.entries(o.entries)){const u=n.get(at(h));if(!u||c.getAt(l))continue;const d=at(u.objectId);let g=!1;for(const[,f]of c.entries())if(at(f.objectId)===d){g=!0;break}if(!g)try{c.setAt(l,u)}catch{}}}let r;for(const a of this._dictionaries.values())if(!a.ownerObjectId||a.ownerObjectId==="0"){r=a;break}if(!(r!=null&&r.handle))return;const s=this._db.objects.dictionary;for(const[a,o]of Object.entries(r.entries)){if(s.getAt(a))continue;const c=n.get(at(o));if(c instanceof K)try{s.setAt(a,c)}catch{}}}finishCannoscale(){const e=this._db.objects.dictionary.getAt("AcDbVariableDictionary");if(!(e instanceof K))return;const n=e.getAt("CANNOSCALE");n instanceof Es&&n.value&&(this._db.cannoscale=n.value)}finishAnnoallvisible(){const e=this._db.objects.dictionary.getAt("AcDbVariableDictionary");if(!(e instanceof K))return;const n=e.getAt("ANNOALLVISIBLE");if(!(n instanceof Es)||n.value==null)return;const r=String(n.value).trim();this._db.annoallvisible=r!=="0"&&r.toLowerCase()!=="false"}readPersistDictionary(t){const e={handle:"",ownerObjectId:"",entries:{}};let n;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);switch(s){case 5:e.handle=String(r.value);break;case 330:e.ownerObjectId=String(r.value);break;case 100:case 280:case 281:break;case 3:n=String(r.value);break;case 350:case 340:case 360:{const a=at(String(r.value));n?(e.entries[n]=a,n=void 0):s===360&&!e.extensionDictionaryId&&(e.extensionDictionaryId=a);break}}}return e.handle=at(e.handle),e.ownerObjectId=at(e.ownerObjectId),e.extensionDictionaryId&&(e.extensionDictionaryId=at(e.extensionDictionaryId)),e}finishLayerFilterTree(){if(this._dictionaries.size===0&&this._xrecords.size===0)return;const t=ap({dictionaries:this._dictionaries,xrecords:this._xrecords});t.root.getNestedFilters().length>0&&(this._db.layerFilters=t),this._dictionaries.clear(),this._xrecords.clear()}linkLayoutsToBlockTableRecords(){const t=this._db.tables.blockTable,e=ct.MODEL_SPACE_NAME.toUpperCase();for(const[,n]of this._db.objects.layout.entries()){if(n.layoutName==="Model"){const a=t.modelSpace;n.blockTableRecordId=a.objectId,a.layoutId=n.objectId;continue}const r=at(n.objectId);let s=!1;for(const a of t.newIterator())if(at(a.layoutId)===r){n.blockTableRecordId=a.objectId,s=!0;break}if(!s&&n.blockTableRecordId){const a=t.getIdAt(n.blockTableRecordId);a&&(a.layoutId=n.objectId)}else if(!s){for(const a of t.newIterator())if(a.isPaperSapce&&a.name.toUpperCase()!==e&&!a.layoutId){n.blockTableRecordId=a.objectId,a.layoutId=n.objectId;break}}}}}class xp{constructor(t,e={}){this._db=t,this._options=e,this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap=new Map,this._yieldGate=new qa(this._options.yieldBudgetMs??_r)}get unknownEntityCount(){return this._unknownEntityCount}get unknownObjectCount(){return this._unknownObjectCount}async read(t){for(this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap.clear(),t.database=this._db;!t.atEof;){const e=t.readItem();if(!e)break;if(Number(e.code)!==0)continue;const n=String(e.value).toUpperCase();if(n==="EOF")break;if(n==="SECTION"){const r=this.readSectionName(t);await this.readSection(t,r);continue}}return this.flushRemainingAttributes(),{unknownEntityCount:this._unknownEntityCount,unknownObjectCount:this._unknownObjectCount}}readSectionName(t){const e=t.readItem();return e&&Number(e.code)===2?String(e.value).toUpperCase():(e&&t.pushBackItem(e),"")}async readSection(t,e){switch(e){case"HEADER":np(t,this._db),await this.reportParseProgress(t);break;case"CLASSES":this.readClassesSection(t),await this.reportParseProgress(t);break;case"TABLES":this.readTablesSection(t),await this.reportParseProgress(t);break;case"BLOCKS":await this.readBlocksSection(t),await this.reportParseProgress(t);break;case"ENTITIES":await this.readEntitiesSection(t),await this.reportParseProgress(t);break;case"OBJECTS":{const n=new _p(this._db);n.read(t),this._unknownObjectCount+=n.unknownObjectCount}await this.reportParseProgress(t);break;case"ACDSDATA":this.applyAcdsDataToSolids(Qx(t)),await this.reportParseProgress(t);break;case"THUMBNAILIMAGE":this.readThumbnailImageSection(t),await this.reportParseProgress(t);break;default:this.skipUntilEndSec(t),await this.reportParseProgress(t);break}}applyAcdsDataToSolids(t){const e=Object.keys(t.byOwnerHandle);if(e.length===0)return;const n=new Map;for(const r of this._db.tables.blockTable.newIterator())for(const s of r.newIterator())s instanceof Tr&&n.set(Sc(s.objectId),s);for(const r of e){const s=t.byOwnerHandle[r];if(!s)continue;const a=n.get(Sc(r));a&&a.setSabBytes(s)}}readThumbnailImageSection(t){let e=0;const n=[];for(;!t.atEof;){const s=t.readItem();if(!s)break;if(Number(s.code)===0){if(String(s.value).toUpperCase()==="ENDSEC")break;t.pushBackItem(s);break}Number(s.code)===90?e=Number(s.value)||0:Number(s.code)===310&&(s.value instanceof Uint8Array?n.push(s.value):n.push(String(s.value)))}if(n.length===0)return;const r=Gr(n);!r||r.length===0||(this._db.thumbnailImage=e>0&&r.length>e?r.subarray(0,e):r)}readClassesSection(t){const e=[];for(;!t.atEof;){const n=t.peekItem();if(!n)break;if(Number(n.code)!==0){t.readItem();continue}const r=String(n.value).toUpperCase();if(r==="ENDSEC"){t.readItem();break}if(r==="CLASS"){t.readItem();const s=this.readClassRecord(t);(s.name||s.cppClassName)&&e.push(s);continue}t.readItem(),t.skipToEndOfObject()}e.length>0&&(this._db.classes=e)}readClassRecord(t){const e={name:"",cppClassName:"",appName:"",proxyFlag:0,instanceCount:0,wasProxy:!1,isEntity:!1};for(;!t.atEndOfObject&&!t.atEof;){const n=t.readItem();if(!n)break;switch(Number(n.code)){case 1:e.name=String(n.value);break;case 2:e.cppClassName=String(n.value);break;case 3:e.appName=String(n.value);break;case 90:e.proxyFlag=Number(n.value);break;case 91:e.instanceCount=Number(n.value);break;case 280:e.wasProxy=Number(n.value)!==0;break;case 281:e.isEntity=Number(n.value)!==0;break}}return e}readTablesSection(t){for(;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"){t.readItem();break}if(n==="TABLE"){t.readItem();const r=this.readTableName(t);this.readTable(t,r);continue}t.readItem(),t.skipToEndOfObject()}this._db.ensureTextStyleDefaults()}readTableName(t){for(;!t.atEof;){const e=t.peekItem();if(!e)return"";const n=Number(e.code);if(n===0)return"";if(t.readItem(),n===2)return String(e.value).toUpperCase()}return""}readTable(t,e){switch(e){case"LAYER":this.readNamedTable(t,"LAYER",()=>new Wr,n=>{n.name&&this._db.tables.layerTable.add(n)});break;case"LTYPE":this.readNamedTable(t,"LTYPE",()=>new An,n=>{n.name&&this._db.tables.linetypeTable.add(n)});break;case"STYLE":this.readNamedTable(t,"STYLE",()=>new uo,n=>{this._db.tables.textStyleTable.add(n)});break;case"DIMSTYLE":this.readNamedTable(t,"DIMSTYLE",()=>new Qt,n=>{n.name&&this._db.tables.dimStyleTable.add(n)});break;case"VPORT":this.readNamedTable(t,"VPORT",()=>new Sn,n=>{n.name&&this._db.tables.viewportTable.add(n)});break;case"APPID":this.readNamedTable(t,"APPID",()=>new ia,n=>{n.name&&this._db.tables.appIdTable.add(n)});break;case"VIEW":this.readNamedTable(t,"VIEW",()=>new tp,n=>{n.name&&this._db.tables.viewTable.add(n)});break;case"UCS":this.readNamedTable(t,"UCS",()=>new Jf,n=>{n.name&&this._db.tables.ucsTable.add(n)});break;case"BLOCK_RECORD":this.readBlockRecordTable(t);break;default:this.skipUntilEndTab(t);break}}readNamedTable(t,e,n,r){for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const a=String(s.value).toUpperCase();if(a==="ENDTAB"){t.readItem();break}if(a==="ENDSEC")break;if(a===e){t.readItem();const o=n();o.dxfIn(t),r(o);continue}t.readItem(),t.skipToEndOfObject()}}readBlockRecordTable(t){let e=!1;for(;!t.atEof;){const n=t.peekItem();if(!n)break;if(Number(n.code)!==0){t.readItem();continue}const r=String(n.value).toUpperCase();if(r==="ENDTAB"){t.readItem();break}if(r==="ENDSEC")break;if(r==="BLOCK_RECORD"){t.readItem(),e||(this._db.tables.blockTable.removeAll(),e=!0);const s=new ct;s.dxfIn(t),s.name&&this._db.tables.blockTable.add(s);continue}t.readItem(),t.skipToEndOfObject()}}skipUntilEndTab(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDTAB")break}}async readBlocksSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let n=0;for(;!t.atEof;){const r=t.peekItem();if(!r)break;if(Number(r.code)!==0){t.readItem();continue}const s=String(r.value).toUpperCase();if(s==="ENDSEC"){t.readItem();break}if(s==="BLOCK"){t.readItem(),n=await this.readBlockDefinition(t,e,n);continue}t.readItem(),t.skipToEndOfObject()}}async readBlockDefinition(t,e,n){const r=this.readBlockBeginFields(t),s=this.ensureBlockTableRecord(r);for(;!t.atEof;){const a=t.peekItem();if(!a)break;if(Number(a.code)!==0){t.readItem();continue}const o=String(a.value).toUpperCase();if(o==="ENDBLK"){t.readItem(),t.skipToEndOfObject();break}if(o==="ENDSEC")break;if(t.readItem(),this.consumeSeqend(t,o)){n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t));continue}const c=Qc(t,o);c?this.shouldAcceptBlockEntity(s)&&this.acceptEntity(c,s):(this._unknownEntityCount+=1,t.skipToEndOfObject()),n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t))}return n}shouldAcceptBlockEntity(t){return!t.isModelSapce&&!t.isPaperSapce}consumeSeqend(t,e){return e!=="SEQEND"?!1:(t.skipToEndOfObject(),!0)}readBlockBeginFields(t){const e=new x;let n="",r=0,s="",a,o;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code);if(l===100)continue;const h=Number(c.value);switch(l){case 5:a=String(c.value);break;case 330:o=String(c.value);break;case 2:case 3:n||(n=String(c.value));break;case 70:r=h;break;case 10:e.x=h;break;case 20:e.y=h;break;case 30:e.z=h;break;case 1:s=String(c.value);break}}return{name:n,flags:r,origin:e,pathName:s,objectId:a,ownerId:o}}ensureBlockTableRecord(t){let e=t.name?this._db.tables.blockTable.getAt(t.name):void 0;e||(e=new ct,e.name=t.name||"*UNKNOWN",t.objectId&&(e.objectId=t.objectId),this._db.tables.blockTable.add(e)),e.origin.copy(t.origin);let n=ct.sanitizeImportedFlags(t.flags);return t.pathName&&(e.pathName=t.pathName,(n&(or.Xref|or.XrefOverlay))===0&&(n=n|or.Xref)),e.flags=n,e}async readEntitiesSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let n=0;const r=this._db.tables.blockTable.modelSpace;for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const a=String(s.value).toUpperCase();if(a==="ENDSEC"){t.readItem();break}if(t.readItem(),this.consumeSeqend(t,a)){n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t));continue}const o=Qc(t,a);o?this.acceptEntity(o,this.resolveEntityOwner(o,r)):(this._unknownEntityCount+=1,t.skipToEndOfObject()),n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t))}}resolveEntityOwner(t,e){const n=t.getAttrWithoutException("ownerId");if(n){const r=this._db.tables.blockTable.getIdAt(n);if(r&&(r.isModelSapce||r.isPaperSapce))return r}if(t.dxfPaperSpace){const r=this._db.tables.blockTable.getAt(ct.PAPER_SPACE_NAME_PREFIX);if(r)return r}return e}acceptEntity(t,e){if(t instanceof Cr){this.linkOrDeferAttribute(t,e);return}if(e.appendEntity(t),t instanceof he){const n=this._attributeMap.get(t.objectId);if(n&&n.length>0){for(const r of n)t.appendAttributes(r);this._attributeMap.delete(t.objectId)}}}linkOrDeferAttribute(t,e){const n=t.getAttrWithoutException("ownerId");if(!n||n==="0")return;const r=e.getIdAt(n)??this._db.tables.blockTable.getEntityById(n);if(r instanceof he){r.appendAttributes(t);return}let s=this._attributeMap.get(n);s||(s=[],this._attributeMap.set(n,s)),s.push(t)}flushRemainingAttributes(){for(const[t,e]of this._attributeMap){const n=this._db.tables.blockTable.getEntityById(t);if(n instanceof he)for(const r of e)n.appendAttributes(r)}this._attributeMap.clear()}skipUntilEndSec(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDSEC")break}}async reportParseProgress(t){const{onProgress:e,totalBytes:n}=this._options;if(!e||!n||n<=0)return;const r=Math.min(1,Math.max(0,t.position().byteOffset/n));await e(r)}async yieldAndReportProgress(t){await this.reportParseProgress(t),await this._yieldGate.maybeYield(ji)}}const hs=1,Yo=18,us=20,ds=98;class wp extends Dl{constructor(t={}){super({useWorker:!1,...t})}async read(t,e,n={}){const{minimumChunkSize:r=10,progress:s,encoding:a}=n;this.progress=s;const o=async(l,h,u,d)=>{s&&await s(l,h,u,d)};await o(0,"START","START"),await o(hs,"PARSE","START"),await Ad(),e.beginEventBatch();let c=!0;try{const l=tn.fromBuffer(t,{database:e,encoding:a}),h=t.byteLength;let u=hs;const g=await new xp(e,{entityBatchSize:Math.max(1,r||200),yieldBudgetMs:_r,totalBytes:h,onProgress:async y=>{const b=Math.min(Yo-1,hs+Math.floor(y*(Yo-hs)));b<=u||(u=b,await o(b,"PARSE","IN-PROGRESS"))}}).read(l);await o(Yo,"PARSE","END",{unknownEntityCount:g.unknownEntityCount}),await o(us,"ENTITY","START");const f=Math.max(1,r||200);let p=us;const m=new qa(_r);await e.endEventBatchChunked(f,async(y,b)=>{const _=b<=0?ds:Math.min(ds,us+Math.floor(y/b*(ds-us)));_>p&&(p=_,await o(_,"ENTITY","IN-PROGRESS")),await m.maybeYield()}),c=!1,await o(ds,"ENTITY","END"),await o(100,"END","END")}catch(l){throw c&&e.endEventBatch(),l}}async parse(t){return{model:null,data:{unknownEntityCount:0}}}}var ur=(i=>(i.DXF="dxf",i.DWG="dwg",i))(ur||{});class Le{constructor(){this.events={registered:new wt,unregistered:new wt},this._converters=new Map,this.register("dxf",new wp)}static createInstance(){return Le._instance==null&&(Le._instance=new Le),this._instance}static get instance(){return Le._instance||(Le._instance=new Le),Le._instance}get fileTypes(){return this._converters.keys()}register(t,e){this._converters.set(t,e),this.events.registered.dispatch({fileType:t,converter:e})}get(t){return this._converters.get(t)}unregister(t){const e=this._converters.get(t);e&&(this._converters.delete(t),this.events.unregistered.dispatch({fileType:t,converter:e}))}}const kc=50,ow=J.DEFAULT_CIRCLE_SIDES,cw=1e3;function qr(i){var e;const t=vp((e=i==null?void 0:i.context)==null?void 0:e.database);return{circleSides:t,maxSegments:t}}function vp(i){if(i!=null&&typeof i=="object"){const t=i.drawCircleSides;if(typeof t=="number"&&Number.isFinite(t))return J.resolveCircleSides(t)}return J.DEFAULT_CIRCLE_SIDES}function lw(i){var n,r,s;if(i==null||typeof i!="object")return J.DEFAULT_CIRCLE_SIDES;const t=i.tables,e=(s=(r=(n=t==null?void 0:t.viewportTable)==null?void 0:n.getActiveVport)==null?void 0:r.call(n))==null?void 0:s.circleSides;return typeof e!="number"||!Number.isFinite(e)?J.DEFAULT_CIRCLE_SIDES:J.resolveCircleSides(e)}const jo=new M,di=class di extends Mt{constructor(){super(),this._thickness=0,this._normal=new A(0,0,1),this._elevation=0,this._geo=new ot}get dxfTypeName(){return"LWPOLYLINE"}get numberOfVertices(){return this._geo.numberOfVertices}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}addVertexAt(t,e,n=0,r=-1,s=-1){const a=r<0?void 0:r,o=s<0?void 0:s,c={x:e.x,y:e.y,bulge:n,startWidth:a,endWidth:o};this._geo.addVertexAt(t,c)}removeVertexAt(t){this._geo.removeVertexAt(t)}reset(t,e){this._geo.reset(t,e)}getPoint2dAt(t){return this._geo.getPointAt(t)}getPoint3dAt(t){const e=this.getPoint2dAt(t);return this.ocsPointToWcs(e.x,e.y)}get geometricExtents(){const t=this._geo.box;return t.isEmpty()?new H:new H().setFromPoints([this.ocsPointToWcs(t.min.x,t.min.y),this.ocsPointToWcs(t.max.x,t.min.y),this.ocsPointToWcs(t.max.x,t.max.y),this.ocsPointToWcs(t.min.x,t.max.y)])}ocsPointToWcs(t,e){return oe({x:t,y:e,z:this._elevation},this._normal)}subGetIntersectCurves(){return Nl(this._geo.vertices,this.closed,this._elevation,this._normal)}subGetGripPoints(){const t=new Array;for(let e=0;e<this.numberOfVertices;++e)t.push(this.getPoint3dAt(e));return this.shouldIncludeSegmentMidpointGrips()&&this.appendSegmentMidpointGrips(t),t}subMoveGripPointsAt(t,e){const n=this.numberOfVertices,r=this.shouldIncludeSegmentMidpointGrips(),s=r?this.getSegmentCount():0,a=qt(e,this._normal);return It(t,o=>{if(o<n){lr(this._geo.vertices,o,a);return}if(!r||o>=n+s)return;const c=o-n;lr(this._geo.vertices,c,a),lr(this._geo.vertices,(c+1)%n,a)}),this}shouldIncludeSegmentMidpointGrips(){return this.getGripsMode()>=2}getGripsMode(){try{const t=xt.instance().getVar(I.GRIPS,this.database);return typeof t=="number"?t:2}catch{return 2}}getSegmentCount(){const t=this.numberOfVertices;return t<2?0:this.closed?t:t-1}appendSegmentMidpointGrips(t){var a;const e=this._geo,n=this._elevation,r=this.getSegmentCount(),s=e.numberOfVertices;for(let o=0;o<r;o++){const c=[];Lr(e.getPointAt(o),e.getPointAt((o+1)%s),(a=e.vertices[o])==null?void 0:a.bulge,n,E.MidPoint,{x:0,y:0,z:0},c);for(const l of c)t.push(this.ocsPointToWcs(l.x,l.y))}}subGetOsnapPoints(t,e,n,r){var c;const s=this._geo,a=this._elevation,o=s.numberOfVertices;if(o!==0)switch(t){case E.EndPoint:for(let l=0;l<o;l++)r.push(this.getPoint3dAt(l));break;case E.MidPoint:case E.Nearest:case E.Perpendicular:case E.Tangent:{const l=this.closed?o:o-1,h=[];for(let u=0;u<l;u++){const d=[];Lr(s.getPointAt(u),s.getPointAt((u+1)%o),(c=s.vertices[u])==null?void 0:c.bulge,a,t,e,d);for(const g of d)h.push(this.ocsPointToWcs(g.x,g.y))}if(t===E.MidPoint)r.push(...h);else{const u=me(e,h);u&&r.push(u)}break}}}transformBy(t){const e=t.determinant()<0;let n=this._elevation;return this._geo.vertices.forEach(r=>{const s=new x(r.x,r.y,this._elevation).applyMatrix4(t);r.x=s.x,r.y=s.y,n=s.z,e&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._elevation=n,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return this.hasRenderableWidth()?null:"lineStrip"}subWorldDraw(t){const e=qr(t),n=this._geo.tessellate(e),r=this.createWidthProfile(e);if(r!=null){if(this.closed||Ap(Yl(r,!1))){const c=hw(r);if(c!=null){const l=t.subEntityTraits;return l.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.offsetRing(c.outer.map(h=>this.ocsPointToWcs(h.x,h.y)),c.inner.map(h=>this.ocsPointToWcs(h.x,h.y)))}}const o=uw(r,this.closed);if(o!=null){const c=t.subEntityTraits,l=c.fillType;c.fillType={solidFill:!0,patternAngle:0,definitionLines:[]};const h=o.map(d=>(this.mapAreaLoopsToWcs(d),t.area(d)));c.fillType=l;const u=r.map(d=>this.ocsPointToWcs(d.x,d.y));return this.closed&&u.length>=2&&u.push(u[0]),u.length>=2&&h.push(t.lines(u)),h.length===1?h[0]:t.group(h)}}const s=[];return n.forEach(a=>s.push(this.ocsPointToWcs(a.x,a.y))),t.lines(s)}mapAreaLoopsToWcs(t){if(!(this._normal.x===0&&this._normal.y===0&&this._normal.z===1)){for(const e of t.loops)if("vertices"in e)for(const n of e.vertices){const r=this.ocsPointToWcs(n.x,n.y);n.x=r.x,n.y=r.y}}}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyline"),t.writeInt32(90,this.numberOfVertices),t.writeInt16(70,this.closed?1:0);const e=this.resolveConstantWidth();e!=null&&t.writeDouble(43,e),t.writeDouble(38,this.elevation),this.thickness!==0&&t.writeDouble(39,this.thickness);const n=this._geo.vertices;for(let r=0;r<n.length;++r){const s=n[r];t.writePoint2d(10,this.getPoint2dAt(r)),e==null&&(s.startWidth!=null&&t.writeDouble(40,s.startWidth),s.endWidth!=null&&t.writeDouble(41,s.endWidth));const a=s.bulge??0;a!==0&&t.writeDouble(42,a),s.identifier!=null&&t.writeInt32(91,s.identifier)}return t.writeVector3d(210,this.normal),this}dxfOutAs2dPolyline(t,e=!1){var r,s,a;t.writeHandle(5,this.objectId),t.writeObjectId(330,this.ownerId),t.writeObjectId(360,this.extensionDictionary),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency);const n=(r=this.database)==null?void 0:r.tables.blockTable.getIdAt(this.ownerId);n!=null&&n.isPaperSapce&&t.writeInt16(67,1),t.writeSubclassMarker("AcDb2dPolyline"),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,this.closed?1:0),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation),e&&this.dxfOutXData(t);for(let o=0;o<this.numberOfVertices;++o){const c=this._geo.vertices[o];t.writeStart("VERTEX"),t.writeHandle(5,(s=this.database)==null?void 0:s.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPoint2dAt(o).x,y:this.getPoint2dAt(o).y,z:this.elevation});const l=(c==null?void 0:c.bulge)??0;l!==0&&t.writeDouble(42,l),t.writeInt16(70,0)}return t.writeStart("SEQEND"),t.writeHandle(5,(a=this.database)==null?void 0:a.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPolyline"),this.reset(!1);let e=!1,n=this.elevation,r=this.thickness,s=this.normal.x,a=this.normal.y,o=this.normal.z,c=-1,l=0,h=0,u=!1,d=0,g=-1,f=-1,p,m=0;const y=()=>{if(!u)return;const b=g<0?c:g,_=f<0?c:f;if(jo.x=l,jo.y=h,this.addVertexAt(m++,jo,d,b,_),p!=null){const w=this._geo.vertices[m-1];w&&(w.identifier=p)}u=!1,d=0,g=-1,f=-1,p=void 0};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 90:break;case 70:e=(w&1)!==0;break;case 43:c=w;break;case 38:n=w;break;case 39:r=w;break;case 10:y(),l=w,h=0,u=!0;break;case 20:h=w;break;case 40:g=w;break;case 41:f=w;break;case 42:d=w;break;case 91:p=w;break;case 210:s=w;break;case 220:a=w;break;case 230:o=w;break}}return y(),this.closed=e,this.elevation=n,this.thickness=r,s*s+a*a+o*o>0&&this.normal.set(s,a,o).normalize(),this}resolveConstantWidth(){const t=this._geo.vertices;if(t.length===0)return;let e;for(const n of t){const r=n.startWidth,s=n.endWidth;if(r==null&&s==null){if(e!=null&&e!==0)return;e=e??0;continue}const a=r??0;if(a!==(s??0))return;if(e==null)e=a;else if(e!==a)return}return e!=null&&e!==0?e:void 0}hasRenderableWidth(){const t=this._geo.vertices;for(let e=0;e<t.length;e++){const n=Math.max(0,t[e].startWidth??0),r=Math.max(0,t[e].endWidth??0);if(n>kt||r>kt)return!0}return!1}createWidthProfile(t){const e=this._geo.vertices,n=e.length;if(n<2)return null;const r=this.closed?n:n-1,s=[];let a=!1;for(let o=0;o<r;o++){const c=e[o],l=e[(o+1)%n],h=Math.max(0,c.startWidth??0),u=Math.max(0,c.endWidth??0);(h>kt||u>kt)&&(a=!0);const d=this.sampleSegment(c,l,t),g=d.length-1;for(let f=0;f<=g;f++){if(f===0&&s.length>0||this.closed&&o===r-1&&f===g)continue;const p=g>0?f/g:0;s.push({x:d[f].x,y:d[f].y,width:bw(h,u,p)})}}return a&&s.length>=2?s:null}sampleSegment(t,e,n){if(t.bulge&&Math.abs(t.bulge)>kt){const s=new J(t,e,t.bulge).tessellate(n);if(s.length>1)return s.map(a=>new M(a.x,a.y))}return[new M(t.x,t.y),new M(e.x,e.y)]}static from2dPoints(t,e){const n=new di;return t.forEach((r,s)=>n.addVertexAt(s,r)),n.closed=e,n}static fromGePolyline(t){const e=new di;return t.vertices.forEach((n,r)=>{e.addVertexAt(r,new M(n.x,n.y),n.bulge??0)}),e.closed=t.closed,e}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.numberOfVertices;let n=1/0,r=1;const s=this.closed?e:e-1;for(let a=0;a<s;a++){const o=this.getPoint2dAt(a),c=this.getPoint2dAt((a+1)%e),l=c.x-o.x,h=c.y-o.y,u=l*l+h*h;if(u===0)continue;const d=Math.max(0,Math.min(1,((t.x-o.x)*l+(t.y-o.y)*h)/u)),g=(t.x-o.x-d*l)**2+(t.y-o.y-d*h)**2;g<n&&(n=g,r=l*(t.y-o.y)-h*(t.x-o.x)>=0?1:-1)}return r}createOffsetCurve(t){const e=this._geo.offset(t);return e.length===0?null:di.fromGePolyline(e[0])}};di.typeName="Polyline";let Vt=di;function mo(i,t,e){const n=Qy(i,t,e);return n?Vt.fromGePolyline(n):null}const kt=1e-6,zu=4;function hw(i){const t=Yl(i,!0);if(t.length<2)return null;const{left:e,right:n}=zl(t,!0),r=Fi(e),s=Fi(n);if(!Hn(r)||!Hn(s)||r.length!==s.length)return null;const a=Math.abs(Un(r)),o=Math.abs(Un(s)),[c,l]=a>=o?[r,s]:[s,r];return{outer:c,inner:l}}function uw(i,t){if(i.length<2)return null;if(t){const r=Yu(i,!0);return r?[r]:null}const e=dw(i),n=[];for(const r of e){const s=Yu(r,!1);s!=null&&n.push(s)}return n.length>0?n:null}function Yu(i,t){const e=Yl(i,t);if(e.length<2)return null;const{left:n,right:r}=zl(e,t);if(Vu(n)<2||Vu(r)<2)return null;const s=new Ye;if(t){const a=Fi(n),o=Fi(r),c=Hn(a),l=Hn(o);if(!c&&!l)return null;if(!c||!l)return s.add(new ot(c?a:o,!0)),s;const h=Math.abs(Un(a)),u=Math.abs(Un(o)),[d,g]=h>=u?[a,o]:[o,a];return s.add(new ot(d,!0)),s.add(new ot(g,!0)),s}return Ap(e)&&fw(s,e)||mw(s,n,r)?s:null}function dw(i){if(i.length<2)return[i];const t=[];let e=0;const n=new Map;for(let s=0;s<i.length;s++){const a=ju(i[s]),o=n.get(a);if(o!=null&&s-o>1){const c=i.slice(e,s+1);if(c.length>=2&&t.push(c),o===e&&s===i.length-1)return t.length>0?t:[i];e=o,n.clear();for(let l=e;l<=s;l++)n.set(ju(i[l]),l);continue}n.set(a,s)}const r=i.slice(e);return r.length>=2&&t.push(r),t.length>0?t:[i]}function ju(i){return`${i.x.toFixed(4)}:${i.y.toFixed(4)}`}function gw(i,t){const e=Math.max(i,t),n=Math.min(i,t);return e<=kt?!1:e-n>kt}function Ap(i){if(i.length<3)return!1;const t=i[0],e=i[i.length-1],n=Math.hypot(e.x-t.x,e.y-t.y);if(n<=kt)return!0;const r=Math.max(...i.map(s=>s.width));return r<=kt?!1:n<=r*4}function fw(i,t){const{left:e,right:n}=zl(t,!0),r=Fi(e),s=Fi(n);if(!Hn(r)||!Hn(s))return!1;const a=Math.abs(Un(r)),o=Math.abs(Un(s));if(!gw(a,o))return!1;const[c,l]=a>=o?[r,s]:[s,r];return i.add(new ot(c,!0)),i.add(new ot(l,!0)),!0}function zl(i,t){const e=new Array(i.length),n=new Array(i.length);for(let r=0;r<i.length;r++){const s=i[r],a=Math.max(0,s.width)/2;if(a<=kt){e[r]={x:s.x,y:s.y},n[r]={x:s.x,y:s.y};continue}const o=yw(i,r,t);if(o==null){e[r]=null,n[r]=null;continue}e[r]={x:s.x+o.x*a,y:s.y+o.y*a},n[r]={x:s.x-o.x*a,y:s.y-o.y*a}}return{left:e,right:n}}function pw(i,t,e,n,r){const s=[t,e,n,r];return Hn(s)?(i.add(new ot(s,!0)),!0):!1}function mw(i,t,e){let n=!1;for(let r=0;r<t.length-1;r++){const s=t[r],a=t[r+1],o=e[r],c=e[r+1];s==null||a==null||o==null||c==null||pw(i,s,a,c,o)&&(n=!0)}return n}function Vu(i){return i.reduce((t,e)=>e==null?t:t+1,0)}function Fi(i){return i.filter(t=>t!=null)}function Yl(i,t){const e=[];if(i.forEach(n=>{const r=e[e.length-1];(!r||Math.abs(r.x-n.x)>kt||Math.abs(r.y-n.y)>kt||Math.abs(r.width-n.width)>kt)&&e.push(n)}),t&&e.length>1){const n=e[0],r=e[e.length-1];Math.abs(n.x-r.x)<=kt&&Math.abs(n.y-r.y)<=kt&&e.pop()}return e}function yw(i,t,e){const n=i.length,r=i[t],s=i[(t-1+n)%n],a=i[(t+1)%n];let o=Uu(r.x-s.x,r.y-s.y),c=Uu(a.x-r.x,a.y-r.y);if(e||(t===0&&(o=c),t===n-1&&(c=o)),o==null&&c==null)return null;if(o==null)return gs(c);if(c==null)return gs(o);const l=gs(o),h=gs(c),u=l.x+h.x,d=l.y+h.y,g=Math.hypot(u,d);if(g<=kt)return h;const f={x:u/g,y:d/g},p=Math.abs(f.x*h.x+f.y*h.y),m=p<=kt?zu:Math.min(1/p,zu);return{x:f.x*m,y:f.y*m}}function Uu(i,t){const e=Math.hypot(i,t);return e<=kt?null:{x:i/e,y:t/e}}function gs(i){return{x:-i.y,y:i.x}}function Un(i){let t=0;const e=i.length;for(let n=0;n<e;n++){const r=i[n],s=i[(n+1)%e];t+=r.x*s.y-s.x*r.y}return t/2}function Hn(i){return i.length>=3&&Math.abs(Un(i))>kt}function bw(i,t,e){return i+(t-i)*e}const _w={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:23},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:24}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:26}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:28},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:29}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:31},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:32}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:34},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:35},{angle:45,originX:.353553391,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:36},{angle:45,originX:.530330086,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:37}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:39},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.3125,-.0625,0,-.0625],sourceLine:40}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:.21875,deltaY:.125,dashes:[.3125,-.0625,0,-.0625],sourceLine:42}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:45}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:47},{angle:135,originX:0,originY:0,deltaX:.25,deltaY:.125,dashes:[.3125,-.1875],sourceLine:48}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:54},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[8,-8],sourceLine:55}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:57},{angle:0,originX:-8,originY:.375,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:58},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:59},{angle:90,originX:-.375,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:60}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:62},{angle:90,originX:0,originY:0,deltaX:8,deltaY:4,dashes:[8,-8],sourceLine:63}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:65},{angle:0,originX:0,originY:2.25,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:66},{angle:0,originX:2,originY:2.667,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:67},{angle:0,originX:2,originY:4.917,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:68},{angle:90,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:69},{angle:90,originX:-.375,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:70},{angle:90,originX:2,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:71},{angle:90,originX:1.625,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:72}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:2.667,dashes:[],sourceLine:74},{angle:90,originX:0,originY:0,deltaX:2.667,deltaY:4,dashes:[2.667,-2.667],sourceLine:75}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:77},{angle:355,originX:0,originY:0,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:78},{angle:100.45144446,originX:.59771681,originY:-.05229344,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.63740192,-7.01142112],sourceLine:79},{angle:46.1842,originX:0,originY:2,deltaX:6.19462554,deltaY:-8.84684596,dashes:[1.125,-12.375],sourceLine:80},{angle:96.63563549,originX:.88936745,originY:1.86206693,deltaX:8.59588239,deltaY:-10.40964966,dashes:[.95610342,-10.5171376],sourceLine:81},{angle:351.18416399,originX:0,originY:2,deltaX:7.74327494,deltaY:11.05855746,dashes:[.9,-9.90000001],sourceLine:82},{angle:21,originX:1,originY:1.5,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:83},{angle:326,originX:1,originY:1.5,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:84},{angle:71.45144474,originX:1.49742254,originY:1.16448426,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.6374019,-7.01142112],sourceLine:85},{angle:37.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-6.52,0,-6.7,0,-6.625],sourceLine:86},{angle:7.5,originX:0,originY:0,deltaX:3.123,deltaY:3.567,dashes:[0,-3.82,0,-6.37,0,-2.525],sourceLine:87},{angle:-32.5,originX:-2.23,originY:0,deltaX:4.6234,deltaY:2.678,dashes:[0,-2.5,0,-7.8,0,-10.35],sourceLine:88},{angle:-42.5,originX:-3.23,originY:0,deltaX:3.6234,deltaY:4.678,dashes:[0,-3.25,0,-5.18,0,-7.35],sourceLine:89}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:4,deltaY:4,dashes:[12,-4],sourceLine:91},{angle:135,originX:2.828427125,originY:2.828427125,deltaX:4,deltaY:-4,dashes:[12,-4],sourceLine:92}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:94},{angle:90,originX:2,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:95},{angle:90,originX:4,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:96},{angle:90,originX:6,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:97},{angle:90,originX:8,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:98},{angle:90,originX:10,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:99},{angle:90,originX:12,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:100},{angle:0,originX:0,originY:12,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:101},{angle:0,originX:0,originY:14,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:102},{angle:0,originX:0,originY:16,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:103},{angle:0,originX:0,originY:18,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:104},{angle:0,originX:0,originY:20,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:105},{angle:0,originX:0,originY:22,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:106},{angle:0,originX:0,originY:24,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:107}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:2.2,deltaY:1,dashes:[15,-2,5,-1],sourceLine:109},{angle:0,originX:1.33,originY:.5,deltaX:-1,deltaY:1.33,dashes:[3,-.33,6,-.75],sourceLine:110},{angle:0,originX:.5,originY:.85,deltaX:5.2,deltaY:.67,dashes:[8,-1.4,4,-1],sourceLine:111}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:25.5,deltaY:12,dashes:[6,-5,7,-3,9,-4],sourceLine:113},{angle:0,originX:6,originY:.5,deltaX:25.5,deltaY:12,dashes:[5,-19,4,-6],sourceLine:114},{angle:0,originX:18,originY:-.75,deltaX:25.5,deltaY:12,dashes:[3,-31],sourceLine:115},{angle:90,originX:0,originY:0,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:116},{angle:90,originX:6,originY:0,deltaX:12,deltaY:8.5,dashes:[11.25,-36.75],sourceLine:117},{angle:90,originX:11,originY:0,deltaX:12,deltaY:8.5,dashes:[10.5,-37.5],sourceLine:118},{angle:90,originX:18,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:119},{angle:90,originX:21,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:120},{angle:90,originX:30,originY:0,deltaX:12,deltaY:8.5,dashes:[11,-37],sourceLine:121}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:1.123,deltaY:1.567,dashes:[0,-1.52,0,-1.7,0,-1.625],sourceLine:123},{angle:7.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-.82,0,-1.37,0,-.525],sourceLine:124},{angle:-32.5,originX:-1.23,originY:0,deltaX:2.6234,deltaY:1.678,dashes:[0,-.5,0,-1.8,0,-2.35],sourceLine:125},{angle:-42.5,originX:-1.23,originY:0,deltaX:1.6234,deltaY:2.678,dashes:[0,-.25,0,-1.18,0,-1.35],sourceLine:126}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:128},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:129},{angle:0,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:130},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:131},{angle:0,originX:0,originY:.5,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:132},{angle:0,originX:0,originY:.75,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:133},{angle:90,originX:.5,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:134},{angle:90,originX:.75,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:135}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:137},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:138}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:140},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.5,dashes:[.25,-.25],sourceLine:141},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:.5,dashes:[-.25,.25],sourceLine:142}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.33,dashes:[],sourceLine:144},{angle:90,originX:.9,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:145},{angle:90,originX:.8,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:146},{angle:0,originX:.9,originY:.055,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:147},{angle:0,originX:.9,originY:.11,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:148},{angle:0,originX:.9,originY:.165,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:149},{angle:0,originX:.9,originY:.22,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:150},{angle:0,originX:.9,originY:.275,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:151}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.1875,dashes:[],sourceLine:153},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.1875,dashes:[],sourceLine:154},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.1875,dashes:[],sourceLine:155},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.1875,dashes:[.1875,-.125],sourceLine:156}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:158},{angle:135,originX:.0625,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:159},{angle:135,originX:.09375,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:160},{angle:135,originX:.125,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:161}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:163},{angle:90,originX:.0625,originY:-.0625,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:164}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:166}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:168},{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[.3535533905932738,-.7071067811865476],sourceLine:169}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.03125,deltaY:.0625,dashes:[0,-.0625],sourceLine:171}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:173},{angle:0,originX:0,originY:.09375,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:174},{angle:0,originX:0,originY:.1875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:175},{angle:90,originX:.03125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:176},{angle:90,originX:.125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:177},{angle:90,originX:.21875,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:178}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:180},{angle:180,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:181},{angle:300,originX:0,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:182},{angle:60,originX:.1,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:183},{angle:300,originX:.1,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:184},{angle:60,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:185},{angle:180,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:186},{angle:300,originX:-.05,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:187},{angle:180,originX:-.05,originY:-.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:188},{angle:60,originX:-.4,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:189},{angle:300,originX:-.4,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:190},{angle:60,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:191},{angle:180,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:192},{angle:300,originX:.2,originY:.346410161,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:193},{angle:180,originX:.2,originY:.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:194},{angle:0,originX:.2,originY:.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:195},{angle:0,originX:.2,originY:-.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:196},{angle:120,originX:.05,originY:.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:197},{angle:120,originX:-.25,originY:.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:198},{angle:240,originX:-.25,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:199},{angle:240,originX:.05,originY:-.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:200}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[.25,-.25],sourceLine:202},{angle:45,originX:.25,originY:0,deltaX:.176776695296,deltaY:.176776695296,dashes:[.0625,-.2285533906,.0625,-.353553390593],sourceLine:203}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:205},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:206},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:207}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:209},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:210},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:211}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:213},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:214},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:215}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:.707106781,deltaY:.707106781,dashes:[.1875,-1.226713563],sourceLine:217},{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:218},{angle:135,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:219}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.03125,dashes:[],sourceLine:221},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:222}]},{name:"GRAVEL",description:"",lines:[{angle:228.012787504,originX:.72,originY:1,deltaX:12.0413651692039,deltaY:.0743294146632,dashes:[.134536,-13.3190880470737],sourceLine:224},{angle:184.969740728,originX:.63,originY:.9,deltaX:-12.0415166747131,deltaY:.0433148081592,dashes:[.230868,-22.85592476123],sourceLine:225},{angle:132.510447078,originX:.4,originY:.88,deltaX:-14.8659418273816,deltaY:.061429511683,dashes:[.162788,-16.1160325960997],sourceLine:226},{angle:267.273689006,originX:.01,originY:.63,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:227},{angle:292.833654178,originX:0,originY:.42,deltaX:-12.9999095019474,deltaY:.048507125026,dashes:[.206155,-20.4093731280883],sourceLine:228},{angle:357.273689006,originX:.08,originY:.23,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:229},{angle:37.6942404667,originX:.29,originY:.22,deltaX:-16.4011800288558,deltaY:.0359675000664,dashes:[.278029,-27.524848548916],sourceLine:230},{angle:72.2553283749,originX:.51,originY:.39,deltaX:23.0867613281116,deltaY:.0380969659053,dashes:[.262488,-25.9863214968134],sourceLine:231},{angle:121.429565615,originX:.59,originY:.64,deltaX:15.2642639131074,deltaY:.047404546271,dashes:[.21095,-20.884073109729],sourceLine:232},{angle:175.236358309,originX:.48,originY:.82,deltaX:-11.0450488205478,deltaY:.083045479801,dashes:[.240832,-11.8007625787923],sourceLine:233},{angle:222.397437798,originX:.24,originY:.84,deltaX:16.2787889313724,deltaY:.0321080648114,dashes:[.311448,-30.8333750047949],sourceLine:234},{angle:138.814074834,originX:1,originY:.62,deltaX:9.2190645101588,deltaY:.0940720868851,dashes:[.106301,-10.5238448127347],sourceLine:235},{angle:171.46923439,originX:.92,originY:.69,deltaX:-13.1528534931484,deltaY:.0494468176315,dashes:[.202237,-20.021511416157],sourceLine:236},{angle:225,originX:.72,originY:.72,deltaX:.7071067811865,deltaY:.7071067811865,dashes:[.141421,-1.2727925623731],sourceLine:237},{angle:203.198590514,originX:.65,originY:.84,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.076158,-7.5396151058639],sourceLine:238},{angle:291.801409486,originX:.58,originY:.81,deltaX:-3.156820749011,deltaY:.185695338158,dashes:[.107703,-5.2774618071345],sourceLine:239},{angle:30.9637565321,originX:.62,originY:.71,deltaX:3.6014702879928,deltaY:.1714985851408,dashes:[.174929,-5.6560228948453],sourceLine:240},{angle:161.565051177,originX:.77,originY:.8,deltaX:-2.2135943621183,deltaY:.3162277660138,dashes:[.126491,-3.0357866601684],sourceLine:241},{angle:16.389540334,originX:0,originY:.81,deltaX:10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.5428451466694],sourceLine:242},{angle:70.3461759419,originX:.17,originY:.86,deltaX:-11.7045066155395,deltaY:.0672672793901,dashes:[.148661,-14.717407747319],sourceLine:243},{angle:293.198590514,originX:.77,originY:1,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.152315,-7.4634581058639],sourceLine:244},{angle:343.610459666,originX:.83,originY:.86,deltaX:-10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.542845146669],sourceLine:245},{angle:339.44395478,originX:0,originY:.19,deltaX:-5.3838927710229,deltaY:.117041147157,dashes:[.17088,-8.3731237453175],sourceLine:246},{angle:294.775140569,originX:.16,originY:.13,deltaX:-12.0828441168135,deltaY:.0698430296124,dashes:[.143178,-14.174643063276],sourceLine:247},{angle:66.8014094864,originX:.78,originY:0,deltaX:5.3835637472487,deltaY:.1313064328552,dashes:[.152315,-7.4634581058639],sourceLine:248},{angle:17.3540246363,originX:.84,originY:.14,deltaX:-13.6013396869991,deltaY:.0596549986364,dashes:[.167631,-16.59542361424],sourceLine:249},{angle:69.4439547804,originX:.29,originY:0,deltaX:-5.383892771022,deltaY:.1170411471946,dashes:[.08544,-8.4585637453175],sourceLine:250},{angle:101.309932474,originX:.72,originY:0,deltaX:4.1184388379018,deltaY:.1961161351396,dashes:[.05099,-5.0480295135928],sourceLine:251},{angle:165.963756532,originX:.71,originY:.05,deltaX:-3.1529631254726,deltaY:.2425356250323,dashes:[.206155,-3.9169506256177],sourceLine:252},{angle:186.009005957,originX:.51,originY:.1,deltaX:-10.0497393137326,deltaY:.0523423921723,dashes:[.19105,-18.9139231745428],sourceLine:253},{angle:303.690067526,originX:.62,originY:.62,deltaX:-2.2188007849008,deltaY:.2773500981134,dashes:[.144222,-3.461329275464],sourceLine:254},{angle:353.157226587,originX:.7,originY:.5,deltaX:17.1171966955143,deltaY:.0397150736497,dashes:[.251794,-24.9275626240283],sourceLine:255},{angle:60.9453959009,originX:.95,originY:.47,deltaX:-8.0616726575653,deltaY:.0971285862325,dashes:[.102956,-10.192674140987],sourceLine:256},{angle:90,originX:1,originY:.56,deltaX:1,deltaY:1,dashes:[.06,-.94],sourceLine:257},{angle:120.256437164,originX:.49,originY:.13,deltaX:-8.0619364083848,deltaY:.0719815751411,dashes:[.138924,-13.7535199894498],sourceLine:258},{angle:48.0127875042,originX:.42,originY:.25,deltaX:12.0413651692041,deltaY:.0743294146212,dashes:[.269072,-13.1845520470737],sourceLine:259},{angle:0,originX:.6,originY:.45,deltaX:1,deltaY:1,dashes:[.26,-.74],sourceLine:260},{angle:325.304846469,originX:.86,originY:.45,deltaX:12.2063917682497,deltaY:-.063245553253,dashes:[.158114,-15.653274300842],sourceLine:261},{angle:254.054604099,originX:.99,originY:.36,deltaX:4.1208169184605,deltaY:.1373605639542,dashes:[.145602,-7.1345078892805],sourceLine:262},{angle:207.645975364,originX:.95,originY:.22,deltaX:21.4708691170287,deltaY:.0421824539631,dashes:[.237065,-23.4694741822594],sourceLine:263},{angle:175.42607874,originX:.74,originY:.11,deltaX:13.0383438432524,deltaY:.039872611164,dashes:[.250799,-24.8290734079689],sourceLine:264}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:266},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:267},{angle:60,originX:.125,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:268}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:270},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:271},{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[-.25,.125],sourceLine:272}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.0625,dashes:[1,-.5],sourceLine:274},{angle:90,originX:0,originY:0,deltaX:-.25,deltaY:.0625,dashes:[1,-.5],sourceLine:275}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:277},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:278},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:279}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:292}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:294}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:296}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:298}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:300},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:301}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:303}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:305}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:307}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:309}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:311}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:313}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:315},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:316}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:318},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:319}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:321},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:322}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:327}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.25,dashes:[.25,-.25,0,-.25,0,-.25],sourceLine:329}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:331},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:332}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:334},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:335},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:336}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:338},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:339},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:340}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:342},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:343},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:344},{angle:0,originX:0,originY:.15625,deltaX:0,deltaY:.25,dashes:[],sourceLine:345}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.09375,dashes:[],sourceLine:347},{angle:45,originX:.066291261,originY:0,deltaX:0,deltaY:.09375,dashes:[0,-.09375],sourceLine:348}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:350},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:351}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:353},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:354},{angle:120,originX:.0625,originY:.108253176,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:355}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:357},{angle:45,originX:0,originY:.0625,deltaX:0,deltaY:.125,dashes:[],sourceLine:358}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.125,-.875],sourceLine:360},{angle:90,originX:.0625,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.0625,-1.669550806],sourceLine:361},{angle:90,originX:.078125,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:362},{angle:90,originX:.046875,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:363},{angle:60,originX:.09375,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:364},{angle:120,originX:.03125,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:365}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:367},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.125],sourceLine:368}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:370},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:371},{angle:0,originX:-.09375,originY:.162379763,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:372}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:374},{angle:90,originX:.125,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:375}]}],issues:[]},Sp={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:20},{angle:90,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:21}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:23}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:25},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:26}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:28},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:29}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:31},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:32},{angle:45,originX:8.98026,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:33},{angle:45,originX:13.4704,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:34}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:36},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:37}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:5.55625,deltaY:3.175,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:39}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:41},{angle:135,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:42}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:6.35,deltaY:3.175,dashes:[7.9375,-4.7625],sourceLine:45}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:47},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[203.2,-203.2],sourceLine:48}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:50},{angle:0,originX:-203.2,originY:9.525,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:51},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:52},{angle:90,originX:-9.525,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:53}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:55},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:101.6,dashes:[203.2,-203.2],sourceLine:56}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:58},{angle:0,originX:0,originY:57.15,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:59},{angle:0,originX:50.8,originY:67.7418,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:60},{angle:0,originX:50.8,originY:124.892,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:61},{angle:90,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:62},{angle:90,originX:-9.525,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:63},{angle:90,originX:50.8,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:64},{angle:90,originX:41.275,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:65}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:67.7418,dashes:[],sourceLine:67},{angle:90,originX:0,originY:0,deltaX:67.7418,deltaY:101.6,dashes:[67.7418,-67.7418],sourceLine:68}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:104.896,deltaY:-149.807,dashes:[19.05,-209.55],sourceLine:70},{angle:355,originX:0,originY:0,deltaX:-51.76101082,deltaY:187.25814969,dashes:[15.24,-167.64058417],sourceLine:71},{angle:100.4514447,originX:15.182007,originY:-1.3282535,deltaX:145.5569059,deltaY:-176.270089,dashes:[16.1900088,-178.0902446],sourceLine:72},{angle:46.1842,originX:0,originY:50.8,deltaX:157.343,deltaY:-224.71,dashes:[28.575,-314.325],sourceLine:73},{angle:96.63555761,originX:22.5899,originY:47.2965,deltaX:218.33577212,deltaY:-264.40480444,dashes:[24.28502314,-267.13560816],sourceLine:74},{angle:351.18415117,originX:0,originY:50.8,deltaX:196.67912063,deltaY:280.88740361,dashes:[22.85996707,-251.45973192],sourceLine:75},{angle:21,originX:25.4,originY:38.1,deltaX:104.89565868,deltaY:-149.80652586,dashes:[19.05,-209.55],sourceLine:76},{angle:326,originX:25.4,originY:38.1,deltaX:-51.7604,deltaY:187.258,dashes:[15.24,-167.64],sourceLine:77},{angle:71.451445,originX:38.0345326,originY:29.5779001,deltaX:145.5567546,deltaY:-176.2700748,dashes:[16.1900088,-178.0899376],sourceLine:78},{angle:37.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-165.608,0,-170.18,0,-168.275],sourceLine:79},{angle:7.5,originX:0,originY:0,deltaX:79.3242,deltaY:90.6018,dashes:[0,-97.028,0,-161.798,0,-64.135],sourceLine:80},{angle:-32.5,originX:-56.642,originY:0,deltaX:117.434,deltaY:68.0212,dashes:[0,-63.5,0,-198.12,0,-262.89],sourceLine:81},{angle:-42.5,originX:-82.042,originY:0,deltaX:92.0344,deltaY:118.821,dashes:[0,-82.55,0,-131.572,0,-186.69],sourceLine:82}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:101.6,deltaY:101.6,dashes:[304.8,-101.6],sourceLine:84},{angle:135,originX:71.842,originY:71.842,deltaX:101.6,deltaY:-101.6,dashes:[304.8,-101.6],sourceLine:85}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:87},{angle:90,originX:50.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:88},{angle:90,originX:101.6,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:89},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:90},{angle:90,originX:203.2,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:91},{angle:90,originX:254,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:92},{angle:90,originX:304.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:93},{angle:0,originX:0,originY:304.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:94},{angle:0,originX:0,originY:355.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:95},{angle:0,originX:0,originY:406.4,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:96},{angle:0,originX:0,originY:457.2,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:97},{angle:0,originX:0,originY:508,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:98},{angle:0,originX:0,originY:558.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:99},{angle:0,originX:0,originY:609.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:100}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:55.88,deltaY:25.4,dashes:[381,-50.8,127,-25.4],sourceLine:102},{angle:0,originX:33.782,originY:12.7,deltaX:-25.4,deltaY:33.782,dashes:[76.2,-8.382,152.4,-19.05],sourceLine:103},{angle:0,originX:12.7,originY:21.59,deltaX:132.08,deltaY:17.018,dashes:[203.2,-35.56,101.6,-25.4],sourceLine:104}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:647.7,deltaY:304.8,dashes:[152.4,-127,177.8,-76.2,228.6,-101.6],sourceLine:106},{angle:0,originX:152.4,originY:12.7,deltaX:647.7,deltaY:304.8,dashes:[127,-482.6,101.6,-152.4],sourceLine:107},{angle:0,originX:457.2,originY:-19.05,deltaX:647.7,deltaY:304.8,dashes:[76.2,-787.4],sourceLine:108},{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:109},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[285.75,-933.45],sourceLine:110},{angle:90,originX:279.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[266.7,-952.5],sourceLine:111},{angle:90,originX:457.2,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:112},{angle:90,originX:533.4,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:113},{angle:90,originX:762,originY:0,deltaX:304.8,deltaY:215.9,dashes:[279.4,-939.8],sourceLine:114}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:28.5242,deltaY:39.8018,dashes:[0,-38.608,0,-43.18,0,-41.275],sourceLine:116},{angle:7.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-20.828,0,-34.798,0,-13.335],sourceLine:117},{angle:-32.5,originX:-31.242,originY:0,deltaX:66.6344,deltaY:42.6212,dashes:[0,-12.7,0,-45.72,0,-59.69],sourceLine:118},{angle:-42.5,originX:-31.242,originY:0,deltaX:41.2344,deltaY:68.0212,dashes:[0,-6.35,0,-29.972,0,-34.29],sourceLine:119}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:121},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:122},{angle:0,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:123},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:124},{angle:0,originX:0,originY:12.7,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:125},{angle:0,originX:0,originY:19.05,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:126},{angle:90,originX:12.7,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:127},{angle:90,originX:19.05,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:128}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:130},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:131}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:133},{angle:90,originX:0,originY:0,deltaX:0,deltaY:12.7,dashes:[6.35,-6.35],sourceLine:134},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:12.7,dashes:[-6.35,6.35],sourceLine:135}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8.382,dashes:[],sourceLine:137},{angle:90,originX:22.86,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:138},{angle:90,originX:20.32,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:139},{angle:0,originX:22.86,originY:1.397,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:140},{angle:0,originX:22.86,originY:2.794,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:141},{angle:0,originX:22.86,originY:4.191,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:142},{angle:0,originX:22.86,originY:5.588,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:143},{angle:0,originX:22.86,originY:6.985,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:144}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:146},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:147},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:148},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:4.7625,dashes:[4.7625,-3.175],sourceLine:149}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:151},{angle:135,originX:1.5875,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:152},{angle:135,originX:2.38125,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:153},{angle:135,originX:3.175,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:154}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:156},{angle:90,originX:1.5875,originY:-1.5875,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:157}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:159}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:161},{angle:45,originX:0,originY:0,deltaX:0,deltaY:17.9605,dashes:[8.980256121069154,-17.960512242138307],sourceLine:162}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.79375,deltaY:1.5875,dashes:[0,-1.5875],sourceLine:164}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:166},{angle:0,originX:0,originY:2.38125,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:167},{angle:0,originX:0,originY:4.7625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:168},{angle:90,originX:.79375,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:169},{angle:90,originX:3.175,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:170},{angle:90,originX:5.55625,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:171}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:173},{angle:180,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:174},{angle:300,originX:0,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:175},{angle:60,originX:2.54,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:176},{angle:300,originX:2.54,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:177},{angle:60,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:178},{angle:180,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:179},{angle:300,originX:-1.27,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:180},{angle:180,originX:-1.27,originY:-2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:181},{angle:60,originX:-10.16,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:182},{angle:300,originX:-10.16,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:183},{angle:60,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:184},{angle:180,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:185},{angle:300,originX:5.08,originY:8.7988180894,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:186},{angle:180,originX:5.08,originY:8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:187},{angle:0,originX:5.08,originY:4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:188},{angle:0,originX:5.08,originY:-4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:189},{angle:120,originX:1.27,originY:6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:190},{angle:120,originX:-6.35,originY:2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:191},{angle:240,originX:-6.35,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:192},{angle:240,originX:1.27,originY:-6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:193}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:195},{angle:45,originX:6.35,originY:0,deltaX:4.490128053,deltaY:4.490128053,dashes:[1.5875,-5.8052561314,1.5875,-8.9802561314],sourceLine:196}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:198},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:199},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:200}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:202},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:203},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:204}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:206},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:207},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:208}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:17.96051224,deltaY:17.96051224,dashes:[4.7625,-31.15852448],sourceLine:210},{angle:45,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:211},{angle:135,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:212}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.79375,dashes:[],sourceLine:214},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:215}]},{name:"GRAVEL",description:"",lines:[{angle:228.0127875,originX:18.288,originY:25.4,deltaX:305.85067529778,deltaY:1.88796713245,dashes:[3.4172144,-338.30483639565],sourceLine:217},{angle:184.969741,originX:16.002,originY:22.86,deltaX:-305.8545235377,deltaY:1.10019612724,dashes:[5.8640472,-580.54048893524],sourceLine:218},{angle:132.5104471,originX:10.16,originY:22.352,deltaX:-377.59492241548,deltaY:1.56030959675,dashes:[4.1348152,-409.347227941],sourceLine:219},{angle:267.273689,originX:.254,originY:16.002,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:220},{angle:292.83365418,originX:0,originY:10.668,deltaX:-330.19770134945,deltaY:1.23208097566,dashes:[5.236337,-518.39807745344],sourceLine:221},{angle:357.273689,originX:2.032,originY:5.842,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:222},{angle:37.69424047,originX:7.366,originY:5.588,deltaX:-416.58997273292,deltaY:.91357450169,dashes:[7.0619366,-699.13115314247],sourceLine:223},{angle:72.25532837,originX:12.954,originY:9.906,deltaX:586.40373773403,deltaY:.96766293399,dashes:[6.6671952,-660.05256601905],sourceLine:224},{angle:121.42956562,originX:14.986,originY:16.256,deltaX:387.71230339293,deltaY:1.2040754753,dashes:[5.35813,-530.45545698712],sourceLine:225},{angle:175.2363583,originX:12.192,originY:20.828,deltaX:-280.5442400419,deltaY:2.10935518695,dashes:[6.1171328,-299.7393695],sourceLine:226},{angle:222.3974378,originX:6.096,originY:21.336,deltaX:413.48123885686,deltaY:.81554484621,dashes:[7.9107792,-783.16772512177],sourceLine:227},{angle:138.81407483,originX:25.4,originY:15.748,deltaX:234.164238558,deltaY:2.38943100688,dashes:[2.7000454,-267.30565824344],sourceLine:228},{angle:171.4692344,originX:23.368,originY:17.526,deltaX:-334.082478726,deltaY:1.25594916784,dashes:[5.1368198,-508.5463899704],sourceLine:229},{angle:225,originX:18.288,originY:18.288,deltaX:17.96051224214,deltaY:17.96051224214,dashes:[3.5920934,-32.32893108428],sourceLine:230},{angle:203.19859051,originX:16.51,originY:21.336,deltaX:-136.74251918,deltaY:3.33518339548,dashes:[1.9344132,-191.50622368894],sourceLine:231},{angle:291.80140949,originX:14.732,originY:20.574,deltaX:-80.18324702488,deltaY:4.71666158921,dashes:[2.7356562,-134.0475299],sourceLine:232},{angle:30.96375653,originX:15.748,originY:18.034,deltaX:91.47734531502,deltaY:4.35606406258,dashes:[4.4431966,-143.6629815291],sourceLine:233},{angle:161.56505118,originX:19.558,originY:20.32,deltaX:-56.2252967978,deltaY:8.03218525675,dashes:[3.2128714,-77.10898116828],sourceLine:234},{angle:16.389540334,originX:0,originY:20.574,deltaX:265.17991128726,deltaY:1.43340492604,dashes:[4.50088,-445.58826672539],sourceLine:235},{angle:70.34617594,originX:4.318,originY:21.844,deltaX:-297.29446803469,deltaY:1.70858889651,dashes:[3.7759894,-373.822156782],sourceLine:236},{angle:293.19859051,originX:19.558,originY:25.4,deltaX:-136.7425191801,deltaY:3.33518339548,dashes:[3.868801,-189.57183588894],sourceLine:237},{angle:343.61045967,originX:21.082,originY:21.844,deltaX:-265.17991128725,deltaY:1.433404926,dashes:[4.50088,-445.5882667254],sourceLine:238},{angle:339.44395478,originX:0,originY:4.826,deltaX:-136.75087638398,deltaY:2.97284513779,dashes:[4.340352,-212.67734313106],sourceLine:239},{angle:294.7751406,originX:4.064,originY:3.302,deltaX:-306.90424056705,deltaY:1.77401295215,dashes:[3.6367212,-360.0359338072],sourceLine:240},{angle:66.80140949,originX:19.812,originY:0,deltaX:136.74251918012,deltaY:3.33518339452,dashes:[3.868801,-189.57183588894],sourceLine:241},{angle:17.35402464,originX:21.336,originY:3.556,deltaX:-345.47402804977,deltaY:1.51523696536,dashes:[4.2578274,-421.523759802],sourceLine:242},{angle:69.44395478,originX:7.366,originY:0,deltaX:-136.75087638396,deltaY:2.97284513874,dashes:[2.170176,-214.84751913106],sourceLine:243},{angle:101.309932474,originX:18.288,originY:0,deltaX:104.60834648271,deltaY:4.98134983255,dashes:[1.295146,-128.21994964526],sourceLine:244},{angle:165.963756532,originX:18.034,originY:1.27,deltaX:-80.085263387,deltaY:6.16040487582,dashes:[5.236337,-99.49054589069],sourceLine:245},{angle:186.00900596,originX:12.954,originY:2.54,deltaX:-255.26337856879,deltaY:1.32949676118,dashes:[4.85267,-480.41364863337],sourceLine:246},{angle:303.69006753,originX:15.748,originY:15.748,deltaX:-56.35753993648,deltaY:7.0446924921,dashes:[3.6632388,-87.9177635968],sourceLine:247},{angle:353.15722659,originX:17.78,originY:12.7,deltaX:434.77679606606,deltaY:1.0087628707,dashes:[6.3955676,-633.16009065031],sourceLine:248},{angle:60.9453959,originX:24.13,originY:11.938,deltaX:-204.76648550216,deltaY:2.46706609031,dashes:[2.6150824,-258.8939231811],sourceLine:249},{angle:90,originX:25.4,originY:14.224,deltaX:25.4,deltaY:25.4,dashes:[1.524,-23.876],sourceLine:250},{angle:120.25643716,originX:12.446,originY:3.302,deltaX:-204.77318477297,deltaY:1.8283320086,dashes:[3.5286696,-349.339407732],sourceLine:251},{angle:48.0127875,originX:10.668,originY:6.35,deltaX:305.85067529778,deltaY:1.88796713138,dashes:[6.8344288,-334.88762199565],sourceLine:252},{angle:0,originX:15.24,originY:11.43,deltaX:25.4,deltaY:25.4,dashes:[6.604,-18.796],sourceLine:253},{angle:325.3048465,originX:21.844,originY:11.43,deltaX:310.04235091354,deltaY:-1.6064370526,dashes:[4.0160956,-397.5931672414],sourceLine:254},{angle:254.0546041,originX:25.146,originY:9.144,deltaX:104.6687497289,deltaY:3.48895832444,dashes:[3.6982908,-181.21650038772],sourceLine:255},{angle:207.64597536,originX:24.13,originY:5.588,deltaX:545.36007557253,deltaY:1.07143433066,dashes:[6.021451,-596.12464422938],sourceLine:256},{angle:175.42607874,originX:18.796,originY:2.794,deltaX:331.1739336186,deltaY:1.01276432357,dashes:[6.3702946,-630.6584645624],sourceLine:257}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:259},{angle:120,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:260},{angle:60,originX:3.175,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:261}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:263},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:264},{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[-6.35,3.175],sourceLine:265}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:267},{angle:90,originX:0,originY:0,deltaX:-6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:268}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:270},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:271},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:272}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:285}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:287}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:289}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:291}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:293},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:294}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:296}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:298}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:300}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:302}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:304}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:306}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:308},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:309}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:311},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:312}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:314},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:315}]},{name:"JIS_LC_20",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:322},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:323}]},{name:"JIS_LC_20A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:325},{angle:45,originX:1,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:326}]},{name:"JIS_LC_8",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:328},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:329}]},{name:"JIS_LC_8A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:331},{angle:45,originX:1,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:332}]},{name:"JIS_RC_10",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:334},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:335},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:336}]},{name:"JIS_RC_15",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:338},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:339},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:340}]},{name:"JIS_RC_18",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:342},{angle:45,originX:1,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:343},{angle:45,originX:2,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:344}]},{name:"JIS_RC_30",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:346},{angle:45,originX:1,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:347},{angle:45,originX:2,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:348}]},{name:"JIS_STN_1E",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:350},{angle:45,originX:.705,originY:0,deltaX:0,deltaY:1,dashes:[1,-.5],sourceLine:351}]},{name:"JIS_STN_2.5",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.5,dashes:[],sourceLine:353},{angle:45,originX:1.765,originY:0,deltaX:0,deltaY:2.5,dashes:[1.2,-.5],sourceLine:354}]},{name:"JIS_WOOD",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[],sourceLine:356}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:359}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:6.35,dashes:[6.35,-6.35,0,-6.35,0,-6.35],sourceLine:361}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:363},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:364}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:366},{angle:60,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:367},{angle:120,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:368}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:370},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:371},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:372}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:374},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:375},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:376},{angle:0,originX:0,originY:3.96875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:377}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.38125,dashes:[],sourceLine:379},{angle:45,originX:1.6838,originY:0,deltaX:0,deltaY:2.38125,dashes:[0,-2.38125],sourceLine:380}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:382},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:383}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:385},{angle:60,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:386},{angle:120,originX:1.5875,originY:2.7496306704,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:387}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:389},{angle:45,originX:0,originY:1.5875,deltaX:0,deltaY:3.175,dashes:[],sourceLine:390}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[3.175,-22.225],sourceLine:392},{angle:90,originX:1.5875,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.5875,-42.4065904724],sourceLine:393},{angle:90,originX:1.984375,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:394},{angle:90,originX:1.190625,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:395},{angle:60,originX:2.38125,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:396},{angle:120,originX:.79375,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:397}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:399},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-3.175],sourceLine:400}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:402},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:403},{angle:0,originX:-2.38125,originY:4.1244459802,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:404}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:406},{angle:90,originX:3.175,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:407}]}],issues:[]};var dr=(i=>(i[i.UserDefined=0]="UserDefined",i[i.Predefined=1]="Predefined",i[i.Custom=2]="Custom",i))(dr||{}),Pp=(i=>(i[i.Normal=0]="Normal",i[i.Outer=1]="Outer",i[i.Ignore=2]="Ignore",i))(Pp||{}),kp=(i=>(i[i.HatchObject=0]="HatchObject",i[i.GradientObject=1]="GradientObject",i))(kp||{}),Ip=(i=>(i[i.PreDefinedGradient=0]="PreDefinedGradient",i[i.UserDefinedGradient=1]="UserDefinedGradient",i))(Ip||{});const hh=class hh extends rt{constructor(){super(),this._areasFromLoopsCache=null,this._normal=new A(0,0,1),this._gradientAngle=0,this._elevation=0,this._geo=new Ye,this._isSolidFill=!1,this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1,this._patternName="",this._patternNameSet=!1,this._patternType=1,this._patternAngle=0,this._patternAngleSet=!1,this._patternScale=1,this._patternScaleSet=!1,this._associative=!1,this._associativeSet=!1,this._backgroundColor=void 0,this._backgroundColorSet=!1,this._patternDouble=!1,this._patternDoubleSet=!1,this._hatchStyle=0,this._hatchStyleSet=!1,this._hatchObjectType=0,this._gradientAngle=0,this._gradientShift=0,this._shadeTintValue=0,this._gradientStartColor=void 0,this._gradientEndColor=void 0,this._pixelSize=void 0,this._gradientType=0,this._gradientName="",this._gradientOneColorMode=!1}get dxfTypeName(){return"HATCH"}get isGradient(){return this._hatchObjectType===1}get isHatch(){return this._hatchObjectType===0}get isSolidFill(){return this._isSolidFill||ar(this.getEffectivePatternName())}set isSolidFill(t){this._isSolidFill=t}get color(){if(this.hasExplicitColor())return this.getEntityColor();const t=this.database,e=xt.instance().getVar(I.HPCOLOR,t);return e instanceof U&&e.colorMethod!==exports.AcCmColorMethod.None?e.clone():t.cecolor.clone()}set color(t){this.setEntityColor(t)}get definitionLines(){return this._definitionLines}get patternName(){return this._patternName}set patternName(t){this._patternName=t??"",this._isSolidFill=ar(this._patternName),this._patternNameSet=!0,this.updatePredefinedPatternDefinitionLines()}get patternType(){return this._patternType}set patternType(t){this._patternType=t,t!==1&&this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1),this.updatePredefinedPatternDefinitionLines()}get patternAngle(){return this._patternAngle}set patternAngle(t){this._patternAngle=t,this._patternAngleSet=!0}get patternScale(){return this._patternScale}set patternScale(t){this._patternScale=t,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}get annotative(){return ve(this)}set annotative(t){pe(this,t)}get associative(){return this._associative}set associative(t){this._associative=!!t,this._associativeSet=!0}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t==null?void 0:t.clone(),this._backgroundColorSet=!0}get patternDouble(){return this._patternDouble}set patternDouble(t){this._patternDouble=!!t,this._patternDoubleSet=!0}get hatchStyle(){return this._hatchStyle}set hatchStyle(t){this._hatchStyle=t,this._hatchStyleSet=!0}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t),this._normal.lengthSq()>0&&this._normal.normalize()}get hatchObjectType(){return this._hatchObjectType}set hatchObjectType(t){this._hatchObjectType=t}get gradientAngle(){return this._gradientAngle}set gradientAngle(t){this._gradientAngle=t}get gradientShift(){return this._gradientShift}set gradientShift(t){this._gradientShift=t}get gradientType(){return this._gradientType}set gradientType(t){this._gradientType=t}get gradientName(){return this.isGradient&&this._gradientName.trim()===""?Wg:this._gradientName}set gradientName(t){this._gradientName=t??""}get gradientOneColorMode(){return this._gradientOneColorMode}set gradientOneColorMode(t){this._gradientOneColorMode=t}get shadeTintValue(){return this._shadeTintValue}set shadeTintValue(t){this._shadeTintValue=t}get gradientStartColor(){return this._gradientStartColor}set gradientStartColor(t){this._gradientStartColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get gradientEndColor(){return this._gradientEndColor}set gradientEndColor(t){this._gradientEndColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize=t}applyPatternDefaultsFromSysVars(t){const e=xt.instance();if(!this.hasExplicitLayer()){const n=e.getVar(I.HPLAYER,t);this.shouldUseSysVarOverride(n)&&(this.layer=n)}if(!this.hasExplicitTransparency()){const n=this.parseHpTransparency(e.getVar(I.HPTRANSPARENCY,t));n&&(this.transparency=n)}if(this._backgroundColorSet||(this._backgroundColor=this.parseHpBackgroundColor(e.getVar(I.HPBACKGROUNDCOLOR,t)),this._backgroundColorSet=!0),!this._patternNameSet){const n=e.getVar(I.HPNAME,t);this._patternName=typeof n=="string"?n:"",this._patternNameSet=!0}if(!this._patternAngleSet){const n=e.getVar(I.HPANG,t);this._patternAngle=typeof n=="number"&&Number.isFinite(n)?n:0,this._patternAngleSet=!0}if(this._patternScaleSet||(this._patternScale=this.normalizePatternScale(e.getVar(I.HPSCALE,t)),this._patternScaleSet=!0),!this._associativeSet){const n=e.getVar(I.HPASSOC,t);this._associative=typeof n=="number"?n!==0:!1,this._associativeSet=!0}if(this._hatchStyleSet||(this._hatchStyle=this.normalizeHatchStyle(e.getVar(I.HPISLANDDETECTION,t)),this._hatchStyleSet=!0),!this._patternDoubleSet){const n=e.getVar(I.HPDOUBLE,t);this._patternDouble=typeof n=="number"?n!==0:!1,this._patternDoubleSet=!0}this.updatePredefinedPatternDefinitionLines()}getEffectivePatternName(){if(this._patternNameSet)return this._patternName;const t=this.database,e=xt.instance().getVar(I.HPNAME,t);return typeof e=="string"?e:this._patternName}shouldResolveColorFromCecolor(){return!1}getEffectivePatternAngle(){if(this._patternAngleSet)return this._patternAngle;const t=this.database,e=xt.instance().getVar(I.HPANG,t);return typeof e=="number"&&Number.isFinite(e)?e:this._patternAngle}getRenderablePatternAngle(){return!this._definitionLinesAutoGenerated&&this._definitionLines.length>0?0:this.getEffectivePatternAngle()}getEffectivePatternScale(){if(this._patternScaleSet)return this._patternScale;const t=this.database;return this.normalizePatternScale(xt.instance().getVar(I.HPSCALE,t))}getEffectiveAssociative(){if(this._associativeSet)return this._associative;const t=this.database,e=xt.instance().getVar(I.HPASSOC,t);return typeof e=="number"?e!==0:this._associative}normalizePatternScale(t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:1}normalizeHatchStyle(t){return typeof t!="number"||!Number.isFinite(t)?1:t===0?0:t===2?2:1}shouldUseSysVarOverride(t){if(typeof t!="string")return!1;const e=t.trim().toLowerCase();return e!==""&&e!=="."&&e!=="use current"}parseHpBackgroundColor(t){if(t instanceof U)return t.colorMethod===exports.AcCmColorMethod.None?void 0:t.clone();if(typeof t!="string")return;const e=t.trim().toLowerCase();if(!(!e||e==="."||e==="none"))return U.fromString(t)}parseHpTransparency(t){if(t instanceof At)return t.clone();if(!this.shouldUseSysVarOverride(t))return;const e=t.trim();if(/^bylayer$/i.test(e)||/^byblock$/i.test(e))return At.fromString(e);const n=Number(e);if(Number.isInteger(n)&&n>=0&&n<=90){const r=new At;return r.percentage=n,r}}updatePredefinedPatternDefinitionLines(t=this.getEffectivePatternName(),e=this.getEffectivePatternScale()){if(this.patternType!==1||!(this._definitionLinesAutoGenerated||this._definitionLines.length===0))return;const r=t.trim().toUpperCase();if(!r||ar(r)){this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1;return}const s=this.normalizePatternScale(e);if(this._definitionLinesAutoGenerated&&this._definitionLinesPatternName===r&&this._definitionLinesPatternScale===s)return;const a=Sp.patterns.find(o=>o.name.trim().toUpperCase()===r);if(!a){this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1);return}this._definitionLines=a.lines.map(o=>({angle:o.angle*Math.PI/180,base:{x:o.originX*s,y:o.originY*s},offset:{x:o.deltaX*s,y:o.deltaY*s},dashLengths:o.dashes.map(c=>c*s)})),this._definitionLinesAutoGenerated=!0,this._definitionLinesPatternName=r,this._definitionLinesPatternScale=s}add(t){this._geo.add(t),this.invalidateAreasFromLoopsCache()}invalidateAreasFromLoopsCache(){this._areasFromLoopsCache=null}buildAreasFromLoops(){if(this._areasFromLoopsCache!=null)return this._areasFromLoopsCache;const t=this._geo.loops;if(t.length===0)return this._areasFromLoopsCache=[],this._areasFromLoopsCache;if(t.length===1)return this._areasFromLoopsCache=[this._geo],this._areasFromLoopsCache;const e=this._geo.buildHierarchy(),n=[],r=(s,a)=>{if(s.index>=0&&a%2===0){const o=new Ye;o.add(t[s.index]),s.children.forEach(c=>{c.index>=0&&o.add(t[c.index])}),n.push(o)}s.children.forEach(o=>r(o,a+1))};return e.children.forEach(s=>r(s,0)),this._areasFromLoopsCache=n.length>0?n:[this._geo],this._areasFromLoopsCache}getCalculatedAreaValue(){const t=this.buildAreasFromLoops();return t.length===0?0:t.reduce((e,n)=>e+n.area,0)}get area(){return this.getCalculatedAreaValue()}get geometricExtents(){const t=this.buildAreasFromLoops();if(t.length===0)return new H;const e=new H;return t.forEach(n=>{const r=n.box;e.union(new H().setFromPoints([oe({x:r.min.x,y:r.min.y,z:this._elevation},this._normal),oe({x:r.max.x,y:r.min.y,z:this._elevation},this._normal),oe({x:r.max.x,y:r.max.y,z:this._elevation},this._normal),oe({x:r.min.x,y:r.max.y,z:this._elevation},this._normal)]))}),e}subGetIntersectCurves(){return Px(this._geo.loops,this._elevation,this._normal)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:dr[0],value:0},{label:dr[1],value:1},{label:dr[2],value:2}],accessor:{get:()=>this.patternType,set:t=>{this.patternType=t}}},{name:"patternName",type:"string",editable:!0,accessor:{get:()=>this.patternName,set:t=>{this.patternName=t}}},{name:"patternAngle",type:"float",editable:!0,accessor:{get:()=>this.patternAngle,set:t=>{this.patternAngle=t}}},{name:"patternScale",type:"float",editable:!0,accessor:{get:()=>this.patternScale,set:t=>{this.patternScale=t}}},{name:"annotative",type:"boolean",editable:!0,accessor:{get:()=>this.annotative,set:t=>{this.annotative=t}}},{name:"associative",type:"boolean",editable:!0,accessor:{get:()=>this.associative,set:t=>{this.associative=t}}},{name:"backgroundColor",type:"color",editable:!0,accessor:{get:()=>this.backgroundColor,set:t=>{this.backgroundColor=t}}},{name:"patternDouble",type:"boolean",editable:!0,accessor:{get:()=>this.patternDouble,set:t=>{this.patternDouble=t}}}]},{groupName:"geometry",properties:[{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){return this.associative?[]:this.collectBoundaryGripPoints()}subMoveGripPointsAt(t,e){return this.associative?this:(It(t,n=>{this.moveBoundaryGripPointAt(n,e)}),this.invalidateAreasFromLoopsCache(),this)}collectBoundaryGripPoints(){const t=new Array,e=this._elevation,n=new Set,r=s=>{const a=`${s.x},${s.y},${s.z??0}`;n.has(a)||(n.add(a),t.push(new x(s.x,s.y,s.z??e)))};return this._geo.loops.forEach(s=>{if(s instanceof ot){const a=s.numberOfVertices;for(let o=0;o<a;o++){const c=s.getPointAt(o);r({x:c.x,y:c.y,z:e})}return}s.curves.forEach(a=>{if(a instanceof mt)r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e});else if(a instanceof J)r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e}),r({x:a.midPoint.x,y:a.midPoint.y,z:e});else if(a instanceof Ge){r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e});const o=a.getPoint(.5);r({x:o.x,y:o.y,z:e})}})}),t}moveBoundaryGripPointAt(t,e){let n=0;const r=this._elevation,s=new Set,a=(o,c)=>{const l=`${o.x},${o.y},${o.z??0}`;s.has(l)||(s.add(l),n===t&&c(),n++)};this._geo.loops.forEach(o=>{if(o instanceof ot){const c=o.numberOfVertices;for(let l=0;l<c;l++){const h=o.vertices[l];h&&a({x:h.x,y:h.y,z:r},()=>{lr(o.vertices,l,e)})}return}o.curves.forEach(c=>{if(c instanceof mt)a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>{c.startPoint.x+=e.x,c.startPoint.y+=e.y}),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>{c.endPoint.x+=e.x,c.endPoint.y+=e.y});else if(c instanceof J)a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"start",e)),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"end",e)),a({x:c.midPoint.x,y:c.midPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"mid",e));else if(c instanceof Ge){a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"start",e)),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"end",e));const l=c.getPoint(.5);a({x:l.x,y:l.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"mid",e))}})})}moveCircArc2dGripPoint(t,e,n){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"mid":{const s=t.midPoint,a=new J(t.startPoint,{x:s.x+n.x,y:s.y+n.y},t.endPoint);t.center=a.center,t.radius=a.radius,t.startAngle=a.startAngle,t.endAngle=a.endAngle,t.clockwise=a.clockwise;break}}}moveEllipseArc2dGripPoint(t,e,n){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"mid":{const s=t.getPoint(.5),a=s.x+n.x-t.center.x,o=s.y+n.y-t.center.y,c=Math.hypot(s.x-t.center.x,s.y-t.center.y),l=Math.hypot(a,o);if(c>0&&l>0){const h=l/c;t.majorAxisRadius*=h,t.minorAxisRadius*=h}break}}}subGetOsnapPoints(t,e,n,r){const s=this._elevation,a=[];if(this._geo.loops.forEach(o=>{var c;if(o instanceof ot){const l=o,h=l.numberOfVertices;if(h===0)return;switch(t){case E.EndPoint:for(let u=0;u<h;u++){const d=l.getPointAt(u);r.push(new x(d.x,d.y,s))}break;case E.MidPoint:case E.Nearest:case E.Perpendicular:case E.Tangent:{const u=o.closed?h:h-1;for(let d=0;d<u;d++){const g=[];Lr(l.getPointAt(d),l.getPointAt((d+1)%h),(c=l.vertices[d])==null?void 0:c.bulge,s,t,e,g),t===E.MidPoint?r.push(...g):a.push(...g)}break}}return}o.curves.forEach(l=>{if(l instanceof mt){const h=[];Lr(l.startPoint,l.endPoint,void 0,s,t,e,h),t===E.MidPoint?r.push(...h):t===E.Nearest||t===E.Perpendicular||t===E.Tangent?a.push(...h):r.push(...h)}else if(l instanceof J)switch(t){case E.EndPoint:r.push(new x(l.startPoint.x,l.startPoint.y,s),new x(l.endPoint.x,l.endPoint.y,s));break;case E.MidPoint:r.push(new x(l.midPoint.x,l.midPoint.y,s));break;case E.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});a.push(new x(h.x,h.y,s));break}case E.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>a.push(new x(u.x,u.y,s)));break}case E.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>a.push(new x(u.x,u.y,s)));break}}else if(l instanceof Ge)switch(t){case E.EndPoint:r.push(new x(l.startPoint.x,l.startPoint.y,s),new x(l.endPoint.x,l.endPoint.y,s));break;case E.MidPoint:{const h=l.getPoint(.5);r.push(new x(h.x,h.y,s));break}case E.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});a.push(new x(h.x,h.y,s));break}case E.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>a.push(new x(u.x,u.y,s)));break}case E.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>a.push(new x(u.x,u.y,s)));break}}})}),(t===E.Nearest||t===E.Perpendicular||t===E.Tangent)&&a.length>0){const o=me(e,a);r.length=0,o&&r.push(o)}}get directBatchPrimitive(){return!this.isSolidFill||this.isGradient||this.buildAreasFromLoops().length>1?null:"area"}resolveAnnotativePresentation(){var o;const t=this.getEffectivePatternScale(),e=Ht(this),n=e.length>0||fe(this);let r=t,s,a;if(n&&e.length>0){s=je(e,(o=this.database)==null?void 0:o.cannoscale)??e.find(l=>l.isDefault)??e[0],a=Ve(e,s);const c=s.contextData;c instanceof kr&&c.patternScale>0?r=c.patternScale:r=De(Ne(t,e),s.scale.scaleFactor)}else n&&(a=Yn(this).annotationScale);return{patternScale:r,preferred:s,annotationScale:a}}subWorldDraw(t){var s;const e=this.resolveAnnotativePresentation(),n=this._patternScale,r=this._patternScaleSet;this._patternScale=e.patternScale,this._patternScaleSet=!0;try{this.updatePredefinedPatternDefinitionLines();const a=t.subEntityTraits;a.fillType={solidFill:this.isSolidFill,patternAngle:this.getRenderablePatternAngle(),definitionLines:this.definitionLines,backgroundColor:(s=this.backgroundColor)==null?void 0:s.clone(),gradient:this.isGradient?{name:this.gradientName,angle:this.gradientAngle,shift:this.gradientShift,oneColorMode:this.gradientOneColorMode,shadeTintValue:this.shadeTintValue,startColor:this.gradientStartColor,endColor:this.gradientEndColor}:void 0},a.drawOrder=-1;const o=this.buildAreasFromLoops();let c;if(o.length===0)c=t.area(this._geo);else if(o.length===1)c=t.area(o[0]);else{const l=o.map(h=>t.area(h));c=t.group(l)}if(c&&this.annotative){let l=e.annotationScale;l||(l={drawnScaleFactor:1,supportedScaleFactors:[1],supportedScaleNames:[]});const h=c.userData??(c.userData={});h.annotationScale=l}return c}finally{this._patternScale=n,this._patternScaleSet=r,this.updatePredefinedPatternDefinitionLines()}}transformBy(t){const e=t.elements,n=new jr(e[0],e[4],e[12],e[1],e[5],e[13],0,0,1);this._geo.transform(n),this.invalidateAreasFromLoopsCache(),this._elevation=new x(0,0,this._elevation).applyMatrix4(t).z,this._normal.transformDirection(t),this._normal.lengthSq()>0&&this._normal.normalize();const r=new x(1,0,0).applyMatrix4(t),s=new x().applyMatrix4(t),a=new x(r).sub(s);if(a.length()>0){const o=Math.atan2(a.y,a.x);this._patternAngle=this.getEffectivePatternAngle()+o,this._gradientAngle+=o,this._patternScale=this.getEffectivePatternScale()*a.length(),this._patternAngleSet=!0,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}return this}dxfOutFields(t){super.dxfOutFields(t);const e=this._geo.loops,n=this.getEffectivePatternName(),r=this.getEffectivePatternAngle(),s=this.getEffectivePatternScale();if(this.updatePredefinedPatternDefinitionLines(n,s),t.writeSubclassMarker("AcDbHatch"),t.writePoint3d(10,{x:0,y:0,z:this.elevation}),t.writeVector3d(210,this.normal),t.writeString(2,n||(this.isSolidFill?yi:Gg)),t.writeInt16(70,this.isSolidFill?1:0),t.writeInt16(71,this.getEffectiveAssociative()?1:0),t.writeInt16(91,e.length),e.forEach((a,o)=>{const c=o===0;if(a instanceof ot){const l=a.vertices,h=l.some(d=>(d.bulge??0)!==0);t.writeInt16(92,2),t.writeInt16(72,h?1:0),t.writeInt16(73,a.closed?1:0),t.writeInt16(93,l.length);for(const d of l)t.writePoint2d(10,d),h&&t.writeDouble(42,d.bulge??0);t.writeInt16(97,0);return}if(a instanceof xn){const l=c?1:0;t.writeInt16(92,l),t.writeInt16(93,a.numberOfEdges);for(const h of a.curves){if(h instanceof mt){t.writeInt16(72,1),t.writePoint2d(10,h.startPoint),t.writePoint2d(11,h.endPoint);continue}if(h instanceof J){t.writeInt16(72,2),t.writePoint2d(10,h.center),t.writeDouble(40,h.radius),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.closed?h.startAngle+Math.PI*2:h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof Ge){t.writeInt16(72,3),t.writePoint2d(10,h.center);const u=new M(h.majorAxisRadius*Math.cos(h.rotation),h.majorAxisRadius*Math.sin(h.rotation));t.writePoint2d(11,u);const d=h.majorAxisRadius===0?0:h.minorAxisRadius/h.majorAxisRadius;t.writeDouble(40,d),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.closed?h.startAngle+Math.PI*2:h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof Xt){const u=h.knots,d=h.controlPoints,g=h.weights,f=h.fitPoints,p=g.some(m=>m!==1);t.writeInt16(72,4),t.writeInt16(94,h.degree),t.writeInt16(73,p?1:0),t.writeInt16(74,h.closed?1:0),t.writeInt16(95,u.length),t.writeInt16(96,d.length),u.forEach(m=>t.writeDouble(40,m)),d.forEach((m,y)=>{t.writePoint2d(10,m),p&&t.writeDouble(42,g[y]??1)}),t.writeInt16(97,(f==null?void 0:f.length)??0),f==null||f.forEach(m=>t.writePoint2d(11,m))}}t.writeInt16(97,0)}}),t.writeInt16(75,this.hatchStyle),t.writeInt16(76,this.patternType),t.writeAngle(52,r),t.writeDouble(41,s),t.writeInt16(77,0),t.writeInt16(78,this.definitionLines.length),this.definitionLines.forEach(a=>{t.writeAngle(53,a.angle),t.writeDouble(43,a.base.x),t.writeDouble(44,a.base.y),t.writeDouble(45,a.offset.x),t.writeDouble(46,a.offset.y),t.writeInt16(79,a.dashLengths.length),a.dashLengths.forEach(o=>t.writeDouble(49,o))}),this._pixelSize!=null&&t.writeDouble(47,this._pixelSize),this.isGradient){t.writeInt16(450,this._hatchObjectType),t.writeInt16(451,0),t.writeDouble(460,this._gradientAngle),t.writeDouble(461,this._gradientShift),t.writeInt16(452,this._gradientOneColorMode?1:0),t.writeDouble(462,this._shadeTintValue);const a=this._gradientStartColor,o=this._gradientEndColor,c=a!=null&&o!=null?2:a!=null||o!=null?1:0;t.writeInt16(453,c);const l=(h,u)=>{t.writeDouble(463,h);const d=Ee.getIndexByColor(u);d!=null&&t.writeInt16(63,d),t.writeInt32(421,u)};a!=null&&l(0,a),o!=null&&l(1,o),t.writeString(470,this.gradientName)}return t.writeInt16(98,0),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbHatch"),this.definitionLines.length=0;let e=this.elevation,n=this.normal.x,r=this.normal.y,s=this.normal.z,a=this.patternAngle*180/Math.PI,o=0,c=!1,l=!1,h=!1,u=[],d=null,g=[],f=null,p="type",m=0,y=!1,b=null,_=!1,w=0,P;const S=F=>{w===0?this.gradientStartColor=F:this.gradientEndColor=F,w++,P=void 0},v=()=>{if(P==null)return;const F=Ee.getColorByIndex(P);F!=null?S(F):P=void 0},k=()=>{d&&(u.push(d),d=null)},L=()=>{if(k(),u.length===0)return;const F=new ot;F.closed=h,u.forEach(($,T)=>{F.addVertexAt(T,{x:$.x,y:$.y,bulge:$.bulge??0})}),this.add(F),u=[]},C=()=>{if(g.length===0)return;const F=[];for(const T of g)if(T.kind==="line")F.push(new mt({x:T.sx,y:T.sy},{x:T.ex,y:T.ey}));else if(T.kind==="arc")F.push(new J({x:T.cx,y:T.cy},T.radius,T.startDeg*Math.PI/180,T.endDeg*Math.PI/180,!T.isCcw));else if(T.kind==="ellipse"){const W=Math.hypot(T.mx,T.my),st=W*T.ratio;let B=T.startDeg*Math.PI/180,Rt=T.endDeg*Math.PI/180;const ee=Math.atan2(T.my,T.mx);T.isCcw||(B=Math.PI*2-B,Rt=Math.PI*2-Rt),F.push(new Ge({x:T.cx,y:T.cy,z:0},W,st,B,Rt,!T.isCcw,ee))}else{const W=Xt.fromDwgSplineEdge({degree:T.degree,numberOfControlPoints:T.controlPoints.length,numberOfKnots:T.knots.length,numberOfFitData:T.fitPoints.length,knots:T.knots,controlPoints:T.controlPoints.map(st=>({x:st.x,y:st.y,z:0,weight:T.rational?st.weight??1:void 0})),fitDatum:T.fitPoints.map(st=>({x:st.x,y:st.y,z:0})),startTangent:null,endTangent:null});W&&F.push(W)}const $=xn.buildFromEdges(F);$.length===1?this.add($[0]):F.length>0&&this.add(new xn(F)),g=[],f=null},N=()=>{c?L():C()},D=()=>{f&&(g.push(f),f=null)},tt=()=>{D(),N(),m=Math.max(0,m-1),m===0&&(_=!0)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const F=t.readItem();if(!F)break;const $=Number(F.code),T=Number(F.value);if(y||_){switch($){case 75:this.hatchStyle=T,_=!0;break;case 76:this.patternType=T;break;case 52:a=T;break;case 41:this.patternScale=T;break;case 77:break;case 78:y=!0;break;case 53:b&&this.definitionLines.push(b),b={angle:T*Math.PI/180,base:{x:0,y:0},offset:{x:0,y:0},dashLengths:[]};break;case 43:b&&(b.base.x=T);break;case 44:b&&(b.base.y=T);break;case 45:b&&(b.offset.x=T);break;case 46:b&&(b.offset.y=T);break;case 79:break;case 49:b&&b.dashLengths.push(T);break;case 47:this.pixelSize=T;break;case 99:break;case 450:this.hatchObjectType=T,this.gradientStartColor=void 0,this.gradientEndColor=void 0,w=0,P=void 0;break;case 451:break;case 452:this.gradientOneColorMode=T!==0;break;case 453:break;case 460:this.gradientAngle=T;break;case 461:this.gradientShift=T;break;case 462:this.shadeTintValue=T;break;case 463:v();break;case 63:P=T;break;case 421:S(T);break;case 470:v(),this.gradientName=String(F.value);break}continue}switch($){case 10:c||f&&f.kind!=="line"&&f.kind!=="arc"&&f.kind!=="ellipse"&&f.kind,m>0&&c?(k(),d={x:T,y:0}):(f==null?void 0:f.kind)==="line"&&p==="type"?f.sx=T:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cx=T:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.push({x:T,y:0});break;case 20:m>0&&c&&d?d.y=T:(f==null?void 0:f.kind)==="line"&&p==="type"?f.sy=T:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cy=T:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].y=T);break;case 30:m<=0&&!_&&(e=T);break;case 2:this.patternName=String(F.value);break;case 70:this.isSolidFill=T!==0;break;case 71:this.associative=T!==0;break;case 91:m=T;break;case 92:m>0&&(u.length>0||g.length>0||f)&&(D(),N()),o=T,c=(o&2)!==0,l=!1,h=!1,u=[],g=[],f=null,p="type";break;case 72:c?l=T!==0:(D(),T===1?(f={kind:"line",sx:0,sy:0,ex:0,ey:0},p="type"):T===2?f={kind:"arc",cx:0,cy:0,radius:0,startDeg:0,endDeg:0,isCcw:!0}:T===3?f={kind:"ellipse",cx:0,cy:0,mx:0,my:0,ratio:1,startDeg:0,endDeg:0,isCcw:!0}:T===4?f={kind:"spline",degree:3,rational:!1,closed:!1,knots:[],controlPoints:[],fitPoints:[],expectedKnots:0,expectedControls:0,expectedFits:0,fitCountSeen:!1}:f=null);break;case 73:c?h=T!==0:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.isCcw=T!==0:(f==null?void 0:f.kind)==="spline"&&(f.rational=T!==0);break;case 74:(f==null?void 0:f.kind)==="spline"&&(f.closed=T!==0);break;case 93:break;case 42:c&&l&&d?d.bulge=T:(f==null?void 0:f.kind)==="spline"&&f.rational&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].weight=T);break;case 11:(f==null?void 0:f.kind)==="line"?(f.ex=T,p="line-end"):(f==null?void 0:f.kind)==="ellipse"?f.mx=T:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.push({x:T,y:0});break;case 21:(f==null?void 0:f.kind)==="line"?f.ey=T:(f==null?void 0:f.kind)==="ellipse"?f.my=T:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.length>0&&(f.fitPoints[f.fitPoints.length-1].y=T);break;case 40:(f==null?void 0:f.kind)==="arc"?f.radius=T:(f==null?void 0:f.kind)==="ellipse"?f.ratio=T:(f==null?void 0:f.kind)==="spline"&&f.knots.push(T);break;case 50:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.startDeg=T);break;case 51:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.endDeg=T);break;case 94:(f==null?void 0:f.kind)==="spline"&&(f.degree=T);break;case 95:(f==null?void 0:f.kind)==="spline"&&(f.expectedKnots=T);break;case 96:(f==null?void 0:f.kind)==="spline"&&(f.expectedControls=T);break;case 97:if((f==null?void 0:f.kind)==="spline"&&!f.fitCountSeen&&(f.controlPoints.length>0||f.knots.length>0)){f.expectedFits=T,f.fitCountSeen=!0;break}tt();break;case 75:D(),N(),m=0,_=!0,this.hatchStyle=T;break;case 210:n=T;break;case 220:r=T;break;case 230:s=T;break}}f&&(g.push(f),f=null),N(),b&&this.definitionLines.push(b),v(),this.elevation=e;const G=new A(n,r,s);return G.lengthSq()>0&&(this.normal=G),this.patternAngle=a*Math.PI/180,this}};hh.typeName="Hatch";let Dn=hh;const Hu=new x,Gu=new x,Ha=class Ha extends Mt{constructor(t,e){super(),this._geoData=null,this._normal=null,this._thickness=0,t!==void 0&&e!==void 0&&(this._geo=new Dt(t,e))}get dxfTypeName(){return"LINE"}get _geo(){return this._geoData==null&&(this._geoData=new Dt(new x,new x)),this._geoData}set _geo(t){this._geoData=t}get startPoint(){return this._geo.startPoint}set startPoint(t){this._geo.startPoint=t}get endPoint(){return this._geo.endPoint}set endPoint(t){this._geo.endPoint=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){let t=this._normal;return t==null&&(t=new A(0,0,1),this._normal=t),t}set normal(t){this.normal.copy(t).normalize()}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"line",line:this._geo.clone(),extent:"bounded"}]}get closed(){return!1}get area(){return 0}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"startX",type:"float",editable:!0,accessor:{get:()=>this.startPoint.x,set:t=>{this.startPoint.x=t}}},{name:"startY",type:"float",editable:!0,accessor:{get:()=>this.startPoint.y,set:t=>{this.startPoint.y=t}}},{name:"startZ",type:"float",editable:!0,accessor:{get:()=>this.startPoint.z,set:t=>{this.startPoint.z=t}}},{name:"endX",type:"float",editable:!0,accessor:{get:()=>this.endPoint.x,set:t=>{this.endPoint.x=t}}},{name:"endY",type:"float",editable:!0,accessor:{get:()=>this.endPoint.y,set:t=>{this.endPoint.y=t}}},{name:"endZ",type:"float",editable:!0,accessor:{get:()=>this.endPoint.z,set:t=>{this.endPoint.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subMoveGripPointsAt(t,e){return It(t,n=>{switch(n){case 0:this.transformBy(X.makeTranslation(e));break;case 1:this.startPoint.add(e);break;case 2:this.endPoint.add(e);break}}),this}subGetOsnapPoints(t,e,n,r){const s=this.startPoint,a=this.endPoint;switch(t){case E.EndPoint:r.push(s),r.push(a);break;case E.MidPoint:r.push(this.midPoint);break;case E.Nearest:{const o=this._geo.project(e);r.push(o)}break;case E.Perpendicular:{const o=this._geo.perpPoint(e);r.push(o)}break;case E.Tangent:break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this.startPoint,n=this.endPoint,r=[new x(e.x,e.y,0),new x(n.x,n.y,0)];return t.lines(r)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLine"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,this.startPoint),t.writePoint3d(11,this.endPoint),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLine");let e=0,n=0,r=0,s=0,a=0,o=0,c=this.thickness,l=0,h=0,u=1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 10:e=f;break;case 20:n=f;break;case 30:r=f;break;case 11:s=f;break;case 21:a=f;break;case 31:o=f;break;case 39:c=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break}}return(l!==0||h!==0||u!==1)&&l*l+h*h+u*u>0&&this.normal.set(l,h,u).normalize(),this.thickness=c,Hu.set(e,n,r),Gu.set(s,a,o),this._geo=new Dt(Hu,Gu),this}getOffsetCurves(t){const e=this._geo.offset(t);return[new Ha(e.startPoint,e.endPoint)]}getOffsetSideAtPoint(t){const e=this.startPoint,n=this.endPoint;return(n.x-e.x)*(t.y-e.y)-(n.y-e.y)*(t.x-e.x)>=0?1:-1}};Ha.typeName="Line";let Xi=Ha;class jl{constructor(t){this.db=t}createDefaultLayer(){const t=new U;return t.colorIndex=7,this.db.tables.layerTable.add(new Wr({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new An({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new An({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new An({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new uo({name:gt,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new Qt({name:gt,dimtxsty:gt}))}createDefaultLayout(){const t=this.db.tables.blockTable.modelSpace,e=new jn;if(e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.objectId,e.limits.min.copy({x:0,y:0}),e.limits.max.copy({x:1e6,y:1e6}),e.extents.min.copy({x:0,y:0,z:0}),e.extents.max.copy({x:1e6,y:1e6,z:0}),this.db.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId,!this.db.tables.blockTable.getAt(ct.PAPER_SPACE_NAME_PREFIX)){const n=new ct;n.name=ct.PAPER_SPACE_NAME_PREFIX,this.db.tables.blockTable.add(n);const r=new jn;r.layoutName="Layout1",r.tabOrder=1,r.blockTableRecordId=n.objectId,r.limits.min.copy({x:0,y:0}),r.limits.max.copy({x:12,y:9}),r.extents.min.copy({x:0,y:0,z:0}),r.extents.max.copy({x:12,y:9,z:0}),this.db.objects.layout.setAt(r.layoutName,r),n.layoutId=r.objectId}}createArrowBlock(){this.ensureArrowBlock("_CAXARROW"),this.ensureArrowBlock("_CLOSEDFILLED")}ensureArrowBlock(t){if(!t||this.db.tables.blockTable.getAt(t))return;const e=t.toUpperCase(),n=new ct;n.name=t;const r=(o=.125)=>{const c=new Dn;c.patternName=yi;const l=new xn;l.add(new mt({x:0,y:0},{x:-1,y:o})),l.add(new mt({x:-1,y:o},{x:-1,y:-o})),l.add(new mt({x:-1,y:-o},{x:0,y:0})),c.add(l),n.appendEntity(c)},s=(o=.125)=>{n.appendEntity(this.lineEntity({x:0,y:0,z:0},{x:-1,y:o,z:0})),n.appendEntity(this.lineEntity({x:0,y:0,z:0},{x:-1,y:-o,z:0}))},a=(o,c)=>{if(c){const l=new Dn;l.patternName=yi;const h=new xn,u=o;h.add(new mt({x:u,y:0},{x:0,y:u})),h.add(new mt({x:0,y:u},{x:-u,y:0})),h.add(new mt({x:-u,y:0},{x:0,y:-u})),h.add(new mt({x:0,y:-u},{x:u,y:0})),l.add(h),n.appendEntity(l)}else n.appendEntity(this.lineEntity({x:-o,y:0,z:0},{x:o,y:0,z:0})),n.appendEntity(this.lineEntity({x:0,y:-o,z:0},{x:0,y:o,z:0}))};switch(e){case"_CAXARROW":case"_CLOSEDFILLED":case"":r();break;case"_CLOSED":s(),n.appendEntity(this.lineEntity({x:-1,y:.125,z:0},{x:-1,y:-.125,z:0}));break;case"_CLOSEDBLANK":s(),n.appendEntity(this.lineEntity({x:-1,y:.125,z:0},{x:-1,y:-.125,z:0}));break;case"_OPEN":s(.1667);break;case"_OPEN30":s(.2679);break;case"_OPEN90":n.appendEntity(this.lineEntity({x:0,y:0,z:0},{x:-.5,y:.5,z:0})),n.appendEntity(this.lineEntity({x:0,y:0,z:0},{x:-.5,y:-.5,z:0}));break;case"_OBLIQUE":case"_ARCHTICK":n.appendEntity(this.lineEntity({x:-.5,y:-.5,z:0},{x:.5,y:.5,z:0}));break;case"_DOT":a(.25,!0);break;case"_DOTSMALL":case"_SMALL":a(.125,!0);break;case"_DOTBLANK":a(.25,!1);break;case"_BOXFILLED":{const o=new Dn;o.patternName=yi;const c=new xn;c.add(new mt({x:-1,y:-.5},{x:0,y:-.5})),c.add(new mt({x:0,y:-.5},{x:0,y:.5})),c.add(new mt({x:0,y:.5},{x:-1,y:.5})),c.add(new mt({x:-1,y:.5},{x:-1,y:-.5})),o.add(c),n.appendEntity(o)}break;case"_BOXBLANK":n.appendEntity(this.lineEntity({x:-1,y:-.5,z:0},{x:0,y:-.5,z:0})),n.appendEntity(this.lineEntity({x:0,y:-.5,z:0},{x:0,y:.5,z:0})),n.appendEntity(this.lineEntity({x:0,y:.5,z:0},{x:-1,y:.5,z:0})),n.appendEntity(this.lineEntity({x:-1,y:.5,z:0},{x:-1,y:-.5,z:0}));break;case"_DATUMFILLED":r(.5);break;case"_DATUMBLANK":s(.5),n.appendEntity(this.lineEntity({x:-1,y:.5,z:0},{x:-1,y:-.5,z:0}));break;case"_ORIGIN":case"_ORIGIN2":a(.5,!1),a(.125,!0);break;case"_INTEGRAL":n.appendEntity(this.lineEntity({x:0,y:-.5,z:0},{x:0,y:.5,z:0}));break;case"_NONE":break;default:r();break}this.db.tables.blockTable.add(n)}lineEntity(t,e){return new Xi(t,e)}}const Ic=Math.PI/200;class Ep{constructor(t){this.database=t}formatLength(t,e){const n=this.createContext(e);return Qn(t,n)}formatPoint2d(t,e){const n=this.createContext(e);return`${Qn(t.x,n)}, ${Qn(t.y,n)}`}formatPoint3d(t,e){const n=this.createContext(e);return`${Qn(t.x,n)}, ${Qn(t.y,n)}, ${Qn(t.z,n)}`}formatAngle(t,e){const n=this.createContext(e),s=(e==null?void 0:e.applyAngbaseAngdir)??!0?ww(t,this.database.angbase,this.database.angdir):O.normalizeAngle(t);return xw(s,n)}createContext(t){return{lunits:this.database.lunits,luprec:Or(this.database.luprec),insunits:this.database.insunits,unitmode:this.database.unitmode,measurement:this.database.measurement,aunits:this.database.aunits,auprec:Or(this.database.auprec),showUnits:(t==null?void 0:t.showUnits)??!1,showApproximate:(t==null?void 0:t.showApproximate)??!1}}}function Qn(i,t){let e;switch(t.lunits){case _t.Scientific:e=Vo(Lw(i,t.luprec),t);break;case _t.Engineering:e=Mw(i,t);break;case _t.Architectural:e=Cw(i,t);break;case _t.Fractional:e=Vo(Ow(i,t),t);break;case _t.WindowsDesktop:case _t.Decimal:default:e=Vo(Ki(i,t.luprec),t)}return Tp(e,vw(i,t),t)}function xw(i,t){let e;switch(t.aunits){case Ut.DegreesMinutesSeconds:e=Cp(i,t);break;case Ut.Gradians:e=Rw(i,t);break;case Ut.Radians:e=Dw(i,t);break;case Ut.SurveyorsUnits:e=Bw(i,t);break;case Ut.DecimalDegrees:default:e=Nw(i,t)}return Tp(e,Aw(i,t),t)}function ww(i,t,e){let n=i-t;return e===1&&(n=-n),O.normalizeAngle(n)}function Vl(i){const t=i.showUnits?'"':"";return i.unitmode===1?{feetInchSeparator:"",fractionSeparator:"-",inchSuffix:t}:{feetInchSeparator:"-",fractionSeparator:" ",inchSuffix:t}}function Or(i,t=0,e=8){return Number.isFinite(i)?Math.max(t,Math.min(e,Math.round(i))):t}function qi(i){return Object.is(i,-0)?0:i}function Tp(i,t,e){return!e.showApproximate||!t?i:`~ ${i}`}function vw(i,t){if(!Number.isFinite(i))return!1;const e=Pw(i,t);return Ul(i,e)}function Aw(i,t){if(!Number.isFinite(i))return!1;if(t.aunits===Ut.SurveyorsUnits)return Sw(i,t.auprec);const e=kw(i,t);return Ul(i,e)}function Sw(i,t){const n=((90-O.radToDeg(i))%360+360)%360,r=Op(n),s=Math.min(Math.abs(n-r.base),Math.abs(r.base+90-n)),a=O.degToRad(s),o=Lp(a,t);return Ul(a,o)}function Pw(i,t){const e=qi(i);switch(t.lunits){case _t.Scientific:return Iw(e,t.luprec);case _t.Engineering:case _t.Architectural:case _t.Fractional:return Ew(e,t);case _t.WindowsDesktop:case _t.Decimal:default:return bi(e,t.luprec)}}function kw(i,t){const e=qi(i);switch(t.aunits){case Ut.DegreesMinutesSeconds:return Lp(e,t.auprec);case Ut.Gradians:return bi(e/Ic,t.auprec)*Ic;case Ut.Radians:return bi(e,t.auprec);case Ut.DecimalDegrees:default:return O.degToRad(bi(O.radToDeg(e),t.auprec))}}function bi(i,t){if(!Number.isFinite(i))return 0;const e=10**t;return Math.round(qi(i)*e)/e}function Iw(i,t){if(!Number.isFinite(i))return 0;const e=qi(i);if(e===0)return 0;const n=e.toExponential(t);return Number(n)}function Ew(i,t){if(!Number.isFinite(i))return 0;const e=i<0?-1:1,n=Math.abs(i),r=Math.floor(n/12),s=n-r*12;if(t.lunits===_t.Architectural||t.lunits===_t.Fractional){const a=1<<Or(t.luprec,0,8),o=Tw(s,a);return e*(r*12+o)}return e*(r*12+bi(s,t.luprec))}function Tw(i,t){const e=Math.floor(i),n=i-e,r=Math.round(n*t);return r>=t?e+1:e+r/t}function Lp(i,t){const e=O.radToDeg(i),n=e<0?-1:1,r=Math.abs(e),s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=bi((a-o)*60,t),l=s+o/60+c/3600;return O.degToRad(n*l)}function Ul(i,t){if(i===t)return!1;const e=Math.max(Math.abs(i),Math.abs(t),1);return Math.abs(i-t)>e*Number.EPSILON*8}function Ki(i,t){if(!Number.isFinite(i))return"0";const e=qi(i);if(Number.isInteger(e)&&t===0)return String(e);const r=e.toFixed(t).replace(/\.?0+$/,"");return r===""||r==="-"?"0":r}function Lw(i,t){if(!Number.isFinite(i))return"0";const e=qi(i);if(e===0)return"0";const n=e.toExponential(t).match(/^(.+)e([+-])(\d+)$/i);if(!n)return"0";const[,r,s,a]=n,o=a.length<2?a.padStart(2,"0"):a;return`${r}E${s}${o}`.toUpperCase()}function Mw(i,t){if(!Number.isFinite(i))return"0";const e=Vl(t),n=i<0?"-":"",r=Math.abs(i),s=Math.floor(r/12),a=r-s*12,o=Ki(a,t.luprec);return s===0?`${n}${o}${e.inchSuffix}`:`${n}${s}'${e.feetInchSeparator}${o}${e.inchSuffix}`}function Cw(i,t){if(!Number.isFinite(i))return"0";const e=Vl(t),n=i<0?"-":"",r=Math.abs(i),s=Math.floor(r/12),a=r-s*12,o=1<<Or(t.luprec,0,8),c=Mp(a,o,e.fractionSeparator);return s===0?`${n}${c}${e.inchSuffix}`:`${n}${s}'${e.feetInchSeparator}${c}${e.inchSuffix}`}function Ow(i,t){if(!Number.isFinite(i))return"0";const e=Vl(t),n=i<0?"-":"",r=Math.abs(i),s=1<<Or(t.luprec,0,8);return`${n}${Mp(r,s,e.fractionSeparator)}`}function Mp(i,t,e){const n=Math.floor(i),r=i-n;let s=Math.round(r*t);if(s>=t)return String(n+1);if(s===0)return String(n);const a=Yw(s,t);s/=a;const o=t/a,c=`${s}/${o}`;return n===0?c:`${n}${e}${c}`}function Nw(i,t){const e=O.radToDeg(i);return`${Ki(e,t.auprec)}${t.showUnits?"°":""}`}function Dw(i,t){return`${Ki(i,t.auprec)}${t.showUnits?" rad":""}`}function Rw(i,t){const e=i/Ic;return`${Ki(e,t.auprec)}${t.showUnits?"g":""}`}function Cp(i,t){const e=O.radToDeg(i),n=e<0?"-":"",r=Math.abs(e),s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=(a-o)*60,l=Ki(c,t.auprec),h=t.showUnits?'"':"";return`${n}${s}d${o}'${l}${h}`}function Bw(i,t){const n=((90-O.radToDeg(i))%360+360)%360,r=Op(n),s=Math.min(Math.abs(n-r.base),Math.abs(r.base+90-n)),o=Cp(O.degToRad(s),t).replace(/^-/,"");return`${r.prefix} ${o} ${r.suffix}`.trim()}function Op(i){return i<90?{prefix:"N",suffix:"E",base:0}:i<180?{prefix:"S",suffix:"E",base:90}:i<270?{prefix:"S",suffix:"W",base:180}:{prefix:"N",suffix:"W",base:270}}function Vo(i,t){if(!t.showUnits||t.lunits===_t.Engineering||t.lunits===_t.Architectural)return i;const e=Fw(t.insunits,t.measurement);return e?`${i}${e}`:i}function Fw(i,t){return i===ft.Undefined?t===0?'"':" mm":Tx(i)?Xw(i):Lx(i)?zw(i):""}function Xw(i){switch(i){case ft.Millimeters:return" mm";case ft.Centimeters:return" cm";case ft.Meters:return" m";case ft.Kilometers:return" km";case ft.Decimeters:return" dm";case ft.Microns:return" µm";case ft.Nanometers:return" nm";default:return""}}function zw(i){switch(i){case ft.Inches:case ft.Microinches:case ft.Mils:case ft.USSurveyInch:return'"';case ft.Feet:case ft.USSurveyFeet:return"'";case ft.Miles:case ft.USSurveyMile:return" mi";case ft.Yards:case ft.USSurveyYard:return" yd";default:return""}}function Yw(i,t){let e=Math.abs(i),n=Math.abs(t);for(;n!==0;){const r=n;n=e%n,e=r}return e||1}class Ae extends pt{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this.ownerId=t.objectId,this._recordsByName=new Map,this._unnamedRecords=[]}get numEntries(){return this._recordsByName.size}get totalRecordCount(){return this._recordsByName.size+this._unnamedRecords.length}add(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot add symbol table records outside an active transaction.");const n=e.resolveSymbolTableName(this);t.database=this.database,this.database.commitObjectHandle(t,s=>this.hasId(s)),t.ownerId=this.objectId;const r=this.normalizeName(t.name);r?this._recordsByName.set(r,t):this._unnamedRecords.push(t),e.isRecording()&&e.recordAppend({type:"symbolTable",tableName:n},t)}remove(t){const e=this.normalizeName(t),n=this._recordsByName.get(e);return n?(this.removeRecord(n),!0):!1}removeId(t){const e=this.getIdAt(t);return e?(this.removeRecord(e),!0):!1}removeRecord(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot remove symbol table records outside an active transaction.");if(e.isRecording()){const n=e.resolveSymbolTableName(this);e.recordRemove({type:"symbolTable",tableName:n},t)}this.removeFromMembership(t),this.database.releaseObjectHandle(t)}removeAll(){for(const t of this._recordsByName.values())this.database.releaseObjectHandle(t);for(const t of this._unnamedRecords)this.database.releaseObjectHandle(t);this._recordsByName.clear(),this._unnamedRecords.length=0}has(t){const e=this.normalizeName(t);return this._recordsByName.has(e)}hasId(t){return this.getIdAt(t)!==void 0}getAt(t){const e=this.normalizeName(t);return this._recordsByName.get(e)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!e||e.getAttrWithoutException("ownerId")!==this.objectId))return e}getOwnerIdAt(t){return this.getIdAt(t)}newIterator(t=!1){return t?new Ti([...this._recordsByName.values(),...this._unnamedRecords]):new Ti(this._recordsByName)}normalizeName(t){return(t??"").trim().toUpperCase()}get dxfEntryCount(){return this.numEntries}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTable"),t.writeInt16(70,this.dxfEntryCount),this}removeFromMembership(t){const e=this.normalizeName(t.name);if(e){this._recordsByName.delete(e);return}const n=this._unnamedRecords.indexOf(t);n>=0&&this._unnamedRecords.splice(n,1)}}class Np extends Ae{constructor(t){super(t)}get modelSpace(){let t=this.getAt(ct.MODEL_SPACE_NAME);return t||(t=new ct,t.name=ct.MODEL_SPACE_NAME,this.add(t)),t}getEntityById(t){const e=this.database.getObjectById(t);if(e instanceof rt)return e}removeEntity(t){let e=!1;for(const n of this.database.tables.blockTable.newIterator())if(n.removeEntity(t)){e=!0;break}return e}getXrefs(){const t=[];for(const e of this.newIterator())e.isXref&&t.push(e);return t}getUnresolvedXrefs(){return this.getXrefs().filter(t=>t.isUnresolvedXref)}normalizeName(t){const e=(t??"").trim();if(!e)return"";if(ct.isModelSapceName(e))return ct.MODEL_SPACE_NAME;if(ct.isPaperSapceName(e)){const n=ct.PAPER_SPACE_NAME_PREFIX,r=e.substring(n.length);return n+r}return super.normalizeName(e)}}const Dp="DwgConverterLicenseError",jw=["evaluation of @mlightcad/dwg-converter has expired"],Vw=["invalid @mlightcad/dwg-converter license key"];function Rp(i){return i==="license_expired"||i==="license_invalid"}function Hl(i){const t=i.toLowerCase();if(jw.some(e=>t.includes(e)))return"license_expired";if(Vw.some(e=>t.includes(e)))return"license_invalid"}function Bp(i){return Hl(i)??"license_invalid"}const Uw=["out of memory","data cannot be cloned","allocation failed","memory access out of bounds"];function Fp(i){const t=i.toLowerCase();return Uw.some(e=>t.includes(e))}function Uo(){const i=globalThis;if(typeof i.postMessage!="function")throw new Error("Worker messaging is not available in this runtime");return i}class Hw{constructor(){this.setupMessageHandler()}setupMessageHandler(){Uo().onmessage=async t=>{const e=t,{id:n,input:r}=e.data;try{const s=await this.executeTask(r);this.sendResponse(n,!0,s)}catch(s){const a=s instanceof Error?s.message:String(s);this.sendResponse(n,!1,void 0,a,this.classifyTaskError(s,a))}}}sendResponse(t,e,n,r,s){const a={id:t,success:e,data:n,error:r,errorCode:s};try{Uo().postMessage(a)}catch(o){const c=o instanceof Error?o.message:String(o);Uo().postMessage({id:t,success:!1,error:c,errorCode:this.classifyPostMessageError(c)})}}classifyTaskError(t,e){if(t instanceof Error){const r=t.code;if(Rp(r))return r;if(t.name===Dp)return Bp(e)}const n=Hl(e);return n||this.classifyPostMessageError(e)}classifyPostMessageError(t){return Fp(t)?"worker_oom":t.toLowerCase().includes("timed out")?"worker_timeout":"worker_error"}}class Bt extends Error{constructor(t,e,n){super(t),this.name="AcDbOpenDatabaseError",this.code=e,this.stage=n==null?void 0:n.stage,this.cause=n==null?void 0:n.cause}static isLicenseErrorCode(t){return Rp(t)}static isWorkerOutOfMemoryMessage(t){return Fp(t)}static classifyThrownError(t){if(t instanceof Error){const n=Bt.readStructuredCode(t);if(n)return n;if(t.name===Dp)return Bp(t.message)}const e=t instanceof Error?t.message:String(t);return Bt.classifyWorkerErrorMessage(e)}static classifyWorkerErrorMessage(t){const e=Hl(t);return e||(Bt.isWorkerOutOfMemoryMessage(t)?"worker_oom":t.toLowerCase().includes("timed out")?"worker_timeout":"worker_error")}static from(t,e){if(t instanceof Bt)return t;const n=t instanceof Error?t.message:String(t),r=Bt.classifyThrownError(t);return new Bt(n,r,{stage:e,cause:t})}static fromTask(t){const e=t.task.name;return Bt.from(t.error,e)}static throwOnWorkerParseFailure(t,e="PARSE"){if(t.success)return;const n=t.error!=null?`Failed to parse drawing due to error: '${t.error}'`:"Failed to parse drawing due to an unknown worker error",r=Bt.mapWorkerResultCode(t.errorCode,t.error);throw new Bt(n,r,{stage:e})}static mapWorkerResultCode(t,e){switch(t){case"worker_oom":return"worker_oom";case"worker_timeout":return"worker_timeout";case"worker_error":return"worker_error";case"license_expired":return"license_expired";case"license_invalid":return"license_invalid";default:return Bt.classifyWorkerErrorMessage(e??"")}}static readStructuredCode(t){const e=t.code;if(typeof e=="string")switch(e){case"license_expired":case"license_invalid":case"worker_oom":case"worker_timeout":case"worker_error":case"parse_failed":case"font_load_failed":case"fetch_failed":case"unknown":return e;default:return}}}class Xp extends Ae{constructor(t){super(t)}}class zp extends Ae{constructor(t){super(t)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class Yp extends Ae{constructor(t){super(t)}}class Nr extends Ae{constructor(t){super(t)}static normalizeFontFileName(t){if(!t)return;const e=t.lastIndexOf(".");return e>=0?t.substring(0,e).toLowerCase():t.toLowerCase()}get dxfEntryCount(){return this.totalRecordCount}resolveAt(t){this.database.ensureTextStyleDefaults();const e=[],n=r=>{const s=r==null?void 0:r.trim();s&&!e.includes(s)&&e.push(s)};n(t),n(this.database.textstyle),n(gt),n("STANDARD");for(const r of e){const s=this.getAt(r);if(s)return s;const a=r.toUpperCase();for(const o of this.newIterator())if(o.name.toUpperCase()===a)return o}return this.newIterator().next().value??void 0}get shapeFiles(){return this.newIterator(!0).toArray().filter(t=>t.isShapeFile)}get fonts(){const t=new Set;for(const e of this.newIterator()){const n=Nr.normalizeFontFileName(e.fileName);n&&t.add(n);const r=Nr.normalizeFontFileName(e.bigFontFileName);r&&t.add(r)}return Array.from(t)}}class jp extends Ae{constructor(t){super(t)}}class Vp extends Ae{constructor(t){super(t)}}class Up extends Ae{constructor(t){super(t)}normalizeName(t){const e=(t??"").trim();return e?Sn.isActiveVportName(e)?Ei:super.normalizeName(e):""}getActiveVport(){return this.getAt(Ei)}getActiveVportBox(t,e){const n=this.getActiveVport();return n==null?void 0:n.resolveModelViewBox(t,e)}}class Hp extends Ae{constructor(t){super(t)}}class Gp extends K{getBtrIdAt(t){for(const[e,n]of this._recordsByName)if(n.blockTableRecordId==t)return n}get maxTabOrder(){let t=-1;return this._recordsByName.forEach(e=>{e.tabOrder>t&&(t=e.tabOrder)}),t}}class Wp{constructor(t){this.database=t}applyForward(t){for(const e of t)this.applyChange(e,!0)}applyInverse(t){for(let e=t.length-1;e>=0;e--)this.applyChange(t[e],!1)}applyChange(t,e){switch(t.kind){case"modify":this.applyModify(t,e);break;case"append":e?this.applyAppend(t.container,t.object):this.applyRemove(t.container,t.object);break;case"remove":e?this.applyRemove(t.container,t.object):this.applyAppend(t.container,t.object);break;case"sysvar":this.applySysvar(t,e);break}}applyModify(t,e){const n=this.database.getObjectById(t.objectId);if(!n)return;const r=e?t.after:t.before;r&&n.restoreFrom(r)}applySysvar(t,e){const n=e?t.after:t.before;n!==void 0&&xt.instance().setVar(t.name,n,this.database)}applyAppend(t,e){switch(t.type){case"blockTableRecord":{const n=this.database.tables.blockTable.getIdAt(t.ownerId);n&&n.appendEntity(e);break}case"symbolTable":{const n=this.getSymbolTable(t.tableName);n&&n.add(e);break}case"dictionary":{const n=this.database.getObjectById(t.dictionaryId);n&&n.setAt(t.key,e);break}}}applyRemove(t,e){switch(t.type){case"blockTableRecord":{const n=this.database.tables.blockTable.getIdAt(t.ownerId);n&&n.removeEntity(e.objectId);break}case"symbolTable":{const n=this.getSymbolTable(t.tableName);n&&n.removeId(e.objectId);break}case"dictionary":{const n=this.database.getObjectById(t.dictionaryId);n&&n.removeId(e.objectId);break}}}getSymbolTable(t){const e=this.database.tables;switch(t){case"appIdTable":return e.appIdTable;case"blockTable":return e.blockTable;case"dimStyleTable":return e.dimStyleTable;case"linetypeTable":return e.linetypeTable;case"textStyleTable":return e.textStyleTable;case"viewTable":return e.viewTable;case"layerTable":return e.layerTable;case"viewportTable":return e.viewportTable;default:return}}}function Ec(i,t){const e=[],n=[],r=[];for(const s of t)if(s.kind==="modify"){const a=i.getObjectById(s.objectId);a instanceof rt&&e.push(a)}else if(s.kind==="append"){if(s.container.type==="blockTableRecord"){const a=i.tables.blockTable.getEntityById(s.object.objectId)??(s.object instanceof rt?s.object:void 0);a&&n.push(a)}}else s.kind==="remove"&&s.container.type==="blockTableRecord"&&s.object instanceof rt&&r.push(s.object);return{modified:e,appended:n,erased:r}}function Wu(i,t){const e=[],n=[];for(const r of t){if(r.kind!=="append"&&r.kind!=="remove"||r.container.type!=="dictionary")continue;const s=r.container.key;if(r.kind==="append"){const a=i.getObjectById(r.object.objectId)??r.object;e.push({object:a,key:s})}else r.kind==="remove"&&n.push({object:r.object,key:s})}return{set:e,erased:n}}function $u(i,t){const e={};for(const n of Dx){const r=i.getAttrWithoutException(n),s=t.getAttrWithoutException(n);mn(r,s)||(e[n]=s)}return e}function qu(i,t,e=!1){const n=[];for(const r of t){if(r.kind!=="modify")continue;const s=i.getObjectById(r.objectId);if(!(s instanceof Wr))continue;const a=r.before,o=r.after;if(!a||!o)continue;const c=e?$u(o,a):$u(a,o);Object.keys(c).length!==0&&n.push({database:i,layer:s,changes:c})}return n}function Gw(i,t){if(i.type!==t.type)return!1;switch(i.type){case"blockTableRecord":return t.type==="blockTableRecord"&&i.ownerId===t.ownerId;case"symbolTable":return t.type==="symbolTable"&&i.tableName===t.tableName;case"dictionary":return t.type==="dictionary"&&i.dictionaryId===t.dictionaryId&&i.key===t.key}}class $p{constructor(){this.changes=[]}getChanges(){return this.changes}clear(){this.changes.length=0}mergeFrom(t){for(const e of t.getChanges())this.mergeChange(e)}recordModify(t){const e=t.objectId;this.changes.find(r=>r.kind==="modify"&&r.objectId===e)||this.changes.push({kind:"modify",objectId:e,before:t.clonePreservingIdentity()})}hasModify(t){return this.changes.some(e=>e.kind==="modify"&&e.objectId===t)}recordAppend(t,e){this.recordStructuralChange({kind:"append",container:t,object:e.clonePreservingIdentity()})}recordRemove(t,e){this.recordStructuralChange({kind:"remove",container:t,object:e.clonePreservingIdentity()})}recordSysvar(t,e){const n=t.toLowerCase();this.changes.find(s=>s.kind==="sysvar"&&s.name===n)||this.changes.push({kind:"sysvar",name:n,before:e})}finalize(t){for(const e of this.changes)if(e.kind==="modify"){const n=t.getObjectById(e.objectId);n&&(e.after=n.clonePreservingIdentity())}else e.kind==="sysvar"&&(e.after=this.getSysvarValue(t,e.name))}recordStructuralChange(t){const e=t.kind==="append"?"remove":"append",n=this.findStructuralChangeIndex(e,t.container,t.object.objectId);if(n>=0){this.changes.splice(n,1);return}this.changes.push(t)}mergeChange(t){if(t.kind==="modify"){this.changes.find(n=>n.kind==="modify"&&n.objectId===t.objectId)||this.changes.push(t);return}if(t.kind==="sysvar"){this.changes.find(n=>n.kind==="sysvar"&&n.name===t.name)||this.changes.push(t);return}this.recordStructuralChange(t)}findStructuralChangeIndex(t,e,n){return this.changes.findIndex(r=>r.kind===t&&r.object.objectId===n&&Gw(r.container,e))}getSysvarValue(t,e){return xt.instance().getVar(e,t)}}class Gl{constructor(){this.openedObjects=new Map,this.originalStates=new Map,this.recorder=new $p}getObject(t,e,n=!1){const r=this.openedObjects.get(t);if(r){if(e===Mi.kForWrite&&!this.originalStates.has(t)){const a=r.clonePreservingIdentity();this.originalStates.set(t,a),this.recorder.recordModify(r)}return r}const s=this.lookupObject(t,n);if(this.openedObjects.set(t,s),e===Mi.kForWrite){const a=s.clonePreservingIdentity();this.originalStates.set(s.objectId,a),this.recorder.recordModify(s)}return s}commit(){this.originalStates.clear(),this.openedObjects.clear()}abort(){for(const[t,e]of this.originalStates){const n=this.openedObjects.get(t);n&&n.restoreFrom(e)}this.originalStates.clear(),this.openedObjects.clear(),this.recorder.clear()}lookupObject(t,e){throw new Error(`lookupObject(${t}) not implemented`)}}class qp extends Gl{constructor(t){super(),this.database=t}lookupObject(t,e){const n=this.database.getObjectById(t,e);if(!n)throw new Error(`lookupObject(${t}) not found`);return n}}class Kp{constructor(){this.undoRecords=[],this.redoRecords=[],this.maxDepth=100}push(t){this.undoRecords.push(t),this.redoRecords.length=0,this.undoRecords.length>this.maxDepth&&this.undoRecords.shift()}popUndo(){return this.undoRecords.pop()}pushRedo(t){this.redoRecords.push(t)}popRedo(){return this.redoRecords.pop()}canUndo(){return this.undoRecords.length>0}canRedo(){return this.redoRecords.length>0}clear(){this.undoRecords.length=0,this.redoRecords.length=0}}class Zp{constructor(t){this.database=t,this.transactionStack=[],this.undoStack=new Kp,this.undoMarkStack=[],this._applyingUndoRedo=!1,this._pendingEntityModified=new Set,this._pendingLayerModified=new Map,this.strictMode=!1,this.changeApplier=new Wp(t)}startTransaction(){const t=new qp(this.database);return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}hasTransaction(){return this.transactionStack.length>0}isRecording(){return this.hasTransaction()&&!this._applyingUndoRedo}isApplyingUndoRedo(){return this._applyingUndoRedo}isOpenedForWriteInTransaction(t){for(const e of this.transactionStack)if(e.recorder.hasModify(t))return!0;return!1}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");if(this.transactionStack.length>0){this.transactionStack[this.transactionStack.length-1].recorder.mergeFrom(t.recorder),t.commit();return}t.recorder.finalize(this.database);const e=t.recorder.getChanges();t.commit(),e.length>0&&(this.dispatchCommitEvents(e),this.enqueueUndoChanges(e))}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");const e=[...t.recorder.getChanges()];this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{t.abort(),e.length>0&&this.changeApplier.applyInverse(e)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}}startUndoMark(t){this.undoMarkStack.push({label:t,pendingChanges:[]})}endUndoMark(){const t=this.undoMarkStack.pop();if(!t)throw new Error("No active undo mark to end.");t.pendingChanges.length!==0&&this.undoStack.push({label:t.label,changes:t.pendingChanges})}cancelUndoMark(){this.undoMarkStack.length>0&&this.undoMarkStack.pop()}undo(){const t=this.undoStack.popUndo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyInverse(t.changes),this.dispatchUndoRedoEvents(t.changes,!0)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.pushRedo(t),!0}redo(){const t=this.undoStack.popRedo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyForward(t.changes),this.dispatchUndoRedoEvents(t.changes,!1)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.push(t),!0}canUndo(){return this.undoStack.canUndo()}canRedo(){return this.undoStack.canRedo()}clearUndoStack(){this.undoStack.clear()}recordAppend(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordAppend(t,e))}recordRemove(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordRemove(t,e))}recordSysvar(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordSysvar(t,e))}resolveSymbolTableName(t){const e=this.database.tables;return t===e.appIdTable?"appIdTable":t===e.blockTable?"blockTable":t===e.dimStyleTable?"dimStyleTable":t===e.linetypeTable?"linetypeTable":t===e.textStyleTable?"textStyleTable":t===e.viewTable?"viewTable":t===e.layerTable?"layerTable":t===e.viewportTable?"viewportTable":t.objectId}runUndoable(t,e){this.startUndoMark(t),this.startTransaction();try{const n=e(this.currentTransaction());return this.commitTransaction(),this.endUndoMark(),n}catch(n){throw this.hasTransaction()&&this.abortTransaction(),this.cancelUndoMark(),n}}enqueueUndoChanges(t){const e=this.undoMarkStack[this.undoMarkStack.length-1];if(e)for(const n of t)e.pendingChanges.push(n)}dispatchCommitEvents(t){const{modified:e,appended:n,erased:r}=Ec(this.database,t);for(const o of e)this.dispatchEntityModified(o);n.length>0&&this.database.notifyEntityAppended(n),r.length>0&&this.database.notifyEntityErased(r);const{set:s,erased:a}=Wu(this.database,t);for(const{object:o,key:c}of s)this.database.notifyDictObjectSet(o,c);for(const{object:o,key:c}of a)this.database.notifyDictObjectErased(o,c);for(const o of t)o.kind==="sysvar"&&o.after!==void 0&&xt.instance().events.sysVarChanged.dispatch({database:this.database,name:o.name,oldVal:o.before,newVal:o.after});for(const o of qu(this.database,t))this.dispatchLayerModified(o)}dispatchUndoRedoEvents(t,e){const{modified:n,appended:r,erased:s}=Ec(this.database,t),{set:a,erased:o}=Wu(this.database,t);if(e){for(const c of n)this.dispatchEntityModified(c);s.length>0&&this.database.notifyEntityAppended(s),r.length>0&&this.database.notifyEntityErased(r);for(const{object:c,key:l}of o)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of a)this.database.notifyDictObjectErased(c,l)}else{for(const c of n)this.dispatchEntityModified(c);r.length>0&&this.database.notifyEntityAppended(r),s.length>0&&this.database.notifyEntityErased(s);for(const{object:c,key:l}of a)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of o)this.database.notifyDictObjectErased(c,l)}for(const c of t)if(c.kind==="sysvar"){const l=e?c.after:c.before,h=e?c.before:c.after;h!==void 0&&xt.instance().events.sysVarChanged.dispatch({database:this.database,name:c.name,oldVal:l,newVal:h})}for(const c of qu(this.database,t,e))this.dispatchLayerModified(c)}dispatchLayerModified(t){if(this.database.isEventBatched()){const e=this._pendingLayerModified.get(t.layer.objectId);if(e){e.changes={...e.changes,...t.changes};return}this._pendingLayerModified.set(t.layer.objectId,{database:t.database,layer:t.layer,changes:{...t.changes}});return}this.database.events.layerModified.dispatch(t)}dispatchEntityModified(t){if(this.database.isEventBatched()){this._pendingEntityModified.add(t);return}this.database.events.entityModified.dispatch({database:this.database,entity:t})}flushPendingLayerModifiedEvents(){if(this._pendingLayerModified.size===0)return;const t=[...this._pendingLayerModified.values()];this._pendingLayerModified.clear();for(const e of t)this.database.events.layerModified.dispatch(e)}flushPendingEntityModifiedEvents(){if(this._pendingEntityModified.size===0)return;const t=[...this._pendingEntityModified];this._pendingEntityModified.clear();for(const e of t)this.database.events.entityModified.dispatch({database:this.database,entity:e})}}const br=class br extends pt{constructor(){super({objectId:"0"}),this._classes=[],this._dimStyleAnnotationScales=new Map,this._handleRegistry=new Map,this._drawNoPlotLayers=!0,this._drawCircleSides=kc,this._eventBatchDepth=0,this._pendingEntityAppended=[],this._pendingEntityErased=[],this._pendingDictObjectSet=[],this._pendingDictObjectErased=[],this._lastOpenError=null,this.events={dictObjetSet:new wt,dictObjectErased:new wt,entityAppended:new wt,entityModified:new wt,entityErased:new wt,layerAppended:new wt,layerModified:new wt,layerErased:new wt,openProgress:new wt,openFailed:new wt},br._unsavedDrawingSequence+=1,this._dwgname=`Drawing${br._unsavedDrawingSequence}.dwg`,this._version=new Tt("AC1014"),this._dwgCodePage=void 0,this._angbase=0,this._angdir=0,this._aunits=Ut.DecimalDegrees,this._auprec=0,this._lunits=_t.Decimal,this._luprec=4,this._celtscale=1,this._cecolor=new U,this._celtype=Pt,this._celweight=exports.AcGiLineWeight.ByLayer,this._cetransparency=new At,this._clayer="0",this._cmlstyle=Ze,this._cmlscale=1,this._cmleaderstyle=Qe,this._hpbackgroundcolor=new U(exports.AcCmColorMethod.None),this._hpcolor=this._cecolor.clone(),this._hplayer=".",this._hptransparency=new At,this._textstyle=gt,this._dimstyle=gt,this._extents=new H,this._insunits=ft.Millimeters,this._unitmode=0,this._measurement=1,this._ltscale=1,this._lwdisplay=!1,this._tilemode=1,this._psltscale=!0,this._cannoscale="1:1",this._dimStyleAnnotationScales=new Map,this._annoallvisible=!0,this._pdmode=0,this._pdsize=0,this._osmode=0,this._orthomode=0,this._comparehatch=js,this._comparercmargin=Vs,this._comparetext=Us,this._comparetolerance=Hs,this._maxHandle=0,this._tables={appIdTable:new Hp(this),blockTable:new Np(this),dimStyleTable:new Xp(this),linetypeTable:new Yp(this),textStyleTable:new Nr(this),ucsTable:new jp(this),viewTable:new Vp(this),layerTable:new zp(this),viewportTable:new Up(this)},this._objects={dictionary:new K(this),dictionaryVar:new K(this),group:new K(this),imageDefinition:new K(this),layerFilter:new K(this),layerIndex:new K(this),layout:new Gp(this),mleaderStyle:new K(this),mlineStyle:new K(this),objectContextData:new K(this),scale:new K(this),sortentsTable:new K(this),xrecord:new K(this)},this._layerFilters=new nn,this.transactionManager=new Zp(this),this.registerBootstrapHandles()}get tables(){return this._tables}get classes(){return this._classes}set classes(t){this._classes=t.map(e=>({...e}))}get objects(){return this._objects}get layerFilters(){return this._layerFilters}set layerFilters(t){this._layerFilters=t??new nn}getObjectById(t,e=!1){return t===this.objectId?this:this._handleRegistry.get(t)}createExtensionDictionaryFor(t){const e=t.extensionDictionary;if(e)return e;const n=new K(this);return n.database=this,n.ownerId=t.objectId,this.commitObjectHandle(n),t.extensionDictionary=n.objectId,n.objectId}isUndoRecording(){return this.transactionManager.isRecording()}openObject(t,e){const n=this.transactionManager.currentTransaction();if(n){const r=n.getObject(t,e);if(r)return r}return this.getObjectById(t)}openObjectForRead(t){return this.openObject(t,Mi.kForRead)}openObjectForWrite(t){return this.openObject(t,Mi.kForWrite)}openEntityForRead(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForRead(e)}openEntityForWrite(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForWrite(e)}runDatabaseEdit(t,e){if(this.isUndoRecording()){e();return}this.transactionManager.runUndoable(t,e)}getRootDictionaries(){return[this.objects.dictionary,this.objects.dictionaryVar,this.objects.group,this.objects.imageDefinition,this.objects.layerFilter,this.objects.layerIndex,this.objects.layout,this.objects.mleaderStyle,this.objects.mlineStyle,this.objects.objectContextData,this.objects.scale,this.objects.sortentsTable,this.objects.xrecord]}beginEventBatch(){this._eventBatchDepth++}endEventBatch(){this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth===0&&(this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents(),this.flushEventBatch()))}async endEventBatchChunked(t,e){if(this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth!==0))return;this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents();const n=this._pendingEntityAppended;this._pendingEntityAppended=[];const r=n.length,s=Math.max(1,t);if(r===0){this.flushEventBatchRemainder();return}let a=0;try{for(let o=0;o<r;o+=s){const c=Math.min(o+s,r),l=n.slice(o,c);this.events.entityAppended.dispatch({database:this,entity:l}),a=c,e&&await e(c,r)}}finally{a<r&&this.events.entityAppended.dispatch({database:this,entity:n.slice(a)}),this.flushEventBatchRemainder()}}isEventBatched(){return this._eventBatchDepth>0}notifyEntityAppended(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityAppended.push(...e);return}this.events.entityAppended.dispatch({database:this,entity:t})}notifyEntityErased(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityErased.push(...e);return}this.events.entityErased.dispatch({database:this,entity:t})}notifyDictObjectSet(t,e){if(this.isEventBatched()){this._pendingDictObjectSet.push({object:t,key:e});return}this.events.dictObjetSet.dispatch({database:this,object:t,key:e})}notifyDictObjectErased(t,e){if(this.isEventBatched()){this._pendingDictObjectErased.push({object:t,key:e});return}this.events.dictObjectErased.dispatch({database:this,object:t,key:e})}flushEventBatch(){if(this._pendingEntityAppended.length>0){const t=this._pendingEntityAppended;this._pendingEntityAppended=[],this.events.entityAppended.dispatch({database:this,entity:t})}this.flushEventBatchRemainder()}flushEventBatchRemainder(){if(this._pendingEntityErased.length>0){const t=this._pendingEntityErased;this._pendingEntityErased=[],this.events.entityErased.dispatch({database:this,entity:t})}if(this._pendingDictObjectSet.length>0){const t=this._pendingDictObjectSet;this._pendingDictObjectSet=[];for(const{object:e,key:n}of t)this.events.dictObjetSet.dispatch({database:this,object:e,key:n})}if(this._pendingDictObjectErased.length>0){const t=this._pendingDictObjectErased;this._pendingDictObjectErased=[];for(const{object:e,key:n}of t)this.events.dictObjectErased.dispatch({database:this,object:e,key:n})}}get formatter(){return this._formatter??(this._formatter=new Ep(this))}generateHandle(){return this._maxHandleBig!=null?(this._maxHandleBig+=BigInt(1),this._maxHandleBig.toString(16).toUpperCase()):this._maxHandle>=Number.MAX_SAFE_INTEGER?(this._maxHandleBig=BigInt(this._maxHandle),this.generateHandle()):(this._maxHandle++,this._maxHandle.toString(16).toUpperCase())}generateUniqueHandle(){let t=this.generateHandle();for(;this.isHandleTaken(t);)t=this.generateHandle();return t}initializeHandleSeed(t){const e=BigInt("0x"+t);if(e<=BigInt(0))return;const n=e-BigInt(1);if(n<=BigInt(Number.MAX_SAFE_INTEGER)){if(this._maxHandleBig==null){const r=Number(n);r>this._maxHandle&&(this._maxHandle=r)}return}(this._maxHandleBig==null||n>this._maxHandleBig)&&(this._maxHandleBig=n)}adoptExternalHandle(t,e){return this.releaseObjectHandle(t),e&&!e.startsWith(yn)&&!this.isHandleTaken(e)?(t.objectId=e,this.registerObjectHandle(t),this.updateMaxHandle(e),e):this.assignGeneratedHandle(t)}registerObjectHandle(t){const e=t.objectId;!e||e.startsWith(yn)||this._handleRegistry.set(e,t)}releaseObjectHandle(t){const e=t.objectId;!e||e.startsWith(yn)||this._handleRegistry.get(e)===t&&this._handleRegistry.delete(e)}isHandleTaken(t,e){if(!t||t.startsWith(yn))return!1;const n=this._handleRegistry.get(t);return n!==void 0&&n!==e}registerBootstrapHandles(){this._handleRegistry.clear(),this.registerObjectHandle(this);for(const t of[this._tables.blockTable,this._tables.dimStyleTable,this._tables.layerTable,this._tables.linetypeTable,this._tables.appIdTable,this._tables.textStyleTable,this._tables.ucsTable,this._tables.viewTable,this._tables.viewportTable])this.registerObjectHandle(t);for(const t of[this._objects.dictionary,this._objects.dictionaryVar,this._objects.group,this._objects.imageDefinition,this._objects.layerFilter,this._objects.layerIndex,this._objects.layout,this._objects.mleaderStyle,this._objects.mlineStyle,this._objects.objectContextData,this._objects.scale,this._objects.sortentsTable,this._objects.xrecord])this.registerObjectHandle(t)}assignGeneratedHandle(t){const e=t.objectId;this.releaseObjectHandle(t);const n=this.generateUniqueHandle();if(t.objectId=n,this.registerObjectHandle(t),e&&e!==n){if(this.updateMaxHandle(n),t instanceof ct)for(const r of t.newIterator())r.getAttrWithoutException("ownerId")===e&&(r.ownerId=n);if(t instanceof Ae)for(const r of t.newIterator(!0))r.getAttrWithoutException("ownerId")===e&&(r.ownerId=n);if(t instanceof K)for(const r of t.newIterator())r.getAttrWithoutException("ownerId")===e&&(r.ownerId=n)}return n}updateMaxHandle(t){this.trackMaxHandle(t)}trackMaxHandle(t){if(this._maxHandleBig!=null){if(t.length>=14){const n=BigInt("0x"+t);n>this._maxHandleBig&&(this._maxHandleBig=n)}return}const e=parseInt(t,16);if(!isNaN(e)){if(e>Number.MAX_SAFE_INTEGER){this._maxHandleBig=BigInt("0x"+t);return}e>this._maxHandle&&(this._maxHandle=e)}}commitObjectHandle(t,e){const n=t.getAttrWithoutException("objectId"),r=e!=null&&n!=null&&e(n);if(!n||t.isTemp||r){this.assignGeneratedHandle(t);return}const a=this._handleRegistry.get(n);if(a&&a!==t)if(this.shouldPreserveIncomingHandle(t))this.assignGeneratedHandle(a);else{this.assignGeneratedHandle(t);return}this.registerObjectHandle(t),this.updateMaxHandle(n)}shouldPreserveIncomingHandle(t){return!t.isTemp}get currentSpaceId(){return this._currentSpace||(this._currentSpace=this._tables.blockTable.modelSpace),this._currentSpace.objectId}set currentSpaceId(t){const e=this.tables.blockTable.getIdAt(t);if(e==null)throw new Error(`[AcDbDatabase] The specified block table record id '${t}' doesn't exist in the drawing database!`);this._currentSpace=e}get aunits(){return this._aunits}set aunits(t){this.updateSysVar(I.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get auprec(){return this._auprec}set auprec(t){this.updateSysVar(I.AUPREC,this._auprec,t??0,e=>{this._auprec=e})}get lunits(){return this._lunits}set lunits(t){this.updateSysVar(I.LUNITS,this._lunits,t??_t.Decimal,e=>{this._lunits=e})}get luprec(){return this._luprec}set luprec(t){this.updateSysVar(I.LUPREC,this._luprec,t??4,e=>{this._luprec=e})}get version(){return this._version}set version(t){this.updateSysVar(I.ACADVER,this._version,new Tt(t),e=>{this._version=e})}get dwgCodePage(){return this._dwgCodePage}set dwgCodePage(t){this._dwgCodePage=t!=null&&t.trim()?t.trim():void 0}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(I.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get unitmode(){return this._unitmode}set unitmode(t){this.updateSysVar(I.UNITMODE,this._unitmode,t??0,e=>{this._unitmode=e})}get measurement(){return this._measurement}set measurement(t){this.updateSysVar(I.MEASUREMENT,this._measurement,t??1,e=>{this._measurement=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(I.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get cannoscale(){return this._cannoscale}set cannoscale(t){this.updateSysVar(I.CANNOSCALE,this._cannoscale,t||"1:1",e=>{this._cannoscale=e})}getDimStyleAnnotationScale(t){if(t)return this._dimStyleAnnotationScales.get(t.trim().toUpperCase())}setDimStyleAnnotationScale(t,e){!t||!(e>0)||this._dimStyleAnnotationScales.set(t.trim().toUpperCase(),e)}get annoallvisible(){return this._annoallvisible}set annoallvisible(t){const e=!!t;this.updateSysVar(I.ANNOALLVISIBLE,this._annoallvisible,e,n=>{this._annoallvisible=n})}get lwdisplay(){return this._lwdisplay}get drawNoPlotLayers(){return this._drawNoPlotLayers}get drawCircleSides(){return this._drawCircleSides}set drawCircleSides(t){this._drawCircleSides=J.resolveCircleSides(t)}get dwgname(){return this._dwgname}setDwgName(t){const e=t.trim();e&&this.updateSysVar(I.DWGNAME,this._dwgname,e,n=>{this._dwgname=n})}get thumbnailImage(){return this._thumbnailImage}set thumbnailImage(t){if(!t||t.length===0){this._thumbnailImage=void 0;return}this._thumbnailImage=t}isLayerDrawable(t){if(this._drawNoPlotLayers)return!0;const e=this.tables.layerTable.getAt(t);return e==null||e.isPlottable}set lwdisplay(t){this.updateSysVar(I.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get tilemode(){return this._tilemode}set tilemode(t){this.updateSysVar(I.TILEMODE,this._tilemode,t??1,e=>{this._tilemode=e})}get psltscale(){return this._psltscale}set psltscale(t){this._psltscale=t}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(I.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e.clone()})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(I.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celtype(){return this._celtype}set celtype(t){const e=this.normalizeLinetypeName(t??Pt);this.updateSysVar(I.CELTYPE,this._celtype,e,n=>{this._celtype=n})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(I.CELWEIGHT,this._celweight,t??exports.AcGiLineWeight.ByLayer,e=>{this._celweight=e})}get cetransparency(){return this._cetransparency}set cetransparency(t){this.updateSysVar(I.CETRANSPARENCY,this._cetransparency,t??new At,e=>{this._cetransparency=e.clone()})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(I.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get cmlstyle(){return this._cmlstyle}set cmlstyle(t){this.updateSysVar(I.CMLSTYLE,this._cmlstyle,t??Ze,e=>{this._cmlstyle=e})}get cmlscale(){return this._cmlscale}set cmlscale(t){this.updateSysVar(I.CMLSCALE,this._cmlscale,t??1,e=>{this._cmlscale=e})}get cmleaderstyle(){return this._cmleaderstyle}set cmleaderstyle(t){this.updateSysVar(I.CMLEADERSTYLE,this._cmleaderstyle,t??Qe,e=>{this._cmleaderstyle=e})}get hpbackgroundcolor(){return this._hpbackgroundcolor}set hpbackgroundcolor(t){this.updateSysVar(I.HPBACKGROUNDCOLOR,this._hpbackgroundcolor,t??new U(exports.AcCmColorMethod.None),e=>{this._hpbackgroundcolor=e.clone()})}get hpcolor(){return this._hpcolor}set hpcolor(t){this.updateSysVar(I.HPCOLOR,this._hpcolor,t??this._cecolor,e=>{this._hpcolor=e.clone()})}get hplayer(){return this._hplayer}set hplayer(t){this.updateSysVar(I.HPLAYER,this._hplayer,t??".",e=>{this._hplayer=e})}get hptransparency(){return this._hptransparency}set hptransparency(t){this.updateSysVar(I.HPTRANSPARENCY,this._hptransparency,t??new At,e=>{this._hptransparency=e.clone()})}get textstyle(){return this._textstyle}set textstyle(t){this.updateSysVar(I.TEXTSTYLE,this._textstyle,t??gt,e=>{this._textstyle=e})}get dimstyle(){return this._dimstyle}set dimstyle(t){this.updateSysVar(I.DIMSTYLE,this._dimstyle,t??gt,e=>{this._dimstyle=e})}get angbase(){return this._angbase}set angbase(t){this.updateSysVar(I.ANGBASE,this._angbase,t??0,e=>{this._angbase=e})}get angdir(){return this._angdir}set angdir(t){this.updateSysVar(I.ANGDIR,this._angdir,t??0,e=>{this._angdir=e})}get extmax(){return this._extents.max}set extmax(t){if(t){const e=this._extents.max.clone();this._extents.expandByPoint(t),this._extents.max.equals(e)||this.triggerSysVarChangedEvent(I.EXTMAX,e,this._extents.max)}}get extmin(){return this._extents.min}set extmin(t){if(t){const e=this._extents.min.clone();this._extents.expandByPoint(t),this._extents.min.equals(e)||this.triggerSysVarChangedEvent(I.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(I.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(I.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}get osmode(){return this._osmode}set osmode(t){this.updateSysVar(I.OSMODE,this._osmode,t??0,e=>{this._osmode=e})}get orthomode(){return this._orthomode}set orthomode(t){this.updateSysVar(I.ORTHOMODE,this._orthomode,t??0,e=>{this._orthomode=e})}get comparehatch(){return this._comparehatch}set comparehatch(t){const e=Me("COMPAREHATCH",t??js,Ja,to);this.updateSysVar(I.COMPAREHATCH,this._comparehatch,e,n=>{this._comparehatch=n})}get comparercmargin(){return this._comparercmargin}set comparercmargin(t){const e=Me("COMPARERCMARGIN",t??Vs,eo,no);this.updateSysVar(I.COMPARERCMARGIN,this._comparercmargin,e,n=>{this._comparercmargin=n})}get comparetext(){return this._comparetext}set comparetext(t){const e=Me("COMPARETEXT",t??Us,io,ro);this.updateSysVar(I.COMPARETEXT,this._comparetext,e,n=>{this._comparetext=n})}get comparetolerance(){return this._comparetolerance}set comparetolerance(t){const e=Me("COMPARETOLERANCE",t??Hs,so,ao);this.updateSysVar(I.COMPARETOLERANCE,this._comparetolerance,e,n=>{this._comparetolerance=n})}get lastOpenError(){return this._lastOpenError}async read(t,e,n=ur.DXF){const r=Le.instance.get(n);if(r==null)throw new Error(`Database converter for file type '${n}' isn't registered and can can't read this file!`);let s;if(typeof t=="string"){const a=new TextEncoder().encode(t);s=a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength)}else if(t instanceof ArrayBuffer)s=t;else if(ArrayBuffer.isView(t))s=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);else{const a=new Bt("AcDbDatabase.read expects a string, ArrayBuffer, or ArrayBufferView","unknown");throw this._lastOpenError=a,this.events.openFailed.dispatch({database:this,error:a}),a}this.clear(),this._lastOpenError=null,this._drawNoPlotLayers=(e==null?void 0:e.drawNoPlotLayers)??!0,this.drawCircleSides=(e==null?void 0:e.circleSides)??kc,e!=null&&e.fileName&&this.setDwgName(e.fileName),zg(this);try{await r.read(s,this,{minimumChunkSize:e&&e.minimumChunkSize||10,progress:this.createConversionProgressHandler(),timeout:e==null?void 0:e.timeout,encoding:e==null?void 0:e.encoding,sysVars:e==null?void 0:e.sysVars})}catch(a){const o=Bt.from(a);throw this._lastOpenError=o,this.events.openFailed.dispatch({database:this,error:o}),o}this._lastOpenError=null,this.ensureDatabaseDefaults()}createConversionProgressHandler(){return async(t,e,n,r,s)=>{let a=r;if(n==="ERROR"&&s){const o=Bt.fromTask(s);this._lastOpenError=o,a={code:o.code,message:o.message,stage:o.stage??e}}this.events.openProgress.dispatch({database:this,percentage:t,stage:"CONVERSION",subStage:e,subStageStatus:n,data:a})}}async openUri(t,e){var g;this.events.openProgress.dispatch({database:this,percentage:0,stage:"FETCH_FILE",subStageStatus:"START"});const n=await fetch(t);if(!n.ok)throw this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"ERROR"}),new Error(`Failed to fetch file '${t}' with HTTP status code '${n.status}'!`);const r=n.headers.get("content-length"),s=r?parseInt(r,10):null;let a=0;const o=(g=n.body)==null?void 0:g.getReader();if(!o)throw new Error("Failed to get response reader");const c=[];for(;;){const{done:f,value:p}=await o.read();if(f)break;if(c.push(p),a+=p.length,s!==null){const m=Math.round(a/s*100);this.events.openProgress.dispatch({database:this,percentage:m,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const l=new Uint8Array(a);let h=0;for(const f of c)l.set(f,h),h+=f.length;const u=this.getFileNameFromUri(t);u&&this.setDwgName(u);const d=u.toLowerCase().split(".").pop();d==="dwg"?await this.read(l.buffer,e,ur.DWG):d==="dxf"?await this.read(l.buffer,e,ur.DXF):await this.read(l.buffer,e,d),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}dxfOut(t,e=16,n=this.version.name,r=!1){this.ensureDatabaseDefaults(),this._layerFilters.root.getNestedFilters().length>0&&!this.tables.layerTable.extensionDictionary&&(this.tables.layerTable.extensionDictionary=this.generateHandle());const s=typeof r=="boolean"?{saveThumbnailImage:r,format:"ascii"}:{saveThumbnailImage:r.saveThumbnailImage??!1,format:r.format??"ascii"},a=n instanceof Tt?n:new Tt(n),o=new tn({database:this,precision:e,version:a,outputFormat:s.format});return this.writeDxfHeaderSection(o),this.writeDxfClassesSection(o),this.writeDxfTablesSection(o,a),this.writeDxfBlocksSection(o),this.writeDxfEntitiesSection(o),this.writeDxfObjectsSection(o),this.writeDxfThumbnailImageSection(o,s.saveThumbnailImage),o.writeStart("EOF"),o.finalizeHandseed(),s.format==="binary"?o.toBinary():o.toString()}async regen(){await new qf(this).read(null,this,{minimumChunkSize:500,progress:this.createConversionProgressHandler()})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new jl(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}ensureEntityStyleDefaults(t){var e;if(t.dxfTypeName==="MLINE"){this.ensureMLineStyle(this._cmlstyle||Ze);return}if(t.dxfTypeName==="MULTILEADER"){this.ensureMLeaderStyle(this._cmleaderstyle||Qe);return}if(t.dxfTypeName==="HATCH"){const n=t;(e=n.applyPatternDefaultsFromSysVars)==null||e.call(n,this)}}ensureTextStyleDefaults(){this.hasDefaultTextStyle()||this.tables.textStyleTable.add(new uo({name:gt,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}hasDefaultTextStyle(){const t=[gt,"STANDARD"];for(const e of t)if(this.tables.textStyleTable.has(e))return!0;for(const e of this.tables.textStyleTable.newIterator())if(e.name.toUpperCase()===gt.toUpperCase())return!0;return!1}ensureDatabaseDefaults(){if(!this.tables.layerTable.has("0")){const e=new U;e.colorIndex=7,this.tables.layerTable.add(new Wr({name:"0",standardFlags:0,linetype:wn,lineWeight:0,isOff:!1,color:e,isPlottable:!0}))}if(this.tables.linetypeTable.has(Oe)||this.tables.linetypeTable.add(new An({name:Oe,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(Pt)||this.tables.linetypeTable.add(new An({name:Pt,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(wn)||this.tables.linetypeTable.add(new An({name:wn,standardFlag:0,description:"Solid line",totalPatternLength:0})),this.ensureTextStyleDefaults(),this.tables.dimStyleTable.has(gt)||this.tables.dimStyleTable.add(new Qt({name:gt,dimtxsty:gt})),!this.tables.viewportTable.has(Ei)){const e=new Sn;e.name=Ei,this.tables.viewportTable.add(e)}this.ensureMLineStyle(this._cmlstyle||Ze),this.ensureMLeaderStyle(this._cmleaderstyle||Qe);const t=this.tables.blockTable.modelSpace;if(!this.objects.layout.getAt("Model")){const e=new jn;e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.objectId,e.limits.min.copy({x:0,y:0}),e.limits.max.copy({x:1e6,y:1e6}),e.extents.min.copy({x:0,y:0,z:0}),e.extents.max.copy({x:1e6,y:1e6,z:0}),this.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId}this.ensureDefaultPaperSpaceLayout(),this.tables.appIdTable.has(pc)||this.tables.appIdTable.add(new ia(pc)),this.tables.appIdTable.has(fc)||this.tables.appIdTable.add(new ia(fc))}ensureDefaultPaperSpaceLayout(){for(const r of this.tables.blockTable.newIterator())if(r.isPaperSapce)return;const t=new ct;t.name=ct.PAPER_SPACE_NAME_PREFIX,this.tables.blockTable.add(t);const e=this.objects.layout.getAt("Layout1")?`Layout${this.objects.layout.maxTabOrder+1}`:"Layout1",n=new jn;n.layoutName=e,n.tabOrder=Math.max(1,this.objects.layout.maxTabOrder+1),n.blockTableRecordId=t.objectId,n.limits.min.copy({x:0,y:0}),n.limits.max.copy({x:12,y:9}),n.extents.min.copy({x:0,y:0,z:0}),n.extents.max.copy({x:12,y:9,z:0}),this.objects.layout.setAt(n.layoutName,n),t.layoutId=n.objectId}ensureMLineStyle(t){var s;const e=this.objects.mlineStyle,n=t.trim();if(!n||e.getAt(n))return;for(const[a,o]of e.entries())if((a==null?void 0:a.toUpperCase())===n.toUpperCase()||((s=o.styleName)==null?void 0:s.toUpperCase())===n.toUpperCase())return;const r=new Xl;r.styleName=n,r.elements=[{offset:.5,color:new U().setByLayer(),lineType:Pt},{offset:-.5,color:new U().setByLayer(),lineType:Pt}],e.setAt(n,r)}ensureMLeaderStyle(t){const e=this.objects.mleaderStyle,n=t.trim();if(!n||e.getAt(n))return;for(const[o]of e.entries())if((o==null?void 0:o.toUpperCase())===n.toUpperCase())return;const r=new po;r.unknown1=2,r.maxLeaderSegmentsPoints=2,r.leaderLineColor=new U().setByBlock(),r.textColor=new U().setByBlock(),r.blockColor=new U().setByBlock(),r.alignSpace=4,r.breakSize=3.75,r.enableBlockRotation=!0,r.unknown2=!1;const s=this.tables.linetypeTable.getAt(Oe);r.leaderLineTypeId=s==null?void 0:s.objectId;const a=this.tables.textStyleTable.getAt(gt);r.textStyleId=a==null?void 0:a.objectId,e.setAt(n,r)}writeDxfHeaderSection(t){var e;if(t.startSection("HEADER"),t.writeString(9,"$ACADVER"),t.writeString(1,((e=t.version)==null?void 0:e.name)??this.version.name),t.writeHandseedPlaceholder(),t.writeString(9,"$DWGCODEPAGE"),t.capabilities.supportsUtf8CodePage)t.writeString(3,"UTF-8");else{const n=this._dwgCodePage,r=n&&!/^utf-?8$/i.test(n)?n:"ANSI_1252";t.writeString(3,r)}t.writeString(9,"$INSUNITS"),t.writeInt16(70,this.insunits),t.writeString(9,"$LUNITS"),t.writeInt16(70,this.lunits),t.writeString(9,"$LUPREC"),t.writeInt16(70,this.luprec),t.writeString(9,"$UNITMODE"),t.writeInt16(70,this.unitmode),t.writeString(9,"$MEASUREMENT"),t.writeInt16(70,this.measurement),t.writeString(9,"$LTSCALE"),t.writeDouble(40,this.ltscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$LWDISPLAY"),t.writeBoolean(290,this.lwdisplay)),t.writeString(9,"$CELTSCALE"),t.writeDouble(40,this.celtscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$CELWEIGHT"),t.writeLineWeight(370,this.celweight)),t.writeString(9,"$CECOLOR"),t.writeCmColor(this.cecolor),t.writeString(9,"$TILEMODE"),t.writeInt16(70,this.tilemode),t.writeString(9,"$PSLTSCALE"),t.writeInt16(70,this.psltscale?1:0),t.writeString(9,"$CLAYER"),t.writeString(8,this.clayer),t.writeString(9,"$CELTYPE"),t.writeString(6,this.celtype),t.capabilities.supportsTransparency&&!this.cetransparency.isInvalid&&(t.writeString(9,"$CETRANSPARENCY"),t.writeTransparency(this.cetransparency)),t.writeString(9,"$CMLSTYLE"),t.writeString(2,this.cmlstyle),t.writeString(9,"$CMLSCALE"),t.writeDouble(40,this.cmlscale),t.capabilities.supportsMLeader&&(t.writeString(9,"$CMLEADERSTYLE"),t.writeString(2,this.cmleaderstyle)),t.capabilities.supportsHatchHeaderVars&&(this.hpcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPCOLOR"),t.writeCmColor(this.hpcolor)),this.hpbackgroundcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPBACKGROUNDCOLOR"),t.writeCmColor(this.hpbackgroundcolor)),this.hplayer&&this.hplayer!=="."&&(t.writeString(9,"$HPLAYER"),t.writeString(8,this.hplayer)),t.capabilities.supportsTransparency&&!this.hptransparency.isInvalid&&(t.writeString(9,"$HPTRANSPARENCY"),t.writeTransparency(this.hptransparency))),t.writeString(9,"$TEXTSTYLE"),t.writeString(7,this.textstyle),t.writeString(9,"$DIMSTYLE"),t.writeString(2,this.dimstyle),t.writeString(9,"$ANGBASE"),t.writeAngle(50,this.angbase),t.writeString(9,"$ANGDIR"),t.writeInt16(70,this.angdir),t.writeString(9,"$AUNITS"),t.writeInt16(70,this.aunits),t.writeString(9,"$AUPREC"),t.writeInt16(70,this.auprec),this.writeDxfExtentsHeader(t),t.writeString(9,"$PDMODE"),t.writeInt32(70,this.pdmode),t.writeString(9,"$PDSIZE"),t.writeDouble(40,this.pdsize),t.writeString(9,"$OSMODE"),t.writeInt32(70,this.osmode),t.writeString(9,"$ORTHOMODE"),t.writeInt16(70,this.orthomode),t.endSection()}writeDxfExtentsHeader(t){if(this._extents.isEmpty()&&this.refreshExtentsFromModelSpace(),this._extents.isEmpty()){t.writeString(9,"$EXTMIN"),t.writePoint3d(10,{x:1e20,y:1e20,z:1e20}),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,{x:-1e20,y:-1e20,z:-1e20});return}t.writeString(9,"$EXTMIN"),t.writePoint3d(10,this.extmin),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,this.extmax)}refreshExtentsFromModelSpace(){for(const t of this.tables.blockTable.modelSpace.newIterator())try{const e=t.geometricExtents;e&&!e.isEmpty()&&this._extents.union(e)}catch{}}writeDxfClassesSection(t){if(!(!t.capabilities.supportsClassesSection||this._classes.length===0)){t.startSection("CLASSES");for(const e of this._classes)t.writeStart("CLASS"),t.writeString(1,e.name),t.writeString(2,e.cppClassName),t.writeString(3,e.appName),t.writeInt32(90,e.proxyFlag),t.writeInt32(91,e.instanceCount),t.writeInt8(280,e.wasProxy?1:0),t.writeInt8(281,e.isEntity?1:0);t.endSection()}}writeDxfTablesSection(t,e){t.startSection("TABLES"),this.writeDxfTable(t,"VPORT",this.tables.viewportTable,this.tables.viewportTable.newIterator(),"VPORT"),this.writeDxfTable(t,"VIEW",this.tables.viewTable,this.tables.viewTable.newIterator(),"VIEW"),this.writeDxfTable(t,"UCS",this.tables.ucsTable,this.tables.ucsTable.newIterator(),"UCS"),this.writeDxfTable(t,"LTYPE",this.tables.linetypeTable,this.tables.linetypeTable.newIterator(),"LTYPE"),this.writeDxfTable(t,"LAYER",this.tables.layerTable,this.tables.layerTable.newIterator(),"LAYER"),this.writeDxfTable(t,"STYLE",this.tables.textStyleTable,this.tables.textStyleTable.newIterator(!0),"STYLE"),this.writeDxfTable(t,"APPID",this.tables.appIdTable,this.tables.appIdTable.newIterator(),"APPID"),this.writeDxfTable(t,"DIMSTYLE",this.tables.dimStyleTable,this.tables.dimStyleTable.newIterator(),"DIMSTYLE"),e.capabilities.supportsBlockRecordTable&&this.writeDxfTable(t,"BLOCK_RECORD",this.tables.blockTable,this.tables.blockTable.newIterator(),"BLOCK_RECORD"),t.endSection()}writeDxfBlocksSection(t){t.startSection("BLOCKS");for(const e of this.tables.blockTable.newIterator()){if(e.dxfOutBlockBegin(t),!e.isModelSapce&&!e.isPaperSapce)for(const n of e.newIterator())this.writeDxfEntity(t,n);e.dxfOutBlockEnd(t)}t.endSection()}writeDxfEntitiesSection(t){t.startSection("ENTITIES");for(const e of this.tables.blockTable.newIterator())if(!(!e.isModelSapce&&!e.isPaperSapce))for(const n of e.newIterator())this.writeDxfEntity(t,n);t.endSection()}writeDxfObjectsSection(t){if(!t.capabilities.supportsObjectsSection)return;t.startSection("OBJECTS");const e=this.objects.dictionary;e.ownerId="0";const n=l=>{t.writeStart("DICTIONARY"),l.dxfOut(t,!0)},r=(l,h)=>{e.getAt(l)!==h&&e.setAt(l,h)},s=l=>{e.getAt(l)&&e.remove(l)};r("ACAD_LAYOUT",this.objects.layout),r("ACAD_GROUP",this.objects.group),this.objects.sortentsTable.numEntries>0?r("ACAD_SORTENTS",this.objects.sortentsTable):s("ACAD_SORTENTS");const a=this.objects.mleaderStyle.numEntries>0,o=t.capabilities.supportsMLeader&&a,c=!o&&e.getAt("ACAD_MLEADERSTYLE")===this.objects.mleaderStyle;o?r("ACAD_MLEADERSTYLE",this.objects.mleaderStyle):s("ACAD_MLEADERSTYLE"),this.objects.mlineStyle.numEntries>0?r("ACAD_MLINESTYLE",this.objects.mlineStyle):s("ACAD_MLINESTYLE"),this.objects.imageDefinition.numEntries>0?r("ISM_RASTER_IMAGE_DICT",this.objects.imageDefinition):s("ISM_RASTER_IMAGE_DICT"),this.objects.xrecord.numEntries>0?r("MLIGHT_XRECORD",this.objects.xrecord):s("MLIGHT_XRECORD"),n(e),n(this.objects.layout),n(this.objects.group),this.objects.sortentsTable.numEntries>0&&n(this.objects.sortentsTable),o&&n(this.objects.mleaderStyle),this.objects.mlineStyle.numEntries>0&&n(this.objects.mlineStyle),this.objects.imageDefinition.numEntries>0&&n(this.objects.imageDefinition),this.objects.xrecord.numEntries>0&&n(this.objects.xrecord);for(const[l,h]of this.objects.layout.entries())t.writeStart("LAYOUT"),h.dxfOut(t,!0);for(const[l,h]of this.objects.group.entries())h.name||(h.name=l),t.writeStart("GROUP"),h.dxfOut(t,!0);for(const[l,h]of this.objects.sortentsTable.entries())t.writeStart("SORTENTSTABLE"),h.dxfOut(t,!0);for(const[l,h]of this.objects.imageDefinition.entries())t.writeStart("IMAGEDEF"),h.dxfOut(t,!0);for(const[l,h]of this.objects.layerFilter.entries())t.writeStart("LAYER_FILTER"),h.dxfOut(t,!0);for(const[l,h]of this.objects.layerIndex.entries())t.writeStart("LAYER_INDEX"),h.dxfOut(t,!0);if(o)for(const[l,h]of this.objects.mleaderStyle.entries())t.writeStart("MLEADERSTYLE"),h.dxfOut(t,!0);for(const[l,h]of this.objects.mlineStyle.entries())t.writeStart("MLINESTYLE"),h.dxfOut(t,!0);for(const[l,h]of this.objects.xrecord.entries())t.writeStart("XRECORD"),h.dxfOut(t,!0);this.writeAcLyLayerFilterObjects(t),t.endSection(),c&&e.setAt("ACAD_MLEADERSTYLE",this.objects.mleaderStyle)}writeAcLyLayerFilterObjects(t){const e=op(this._layerFilters);if(e.nodes.length===0)return;const n=[],r=[],s=this.tables.layerTable,a=s.extensionDictionary??this.generateHandle();s.extensionDictionary=a;const o=this.generateHandle(),c=this.generateHandle(),l=[],h=[],u=(f,p,m)=>{const y=this.generateHandle();let b;if(f.children.length>0){const _=this.generateHandle(),w=this.generateHandle(),P=[];for(const S of f.children)P.push({name:S.key,id:u(S,w,!1)});n.push({handle:_,ownerId:y,entries:[{name:Bi,id:w}]}),n.push({handle:w,ownerId:_,entries:P}),b=_}return r.push({handle:y,ownerId:p,extensionDictionaryId:b,data:f.data}),m&&h.push({name:f.key,id:y}),y};for(const f of e.nodes)l.push({name:f.key,id:u(f,o,!0)});const d=new Map,g=this.getObjectById(a);if(g instanceof K)for(const[f,p]of g.entries())d.set(f,p.objectId);d.set(Bi,o),d.set(fo,c),n.unshift({handle:a,ownerId:s.objectId,entries:Array.from(d,([f,p])=>({name:f,id:p}))},{handle:o,ownerId:a,entries:l},{handle:c,ownerId:a,entries:h});for(const f of n){t.writeStart("DICTIONARY"),t.writeHandle(5,f.handle),t.writeObjectId(330,f.ownerId),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const p of f.entries)t.writeString(3,p.name),t.writeObjectId(350,p.id)}for(const f of r){const p=new oo;p.objectId=f.handle,p.ownerId=f.ownerId,f.extensionDictionaryId&&(p.extensionDictionary=f.extensionDictionaryId),p.data=cp(f.data),t.writeStart("XRECORD"),p.dxfOut(t)}}writeDxfTable(t,e,n,r,s){const a=[...r];t.startTable(e),n.dxfOut(t);for(const o of a){if(s==="BLOCK_RECORD"&&o instanceof ct){o.dxfOutBlockRecord(t);continue}t.writeStart(s),o.dxfOut(t,!0)}t.endTable()}writeDxfEntity(t,e){if(e instanceof Vt&&!t.capabilities.supportsLwPolyline){t.writeStart("POLYLINE"),e.dxfOutAs2dPolyline(t,!0);return}t.writeStart(e.dxfTypeName),e.dxfOut(t,!0)}writeDxfThumbnailImageSection(t,e=!1){const n=this._thumbnailImage;if(!e||!n||n.length===0||!t.capabilities.supportsObjectsSection)return;const r=127;t.startSection("THUMBNAILIMAGE"),t.writeInt32(90,n.length);for(let s=0;s<n.length;s+=r){const a=n.subarray(s,s+r);t.writeString(310,co(a))}t.endSection()}clear(){this.transactionManager.clearUndoStack(),this._classes=[],this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.ucsTable.removeAll(),this._tables.viewTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._tables.appIdTable.removeAll(),this._objects.layout.removeAll(),this._objects.group.removeAll(),this._objects.imageDefinition.removeAll(),this._objects.layerFilter.removeAll(),this._objects.layerIndex.removeAll(),this._objects.mleaderStyle.removeAll(),this._objects.mlineStyle.removeAll(),this._objects.objectContextData.removeAll(),this._objects.scale.removeAll(),this._objects.dictionaryVar.removeAll(),this._objects.sortentsTable.removeAll(),this._objects.xrecord.removeAll(),this._cannoscale="1:1",this._dimStyleAnnotationScales.clear(),this._annoallvisible=!0,this._layerFilters=new nn,this._currentSpace=void 0,this._extents.makeEmpty(),this.registerBootstrapHandles()}updateSysVar(t,e,n,r){xt.instance().applyVarMutation(t,e,n,this,()=>r(n))}normalizeLinetypeName(t){const e=t.trim();return e.toUpperCase()==="BYLAYER"?Pt:e.toUpperCase()==="BYBLOCK"?Oe:e}triggerSysVarChangedEvent(t,e,n){const r=xt.instance(),s=t.toLowerCase();r.getDescriptor(s)!=null&&r.events.sysVarChanged.dispatch({database:this,name:s,oldVal:e,newVal:n})}getFileNameFromUri(t){try{const n=new URL(t).pathname.split("/");return n[n.length-1]||""}catch{return""}}};br._unsavedDrawingSequence=0;let Tc=br;class Ww{constructor(){this.transactionStack=[]}startTransaction(){const t=new Gl;return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");t.commit()}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");t.abort()}hasTransaction(){return this.transactionStack.length>0}}const Ho=6,uh=class uh extends rt{get dxfTypeName(){return"TOLERANCE"}constructor(){super(),this._location=new x,this._text="",this._dimensionStyle="",this._normal=new A(0,0,1),this._direction=new A(1,0,0)}get location(){return this._location}set location(t){this._location.set(t.x,t.y,t.z??0)}get text(){return this._text}set text(t){this._text=t}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get normal(){return this._normal}set normal(t){this._normal.set(t.x,t.y,t.z??0),this._normal.lengthSq()>0&&this._normal.normalize()}get direction(){return this._direction}set direction(t){this._direction.set(t.x,t.y,t.z??0),this._direction.lengthSq()>0&&this._direction.normalize()}setOrientation(t,e){return this.normal=t,this.direction=e,this}getBoundingPoints(){return this.getBoundingPolyline().slice(0,4)}getBoundingPolyline(){const{width:t,rowHeight:e,rowCount:n}=this.resolveFrameLayout(),r=e/2,s=r-e*n;return[new x(0,r,0),new x(t,r,0),new x(t,s,0),new x(0,s,0),new x(0,r,0)].map(o=>this.toFrameWcs(o.x,o.y))}get geometricExtents(){const t=new H;for(const e of this.getBoundingPoints())t.expandByPoint(e);return t.isEmpty()&&t.expandByPoint(this._location),t}subGetGripPoints(){return[this._location]}subMoveGripPointsAt(t,e){return le(t,e,this._location),this}subGetOsnapPoints(t,e,n,r){t===E.Insertion&&r.push(this._location)}transformBy(t){const e=this.resolveLocalBasis(),n=this._location.clone(),r=n.clone().add(e.xAxis),s=n.clone().add(e.yAxis);n.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const a=new A(r).sub(n),o=new A(s).sub(n);let c=new A().crossVectors(a,o);c.lengthSq()===0?c=this._normal.clone().transformDirection(t):c.normalize();let l=a.clone();return l.lengthSq()===0?l=this._direction.clone().transformDirection(t):l.normalize(),this._location.copy(n),this._normal.copy(c),this._direction.copy(l),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"tolerance",properties:[{name:"annotative",type:"boolean",editable:!0,accessor:{get:()=>this.annotative,set:t=>{this.annotative=t}}},{name:"text",type:"string",editable:!0,accessor:{get:()=>this.text,set:t=>{this.text=t}}},{name:"dimensionStyle",type:"string",editable:!0,accessor:{get:()=>this.dimensionStyle,set:t=>{this.dimensionStyle=t}}},{name:"textHeight",type:"float",editable:!1,accessor:{get:()=>this.textHeight}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}get annotative(){return ve(this)}set annotative(t){pe(this,t)}subWorldDraw(t,e){const r=this.collectFrameLineSegments().map(([o,c])=>t.lines([o,c])),s=this.drawToleranceText(t,e);let a;if(r.length>0&&s?a=t.group([...r,s]):r.length===1?a=r[0]:r.length>1?a=t.group(r):a=s,a&&this.annotative){const o=Yn(this);if(o.annotationScale){const c=a.userData??(a.userData={});c.annotationScale=o.annotationScale}}return a}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFcf"),this._dimensionStyle&&t.writeString(3,this._dimensionStyle),t.writePoint3d(10,this._location),t.writeString(1,this._text),this._normal.equals(A.Z_AXIS)||t.writeVector3d(210,this._normal),this._direction.equals(A.X_AXIS)||t.writeVector3d(11,this._direction),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFcf");let e=this.location.x,n=this.location.y,r=this.location.z,s=this.normal.x,a=this.normal.y,o=this.normal.z,c=this.direction.x,l=this.direction.y,h=this.direction.z,u=!1,d=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 1:this.text=String(g.value);break;case 3:this.dimensionStyle=String(g.value);break;case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:c=p,d=!0;break;case 21:l=p,d=!0;break;case 31:h=p,d=!0;break;case 210:s=p,u=!0;break;case 220:a=p,u=!0;break;case 230:o=p,u=!0;break}}return this.location={x:e,y:n,z:r},u&&(this.normal={x:s,y:a,z:o}),d&&(this.direction={x:c,y:l,z:h}),this}get textHeight(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxt)??Qt.DEFAULT_DIM_VALUES.dimtxt,n=(t==null?void 0:t.dimscale)??Qt.DEFAULT_DIM_VALUES.dimscale;return e*n}drawToleranceText(t,e){const n=this.parseToleranceFrame(this._text);if(n.length===0)return;const r=this.resolveFrameLayout(n),s=this.getTextStyle(),a=[];for(let o=0;o<n.length;o++){const c=n[o];let l=r.cellPadding;const h=-r.rowHeight*o;for(let u=0;u<c.cells.length;u++){const d=c.cells[u],g=r.columnWidths[u]??this.textHeight;if(d.trim()){const f=this.toFrameWcs(l+g/2,h),p={text:d,height:this.textHeight,width:1/0,position:f,directionVector:this._direction,attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,drawingDirection:exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT};a.push(t.mtext(p,s,e))}l+=g+r.columnGap}}if(a.length!==0)return a.length===1?a[0]:t.group(a)}collectFrameLineSegments(){const t=this.parseToleranceFrame(this._text),e=this.resolveFrameLayout(t),{width:n,rowHeight:r,rowCount:s,columnDivisions:a}=e;if(n<=0||r<=0||s<=0)return[];const o=r/2,c=o-r*s,l=[],h=(u,d)=>{l.push([u,d])};h(this.toFrameWcs(0,o),this.toFrameWcs(n,o)),h(this.toFrameWcs(n,o),this.toFrameWcs(n,c)),h(this.toFrameWcs(n,c),this.toFrameWcs(0,c)),h(this.toFrameWcs(0,c),this.toFrameWcs(0,o));for(const u of a)h(this.toFrameWcs(u,o),this.toFrameWcs(u,c));for(let u=1;u<t.length;u++){const d=o-r*u;h(this.toFrameWcs(0,d),this.toFrameWcs(n,d))}return l}toFrameWcs(t,e){const n=this.resolveLocalBasis();return this._location.clone().addScaledVector(n.xAxis,t).addScaledVector(n.yAxis,e)}resolveFrameLayout(t){const e=t??this.parseToleranceFrame(this._text),n=this.textHeight,r=n*2,s=n/2,a=n;if(n<=0||e.length===0)return{width:0,totalHeight:0,rowHeight:0,columnWidths:[],columnDivisions:[],rowCount:0,cellPadding:0,columnGap:0};const o=Math.max(...e.map(d=>d.cells.length),0),c=[];for(let d=0;d<o;d++){let g=n;for(const f of e){const p=f.cells[d]??"";if(!p.trim())continue;const m=rx(p,n);g=Math.max(g,m)}c.push(g)}const l=[0];let h=s;for(let d=0;d<c.length;d++)h+=c[d],h+=a,l.push(h-s);return{width:l[l.length-1]??0,totalHeight:r*e.length,rowHeight:r,columnWidths:c,columnDivisions:l,rowCount:e.length,cellPadding:s,columnGap:a}}parseToleranceFrame(t){if(!t)return[];const e=this.splitToleranceRows(t);if(e.length===0)return[];if(!t.includes("%%v"))return e.map(s=>({cells:this.parsePipeSeparatedCells(s)}));const n=e.map(s=>{const o=this.splitToleranceTokens(s,"%%v").slice(0,Ho);for(;o.length<Ho;)o.push("");return o}),r=[0,1];n.some(s=>{var a;return(a=s[2])==null?void 0:a.trim()})&&r.push(2);for(let s=3;s<Ho;s++)n.some(a=>{var o;return(o=a[s])==null?void 0:o.trim()})&&r.push(s);return n.map(s=>({cells:r.map(a=>s[a]??"")}))}splitToleranceRows(t){return t.replace(/\^J/g,`
12
+ `)}),d+=`- total: ${this.data.total} ms`,d}};el.getInstance().collect(c),this.progress=s;const l={value:0},h=new Pd;h.setCompleteCallback(()=>this.onFinished()),h.setErrorCallback(d=>this.onError(d)),h.addTask(new Wt({stage:"START",step:1,progress:l,task:async d=>d},s)),h.addTask(new Wt({stage:"PARSE",step:5,progress:l,task:async d=>await this.parse(d,a)},s)),h.addTask(new Wt({stage:"LTYPE",step:1,progress:l,task:async d=>(this.processLineTypes(d.model,e),d)},s)),h.addTask(new Wt({stage:"STYLE",step:1,progress:l,task:async d=>(this.processTextStyles(d.model,e),d)},s)),h.addTask(new Wt({stage:"DIMSTYLE",step:1,progress:l,task:async d=>(this.processDimStyles(d.model,e),d)},s)),h.addTask(new Wt({stage:"LAYER",step:1,progress:l,task:async d=>(this.processLayers(d.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),d)},s)),h.addTask(new Wt({stage:"VPORT",step:1,progress:l,task:async d=>(this.processViewports(d.model,e),d)},s)),h.addTask(new Wt({stage:"HEADER",step:1,progress:l,task:async d=>{if(this.processClasses(d.model,e),this.processHeader(d.model,e),o){const g=xt.instance();for(const[f,p]of Object.entries(o))g.setVar(f,p,e)}return d}},s)),h.addTask(new Wt({stage:"BLOCK_RECORD",step:5,progress:l,task:async d=>(this.processBlockTables(d.model,e),d)},s)),h.addTask(new Wt({stage:"OBJECT",step:5,progress:l,task:async d=>(this.processObjects(d.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),d)},s)),h.addTask(new Wt({stage:"BLOCK",step:5,progress:l,task:async d=>(await this.processBlocks(d.model,e),d)},s)),h.addTask(new Wt({stage:"ENTITY",step:100,progress:l,task:async d=>(await this.processEntities(d.model,e,r,l,s),d)},s)),h.addTask(new Wt({stage:"END",step:0,progress:l,task:async d=>d},s));const u=Date.now();await h.run(t),c.data.total=Date.now()-u}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&this.progress(100,"END","END")}getParserWorkerTimeout(t,e){const n=e??this.config.timeout;if(n!=null)return n;const r=Math.ceil(t.byteLength/Nx),s=Cu+r*1e3;return Math.min(Ox,Math.max(Cu,s))}async parse(t,e){throw new Error("Not impelemented yet!")}processLineTypes(t,e){throw new Error("Not impelemented yet!")}processTextStyles(t,e){throw new Error("Not impelemented yet!")}processDimStyles(t,e){throw new Error("Not impelemented yet!")}processLayers(t,e){throw new Error("Not impelemented yet!")}processViewports(t,e){throw new Error("Not impelemented yet!")}processHeader(t,e){throw new Error("Not impelemented yet!")}processClasses(t,e){}processBlockTables(t,e){throw new Error("Not impelemented yet!")}processObjects(t,e){throw new Error("Not impelemented yet!")}processBlocks(t,e){throw new Error("Not impelemented yet!")}processEntities(t,e,n,r,s){throw new Error("Not impelemented yet!")}}class $f{constructor(t,e,n){this._chunkSize=-1,this._minimumChunkSize=50,this._count=t,this._numerOfChunk=e<1?1:e,this._minimumChunkSize=n,this.calculateChunkSize()}get count(){return this._count}get numerOfChunk(){return this._numerOfChunk}get minimumChunkSize(){return this._minimumChunkSize}set minimumChunkSize(t){this._minimumChunkSize=t,this.calculateChunkSize()}get chunkSize(){return this._chunkSize}calculateChunkSize(){let t=this._count/this._numerOfChunk;t<this._minimumChunkSize&&(t=Math.min(this._minimumChunkSize,this._count)),this._chunkSize=t<1?this._count:Math.floor(t)}async scheduleTask(t){await ji(),await t()}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let n=0;const r=async()=>{const s=n,a=Math.min(n+this._chunkSize,this._count);await t(s,a),n=a,n<this._count&&await this.scheduleTask(r)};await r(),await(e==null?void 0:e())}}class qf extends Dl{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}async processEntities(t,e,n,r,s){let a=t.tables.blockTable.modelSpace.newIterator().toArray();const o=a.length,c=new $f(o,100-r.value,n);this.config.convertByEntityType&&(a=this.groupAndFlattenByType(a));const l=e.tables.blockTable.modelSpace;await c.processChunk(async(h,u)=>{let d=[],g=h<u?a[h].type:"";for(let f=h;f<u;f++){const p=a[f];this.config.convertByEntityType&&p.type!==g&&(this.triggerEvents(l,d),d=[],g=p.type),d.push(p)}if(this.triggerEvents(l,d),s){let f=r.value+u/o*(100-r.value);f>100&&(f=100),await s(f,"ENTITY","IN-PROGRESS")}})}processBlocks(){const t=this._database.tables.blockTable.newIterator();for(const e of t){const n=e.newIterator().toArray();this.triggerEvents(e,n)}}processHeader(){}processClasses(){}processBlockTables(){}processObjects(){const t=this._database.objects.layout.newIterator();for(const a of t)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.layoutName});const e=this._database.objects.imageDefinition.newIterator();for(const a of e)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const n=this._database.objects.mleaderStyle.newIterator();for(const a of n)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const r=this._database.objects.layerFilter.newIterator();for(const a of r)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId});const s=this._database.objects.layerIndex.newIterator();for(const a of s)this._database.events.dictObjetSet.dispatch({database:this._database,object:a,key:a.objectId})}processViewports(){}processLayers(){this._database.tables.layerTable.newIterator().toArray().forEach(e=>{this._database.events.layerAppended.dispatch({database:this._database,layer:e})})}processLineTypes(){}processTextStyles(){}processDimStyles(){}groupAndFlattenByType(t){const e={},n=[];for(const r of t)e[r.type]||(e[r.type]=[],n.push(r.type)),e[r.type].push(r);return n.flatMap(r=>e[r])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}var Kf=(i=>(i[i.Center=0]="Center",i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.OverFirst=3]="OverFirst",i[i.OverSecond=4]="OverSecond",i))(Kf||{}),vn=(i=>(i[i.Center=0]="Center",i[i.Above=1]="Above",i[i.Outside=2]="Outside",i[i.JIS=3]="JIS",i[i.Below=4]="Below",i))(vn||{}),na=(i=>(i[i.Feet=0]="Feet",i[i.None=1]="None",i[i.Inch=2]="Inch",i[i.FeetAndInch=3]="FeetAndInch",i[i.Leading=4]="Leading",i[i.Trailing=8]="Trailing",i[i.LeadingAndTrailing=12]="LeadingAndTrailing",i))(na||{}),ci=(i=>(i[i.None=0]="None",i[i.Leading=1]="Leading",i[i.Trailing=2]="Trailing",i[i.LeadingAndTrailing=3]="LeadingAndTrailing",i))(ci||{}),Zf=(i=>(i[i.Bottom=0]="Bottom",i[i.Middle=1]="Middle",i[i.Top=2]="Top",i))(Zf||{});const Ua=class Ua extends cn{constructor(t,e){t=t||{},ge(t,Ua.DEFAULT_DIM_VALUES),super(t,e)}get dimpost(){return this.getAttr("dimpost")}set dimpost(t){this.setAttr("dimpost",t)}get dimapost(){return this.getAttr("dimapost")}set dimapost(t){this.setAttr("dimapost",t)}get dimscale(){return this.getAttr("dimscale")}set dimscale(t){this.setAttr("dimscale",t)}get annotative(){return ve(this)}set annotative(t){pe(this,t)}get dimasz(){return this.getAttr("dimasz")}set dimasz(t){this.setAttr("dimasz",t)}get dimexo(){return this.getAttr("dimexo")}set dimexo(t){this.setAttr("dimexo",t)}get dimdli(){return this.getAttr("dimdli")}set dimdli(t){this.setAttr("dimdli",t)}get dimexe(){return this.getAttr("dimexe")}set dimexe(t){this.setAttr("dimexe",t)}get dimrnd(){return this.getAttr("dimrnd")}set dimrnd(t){this.setAttr("dimrnd",t)}get dimdle(){return this.getAttr("dimdle")}set dimdle(t){this.setAttr("dimdle",t)}get dimtp(){return this.getAttr("dimtp")}set dimtp(t){this.setAttr("dimtp",t)}get dimtm(){return this.getAttr("dimtm")}set dimtm(t){this.setAttr("dimtm",t)}get dimtxt(){return this.getAttr("dimtxt")}set dimtxt(t){this.setAttr("dimtxt",t)}get dimcen(){return this.getAttr("dimcen")}set dimcen(t){this.setAttr("dimcen",t)}get dimtsz(){return this.getAttr("dimtsz")}set dimtsz(t){this.setAttr("dimtsz",t)}get dimaltf(){return this.getAttr("dimaltf")}set dimaltf(t){this.setAttr("dimaltf",t)}get dimlfac(){return this.getAttr("dimlfac")}set dimlfac(t){this.setAttr("dimlfac",t)}get dimtvp(){return this.getAttr("dimtvp")}set dimtvp(t){this.setAttr("dimtvp",t)}get dimtfac(){return this.getAttr("dimtfac")}set dimtfac(t){this.setAttr("dimtfac",t)}get dimgap(){return this.getAttr("dimgap")}set dimgap(t){this.setAttr("dimgap",t)}get dimtfill(){return this.getAttr("dimtfill")}set dimtfill(t){this.setAttr("dimtfill",t)}get dimtfillclr(){return this.getAttr("dimtfillclr")}set dimtfillclr(t){this.setAttr("dimtfillclr",t)}get dimaltrnd(){return this.getAttr("dimaltrnd")}set dimaltrnd(t){this.setAttr("dimaltrnd",t)}get dimtol(){return this.getAttr("dimtol")}set dimtol(t){this.setAttr("dimtol",t)}get dimlim(){return this.getAttr("dimlim")}set dimlim(t){this.setAttr("dimlim",t)}get dimtih(){return this.getAttr("dimtih")}set dimtih(t){this.setAttr("dimtih",t)}get dimtoh(){return this.getAttr("dimtoh")}set dimtoh(t){this.setAttr("dimtoh",t)}get dimtxtdirection(){return this.getAttr("dimtxtdirection")}set dimtxtdirection(t){this.setAttr("dimtxtdirection",t)}get dimse1(){return this.getAttr("dimse1")}set dimse1(t){this.setAttr("dimse1",t)}get dimse2(){return this.getAttr("dimse2")}set dimse2(t){this.setAttr("dimse2",t)}get dimtad(){return this.getAttr("dimtad")}set dimtad(t){this.setAttr("dimtad",t)}get dimzin(){return this.getAttr("dimzin")}set dimzin(t){this.setAttr("dimzin",t)}get dimazin(){return this.getAttr("dimazin")}set dimazin(t){this.setAttr("dimazin",t)}get dimalt(){return this.getAttr("dimalt")}set dimalt(t){this.setAttr("dimalt",t)}get dimaltd(){return this.getAttr("dimaltd")}set dimaltd(t){this.setAttr("dimaltd",t)}get dimtofl(){return this.getAttr("dimtofl")}set dimtofl(t){this.setAttr("dimtofl",t)}get dimsah(){return this.getAttr("dimsah")}set dimsah(t){this.setAttr("dimsah",t)}get dimtix(){return this.getAttr("dimtix")}set dimtix(t){this.setAttr("dimtix",t)}get dimsoxd(){return this.getAttr("dimsoxd")}set dimsoxd(t){this.setAttr("dimsoxd",t)}get dimclrd(){return this.getAttr("dimclrd")}set dimclrd(t){this.setAttr("dimclrd",t)}get dimclre(){return this.getAttr("dimclre")}set dimclre(t){this.setAttr("dimclre",t)}get dimclrt(){return this.getAttr("dimclrt")}set dimclrt(t){this.setAttr("dimclrt",t)}get dimadec(){return this.getAttr("dimadec")}set dimadec(t){this.setAttr("dimadec",t)}get dimunit(){return this.getAttr("dimunit")}set dimunit(t){this.setAttr("dimunit",t)}get dimdec(){return this.getAttr("dimdec")}set dimdec(t){this.setAttr("dimdec",t)}get dimtdec(){return this.getAttr("dimtdec")}set dimtdec(t){this.setAttr("dimtdec",t)}get dimaltu(){return this.getAttr("dimaltu")}set dimaltu(t){this.setAttr("dimaltu",t)}get dimalttd(){return this.getAttr("dimalttd")}set dimalttd(t){this.setAttr("dimalttd",t)}get dimaunit(){return this.getAttr("dimaunit")}set dimaunit(t){this.setAttr("dimaunit",t)}get dimfrac(){return this.getAttr("dimfrac")}set dimfrac(t){this.setAttr("dimfrac",t)}get dimlunit(){return this.getAttr("dimlunit")}set dimlunit(t){this.setAttr("dimlunit",t)}get dimdsep(){return this.getAttr("dimdsep")}set dimdsep(t){this.setAttr("dimdsep",t)}get dimtmove(){return this.getAttr("dimtmove")}set dimtmove(t){this.setAttr("dimtmove",t)}get dimjust(){return this.getAttr("dimjust")}set dimjust(t){this.setAttr("dimjust",t)}get dimsd1(){return this.getAttr("dimsd1")}set dimsd1(t){this.setAttr("dimsd1",t)}get dimsd2(){return this.getAttr("dimsd2")}set dimsd2(t){this.setAttr("dimsd2",t)}get dimtolj(){return this.getAttr("dimtolj")}set dimtolj(t){this.setAttr("dimtolj",t)}get dimtzin(){return this.getAttr("dimtzin")}set dimtzin(t){this.setAttr("dimtzin",t)}get dimaltz(){return this.getAttr("dimaltz")}set dimaltz(t){this.setAttr("dimaltz",t)}get dimalttz(){return this.getAttr("dimalttz")}set dimalttz(t){this.setAttr("dimalttz",t)}get dimfit(){return this.getAttr("dimfit")}set dimfit(t){this.setAttr("dimfit",t)}get dimupt(){return this.getAttr("dimupt")}set dimupt(t){this.setAttr("dimupt",t)}get dimatfit(){return this.getAttr("dimatfit")}set dimatfit(t){this.setAttr("dimatfit",t)}get dimtxsty(){return this.getAttr("dimtxsty")}set dimtxsty(t){this.setAttr("dimtxsty",t)}get dimldrblk(){return this.getAttr("dimldrblk")}set dimldrblk(t){this.setAttr("dimldrblk",t)}get dimblk(){return this.getAttr("dimblk")}set dimblk(t){this.setAttr("dimblk",t)}get dimblk1(){return this.getAttr("dimblk1")}set dimblk1(t){this.setAttr("dimblk1",t)}get dimblk2(){return this.getAttr("dimblk2")}set dimblk2(t){this.setAttr("dimblk2",t)}get dimlwd(){return this.getAttr("dimlwd")}set dimlwd(t){this.setAttr("dimlwd",t)}get dimlwe(){return this.getAttr("dimlwe")}set dimlwe(t){this.setAttr("dimlwe",t)}dxfOut(...t){const[e,n=!1]=t;return e.writeHandle(105,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),n&&this.dxfOutXData(e),this}dxfOutFields(t){super.dxfOutFields(t);const e=this.database.tables.textStyleTable.getAt(this.dimtxsty),n=this.database.tables.blockTable.getAt(this.dimldrblk),r=this.database.tables.blockTable.getAt(this.dimblk),s=this.database.tables.blockTable.getAt(this.dimblk1),a=this.database.tables.blockTable.getAt(this.dimblk2);return t.writeSubclassMarker("AcDbDimStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),t.writeString(3,this.dimpost),t.writeString(4,this.dimapost),t.writeDouble(40,this.dimscale),t.writeDouble(41,this.dimasz),t.writeDouble(42,this.dimexo),t.writeDouble(43,this.dimdli),t.writeDouble(44,this.dimexe),t.writeDouble(140,this.dimtxt),t.writeDouble(147,this.dimgap),t.writeInt16(69,this.dimtfill),t.writeInt16(70,this.dimtfillclr),t.writeInt16(170,this.dimalt),t.writeInt16(171,this.dimtol),t.writeInt16(172,this.dimlim),t.writeInt16(173,this.dimtih),t.writeInt16(174,this.dimtoh),t.writeInt16(295,this.dimtxtdirection),t.writeObjectId(340,e==null?void 0:e.objectId),t.writeObjectId(341,n==null?void 0:n.objectId),t.writeObjectId(342,r==null?void 0:r.objectId),t.writeObjectId(343,s==null?void 0:s.objectId),t.writeObjectId(344,a==null?void 0:a.objectId),t.writeInt16(371,this.dimlwd),t.writeInt16(372,this.dimlwe),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbDimStyleTableRecord");const e=s=>s===0?0:1;let n=-1,r=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code);if(a===100){t.pushBackItem(s);break}const o=Number(s.value);switch(a){case 2:this.name=String(s.value);break;case 70:r||n===69?this.dimtfillclr=o:r=!0;break;case 69:this.dimtfill=o===1||o===2?o:0;break;case 3:this.dimpost=String(s.value);break;case 4:this.dimapost=String(s.value);break;case 5:this.dimblk=String(s.value);break;case 6:this.dimblk1=String(s.value);break;case 7:this.dimblk2=String(s.value);break;case 40:this.dimscale=o;break;case 41:this.dimasz=o;break;case 42:this.dimexo=o;break;case 43:this.dimdli=o;break;case 44:this.dimexe=o;break;case 45:this.dimrnd=o;break;case 46:this.dimdle=o;break;case 47:this.dimtp=o;break;case 48:this.dimtm=o;break;case 140:this.dimtxt=o;break;case 141:this.dimcen=o;break;case 142:this.dimtsz=o;break;case 143:this.dimaltf=o;break;case 144:this.dimlfac=o;break;case 145:this.dimtvp=o;break;case 146:this.dimtfac=o;break;case 147:this.dimgap=o;break;case 148:this.dimaltrnd=o;break;case 71:this.dimtol=e(o);break;case 72:this.dimlim=e(o);break;case 73:this.dimtih=e(o);break;case 74:this.dimtoh=e(o);break;case 75:this.dimse1=e(o);break;case 76:this.dimse2=e(o);break;case 77:this.dimtad=o;break;case 78:this.dimzin=o;break;case 79:this.dimazin=o;break;case 170:this.dimalt=e(o);break;case 171:this.dimaltd=o;break;case 172:this.dimtofl=e(o);break;case 173:this.dimsah=e(o);break;case 174:this.dimtix=e(o);break;case 175:this.dimsoxd=e(o);break;case 176:this.dimclrd=o;break;case 177:this.dimclre=o;break;case 178:this.dimclrt=o;break;case 179:this.dimadec=o;break;case 270:this.dimunit=o;break;case 271:this.dimdec=o;break;case 272:this.dimtdec=o;break;case 273:this.dimaltu=o;break;case 274:this.dimalttd=o;break;case 275:this.dimaunit=o;break;case 276:this.dimfrac=o;break;case 277:this.dimlunit=o;break;case 278:this.dimdsep=typeof s.value=="string"?s.value:String.fromCharCode(o||46);break;case 279:this.dimtmove=o;break;case 280:this.dimjust=o;break;case 281:this.dimsd1=e(o);break;case 282:this.dimsd2=e(o);break;case 283:this.dimtolj=o;break;case 284:this.dimtzin=o;break;case 285:this.dimaltz=o;break;case 286:this.dimalttz=o;break;case 287:this.dimfit=o;break;case 288:this.dimupt=e(o);break;case 289:this.dimatfit=o;break;case 294:case 295:this.dimtxtdirection=e(o);break;case 340:this.dimtxsty=String(s.value);break;case 341:this.dimldrblk=String(s.value);break;case 342:this.dimblk=String(s.value);break;case 343:this.dimblk1=String(s.value);break;case 344:this.dimblk2=String(s.value);break;case 371:this.dimlwd=o;break;case 372:this.dimlwe=o;break}n=a}return this}};Ua.DEFAULT_DIM_VALUES={name:"",dimpost:"",dimapost:"",dimscale:1,dimasz:2.5,dimexo:.625,dimdli:.38,dimexe:.18,dimrnd:0,dimdle:0,dimtp:0,dimtm:0,dimtxt:2.5,dimcen:2.5,dimtsz:0,dimaltf:0,dimlfac:1,dimtvp:0,dimtfac:1,dimgap:1,dimtfill:0,dimtfillclr:0,dimaltrnd:0,dimtol:0,dimlim:0,dimtih:0,dimtoh:0,dimtxtdirection:0,dimse1:0,dimse2:0,dimtad:0,dimzin:0,dimazin:0,dimalt:0,dimaltd:2,dimtofl:0,dimsah:0,dimtix:0,dimsoxd:0,dimclrd:0,dimclre:0,dimclrt:0,dimadec:0,dimunit:2,dimdec:4,dimtdec:4,dimaltu:2,dimalttd:2,dimaunit:0,dimfrac:0,dimlunit:2,dimdsep:".",dimtmove:0,dimjust:0,dimsd1:0,dimsd2:0,dimtolj:0,dimtzin:0,dimaltz:0,dimalttz:0,dimfit:0,dimupt:0,dimatfit:3,dimtxsty:gt,dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let Qt=Ua;function Qf(){return{color:new U,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new At,linetype:"Continuous",lineWeight:1,materialId:-1}}const Dx=["name",...Object.keys(Qf())];class Wr extends cn{constructor(t,e){t=t||{},ge(t,Qf()),super(t,e)}get color(){return this.getAttr("color")}set color(t){this.setAttr("color",t.clone())}get description(){return this.getAttr("description")}set description(t){this.setAttr("description",t)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get isFrozen(){return(this.standardFlags&1)==1}set isFrozen(t){const e=t?1:0;this.standardFlags=this.standardFlags|e}get isHidden(){return this.getAttr("isHidden")}set isHidden(t){this.setAttr("isHidden",t)}get isInUse(){return this.getAttr("isInUse")}set isInUse(t){this.setAttr("isInUse",t)}get isLocked(){return(this.standardFlags&4)==4}set isLocked(t){const e=t?4:0;this.standardFlags=this.standardFlags|e}get isOff(){return this.getAttr("isOff")}set isOff(t){this.setAttr("isOff",t)}get isPlottable(){return this.getAttr("isPlottable")}set isPlottable(t){this.setAttr("isPlottable",t)}get transparency(){return this.getAttr("transparency")}set transparency(t){this.setAttr("transparency",t.clone())}get linetype(){return this.getAttr("linetype")}set linetype(t){this.setAttr("linetype",t)}get lineStyle(){var e;const t=(e=this.database)==null?void 0:e.tables.linetypeTable.getAt(this.linetype);if(t)return{type:"UserSpecified",...t.linetype}}get lineWeight(){return this.getAttr("lineWeight")}set lineWeight(t){this.setAttr("lineWeight",t)}get materialId(){return this.getAttr("materialId")}set materialId(t){this.setAttr("materialId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeCmColor(this.color),t.writeString(6,this.linetype||"Continuous"),t.writeInt16(290,this.isPlottable?1:0),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency),this.description&&t.writeString(4,this.description),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLayerTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=Number(e.value);break;case 62:{const r=Number(e.value);this.isOff=r<0,this.color.colorIndex=Math.abs(r);break}case 420:this.color.setRGBValue(Number(e.value));break;case 6:this.linetype=String(e.value);break;case 290:this.isPlottable=Number(e.value)!==0;break;case 370:this.lineWeight=Number(e.value);break;case 440:this.transparency=At.deserialize(Number(e.value));break;case 4:this.description=String(e.value);break}}return this}}const Rx=1,Bo=2,Bx=4;class An extends cn{constructor(t,e){t=t||{},ge(t,{standardFlag:0,description:"",totalPatternLength:0}),super(t,e)}get numDashes(){const t=this.getAttrWithoutException("pattern");return t?t.length:0}get patternLength(){return this.getAttr("totalPatternLength")}get comments(){return this.getAttr("description")}get linetype(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),description:this.getAttr("description"),totalPatternLength:this.getAttr("totalPatternLength"),pattern:this.getAttrWithoutException("pattern")}}dashLengthAt(t){if(t<0||t>=this.numDashes)throw new Error('Index must be greater than or equal to zero, but less than the value of property "numDashes".');return this.getAttr("pattern")[t].elementLength}toPreviewSvgString(t){const e=Math.max((t==null?void 0:t.width)??220,1),n=Math.max((t==null?void 0:t.height)??36,1),r=Math.min(Math.max((t==null?void 0:t.padding)??8,0),Math.floor(e/2)),s=Math.max((t==null?void 0:t.strokeWidth)??2,.5),a=(t==null?void 0:t.stroke)??"currentColor",o=this.escapeSvgAttribute(a),c=this.escapeSvgAttribute((t==null?void 0:t.textFill)??a),l=this.escapeSvgAttribute((t==null?void 0:t.fontFamily)??"sans-serif"),h=n/2,u=r,d=Math.max(e-r,u+1),g=d-u,f=this.getAttrWithoutException("pattern")??[];if(f.length===0||this.patternLength<=0||!f.some(F=>F.elementLength!==0))return this.buildSvgString({width:e,height:n,stroke:o,strokeWidth:s,textFill:c,fontFamily:l,lineSegments:[[u,d]],dots:[],texts:[],y:h});const p=f.some(F=>this.isComplexPatternElement(F)&&(F.elementTypeFlag&Bo)!==0),m=Math.max((t==null?void 0:t.repeats)??(p?2:4),1),y=p?Math.min(Math.max(n*.55,Math.min(8,n*.85)),n*.8):0,b=Math.max(s*2,4),_=this.buildPreviewSegments(f,y,b),w=g/(this.patternLength*m),P=.5,S=Math.max(s*2,2),v=_.map(F=>F.kind==="dot"?S:F.kind==="text"?Math.max(F.units*w,F.minPx):Math.max(F.units*w,F.kind==="dash"?P:0)),k=v.reduce((F,$)=>F+$,0),L=k>0?g/(k*m):1,C=v.map(F=>F*L),N=[],D=[],tt=[];let G=u;for(;G<d-1e-6;){for(let F=0;F<_.length&&!(G>=d);F++){const $=_[F],T=C[F],W=Math.min(G+T,d);if($.kind==="dash"&&W>G)N.push([G,W]);else if($.kind==="dot")D.push(G);else if($.kind==="text"&&$.label.trim().length>0){const st=(G+W)*.5;tt.push({x:st,y:h,text:$.label,fontSize:Math.min($.fontSize*L,n*.8),rotationDeg:$.rotationDeg})}G=W}if(k<=0)break}return this.buildSvgString({width:e,height:n,stroke:o,strokeWidth:s,textFill:c,fontFamily:l,lineSegments:N,dots:D,texts:tt,y:h})}buildPreviewSegments(t,e,n){const r=[],s=new Set;for(let a=0;a<t.length;a++){if(s.has(a))continue;const o=t[a];if(this.isComplexPatternElement(o)){let c=0;for(;r.length>0&&r[r.length-1].kind==="gap";){const d=r.pop();c+=d.units}let l=c+Math.abs(o.elementLength);for(let d=a+1;d<t.length;d++){const g=t[d];if(this.isComplexPatternElement(g)||g.elementLength>=0)break;l+=Math.abs(g.elementLength),s.add(d)}const h=(o.elementTypeFlag&Bo)!==0,u=h?this.resolveEmbeddedText(o.text):"";if(h&&u.trim().length>0){const d=this.estimateTextWidthPx(u,e)+n;r.push({kind:"text",units:Math.max(l,1e-6),minPx:d,label:u,fontSize:e,rotationDeg:this.previewTextRotationDeg(o)})}else l>0&&r.push({kind:"gap",units:l});continue}o.elementLength===0?r.push({kind:"dot"}):o.elementLength>0?r.push({kind:"dash",units:o.elementLength}):r.push({kind:"gap",units:Math.abs(o.elementLength)})}return r}estimateTextWidthPx(t,e){let n=0;for(const r of t)r===" "?n+=.33:/[iIlj1.'|]/.test(r)?n+=.35:/[mwMW@%]/.test(r)?n+=.85:n+=.62;return Math.max(n*e,e*.5)}isComplexPatternElement(t){const e=t.elementTypeFlag??0;return(e&Bo)!==0?(t.text??"").length>0:(e&Bx)!==0?t.shapeNumber!=null&&t.shapeNumber!==0:!1}resolveEmbeddedText(t){var o,c;const e=t??"";if(e.trim().length>0)return this.decodeAutoCadTextEscapes(e);const n=(this.comments??"").trim();if(!n)return this.decodeAutoCadTextEscapes(e);const r=(o=n.split(/\s+-\s+/)[0])==null?void 0:o.trim();if(r&&r!==n)return this.decodeAutoCadTextEscapes(r);const s=n.match(/-{2,}\s*([^-]+?)\s*-{2,}/);if((c=s==null?void 0:s[1])!=null&&c.trim())return this.decodeAutoCadTextEscapes(s[1].trim());const a=(this.name??"").trim();return a&&n.length>a.length+2?this.decodeAutoCadTextEscapes(a):this.decodeAutoCadTextEscapes(r||e)}decodeAutoCadTextEscapes(t){return t.replace(/%%(\d{1,3}|[cCdDpP%])/g,(e,n)=>{if(n==="%")return"%";if(n==="c"||n==="C")return"Ø";if(n==="d"||n==="D")return"°";if(n==="p"||n==="P")return"±";const r=Number.parseInt(n,10);return Number.isFinite(r)&&r>=0&&r<=255?String.fromCharCode(r):`%%${n}`})}previewTextRotationDeg(t){const e=t.rotation??0;return(((t.elementTypeFlag??0)&Rx)!==0?e:this.uprightLinetypeAngle(e))*180/Math.PI}uprightLinetypeAngle(t){const e=Math.PI*2;let n=((t+Math.PI)%e+e)%e-Math.PI;return(n>Math.PI/2||n<-Math.PI/2)&&(n+=Math.PI,n>Math.PI&&(n-=e)),n}buildSvgString(t){const{width:e,height:n,stroke:r,strokeWidth:s,textFill:a,fontFamily:o,lineSegments:c,dots:l,texts:h,y:u}=t,d=c.map(([p,m])=>`<line x1="${p.toFixed(2)}" y1="${u.toFixed(2)}" x2="${m.toFixed(2)}" y2="${u.toFixed(2)}" stroke="${r}" stroke-width="${s.toFixed(2)}" stroke-linecap="round" />`).join(""),g=l.map(p=>`<circle cx="${p.toFixed(2)}" cy="${u.toFixed(2)}" r="${(s/2).toFixed(2)}" fill="${r}" />`).join(""),f=h.map(p=>{const m=Math.abs(p.rotationDeg)>1e-6?` transform="rotate(${p.rotationDeg.toFixed(2)} ${p.x.toFixed(2)} ${p.y.toFixed(2)})"`:"";return`<text x="${p.x.toFixed(2)}" y="${p.y.toFixed(2)}" fill="${a}" font-family="${o}" font-size="${p.fontSize.toFixed(2)}" text-anchor="middle" dominant-baseline="middle"${m}>${this.escapeSvgText(p.text)}</text>`}).join("");return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${n}" viewBox="0 0 ${e} ${n}" role="img" aria-label="${this.escapeSvgAttribute(this.name)} linetype preview">${d}${g}${f}</svg>`}escapeSvgAttribute(t){return t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;")}escapeSvgText(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLinetypeTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeString(3,this.comments),t.writeInt16(72,65),t.writeInt16(73,this.numDashes),t.writeDouble(40,this.patternLength);for(const e of this.getAttrWithoutException("pattern")??[])t.writeDouble(49,e.elementLength),t.writeInt16(74,e.elementTypeFlag),e.elementTypeFlag!==0&&(e.shapeNumber!=null&&t.writeInt16(75,e.shapeNumber),e.styleObjectId&&t.writeObjectId(340,e.styleObjectId),e.scale!=null&&t.writeDouble(46,e.scale),e.rotation!=null&&t.writeDouble(50,e.rotation),e.offsetX!=null&&t.writeDouble(44,e.offsetX),e.offsetY!=null&&t.writeDouble(45,e.offsetY),e.text&&t.writeString(9,e.text));return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbLinetypeTableRecord");const e=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}switch(r){case 2:this.name=String(n.value);break;case 70:this.setAttr("standardFlag",Number(n.value));break;case 3:this.setAttr("description",String(n.value));break;case 72:break;case 73:break;case 40:this.setAttr("totalPatternLength",Number(n.value));break;case 49:e.push({elementLength:Number(n.value),elementTypeFlag:0});break;case 74:e.length>0&&(e[e.length-1].elementTypeFlag=Number(n.value));break;case 75:e.length>0&&(e[e.length-1].shapeNumber=Number(n.value));break;case 340:e.length>0&&(e[e.length-1].styleObjectId=String(n.value));break;case 46:e.length>0&&(e[e.length-1].scale=Number(n.value));break;case 50:e.length>0&&(e[e.length-1].rotation=Number(n.value));break;case 44:e.length>0&&(e[e.length-1].offsetX=Number(n.value));break;case 45:e.length>0&&(e[e.length-1].offsetY=Number(n.value));break;case 9:e.length>0&&(e[e.length-1].text=String(n.value));break}}return this.setAttr("pattern",e),this}}class ia extends cn{constructor(t){typeof t=="string"&&(t={name:t}),super(t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRegAppTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbRegAppTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break}}return this}}class uo extends cn{constructor(t,e){t=t||{},ge(t,{standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:0,font:"",bigFont:""}),super(t,e),this.setAttr("font",this.getFileNameWithoutExtension(this.getAttr("font")||this.getAttrWithoutException("extendedFont")||this.name))}get obliquingAngle(){return this.getAttr("obliqueAngle")}set obliquingAngle(t){this.setAttr("obliqueAngle",t)}get annotative(){return ve(this)}set annotative(t){pe(this,t)}get priorSize(){return this.getAttr("lastHeight")}set priorSize(t){this.setAttr("lastHeight",t)}get textSize(){return this.getAttr("fixedTextHeight")}set textSize(t){this.setAttr("fixedTextHeight",t)}get xScale(){return this.getAttr("widthFactor")}set xScale(t){this.setAttr("widthFactor",t)}get isVertical(){return(this.getAttr("standardFlag")&4)===4}set isVertical(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|4:e&-5)}get isShapeFile(){return(this.getAttr("standardFlag")&1)===1}set isShapeFile(t){const e=this.getAttr("standardFlag");this.setAttr("standardFlag",t?e|1:e&-2)}get fileName(){return this.getAttr("font")}set fileName(t){this.setAttr("font",t)}get bigFontFileName(){return this.getAttr("bigFont")}set bigFontFileName(t){this.setAttr("bigFont",t)}get textStyle(){return{name:this.name,standardFlag:this.getAttr("standardFlag"),fixedTextHeight:this.getAttr("fixedTextHeight"),widthFactor:this.getAttr("widthFactor"),obliqueAngle:this.getAttr("obliqueAngle"),textGenerationFlag:this.getAttr("textGenerationFlag"),lastHeight:this.getAttr("lastHeight"),font:this.getAttr("font"),bigFont:this.getAttr("bigFont"),extendedFont:this.getAttrWithoutException("extendedFont")}}getFileNameWithoutExtension(t){const e=t.split("/").pop();if(e){const n=e.lastIndexOf(".");return n===-1?e:e.substring(0,n)}return t}get dxfFontFileName(){var e;const t=((e=this.fileName)==null?void 0:e.trim())??"";return!t||!this.isShapeFile||/\.[^./\\]+$/i.test(t)?t:`${t}.shx`}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTextStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.getAttr("standardFlag")),t.writeDouble(40,this.textSize),t.writeDouble(41,this.xScale),t.writeAngle(50,this.obliquingAngle),t.writeInt16(71,this.getAttr("textGenerationFlag")),t.writeDouble(42,this.priorSize),t.writeString(3,this.dxfFontFileName),t.writeString(4,this.bigFontFileName),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbTextStyleTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 2:this.name=String(e.value);break;case 70:this.setAttr("standardFlag",Number(e.value));break;case 40:this.textSize=Number(e.value);break;case 41:this.xScale=Number(e.value);break;case 50:this.obliquingAngle=Number(e.value);break;case 71:this.setAttr("textGenerationFlag",Number(e.value));break;case 42:this.priorSize=Number(e.value);break;case 3:this.fileName=this.getFileNameWithoutExtension(String(e.value));break;case 4:this.bigFontFileName=String(e.value);break}}return this}dxfInXData(t){super.dxfInXData(t),this.applyExtendedFontFromXData()}applyExtendedFontFromXData(){const t=this.getXData("ACAD");if(t){for(const n of t)if(Number(n.code)===1e3&&n.value!=null){const r=String(n.value).trim();if(r){this.setAttr("extendedFont",r);break}}}if(!(this.getAttr("font")??"").trim()){const n=this.getAttrWithoutException("extendedFont")||this.name||"";n&&(this.fileName=this.getFileNameWithoutExtension(n))}}}class Jf extends cn{constructor(t,e){t=t||{},ge(t,{standardFlags:0,origin:new x(0,0,0),xAxis:new x(1,0,0),yAxis:new x(0,1,0),isOrthographic:!1,elevation:0}),super(t,e)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get origin(){return this.getAttr("origin")}set origin(t){this.setAttr("origin",t.clone())}get xAxis(){return this.getAttr("xAxis")}set xAxis(t){this.setAttr("xAxis",t.clone())}get yAxis(){return this.getAttr("yAxis")}set yAxis(t){this.setAttr("yAxis",t.clone())}get isOrthographic(){return this.getAttr("isOrthographic")}set isOrthographic(t){this.setAttr("isOrthographic",t)}get elevation(){return this.getAttr("elevation")}set elevation(t){this.setAttr("elevation",t)}get baseUcsId(){return this.getAttrWithoutException("baseUcsId")}set baseUcsId(t){this.setAttr("baseUcsId",t)}get orthographicType(){return this.getAttrWithoutException("orthographicType")}set orthographicType(t){this.setAttr("orthographicType",t)}get orthographicOrigin(){return this.getAttrWithoutException("orthographicOrigin")}set orthographicOrigin(t){this.setAttr("orthographicOrigin",t==null?void 0:t.clone())}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbUCSTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writePoint3d(10,this.origin),t.writePoint3d(11,this.xAxis),t.writePoint3d(12,this.yAxis),t.writeDouble(146,this.elevation),t.writeInt16(79,this.isOrthographic?1:0),this.isOrthographic&&t.writeObjectId(346,this.baseUcsId),this.orthographicType!=null&&this.orthographicOrigin&&(t.writeInt16(71,this.orthographicType),t.writePoint3d(13,this.orthographicOrigin)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbUCSTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}const r=Number(e.value);switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 10:this.origin.x=r;break;case 20:this.origin.y=r;break;case 30:this.origin.z=r;break;case 11:this.xAxis.x=r;break;case 21:this.xAxis.y=r;break;case 31:this.xAxis.z=r;break;case 12:this.yAxis.x=r;break;case 22:this.yAxis.y=r;break;case 32:this.yAxis.z=r;break;case 79:this.isOrthographic=r!==0;break;case 146:this.elevation=r;break;case 346:this.baseUcsId=String(e.value);break;case 71:this.orthographicType=r;break;case 13:this.orthographicOrigin=this.orthographicOrigin??new x,this.orthographicOrigin.x=r;break;case 23:this.orthographicOrigin&&(this.orthographicOrigin.y=r);break;case 33:this.orthographicOrigin&&(this.orthographicOrigin.z=r);break}}return this}}const Fx=()=>({center:new M,viewDirectionFromTarget:new x(0,0,1),viewTarget:new x(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:exports.AcGiRenderMode.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new x(0,0,0),ucsXAxis:new x(1,0,0),ucsYAxis:new x(0,1,0),orthographicType:exports.AcGiOrthographicType.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:exports.AcGiDefaultLightingType.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0,aspectRatio:void 0});class Rl extends cn{constructor(t,e){t=t||{},ge(t,{gsView:Fx()}),super(t,e)}get gsView(){return this.getAttr("gsView")}get centerPoint(){return this.gsView.center}set centerPoint(t){this.gsView.center.copy(t)}get viewDirectionFromTarget(){return this.gsView.viewDirectionFromTarget}set viewDirectionFromTarget(t){this.gsView.viewDirectionFromTarget.copy(t)}get viewTarget(){return this.gsView.viewTarget}set viewTarget(t){this.gsView.viewTarget.copy(t)}get viewHeight(){return this.gsView.viewHeight}set viewHeight(t){this.gsView.viewHeight=t}get viewTwistAngle(){return this.gsView.viewTwistAngle}set viewTwistAngle(t){this.gsView.viewTwistAngle=t}get lensLength(){return this.gsView.lensLength}set lensLength(t){this.gsView.lensLength=t}get frontClippingPlane(){return this.gsView.frontClippingPlane}set frontClippingPlane(t){this.gsView.frontClippingPlane=t}get backClippingPlane(){return this.gsView.backClippingPlane}set backClippingPlane(t){this.gsView.backClippingPlane=t}get renderMode(){return this.gsView.renderMode}set renderMode(t){this.gsView.renderMode=t}get viewMode(){return this.gsView.viewMode}set viewMode(t){this.gsView.viewMode=t}get ucsIconSetting(){return this.gsView.ucsIconSetting}set ucsIconSetting(t){this.gsView.ucsIconSetting=t}get ucsOrigin(){return this.gsView.ucsOrigin}set ucsOrigin(t){this.gsView.ucsOrigin.copy(t)}get ucsXAxis(){return this.gsView.ucsXAxis}set ucsXAxis(t){this.gsView.ucsXAxis.copy(t)}get ucsYAxis(){return this.gsView.ucsYAxis}set ucsYAxis(t){this.gsView.ucsYAxis.copy(t)}get orthographicType(){return this.gsView.orthographicType}set orthographicType(t){this.gsView.orthographicType=t}get shadePlotSetting(){return this.gsView.shadePlotSetting}set shadePlotSetting(t){this.gsView.shadePlotSetting=t}get shadePlotObjectId(){return this.gsView.shadePlotObjectId}set shadePlotObjectId(t){this.gsView.shadePlotObjectId=t}get visualStyleObjectId(){return this.gsView.visualStyleObjectId}set visualStyleObjectId(t){this.gsView.visualStyleObjectId=t}get isDefaultLightingOn(){return this.gsView.isDefaultLightingOn}set isDefaultLightingOn(t){this.gsView.isDefaultLightingOn=t}get defaultLightingType(){return this.gsView.defaultLightingType}set defaultLightingType(t){this.gsView.defaultLightingType=t}get brightness(){return this.gsView.brightness}set brightness(t){this.gsView.brightness=t}get contrast(){return this.gsView.contrast}set contrast(t){this.gsView.contrast=t}get ambientColor(){return this.gsView.ambientColor}set ambientColor(t){this.gsView.ambientColor=t}get aspectRatio(){return this.gsView.aspectRatio}set aspectRatio(t){this.gsView.aspectRatio=t}}const Ou=2,Xx=.45,zx=1e5;function Yx(i){var n;const t=i,e=t.aspectRatio??((n=t.gsView)==null?void 0:n.aspectRatio);return Number.isFinite(e)?e:void 0}function jx(i,t){if(Number.isFinite(t)&&t>0)return t;const e=Yx(i);return e!=null&&e>0?e:1}function Vx(i,t){const e=Math.max(i.min.x,t.min.x),n=Math.max(i.min.y,t.min.y),r=Math.min(i.max.x,t.max.x),s=Math.min(i.max.y,t.max.y);return e>=r||n>=s?0:(r-e)*(s-n)}function Nu(i){return{x:(i.min.x+i.max.x)/2,y:(i.min.y+i.max.y)/2}}function Ux(i){if(!i||i.isEmpty())return!1;const t=i.max.x-i.min.x,e=i.max.y-i.min.y;return t>0&&e>0}class Sn extends Rl{static isActiveVportName(t){return t.toLowerCase()===Ei.toLowerCase()}constructor(t,e){t=t||{},ge(t,{circleSides:100,lowerLeftCorner:new M(0,0),upperRightCorner:new M(1,1),snapBase:new M(0,0),snapAngle:0,snapSpacing:new M(0,0),standardFlag:0,gridSpacing:new M,gridMajor:10,ucsElevation:0}),super(t,e)}get circleSides(){return this.getAttr("circleSides")}set circleSides(t){this.setAttr("circleSides",t)}get center(){return this.centerPoint}set center(t){this.centerPoint=t}get lowerLeftCorner(){return this.getAttr("lowerLeftCorner")}set lowerLeftCorner(t){this.getAttr("lowerLeftCorner").copy(t)}get upperRightCorner(){return this.getAttr("upperRightCorner")}set upperRightCorner(t){this.getAttr("upperRightCorner").copy(t)}get snapBase(){return this.getAttr("snapBase")}set snapBase(t){this.getAttr("snapBase").copy(t)}get snapAngle(){return this.getAttr("snapAngle")}set snapAngle(t){this.setAttr("snapAngle",t)}get snapIncrements(){return this.getAttr("snapSpacing")}set snapIncrements(t){this.getAttr("snapSpacing").copy(t)}get gridMajor(){return this.getAttr("gridMajor")}set gridMajor(t){this.setAttr("gridMajor",t)}get gridIncrements(){return this.getAttr("gridSpacing")}set gridIncrements(t){this.getAttr("gridSpacing").copy(t)}get standardFlag(){return this.getAttr("standardFlag")}set standardFlag(t){this.setAttr("standardFlag",t)}get snapEnabled(){return!!(this.standardFlag&256)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}modelViewBox(t){const e=this.centerPoint,n=this.viewHeight;if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(n)||n<=0)return;const r=this.viewTwistAngle;let s=e.x,a=e.y;if(Number.isFinite(r)&&r!==0){const d=Math.cos(r),g=Math.sin(r);s=e.x*d-e.y*g,a=e.x*g+e.y*d}const o=this.viewTarget;o&&Number.isFinite(o.x)&&Number.isFinite(o.y)&&(s+=o.x,a+=o.y);const c=jx(this,t),l=n*c,h=n/2,u=l/2;return new Lt().expandByPoint({x:s-u,y:a-h}).expandByPoint({x:s+u,y:a+h})}static isModelViewBoxUsable(t,e){if(t.isEmpty()||e.isEmpty())return!1;const n=t.max.x-t.min.x,r=t.max.y-t.min.y,s=e.max.x-e.min.x,a=e.max.y-e.min.y;if(n<=0||r<=0||s<=0||a<=0||n>s*Ou||r>a*Ou)return!1;const o=Math.max(s,a)*Xx,c=Nu(t),l=Nu(e);if(Math.hypot(c.x-l.x,c.y-l.y)>o)return!1;const u=n*r,d=Vx(t,e);return!(d<=0||d/u<.25)}resolveModelViewBox(t,e){const n=this.modelViewBox(t);if(!(!n||!Sn.isModelViewBoxStructurallyValid(n))){if(Ux(e)){if(!Sn.isModelViewBoxUsable(n,e))return}else if(!Sn.isModelViewBoxPlausibleWithoutExtents(n))return;return n}}static isModelViewBoxStructurallyValid(t){if(t.isEmpty())return!1;const e=t.max.x-t.min.x,n=t.max.y-t.min.y;return Number.isFinite(e)&&Number.isFinite(n)&&e>0&&n>0}static isModelViewBoxPlausibleWithoutExtents(t){const e=t.max.x-t.min.x,n=t.max.y-t.min.y;return Math.max(e,n)<=zx}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewportTableRecord"),t.writeString(2,this.name),t.writeDouble(40,this.gsView.viewHeight),this.gsView.aspectRatio!=null&&Number.isFinite(this.gsView.aspectRatio)&&t.writeDouble(41,this.gsView.aspectRatio),t.writeDouble(45,this.gsView.viewHeight),t.writePoint2d(10,this.lowerLeftCorner),t.writePoint2d(11,this.upperRightCorner),t.writePoint2d(12,this.center),t.writePoint2d(13,this.snapBase),t.writePoint2d(14,this.snapIncrements),t.writePoint2d(15,this.gridIncrements),t.writeInt16(70,this.standardFlag),t.writeInt16(71,this.circleSides),t.writeDouble(42,this.gsView.lensLength),t.writePoint3d(16,this.gsView.viewDirectionFromTarget),t.writePoint3d(17,this.gsView.viewTarget),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.gsView.viewTwistAngle),t.writeInt16(61,this.gridMajor),t.writeDouble(146,this.ucsElevation),t.writeInt16(170,this.shadePlotSetting),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLightingOn?1:0),t.writeInt16(281,this.backgroundObjectId?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(333,this.shadePlotObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewportTableRecord");const e=[...this.gsView.frozenLayers??[]];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const n=t.readItem();if(!n)break;const r=Number(n.code);if(r===100){t.pushBackItem(n);break}const s=Number(n.value);switch(r){case 2:this.name=String(n.value);break;case 1:this.gsView.styleSheet=String(n.value);break;case 10:this.lowerLeftCorner.x=s;break;case 20:this.lowerLeftCorner.y=s;break;case 11:this.upperRightCorner.x=s;break;case 21:this.upperRightCorner.y=s;break;case 12:this.center.x=s,this.gsView.center.x=s;break;case 22:this.center.y=s,this.gsView.center.y=s;break;case 13:this.snapBase.x=s;break;case 23:this.snapBase.y=s;break;case 14:this.snapIncrements.x=s;break;case 24:this.snapIncrements.y=s;break;case 15:this.gridIncrements.x=s;break;case 25:this.gridIncrements.y=s;break;case 16:this.gsView.viewDirectionFromTarget.x=s;break;case 26:this.gsView.viewDirectionFromTarget.y=s;break;case 36:this.gsView.viewDirectionFromTarget.z=s;break;case 17:this.gsView.viewTarget.x=s;break;case 27:this.gsView.viewTarget.y=s;break;case 37:this.gsView.viewTarget.z=s;break;case 40:case 45:this.gsView.viewHeight=s;break;case 41:Number.isFinite(s)&&s>0&&(this.gsView.aspectRatio=s);break;case 42:this.gsView.lensLength=s;break;case 43:this.gsView.frontClippingPlane=s;break;case 44:this.gsView.backClippingPlane=s;break;case 50:this.snapAngle=s;break;case 51:this.gsView.viewTwistAngle=s;break;case 61:this.gridMajor=s;break;case 70:this.standardFlag=s;break;case 71:s>=1&&s<=2e4&&(this.circleSides=s),this.gsView.viewMode=s;break;case 72:this.circleSides=s;break;case 74:this.gsView.ucsIconSetting=s;break;case 110:this.gsView.ucsOrigin.x=s;break;case 120:this.gsView.ucsOrigin.y=s;break;case 130:this.gsView.ucsOrigin.z=s;break;case 111:this.gsView.ucsXAxis.x=s;break;case 121:this.gsView.ucsXAxis.y=s;break;case 131:this.gsView.ucsXAxis.z=s;break;case 112:this.gsView.ucsYAxis.x=s;break;case 122:this.gsView.ucsYAxis.y=s;break;case 132:this.gsView.ucsYAxis.z=s;break;case 79:this.gsView.orthographicType=s;break;case 281:this.gsView.renderMode=s;break;case 331:case 441:e.push(String(n.value));break;case 332:this.backgroundObjectId=String(n.value);break;case 146:this.ucsElevation=s;break;case 170:this.shadePlotSetting=s;break;case 282:this.defaultLightingType=s;break;case 292:this.isDefaultLightingOn=s!==0;break;case 333:this.shadePlotObjectId=String(n.value);break;case 348:this.gsView.visualStyleObjectId=String(n.value);break}}return this.gsView.frozenLayers=e,this}}class tp extends Rl{constructor(t,e){t=t||{};const n=t.viewWidth!==void 0;ge(t,{standardFlags:0,ucsAssociated:!1,cameraPlottable:!1,ucsElevation:0}),super(t,e),n||(this.viewWidth=this.viewHeight)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get viewWidth(){return this.getAttr("viewWidth")}set viewWidth(t){this.setAttr("viewWidth",t)}get ucsAssociated(){return this.getAttr("ucsAssociated")}set ucsAssociated(t){this.setAttr("ucsAssociated",t)}get cameraPlottable(){return this.getAttr("cameraPlottable")}set cameraPlottable(t){this.setAttr("cameraPlottable",t)}get ucsElevation(){return this.getAttr("ucsElevation")}set ucsElevation(t){this.setAttr("ucsElevation",t)}get ucsObjectId(){return this.getAttrWithoutException("ucsObjectId")}set ucsObjectId(t){this.setAttr("ucsObjectId",t)}get ucsBaseObjectId(){return this.getAttrWithoutException("ucsBaseObjectId")}set ucsBaseObjectId(t){this.setAttr("ucsBaseObjectId",t)}get backgroundObjectId(){return this.getAttrWithoutException("backgroundObjectId")}set backgroundObjectId(t){this.setAttr("backgroundObjectId",t)}get liveSectionObjectId(){return this.getAttrWithoutException("liveSectionObjectId")}set liveSectionObjectId(t){this.setAttr("liveSectionObjectId",t)}get sunObjectId(){return this.getAttrWithoutException("sunObjectId")}set sunObjectId(t){this.setAttr("sunObjectId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeDouble(40,this.gsView.viewHeight),t.writePoint2d(10,this.centerPoint),t.writeDouble(41,this.viewWidth),t.writePoint3d(11,this.gsView.viewDirectionFromTarget),t.writePoint3d(12,this.gsView.viewTarget),t.writeDouble(42,this.gsView.lensLength),t.writeDouble(43,this.gsView.frontClippingPlane),t.writeDouble(44,this.gsView.backClippingPlane),t.writeAngle(50,this.gsView.viewTwistAngle),t.writeInt16(71,this.gsView.viewMode),t.writeInt16(281,this.gsView.renderMode),t.writeInt16(72,this.ucsAssociated?1:0),t.writeInt16(73,this.cameraPlottable?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(334,this.liveSectionObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),t.writeObjectId(361,this.sunObjectId),this.ucsAssociated&&(t.writePoint3d(110,this.gsView.ucsOrigin),t.writePoint3d(111,this.gsView.ucsXAxis),t.writePoint3d(112,this.gsView.ucsYAxis),t.writeInt16(79,this.gsView.orthographicType),t.writeDouble(146,this.ucsElevation),t.writeObjectId(345,this.ucsObjectId),t.writeObjectId(346,this.ucsBaseObjectId)),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSymbolTableRecord"),t.atSubclassData("AcDbAbstractViewTableRecord"),t.atSubclassData("AcDbViewTableRecord");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}const r=Number(e.value);switch(n){case 2:this.name=String(e.value);break;case 70:this.standardFlags=r;break;case 40:this.gsView.viewHeight=r;break;case 10:this.centerPoint.x=r;break;case 20:this.centerPoint.y=r;break;case 41:this.viewWidth=r;break;case 11:this.gsView.viewDirectionFromTarget.x=r;break;case 21:this.gsView.viewDirectionFromTarget.y=r;break;case 31:this.gsView.viewDirectionFromTarget.z=r;break;case 12:this.gsView.viewTarget.x=r;break;case 22:this.gsView.viewTarget.y=r;break;case 32:this.gsView.viewTarget.z=r;break;case 42:this.gsView.lensLength=r;break;case 43:this.gsView.frontClippingPlane=r;break;case 44:this.gsView.backClippingPlane=r;break;case 50:this.gsView.viewTwistAngle=r*Math.PI/180;break;case 71:this.gsView.viewMode=r;break;case 281:this.gsView.renderMode=r;break;case 72:this.ucsAssociated=r!==0;break;case 73:this.cameraPlottable=r!==0;break;case 332:this.backgroundObjectId=String(e.value);break;case 334:this.liveSectionObjectId=String(e.value);break;case 348:this.gsView.visualStyleObjectId=String(e.value);break;case 361:this.sunObjectId=String(e.value);break;case 110:this.gsView.ucsOrigin.x=r;break;case 120:this.gsView.ucsOrigin.y=r;break;case 130:this.gsView.ucsOrigin.z=r;break;case 111:this.gsView.ucsXAxis.x=r;break;case 121:this.gsView.ucsXAxis.y=r;break;case 131:this.gsView.ucsXAxis.z=r;break;case 112:this.gsView.ucsYAxis.x=r;break;case 122:this.gsView.ucsYAxis.y=r;break;case 132:this.gsView.ucsYAxis.z=r;break;case 79:this.gsView.orthographicType=r;break;case 146:this.ucsElevation=r;break;case 345:this.ucsObjectId=String(e.value);break;case 346:this.ucsBaseObjectId=String(e.value);break}}return this}}const Di=192,Ri=193,$i=194,$r=195,Bl=200;function Fo(i){if(i.isByBlock)return Ri<<24>>0;if(i.isByLayer)return Di<<24>>0;const t=i.colorIndex;if(t!=null&&t>0&&t<256)return($r<<24|t&255)>>0;const e=i.RGB;return e!=null?($i<<24|e&16777215)>>0:Ri<<24>>0}function zt(i){const t=new U(exports.AcCmColorMethod.ByBlock);if(!Number.isFinite(i))return t;switch(i>>>24&255){case Di:t.setByLayer();break;case Ri:case Bl:t.setByBlock();break;case $r:t.colorIndex=i&255;break;case $i:t.setRGBValue(i&16777215);break;default:i===256?t.setByLayer():i===0?t.setByBlock():i>0&&i<256&&(t.colorIndex=i);break}return t}function Fl(i){if(i==null)return new U(exports.AcCmColorMethod.ByBlock);if(typeof i=="number")return zt(i);if(typeof i=="object"){const t=i,e=t.method!=null&&t.method!==0?t.method&255:typeof t.rgb=="number"?t.rgb>>>24&255:0;if(typeof t.rgb=="number"&&Number.isFinite(t.rgb)&&e>=Di&&e<=Bl&&(t.rgb>>>24&255)===e)return zt(t.rgb>>0);if(e===Di||t.index===256){const n=new U;return n.setByLayer(),n}if(e===Ri||t.index===0)return new U(exports.AcCmColorMethod.ByBlock);if(e===$i&&typeof t.rgb=="number"){const n=new U;return n.setRGBValue(t.rgb&16777215),n}if(e===$r){const n=typeof t.rgb=="number"?t.rgb&255:(t.index??0)&255;return zt(n)}if(typeof t.index=="number"&&t.index>=0&&t.index<=256)return zt(t.index);if(typeof t.rgb=="number"&&Number.isFinite(t.rgb))return zt(t.rgb>>0)}return new U(exports.AcCmColorMethod.ByBlock)}function Hx(i){const t=Fl(i);if(t.isByBlock)return 0;if(t.isByLayer)return 256;const e=t.colorIndex;if(e!=null&&e>0&&e<256)return e;const n=t.RGB;return typeof n=="number"?($i<<24|n&16777215)>>0:0}const Gx=127;var ep=(i=>(i[i.Extents=1]="Extents",i[i.Circle=2]="Circle",i[i.Circle3P=3]="Circle3P",i[i.CircularArc=4]="CircularArc",i[i.CircularArc3P=5]="CircularArc3P",i[i.Polyline=6]="Polyline",i[i.Polygon=7]="Polygon",i[i.Mesh=8]="Mesh",i[i.Shell=9]="Shell",i[i.Text=10]="Text",i[i.Text2=11]="Text2",i[i.Xline=12]="Xline",i[i.Ray=13]="Ray",i[i.AttributeColor=14]="AttributeColor",i[i.AttributeLayer=16]="AttributeLayer",i[i.AttributeLinetype=18]="AttributeLinetype",i[i.AttributeMarker=19]="AttributeMarker",i[i.AttributeFill=20]="AttributeFill",i[i.AttributeTrueColor=22]="AttributeTrueColor",i[i.AttributeLineweight=23]="AttributeLineweight",i[i.AttributeLtscale=24]="AttributeLtscale",i[i.AttributeThickness=25]="AttributeThickness",i[i.PushMatrix=29]="PushMatrix",i[i.PopMatrix=31]="PopMatrix",i[i.PolylineWithNormals=32]="PolylineWithNormals",i[i.LwPolyline=33]="LwPolyline",i[i.UnicodeText=36]="UnicodeText",i[i.UnicodeText2=38]="UnicodeText2",i[i.EllipticArc=44]="EllipticArc",i))(ep||{});const En=A.Z_AXIS,Wx=529;function $x(i){const t=i>>24&255;return t===$i?{rgb:i&16777215}:t===Di?{colorIndex:256}:t===Ri?{colorIndex:0}:t===$r?{colorIndex:i&255}:{colorIndex:i&255}}function Xo(i){return new A(i.x,i.y,i.z??0)}function zo(i){return new x(i.x,i.y,i.z??0)}function Du(i){return{x:i[0],y:i[1],z:i[2]}}class Ac{constructor(t,e={}){this._index=8,this._colorIndex=256,this._layer="0",this._linetype=Pt,this._lineweight=exports.AcGiLineWeight.ByLineWeightDefault,this._ltscale=1,this._thickness=0,this._fill=!1,this._layers=[],this._linetypes=[],this._matrices=[],this._buffer=t,this._database=e.database,this._dxfversion=e.dxfversion??"AC1015",this._encoding=e.encoding??(this._dxfversion<"AC1024"?"windows-1252":"utf-8"),this._layer=e.defaultLayer??"0",this._database&&(this._database.tables.layerTable.newIterator().toArray().forEach(n=>this._layers.push(n.name)),this._database.tables.linetypeTable.newIterator().toArray().forEach(n=>this._linetypes.push(n.name)))}get extents(){return this._extents}scanExtents(){var n;const t=this._buffer;let e=this._index;for(;e<t.length;){const r=new DataView(t.buffer,t.byteOffset+e,8),s=r.getUint32(0,!0),a=r.getUint32(4,!0);if(s<8)break;if(a===1){const o=t.subarray(e+8,e+s);return this.readExtents(o),((n=this._extents)==null?void 0:n.length)===2?[this._extents[0],this._extents[1]]:void 0}e+=s}}worldDraw(t){const e=[],n=t.subEntityTraits,r={color:n.color.clone(),lineType:n.lineType,lineTypeScale:n.lineTypeScale,lineWeight:n.lineWeight,layer:n.layer,thickness:n.thickness},s=this._buffer;let a=this._index;for(;a<s.length;){const o=new DataView(s.buffer,s.byteOffset+a,8),c=o.getUint32(0,!0),l=o.getUint32(4,!0);if(c<8)break;const h=s.subarray(a+8,a+c);this.dispatchChunk(t,e,l,h),l!==20&&(this._fill=!1),a+=c}if(n.color=r.color,n.lineType=r.lineType,n.lineTypeScale=r.lineTypeScale,n.lineWeight=r.lineWeight,n.layer=r.layer,n.thickness=r.thickness,e.length!==0)return t.group(e)}dispatchChunk(t,e,n,r){switch(n){case 1:this.readExtents(r);break;case 2:this.drawCircle(t,e,r);break;case 3:this.drawCircle3P(t,e,r);break;case 4:this.drawCircularArc(t,e,r);break;case 5:this.drawCircularArc3P(t,e,r);break;case 44:this.drawEllipticArc(t,e,r);break;case 6:this.drawPolyline(t,e,r,!1);break;case 32:this.drawPolyline(t,e,r,!0);break;case 7:this.drawPolygon(t,e,r);break;case 33:this.drawLwPolyline(t,e,r);break;case 9:this.drawShell(t,e,r);break;case 10:this.drawText(t,e,r,!1);break;case 36:this.drawText(t,e,r,!0);break;case 11:this.drawText2(t,e,r,!1);break;case 38:this.drawText2(t,e,r,!0);break;case 12:this.drawXline(t,e,r,!1);break;case 13:this.drawXline(t,e,r,!0);break;case 14:this.readAttributeColor(r);break;case 16:this.readAttributeLayer(r);break;case 18:this.readAttributeLinetype(r);break;case 20:this.readAttributeFill(r);break;case 22:this.readAttributeTrueColor(r);break;case 23:this.readAttributeLineweight(r);break;case 24:this.readAttributeLtscale(r);break;case 25:this.readAttributeThickness(r);break;case 29:this.pushMatrix(r);break;case 31:this.popMatrix();break}}applyTraits(t){const e=t.subEntityTraits;e.layer=this._layer,e.lineTypeScale=this._ltscale,e.thickness=this._thickness,e.lineWeight=this._lineweight,this._rgbColor!=null?e.color=new U(exports.AcCmColorMethod.ByColor,this._rgbColor):this._colorIndex===256?e.color=new U(exports.AcCmColorMethod.ByLayer):this._colorIndex===0?e.color=new U(exports.AcCmColorMethod.ByBlock):this._colorIndex===7?e.color=new U(exports.AcCmColorMethod.ByACI,7):e.color=new U(exports.AcCmColorMethod.ByACI,this._colorIndex),e.lineType={name:this._linetype,type:this.resolveLineStyleType(),standardFlag:0,description:"",totalPatternLength:0}}resolveLineStyleType(){return this._linetype===Pt?"ByLayer":this._linetype===Oe?"ByBlock":"UserSpecified"}transformPoint(t){const e=Array.isArray(t)?Du(t):t,n=zo(e);return this._matrices.length>0&&n.applyMatrix4(this._matrices[this._matrices.length-1]),n}transformVector(t){const e=Array.isArray(t)?Du(t):t,n=Xo(e);return this._matrices.length>0&&n.transformDirection(this._matrices[this._matrices.length-1]),!Number.isFinite(n.lengthSq())||n.lengthSq()<1e-24?En.clone():n.normalize()}pushEntity(t,e){e&&t.push(e)}readExtents(t){const e=new ie(t),n=e.readVertex(),r=e.readVertex();this._extents=[new x(n[0],n[1],n[2]),new x(r[0],r[1],r[2])]}readAttributeColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);this._rgbColor=void 0,this._colorIndex=e>256||e<0?256:e}readAttributeLayer(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e<this._layers.length&&(this._layer=this._layers[e])}readAttributeLinetype(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e+2<this._linetypes.length?this._linetype=this._linetypes[e+2]:e===32766?this._linetype=Oe:this._linetype=Pt}readAttributeFill(t){this._fill=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0)!==0}readAttributeTrueColor(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0),n=$x(e);this._rgbColor=n.rgb,n.colorIndex!=null&&(this._colorIndex=n.colorIndex)}readAttributeLineweight(t){const e=new DataView(t.buffer,t.byteOffset,4).getUint32(0,!0);e>Wx?this._lineweight=e-4294967296:this._lineweight=e}readAttributeLtscale(t){this._ltscale=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}readAttributeThickness(t){this._thickness=new DataView(t.buffer,t.byteOffset,8).getFloat64(0,!0)}pushMatrix(t){const e=new Float64Array(t.buffer,t.byteOffset,16),n=new X().fromArray(Array.from(e));n.transpose(),this._matrices.push(n)}popMatrix(){this._matrices.length>0&&this._matrices.pop()}loadVertices(t,e){const n=new ie(t);let r=n.readLong();e&&(r+=1);const s=[];for(;r>0;){const[o,c,l]=n.readVertex();s.push(this.transformPoint({x:o,y:c,z:l})),r-=1}let a=En;return e&&s.length>0&&(a=Xo(s.pop())),{vertices:s,normal:a}}drawCircle(t,e,n){const r=new ie(n),s=r.readVertex(),a=r.readFloat(),o=this.transformVector(r.readVertex());let c=zo({x:s[0],y:s[1],z:s[2]});o.equals(En)||(c=qt(c,o)),c=this.transformPoint(c);const l=Ai(o),h=new bt(oe(c,o),a,0,z,o,l);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircle3P(t,e,n){const r=new ie(n),s=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),c=bt.computeCenterPoint(s,a,o);if(!c)return;const l=c.distanceTo(s),h=new bt(c,l,0,z,En);this.applyTraits(t),this.pushEntity(e,t.circularArc(h))}drawCircularArc(t,e,n){const r=new ie(n),s=r.readVertex(),a=r.readFloat(),o=r.readVertex(),c=r.readVertex(),l=r.readFloat(),h=this.transformVector(o),u=zo({x:s[0],y:s[1],z:s[2]}),d=Xo({x:c[0],y:c[1],z:c[2]});this._matrices.length>0&&d.transformDirection(this._matrices[this._matrices.length-1]);const g=Number.isFinite(d.lengthSq())&&d.lengthSq()>=1e-24?d.normalize():Ai(h),f=0,p=l,m=new bt(this.transformPoint(u),a,f,p,h,g);this.applyTraits(t),this.pushEntity(e,t.circularArc(m))}drawCircularArc3P(t,e,n){const r=new ie(n),s=this.transformPoint(r.readVertex()),a=this.transformPoint(r.readVertex()),o=this.transformPoint(r.readVertex()),c=bt.computeCenterPoint(s,o,a);if(!c)return;const l=c.distanceTo(s),h=$e(c,s,En),u=$e(c,o,En),d=new bt(c,l,h,u,En);this.applyTraits(t),this.pushEntity(e,t.circularArc(d))}drawEllipticArc(t,e,n){const r=new ie(n),s=this.transformPoint(r.readVertex()),a=this.transformVector(r.readVertex()),o=r.readFloat(),c=r.readFloat(),l=r.readFloat(),h=r.readFloat(),u=r.readFloat(),d=oe({x:Math.cos(u)*o,y:Math.sin(u)*o,z:0},a),g=new xe(s,a,d,o,c,l,h);this.applyTraits(t),this.pushEntity(e,t.ellipticalArc(g))}drawPolyline(t,e,n,r){var a,o;const{vertices:s}=this.loadVertices(n,r);if(s.length!==0){if(s.length===1){this.applyTraits(t);const c=((a=this._database)==null?void 0:a.pdmode)??0,l=((o=this._database)==null?void 0:o.pdsize)??0;this.pushEntity(e,t.point(s[0],{displayMode:c,displaySize:l}));return}this.applyTraits(t),this.pushEntity(e,t.lines(s))}}drawPolygon(t,e,n){const{vertices:r}=this.loadVertices(n,!1);if(r.length<2)return;if(this._fill){const a=new ot(r.map(l=>({x:l.x,y:l.y})),!0),o=new Ye;o.add(a);const c=t.subEntityTraits;c.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},c.drawOrder=-1,this.applyTraits(t),this.pushEntity(e,t.area(o));return}const s=[...r,r[0]];this.applyTraits(t),this.pushEntity(e,t.lines(s))}drawLwPolyline(t,e,n){const r=new mf(n,this._dxfversion,this._encoding);let s=0,a=!1;r.readUnsignedLong();const o=r.readBitShort();o&8&&(s=r.readBitDouble()),o&512&&(a=!0);const c=r.readBitLong();if(c<=0)return;const l=o&16?r.readBitLong():0;this._dxfversion>="AC1024"&&(o&1024&&r.readBitLong(),o&32&&r.readBitLong());const h=r.readRawDouble(2),u=[this.transformPoint({x:h[0],y:h[1],z:s})];let d=h;for(let g=1;g<c;g++){const f=r.readBitDoubleDefault(1,d[0]),p=r.readBitDoubleDefault(1,d[1]);d=[f,p],u.push(this.transformPoint({x:f,y:p,z:s}))}for(let g=0;g<l;g++)r.readBitDouble();a&&u.length>1&&u.push(u[0].clone()),this.applyTraits(t),this.pushEntity(e,t.lines(u))}drawShell(t,e,n){const r=new ie(n),s=r.readLong(),a=[];for(let h=0;h<s;h++){const[u,d,g]=r.readVertex();a.push(this.transformPoint({x:u,y:d,z:g}))}const o=r.readLong(),c=[];let l=0;for(;l<o;){const h=Math.abs(r.readSignedLong());l+=1+h;const u=[];for(let g=0;g<h;g++)u.push(r.readLong());const d=u.map(g=>a[g]).filter(Boolean);if(d.length>=3)for(let g=0;g<d.length;g++)c.push(d[g]),c.push(d[(g+1)%d.length])}c.length!==0&&(this.applyTraits(t),this.pushEntity(e,t.lines(c)))}drawText(t,e,n,r){const s=new ie(n),a=this.transformPoint(s.readVertex()),o=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),[l,h,u]=s.readStruct([8,8,8]),d=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);this.drawTextPrimitive(t,e,{insert:a,normal:o,textDirection:c,text:d,height:l,widthFactor:h,obliqueAngle:u})}drawText2(t,e,n,r){const s=new ie(n),a=this.transformPoint(s.readVertex()),o=this.transformVector(s.readVertex()),c=this.transformVector(s.readVertex()),l=r?s.readPaddedUnicodeString():s.readPaddedString(this._encoding);s.readSignedLong(),s.readSignedLong();const[h,u,d]=s.readStruct([8,8,8]);s.readFloat(),this.drawTextPrimitive(t,e,{insert:a,normal:o,textDirection:c,text:l,height:h,widthFactor:u,obliqueAngle:d})}drawTextPrimitive(t,e,n){const r=Math.atan2(n.textDirection.y,n.textDirection.x),s={text:n.text,height:n.height,width:1/0,widthFactor:n.widthFactor,position:n.insert,rotation:r*180/Math.PI,drawingDirection:exports.AcGiMTextFlowDirection.BOTTOM_TO_TOP,attachmentPoint:exports.AcGiMTextAttachmentPoint.BaselineLeft},a={name:gt,standardFlag:0,fixedTextHeight:0,widthFactor:n.widthFactor,obliqueAngle:n.obliqueAngle*180/Math.PI,textGenerationFlag:0,lastHeight:n.height,font:"txt",bigFont:""};this.applyTraits(t),this.pushEntity(e,t.mtext(s,a))}drawXline(t,e,n,r){const s=new ie(n),a=this.transformPoint(s.readVertex()),o=this.transformPoint(s.readVertex()),c=new A().subVectors(o,a);if(c.lengthSq()===0)return;const l=1e6,h=r?a.clone().add(c.normalize().multiplyScalar(l)):a.clone().sub(c.normalize().multiplyScalar(l)),u=o.clone().add(c.normalize().multiplyScalar(l));this.applyTraits(t),this.pushEntity(e,t.lines([h,u]))}}function qx(i,t){if(!(t!=null&&t.length))return;const e=Gr(t);return i!=null&&i>0&&e.length>=i?e.subarray(0,i):e}const Kx="ASM_Data";function Sc(i){return String(i).trim().toUpperCase()}function Zx(i){let t,e;const n={};for(;!i.atEndOfObject&&!i.atEof;){const r=i.readItem();if(!r)break;switch(Number(r.code)){case 320:t=Sc(String(r.value));break;case 2:e=String(r.value),n[e]??(n[e]=[]);break;case 310:e&&(r.value instanceof Uint8Array?n[e].push(r.value):n[e].push(String(r.value)));break}}return{ownerHandle:t,hexChunks:n[Kx]??[]}}function Qx(i){const t={};for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)!==0){i.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"||n==="EOF"){i.readItem();break}if(i.readItem(),n==="ACDSRECORD"){const r=Zx(i);if(r.ownerHandle&&r.hexChunks.length>0){const s=Gr(r.hexChunks);s.length>0&&(t[r.ownerHandle]=s)}}else i.skipToEndOfObject()}return{byOwnerHandle:t}}function np(i,t){for(;!i.atEof;){const e=i.peekItem();if(!e)break;if(Number(e.code)===0){if(String(e.value).toUpperCase()==="ENDSEC"){i.readItem();break}break}if(i.readItem(),Number(e.code)!==9)continue;const n=String(e.value).toUpperCase();Jx(i,t,n)}}function Jx(i,t,e){switch(e){case"$ACADVER":{const n=Se(i);n&&(t.version=n);break}case"$DWGCODEPAGE":{const n=Se(i);n&&(t.dwgCodePage=n);break}case"$CECOLOR":{const n=dt(i);t.cecolor.colorIndex=n??256;break}case"$ANGBASE":t.angbase=dt(i)??0;break;case"$ANGDIR":t.angdir=dt(i)??0;break;case"$AUNITS":{const n=dt(i);n!=null&&(t.aunits=n);break}case"$AUPREC":{const n=dt(i);n!=null&&(t.auprec=n);break}case"$LUNITS":{const n=dt(i);n!=null&&(t.lunits=n);break}case"$LUPREC":{const n=dt(i);n!=null&&(t.luprec=n);break}case"$UNITMODE":{const n=dt(i);n!=null&&(t.unitmode=n);break}case"$MEASUREMENT":{const n=dt(i);n!=null&&(t.measurement=n);break}case"$CELTYPE":t.celtype=Se(i)||Pt;break;case"$CETRANSPARENCY":{Ru(i,t,I.CETRANSPARENCY);break}case"$CELTSCALE":t.celtscale=dt(i)??1;break;case"$CELWEIGHT":{const n=dt(i);n!=null&&(t.celweight=n);break}case"$LWDISPLAY":t.lwdisplay=(dt(i)??0)!==0;break;case"$TILEMODE":t.tilemode=dt(i)??1;break;case"$PSLTSCALE":t.psltscale=(dt(i)??1)!==0;break;case"$CMLSTYLE":case"CMLSTYLE":t.cmlstyle=Se(i)||Ze;break;case"$CMLSCALE":case"CMLSCALE":{const n=dt(i);n!=null&&Number.isFinite(n)&&(t.cmlscale=n);break}case"$CMLEADERSTYLE":case"CMLEADERSTYLE":t.cmleaderstyle=Se(i)||Qe;break;case"$HPLAYER":case"HPLAYER":t.hplayer=Se(i)||".";break;case"$HPTRANSPARENCY":{Ru(i,t,I.HPTRANSPARENCY);break}case"$LTSCALE":t.ltscale=dt(i)??1;break;case"$EXTMAX":{const n=Bu(i);n&&(t.extmax=n);break}case"$EXTMIN":{const n=Bu(i);n&&(t.extmin=n);break}case"$INSUNITS":{const n=dt(i);n!=null&&(t.insunits=n);break}case"$OSMODE":t.osmode=dt(i)??0;break;case"$ORTHOMODE":t.orthomode=dt(i)??0;break;case"$COMPAREHATCH":{const n=ir(dt(i),Ja,to);n!=null&&(t.comparehatch=n);break}case"$COMPARERCMARGIN":{const n=ir(dt(i),eo,no);n!=null&&(t.comparercmargin=n);break}case"$COMPARETEXT":{const n=ir(dt(i),io,ro);n!=null&&(t.comparetext=n);break}case"$COMPARETOLERANCE":{const n=ir(dt(i),so,ao);n!=null&&(t.comparetolerance=n);break}case"$PDMODE":t.pdmode=dt(i)??0;break;case"$PDSIZE":t.pdsize=dt(i)??0;break;case"$TEXTSTYLE":t.textstyle=Se(i)||gt;break;case"$DIMSTYLE":t.dimstyle=Se(i)||gt;break;case"$CLAYER":t.clayer=Se(i)||"0";break;case"$HANDSEED":{const n=Se(i);n&&t.initializeHandleSeed(n);break}default:tw(i);break}}function Se(i){const t=i.readItem();if(t){if(Number(t.code)===9||Number(t.code)===0){i.pushBackItem(t);return}return String(t.value)}}function dt(i){const t=i.readItem();if(!t)return;if(Number(t.code)===9||Number(t.code)===0){i.pushBackItem(t);return}const e=Number(t.value);return Number.isFinite(e)?e:void 0}function Ru(i,t,e){const n=i.readItem();if(!n||Number(n.code)===9||Number(n.code)===0){n&&i.pushBackItem(n),xt.instance().setVar(e,"ByLayer",t);return}const r=Number(n.code),s=String(n.value).trim();if(s===""){xt.instance().setVar(e,"ByLayer",t);return}if(r===440){const a=Number(s);xt.instance().setVar(e,Number.isFinite(a)?a:"ByLayer",t);return}xt.instance().setVar(e,s,t)}function Bu(i){let t=0,e=0,n=0,r=!1;for(;!i.atEof;){const s=i.peekItem();if(!s)break;const a=Number(s.code);if(a===9||a===0)break;i.readItem();const o=Number(s.value);a===10?(t=o,r=!0):a===20?(e=o,r=!0):a===30&&(n=o,r=!0)}return r?new x(t,e,n):void 0}function tw(i){for(;!i.atEof;){const t=i.peekItem();if(!t)break;const e=Number(t.code);if(e===9||e===0)break;i.readItem()}}class ip{constructor(t){this._expression=t}get expression(){return this._expression}}var rp=(i=>(i[i.Cancel=0]="Cancel",i[i.Ok=1]="Ok",i))(rp||{});class go{constructor(){this._name="",this._filterExpression="",this._nestedFilters=[],this._parent=null,this._allowDelete=!0,this._allowRename=!0,this._dynamicallyGenerated=!1,this._isProxy=!1}get name(){return this._name}setName(t){return!this.allowRename()&&this._name.length>0?!1:(this._name=t,!0)}set name(t){this.setName(t)}get filterExpression(){return this._filterExpression}setFilterExpression(t){return this.isIdFilter()?!1:(this._filterExpression=t??"",!0)}set filterExpression(t){this.setFilterExpression(t)}filterExpressionTree(){return this.isIdFilter()||!this._filterExpression?null:new ip(this._filterExpression)}getNestedFilters(){return this._nestedFilters}get nestedFilters(){return this._nestedFilters}parent(){return this._parent}isIdFilter(){return!1}allowNested(){return!0}allowDelete(){return this._allowDelete}setAllowDelete(t){this._allowDelete=t}allowRename(){return this._allowRename}setAllowRename(t){this._allowRename=t}dynamicallyGenerated(){return this._dynamicallyGenerated}setDynamicallyGenerated(t){this._dynamicallyGenerated=t}isProxy(){return this._isProxy}setIsProxy(t){this._isProxy=t}addNested(t){return!t||t===this||!this.allowNested()||!(this._parent==null)&&!this.isIdFilter()&&t.isIdFilter()||this._nestedFilters.includes(t)?!1:(t._parent&&t._parent.removeNested(t),t._parent=this,this._nestedFilters.push(t),!0)}removeNested(t){const e=this._nestedFilters.indexOf(t);return e<0?!1:(this._nestedFilters.splice(e,1),t._parent===this&&(t._parent=null),!0)}generateNested(){return!1}compareTo(t){return t?this.isIdFilter()===t.isIdFilter()&&this._name===t._name&&this._filterExpression===t._filterExpression:!1}filter(t){return t?this._filterExpression?ew(this._filterExpression,t):!0:!1}showEditor(){return 0}}function ew(i,t){const e=i.trim();return e?Fu(e,"OR").some(r=>Fu(r,"AND").every(a=>nw(a,t))):!0}function Fu(i,t){const e=new RegExp(`\\s+${t}\\s+`,"i");return i.split(e).map(n=>n.trim()).filter(n=>n.length>0)}function nw(i,t){var a;const e=i.trim().match(/^([A-Za-z_]+)\s*(==|=)\s*"?(.*?)"?\s*$/);if(!e)return!1;const n=e[1].toUpperCase(),r=e[3],s=rw(r);switch(n){case"NAME":return iw(t.name,r);case"LOCKED":return s!=null?t.isLocked===s:!1;case"FROZEN":return s!=null?t.isFrozen===s:!1;case"OFF":return s!=null?t.isOff===s:!1;case"PLOT":return s!=null?t.isPlottable===s:!1;case"COLOR":{const o=(a=t.color)==null?void 0:a.colorIndex;return o!=null&&String(o)===r}case"LINETYPE":return t.linetype.localeCompare(r,void 0,{sensitivity:"accent"})===0;default:return!1}}function iw(i,t){return/[*?]/.test(t)?new RegExp(`^${t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".")}$`,"i").test(i):i.localeCompare(t,void 0,{sensitivity:"accent"})===0}function rw(i){const t=i.trim().toLowerCase();return t==="true"||t==="1"?!0:t==="false"||t==="0"?!1:null}class nn{constructor(t,e){this._root=t??nn.createDefaultRoot(),this._current=e===void 0?this._root:e}static createDefaultRoot(){const t=new go;return t.setName("All"),t.setAllowDelete(!1),t.setAllowRename(!1),t.setFilterExpression(""),t}get root(){return this._root}get current(){return this._current}set current(t){this._current=t}clone(){return new nn(this._root,this._current)}}class sp extends go{constructor(){super(),this._layerIds=[]}isIdFilter(){return!0}layerIds(){return this._layerIds}get layerIdList(){return this._layerIds}addLayerId(t){return!t||this._layerIds.includes(t)?!1:(this._layerIds.push(t),!0)}removeLayerId(t){const e=this._layerIds.indexOf(t);return e<0?!1:(this._layerIds.splice(e,1),!0)}filter(t){return t?this._layerIds.includes(t.objectId):!1}setFilterExpression(t){return!1}}const fo="ACAD_LAYERFILTERS",Bi="ACLYDICTIONARY";function ap(i){const t=nn.createDefaultRoot(),e=new nn(t,t),n=Xu(i,Bi),r=Xu(i,fo);if(n){for(const[s,a]of Object.entries(n.entries)){const o=Pc(i,a,s);o&&t.addNested(o)}return e}if(r)for(const[s,a]of Object.entries(r.entries)){const o=Pc(i,a,s);o&&t.addNested(o)}return e}function op(i){const t=[];for(const e of i.root.getNestedFilters())t.push(hp(e));return{nodes:t}}function cp(i){const t=new en;for(const e of i)t.add({code:e.code,value:e.value});return t}function sw(i){return i?i.toArray().map(t=>({code:Number(t.code),value:t.value})):[]}function Xu(i,t){let e;for(const n of i.dictionaries.values()){const r=n.entries[t];if(!r)continue;const s=i.dictionaries.get(We(r));if(!s)continue;if(!(n.ownerObjectId?i.xrecords.has(We(n.ownerObjectId)):!1))return s;e=s}return e}function Pc(i,t,e){const n=i.xrecords.get(We(t));if(!n)return;const r=lp(n.data,e),s=r.isIdFilter?new sp:new go;if(s.setAllowRename(!0),s.setName(r.name||e),!r.isIdFilter)s.setFilterExpression(r.filterExpression);else{const a=s;for(const o of r.layerIds)a.addLayerId(o)}for(const a of aw(i,n)){const o=Pc(i,a.handle,a.key);o&&s.addNested(o)}return s}function aw(i,t){const e=[],n=new Set,r=We(t.handle),s=t.extensionDictionaryId?We(t.extensionDictionaryId):void 0,a=(o,c)=>{const l=We(c);n.has(l)||(n.add(l),e.push({key:o,handle:c}))};for(const o of i.dictionaries.values()){const c=o.ownerObjectId?We(o.ownerObjectId):void 0;if(!c||!(c===r||c===s))continue;const h=o.entries[Bi];if(h){const u=i.dictionaries.get(We(h));if(u){for(const[d,g]of Object.entries(u.entries))a(d,g);continue}}for(const[u,d]of Object.entries(o.entries))u===Bi||u===fo||a(u,d)}return e}function lp(i,t=""){const e=[],n=[];let r=0,s,a,o;for(const f of i){const p=Number(f.code),m=f.value;p===1&&typeof m=="string"?e.push(m):p===300&&typeof m=="string"?a=m:p===301&&typeof m=="string"?o=m:p===70||p===90?r=Number(m)||0:p===290||p===280?s=Number(m)===1:(p===330||p===340||p===350||p===360)&&m!=null&&String(m).length>0&&n.push(We(String(m)))}const c=e[0],h=a||(c==="AcLyLayerFilter"||c==="AcLyLayerGroup"?void 0:c)||t,u=e[1]??"";let d=o??u;!o&&d&&d!=="*"&&!/==/.test(d)&&(d=`NAME=="${d}"`);const g=o!=null&&o.length>0?!1:s===!0&&n.length>0?!0:n.length>0&&(d.length===0||d==="*");return{name:h,filterExpression:g?"":d,flags:r,layerIds:n,isIdFilter:g}}function hp(i){const t=i.isIdFilter(),e=up(i),n=i.getNestedFilters().map(s=>hp(s));return{key:i.name||(t?"Group":"Filter"),isIdFilter:t,data:e,children:n}}function up(i){const t=[];if(t.push({code:1,value:i.name}),i.isIdFilter()){t.push({code:1,value:""}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:1});const e=i;for(const n of e.layerIds())t.push({code:330,value:n})}else t.push({code:1,value:i.filterExpression||"*"}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:70,value:0}),t.push({code:1,value:"*"}),t.push({code:1,value:"*"}),t.push({code:290,value:0});return t}function We(i){return i.trim().toUpperCase()}class Es extends pt{constructor(){super(...arguments),this._schema=0,this._value=""}get schema(){return this._schema}set schema(t){this._schema=t}get value(){return this._value}set value(t){this._value=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("DictionaryVariables"),t.writeInt16(280,this._schema),t.writeString(1,this._value),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("DictionaryVariables")||t.atSubclassData("AcDbDictionaryVar");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 280:this._schema=Number(e.value);break;case 1:this._value=String(e.value);break}}return this}}class dp extends pt{constructor(){super(...arguments),this._name="",this._unnamed=!1,this._selectable=!0,this._entityIds=[]}get name(){return this._name}set name(t){this._name=t}get unnamed(){return this._unnamed}set unnamed(t){this._unnamed=t}get selectable(){return this._selectable}set selectable(t){this._selectable=t}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbGroup"),this.name&&t.writeString(300,this.name),t.writeInt16(70,this.unnamed?1:0),t.writeInt16(71,this.selectable?1:0);for(const e of this._entityIds)t.writeObjectId(340,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbGroup"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 300:this._name=String(e.value);break;case 70:this._unnamed=Number(e.value)!==0;break;case 71:this._selectable=Number(e.value)!==0;break;case 340:this._entityIds.push(String(e.value));break}}return this}}class gp extends pt{constructor(){super(),this._boundaryVertices=[],this._clipBoundaryDisplayEnabled=!1,this._frontClippingEnabled=!1,this._backClippingEnabled=!1}get boundaryVertices(){return this._boundaryVertices}set boundaryVertices(t){this._boundaryVertices=t.map(e=>e.clone())}get clipBoundaryNormal(){return this._clipBoundaryNormal}set clipBoundaryNormal(t){this._clipBoundaryNormal=t==null?void 0:t.clone()}get clipBoundaryOrigin(){return this._clipBoundaryOrigin}set clipBoundaryOrigin(t){this._clipBoundaryOrigin=t==null?void 0:t.clone()}get clipBoundaryDisplayEnabled(){return this._clipBoundaryDisplayEnabled}set clipBoundaryDisplayEnabled(t){this._clipBoundaryDisplayEnabled=t}get frontClippingEnabled(){return this._frontClippingEnabled}set frontClippingEnabled(t){this._frontClippingEnabled=t}get frontClippingDistance(){return this._frontClippingDistance}set frontClippingDistance(t){this._frontClippingDistance=t}get backClippingEnabled(){return this._backClippingEnabled}set backClippingEnabled(t){this._backClippingEnabled=t}get backClippingDistance(){return this._backClippingDistance}set backClippingDistance(t){this._backClippingDistance=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFilter"),this._boundaryVertices.length>0&&(t.writeInt16(70,this._boundaryVertices.length),this._boundaryVertices.forEach(e=>t.writePoint2d(10,e)),t.writeVector3d(210,this._clipBoundaryNormal),t.writePoint3d(11,this._clipBoundaryOrigin),t.writeInt16(71,this._clipBoundaryDisplayEnabled?1:0),t.writeInt16(72,this._frontClippingEnabled?1:0),this._frontClippingEnabled&&this._frontClippingDistance!=null&&t.writeDouble(40,this._frontClippingDistance),t.writeInt16(73,this._backClippingEnabled?1:0),this._backClippingEnabled&&this._backClippingDistance!=null&&t.writeDouble(41,this._backClippingDistance)),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFilter");let e=null,n=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);if(s===100){t.pushBackItem(r);break}const a=Number(r.value);switch(s){case 70:break;case 10:e&&this._boundaryVertices.push(new M(e.x,e.y)),e={x:a,y:0};break;case 20:e&&(e.y=a);break;case 210:this._clipBoundaryNormal=this._clipBoundaryNormal??new x,this._clipBoundaryNormal.x=a;break;case 220:this._clipBoundaryNormal&&(this._clipBoundaryNormal.y=a);break;case 230:this._clipBoundaryNormal&&(this._clipBoundaryNormal.z=a);break;case 11:this._clipBoundaryOrigin=this._clipBoundaryOrigin??new x,this._clipBoundaryOrigin.x=a;break;case 21:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.y=a);break;case 31:this._clipBoundaryOrigin&&(this._clipBoundaryOrigin.z=a);break;case 71:this._clipBoundaryDisplayEnabled=a!==0;break;case 72:this._frontClippingEnabled=a!==0;break;case 73:this._backClippingEnabled=a!==0;break;case 40:n||(this._frontClippingDistance=a,n=!0);break;case 41:this._backClippingDistance=a;break}}return e&&this._boundaryVertices.push(new M(e.x,e.y)),this}}class fp extends gp{constructor(){super(),this._layerNames=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}add(t){const e=t==null?void 0:t.trim();return!e||this._layerNames.includes(e)?!1:(this._layerNames.push(e),!0)}getAt(t){if(t<0||t>=this._layerNames.length)throw new Error("The layer index is out of range!");return this._layerNames[t]}remove(t){const e=this._layerNames.indexOf(t);return e<0?!1:(this._layerNames.splice(e,1),!0)}layerCount(){return this._layerNames.length}indexClass(){return"AcDbLayerIndex"}isValid(){return this._layerNames.some(t=>t.length>0)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerFilter");for(const e of this._layerNames)t.writeString(8,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbLayerFilter");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 8:this.add(String(e.value));break;case 100:return t.pushBackItem(e),this}}return this}}class pp extends pt{constructor(){super(),this._lastUpdatedAt=0,this._lastUpdatedAtU=0,this._isUptoDate=!1,this._objectBeingIndexedId=""}get lastUpdatedAt(){return this._lastUpdatedAt}set lastUpdatedAt(t){this._lastUpdatedAt=t}get lastUpdatedAtU(){return this._lastUpdatedAtU}set lastUpdatedAtU(t){this._lastUpdatedAtU=t}get isUptoDate(){return this._isUptoDate}set isUptoDate(t){this._isUptoDate=t}objectBeingIndexedId(){return this._objectBeingIndexedId}setObjectBeingIndexedId(t){this._objectBeingIndexedId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbIndex"),t.writeDouble(40,this.lastUpdatedAt),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbIndex");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;switch(Number(e.code)){case 40:this.lastUpdatedAt=Number(e.value),this.lastUpdatedAtU=this.lastUpdatedAt;break;case 100:return t.pushBackItem(e),this}}return this}}class mp extends pp{constructor(){super(),this._layerNames=[],this._idBufferIds=[],this._idBufferEntryCounts=[]}get layerNames(){return this._layerNames}set layerNames(t){this._layerNames=[...t]}get idBufferIds(){return this._idBufferIds}set idBufferIds(t){this._idBufferIds=[...t]}get idBufferEntryCounts(){return this._idBufferEntryCounts}set idBufferEntryCounts(t){this._idBufferEntryCounts=[...t]}get entries(){const t=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length),e=[];for(let n=0;n<t;n++)e.push({layerName:this._layerNames[n]??"",idBufferId:this._idBufferIds[n]??"",idBufferEntryCount:this._idBufferEntryCounts[n]??0});return e}set entries(t){this._layerNames=t.map(e=>e.layerName),this._idBufferIds=t.map(e=>e.idBufferId),this._idBufferEntryCounts=t.map(e=>e.idBufferEntryCount)}compute(t,e){if(e&&this.setObjectBeingIndexedId(e.objectId),t){this._layerNames=[];for(const n of t.newIterator())this._layerNames.push(n.name)}return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}newIterator(t){return null}rebuildFull(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}rebuildModified(t){return this.lastUpdatedAt=Date.now(),this.lastUpdatedAtU=Date.now(),this.isUptoDate=!0,!0}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerIndex");const e=Math.max(this._layerNames.length,this._idBufferIds.length,this._idBufferEntryCounts.length);for(let n=0;n<e;n++)this._layerNames[n]!=null&&t.writeString(8,this._layerNames[n]),this._idBufferIds[n]&&t.writeHandle(360,this._idBufferIds[n]),this._idBufferEntryCounts[n]!=null&&t.writeInt32(90,this._idBufferEntryCounts[n]);return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLayerIndex");const e=[],n=[],r=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;switch(Number(s.code)){case 8:e.push(String(s.value));break;case 360:n.push(String(s.value));break;case 90:r.push(Number(s.value));break;case 100:return t.pushBackItem(s),this.layerNames=e,this.idBufferIds=n,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}return this.layerNames=e,this.idBufferIds=n,this.idBufferEntryCounts=r,this.isUptoDate=!0,this}}class po extends pt{constructor(){super(),this._contentType=2,this._drawMLeaderOrderType=1,this._drawLeaderOrderType=0,this._bitFlags=0,this._maxLeaderSegmentsPoints=-1,this._firstSegmentAngleConstraint=0,this._secondSegmentAngleConstraint=0,this._leaderLineType=1,this._leaderLineColor=new U(exports.AcCmColorMethod.ByLayer),this._leaderLineWeight=-2,this._enableLanding=!0,this._landingGap=2,this._enableDogleg=!0,this._doglegLength=8,this._description="",this._arrowSize=4,this._defaultMTextContents="",this._textLeftAttachmentType=1,this._textAngleType=1,this._textAlignmentType=0,this._textRightAttachmentType=1,this._textColor=new U(exports.AcCmColorMethod.ByLayer),this._textHeight=4,this._enableFrameText=!1,this._textAlignAlwaysLeft=!1,this._alignSpace=0,this._blockColor=new U(exports.AcCmColorMethod.ByBlock),this._blockScale=new A(1,1,1),this._enableBlockScale=!0,this._blockRotation=0,this._enableBlockRotation=!1,this._blockConnectionType=0,this._scale=1,this._overwritePropChanged=!1,this._annotative=!1,this._breakSize=0,this._textAttachmentDirection=0,this._bottomTextAttachmentType=9,this._topTextAttachmentType=9,this._extendLeaderToText=!1}get unknown1(){return this._unknown1}set unknown1(t){this._unknown1=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get drawMLeaderOrderType(){return this._drawMLeaderOrderType}set drawMLeaderOrderType(t){this._drawMLeaderOrderType=t}get drawLeaderOrderType(){return this._drawLeaderOrderType}set drawLeaderOrderType(t){this._drawLeaderOrderType=t}get bitFlags(){return this._bitFlags}set bitFlags(t){this._bitFlags=t}get maxLeaderSegmentsPoints(){return this._maxLeaderSegmentsPoints}set maxLeaderSegmentsPoints(t){this._maxLeaderSegmentsPoints=t}get maxLeaderSegmentPoints(){return this.maxLeaderSegmentsPoints}set maxLeaderSegmentPoints(t){this.maxLeaderSegmentsPoints=t}get firstSegmentAngleConstraint(){return this._firstSegmentAngleConstraint}set firstSegmentAngleConstraint(t){this._firstSegmentAngleConstraint=t}get secondSegmentAngleConstraint(){return this._secondSegmentAngleConstraint}set secondSegmentAngleConstraint(t){this._secondSegmentAngleConstraint=t}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor.copy(t)}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get enableLanding(){return this._enableLanding}set enableLanding(t){this._enableLanding=t}get landingEnabled(){return this.enableLanding}set landingEnabled(t){this.enableLanding=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get enableDogleg(){return this._enableDogleg}set enableDogleg(t){this._enableDogleg=t}get doglegEnabled(){return this.enableDogleg}set doglegEnabled(t){this.enableDogleg=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get description(){return this._description}set description(t){this._description=t}get arrowSymbolId(){return this._arrowSymbolId}set arrowSymbolId(t){this._arrowSymbolId=t}get arrowheadId(){return this.arrowSymbolId}set arrowheadId(t){this.arrowSymbolId=t}get arrowSize(){return this._arrowSize}set arrowSize(t){this._arrowSize=t}get arrowheadSize(){return this.arrowSize}set arrowheadSize(t){this.arrowSize=t}get defaultMTextContents(){return this._defaultMTextContents}set defaultMTextContents(t){this._defaultMTextContents=t}get defaultMText(){return this.defaultMTextContents}set defaultMText(t){this.defaultMTextContents=t}get textString(){return this.defaultMTextContents}set textString(t){this.defaultMTextContents=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textStyle(){return this.textStyleId}set textStyle(t){this.textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor.copy(t)}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get enableFrameText(){return this._enableFrameText}set enableFrameText(t){this._enableFrameText=t}get textFrameEnabled(){return this.enableFrameText}set textFrameEnabled(t){this.enableFrameText=t}get textAlignAlwaysLeft(){return this._textAlignAlwaysLeft}set textAlignAlwaysLeft(t){this._textAlignAlwaysLeft=t}get alignSpace(){return this._alignSpace}set alignSpace(t){this._alignSpace=t}get blockId(){return this._blockId}set blockId(t){this._blockId=t}get blockContentId(){return this.blockId}set blockContentId(t){this.blockId=t}get blockColor(){return this._blockColor}set blockColor(t){this._blockColor.copy(t)}get blockContentColor(){return this.blockColor}set blockContentColor(t){this.blockColor=t}get blockScale(){return this._blockScale.clone()}set blockScale(t){this._blockScale.copy(t)}get blockContentScale(){return this.blockScale}set blockContentScale(t){this.blockScale=t}get enableBlockScale(){return this._enableBlockScale}set enableBlockScale(t){this._enableBlockScale=t}get blockContentScaleEnabled(){return this.enableBlockScale}set blockContentScaleEnabled(t){this.enableBlockScale=t}get blockRotation(){return this._blockRotation}set blockRotation(t){this._blockRotation=t}get blockContentRotation(){return this.blockRotation}set blockContentRotation(t){this.blockRotation=t}get enableBlockRotation(){return this._enableBlockRotation}set enableBlockRotation(t){this._enableBlockRotation=t}get blockContentRotationEnabled(){return this.enableBlockRotation}set blockContentRotationEnabled(t){this.enableBlockRotation=t}get blockConnectionType(){return this._blockConnectionType}set blockConnectionType(t){this._blockConnectionType=t}get blockContentConnectionType(){return this.blockConnectionType}set blockContentConnectionType(t){this.blockConnectionType=t}get scale(){return this._scale}set scale(t){this._scale=t}get scaleFactor(){return this.scale}set scaleFactor(t){this.scale=t}get overwritePropChanged(){return this._overwritePropChanged}set overwritePropChanged(t){this._overwritePropChanged=t}get overwritePropertyValue(){return this.overwritePropChanged}set overwritePropertyValue(t){this.overwritePropChanged=t}get annotative(){return this._annotative}set annotative(t){this._annotative=t}get breakSize(){return this._breakSize}set breakSize(t){this._breakSize=t}get breakGapSize(){return this.breakSize}set breakGapSize(t){this.breakSize=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get bottomTextAttachmentType(){return this._bottomTextAttachmentType}set bottomTextAttachmentType(t){this._bottomTextAttachmentType=t}get bottomTextAttachmentDirection(){return this.bottomTextAttachmentType}set bottomTextAttachmentDirection(t){this.bottomTextAttachmentType=t}get topTextAttachmentType(){return this._topTextAttachmentType}set topTextAttachmentType(t){this._topTextAttachmentType=t}get topTextAttachmentDirection(){return this.topTextAttachmentType}set topTextAttachmentDirection(t){this.topTextAttachmentType=t}get extendLeaderToText(){return this._extendLeaderToText}set extendLeaderToText(t){this._extendLeaderToText=t}get unknown2(){return this._unknown2}set unknown2(t){this._unknown2=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeaderStyle"),t.writeInt16(179,this.unknown1),t.writeInt16(170,this.contentType),t.writeInt16(171,this.drawMLeaderOrderType),t.writeInt16(172,this.drawLeaderOrderType),t.writeInt32(90,this.maxLeaderSegmentsPoints),t.writeDouble(40,this.firstSegmentAngleConstraint),t.writeDouble(41,this.secondSegmentAngleConstraint),t.writeInt16(173,this.leaderLineType),t.writeInt32(91,Fo(this.leaderLineColor)),t.writeHandle(340,this.leaderLineTypeId),t.writeInt32(92,this.leaderLineWeight),t.writeBoolean(290,this.enableLanding),t.writeDouble(42,this.landingGap),t.writeBoolean(291,this.enableDogleg),t.writeDouble(43,this.doglegLength),t.writeString(3,this.description),t.writeHandle(341,this.arrowSymbolId),t.writeDouble(44,this.arrowSize),t.writeString(300,this.defaultMTextContents),t.writeHandle(342,this.textStyleId),t.writeInt16(174,this.textLeftAttachmentType),t.writeInt16(175,this.textAngleType),t.writeInt16(176,this.textAlignmentType),t.writeInt16(178,this.textRightAttachmentType),t.writeInt32(93,Fo(this.textColor)),t.writeDouble(45,this.textHeight),t.writeBoolean(292,this.enableFrameText),t.writeBoolean(297,this.textAlignAlwaysLeft),t.writeDouble(46,this.alignSpace),t.writeHandle(343,this.blockId),t.writeInt32(94,Fo(this.blockColor)),t.writeDouble(47,this._blockScale.x),t.writeDouble(49,this._blockScale.y),t.writeDouble(140,this._blockScale.z),t.writeBoolean(293,this.enableBlockScale),t.writeDouble(141,this.blockRotation),t.writeBoolean(294,this.enableBlockRotation),t.writeInt16(177,this.blockConnectionType),t.writeDouble(142,this.scale),t.writeBoolean(295,this.overwritePropChanged),t.writeBoolean(296,this.annotative),t.writeDouble(143,this.breakSize),t.writeInt16(271,this.textAttachmentDirection),t.writeInt16(272,this.bottomTextAttachmentType),t.writeInt16(273,this.topTextAttachmentType),t.writeBoolean(298,this.unknown2),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbMLeaderStyle");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 179:this.unknown1=r;break;case 170:this.contentType=r;break;case 171:this.drawMLeaderOrderType=r;break;case 172:this.drawLeaderOrderType=r;break;case 90:this.maxLeaderSegmentsPoints=r;break;case 40:this.firstSegmentAngleConstraint=r;break;case 41:this.secondSegmentAngleConstraint=r;break;case 173:this.leaderLineType=r;break;case 91:this.leaderLineColor=zt(r);break;case 340:this.leaderLineTypeId=String(e.value);break;case 92:this.leaderLineWeight=r;break;case 290:this.enableLanding=r!==0;break;case 42:this.landingGap=r;break;case 291:this.enableDogleg=r!==0;break;case 43:this.doglegLength=r;break;case 3:this.description=String(e.value);break;case 341:this.arrowSymbolId=String(e.value);break;case 44:this.arrowSize=r;break;case 300:this.defaultMTextContents=String(e.value);break;case 342:this.textStyleId=String(e.value);break;case 174:this.textLeftAttachmentType=r;break;case 175:this.textAngleType=r;break;case 176:this.textAlignmentType=r;break;case 178:this.textRightAttachmentType=r;break;case 93:this.textColor=zt(r);break;case 45:this.textHeight=r;break;case 292:this.enableFrameText=r!==0;break;case 297:this.textAlignAlwaysLeft=r!==0;break;case 46:this.alignSpace=r;break;case 343:this.blockId=String(e.value);break;case 94:this.blockColor=zt(r);break;case 47:this._blockScale.x=r;break;case 49:this._blockScale.y=r;break;case 140:this._blockScale.z=r;break;case 293:this.enableBlockScale=r!==0;break;case 141:this.blockRotation=r;break;case 294:this.enableBlockRotation=r!==0;break;case 177:this.blockConnectionType=r;break;case 142:this.scale=r;break;case 295:this.overwritePropChanged=r!==0;break;case 296:this.annotative=r!==0;break;case 143:this.breakSize=r;break;case 271:this.textAttachmentDirection=r;break;case 272:this.bottomTextAttachmentType=r;break;case 273:this.topTextAttachmentType=r;break;case 298:this.unknown2=r!==0;break;case 100:return t.pushBackItem(e),this}}return this}}class Xl extends pt{constructor(){super(),this._styleName="STANDARD",this._flags=0,this._description="",this._fillColor=new U,this._startAngle=90,this._endAngle=90,this._elements=[]}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get flags(){return this._flags}set flags(t){this._flags=t}get description(){return this._description}set description(t){this._description=t}get fillColor(){return this._fillColor}set fillColor(t){this._fillColor.copy(t)}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=t}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=t}get elementCount(){return this._elements.length}get elements(){return this._elements.map(t=>({offset:t.offset,color:t.color.clone(),lineType:t.lineType}))}set elements(t){this._elements=t.map(e=>({offset:e.offset,color:e.color.clone(),lineType:e.lineType}))}addElement(t){this._elements.push({offset:t.offset,color:t.color.clone(),lineType:t.lineType})}removeElementAt(t){if(t<0||t>=this._elements.length)throw new Error("The element index is out of range!");this._elements.splice(t,1)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMlineStyle"),t.writeString(2,this.styleName),t.writeInt16(70,this.flags),t.writeString(3,this.description),t.writeCmColor(this.fillColor),t.writeDouble(51,this.startAngle),t.writeDouble(52,this.endAngle),t.writeInt16(71,this.elementCount),this._elements.forEach(e=>{t.writeDouble(49,e.offset),t.writeCmColor(e.color),t.writeString(6,e.lineType)}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMlineStyle");const e=[];let n,r=0;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 2:this.styleName=String(s.value);break;case 70:this.flags=o;break;case 3:this.description=String(s.value);break;case 51:this.startAngle=o;break;case 52:this.endAngle=o;break;case 71:r=o;break;case 49:{n={offset:o,color:new U,lineType:"BYLAYER"},n.color.colorIndex=256,e.push(n);break}case 62:n?n.color.colorIndex=o:this.fillColor.colorIndex=o;break;case 420:n?n.color.setRGBValue(o):this.fillColor.setRGBValue(o);break;case 6:n&&(n.lineType=String(s.value));break;case 100:return t.pushBackItem(s),this.finishMlineElements(e,r),this}}return this.finishMlineElements(e,r),this}finishMlineElements(t,e){const n=Math.max(e,t.length);if(n<=0){this.elements=[];return}this.elements=Array.from({length:n},(r,s)=>{const a=t[s];if(a)return a;const o=new U;return o.colorIndex=256,{offset:0,color:o,lineType:"BYLAYER"}})}}class yp extends pt{constructor(){super(),this._isLoaded=!0,this._resolutionUnits=0,this._sourceFileName="",this._classVersion=0,this._imageSize=new M,this._pixelSize=new M(1,1)}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}get classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize.copy(t)}get isLoaded(){return this._isLoaded}set isLoaded(t){this._isLoaded=t}get resolutionUnits(){return this._resolutionUnits}set resolutionUnits(t){this._resolutionUnits=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImageDef"),t.writeInt32(90,this.classVersion),t.writeString(1,this.sourceFileName),t.writePoint2d(10,this.imageSize),t.writeDouble(11,this.pixelSize.x),t.writeDouble(12,this.pixelSize.y),t.writeInt16(280,this.isLoaded?1:0),t.writeInt16(281,this.resolutionUnits),this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbRasterImageDef");!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code),r=Number(e.value);switch(n){case 1:this.sourceFileName=String(e.value);break;case 90:this.classVersion=r;break;case 10:this.imageSize.x=r;break;case 20:this.imageSize.y=r;break;case 11:this.pixelSize.x=r;break;case 12:this.pixelSize.y=r;break;case 280:this.isLoaded=r!==0;break;case 281:this.resolutionUnits=r;break;case 100:return t.pushBackItem(e),this}}return this}}class bp extends pt{constructor(){super(...arguments),this._entityIds=[]}get entityIds(){return this._entityIds}set entityIds(t){this._entityIds=[...t]}addEntityId(t){this._entityIds.push(t)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbSortentsTable");for(const e of this._entityIds)t.writeObjectId(331,e);return this}dxfInFields(t){for(super.dxfInFields(t),t.atSubclassData("AcDbSortentsTable"),this._entityIds=[];!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const e=t.readItem();if(!e)break;const n=Number(e.code);if(n===100){t.pushBackItem(e);break}switch(n){case 331:this._entityIds.push(String(e.value));break}}return this}}const at=i=>i?i.trim().toUpperCase():"";class _p{constructor(t){this._db=t,this._dictionaries=new Map,this._xrecords=new Map,this._unknownObjectCount=0}get unknownObjectCount(){return this._unknownObjectCount}read(t){for(this._unknownObjectCount=0;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"){t.readItem();break}t.readItem(),this.readObject(t,n)}this.finishNamedObjectDictionaries(),this.materializeBufferedDictionaries(),this.finishCannoscale(),this.finishAnnoallvisible(),this.finishLayerFilterTree(),this.linkLayoutsToBlockTableRecords(),this._db.objects.layout.numEntries===0&&this._db.createDefaultData({layout:!0})}readObject(t,e){switch(e){case"LAYOUT":{const n=new jn;n.dxfIn(t),n.layoutName&&this._db.objects.layout.setAt(n.layoutName,n);break}case"IMAGEDEF":{const n=new yp;n.dxfIn(t),this._db.objects.imageDefinition.setAt(n.objectId,n);break}case"LAYER_FILTER":{const n=new fp;n.dxfIn(t),this._db.objects.layerFilter.setAt(n.objectId,n);break}case"LAYER_INDEX":{const n=new mp;n.dxfIn(t),this._db.objects.layerIndex.setAt(n.objectId,n);break}case"MLEADERSTYLE":{const n=new po;n.dxfIn(t),this._db.objects.mleaderStyle.setAt(n.objectId,n);break}case"MLINESTYLE":{const n=new Xl;n.dxfIn(t),this._db.objects.mlineStyle.setAt(n.styleName||n.objectId,n);break}case"GROUP":{const n=new dp;n.dxfIn(t);const r=n.name||n.objectId;this._db.objects.group.setAt(r,n);break}case"SORTENTSTABLE":{const n=new bp;n.dxfIn(t),this._db.objects.sortentsTable.setAt(n.objectId,n);break}case"DICTIONARY":case"ACDBDICTIONARYWDFLT":{const n=this.readPersistDictionary(t);n.handle&&this._dictionaries.set(at(n.handle),n);break}case"SCALE":{const n=new zn;n.dxfIn(t);const r=n.scaleName||at(n.objectId);r&&this._db.objects.scale.setAt(r,n);break}case"DICTIONARYVAR":{const n=new Es;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.dictionaryVar.setAt(r,n);break}case"ACDB_MTEXTOBJECTCONTEXTDATA_CLASS":{const n=new sn;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_TEXTOBJECTCONTEXTDATA_CLASS":{const n=new Hr;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_ALDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_ANGDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_ARCDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_DMDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_ORDDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_RADDIMOBJECTCONTEXTDATA_CLASS":case"ACDB_RADIMOBJECTCONTEXTDATA_CLASS":case"ACDB_RADDIMLGCOBJECTCONTEXTDATA_CLASS":{const n=new Pr;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_HATCHSCALECONTEXTDATA_CLASS":{const n=new kr;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_BLKREFOBJECTCONTEXTDATA_CLASS":{const n=new Sr;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_LEADEROBJECTCONTEXTDATA_CLASS":{const n=new Al;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_MLEADEROBJECTCONTEXTDATA_CLASS":{const n=new Ir;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"ACDB_MTEXTATTRIBUTEOBJECTCONTEXTDATA_CLASS":{const n=new Gs;n.dxfIn(t);const r=at(n.objectId);r&&this._db.objects.objectContextData.setAt(r,n);break}case"XRECORD":{const n=new oo;n.dxfIn(t);const r=at(n.objectId);if(r){this._db.objects.xrecord.setAt(r,n);const s={handle:r,ownerObjectId:at(n.ownerId),data:n.data?n.data.toArray().map(a=>({code:Number(a.code),value:a.value})):[]};n.extensionDictionary&&(s.extensionDictionaryId=at(n.extensionDictionary)),this._xrecords.set(r,s)}break}default:this._unknownObjectCount+=1,t.skipToEndOfObject();break}}finishNamedObjectDictionaries(){if(this._dictionaries.size===0)return;let t;for(const s of this._dictionaries.values())if(!s.ownerObjectId||s.ownerObjectId==="0"){t=s;break}if(!(t!=null&&t.handle))return;const e=this._db.objects.dictionary;e.objectId=t.handle,e.ownerId="0";const n={ACAD_LAYOUT:this._db.objects.layout,ACAD_GROUP:this._db.objects.group,ACAD_SORTENTS:this._db.objects.sortentsTable,ACAD_MLEADERSTYLE:this._db.objects.mleaderStyle,ACAD_MLINESTYLE:this._db.objects.mlineStyle,ACAD_SCALELIST:this._db.objects.scale,ISM_RASTER_IMAGE_DICT:this._db.objects.imageDefinition,MLIGHT_XRECORD:this._db.objects.xrecord},r=this.collectLoadedObjectsByHandle();for(const[s,a]of Object.entries(t.entries)){const o=n[s.toUpperCase()];if(!o)continue;o.objectId=a,o.ownerId=t.handle,e.setAt(s,o);const c=this._dictionaries.get(at(a));if(c)for(const[l,h]of Object.entries(c.entries)){const u=r.get(at(h));if(!u)continue;const d=at(u.objectId);let g=!1;for(const[,f]of o.entries())if(at(f.objectId)===d){g=!0;break}!o.getAt(l)&&!g&&o.setAt(l,u)}}}collectLoadedObjectsByHandle(){const t=new Map,e=n=>{const r=at(n.objectId);r&&t.set(r,n)};for(const[,n]of this._db.objects.layout.entries())e(n);for(const[,n]of this._db.objects.group.entries())e(n);for(const[,n]of this._db.objects.sortentsTable.entries())e(n);for(const[,n]of this._db.objects.imageDefinition.entries())e(n);for(const[,n]of this._db.objects.mleaderStyle.entries())e(n);for(const[,n]of this._db.objects.mlineStyle.entries())e(n);for(const[,n]of this._db.objects.layerFilter.entries())e(n);for(const[,n]of this._db.objects.layerIndex.entries())e(n);for(const[,n]of this._db.objects.xrecord.entries())e(n);for(const[,n]of this._db.objects.scale.entries())e(n);for(const[,n]of this._db.objects.dictionaryVar.entries())e(n);for(const[,n]of this._db.objects.objectContextData.entries())e(n);return t}materializeBufferedDictionaries(){if(this._dictionaries.size===0)return;const t=new Map;for(const a of this._db.getRootDictionaries()){const o=at(a.objectId);o&&(t.set(o,a),this._db.registerObjectHandle(a))}const e=new Map;for(const[a,o]of this._dictionaries){const c=this._db.getObjectById(a)??t.get(a);if(c instanceof K){e.set(a,c);continue}const l=new K(this._db);this._db.releaseObjectHandle(l),l.objectId=a,l.ownerId=o.ownerObjectId||"0",o.extensionDictionaryId&&(l.extensionDictionary=o.extensionDictionaryId),this._db.registerObjectHandle(l),e.set(a,l)}const n=this.collectLoadedObjectsByHandle();for(const[a,o]of e)n.set(a,o);for(const[a,o]of this._dictionaries){const c=e.get(a);if(c)for(const[l,h]of Object.entries(o.entries)){const u=n.get(at(h));if(!u||c.getAt(l))continue;const d=at(u.objectId);let g=!1;for(const[,f]of c.entries())if(at(f.objectId)===d){g=!0;break}if(!g)try{c.setAt(l,u)}catch{}}}let r;for(const a of this._dictionaries.values())if(!a.ownerObjectId||a.ownerObjectId==="0"){r=a;break}if(!(r!=null&&r.handle))return;const s=this._db.objects.dictionary;for(const[a,o]of Object.entries(r.entries)){if(s.getAt(a))continue;const c=n.get(at(o));if(c instanceof K)try{s.setAt(a,c)}catch{}}}finishCannoscale(){const e=this._db.objects.dictionary.getAt("AcDbVariableDictionary");if(!(e instanceof K))return;const n=e.getAt("CANNOSCALE");n instanceof Es&&n.value&&(this._db.cannoscale=n.value)}finishAnnoallvisible(){const e=this._db.objects.dictionary.getAt("AcDbVariableDictionary");if(!(e instanceof K))return;const n=e.getAt("ANNOALLVISIBLE");if(!(n instanceof Es)||n.value==null)return;const r=String(n.value).trim();this._db.annoallvisible=r!=="0"&&r.toLowerCase()!=="false"}readPersistDictionary(t){const e={handle:"",ownerObjectId:"",entries:{}};let n;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code);switch(s){case 5:e.handle=String(r.value);break;case 330:e.ownerObjectId=String(r.value);break;case 100:case 280:case 281:break;case 3:n=String(r.value);break;case 350:case 340:case 360:{const a=at(String(r.value));n?(e.entries[n]=a,n=void 0):s===360&&!e.extensionDictionaryId&&(e.extensionDictionaryId=a);break}}}return e.handle=at(e.handle),e.ownerObjectId=at(e.ownerObjectId),e.extensionDictionaryId&&(e.extensionDictionaryId=at(e.extensionDictionaryId)),e}finishLayerFilterTree(){if(this._dictionaries.size===0&&this._xrecords.size===0)return;const t=ap({dictionaries:this._dictionaries,xrecords:this._xrecords});t.root.getNestedFilters().length>0&&(this._db.layerFilters=t),this._dictionaries.clear(),this._xrecords.clear()}linkLayoutsToBlockTableRecords(){const t=this._db.tables.blockTable,e=ct.MODEL_SPACE_NAME.toUpperCase();for(const[,n]of this._db.objects.layout.entries()){if(n.layoutName==="Model"){const a=t.modelSpace;n.blockTableRecordId=a.objectId,a.layoutId=n.objectId;continue}const r=at(n.objectId);let s=!1;for(const a of t.newIterator())if(at(a.layoutId)===r){n.blockTableRecordId=a.objectId,s=!0;break}if(!s&&n.blockTableRecordId){const a=t.getIdAt(n.blockTableRecordId);a&&(a.layoutId=n.objectId)}else if(!s){for(const a of t.newIterator())if(a.isPaperSapce&&a.name.toUpperCase()!==e&&!a.layoutId){n.blockTableRecordId=a.objectId,a.layoutId=n.objectId;break}}}}}class xp{constructor(t,e={}){this._db=t,this._options=e,this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap=new Map,this._yieldGate=new qa(this._options.yieldBudgetMs??_r)}get unknownEntityCount(){return this._unknownEntityCount}get unknownObjectCount(){return this._unknownObjectCount}async read(t){for(this._unknownEntityCount=0,this._unknownObjectCount=0,this._attributeMap.clear(),t.database=this._db;!t.atEof;){const e=t.readItem();if(!e)break;if(Number(e.code)!==0)continue;const n=String(e.value).toUpperCase();if(n==="EOF")break;if(n==="SECTION"){const r=this.readSectionName(t);await this.readSection(t,r);continue}}return this.flushRemainingAttributes(),{unknownEntityCount:this._unknownEntityCount,unknownObjectCount:this._unknownObjectCount}}readSectionName(t){const e=t.readItem();return e&&Number(e.code)===2?String(e.value).toUpperCase():(e&&t.pushBackItem(e),"")}async readSection(t,e){switch(e){case"HEADER":np(t,this._db),await this.reportParseProgress(t);break;case"CLASSES":this.readClassesSection(t),await this.reportParseProgress(t);break;case"TABLES":this.readTablesSection(t),await this.reportParseProgress(t);break;case"BLOCKS":await this.readBlocksSection(t),await this.reportParseProgress(t);break;case"ENTITIES":await this.readEntitiesSection(t),await this.reportParseProgress(t);break;case"OBJECTS":{const n=new _p(this._db);n.read(t),this._unknownObjectCount+=n.unknownObjectCount}await this.reportParseProgress(t);break;case"ACDSDATA":this.applyAcdsDataToSolids(Qx(t)),await this.reportParseProgress(t);break;case"THUMBNAILIMAGE":this.readThumbnailImageSection(t),await this.reportParseProgress(t);break;default:this.skipUntilEndSec(t),await this.reportParseProgress(t);break}}applyAcdsDataToSolids(t){const e=Object.keys(t.byOwnerHandle);if(e.length===0)return;const n=new Map;for(const r of this._db.tables.blockTable.newIterator())for(const s of r.newIterator())s instanceof Tr&&n.set(Sc(s.objectId),s);for(const r of e){const s=t.byOwnerHandle[r];if(!s)continue;const a=n.get(Sc(r));a&&a.setSabBytes(s)}}readThumbnailImageSection(t){let e=0;const n=[];for(;!t.atEof;){const s=t.readItem();if(!s)break;if(Number(s.code)===0){if(String(s.value).toUpperCase()==="ENDSEC")break;t.pushBackItem(s);break}Number(s.code)===90?e=Number(s.value)||0:Number(s.code)===310&&(s.value instanceof Uint8Array?n.push(s.value):n.push(String(s.value)))}if(n.length===0)return;const r=Gr(n);!r||r.length===0||(this._db.thumbnailImage=e>0&&r.length>e?r.subarray(0,e):r)}readClassesSection(t){const e=[];for(;!t.atEof;){const n=t.peekItem();if(!n)break;if(Number(n.code)!==0){t.readItem();continue}const r=String(n.value).toUpperCase();if(r==="ENDSEC"){t.readItem();break}if(r==="CLASS"){t.readItem();const s=this.readClassRecord(t);(s.name||s.cppClassName)&&e.push(s);continue}t.readItem(),t.skipToEndOfObject()}e.length>0&&(this._db.classes=e)}readClassRecord(t){const e={name:"",cppClassName:"",appName:"",proxyFlag:0,instanceCount:0,wasProxy:!1,isEntity:!1};for(;!t.atEndOfObject&&!t.atEof;){const n=t.readItem();if(!n)break;switch(Number(n.code)){case 1:e.name=String(n.value);break;case 2:e.cppClassName=String(n.value);break;case 3:e.appName=String(n.value);break;case 90:e.proxyFlag=Number(n.value);break;case 91:e.instanceCount=Number(n.value);break;case 280:e.wasProxy=Number(n.value)!==0;break;case 281:e.isEntity=Number(n.value)!==0;break}}return e}readTablesSection(t){for(;!t.atEof;){const e=t.peekItem();if(!e)break;if(Number(e.code)!==0){t.readItem();continue}const n=String(e.value).toUpperCase();if(n==="ENDSEC"){t.readItem();break}if(n==="TABLE"){t.readItem();const r=this.readTableName(t);this.readTable(t,r);continue}t.readItem(),t.skipToEndOfObject()}this._db.ensureTextStyleDefaults()}readTableName(t){for(;!t.atEof;){const e=t.peekItem();if(!e)return"";const n=Number(e.code);if(n===0)return"";if(t.readItem(),n===2)return String(e.value).toUpperCase()}return""}readTable(t,e){switch(e){case"LAYER":this.readNamedTable(t,"LAYER",()=>new Wr,n=>{n.name&&this._db.tables.layerTable.add(n)});break;case"LTYPE":this.readNamedTable(t,"LTYPE",()=>new An,n=>{n.name&&this._db.tables.linetypeTable.add(n)});break;case"STYLE":this.readNamedTable(t,"STYLE",()=>new uo,n=>{this._db.tables.textStyleTable.add(n)});break;case"DIMSTYLE":this.readNamedTable(t,"DIMSTYLE",()=>new Qt,n=>{n.name&&this._db.tables.dimStyleTable.add(n)});break;case"VPORT":this.readNamedTable(t,"VPORT",()=>new Sn,n=>{n.name&&this._db.tables.viewportTable.add(n)});break;case"APPID":this.readNamedTable(t,"APPID",()=>new ia,n=>{n.name&&this._db.tables.appIdTable.add(n)});break;case"VIEW":this.readNamedTable(t,"VIEW",()=>new tp,n=>{n.name&&this._db.tables.viewTable.add(n)});break;case"UCS":this.readNamedTable(t,"UCS",()=>new Jf,n=>{n.name&&this._db.tables.ucsTable.add(n)});break;case"BLOCK_RECORD":this.readBlockRecordTable(t);break;default:this.skipUntilEndTab(t);break}}readNamedTable(t,e,n,r){for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const a=String(s.value).toUpperCase();if(a==="ENDTAB"){t.readItem();break}if(a==="ENDSEC")break;if(a===e){t.readItem();const o=n();o.dxfIn(t),r(o);continue}t.readItem(),t.skipToEndOfObject()}}readBlockRecordTable(t){let e=!1;for(;!t.atEof;){const n=t.peekItem();if(!n)break;if(Number(n.code)!==0){t.readItem();continue}const r=String(n.value).toUpperCase();if(r==="ENDTAB"){t.readItem();break}if(r==="ENDSEC")break;if(r==="BLOCK_RECORD"){t.readItem(),e||(this._db.tables.blockTable.removeAll(),e=!0);const s=new ct;s.dxfIn(t),s.name&&this._db.tables.blockTable.add(s);continue}t.readItem(),t.skipToEndOfObject()}}skipUntilEndTab(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDTAB")break}}async readBlocksSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let n=0;for(;!t.atEof;){const r=t.peekItem();if(!r)break;if(Number(r.code)!==0){t.readItem();continue}const s=String(r.value).toUpperCase();if(s==="ENDSEC"){t.readItem();break}if(s==="BLOCK"){t.readItem(),n=await this.readBlockDefinition(t,e,n);continue}t.readItem(),t.skipToEndOfObject()}}async readBlockDefinition(t,e,n){const r=this.readBlockBeginFields(t),s=this.ensureBlockTableRecord(r);for(;!t.atEof;){const a=t.peekItem();if(!a)break;if(Number(a.code)!==0){t.readItem();continue}const o=String(a.value).toUpperCase();if(o==="ENDBLK"){t.readItem(),t.skipToEndOfObject();break}if(o==="ENDSEC")break;if(t.readItem(),this.consumeSeqend(t,o)){n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t));continue}const c=Qc(t,o);c?this.shouldAcceptBlockEntity(s)&&this.acceptEntity(c,s):(this._unknownEntityCount+=1,t.skipToEndOfObject()),n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t))}return n}shouldAcceptBlockEntity(t){return!t.isModelSapce&&!t.isPaperSapce}consumeSeqend(t,e){return e!=="SEQEND"?!1:(t.skipToEndOfObject(),!0)}readBlockBeginFields(t){const e=new x;let n="",r=0,s="",a,o;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code);if(l===100)continue;const h=Number(c.value);switch(l){case 5:a=String(c.value);break;case 330:o=String(c.value);break;case 2:case 3:n||(n=String(c.value));break;case 70:r=h;break;case 10:e.x=h;break;case 20:e.y=h;break;case 30:e.z=h;break;case 1:s=String(c.value);break}}return{name:n,flags:r,origin:e,pathName:s,objectId:a,ownerId:o}}ensureBlockTableRecord(t){let e=t.name?this._db.tables.blockTable.getAt(t.name):void 0;e||(e=new ct,e.name=t.name||"*UNKNOWN",t.objectId&&(e.objectId=t.objectId),this._db.tables.blockTable.add(e)),e.origin.copy(t.origin);let n=ct.sanitizeImportedFlags(t.flags);return t.pathName&&(e.pathName=t.pathName,(n&(or.Xref|or.XrefOverlay))===0&&(n=n|or.Xref)),e.flags=n,e}async readEntitiesSection(t){const e=Math.max(1,this._options.entityBatchSize??200);let n=0;const r=this._db.tables.blockTable.modelSpace;for(;!t.atEof;){const s=t.peekItem();if(!s)break;if(Number(s.code)!==0){t.readItem();continue}const a=String(s.value).toUpperCase();if(a==="ENDSEC"){t.readItem();break}if(t.readItem(),this.consumeSeqend(t,a)){n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t));continue}const o=Qc(t,a);o?this.acceptEntity(o,this.resolveEntityOwner(o,r)):(this._unknownEntityCount+=1,t.skipToEndOfObject()),n+=1,n>=e&&(n=0,await this.yieldAndReportProgress(t))}}resolveEntityOwner(t,e){const n=t.getAttrWithoutException("ownerId");if(n){const r=this._db.tables.blockTable.getIdAt(n);if(r&&(r.isModelSapce||r.isPaperSapce))return r}if(t.dxfPaperSpace){const r=this._db.tables.blockTable.getAt(ct.PAPER_SPACE_NAME_PREFIX);if(r)return r}return e}acceptEntity(t,e){if(t instanceof Cr){this.linkOrDeferAttribute(t,e);return}if(e.appendEntity(t),t instanceof he){const n=this._attributeMap.get(t.objectId);if(n&&n.length>0){for(const r of n)t.appendAttributes(r);this._attributeMap.delete(t.objectId)}}}linkOrDeferAttribute(t,e){const n=t.getAttrWithoutException("ownerId");if(!n||n==="0")return;const r=e.getIdAt(n)??this._db.tables.blockTable.getEntityById(n);if(r instanceof he){r.appendAttributes(t);return}let s=this._attributeMap.get(n);s||(s=[],this._attributeMap.set(n,s)),s.push(t)}flushRemainingAttributes(){for(const[t,e]of this._attributeMap){const n=this._db.tables.blockTable.getEntityById(t);if(n instanceof he)for(const r of e)n.appendAttributes(r)}this._attributeMap.clear()}skipUntilEndSec(t){for(;!t.atEof;){const e=t.readItem();if(!e||Number(e.code)===0&&String(e.value).toUpperCase()==="ENDSEC")break}}async reportParseProgress(t){const{onProgress:e,totalBytes:n}=this._options;if(!e||!n||n<=0)return;const r=Math.min(1,Math.max(0,t.position().byteOffset/n));await e(r)}async yieldAndReportProgress(t){await this.reportParseProgress(t),await this._yieldGate.maybeYield(ji)}}const hs=1,Yo=18,us=20,ds=98;class wp extends Dl{constructor(t={}){super({useWorker:!1,...t})}async read(t,e,n={}){const{minimumChunkSize:r=10,progress:s,encoding:a}=n;this.progress=s;const o=async(l,h,u,d)=>{s&&await s(l,h,u,d)};await o(0,"START","START"),await o(hs,"PARSE","START"),await Ad(),e.beginEventBatch();let c=!0;try{const l=tn.fromBuffer(t,{database:e,encoding:a}),h=t.byteLength;let u=hs;const g=await new xp(e,{entityBatchSize:Math.max(1,r||200),yieldBudgetMs:_r,totalBytes:h,onProgress:async y=>{const b=Math.min(Yo-1,hs+Math.floor(y*(Yo-hs)));b<=u||(u=b,await o(b,"PARSE","IN-PROGRESS"))}}).read(l);await o(Yo,"PARSE","END",{unknownEntityCount:g.unknownEntityCount}),await o(us,"ENTITY","START");const f=Math.max(1,r||200);let p=us;const m=new qa(_r);await e.endEventBatchChunked(f,async(y,b)=>{const _=b<=0?ds:Math.min(ds,us+Math.floor(y/b*(ds-us)));_>p&&(p=_,await o(_,"ENTITY","IN-PROGRESS")),await m.maybeYield()}),c=!1,await o(ds,"ENTITY","END"),await o(100,"END","END")}catch(l){throw c&&e.endEventBatch(),l}}async parse(t){return{model:null,data:{unknownEntityCount:0}}}}var ur=(i=>(i.DXF="dxf",i.DWG="dwg",i))(ur||{});class Le{constructor(){this.events={registered:new wt,unregistered:new wt},this._converters=new Map,this.register("dxf",new wp)}static createInstance(){return Le._instance==null&&(Le._instance=new Le),this._instance}static get instance(){return Le._instance||(Le._instance=new Le),Le._instance}get fileTypes(){return this._converters.keys()}register(t,e){this._converters.set(t,e),this.events.registered.dispatch({fileType:t,converter:e})}get(t){return this._converters.get(t)}unregister(t){const e=this._converters.get(t);e&&(this._converters.delete(t),this.events.unregistered.dispatch({fileType:t,converter:e}))}}const kc=50,ow=J.DEFAULT_CIRCLE_SIDES,cw=1e3;function qr(i){var e;const t=vp((e=i==null?void 0:i.context)==null?void 0:e.database);return{circleSides:t,maxSegments:t}}function vp(i){if(i!=null&&typeof i=="object"){const t=i.drawCircleSides;if(typeof t=="number"&&Number.isFinite(t))return J.resolveCircleSides(t)}return J.DEFAULT_CIRCLE_SIDES}function lw(i){var n,r,s;if(i==null||typeof i!="object")return J.DEFAULT_CIRCLE_SIDES;const t=i.tables,e=(s=(r=(n=t==null?void 0:t.viewportTable)==null?void 0:n.getActiveVport)==null?void 0:r.call(n))==null?void 0:s.circleSides;return typeof e!="number"||!Number.isFinite(e)?J.DEFAULT_CIRCLE_SIDES:J.resolveCircleSides(e)}const jo=new M,di=class di extends Mt{constructor(){super(),this._thickness=0,this._normal=new A(0,0,1),this._elevation=0,this._geo=new ot}get dxfTypeName(){return"LWPOLYLINE"}get numberOfVertices(){return this._geo.numberOfVertices}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}addVertexAt(t,e,n=0,r=-1,s=-1){const a=r<0?void 0:r,o=s<0?void 0:s,c={x:e.x,y:e.y,bulge:n,startWidth:a,endWidth:o};this._geo.addVertexAt(t,c)}removeVertexAt(t){this._geo.removeVertexAt(t)}reset(t,e){this._geo.reset(t,e)}getPoint2dAt(t){return this._geo.getPointAt(t)}getPoint3dAt(t){const e=this.getPoint2dAt(t);return this.ocsPointToWcs(e.x,e.y)}get geometricExtents(){const t=this._geo.box;return t.isEmpty()?new H:new H().setFromPoints([this.ocsPointToWcs(t.min.x,t.min.y),this.ocsPointToWcs(t.max.x,t.min.y),this.ocsPointToWcs(t.max.x,t.max.y),this.ocsPointToWcs(t.min.x,t.max.y)])}ocsPointToWcs(t,e){return oe({x:t,y:e,z:this._elevation},this._normal)}subGetIntersectCurves(){return Nl(this._geo.vertices,this.closed,this._elevation,this._normal)}subGetGripPoints(){const t=new Array;for(let e=0;e<this.numberOfVertices;++e)t.push(this.getPoint3dAt(e));return this.shouldIncludeSegmentMidpointGrips()&&this.appendSegmentMidpointGrips(t),t}subMoveGripPointsAt(t,e){const n=this.numberOfVertices,r=this.shouldIncludeSegmentMidpointGrips(),s=r?this.getSegmentCount():0,a=qt(e,this._normal);return It(t,o=>{if(o<n){lr(this._geo.vertices,o,a);return}if(!r||o>=n+s)return;const c=o-n;lr(this._geo.vertices,c,a),lr(this._geo.vertices,(c+1)%n,a)}),this}shouldIncludeSegmentMidpointGrips(){return this.getGripsMode()>=2}getGripsMode(){try{const t=xt.instance().getVar(I.GRIPS,this.database);return typeof t=="number"?t:2}catch{return 2}}getSegmentCount(){const t=this.numberOfVertices;return t<2?0:this.closed?t:t-1}appendSegmentMidpointGrips(t){var a;const e=this._geo,n=this._elevation,r=this.getSegmentCount(),s=e.numberOfVertices;for(let o=0;o<r;o++){const c=[];Lr(e.getPointAt(o),e.getPointAt((o+1)%s),(a=e.vertices[o])==null?void 0:a.bulge,n,E.MidPoint,{x:0,y:0,z:0},c);for(const l of c)t.push(this.ocsPointToWcs(l.x,l.y))}}subGetOsnapPoints(t,e,n,r){var c;const s=this._geo,a=this._elevation,o=s.numberOfVertices;if(o!==0)switch(t){case E.EndPoint:for(let l=0;l<o;l++)r.push(this.getPoint3dAt(l));break;case E.MidPoint:case E.Nearest:case E.Perpendicular:case E.Tangent:{const l=this.closed?o:o-1,h=[];for(let u=0;u<l;u++){const d=[];Lr(s.getPointAt(u),s.getPointAt((u+1)%o),(c=s.vertices[u])==null?void 0:c.bulge,a,t,e,d);for(const g of d)h.push(this.ocsPointToWcs(g.x,g.y))}if(t===E.MidPoint)r.push(...h);else{const u=me(e,h);u&&r.push(u)}break}}}transformBy(t){const e=t.determinant()<0;let n=this._elevation;return this._geo.vertices.forEach(r=>{const s=new x(r.x,r.y,this._elevation).applyMatrix4(t);r.x=s.x,r.y=s.y,n=s.z,e&&r.bulge!=null&&(r.bulge=-r.bulge)}),this._elevation=n,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}get directBatchPrimitive(){return this.hasRenderableWidth()?null:"lineStrip"}subWorldDraw(t){const e=qr(t),n=this._geo.tessellate(e),r=this.createWidthProfile(e);if(r!=null){if(this.closed||Ap(Yl(r,!1))){const c=hw(r);if(c!=null){const l=t.subEntityTraits;return l.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.offsetRing(c.outer.map(h=>this.ocsPointToWcs(h.x,h.y)),c.inner.map(h=>this.ocsPointToWcs(h.x,h.y)))}}const o=uw(r,this.closed);if(o!=null){const c=t.subEntityTraits,l=c.fillType;c.fillType={solidFill:!0,patternAngle:0,definitionLines:[]};const h=o.map(d=>(this.mapAreaLoopsToWcs(d),t.area(d)));c.fillType=l;const u=r.map(d=>this.ocsPointToWcs(d.x,d.y));return this.closed&&u.length>=2&&u.push(u[0]),u.length>=2&&h.push(t.lines(u)),h.length===1?h[0]:t.group(h)}}const s=[];return n.forEach(a=>s.push(this.ocsPointToWcs(a.x,a.y))),t.lines(s)}mapAreaLoopsToWcs(t){if(!(this._normal.x===0&&this._normal.y===0&&this._normal.z===1)){for(const e of t.loops)if("vertices"in e)for(const n of e.vertices){const r=this.ocsPointToWcs(n.x,n.y);n.x=r.x,n.y=r.y}}}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyline"),t.writeInt32(90,this.numberOfVertices),t.writeInt16(70,this.closed?1:0);const e=this.resolveConstantWidth();e!=null&&t.writeDouble(43,e),t.writeDouble(38,this.elevation),this.thickness!==0&&t.writeDouble(39,this.thickness);const n=this._geo.vertices;for(let r=0;r<n.length;++r){const s=n[r];t.writePoint2d(10,this.getPoint2dAt(r)),e==null&&(s.startWidth!=null&&t.writeDouble(40,s.startWidth),s.endWidth!=null&&t.writeDouble(41,s.endWidth));const a=s.bulge??0;a!==0&&t.writeDouble(42,a),s.identifier!=null&&t.writeInt32(91,s.identifier)}return t.writeVector3d(210,this.normal),this}dxfOutAs2dPolyline(t,e=!1){var r,s,a;t.writeHandle(5,this.objectId),t.writeObjectId(330,this.ownerId),t.writeObjectId(360,this.extensionDictionary),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeLineWeight(370,this.lineWeight),t.writeTransparency(this.transparency);const n=(r=this.database)==null?void 0:r.tables.blockTable.getIdAt(this.ownerId);n!=null&&n.isPaperSapce&&t.writeInt16(67,1),t.writeSubclassMarker("AcDb2dPolyline"),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,this.closed?1:0),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation),e&&this.dxfOutXData(t);for(let o=0;o<this.numberOfVertices;++o){const c=this._geo.vertices[o];t.writeStart("VERTEX"),t.writeHandle(5,(s=this.database)==null?void 0:s.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPoint2dAt(o).x,y:this.getPoint2dAt(o).y,z:this.elevation});const l=(c==null?void 0:c.bulge)??0;l!==0&&t.writeDouble(42,l),t.writeInt16(70,0)}return t.writeStart("SEQEND"),t.writeHandle(5,(a=this.database)==null?void 0:a.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPolyline"),this.reset(!1);let e=!1,n=this.elevation,r=this.thickness,s=this.normal.x,a=this.normal.y,o=this.normal.z,c=-1,l=0,h=0,u=!1,d=0,g=-1,f=-1,p,m=0;const y=()=>{if(!u)return;const b=g<0?c:g,_=f<0?c:f;if(jo.x=l,jo.y=h,this.addVertexAt(m++,jo,d,b,_),p!=null){const w=this._geo.vertices[m-1];w&&(w.identifier=p)}u=!1,d=0,g=-1,f=-1,p=void 0};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 90:break;case 70:e=(w&1)!==0;break;case 43:c=w;break;case 38:n=w;break;case 39:r=w;break;case 10:y(),l=w,h=0,u=!0;break;case 20:h=w;break;case 40:g=w;break;case 41:f=w;break;case 42:d=w;break;case 91:p=w;break;case 210:s=w;break;case 220:a=w;break;case 230:o=w;break}}return y(),this.closed=e,this.elevation=n,this.thickness=r,s*s+a*a+o*o>0&&this.normal.set(s,a,o).normalize(),this}resolveConstantWidth(){const t=this._geo.vertices;if(t.length===0)return;let e;for(const n of t){const r=n.startWidth,s=n.endWidth;if(r==null&&s==null){if(e!=null&&e!==0)return;e=e??0;continue}const a=r??0;if(a!==(s??0))return;if(e==null)e=a;else if(e!==a)return}return e!=null&&e!==0?e:void 0}hasRenderableWidth(){const t=this._geo.vertices;for(let e=0;e<t.length;e++){const n=Math.max(0,t[e].startWidth??0),r=Math.max(0,t[e].endWidth??0);if(n>kt||r>kt)return!0}return!1}createWidthProfile(t){const e=this._geo.vertices,n=e.length;if(n<2)return null;const r=this.closed?n:n-1,s=[];let a=!1;for(let o=0;o<r;o++){const c=e[o],l=e[(o+1)%n],h=Math.max(0,c.startWidth??0),u=Math.max(0,c.endWidth??0);(h>kt||u>kt)&&(a=!0);const d=this.sampleSegment(c,l,t),g=d.length-1;for(let f=0;f<=g;f++){if(f===0&&s.length>0||this.closed&&o===r-1&&f===g)continue;const p=g>0?f/g:0;s.push({x:d[f].x,y:d[f].y,width:bw(h,u,p)})}}return a&&s.length>=2?s:null}sampleSegment(t,e,n){if(t.bulge&&Math.abs(t.bulge)>kt){const s=new J(t,e,t.bulge).tessellate(n);if(s.length>1)return s.map(a=>new M(a.x,a.y))}return[new M(t.x,t.y),new M(e.x,e.y)]}static from2dPoints(t,e){const n=new di;return t.forEach((r,s)=>n.addVertexAt(s,r)),n.closed=e,n}static fromGePolyline(t){const e=new di;return t.vertices.forEach((n,r)=>{e.addVertexAt(r,new M(n.x,n.y),n.bulge??0)}),e.closed=t.closed,e}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.numberOfVertices;let n=1/0,r=1;const s=this.closed?e:e-1;for(let a=0;a<s;a++){const o=this.getPoint2dAt(a),c=this.getPoint2dAt((a+1)%e),l=c.x-o.x,h=c.y-o.y,u=l*l+h*h;if(u===0)continue;const d=Math.max(0,Math.min(1,((t.x-o.x)*l+(t.y-o.y)*h)/u)),g=(t.x-o.x-d*l)**2+(t.y-o.y-d*h)**2;g<n&&(n=g,r=l*(t.y-o.y)-h*(t.x-o.x)>=0?1:-1)}return r}createOffsetCurve(t){const e=this._geo.offset(t);return e.length===0?null:di.fromGePolyline(e[0])}};di.typeName="Polyline";let Vt=di;function mo(i,t,e){const n=Qy(i,t,e);return n?Vt.fromGePolyline(n):null}const kt=1e-6,zu=4;function hw(i){const t=Yl(i,!0);if(t.length<2)return null;const{left:e,right:n}=zl(t,!0),r=Fi(e),s=Fi(n);if(!Hn(r)||!Hn(s)||r.length!==s.length)return null;const a=Math.abs(Un(r)),o=Math.abs(Un(s)),[c,l]=a>=o?[r,s]:[s,r];return{outer:c,inner:l}}function uw(i,t){if(i.length<2)return null;if(t){const r=Yu(i,!0);return r?[r]:null}const e=dw(i),n=[];for(const r of e){const s=Yu(r,!1);s!=null&&n.push(s)}return n.length>0?n:null}function Yu(i,t){const e=Yl(i,t);if(e.length<2)return null;const{left:n,right:r}=zl(e,t);if(Vu(n)<2||Vu(r)<2)return null;const s=new Ye;if(t){const a=Fi(n),o=Fi(r),c=Hn(a),l=Hn(o);if(!c&&!l)return null;if(!c||!l)return s.add(new ot(c?a:o,!0)),s;const h=Math.abs(Un(a)),u=Math.abs(Un(o)),[d,g]=h>=u?[a,o]:[o,a];return s.add(new ot(d,!0)),s.add(new ot(g,!0)),s}return Ap(e)&&fw(s,e)||mw(s,n,r)?s:null}function dw(i){if(i.length<2)return[i];const t=[];let e=0;const n=new Map;for(let s=0;s<i.length;s++){const a=ju(i[s]),o=n.get(a);if(o!=null&&s-o>1){const c=i.slice(e,s+1);if(c.length>=2&&t.push(c),o===e&&s===i.length-1)return t.length>0?t:[i];e=o,n.clear();for(let l=e;l<=s;l++)n.set(ju(i[l]),l);continue}n.set(a,s)}const r=i.slice(e);return r.length>=2&&t.push(r),t.length>0?t:[i]}function ju(i){return`${i.x.toFixed(4)}:${i.y.toFixed(4)}`}function gw(i,t){const e=Math.max(i,t),n=Math.min(i,t);return e<=kt?!1:e-n>kt}function Ap(i){if(i.length<3)return!1;const t=i[0],e=i[i.length-1],n=Math.hypot(e.x-t.x,e.y-t.y);if(n<=kt)return!0;const r=Math.max(...i.map(s=>s.width));return r<=kt?!1:n<=r*4}function fw(i,t){const{left:e,right:n}=zl(t,!0),r=Fi(e),s=Fi(n);if(!Hn(r)||!Hn(s))return!1;const a=Math.abs(Un(r)),o=Math.abs(Un(s));if(!gw(a,o))return!1;const[c,l]=a>=o?[r,s]:[s,r];return i.add(new ot(c,!0)),i.add(new ot(l,!0)),!0}function zl(i,t){const e=new Array(i.length),n=new Array(i.length);for(let r=0;r<i.length;r++){const s=i[r],a=Math.max(0,s.width)/2;if(a<=kt){e[r]={x:s.x,y:s.y},n[r]={x:s.x,y:s.y};continue}const o=yw(i,r,t);if(o==null){e[r]=null,n[r]=null;continue}e[r]={x:s.x+o.x*a,y:s.y+o.y*a},n[r]={x:s.x-o.x*a,y:s.y-o.y*a}}return{left:e,right:n}}function pw(i,t,e,n,r){const s=[t,e,n,r];return Hn(s)?(i.add(new ot(s,!0)),!0):!1}function mw(i,t,e){let n=!1;for(let r=0;r<t.length-1;r++){const s=t[r],a=t[r+1],o=e[r],c=e[r+1];s==null||a==null||o==null||c==null||pw(i,s,a,c,o)&&(n=!0)}return n}function Vu(i){return i.reduce((t,e)=>e==null?t:t+1,0)}function Fi(i){return i.filter(t=>t!=null)}function Yl(i,t){const e=[];if(i.forEach(n=>{const r=e[e.length-1];(!r||Math.abs(r.x-n.x)>kt||Math.abs(r.y-n.y)>kt||Math.abs(r.width-n.width)>kt)&&e.push(n)}),t&&e.length>1){const n=e[0],r=e[e.length-1];Math.abs(n.x-r.x)<=kt&&Math.abs(n.y-r.y)<=kt&&e.pop()}return e}function yw(i,t,e){const n=i.length,r=i[t],s=i[(t-1+n)%n],a=i[(t+1)%n];let o=Uu(r.x-s.x,r.y-s.y),c=Uu(a.x-r.x,a.y-r.y);if(e||(t===0&&(o=c),t===n-1&&(c=o)),o==null&&c==null)return null;if(o==null)return gs(c);if(c==null)return gs(o);const l=gs(o),h=gs(c),u=l.x+h.x,d=l.y+h.y,g=Math.hypot(u,d);if(g<=kt)return h;const f={x:u/g,y:d/g},p=Math.abs(f.x*h.x+f.y*h.y),m=p<=kt?zu:Math.min(1/p,zu);return{x:f.x*m,y:f.y*m}}function Uu(i,t){const e=Math.hypot(i,t);return e<=kt?null:{x:i/e,y:t/e}}function gs(i){return{x:-i.y,y:i.x}}function Un(i){let t=0;const e=i.length;for(let n=0;n<e;n++){const r=i[n],s=i[(n+1)%e];t+=r.x*s.y-s.x*r.y}return t/2}function Hn(i){return i.length>=3&&Math.abs(Un(i))>kt}function bw(i,t,e){return i+(t-i)*e}const _w={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:23},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.275,dashes:[.2,-.075],sourceLine:24}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:26}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:28},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:29}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:31},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:32}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:34},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:35},{angle:45,originX:.353553391,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:36},{angle:45,originX:.530330086,originY:0,deltaX:0,deltaY:.75,dashes:[],sourceLine:37}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:39},{angle:45,originX:.176776695,originY:0,deltaX:0,deltaY:.25,dashes:[.3125,-.0625,0,-.0625],sourceLine:40}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:.21875,deltaY:.125,dashes:[.3125,-.0625,0,-.0625],sourceLine:42}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:45}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:47},{angle:135,originX:0,originY:0,deltaX:.25,deltaY:.125,dashes:[.3125,-.1875],sourceLine:48}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:54},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[8,-8],sourceLine:55}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:57},{angle:0,originX:-8,originY:.375,deltaX:8,deltaY:8,dashes:[15.625,-.375],sourceLine:58},{angle:90,originX:0,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:59},{angle:90,originX:-.375,originY:0,deltaX:8,deltaY:8,dashes:[-8.375,7.625],sourceLine:60}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[],sourceLine:62},{angle:90,originX:0,originY:0,deltaX:8,deltaY:4,dashes:[8,-8],sourceLine:63}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:65},{angle:0,originX:0,originY:2.25,deltaX:0,deltaY:5.334,dashes:[7.625,-.375],sourceLine:66},{angle:0,originX:2,originY:2.667,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:67},{angle:0,originX:2,originY:4.917,deltaX:0,deltaY:5.334,dashes:[3.625,-.375],sourceLine:68},{angle:90,originX:0,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:69},{angle:90,originX:-.375,originY:0,deltaX:0,deltaY:8,dashes:[2.25,-3.084],sourceLine:70},{angle:90,originX:2,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:71},{angle:90,originX:1.625,originY:2.667,deltaX:0,deltaY:4,dashes:[2.25,-3.084],sourceLine:72}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:2.667,dashes:[],sourceLine:74},{angle:90,originX:0,originY:0,deltaX:2.667,deltaY:4,dashes:[2.667,-2.667],sourceLine:75}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:77},{angle:355,originX:0,originY:0,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:78},{angle:100.45144446,originX:.59771681,originY:-.05229344,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.63740192,-7.01142112],sourceLine:79},{angle:46.1842,originX:0,originY:2,deltaX:6.19462554,deltaY:-8.84684596,dashes:[1.125,-12.375],sourceLine:80},{angle:96.63563549,originX:.88936745,originY:1.86206693,deltaX:8.59588239,deltaY:-10.40964966,dashes:[.95610342,-10.5171376],sourceLine:81},{angle:351.18416399,originX:0,originY:2,deltaX:7.74327494,deltaY:11.05855746,dashes:[.9,-9.90000001],sourceLine:82},{angle:21,originX:1,originY:1.5,deltaX:4.12975034,deltaY:-5.89789472,dashes:[.75,-8.25],sourceLine:83},{angle:326,originX:1,originY:1.5,deltaX:-2.03781207,deltaY:7.3723684,dashes:[.6,-6.6],sourceLine:84},{angle:71.45144474,originX:1.49742254,originY:1.16448426,deltaX:5.7305871,deltaY:-6.9397673,dashes:[.6374019,-7.01142112],sourceLine:85},{angle:37.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-6.52,0,-6.7,0,-6.625],sourceLine:86},{angle:7.5,originX:0,originY:0,deltaX:3.123,deltaY:3.567,dashes:[0,-3.82,0,-6.37,0,-2.525],sourceLine:87},{angle:-32.5,originX:-2.23,originY:0,deltaX:4.6234,deltaY:2.678,dashes:[0,-2.5,0,-7.8,0,-10.35],sourceLine:88},{angle:-42.5,originX:-3.23,originY:0,deltaX:3.6234,deltaY:4.678,dashes:[0,-3.25,0,-5.18,0,-7.35],sourceLine:89}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:4,deltaY:4,dashes:[12,-4],sourceLine:91},{angle:135,originX:2.828427125,originY:2.828427125,deltaX:4,deltaY:-4,dashes:[12,-4],sourceLine:92}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:94},{angle:90,originX:2,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:95},{angle:90,originX:4,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:96},{angle:90,originX:6,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:97},{angle:90,originX:8,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:98},{angle:90,originX:10,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:99},{angle:90,originX:12,originY:0,deltaX:12,deltaY:12,dashes:[12,-12],sourceLine:100},{angle:0,originX:0,originY:12,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:101},{angle:0,originX:0,originY:14,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:102},{angle:0,originX:0,originY:16,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:103},{angle:0,originX:0,originY:18,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:104},{angle:0,originX:0,originY:20,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:105},{angle:0,originX:0,originY:22,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:106},{angle:0,originX:0,originY:24,deltaX:12,deltaY:-12,dashes:[12,-12],sourceLine:107}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:2.2,deltaY:1,dashes:[15,-2,5,-1],sourceLine:109},{angle:0,originX:1.33,originY:.5,deltaX:-1,deltaY:1.33,dashes:[3,-.33,6,-.75],sourceLine:110},{angle:0,originX:.5,originY:.85,deltaX:5.2,deltaY:.67,dashes:[8,-1.4,4,-1],sourceLine:111}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:25.5,deltaY:12,dashes:[6,-5,7,-3,9,-4],sourceLine:113},{angle:0,originX:6,originY:.5,deltaX:25.5,deltaY:12,dashes:[5,-19,4,-6],sourceLine:114},{angle:0,originX:18,originY:-.75,deltaX:25.5,deltaY:12,dashes:[3,-31],sourceLine:115},{angle:90,originX:0,originY:0,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:116},{angle:90,originX:6,originY:0,deltaX:12,deltaY:8.5,dashes:[11.25,-36.75],sourceLine:117},{angle:90,originX:11,originY:0,deltaX:12,deltaY:8.5,dashes:[10.5,-37.5],sourceLine:118},{angle:90,originX:18,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:119},{angle:90,originX:21,originY:-.75,deltaX:12,deltaY:8.5,dashes:[11.5,-36.5],sourceLine:120},{angle:90,originX:30,originY:0,deltaX:12,deltaY:8.5,dashes:[11,-37],sourceLine:121}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:1.123,deltaY:1.567,dashes:[0,-1.52,0,-1.7,0,-1.625],sourceLine:123},{angle:7.5,originX:0,originY:0,deltaX:2.123,deltaY:2.567,dashes:[0,-.82,0,-1.37,0,-.525],sourceLine:124},{angle:-32.5,originX:-1.23,originY:0,deltaX:2.6234,deltaY:1.678,dashes:[0,-.5,0,-1.8,0,-2.35],sourceLine:125},{angle:-42.5,originX:-1.23,originY:0,deltaX:1.6234,deltaY:2.678,dashes:[0,-.25,0,-1.18,0,-1.35],sourceLine:126}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:128},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:129},{angle:0,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:130},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:1,dashes:[-.25,.25],sourceLine:131},{angle:0,originX:0,originY:.5,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:132},{angle:0,originX:0,originY:.75,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:133},{angle:90,originX:.5,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:134},{angle:90,originX:.75,originY:0,deltaX:0,deltaY:1,dashes:[.25,-.25],sourceLine:135}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:137},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.0625],sourceLine:138}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:140},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.5,dashes:[.25,-.25],sourceLine:141},{angle:90,originX:.25,originY:0,deltaX:0,deltaY:.5,dashes:[-.25,.25],sourceLine:142}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.33,dashes:[],sourceLine:144},{angle:90,originX:.9,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:145},{angle:90,originX:.8,originY:0,deltaX:.33,deltaY:.5,dashes:[.33,-.33],sourceLine:146},{angle:0,originX:.9,originY:.055,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:147},{angle:0,originX:.9,originY:.11,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:148},{angle:0,originX:.9,originY:.165,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:149},{angle:0,originX:.9,originY:.22,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:150},{angle:0,originX:.9,originY:.275,deltaX:.5,deltaY:.33,dashes:[-.9,.1],sourceLine:151}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.1875,dashes:[],sourceLine:153},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.1875,dashes:[],sourceLine:154},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.1875,dashes:[],sourceLine:155},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.1875,dashes:[.1875,-.125],sourceLine:156}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:158},{angle:135,originX:.0625,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:159},{angle:135,originX:.09375,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:160},{angle:135,originX:.125,originY:-.0625,deltaX:0,deltaY:.35355339,dashes:[.176776696,-.176776696],sourceLine:161}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:163},{angle:90,originX:.0625,originY:-.0625,deltaX:.25,deltaY:.25,dashes:[.125,-.375],sourceLine:164}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:166}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:168},{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[.3535533905932738,-.7071067811865476],sourceLine:169}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.03125,deltaY:.0625,dashes:[0,-.0625],sourceLine:171}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:173},{angle:0,originX:0,originY:.09375,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:174},{angle:0,originX:0,originY:.1875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:175},{angle:90,originX:.03125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:176},{angle:90,originX:.125,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:177},{angle:90,originX:.21875,originY:.21875,deltaX:.25,deltaY:.25,dashes:[.25,-.25],sourceLine:178}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:180},{angle:180,originX:0,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:181},{angle:300,originX:0,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[1.1,-.1],sourceLine:182},{angle:60,originX:.1,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:183},{angle:300,originX:.1,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:184},{angle:60,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:185},{angle:180,originX:-.05,originY:.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:186},{angle:300,originX:-.05,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:187},{angle:180,originX:-.05,originY:-.08660254,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:188},{angle:60,originX:-.4,originY:0,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:189},{angle:300,originX:-.4,originY:0,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:190},{angle:60,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:191},{angle:180,originX:.2,originY:-.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:192},{angle:300,originX:.2,originY:.346410161,deltaX:.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:193},{angle:180,originX:.2,originY:.346410161,deltaX:-.6,deltaY:1.039230484,dashes:[.2,-1],sourceLine:194},{angle:0,originX:.2,originY:.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:195},{angle:0,originX:.2,originY:-.173205081,deltaX:-.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:196},{angle:120,originX:.05,originY:.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:197},{angle:120,originX:-.25,originY:.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:198},{angle:240,originX:-.25,originY:-.08660254,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:199},{angle:240,originX:.05,originY:-.259807621,deltaX:.6,deltaY:1.039230484,dashes:[.7,-.5],sourceLine:200}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[.25,-.25],sourceLine:202},{angle:45,originX:.25,originY:0,deltaX:.176776695296,deltaY:.176776695296,dashes:[.0625,-.2285533906,.0625,-.353553390593],sourceLine:203}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:205},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:206},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:207}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:209},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:210},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:211}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:213},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:214},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:215}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:.707106781,deltaY:.707106781,dashes:[.1875,-1.226713563],sourceLine:217},{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:218},{angle:135,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[.1875,-.8125],sourceLine:219}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.03125,dashes:[],sourceLine:221},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:222}]},{name:"GRAVEL",description:"",lines:[{angle:228.012787504,originX:.72,originY:1,deltaX:12.0413651692039,deltaY:.0743294146632,dashes:[.134536,-13.3190880470737],sourceLine:224},{angle:184.969740728,originX:.63,originY:.9,deltaX:-12.0415166747131,deltaY:.0433148081592,dashes:[.230868,-22.85592476123],sourceLine:225},{angle:132.510447078,originX:.4,originY:.88,deltaX:-14.8659418273816,deltaY:.061429511683,dashes:[.162788,-16.1160325960997],sourceLine:226},{angle:267.273689006,originX:.01,originY:.63,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:227},{angle:292.833654178,originX:0,originY:.42,deltaX:-12.9999095019474,deltaY:.048507125026,dashes:[.206155,-20.4093731280883],sourceLine:228},{angle:357.273689006,originX:.08,originY:.23,deltaX:-20.0249279039043,deltaY:.0475651493827,dashes:[.210238,-20.813558041629],sourceLine:229},{angle:37.6942404667,originX:.29,originY:.22,deltaX:-16.4011800288558,deltaY:.0359675000664,dashes:[.278029,-27.524848548916],sourceLine:230},{angle:72.2553283749,originX:.51,originY:.39,deltaX:23.0867613281116,deltaY:.0380969659053,dashes:[.262488,-25.9863214968134],sourceLine:231},{angle:121.429565615,originX:.59,originY:.64,deltaX:15.2642639131074,deltaY:.047404546271,dashes:[.21095,-20.884073109729],sourceLine:232},{angle:175.236358309,originX:.48,originY:.82,deltaX:-11.0450488205478,deltaY:.083045479801,dashes:[.240832,-11.8007625787923],sourceLine:233},{angle:222.397437798,originX:.24,originY:.84,deltaX:16.2787889313724,deltaY:.0321080648114,dashes:[.311448,-30.8333750047949],sourceLine:234},{angle:138.814074834,originX:1,originY:.62,deltaX:9.2190645101588,deltaY:.0940720868851,dashes:[.106301,-10.5238448127347],sourceLine:235},{angle:171.46923439,originX:.92,originY:.69,deltaX:-13.1528534931484,deltaY:.0494468176315,dashes:[.202237,-20.021511416157],sourceLine:236},{angle:225,originX:.72,originY:.72,deltaX:.7071067811865,deltaY:.7071067811865,dashes:[.141421,-1.2727925623731],sourceLine:237},{angle:203.198590514,originX:.65,originY:.84,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.076158,-7.5396151058639],sourceLine:238},{angle:291.801409486,originX:.58,originY:.81,deltaX:-3.156820749011,deltaY:.185695338158,dashes:[.107703,-5.2774618071345],sourceLine:239},{angle:30.9637565321,originX:.62,originY:.71,deltaX:3.6014702879928,deltaY:.1714985851408,dashes:[.174929,-5.6560228948453],sourceLine:240},{angle:161.565051177,originX:.77,originY:.8,deltaX:-2.2135943621183,deltaY:.3162277660138,dashes:[.126491,-3.0357866601684],sourceLine:241},{angle:16.389540334,originX:0,originY:.81,deltaX:10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.5428451466694],sourceLine:242},{angle:70.3461759419,originX:.17,originY:.86,deltaX:-11.7045066155395,deltaY:.0672672793901,dashes:[.148661,-14.717407747319],sourceLine:243},{angle:293.198590514,originX:.77,originY:1,deltaX:-5.3835637472478,deltaY:.1313064328928,dashes:[.152315,-7.4634581058639],sourceLine:244},{angle:343.610459666,originX:.83,originY:.86,deltaX:-10.4401539876873,deltaY:.0564332648047,dashes:[.1772,-17.542845146669],sourceLine:245},{angle:339.44395478,originX:0,originY:.19,deltaX:-5.3838927710229,deltaY:.117041147157,dashes:[.17088,-8.3731237453175],sourceLine:246},{angle:294.775140569,originX:.16,originY:.13,deltaX:-12.0828441168135,deltaY:.0698430296124,dashes:[.143178,-14.174643063276],sourceLine:247},{angle:66.8014094864,originX:.78,originY:0,deltaX:5.3835637472487,deltaY:.1313064328552,dashes:[.152315,-7.4634581058639],sourceLine:248},{angle:17.3540246363,originX:.84,originY:.14,deltaX:-13.6013396869991,deltaY:.0596549986364,dashes:[.167631,-16.59542361424],sourceLine:249},{angle:69.4439547804,originX:.29,originY:0,deltaX:-5.383892771022,deltaY:.1170411471946,dashes:[.08544,-8.4585637453175],sourceLine:250},{angle:101.309932474,originX:.72,originY:0,deltaX:4.1184388379018,deltaY:.1961161351396,dashes:[.05099,-5.0480295135928],sourceLine:251},{angle:165.963756532,originX:.71,originY:.05,deltaX:-3.1529631254726,deltaY:.2425356250323,dashes:[.206155,-3.9169506256177],sourceLine:252},{angle:186.009005957,originX:.51,originY:.1,deltaX:-10.0497393137326,deltaY:.0523423921723,dashes:[.19105,-18.9139231745428],sourceLine:253},{angle:303.690067526,originX:.62,originY:.62,deltaX:-2.2188007849008,deltaY:.2773500981134,dashes:[.144222,-3.461329275464],sourceLine:254},{angle:353.157226587,originX:.7,originY:.5,deltaX:17.1171966955143,deltaY:.0397150736497,dashes:[.251794,-24.9275626240283],sourceLine:255},{angle:60.9453959009,originX:.95,originY:.47,deltaX:-8.0616726575653,deltaY:.0971285862325,dashes:[.102956,-10.192674140987],sourceLine:256},{angle:90,originX:1,originY:.56,deltaX:1,deltaY:1,dashes:[.06,-.94],sourceLine:257},{angle:120.256437164,originX:.49,originY:.13,deltaX:-8.0619364083848,deltaY:.0719815751411,dashes:[.138924,-13.7535199894498],sourceLine:258},{angle:48.0127875042,originX:.42,originY:.25,deltaX:12.0413651692041,deltaY:.0743294146212,dashes:[.269072,-13.1845520470737],sourceLine:259},{angle:0,originX:.6,originY:.45,deltaX:1,deltaY:1,dashes:[.26,-.74],sourceLine:260},{angle:325.304846469,originX:.86,originY:.45,deltaX:12.2063917682497,deltaY:-.063245553253,dashes:[.158114,-15.653274300842],sourceLine:261},{angle:254.054604099,originX:.99,originY:.36,deltaX:4.1208169184605,deltaY:.1373605639542,dashes:[.145602,-7.1345078892805],sourceLine:262},{angle:207.645975364,originX:.95,originY:.22,deltaX:21.4708691170287,deltaY:.0421824539631,dashes:[.237065,-23.4694741822594],sourceLine:263},{angle:175.42607874,originX:.74,originY:.11,deltaX:13.0383438432524,deltaY:.039872611164,dashes:[.250799,-24.8290734079689],sourceLine:264}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:266},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:267},{angle:60,originX:.125,originY:0,deltaX:0,deltaY:.21650635094610965,dashes:[.125,-.25],sourceLine:268}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:270},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[.125,-.25],sourceLine:271},{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.10825317547305482,dashes:[-.25,.125],sourceLine:272}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.25,deltaY:.0625,dashes:[1,-.5],sourceLine:274},{angle:90,originX:0,originY:0,deltaX:-.25,deltaY:.0625,dashes:[1,-.5],sourceLine:275}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.375,dashes:[],sourceLine:277},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:278},{angle:0,originX:0,originY:.25,deltaX:0,deltaY:.375,dashes:[.125,-.125],sourceLine:279}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:292}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:294}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:296}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:298}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:300},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:301}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:303}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:305}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:307}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:309}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:311}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:313}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:315},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:316}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:318},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:319}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:321},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:322}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:327}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.25,dashes:[.25,-.25,0,-.25,0,-.25],sourceLine:329}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:331},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:332}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:334},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:335},{angle:120,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:336}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:338},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:339},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:340}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:342},{angle:0,originX:0,originY:.03125,deltaX:0,deltaY:.25,dashes:[],sourceLine:343},{angle:0,originX:0,originY:.0625,deltaX:0,deltaY:.25,dashes:[],sourceLine:344},{angle:0,originX:0,originY:.15625,deltaX:0,deltaY:.25,dashes:[],sourceLine:345}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.09375,dashes:[],sourceLine:347},{angle:45,originX:.066291261,originY:0,deltaX:0,deltaY:.09375,dashes:[0,-.09375],sourceLine:348}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:350},{angle:90,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[.125,-.125],sourceLine:351}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:353},{angle:60,originX:0,originY:0,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:354},{angle:120,originX:.0625,originY:.108253176,deltaX:0,deltaY:.216506351,dashes:[.125,-.125],sourceLine:355}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.125,dashes:[],sourceLine:357},{angle:45,originX:0,originY:.0625,deltaX:0,deltaY:.125,dashes:[],sourceLine:358}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.125,-.875],sourceLine:360},{angle:90,originX:.0625,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.0625,-1.669550806],sourceLine:361},{angle:90,originX:.078125,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:362},{angle:90,originX:.046875,originY:0,deltaX:.866025403,deltaY:.5,dashes:[.05,-1.682050806],sourceLine:363},{angle:60,originX:.09375,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:364},{angle:120,originX:.03125,originY:0,deltaX:.5,deltaY:.866025403,dashes:[.04,-.96],sourceLine:365}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.25,dashes:[],sourceLine:367},{angle:0,originX:0,originY:.125,deltaX:0,deltaY:.25,dashes:[.125,-.125],sourceLine:368}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:370},{angle:120,originX:0,originY:0,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:371},{angle:0,originX:-.09375,originY:.162379763,deltaX:.1875,deltaY:.324759526,dashes:[.1875,-.1875],sourceLine:372}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:374},{angle:90,originX:.125,originY:0,deltaX:.125,deltaY:.125,dashes:[.125,-.125],sourceLine:375}]}],issues:[]},Sp={patterns:[{name:"SOLID",description:"",lines:[]},{name:"ANGLE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:20},{angle:90,originX:0,originY:0,deltaX:0,deltaY:6.985,dashes:[5.08,-1.905],sourceLine:21}]},{name:"ANSI31",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:23}]},{name:"ANSI32",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:25},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:26}]},{name:"ANSI33",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:28},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:29}]},{name:"ANSI34",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:31},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:32},{angle:45,originX:8.98026,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:33},{angle:45,originX:13.4704,originY:0,deltaX:0,deltaY:19.05,dashes:[],sourceLine:34}]},{name:"ANSI35",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:36},{angle:45,originX:4.49013,originY:0,deltaX:0,deltaY:6.35,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:37}]},{name:"ANSI36",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:5.55625,deltaY:3.175,dashes:[7.9375,-1.5875,0,-1.5875],sourceLine:39}]},{name:"ANSI37",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:41},{angle:135,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:42}]},{name:"ANSI38",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:44},{angle:135,originX:0,originY:0,deltaX:6.35,deltaY:3.175,dashes:[7.9375,-4.7625],sourceLine:45}]},{name:"AR-B816",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:47},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[203.2,-203.2],sourceLine:48}]},{name:"AR-B816C",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:50},{angle:0,originX:-203.2,originY:9.525,deltaX:203.2,deltaY:203.2,dashes:[396.875,-9.525],sourceLine:51},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:52},{angle:90,originX:-9.525,originY:0,deltaX:203.2,deltaY:203.2,dashes:[-212.725,193.675],sourceLine:53}]},{name:"AR-B88",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[],sourceLine:55},{angle:90,originX:0,originY:0,deltaX:203.2,deltaY:101.6,dashes:[203.2,-203.2],sourceLine:56}]},{name:"AR-BRELM",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:58},{angle:0,originX:0,originY:57.15,deltaX:0,deltaY:135.484,dashes:[193.675,-9.525],sourceLine:59},{angle:0,originX:50.8,originY:67.7418,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:60},{angle:0,originX:50.8,originY:124.892,deltaX:0,deltaY:135.484,dashes:[92.075,-9.525],sourceLine:61},{angle:90,originX:0,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:62},{angle:90,originX:-9.525,originY:0,deltaX:0,deltaY:203.2,dashes:[57.15,-78.334],sourceLine:63},{angle:90,originX:50.8,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:64},{angle:90,originX:41.275,originY:67.7418,deltaX:0,deltaY:101.6,dashes:[57.15,-78.334],sourceLine:65}]},{name:"AR-BRSTD",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:67.7418,dashes:[],sourceLine:67},{angle:90,originX:0,originY:0,deltaX:67.7418,deltaY:101.6,dashes:[67.7418,-67.7418],sourceLine:68}]},{name:"AR-CONC",description:"",lines:[{angle:50,originX:0,originY:0,deltaX:104.896,deltaY:-149.807,dashes:[19.05,-209.55],sourceLine:70},{angle:355,originX:0,originY:0,deltaX:-51.76101082,deltaY:187.25814969,dashes:[15.24,-167.64058417],sourceLine:71},{angle:100.4514447,originX:15.182007,originY:-1.3282535,deltaX:145.5569059,deltaY:-176.270089,dashes:[16.1900088,-178.0902446],sourceLine:72},{angle:46.1842,originX:0,originY:50.8,deltaX:157.343,deltaY:-224.71,dashes:[28.575,-314.325],sourceLine:73},{angle:96.63555761,originX:22.5899,originY:47.2965,deltaX:218.33577212,deltaY:-264.40480444,dashes:[24.28502314,-267.13560816],sourceLine:74},{angle:351.18415117,originX:0,originY:50.8,deltaX:196.67912063,deltaY:280.88740361,dashes:[22.85996707,-251.45973192],sourceLine:75},{angle:21,originX:25.4,originY:38.1,deltaX:104.89565868,deltaY:-149.80652586,dashes:[19.05,-209.55],sourceLine:76},{angle:326,originX:25.4,originY:38.1,deltaX:-51.7604,deltaY:187.258,dashes:[15.24,-167.64],sourceLine:77},{angle:71.451445,originX:38.0345326,originY:29.5779001,deltaX:145.5567546,deltaY:-176.2700748,dashes:[16.1900088,-178.0899376],sourceLine:78},{angle:37.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-165.608,0,-170.18,0,-168.275],sourceLine:79},{angle:7.5,originX:0,originY:0,deltaX:79.3242,deltaY:90.6018,dashes:[0,-97.028,0,-161.798,0,-64.135],sourceLine:80},{angle:-32.5,originX:-56.642,originY:0,deltaX:117.434,deltaY:68.0212,dashes:[0,-63.5,0,-198.12,0,-262.89],sourceLine:81},{angle:-42.5,originX:-82.042,originY:0,deltaX:92.0344,deltaY:118.821,dashes:[0,-82.55,0,-131.572,0,-186.69],sourceLine:82}]},{name:"AR-HBONE",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:101.6,deltaY:101.6,dashes:[304.8,-101.6],sourceLine:84},{angle:135,originX:71.842,originY:71.842,deltaX:101.6,deltaY:-101.6,dashes:[304.8,-101.6],sourceLine:85}]},{name:"AR-PARQ1",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:87},{angle:90,originX:50.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:88},{angle:90,originX:101.6,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:89},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:90},{angle:90,originX:203.2,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:91},{angle:90,originX:254,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:92},{angle:90,originX:304.8,originY:0,deltaX:304.8,deltaY:304.8,dashes:[304.8,-304.8],sourceLine:93},{angle:0,originX:0,originY:304.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:94},{angle:0,originX:0,originY:355.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:95},{angle:0,originX:0,originY:406.4,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:96},{angle:0,originX:0,originY:457.2,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:97},{angle:0,originX:0,originY:508,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:98},{angle:0,originX:0,originY:558.8,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:99},{angle:0,originX:0,originY:609.6,deltaX:304.8,deltaY:-304.8,dashes:[304.8,-304.8],sourceLine:100}]},{name:"AR-RROOF",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:55.88,deltaY:25.4,dashes:[381,-50.8,127,-25.4],sourceLine:102},{angle:0,originX:33.782,originY:12.7,deltaX:-25.4,deltaY:33.782,dashes:[76.2,-8.382,152.4,-19.05],sourceLine:103},{angle:0,originX:12.7,originY:21.59,deltaX:132.08,deltaY:17.018,dashes:[203.2,-35.56,101.6,-25.4],sourceLine:104}]},{name:"AR-RSHKE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:647.7,deltaY:304.8,dashes:[152.4,-127,177.8,-76.2,228.6,-101.6],sourceLine:106},{angle:0,originX:152.4,originY:12.7,deltaX:647.7,deltaY:304.8,dashes:[127,-482.6,101.6,-152.4],sourceLine:107},{angle:0,originX:457.2,originY:-19.05,deltaX:647.7,deltaY:304.8,dashes:[76.2,-787.4],sourceLine:108},{angle:90,originX:0,originY:0,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:109},{angle:90,originX:152.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[285.75,-933.45],sourceLine:110},{angle:90,originX:279.4,originY:0,deltaX:304.8,deltaY:215.9,dashes:[266.7,-952.5],sourceLine:111},{angle:90,originX:457.2,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:112},{angle:90,originX:533.4,originY:-19.05,deltaX:304.8,deltaY:215.9,dashes:[292.1,-927.1],sourceLine:113},{angle:90,originX:762,originY:0,deltaX:304.8,deltaY:215.9,dashes:[279.4,-939.8],sourceLine:114}]},{name:"AR-SAND",description:"",lines:[{angle:37.5,originX:0,originY:0,deltaX:28.5242,deltaY:39.8018,dashes:[0,-38.608,0,-43.18,0,-41.275],sourceLine:116},{angle:7.5,originX:0,originY:0,deltaX:53.9242,deltaY:65.2018,dashes:[0,-20.828,0,-34.798,0,-13.335],sourceLine:117},{angle:-32.5,originX:-31.242,originY:0,deltaX:66.6344,deltaY:42.6212,dashes:[0,-12.7,0,-45.72,0,-59.69],sourceLine:118},{angle:-42.5,originX:-31.242,originY:0,deltaX:41.2344,deltaY:68.0212,dashes:[0,-6.35,0,-29.972,0,-34.29],sourceLine:119}]},{name:"BOX",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:121},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:25.4,dashes:[],sourceLine:122},{angle:0,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:123},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:25.4,dashes:[-6.35,6.35],sourceLine:124},{angle:0,originX:0,originY:12.7,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:125},{angle:0,originX:0,originY:19.05,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:126},{angle:90,originX:12.7,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:127},{angle:90,originX:19.05,originY:0,deltaX:0,deltaY:25.4,dashes:[6.35,-6.35],sourceLine:128}]},{name:"BRASS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:130},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-1.5875],sourceLine:131}]},{name:"BRICK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:133},{angle:90,originX:0,originY:0,deltaX:0,deltaY:12.7,dashes:[6.35,-6.35],sourceLine:134},{angle:90,originX:6.35,originY:0,deltaX:0,deltaY:12.7,dashes:[-6.35,6.35],sourceLine:135}]},{name:"BRSTONE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:8.382,dashes:[],sourceLine:137},{angle:90,originX:22.86,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:138},{angle:90,originX:20.32,originY:0,deltaX:8.382,deltaY:12.7,dashes:[8.382,-8.382],sourceLine:139},{angle:0,originX:22.86,originY:1.397,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:140},{angle:0,originX:22.86,originY:2.794,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:141},{angle:0,originX:22.86,originY:4.191,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:142},{angle:0,originX:22.86,originY:5.588,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:143},{angle:0,originX:22.86,originY:6.985,deltaX:12.7,deltaY:8.382,dashes:[-22.86,2.54],sourceLine:144}]},{name:"CLAY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:146},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:147},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:4.7625,dashes:[],sourceLine:148},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:4.7625,dashes:[4.7625,-3.175],sourceLine:149}]},{name:"CORK",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:151},{angle:135,originX:1.5875,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:152},{angle:135,originX:2.38125,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:153},{angle:135,originX:3.175,originY:-1.5875,deltaX:0,deltaY:8.98026,dashes:[4.49013,-4.49013],sourceLine:154}]},{name:"CROSS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:156},{angle:90,originX:1.5875,originY:-1.5875,deltaX:6.35,deltaY:6.35,dashes:[3.175,-9.525],sourceLine:157}]},{name:"DASH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:159}]},{name:"DOLMIT",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:161},{angle:45,originX:0,originY:0,deltaX:0,deltaY:17.9605,dashes:[8.980256121069154,-17.960512242138307],sourceLine:162}]},{name:"DOTS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:.79375,deltaY:1.5875,dashes:[0,-1.5875],sourceLine:164}]},{name:"EARTH",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:166},{angle:0,originX:0,originY:2.38125,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:167},{angle:0,originX:0,originY:4.7625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:168},{angle:90,originX:.79375,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:169},{angle:90,originX:3.175,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:170},{angle:90,originX:5.55625,originY:5.55625,deltaX:6.35,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:171}]},{name:"ESCHER",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:173},{angle:180,originX:0,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:174},{angle:300,originX:0,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[27.94,-2.54],sourceLine:175},{angle:60,originX:2.54,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:176},{angle:300,originX:2.54,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:177},{angle:60,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:178},{angle:180,originX:-1.27,originY:2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:179},{angle:300,originX:-1.27,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:180},{angle:180,originX:-1.27,originY:-2.199704516,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:181},{angle:60,originX:-10.16,originY:0,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:182},{angle:300,originX:-10.16,originY:0,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:183},{angle:60,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:184},{angle:180,originX:5.08,originY:-8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:185},{angle:300,originX:5.08,originY:8.7988180894,deltaX:15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:186},{angle:180,originX:5.08,originY:8.7988180894,deltaX:-15.24,deltaY:26.3964542936,dashes:[5.08,-25.4],sourceLine:187},{angle:0,originX:5.08,originY:4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:188},{angle:0,originX:5.08,originY:-4.3994090574,deltaX:-15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:189},{angle:120,originX:1.27,originY:6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:190},{angle:120,originX:-6.35,originY:2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:191},{angle:240,originX:-6.35,originY:-2.199704516,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:192},{angle:240,originX:1.27,originY:-6.5991135734,deltaX:15.24,deltaY:26.3964542936,dashes:[17.78,-12.7],sourceLine:193}]},{name:"FLEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[6.35,-6.35],sourceLine:195},{angle:45,originX:6.35,originY:0,deltaX:4.490128053,deltaY:4.490128053,dashes:[1.5875,-5.8052561314,1.5875,-8.9802561314],sourceLine:196}]},{name:"GOST_GLASS",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:6,deltaY:-6,dashes:[5,-7],sourceLine:198},{angle:45,originX:2.12132,originY:0,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:199},{angle:45,originX:0,originY:2.12132,deltaX:6,deltaY:-6,dashes:[2,-10],sourceLine:200}]},{name:"GOST_WOOD",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:202},{angle:90,originX:2,originY:-2,deltaX:0,deltaY:-6,dashes:[6,-1.5,3,-1.5],sourceLine:203},{angle:90,originX:4,originY:-5,deltaX:0,deltaY:-6,dashes:[10,-2],sourceLine:204}]},{name:"GOST_GROUND",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:206},{angle:45,originX:3,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:207},{angle:45,originX:6,originY:0,deltaX:10,deltaY:-10,dashes:[20],sourceLine:208}]},{name:"GRASS",description:"",lines:[{angle:90,originX:0,originY:0,deltaX:17.96051224,deltaY:17.96051224,dashes:[4.7625,-31.15852448],sourceLine:210},{angle:45,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:211},{angle:135,originX:0,originY:0,deltaX:0,deltaY:25.4,dashes:[4.7625,-20.6375],sourceLine:212}]},{name:"GRATE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:.79375,dashes:[],sourceLine:214},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:215}]},{name:"GRAVEL",description:"",lines:[{angle:228.0127875,originX:18.288,originY:25.4,deltaX:305.85067529778,deltaY:1.88796713245,dashes:[3.4172144,-338.30483639565],sourceLine:217},{angle:184.969741,originX:16.002,originY:22.86,deltaX:-305.8545235377,deltaY:1.10019612724,dashes:[5.8640472,-580.54048893524],sourceLine:218},{angle:132.5104471,originX:10.16,originY:22.352,deltaX:-377.59492241548,deltaY:1.56030959675,dashes:[4.1348152,-409.347227941],sourceLine:219},{angle:267.273689,originX:.254,originY:16.002,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:220},{angle:292.83365418,originX:0,originY:10.668,deltaX:-330.19770134945,deltaY:1.23208097566,dashes:[5.236337,-518.39807745344],sourceLine:221},{angle:357.273689,originX:2.032,originY:5.842,deltaX:-508.63316875916,deltaY:1.20815479432,dashes:[5.3400452,-528.66437425738],sourceLine:222},{angle:37.69424047,originX:7.366,originY:5.588,deltaX:-416.58997273292,deltaY:.91357450169,dashes:[7.0619366,-699.13115314247],sourceLine:223},{angle:72.25532837,originX:12.954,originY:9.906,deltaX:586.40373773403,deltaY:.96766293399,dashes:[6.6671952,-660.05256601905],sourceLine:224},{angle:121.42956562,originX:14.986,originY:16.256,deltaX:387.71230339293,deltaY:1.2040754753,dashes:[5.35813,-530.45545698712],sourceLine:225},{angle:175.2363583,originX:12.192,originY:20.828,deltaX:-280.5442400419,deltaY:2.10935518695,dashes:[6.1171328,-299.7393695],sourceLine:226},{angle:222.3974378,originX:6.096,originY:21.336,deltaX:413.48123885686,deltaY:.81554484621,dashes:[7.9107792,-783.16772512177],sourceLine:227},{angle:138.81407483,originX:25.4,originY:15.748,deltaX:234.164238558,deltaY:2.38943100688,dashes:[2.7000454,-267.30565824344],sourceLine:228},{angle:171.4692344,originX:23.368,originY:17.526,deltaX:-334.082478726,deltaY:1.25594916784,dashes:[5.1368198,-508.5463899704],sourceLine:229},{angle:225,originX:18.288,originY:18.288,deltaX:17.96051224214,deltaY:17.96051224214,dashes:[3.5920934,-32.32893108428],sourceLine:230},{angle:203.19859051,originX:16.51,originY:21.336,deltaX:-136.74251918,deltaY:3.33518339548,dashes:[1.9344132,-191.50622368894],sourceLine:231},{angle:291.80140949,originX:14.732,originY:20.574,deltaX:-80.18324702488,deltaY:4.71666158921,dashes:[2.7356562,-134.0475299],sourceLine:232},{angle:30.96375653,originX:15.748,originY:18.034,deltaX:91.47734531502,deltaY:4.35606406258,dashes:[4.4431966,-143.6629815291],sourceLine:233},{angle:161.56505118,originX:19.558,originY:20.32,deltaX:-56.2252967978,deltaY:8.03218525675,dashes:[3.2128714,-77.10898116828],sourceLine:234},{angle:16.389540334,originX:0,originY:20.574,deltaX:265.17991128726,deltaY:1.43340492604,dashes:[4.50088,-445.58826672539],sourceLine:235},{angle:70.34617594,originX:4.318,originY:21.844,deltaX:-297.29446803469,deltaY:1.70858889651,dashes:[3.7759894,-373.822156782],sourceLine:236},{angle:293.19859051,originX:19.558,originY:25.4,deltaX:-136.7425191801,deltaY:3.33518339548,dashes:[3.868801,-189.57183588894],sourceLine:237},{angle:343.61045967,originX:21.082,originY:21.844,deltaX:-265.17991128725,deltaY:1.433404926,dashes:[4.50088,-445.5882667254],sourceLine:238},{angle:339.44395478,originX:0,originY:4.826,deltaX:-136.75087638398,deltaY:2.97284513779,dashes:[4.340352,-212.67734313106],sourceLine:239},{angle:294.7751406,originX:4.064,originY:3.302,deltaX:-306.90424056705,deltaY:1.77401295215,dashes:[3.6367212,-360.0359338072],sourceLine:240},{angle:66.80140949,originX:19.812,originY:0,deltaX:136.74251918012,deltaY:3.33518339452,dashes:[3.868801,-189.57183588894],sourceLine:241},{angle:17.35402464,originX:21.336,originY:3.556,deltaX:-345.47402804977,deltaY:1.51523696536,dashes:[4.2578274,-421.523759802],sourceLine:242},{angle:69.44395478,originX:7.366,originY:0,deltaX:-136.75087638396,deltaY:2.97284513874,dashes:[2.170176,-214.84751913106],sourceLine:243},{angle:101.309932474,originX:18.288,originY:0,deltaX:104.60834648271,deltaY:4.98134983255,dashes:[1.295146,-128.21994964526],sourceLine:244},{angle:165.963756532,originX:18.034,originY:1.27,deltaX:-80.085263387,deltaY:6.16040487582,dashes:[5.236337,-99.49054589069],sourceLine:245},{angle:186.00900596,originX:12.954,originY:2.54,deltaX:-255.26337856879,deltaY:1.32949676118,dashes:[4.85267,-480.41364863337],sourceLine:246},{angle:303.69006753,originX:15.748,originY:15.748,deltaX:-56.35753993648,deltaY:7.0446924921,dashes:[3.6632388,-87.9177635968],sourceLine:247},{angle:353.15722659,originX:17.78,originY:12.7,deltaX:434.77679606606,deltaY:1.0087628707,dashes:[6.3955676,-633.16009065031],sourceLine:248},{angle:60.9453959,originX:24.13,originY:11.938,deltaX:-204.76648550216,deltaY:2.46706609031,dashes:[2.6150824,-258.8939231811],sourceLine:249},{angle:90,originX:25.4,originY:14.224,deltaX:25.4,deltaY:25.4,dashes:[1.524,-23.876],sourceLine:250},{angle:120.25643716,originX:12.446,originY:3.302,deltaX:-204.77318477297,deltaY:1.8283320086,dashes:[3.5286696,-349.339407732],sourceLine:251},{angle:48.0127875,originX:10.668,originY:6.35,deltaX:305.85067529778,deltaY:1.88796713138,dashes:[6.8344288,-334.88762199565],sourceLine:252},{angle:0,originX:15.24,originY:11.43,deltaX:25.4,deltaY:25.4,dashes:[6.604,-18.796],sourceLine:253},{angle:325.3048465,originX:21.844,originY:11.43,deltaX:310.04235091354,deltaY:-1.6064370526,dashes:[4.0160956,-397.5931672414],sourceLine:254},{angle:254.0546041,originX:25.146,originY:9.144,deltaX:104.6687497289,deltaY:3.48895832444,dashes:[3.6982908,-181.21650038772],sourceLine:255},{angle:207.64597536,originX:24.13,originY:5.588,deltaX:545.36007557253,deltaY:1.07143433066,dashes:[6.021451,-596.12464422938],sourceLine:256},{angle:175.42607874,originX:18.796,originY:2.794,deltaX:331.1739336186,deltaY:1.01276432357,dashes:[6.3702946,-630.6584645624],sourceLine:257}]},{name:"HEX",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:259},{angle:120,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:260},{angle:60,originX:3.175,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-6.35],sourceLine:261}]},{name:"HONEY",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:263},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[3.175,-6.35],sourceLine:264},{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:2.749630645,dashes:[-6.35,3.175],sourceLine:265}]},{name:"HOUND",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:267},{angle:90,originX:0,originY:0,deltaX:-6.35,deltaY:1.5875,dashes:[25.4,-12.7],sourceLine:268}]},{name:"INSUL",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:9.525,dashes:[],sourceLine:270},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:271},{angle:0,originX:0,originY:6.35,deltaX:0,deltaY:9.525,dashes:[3.175,-3.175],sourceLine:272}]},{name:"ACAD_ISO02W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3],sourceLine:285}]},{name:"ACAD_ISO03W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-18],sourceLine:287}]},{name:"ACAD_ISO04W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3],sourceLine:289}]},{name:"ACAD_ISO05W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-3],sourceLine:291}]},{name:"ACAD_ISO06W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,.5,-3,.5,-6.5],sourceLine:293},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-34,.5,-3],sourceLine:294}]},{name:"ACAD_ISO07W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[.5,-3],sourceLine:296}]},{name:"ACAD_ISO08W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3],sourceLine:298}]},{name:"ACAD_ISO09W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[24,-3,6,-3,6,-3],sourceLine:300}]},{name:"ACAD_ISO10W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3],sourceLine:302}]},{name:"ACAD_ISO11W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-3],sourceLine:304}]},{name:"ACAD_ISO12W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-3],sourceLine:306}]},{name:"ACAD_ISO13W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-6.5],sourceLine:308},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3],sourceLine:309}]},{name:"ACAD_ISO14W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,.5,-3,.5,-6.5],sourceLine:311},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-22,.5,-3],sourceLine:312}]},{name:"ACAD_ISO15W100",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[12,-3,12,-3,.5,-10],sourceLine:314},{angle:0,originX:0,originY:0,deltaX:0,deltaY:5,dashes:[-33.5,.5,-3,.5,-3],sourceLine:315}]},{name:"JIS_LC_20",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:322},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:323}]},{name:"JIS_LC_20A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:325},{angle:45,originX:1,originY:0,deltaX:0,deltaY:20,dashes:[],sourceLine:326}]},{name:"JIS_LC_8",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:328},{angle:45,originX:.4,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:329}]},{name:"JIS_LC_8A",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:331},{angle:45,originX:1,originY:0,deltaX:0,deltaY:7.8,dashes:[],sourceLine:332}]},{name:"JIS_RC_10",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:334},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:335},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:10,dashes:[],sourceLine:336}]},{name:"JIS_RC_15",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:338},{angle:45,originX:.725,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:339},{angle:45,originX:1.45,originY:0,deltaX:0,deltaY:15,dashes:[],sourceLine:340}]},{name:"JIS_RC_18",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:342},{angle:45,originX:1,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:343},{angle:45,originX:2,originY:0,deltaX:0,deltaY:18,dashes:[],sourceLine:344}]},{name:"JIS_RC_30",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:346},{angle:45,originX:1,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:347},{angle:45,originX:2,originY:0,deltaX:0,deltaY:30,dashes:[],sourceLine:348}]},{name:"JIS_STN_1E",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:1,dashes:[],sourceLine:350},{angle:45,originX:.705,originY:0,deltaX:0,deltaY:1,dashes:[1,-.5],sourceLine:351}]},{name:"JIS_STN_2.5",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.5,dashes:[],sourceLine:353},{angle:45,originX:1.765,originY:0,deltaX:0,deltaY:2.5,dashes:[1.2,-.5],sourceLine:354}]},{name:"JIS_WOOD",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:.70710678,dashes:[],sourceLine:356}]},{name:"LINE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:359}]},{name:"MUDST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:6.35,dashes:[6.35,-6.35,0,-6.35,0,-6.35],sourceLine:361}]},{name:"NET",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:363},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:364}]},{name:"NET3",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:366},{angle:60,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:367},{angle:120,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:368}]},{name:"PLAST",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:370},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:371},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:372}]},{name:"PLASTI",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:374},{angle:0,originX:0,originY:.79375,deltaX:0,deltaY:6.35,dashes:[],sourceLine:375},{angle:0,originX:0,originY:1.5875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:376},{angle:0,originX:0,originY:3.96875,deltaX:0,deltaY:6.35,dashes:[],sourceLine:377}]},{name:"SACNCR",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:2.38125,dashes:[],sourceLine:379},{angle:45,originX:1.6838,originY:0,deltaX:0,deltaY:2.38125,dashes:[0,-2.38125],sourceLine:380}]},{name:"SQUARE",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:382},{angle:90,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:383}]},{name:"STARS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:385},{angle:60,originX:0,originY:0,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:386},{angle:120,originX:1.5875,originY:2.7496306704,deltaX:0,deltaY:5.4992613154,dashes:[3.175,-3.175],sourceLine:387}]},{name:"STEEL",description:"",lines:[{angle:45,originX:0,originY:0,deltaX:0,deltaY:3.175,dashes:[],sourceLine:389},{angle:45,originX:0,originY:1.5875,deltaX:0,deltaY:3.175,dashes:[],sourceLine:390}]},{name:"SWAMP",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[3.175,-22.225],sourceLine:392},{angle:90,originX:1.5875,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.5875,-42.4065904724],sourceLine:393},{angle:90,originX:1.984375,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:394},{angle:90,originX:1.190625,originY:0,deltaX:21.9970452362,deltaY:12.7,dashes:[1.27,-42.7240904724],sourceLine:395},{angle:60,originX:2.38125,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:396},{angle:120,originX:.79375,originY:0,deltaX:12.7,deltaY:21.9970452362,dashes:[1.016,-24.384],sourceLine:397}]},{name:"TRANS",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:0,deltaY:6.35,dashes:[],sourceLine:399},{angle:0,originX:0,originY:3.175,deltaX:0,deltaY:6.35,dashes:[3.175,-3.175],sourceLine:400}]},{name:"TRIANG",description:"",lines:[{angle:60,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:402},{angle:120,originX:0,originY:0,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:403},{angle:0,originX:-2.38125,originY:4.1244459802,deltaX:4.7625,deltaY:8.2488919604,dashes:[4.7625,-4.7625],sourceLine:404}]},{name:"ZIGZAG",description:"",lines:[{angle:0,originX:0,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:406},{angle:90,originX:3.175,originY:0,deltaX:3.175,deltaY:3.175,dashes:[3.175,-3.175],sourceLine:407}]}],issues:[]};var dr=(i=>(i[i.UserDefined=0]="UserDefined",i[i.Predefined=1]="Predefined",i[i.Custom=2]="Custom",i))(dr||{}),Pp=(i=>(i[i.Normal=0]="Normal",i[i.Outer=1]="Outer",i[i.Ignore=2]="Ignore",i))(Pp||{}),kp=(i=>(i[i.HatchObject=0]="HatchObject",i[i.GradientObject=1]="GradientObject",i))(kp||{}),Ip=(i=>(i[i.PreDefinedGradient=0]="PreDefinedGradient",i[i.UserDefinedGradient=1]="UserDefinedGradient",i))(Ip||{});const hh=class hh extends rt{constructor(){super(),this._areasFromLoopsCache=null,this._normal=new A(0,0,1),this._gradientAngle=0,this._elevation=0,this._geo=new Ye,this._isSolidFill=!1,this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1,this._patternName="",this._patternNameSet=!1,this._patternType=1,this._patternAngle=0,this._patternAngleSet=!1,this._patternScale=1,this._patternScaleSet=!1,this._associative=!1,this._associativeSet=!1,this._backgroundColor=void 0,this._backgroundColorSet=!1,this._patternDouble=!1,this._patternDoubleSet=!1,this._hatchStyle=0,this._hatchStyleSet=!1,this._hatchObjectType=0,this._gradientAngle=0,this._gradientShift=0,this._shadeTintValue=0,this._gradientStartColor=void 0,this._gradientEndColor=void 0,this._pixelSize=void 0,this._gradientType=0,this._gradientName="",this._gradientOneColorMode=!1}get dxfTypeName(){return"HATCH"}get isGradient(){return this._hatchObjectType===1}get isHatch(){return this._hatchObjectType===0}get isSolidFill(){return this._isSolidFill||ar(this.getEffectivePatternName())}set isSolidFill(t){this._isSolidFill=t}get color(){if(this.hasExplicitColor())return this.getEntityColor();const t=this.database,e=xt.instance().getVar(I.HPCOLOR,t);return e instanceof U&&e.colorMethod!==exports.AcCmColorMethod.None?e.clone():t.cecolor.clone()}set color(t){this.setEntityColor(t)}get definitionLines(){return this._definitionLines}get patternName(){return this._patternName}set patternName(t){this._patternName=t??"",this._isSolidFill=ar(this._patternName),this._patternNameSet=!0,this.updatePredefinedPatternDefinitionLines()}get patternType(){return this._patternType}set patternType(t){this._patternType=t,t!==1&&this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1),this.updatePredefinedPatternDefinitionLines()}get patternAngle(){return this._patternAngle}set patternAngle(t){this._patternAngle=t,this._patternAngleSet=!0}get patternScale(){return this._patternScale}set patternScale(t){this._patternScale=t,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}get annotative(){return ve(this)}set annotative(t){pe(this,t)}get associative(){return this._associative}set associative(t){this._associative=!!t,this._associativeSet=!0}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t==null?void 0:t.clone(),this._backgroundColorSet=!0}get patternDouble(){return this._patternDouble}set patternDouble(t){this._patternDouble=!!t,this._patternDoubleSet=!0}get hatchStyle(){return this._hatchStyle}set hatchStyle(t){this._hatchStyle=t,this._hatchStyleSet=!0}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t),this._normal.lengthSq()>0&&this._normal.normalize()}get hatchObjectType(){return this._hatchObjectType}set hatchObjectType(t){this._hatchObjectType=t}get gradientAngle(){return this._gradientAngle}set gradientAngle(t){this._gradientAngle=t}get gradientShift(){return this._gradientShift}set gradientShift(t){this._gradientShift=t}get gradientType(){return this._gradientType}set gradientType(t){this._gradientType=t}get gradientName(){return this.isGradient&&this._gradientName.trim()===""?Wg:this._gradientName}set gradientName(t){this._gradientName=t??""}get gradientOneColorMode(){return this._gradientOneColorMode}set gradientOneColorMode(t){this._gradientOneColorMode=t}get shadeTintValue(){return this._shadeTintValue}set shadeTintValue(t){this._shadeTintValue=t}get gradientStartColor(){return this._gradientStartColor}set gradientStartColor(t){this._gradientStartColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get gradientEndColor(){return this._gradientEndColor}set gradientEndColor(t){this._gradientEndColor=t==null||!Number.isFinite(t)?void 0:t&16777215}get pixelSize(){return this._pixelSize}set pixelSize(t){this._pixelSize=t}applyPatternDefaultsFromSysVars(t){const e=xt.instance();if(!this.hasExplicitLayer()){const n=e.getVar(I.HPLAYER,t);this.shouldUseSysVarOverride(n)&&(this.layer=n)}if(!this.hasExplicitTransparency()){const n=this.parseHpTransparency(e.getVar(I.HPTRANSPARENCY,t));n&&(this.transparency=n)}if(this._backgroundColorSet||(this._backgroundColor=this.parseHpBackgroundColor(e.getVar(I.HPBACKGROUNDCOLOR,t)),this._backgroundColorSet=!0),!this._patternNameSet){const n=e.getVar(I.HPNAME,t);this._patternName=typeof n=="string"?n:"",this._patternNameSet=!0}if(!this._patternAngleSet){const n=e.getVar(I.HPANG,t);this._patternAngle=typeof n=="number"&&Number.isFinite(n)?n:0,this._patternAngleSet=!0}if(this._patternScaleSet||(this._patternScale=this.normalizePatternScale(e.getVar(I.HPSCALE,t)),this._patternScaleSet=!0),!this._associativeSet){const n=e.getVar(I.HPASSOC,t);this._associative=typeof n=="number"?n!==0:!1,this._associativeSet=!0}if(this._hatchStyleSet||(this._hatchStyle=this.normalizeHatchStyle(e.getVar(I.HPISLANDDETECTION,t)),this._hatchStyleSet=!0),!this._patternDoubleSet){const n=e.getVar(I.HPDOUBLE,t);this._patternDouble=typeof n=="number"?n!==0:!1,this._patternDoubleSet=!0}this.updatePredefinedPatternDefinitionLines()}getEffectivePatternName(){if(this._patternNameSet)return this._patternName;const t=this.database,e=xt.instance().getVar(I.HPNAME,t);return typeof e=="string"?e:this._patternName}shouldResolveColorFromCecolor(){return!1}getEffectivePatternAngle(){if(this._patternAngleSet)return this._patternAngle;const t=this.database,e=xt.instance().getVar(I.HPANG,t);return typeof e=="number"&&Number.isFinite(e)?e:this._patternAngle}getRenderablePatternAngle(){return!this._definitionLinesAutoGenerated&&this._definitionLines.length>0?0:this.getEffectivePatternAngle()}getEffectivePatternScale(){if(this._patternScaleSet)return this._patternScale;const t=this.database;return this.normalizePatternScale(xt.instance().getVar(I.HPSCALE,t))}getEffectiveAssociative(){if(this._associativeSet)return this._associative;const t=this.database,e=xt.instance().getVar(I.HPASSOC,t);return typeof e=="number"?e!==0:this._associative}normalizePatternScale(t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:1}normalizeHatchStyle(t){return typeof t!="number"||!Number.isFinite(t)?1:t===0?0:t===2?2:1}shouldUseSysVarOverride(t){if(typeof t!="string")return!1;const e=t.trim().toLowerCase();return e!==""&&e!=="."&&e!=="use current"}parseHpBackgroundColor(t){if(t instanceof U)return t.colorMethod===exports.AcCmColorMethod.None?void 0:t.clone();if(typeof t!="string")return;const e=t.trim().toLowerCase();if(!(!e||e==="."||e==="none"))return U.fromString(t)}parseHpTransparency(t){if(t instanceof At)return t.clone();if(!this.shouldUseSysVarOverride(t))return;const e=t.trim();if(/^bylayer$/i.test(e)||/^byblock$/i.test(e))return At.fromString(e);const n=Number(e);if(Number.isInteger(n)&&n>=0&&n<=90){const r=new At;return r.percentage=n,r}}updatePredefinedPatternDefinitionLines(t=this.getEffectivePatternName(),e=this.getEffectivePatternScale()){if(this.patternType!==1||!(this._definitionLinesAutoGenerated||this._definitionLines.length===0))return;const r=t.trim().toUpperCase();if(!r||ar(r)){this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1;return}const s=this.normalizePatternScale(e);if(this._definitionLinesAutoGenerated&&this._definitionLinesPatternName===r&&this._definitionLinesPatternScale===s)return;const a=Sp.patterns.find(o=>o.name.trim().toUpperCase()===r);if(!a){this._definitionLinesAutoGenerated&&(this._definitionLines=[],this._definitionLinesAutoGenerated=!1,this._definitionLinesPatternName="",this._definitionLinesPatternScale=1);return}this._definitionLines=a.lines.map(o=>({angle:o.angle*Math.PI/180,base:{x:o.originX*s,y:o.originY*s},offset:{x:o.deltaX*s,y:o.deltaY*s},dashLengths:o.dashes.map(c=>c*s)})),this._definitionLinesAutoGenerated=!0,this._definitionLinesPatternName=r,this._definitionLinesPatternScale=s}add(t){this._geo.add(t),this.invalidateAreasFromLoopsCache()}invalidateAreasFromLoopsCache(){this._areasFromLoopsCache=null}buildAreasFromLoops(){if(this._areasFromLoopsCache!=null)return this._areasFromLoopsCache;const t=this._geo.loops;if(t.length===0)return this._areasFromLoopsCache=[],this._areasFromLoopsCache;if(t.length===1)return this._areasFromLoopsCache=[this._geo],this._areasFromLoopsCache;const e=this._geo.buildHierarchy(),n=[],r=(s,a)=>{if(s.index>=0&&a%2===0){const o=new Ye;o.add(t[s.index]),s.children.forEach(c=>{c.index>=0&&o.add(t[c.index])}),n.push(o)}s.children.forEach(o=>r(o,a+1))};return e.children.forEach(s=>r(s,0)),this._areasFromLoopsCache=n.length>0?n:[this._geo],this._areasFromLoopsCache}getCalculatedAreaValue(){const t=this.buildAreasFromLoops();return t.length===0?0:t.reduce((e,n)=>e+n.area,0)}get area(){return this.getCalculatedAreaValue()}get geometricExtents(){const t=this.buildAreasFromLoops();if(t.length===0)return new H;const e=new H;return t.forEach(n=>{const r=n.box;e.union(new H().setFromPoints([oe({x:r.min.x,y:r.min.y,z:this._elevation},this._normal),oe({x:r.max.x,y:r.min.y,z:this._elevation},this._normal),oe({x:r.max.x,y:r.max.y,z:this._elevation},this._normal),oe({x:r.min.x,y:r.max.y,z:this._elevation},this._normal)]))}),e}subGetIntersectCurves(){return Px(this._geo.loops,this._elevation,this._normal)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:dr[0],value:0},{label:dr[1],value:1},{label:dr[2],value:2}],accessor:{get:()=>this.patternType,set:t=>{this.patternType=t}}},{name:"patternName",type:"string",editable:!0,accessor:{get:()=>this.patternName,set:t=>{this.patternName=t}}},{name:"patternAngle",type:"float",editable:!0,accessor:{get:()=>this.patternAngle,set:t=>{this.patternAngle=t}}},{name:"patternScale",type:"float",editable:!0,accessor:{get:()=>this.patternScale,set:t=>{this.patternScale=t}}},{name:"annotative",type:"boolean",editable:!0,accessor:{get:()=>this.annotative,set:t=>{this.annotative=t}}},{name:"associative",type:"boolean",editable:!0,accessor:{get:()=>this.associative,set:t=>{this.associative=t}}},{name:"backgroundColor",type:"color",editable:!0,accessor:{get:()=>this.backgroundColor,set:t=>{this.backgroundColor=t}}},{name:"patternDouble",type:"boolean",editable:!0,accessor:{get:()=>this.patternDouble,set:t=>{this.patternDouble=t}}}]},{groupName:"geometry",properties:[{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.area}}]}]}}subGetGripPoints(){return this.associative?[]:this.collectBoundaryGripPoints()}subMoveGripPointsAt(t,e){return this.associative?this:(It(t,n=>{this.moveBoundaryGripPointAt(n,e)}),this.invalidateAreasFromLoopsCache(),this)}collectBoundaryGripPoints(){const t=new Array,e=this._elevation,n=new Set,r=s=>{const a=`${s.x},${s.y},${s.z??0}`;n.has(a)||(n.add(a),t.push(new x(s.x,s.y,s.z??e)))};return this._geo.loops.forEach(s=>{if(s instanceof ot){const a=s.numberOfVertices;for(let o=0;o<a;o++){const c=s.getPointAt(o);r({x:c.x,y:c.y,z:e})}return}s.curves.forEach(a=>{if(a instanceof mt)r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e});else if(a instanceof J)r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e}),r({x:a.midPoint.x,y:a.midPoint.y,z:e});else if(a instanceof Ge){r({x:a.startPoint.x,y:a.startPoint.y,z:e}),r({x:a.endPoint.x,y:a.endPoint.y,z:e});const o=a.getPoint(.5);r({x:o.x,y:o.y,z:e})}})}),t}moveBoundaryGripPointAt(t,e){let n=0;const r=this._elevation,s=new Set,a=(o,c)=>{const l=`${o.x},${o.y},${o.z??0}`;s.has(l)||(s.add(l),n===t&&c(),n++)};this._geo.loops.forEach(o=>{if(o instanceof ot){const c=o.numberOfVertices;for(let l=0;l<c;l++){const h=o.vertices[l];h&&a({x:h.x,y:h.y,z:r},()=>{lr(o.vertices,l,e)})}return}o.curves.forEach(c=>{if(c instanceof mt)a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>{c.startPoint.x+=e.x,c.startPoint.y+=e.y}),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>{c.endPoint.x+=e.x,c.endPoint.y+=e.y});else if(c instanceof J)a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"start",e)),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"end",e)),a({x:c.midPoint.x,y:c.midPoint.y,z:r},()=>this.moveCircArc2dGripPoint(c,"mid",e));else if(c instanceof Ge){a({x:c.startPoint.x,y:c.startPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"start",e)),a({x:c.endPoint.x,y:c.endPoint.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"end",e));const l=c.getPoint(.5);a({x:l.x,y:l.y,z:r},()=>this.moveEllipseArc2dGripPoint(c,"mid",e))}})})}moveCircArc2dGripPoint(t,e,n){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"mid":{const s=t.midPoint,a=new J(t.startPoint,{x:s.x+n.x,y:s.y+n.y},t.endPoint);t.center=a.center,t.radius=a.radius,t.startAngle=a.startAngle,t.endAngle=a.endAngle,t.clockwise=a.clockwise;break}}}moveEllipseArc2dGripPoint(t,e,n){const r=t.center;switch(e){case"start":{const s=t.startPoint;t.startAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"end":{const s=t.endPoint;t.endAngle=Math.atan2(s.y+n.y-r.y,s.x+n.x-r.x);break}case"mid":{const s=t.getPoint(.5),a=s.x+n.x-t.center.x,o=s.y+n.y-t.center.y,c=Math.hypot(s.x-t.center.x,s.y-t.center.y),l=Math.hypot(a,o);if(c>0&&l>0){const h=l/c;t.majorAxisRadius*=h,t.minorAxisRadius*=h}break}}}subGetOsnapPoints(t,e,n,r){const s=this._elevation,a=[];if(this._geo.loops.forEach(o=>{var c;if(o instanceof ot){const l=o,h=l.numberOfVertices;if(h===0)return;switch(t){case E.EndPoint:for(let u=0;u<h;u++){const d=l.getPointAt(u);r.push(new x(d.x,d.y,s))}break;case E.MidPoint:case E.Nearest:case E.Perpendicular:case E.Tangent:{const u=o.closed?h:h-1;for(let d=0;d<u;d++){const g=[];Lr(l.getPointAt(d),l.getPointAt((d+1)%h),(c=l.vertices[d])==null?void 0:c.bulge,s,t,e,g),t===E.MidPoint?r.push(...g):a.push(...g)}break}}return}o.curves.forEach(l=>{if(l instanceof mt){const h=[];Lr(l.startPoint,l.endPoint,void 0,s,t,e,h),t===E.MidPoint?r.push(...h):t===E.Nearest||t===E.Perpendicular||t===E.Tangent?a.push(...h):r.push(...h)}else if(l instanceof J)switch(t){case E.EndPoint:r.push(new x(l.startPoint.x,l.startPoint.y,s),new x(l.endPoint.x,l.endPoint.y,s));break;case E.MidPoint:r.push(new x(l.midPoint.x,l.midPoint.y,s));break;case E.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});a.push(new x(h.x,h.y,s));break}case E.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>a.push(new x(u.x,u.y,s)));break}case E.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>a.push(new x(u.x,u.y,s)));break}}else if(l instanceof Ge)switch(t){case E.EndPoint:r.push(new x(l.startPoint.x,l.startPoint.y,s),new x(l.endPoint.x,l.endPoint.y,s));break;case E.MidPoint:{const h=l.getPoint(.5);r.push(new x(h.x,h.y,s));break}case E.Nearest:{const h=l.nearestPoint({x:e.x,y:e.y});a.push(new x(h.x,h.y,s));break}case E.Perpendicular:{l.perpendicularPoints({x:e.x,y:e.y}).forEach(u=>a.push(new x(u.x,u.y,s)));break}case E.Tangent:{l.tangentPoints({x:e.x,y:e.y}).forEach(u=>a.push(new x(u.x,u.y,s)));break}}})}),(t===E.Nearest||t===E.Perpendicular||t===E.Tangent)&&a.length>0){const o=me(e,a);r.length=0,o&&r.push(o)}}get directBatchPrimitive(){return!this.isSolidFill||this.isGradient||this.buildAreasFromLoops().length>1?null:"area"}resolveAnnotativePresentation(){var o;const t=this.getEffectivePatternScale(),e=Ht(this),n=e.length>0||fe(this);let r=t,s,a;if(n&&e.length>0){s=je(e,(o=this.database)==null?void 0:o.cannoscale)??e.find(l=>l.isDefault)??e[0],a=Ve(e,s);const c=s.contextData;c instanceof kr&&c.patternScale>0?r=c.patternScale:r=De(Ne(t,e),s.scale.scaleFactor)}else n&&(a=Yn(this).annotationScale);return{patternScale:r,preferred:s,annotationScale:a}}subWorldDraw(t){var s;const e=this.resolveAnnotativePresentation(),n=this._patternScale,r=this._patternScaleSet;this._patternScale=e.patternScale,this._patternScaleSet=!0;try{this.updatePredefinedPatternDefinitionLines();const a=t.subEntityTraits;a.fillType={solidFill:this.isSolidFill,patternAngle:this.getRenderablePatternAngle(),definitionLines:this.definitionLines,backgroundColor:(s=this.backgroundColor)==null?void 0:s.clone(),gradient:this.isGradient?{name:this.gradientName,angle:this.gradientAngle,shift:this.gradientShift,oneColorMode:this.gradientOneColorMode,shadeTintValue:this.shadeTintValue,startColor:this.gradientStartColor,endColor:this.gradientEndColor}:void 0},a.drawOrder=-1;const o=this.buildAreasFromLoops();let c;if(o.length===0)c=t.area(this._geo);else if(o.length===1)c=t.area(o[0]);else{const l=o.map(h=>t.area(h));c=t.group(l)}if(c&&this.annotative){let l=e.annotationScale;l||(l={drawnScaleFactor:1,supportedScaleFactors:[1],supportedScaleNames:[]});const h=c.userData??(c.userData={});h.annotationScale=l}return c}finally{this._patternScale=n,this._patternScaleSet=r,this.updatePredefinedPatternDefinitionLines()}}transformBy(t){const e=t.elements,n=new jr(e[0],e[4],e[12],e[1],e[5],e[13],0,0,1);this._geo.transform(n),this.invalidateAreasFromLoopsCache(),this._elevation=new x(0,0,this._elevation).applyMatrix4(t).z,this._normal.transformDirection(t),this._normal.lengthSq()>0&&this._normal.normalize();const r=new x(1,0,0).applyMatrix4(t),s=new x().applyMatrix4(t),a=new x(r).sub(s);if(a.length()>0){const o=Math.atan2(a.y,a.x);this._patternAngle=this.getEffectivePatternAngle()+o,this._gradientAngle+=o,this._patternScale=this.getEffectivePatternScale()*a.length(),this._patternAngleSet=!0,this._patternScaleSet=!0,this.updatePredefinedPatternDefinitionLines()}return this}dxfOutFields(t){super.dxfOutFields(t);const e=this._geo.loops,n=this.getEffectivePatternName(),r=this.getEffectivePatternAngle(),s=this.getEffectivePatternScale();if(this.updatePredefinedPatternDefinitionLines(n,s),t.writeSubclassMarker("AcDbHatch"),t.writePoint3d(10,{x:0,y:0,z:this.elevation}),t.writeVector3d(210,this.normal),t.writeString(2,n||(this.isSolidFill?yi:Gg)),t.writeInt16(70,this.isSolidFill?1:0),t.writeInt16(71,this.getEffectiveAssociative()?1:0),t.writeInt16(91,e.length),e.forEach((a,o)=>{const c=o===0;if(a instanceof ot){const l=a.vertices,h=l.some(d=>(d.bulge??0)!==0);t.writeInt16(92,2),t.writeInt16(72,h?1:0),t.writeInt16(73,a.closed?1:0),t.writeInt16(93,l.length);for(const d of l)t.writePoint2d(10,d),h&&t.writeDouble(42,d.bulge??0);t.writeInt16(97,0);return}if(a instanceof xn){const l=c?1:0;t.writeInt16(92,l),t.writeInt16(93,a.numberOfEdges);for(const h of a.curves){if(h instanceof mt){t.writeInt16(72,1),t.writePoint2d(10,h.startPoint),t.writePoint2d(11,h.endPoint);continue}if(h instanceof J){t.writeInt16(72,2),t.writePoint2d(10,h.center),t.writeDouble(40,h.radius),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.closed?h.startAngle+Math.PI*2:h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof Ge){t.writeInt16(72,3),t.writePoint2d(10,h.center);const u=new M(h.majorAxisRadius*Math.cos(h.rotation),h.majorAxisRadius*Math.sin(h.rotation));t.writePoint2d(11,u);const d=h.majorAxisRadius===0?0:h.minorAxisRadius/h.majorAxisRadius;t.writeDouble(40,d),t.writeAngle(50,h.startAngle),t.writeAngle(51,h.closed?h.startAngle+Math.PI*2:h.endAngle),t.writeInt16(73,h.clockwise?0:1);continue}if(h instanceof Xt){const u=h.knots,d=h.controlPoints,g=h.weights,f=h.fitPoints,p=g.some(m=>m!==1);t.writeInt16(72,4),t.writeInt16(94,h.degree),t.writeInt16(73,p?1:0),t.writeInt16(74,h.closed?1:0),t.writeInt16(95,u.length),t.writeInt16(96,d.length),u.forEach(m=>t.writeDouble(40,m)),d.forEach((m,y)=>{t.writePoint2d(10,m),p&&t.writeDouble(42,g[y]??1)}),t.writeInt16(97,(f==null?void 0:f.length)??0),f==null||f.forEach(m=>t.writePoint2d(11,m))}}t.writeInt16(97,0)}}),t.writeInt16(75,this.hatchStyle),t.writeInt16(76,this.patternType),t.writeAngle(52,r),t.writeDouble(41,s),t.writeInt16(77,0),t.writeInt16(78,this.definitionLines.length),this.definitionLines.forEach(a=>{t.writeAngle(53,a.angle),t.writeDouble(43,a.base.x),t.writeDouble(44,a.base.y),t.writeDouble(45,a.offset.x),t.writeDouble(46,a.offset.y),t.writeInt16(79,a.dashLengths.length),a.dashLengths.forEach(o=>t.writeDouble(49,o))}),this._pixelSize!=null&&t.writeDouble(47,this._pixelSize),this.isGradient){t.writeInt16(450,this._hatchObjectType),t.writeInt16(451,0),t.writeDouble(460,this._gradientAngle),t.writeDouble(461,this._gradientShift),t.writeInt16(452,this._gradientOneColorMode?1:0),t.writeDouble(462,this._shadeTintValue);const a=this._gradientStartColor,o=this._gradientEndColor,c=a!=null&&o!=null?2:a!=null||o!=null?1:0;t.writeInt16(453,c);const l=(h,u)=>{t.writeDouble(463,h);const d=Ee.getIndexByColor(u);d!=null&&t.writeInt16(63,d),t.writeInt32(421,u)};a!=null&&l(0,a),o!=null&&l(1,o),t.writeString(470,this.gradientName)}return t.writeInt16(98,0),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbHatch"),this.definitionLines.length=0;let e=this.elevation,n=this.normal.x,r=this.normal.y,s=this.normal.z,a=this.patternAngle*180/Math.PI,o=0,c=!1,l=!1,h=!1,u=[],d=null,g=[],f=null,p="type",m=0,y=!1,b=null,_=!1,w=0,P;const S=F=>{w===0?this.gradientStartColor=F:this.gradientEndColor=F,w++,P=void 0},v=()=>{if(P==null)return;const F=Ee.getColorByIndex(P);F!=null?S(F):P=void 0},k=()=>{d&&(u.push(d),d=null)},L=()=>{if(k(),u.length===0)return;const F=new ot;F.closed=h,u.forEach(($,T)=>{F.addVertexAt(T,{x:$.x,y:$.y,bulge:$.bulge??0})}),this.add(F),u=[]},C=()=>{if(g.length===0)return;const F=[];for(const T of g)if(T.kind==="line")F.push(new mt({x:T.sx,y:T.sy},{x:T.ex,y:T.ey}));else if(T.kind==="arc")F.push(new J({x:T.cx,y:T.cy},T.radius,T.startDeg*Math.PI/180,T.endDeg*Math.PI/180,!T.isCcw));else if(T.kind==="ellipse"){const W=Math.hypot(T.mx,T.my),st=W*T.ratio;let B=T.startDeg*Math.PI/180,Rt=T.endDeg*Math.PI/180;const ee=Math.atan2(T.my,T.mx);T.isCcw||(B=Math.PI*2-B,Rt=Math.PI*2-Rt),F.push(new Ge({x:T.cx,y:T.cy,z:0},W,st,B,Rt,!T.isCcw,ee))}else{const W=Xt.fromDwgSplineEdge({degree:T.degree,numberOfControlPoints:T.controlPoints.length,numberOfKnots:T.knots.length,numberOfFitData:T.fitPoints.length,knots:T.knots,controlPoints:T.controlPoints.map(st=>({x:st.x,y:st.y,z:0,weight:T.rational?st.weight??1:void 0})),fitDatum:T.fitPoints.map(st=>({x:st.x,y:st.y,z:0})),startTangent:null,endTangent:null});W&&F.push(W)}const $=xn.buildFromEdges(F);$.length===1?this.add($[0]):F.length>0&&this.add(new xn(F)),g=[],f=null},N=()=>{c?L():C()},D=()=>{f&&(g.push(f),f=null)},tt=()=>{D(),N(),m=Math.max(0,m-1),m===0&&(_=!0)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const F=t.readItem();if(!F)break;const $=Number(F.code),T=Number(F.value);if(y||_){switch($){case 75:this.hatchStyle=T,_=!0;break;case 76:this.patternType=T;break;case 52:a=T;break;case 41:this.patternScale=T;break;case 77:break;case 78:y=!0;break;case 53:b&&this.definitionLines.push(b),b={angle:T*Math.PI/180,base:{x:0,y:0},offset:{x:0,y:0},dashLengths:[]};break;case 43:b&&(b.base.x=T);break;case 44:b&&(b.base.y=T);break;case 45:b&&(b.offset.x=T);break;case 46:b&&(b.offset.y=T);break;case 79:break;case 49:b&&b.dashLengths.push(T);break;case 47:this.pixelSize=T;break;case 99:break;case 450:this.hatchObjectType=T,this.gradientStartColor=void 0,this.gradientEndColor=void 0,w=0,P=void 0;break;case 451:break;case 452:this.gradientOneColorMode=T!==0;break;case 453:break;case 460:this.gradientAngle=T;break;case 461:this.gradientShift=T;break;case 462:this.shadeTintValue=T;break;case 463:v();break;case 63:P=T;break;case 421:S(T);break;case 470:v(),this.gradientName=String(F.value);break}continue}switch($){case 10:c||f&&f.kind!=="line"&&f.kind!=="arc"&&f.kind!=="ellipse"&&f.kind,m>0&&c?(k(),d={x:T,y:0}):(f==null?void 0:f.kind)==="line"&&p==="type"?f.sx=T:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cx=T:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.push({x:T,y:0});break;case 20:m>0&&c&&d?d.y=T:(f==null?void 0:f.kind)==="line"&&p==="type"?f.sy=T:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.cy=T:(f==null?void 0:f.kind)==="spline"&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].y=T);break;case 30:m<=0&&!_&&(e=T);break;case 2:this.patternName=String(F.value);break;case 70:this.isSolidFill=T!==0;break;case 71:this.associative=T!==0;break;case 91:m=T;break;case 92:m>0&&(u.length>0||g.length>0||f)&&(D(),N()),o=T,c=(o&2)!==0,l=!1,h=!1,u=[],g=[],f=null,p="type";break;case 72:c?l=T!==0:(D(),T===1?(f={kind:"line",sx:0,sy:0,ex:0,ey:0},p="type"):T===2?f={kind:"arc",cx:0,cy:0,radius:0,startDeg:0,endDeg:0,isCcw:!0}:T===3?f={kind:"ellipse",cx:0,cy:0,mx:0,my:0,ratio:1,startDeg:0,endDeg:0,isCcw:!0}:T===4?f={kind:"spline",degree:3,rational:!1,closed:!1,knots:[],controlPoints:[],fitPoints:[],expectedKnots:0,expectedControls:0,expectedFits:0,fitCountSeen:!1}:f=null);break;case 73:c?h=T!==0:(f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse"?f.isCcw=T!==0:(f==null?void 0:f.kind)==="spline"&&(f.rational=T!==0);break;case 74:(f==null?void 0:f.kind)==="spline"&&(f.closed=T!==0);break;case 93:break;case 42:c&&l&&d?d.bulge=T:(f==null?void 0:f.kind)==="spline"&&f.rational&&f.controlPoints.length>0&&(f.controlPoints[f.controlPoints.length-1].weight=T);break;case 11:(f==null?void 0:f.kind)==="line"?(f.ex=T,p="line-end"):(f==null?void 0:f.kind)==="ellipse"?f.mx=T:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.push({x:T,y:0});break;case 21:(f==null?void 0:f.kind)==="line"?f.ey=T:(f==null?void 0:f.kind)==="ellipse"?f.my=T:(f==null?void 0:f.kind)==="spline"&&f.fitPoints.length>0&&(f.fitPoints[f.fitPoints.length-1].y=T);break;case 40:(f==null?void 0:f.kind)==="arc"?f.radius=T:(f==null?void 0:f.kind)==="ellipse"?f.ratio=T:(f==null?void 0:f.kind)==="spline"&&f.knots.push(T);break;case 50:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.startDeg=T);break;case 51:((f==null?void 0:f.kind)==="arc"||(f==null?void 0:f.kind)==="ellipse")&&(f.endDeg=T);break;case 94:(f==null?void 0:f.kind)==="spline"&&(f.degree=T);break;case 95:(f==null?void 0:f.kind)==="spline"&&(f.expectedKnots=T);break;case 96:(f==null?void 0:f.kind)==="spline"&&(f.expectedControls=T);break;case 97:if((f==null?void 0:f.kind)==="spline"&&!f.fitCountSeen&&(f.controlPoints.length>0||f.knots.length>0)){f.expectedFits=T,f.fitCountSeen=!0;break}tt();break;case 75:D(),N(),m=0,_=!0,this.hatchStyle=T;break;case 210:n=T;break;case 220:r=T;break;case 230:s=T;break}}f&&(g.push(f),f=null),N(),b&&this.definitionLines.push(b),v(),this.elevation=e;const G=new A(n,r,s);return G.lengthSq()>0&&(this.normal=G),this.patternAngle=a*Math.PI/180,this}};hh.typeName="Hatch";let Dn=hh;const Hu=new x,Gu=new x,Ha=class Ha extends Mt{constructor(t,e){super(),this._geoData=null,this._normal=null,this._thickness=0,t!==void 0&&e!==void 0&&(this._geo=new Dt(t,e))}get dxfTypeName(){return"LINE"}get _geo(){return this._geoData==null&&(this._geoData=new Dt(new x,new x)),this._geoData}set _geo(t){this._geoData=t}get startPoint(){return this._geo.startPoint}set startPoint(t){this._geo.startPoint=t}get endPoint(){return this._geo.endPoint}set endPoint(t){this._geo.endPoint=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){let t=this._normal;return t==null&&(t=new A(0,0,1),this._normal=t),t}set normal(t){this.normal.copy(t).normalize()}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"line",line:this._geo.clone(),extent:"bounded"}]}get closed(){return!1}get area(){return 0}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"startX",type:"float",editable:!0,accessor:{get:()=>this.startPoint.x,set:t=>{this.startPoint.x=t}}},{name:"startY",type:"float",editable:!0,accessor:{get:()=>this.startPoint.y,set:t=>{this.startPoint.y=t}}},{name:"startZ",type:"float",editable:!0,accessor:{get:()=>this.startPoint.z,set:t=>{this.startPoint.z=t}}},{name:"endX",type:"float",editable:!0,accessor:{get:()=>this.endPoint.x,set:t=>{this.endPoint.x=t}}},{name:"endY",type:"float",editable:!0,accessor:{get:()=>this.endPoint.y,set:t=>{this.endPoint.y=t}}},{name:"endZ",type:"float",editable:!0,accessor:{get:()=>this.endPoint.z,set:t=>{this.endPoint.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subMoveGripPointsAt(t,e){return It(t,n=>{switch(n){case 0:this.transformBy(X.makeTranslation(e));break;case 1:this.startPoint.add(e);break;case 2:this.endPoint.add(e);break}}),this}subGetOsnapPoints(t,e,n,r){const s=this.startPoint,a=this.endPoint;switch(t){case E.EndPoint:r.push(s),r.push(a);break;case E.MidPoint:r.push(this.midPoint);break;case E.Nearest:{const o=this._geo.project(e);r.push(o)}break;case E.Perpendicular:{const o=this._geo.perpPoint(e);r.push(o)}break;case E.Tangent:break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this.startPoint,n=this.endPoint,r=[new x(e.x,e.y,0),new x(n.x,n.y,0)];return t.lines(r)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLine"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,this.startPoint),t.writePoint3d(11,this.endPoint),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLine");let e=0,n=0,r=0,s=0,a=0,o=0,c=this.thickness,l=0,h=0,u=1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const d=t.readItem();if(!d)break;const g=Number(d.code),f=Number(d.value);switch(g){case 10:e=f;break;case 20:n=f;break;case 30:r=f;break;case 11:s=f;break;case 21:a=f;break;case 31:o=f;break;case 39:c=f;break;case 210:l=f;break;case 220:h=f;break;case 230:u=f;break}}return(l!==0||h!==0||u!==1)&&l*l+h*h+u*u>0&&this.normal.set(l,h,u).normalize(),this.thickness=c,Hu.set(e,n,r),Gu.set(s,a,o),this._geo=new Dt(Hu,Gu),this}getOffsetCurves(t){const e=this._geo.offset(t);return[new Ha(e.startPoint,e.endPoint)]}getOffsetSideAtPoint(t){const e=this.startPoint,n=this.endPoint;return(n.x-e.x)*(t.y-e.y)-(n.y-e.y)*(t.x-e.x)>=0?1:-1}};Ha.typeName="Line";let Xi=Ha;class jl{constructor(t){this.db=t}createDefaultLayer(){const t=new U;return t.colorIndex=7,this.db.tables.layerTable.add(new Wr({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new An({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new An({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new An({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new uo({name:gt,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new Qt({name:gt,dimtxsty:gt}))}createDefaultLayout(){const t=this.db.tables.blockTable.modelSpace,e=new jn;if(e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.objectId,e.limits.min.copy({x:0,y:0}),e.limits.max.copy({x:1e6,y:1e6}),e.extents.min.copy({x:0,y:0,z:0}),e.extents.max.copy({x:1e6,y:1e6,z:0}),this.db.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId,!this.db.tables.blockTable.getAt(ct.PAPER_SPACE_NAME_PREFIX)){const n=new ct;n.name=ct.PAPER_SPACE_NAME_PREFIX,this.db.tables.blockTable.add(n);const r=new jn;r.layoutName="Layout1",r.tabOrder=1,r.blockTableRecordId=n.objectId,r.limits.min.copy({x:0,y:0}),r.limits.max.copy({x:12,y:9}),r.extents.min.copy({x:0,y:0,z:0}),r.extents.max.copy({x:12,y:9,z:0}),this.db.objects.layout.setAt(r.layoutName,r),n.layoutId=r.objectId}}createArrowBlock(){this.ensureArrowBlock("_CAXARROW"),this.ensureArrowBlock("_CLOSEDFILLED")}ensureArrowBlock(t){if(!t||this.db.tables.blockTable.getAt(t))return;const e=t.toUpperCase(),n=new ct;n.name=t;const r=(o=.125)=>{const c=new Dn;c.patternName=yi;const l=new xn;l.add(new mt({x:0,y:0},{x:-1,y:o})),l.add(new mt({x:-1,y:o},{x:-1,y:-o})),l.add(new mt({x:-1,y:-o},{x:0,y:0})),c.add(l),n.appendEntity(c)},s=(o=.125)=>{n.appendEntity(this.lineEntity({x:0,y:0,z:0},{x:-1,y:o,z:0})),n.appendEntity(this.lineEntity({x:0,y:0,z:0},{x:-1,y:-o,z:0}))},a=(o,c)=>{if(c){const l=new Dn;l.patternName=yi;const h=new xn,u=o;h.add(new mt({x:u,y:0},{x:0,y:u})),h.add(new mt({x:0,y:u},{x:-u,y:0})),h.add(new mt({x:-u,y:0},{x:0,y:-u})),h.add(new mt({x:0,y:-u},{x:u,y:0})),l.add(h),n.appendEntity(l)}else n.appendEntity(this.lineEntity({x:-o,y:0,z:0},{x:o,y:0,z:0})),n.appendEntity(this.lineEntity({x:0,y:-o,z:0},{x:0,y:o,z:0}))};switch(e){case"_CAXARROW":case"_CLOSEDFILLED":case"":r();break;case"_CLOSED":s(),n.appendEntity(this.lineEntity({x:-1,y:.125,z:0},{x:-1,y:-.125,z:0}));break;case"_CLOSEDBLANK":s(),n.appendEntity(this.lineEntity({x:-1,y:.125,z:0},{x:-1,y:-.125,z:0}));break;case"_OPEN":s(.1667);break;case"_OPEN30":s(.2679);break;case"_OPEN90":n.appendEntity(this.lineEntity({x:0,y:0,z:0},{x:-.5,y:.5,z:0})),n.appendEntity(this.lineEntity({x:0,y:0,z:0},{x:-.5,y:-.5,z:0}));break;case"_OBLIQUE":case"_ARCHTICK":n.appendEntity(this.lineEntity({x:-.5,y:-.5,z:0},{x:.5,y:.5,z:0}));break;case"_DOT":a(.25,!0);break;case"_DOTSMALL":case"_SMALL":a(.125,!0);break;case"_DOTBLANK":a(.25,!1);break;case"_BOXFILLED":{const o=new Dn;o.patternName=yi;const c=new xn;c.add(new mt({x:-1,y:-.5},{x:0,y:-.5})),c.add(new mt({x:0,y:-.5},{x:0,y:.5})),c.add(new mt({x:0,y:.5},{x:-1,y:.5})),c.add(new mt({x:-1,y:.5},{x:-1,y:-.5})),o.add(c),n.appendEntity(o)}break;case"_BOXBLANK":n.appendEntity(this.lineEntity({x:-1,y:-.5,z:0},{x:0,y:-.5,z:0})),n.appendEntity(this.lineEntity({x:0,y:-.5,z:0},{x:0,y:.5,z:0})),n.appendEntity(this.lineEntity({x:0,y:.5,z:0},{x:-1,y:.5,z:0})),n.appendEntity(this.lineEntity({x:-1,y:.5,z:0},{x:-1,y:-.5,z:0}));break;case"_DATUMFILLED":r(.5);break;case"_DATUMBLANK":s(.5),n.appendEntity(this.lineEntity({x:-1,y:.5,z:0},{x:-1,y:-.5,z:0}));break;case"_ORIGIN":case"_ORIGIN2":a(.5,!1),a(.125,!0);break;case"_INTEGRAL":n.appendEntity(this.lineEntity({x:0,y:-.5,z:0},{x:0,y:.5,z:0}));break;case"_NONE":break;default:r();break}this.db.tables.blockTable.add(n)}lineEntity(t,e){return new Xi(t,e)}}const Ic=Math.PI/200;class Ep{constructor(t){this.database=t}formatLength(t,e){const n=this.createContext(e);return Qn(t,n)}formatPoint2d(t,e){const n=this.createContext(e);return`${Qn(t.x,n)}, ${Qn(t.y,n)}`}formatPoint3d(t,e){const n=this.createContext(e);return`${Qn(t.x,n)}, ${Qn(t.y,n)}, ${Qn(t.z,n)}`}formatAngle(t,e){const n=this.createContext(e),s=(e==null?void 0:e.applyAngbaseAngdir)??!0?ww(t,this.database.angbase,this.database.angdir):O.normalizeAngle(t);return xw(s,n)}createContext(t){return{lunits:this.database.lunits,luprec:Or(this.database.luprec),insunits:this.database.insunits,unitmode:this.database.unitmode,measurement:this.database.measurement,aunits:this.database.aunits,auprec:Or(this.database.auprec),showUnits:(t==null?void 0:t.showUnits)??!1,showApproximate:(t==null?void 0:t.showApproximate)??!1}}}function Qn(i,t){let e;switch(t.lunits){case _t.Scientific:e=Vo(Lw(i,t.luprec),t);break;case _t.Engineering:e=Mw(i,t);break;case _t.Architectural:e=Cw(i,t);break;case _t.Fractional:e=Vo(Ow(i,t),t);break;case _t.WindowsDesktop:case _t.Decimal:default:e=Vo(Ki(i,t.luprec),t)}return Tp(e,vw(i,t),t)}function xw(i,t){let e;switch(t.aunits){case Ut.DegreesMinutesSeconds:e=Cp(i,t);break;case Ut.Gradians:e=Rw(i,t);break;case Ut.Radians:e=Dw(i,t);break;case Ut.SurveyorsUnits:e=Bw(i,t);break;case Ut.DecimalDegrees:default:e=Nw(i,t)}return Tp(e,Aw(i,t),t)}function ww(i,t,e){let n=i-t;return e===1&&(n=-n),O.normalizeAngle(n)}function Vl(i){const t=i.showUnits?'"':"";return i.unitmode===1?{feetInchSeparator:"",fractionSeparator:"-",inchSuffix:t}:{feetInchSeparator:"-",fractionSeparator:" ",inchSuffix:t}}function Or(i,t=0,e=8){return Number.isFinite(i)?Math.max(t,Math.min(e,Math.round(i))):t}function qi(i){return Object.is(i,-0)?0:i}function Tp(i,t,e){return!e.showApproximate||!t?i:`~ ${i}`}function vw(i,t){if(!Number.isFinite(i))return!1;const e=Pw(i,t);return Ul(i,e)}function Aw(i,t){if(!Number.isFinite(i))return!1;if(t.aunits===Ut.SurveyorsUnits)return Sw(i,t.auprec);const e=kw(i,t);return Ul(i,e)}function Sw(i,t){const n=((90-O.radToDeg(i))%360+360)%360,r=Op(n),s=Math.min(Math.abs(n-r.base),Math.abs(r.base+90-n)),a=O.degToRad(s),o=Lp(a,t);return Ul(a,o)}function Pw(i,t){const e=qi(i);switch(t.lunits){case _t.Scientific:return Iw(e,t.luprec);case _t.Engineering:case _t.Architectural:case _t.Fractional:return Ew(e,t);case _t.WindowsDesktop:case _t.Decimal:default:return bi(e,t.luprec)}}function kw(i,t){const e=qi(i);switch(t.aunits){case Ut.DegreesMinutesSeconds:return Lp(e,t.auprec);case Ut.Gradians:return bi(e/Ic,t.auprec)*Ic;case Ut.Radians:return bi(e,t.auprec);case Ut.DecimalDegrees:default:return O.degToRad(bi(O.radToDeg(e),t.auprec))}}function bi(i,t){if(!Number.isFinite(i))return 0;const e=10**t;return Math.round(qi(i)*e)/e}function Iw(i,t){if(!Number.isFinite(i))return 0;const e=qi(i);if(e===0)return 0;const n=e.toExponential(t);return Number(n)}function Ew(i,t){if(!Number.isFinite(i))return 0;const e=i<0?-1:1,n=Math.abs(i),r=Math.floor(n/12),s=n-r*12;if(t.lunits===_t.Architectural||t.lunits===_t.Fractional){const a=1<<Or(t.luprec,0,8),o=Tw(s,a);return e*(r*12+o)}return e*(r*12+bi(s,t.luprec))}function Tw(i,t){const e=Math.floor(i),n=i-e,r=Math.round(n*t);return r>=t?e+1:e+r/t}function Lp(i,t){const e=O.radToDeg(i),n=e<0?-1:1,r=Math.abs(e),s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=bi((a-o)*60,t),l=s+o/60+c/3600;return O.degToRad(n*l)}function Ul(i,t){if(i===t)return!1;const e=Math.max(Math.abs(i),Math.abs(t),1);return Math.abs(i-t)>e*Number.EPSILON*8}function Ki(i,t){if(!Number.isFinite(i))return"0";const e=qi(i);if(Number.isInteger(e)&&t===0)return String(e);const r=e.toFixed(t).replace(/\.?0+$/,"");return r===""||r==="-"?"0":r}function Lw(i,t){if(!Number.isFinite(i))return"0";const e=qi(i);if(e===0)return"0";const n=e.toExponential(t).match(/^(.+)e([+-])(\d+)$/i);if(!n)return"0";const[,r,s,a]=n,o=a.length<2?a.padStart(2,"0"):a;return`${r}E${s}${o}`.toUpperCase()}function Mw(i,t){if(!Number.isFinite(i))return"0";const e=Vl(t),n=i<0?"-":"",r=Math.abs(i),s=Math.floor(r/12),a=r-s*12,o=Ki(a,t.luprec);return s===0?`${n}${o}${e.inchSuffix}`:`${n}${s}'${e.feetInchSeparator}${o}${e.inchSuffix}`}function Cw(i,t){if(!Number.isFinite(i))return"0";const e=Vl(t),n=i<0?"-":"",r=Math.abs(i),s=Math.floor(r/12),a=r-s*12,o=1<<Or(t.luprec,0,8),c=Mp(a,o,e.fractionSeparator);return s===0?`${n}${c}${e.inchSuffix}`:`${n}${s}'${e.feetInchSeparator}${c}${e.inchSuffix}`}function Ow(i,t){if(!Number.isFinite(i))return"0";const e=Vl(t),n=i<0?"-":"",r=Math.abs(i),s=1<<Or(t.luprec,0,8);return`${n}${Mp(r,s,e.fractionSeparator)}`}function Mp(i,t,e){const n=Math.floor(i),r=i-n;let s=Math.round(r*t);if(s>=t)return String(n+1);if(s===0)return String(n);const a=Yw(s,t);s/=a;const o=t/a,c=`${s}/${o}`;return n===0?c:`${n}${e}${c}`}function Nw(i,t){const e=O.radToDeg(i);return`${Ki(e,t.auprec)}${t.showUnits?"°":""}`}function Dw(i,t){return`${Ki(i,t.auprec)}${t.showUnits?" rad":""}`}function Rw(i,t){const e=i/Ic;return`${Ki(e,t.auprec)}${t.showUnits?"g":""}`}function Cp(i,t){const e=O.radToDeg(i),n=e<0?"-":"",r=Math.abs(e),s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=(a-o)*60,l=Ki(c,t.auprec),h=t.showUnits?'"':"";return`${n}${s}d${o}'${l}${h}`}function Bw(i,t){const n=((90-O.radToDeg(i))%360+360)%360,r=Op(n),s=Math.min(Math.abs(n-r.base),Math.abs(r.base+90-n)),o=Cp(O.degToRad(s),t).replace(/^-/,"");return`${r.prefix} ${o} ${r.suffix}`.trim()}function Op(i){return i<90?{prefix:"N",suffix:"E",base:0}:i<180?{prefix:"S",suffix:"E",base:90}:i<270?{prefix:"S",suffix:"W",base:180}:{prefix:"N",suffix:"W",base:270}}function Vo(i,t){if(!t.showUnits||t.lunits===_t.Engineering||t.lunits===_t.Architectural)return i;const e=Fw(t.insunits,t.measurement);return e?`${i}${e}`:i}function Fw(i,t){return i===ft.Undefined?t===0?'"':" mm":Tx(i)?Xw(i):Lx(i)?zw(i):""}function Xw(i){switch(i){case ft.Millimeters:return" mm";case ft.Centimeters:return" cm";case ft.Meters:return" m";case ft.Kilometers:return" km";case ft.Decimeters:return" dm";case ft.Microns:return" µm";case ft.Nanometers:return" nm";default:return""}}function zw(i){switch(i){case ft.Inches:case ft.Microinches:case ft.Mils:case ft.USSurveyInch:return'"';case ft.Feet:case ft.USSurveyFeet:return"'";case ft.Miles:case ft.USSurveyMile:return" mi";case ft.Yards:case ft.USSurveyYard:return" yd";default:return""}}function Yw(i,t){let e=Math.abs(i),n=Math.abs(t);for(;n!==0;){const r=n;n=e%n,e=r}return e||1}class Ae extends pt{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this.ownerId=t.objectId,this._recordsByName=new Map,this._unnamedRecords=[]}get numEntries(){return this._recordsByName.size}get totalRecordCount(){return this._recordsByName.size+this._unnamedRecords.length}add(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot add symbol table records outside an active transaction.");const n=e.resolveSymbolTableName(this);t.database=this.database,this.database.commitObjectHandle(t,s=>this.hasId(s)),t.ownerId=this.objectId;const r=this.normalizeName(t.name);r?this._recordsByName.set(r,t):this._unnamedRecords.push(t),e.isRecording()&&e.recordAppend({type:"symbolTable",tableName:n},t)}remove(t){const e=this.normalizeName(t),n=this._recordsByName.get(e);return n?(this.removeRecord(n),!0):!1}removeId(t){const e=this.getIdAt(t);return e?(this.removeRecord(e),!0):!1}removeRecord(t){const e=this.database.transactionManager;if(e.strictMode&&!e.isRecording()&&!e.isApplyingUndoRedo())throw new Error("Cannot remove symbol table records outside an active transaction.");if(e.isRecording()){const n=e.resolveSymbolTableName(this);e.recordRemove({type:"symbolTable",tableName:n},t)}this.removeFromMembership(t),this.database.releaseObjectHandle(t)}removeAll(){for(const t of this._recordsByName.values())this.database.releaseObjectHandle(t);for(const t of this._unnamedRecords)this.database.releaseObjectHandle(t);this._recordsByName.clear(),this._unnamedRecords.length=0}has(t){const e=this.normalizeName(t);return this._recordsByName.has(e)}hasId(t){return this.getIdAt(t)!==void 0}getAt(t){const e=this.normalizeName(t);return this._recordsByName.get(e)}getIdAt(t){const e=this.database.getObjectById(t);if(!(!e||e.getAttrWithoutException("ownerId")!==this.objectId))return e}getOwnerIdAt(t){return this.getIdAt(t)}newIterator(t=!1){return t?new Ti([...this._recordsByName.values(),...this._unnamedRecords]):new Ti(this._recordsByName)}normalizeName(t){return(t??"").trim().toUpperCase()}get dxfEntryCount(){return this.numEntries}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTable"),t.writeInt16(70,this.dxfEntryCount),this}removeFromMembership(t){const e=this.normalizeName(t.name);if(e){this._recordsByName.delete(e);return}const n=this._unnamedRecords.indexOf(t);n>=0&&this._unnamedRecords.splice(n,1)}}class Np extends Ae{constructor(t){super(t)}get modelSpace(){let t=this.getAt(ct.MODEL_SPACE_NAME);return t||(t=new ct,t.name=ct.MODEL_SPACE_NAME,this.add(t)),t}getEntityById(t){const e=this.database.getObjectById(t);if(e instanceof rt)return e}removeEntity(t){let e=!1;for(const n of this.database.tables.blockTable.newIterator())if(n.removeEntity(t)){e=!0;break}return e}getXrefs(){const t=[];for(const e of this.newIterator())e.isXref&&t.push(e);return t}getUnresolvedXrefs(){return this.getXrefs().filter(t=>t.isUnresolvedXref)}normalizeName(t){const e=(t??"").trim();if(!e)return"";if(ct.isModelSapceName(e))return ct.MODEL_SPACE_NAME;if(ct.isPaperSapceName(e)){const n=ct.PAPER_SPACE_NAME_PREFIX,r=e.substring(n.length);return n+r}return super.normalizeName(e)}}const Dp="DwgConverterLicenseError",jw=["evaluation of @mlightcad/dwg-converter has expired"],Vw=["invalid @mlightcad/dwg-converter license key"];function Rp(i){return i==="license_expired"||i==="license_invalid"}function Hl(i){const t=i.toLowerCase();if(jw.some(e=>t.includes(e)))return"license_expired";if(Vw.some(e=>t.includes(e)))return"license_invalid"}function Bp(i){return Hl(i)??"license_invalid"}const Uw=["out of memory","data cannot be cloned","allocation failed","memory access out of bounds"];function Fp(i){const t=i.toLowerCase();return Uw.some(e=>t.includes(e))}function Uo(){const i=globalThis;if(typeof i.postMessage!="function")throw new Error("Worker messaging is not available in this runtime");return i}class Hw{constructor(){this.setupMessageHandler()}setupMessageHandler(){Uo().onmessage=async t=>{const e=t,{id:n,input:r}=e.data;try{const s=await this.executeTask(r);this.sendResponse(n,!0,s)}catch(s){const a=s instanceof Error?s.message:String(s);this.sendResponse(n,!1,void 0,a,this.classifyTaskError(s,a))}}}sendResponse(t,e,n,r,s){const a={id:t,success:e,data:n,error:r,errorCode:s};try{Uo().postMessage(a)}catch(o){const c=o instanceof Error?o.message:String(o);Uo().postMessage({id:t,success:!1,error:c,errorCode:this.classifyPostMessageError(c)})}}classifyTaskError(t,e){if(t instanceof Error){const r=t.code;if(Rp(r))return r;if(t.name===Dp)return Bp(e)}const n=Hl(e);return n||this.classifyPostMessageError(e)}classifyPostMessageError(t){return Fp(t)?"worker_oom":t.toLowerCase().includes("timed out")?"worker_timeout":"worker_error"}}class Bt extends Error{constructor(t,e,n){super(t),this.name="AcDbOpenDatabaseError",this.code=e,this.stage=n==null?void 0:n.stage,this.cause=n==null?void 0:n.cause}static isLicenseErrorCode(t){return Rp(t)}static isWorkerOutOfMemoryMessage(t){return Fp(t)}static classifyThrownError(t){if(t instanceof Error){const n=Bt.readStructuredCode(t);if(n)return n;if(t.name===Dp)return Bp(t.message)}const e=t instanceof Error?t.message:String(t);return Bt.classifyWorkerErrorMessage(e)}static classifyWorkerErrorMessage(t){const e=Hl(t);return e||(Bt.isWorkerOutOfMemoryMessage(t)?"worker_oom":t.toLowerCase().includes("timed out")?"worker_timeout":"worker_error")}static from(t,e){if(t instanceof Bt)return t;const n=t instanceof Error?t.message:String(t),r=Bt.classifyThrownError(t);return new Bt(n,r,{stage:e,cause:t})}static fromTask(t){const e=t.task.name;return Bt.from(t.error,e)}static throwOnWorkerParseFailure(t,e="PARSE"){if(t.success)return;const n=t.error!=null?`Failed to parse drawing due to error: '${t.error}'`:"Failed to parse drawing due to an unknown worker error",r=Bt.mapWorkerResultCode(t.errorCode,t.error);throw new Bt(n,r,{stage:e})}static mapWorkerResultCode(t,e){switch(t){case"worker_oom":return"worker_oom";case"worker_timeout":return"worker_timeout";case"worker_error":return"worker_error";case"license_expired":return"license_expired";case"license_invalid":return"license_invalid";default:return Bt.classifyWorkerErrorMessage(e??"")}}static readStructuredCode(t){const e=t.code;if(typeof e=="string")switch(e){case"license_expired":case"license_invalid":case"worker_oom":case"worker_timeout":case"worker_error":case"parse_failed":case"font_load_failed":case"fetch_failed":case"unknown":return e;default:return}}}class Xp extends Ae{constructor(t){super(t)}}class zp extends Ae{constructor(t){super(t)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class Yp extends Ae{constructor(t){super(t)}}class Nr extends Ae{constructor(t){super(t)}static normalizeFontFileName(t){if(!t)return;const e=t.lastIndexOf(".");return e>=0?t.substring(0,e).toLowerCase():t.toLowerCase()}get dxfEntryCount(){return this.totalRecordCount}resolveAt(t){this.database.ensureTextStyleDefaults();const e=[],n=r=>{const s=r==null?void 0:r.trim();s&&!e.includes(s)&&e.push(s)};n(t),n(this.database.textstyle),n(gt),n("STANDARD");for(const r of e){const s=this.getAt(r);if(s)return s;const a=r.toUpperCase();for(const o of this.newIterator())if(o.name.toUpperCase()===a)return o}return this.newIterator().next().value??void 0}get shapeFiles(){return this.newIterator(!0).toArray().filter(t=>t.isShapeFile)}get fonts(){const t=new Set;for(const e of this.newIterator()){const n=Nr.normalizeFontFileName(e.fileName);n&&t.add(n);const r=Nr.normalizeFontFileName(e.bigFontFileName);r&&t.add(r)}return Array.from(t)}}class jp extends Ae{constructor(t){super(t)}}class Vp extends Ae{constructor(t){super(t)}}class Up extends Ae{constructor(t){super(t)}normalizeName(t){const e=(t??"").trim();return e?Sn.isActiveVportName(e)?Ei:super.normalizeName(e):""}getActiveVport(){return this.getAt(Ei)}getActiveVportBox(t,e){const n=this.getActiveVport();return n==null?void 0:n.resolveModelViewBox(t,e)}}class Hp extends Ae{constructor(t){super(t)}}class Gp extends K{getBtrIdAt(t){for(const[e,n]of this._recordsByName)if(n.blockTableRecordId==t)return n}get maxTabOrder(){let t=-1;return this._recordsByName.forEach(e=>{e.tabOrder>t&&(t=e.tabOrder)}),t}}class Wp{constructor(t){this.database=t}applyForward(t){for(const e of t)this.applyChange(e,!0)}applyInverse(t){for(let e=t.length-1;e>=0;e--)this.applyChange(t[e],!1)}applyChange(t,e){switch(t.kind){case"modify":this.applyModify(t,e);break;case"append":e?this.applyAppend(t.container,t.object):this.applyRemove(t.container,t.object);break;case"remove":e?this.applyRemove(t.container,t.object):this.applyAppend(t.container,t.object);break;case"sysvar":this.applySysvar(t,e);break}}applyModify(t,e){const n=this.database.getObjectById(t.objectId);if(!n)return;const r=e?t.after:t.before;r&&n.restoreFrom(r)}applySysvar(t,e){const n=e?t.after:t.before;n!==void 0&&xt.instance().setVar(t.name,n,this.database)}applyAppend(t,e){switch(t.type){case"blockTableRecord":{const n=this.database.tables.blockTable.getIdAt(t.ownerId);n&&n.appendEntity(e);break}case"symbolTable":{const n=this.getSymbolTable(t.tableName);n&&n.add(e);break}case"dictionary":{const n=this.database.getObjectById(t.dictionaryId);n&&n.setAt(t.key,e);break}}}applyRemove(t,e){switch(t.type){case"blockTableRecord":{const n=this.database.tables.blockTable.getIdAt(t.ownerId);n&&n.removeEntity(e.objectId);break}case"symbolTable":{const n=this.getSymbolTable(t.tableName);n&&n.removeId(e.objectId);break}case"dictionary":{const n=this.database.getObjectById(t.dictionaryId);n&&n.removeId(e.objectId);break}}}getSymbolTable(t){const e=this.database.tables;switch(t){case"appIdTable":return e.appIdTable;case"blockTable":return e.blockTable;case"dimStyleTable":return e.dimStyleTable;case"linetypeTable":return e.linetypeTable;case"textStyleTable":return e.textStyleTable;case"viewTable":return e.viewTable;case"layerTable":return e.layerTable;case"viewportTable":return e.viewportTable;default:return}}}function Ec(i,t){const e=[],n=[],r=[];for(const s of t)if(s.kind==="modify"){const a=i.getObjectById(s.objectId);a instanceof rt&&e.push(a)}else if(s.kind==="append"){if(s.container.type==="blockTableRecord"){const a=i.tables.blockTable.getEntityById(s.object.objectId)??(s.object instanceof rt?s.object:void 0);a&&n.push(a)}}else s.kind==="remove"&&s.container.type==="blockTableRecord"&&s.object instanceof rt&&r.push(s.object);return{modified:e,appended:n,erased:r}}function Wu(i,t){const e=[],n=[];for(const r of t){if(r.kind!=="append"&&r.kind!=="remove"||r.container.type!=="dictionary")continue;const s=r.container.key;if(r.kind==="append"){const a=i.getObjectById(r.object.objectId)??r.object;e.push({object:a,key:s})}else r.kind==="remove"&&n.push({object:r.object,key:s})}return{set:e,erased:n}}function $u(i,t){const e={};for(const n of Dx){const r=i.getAttrWithoutException(n),s=t.getAttrWithoutException(n);mn(r,s)||(e[n]=s)}return e}function qu(i,t,e=!1){const n=[];for(const r of t){if(r.kind!=="modify")continue;const s=i.getObjectById(r.objectId);if(!(s instanceof Wr))continue;const a=r.before,o=r.after;if(!a||!o)continue;const c=e?$u(o,a):$u(a,o);Object.keys(c).length!==0&&n.push({database:i,layer:s,changes:c})}return n}function Gw(i,t){if(i.type!==t.type)return!1;switch(i.type){case"blockTableRecord":return t.type==="blockTableRecord"&&i.ownerId===t.ownerId;case"symbolTable":return t.type==="symbolTable"&&i.tableName===t.tableName;case"dictionary":return t.type==="dictionary"&&i.dictionaryId===t.dictionaryId&&i.key===t.key}}class $p{constructor(){this.changes=[]}getChanges(){return this.changes}clear(){this.changes.length=0}mergeFrom(t){for(const e of t.getChanges())this.mergeChange(e)}recordModify(t){const e=t.objectId;this.changes.find(r=>r.kind==="modify"&&r.objectId===e)||this.changes.push({kind:"modify",objectId:e,before:t.clonePreservingIdentity()})}hasModify(t){return this.changes.some(e=>e.kind==="modify"&&e.objectId===t)}recordAppend(t,e){this.recordStructuralChange({kind:"append",container:t,object:e.clonePreservingIdentity()})}recordRemove(t,e){this.recordStructuralChange({kind:"remove",container:t,object:e.clonePreservingIdentity()})}recordSysvar(t,e){const n=t.toLowerCase();this.changes.find(s=>s.kind==="sysvar"&&s.name===n)||this.changes.push({kind:"sysvar",name:n,before:e})}finalize(t){for(const e of this.changes)if(e.kind==="modify"){const n=t.getObjectById(e.objectId);n&&(e.after=n.clonePreservingIdentity())}else e.kind==="sysvar"&&(e.after=this.getSysvarValue(t,e.name))}recordStructuralChange(t){const e=t.kind==="append"?"remove":"append",n=this.findStructuralChangeIndex(e,t.container,t.object.objectId);if(n>=0){this.changes.splice(n,1);return}this.changes.push(t)}mergeChange(t){if(t.kind==="modify"){this.changes.find(n=>n.kind==="modify"&&n.objectId===t.objectId)||this.changes.push(t);return}if(t.kind==="sysvar"){this.changes.find(n=>n.kind==="sysvar"&&n.name===t.name)||this.changes.push(t);return}this.recordStructuralChange(t)}findStructuralChangeIndex(t,e,n){return this.changes.findIndex(r=>r.kind===t&&r.object.objectId===n&&Gw(r.container,e))}getSysvarValue(t,e){return xt.instance().getVar(e,t)}}class Gl{constructor(){this.openedObjects=new Map,this.originalStates=new Map,this.recorder=new $p}getObject(t,e,n=!1){const r=this.openedObjects.get(t);if(r){if(e===Mi.kForWrite&&!this.originalStates.has(t)){const a=r.clonePreservingIdentity();this.originalStates.set(t,a),this.recorder.recordModify(r)}return r}const s=this.lookupObject(t,n);if(this.openedObjects.set(t,s),e===Mi.kForWrite){const a=s.clonePreservingIdentity();this.originalStates.set(s.objectId,a),this.recorder.recordModify(s)}return s}commit(){this.originalStates.clear(),this.openedObjects.clear()}abort(){for(const[t,e]of this.originalStates){const n=this.openedObjects.get(t);n&&n.restoreFrom(e)}this.originalStates.clear(),this.openedObjects.clear(),this.recorder.clear()}lookupObject(t,e){throw new Error(`lookupObject(${t}) not implemented`)}}class qp extends Gl{constructor(t){super(),this.database=t}lookupObject(t,e){const n=this.database.getObjectById(t,e);if(!n)throw new Error(`lookupObject(${t}) not found`);return n}}class Kp{constructor(){this.undoRecords=[],this.redoRecords=[],this.maxDepth=100}push(t){this.undoRecords.push(t),this.redoRecords.length=0,this.trimUndoRecords()}pushUndo(t){this.undoRecords.push(t),this.trimUndoRecords()}trimUndoRecords(){this.undoRecords.length>this.maxDepth&&this.undoRecords.shift()}popUndo(){return this.undoRecords.pop()}pushRedo(t){this.redoRecords.push(t)}popRedo(){return this.redoRecords.pop()}canUndo(){return this.undoRecords.length>0}canRedo(){return this.redoRecords.length>0}clear(){this.undoRecords.length=0,this.redoRecords.length=0}}class Zp{constructor(t){this.database=t,this.transactionStack=[],this.undoStack=new Kp,this.undoMarkStack=[],this._applyingUndoRedo=!1,this._pendingEntityModified=new Set,this._pendingLayerModified=new Map,this.strictMode=!1,this.changeApplier=new Wp(t)}startTransaction(){const t=new qp(this.database);return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}hasTransaction(){return this.transactionStack.length>0}isRecording(){return this.hasTransaction()&&!this._applyingUndoRedo}isApplyingUndoRedo(){return this._applyingUndoRedo}isOpenedForWriteInTransaction(t){for(const e of this.transactionStack)if(e.recorder.hasModify(t))return!0;return!1}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");if(this.transactionStack.length>0){this.transactionStack[this.transactionStack.length-1].recorder.mergeFrom(t.recorder),t.commit();return}t.recorder.finalize(this.database);const e=t.recorder.getChanges();t.commit(),e.length>0&&(this.dispatchCommitEvents(e),this.enqueueUndoChanges(e))}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");const e=[...t.recorder.getChanges()];this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{t.abort(),e.length>0&&this.changeApplier.applyInverse(e)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}}startUndoMark(t){this.undoMarkStack.push({label:t,pendingChanges:[]})}endUndoMark(){const t=this.undoMarkStack.pop();if(!t)throw new Error("No active undo mark to end.");t.pendingChanges.length!==0&&this.undoStack.push({label:t.label,changes:t.pendingChanges})}cancelUndoMark(){this.undoMarkStack.length>0&&this.undoMarkStack.pop()}undo(){const t=this.undoStack.popUndo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyInverse(t.changes),this.dispatchUndoRedoEvents(t.changes,!0)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.pushRedo(t),!0}redo(){const t=this.undoStack.popRedo();if(!t)return!1;this.database.beginEventBatch(),this._applyingUndoRedo=!0;try{this.changeApplier.applyForward(t.changes),this.dispatchUndoRedoEvents(t.changes,!1)}finally{this._applyingUndoRedo=!1,this.database.endEventBatch()}return this.undoStack.pushUndo(t),!0}canUndo(){return this.undoStack.canUndo()}canRedo(){return this.undoStack.canRedo()}clearUndoStack(){this.undoStack.clear()}recordAppend(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordAppend(t,e))}recordRemove(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordRemove(t,e))}recordSysvar(t,e){var n;this.isRecording()&&((n=this.currentTransaction())==null||n.recorder.recordSysvar(t,e))}resolveSymbolTableName(t){const e=this.database.tables;return t===e.appIdTable?"appIdTable":t===e.blockTable?"blockTable":t===e.dimStyleTable?"dimStyleTable":t===e.linetypeTable?"linetypeTable":t===e.textStyleTable?"textStyleTable":t===e.viewTable?"viewTable":t===e.layerTable?"layerTable":t===e.viewportTable?"viewportTable":t.objectId}runUndoable(t,e){this.startUndoMark(t),this.startTransaction();try{const n=e(this.currentTransaction());return this.commitTransaction(),this.endUndoMark(),n}catch(n){throw this.hasTransaction()&&this.abortTransaction(),this.cancelUndoMark(),n}}enqueueUndoChanges(t){const e=this.undoMarkStack[this.undoMarkStack.length-1];if(e)for(const n of t)e.pendingChanges.push(n)}dispatchCommitEvents(t){const{modified:e,appended:n,erased:r}=Ec(this.database,t);for(const o of e)this.dispatchEntityModified(o);n.length>0&&this.database.notifyEntityAppended(n),r.length>0&&this.database.notifyEntityErased(r);const{set:s,erased:a}=Wu(this.database,t);for(const{object:o,key:c}of s)this.database.notifyDictObjectSet(o,c);for(const{object:o,key:c}of a)this.database.notifyDictObjectErased(o,c);for(const o of t)o.kind==="sysvar"&&o.after!==void 0&&xt.instance().events.sysVarChanged.dispatch({database:this.database,name:o.name,oldVal:o.before,newVal:o.after});for(const o of qu(this.database,t))this.dispatchLayerModified(o)}dispatchUndoRedoEvents(t,e){const{modified:n,appended:r,erased:s}=Ec(this.database,t),{set:a,erased:o}=Wu(this.database,t);if(e){for(const c of n)this.dispatchEntityModified(c);s.length>0&&this.database.notifyEntityAppended(s),r.length>0&&this.database.notifyEntityErased(r);for(const{object:c,key:l}of o)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of a)this.database.notifyDictObjectErased(c,l)}else{for(const c of n)this.dispatchEntityModified(c);r.length>0&&this.database.notifyEntityAppended(r),s.length>0&&this.database.notifyEntityErased(s);for(const{object:c,key:l}of a)this.database.notifyDictObjectSet(c,l);for(const{object:c,key:l}of o)this.database.notifyDictObjectErased(c,l)}for(const c of t)if(c.kind==="sysvar"){const l=e?c.after:c.before,h=e?c.before:c.after;h!==void 0&&xt.instance().events.sysVarChanged.dispatch({database:this.database,name:c.name,oldVal:l,newVal:h})}for(const c of qu(this.database,t,e))this.dispatchLayerModified(c)}dispatchLayerModified(t){if(this.database.isEventBatched()){const e=this._pendingLayerModified.get(t.layer.objectId);if(e){e.changes={...e.changes,...t.changes};return}this._pendingLayerModified.set(t.layer.objectId,{database:t.database,layer:t.layer,changes:{...t.changes}});return}this.database.events.layerModified.dispatch(t)}dispatchEntityModified(t){if(this.database.isEventBatched()){this._pendingEntityModified.add(t);return}this.database.events.entityModified.dispatch({database:this.database,entity:t})}flushPendingLayerModifiedEvents(){if(this._pendingLayerModified.size===0)return;const t=[...this._pendingLayerModified.values()];this._pendingLayerModified.clear();for(const e of t)this.database.events.layerModified.dispatch(e)}flushPendingEntityModifiedEvents(){if(this._pendingEntityModified.size===0)return;const t=[...this._pendingEntityModified];this._pendingEntityModified.clear();for(const e of t)this.database.events.entityModified.dispatch({database:this.database,entity:e})}}const br=class br extends pt{constructor(){super({objectId:"0"}),this._classes=[],this._dimStyleAnnotationScales=new Map,this._handleRegistry=new Map,this._drawNoPlotLayers=!0,this._drawCircleSides=kc,this._eventBatchDepth=0,this._pendingEntityAppended=[],this._pendingEntityErased=[],this._pendingDictObjectSet=[],this._pendingDictObjectErased=[],this._lastOpenError=null,this.events={dictObjetSet:new wt,dictObjectErased:new wt,entityAppended:new wt,entityModified:new wt,entityErased:new wt,layerAppended:new wt,layerModified:new wt,layerErased:new wt,openProgress:new wt,openFailed:new wt},br._unsavedDrawingSequence+=1,this._dwgname=`Drawing${br._unsavedDrawingSequence}.dwg`,this._version=new Tt("AC1014"),this._dwgCodePage=void 0,this._angbase=0,this._angdir=0,this._aunits=Ut.DecimalDegrees,this._auprec=0,this._lunits=_t.Decimal,this._luprec=4,this._celtscale=1,this._cecolor=new U,this._celtype=Pt,this._celweight=exports.AcGiLineWeight.ByLayer,this._cetransparency=new At,this._clayer="0",this._cmlstyle=Ze,this._cmlscale=1,this._cmleaderstyle=Qe,this._hpbackgroundcolor=new U(exports.AcCmColorMethod.None),this._hpcolor=this._cecolor.clone(),this._hplayer=".",this._hptransparency=new At,this._textstyle=gt,this._dimstyle=gt,this._extents=new H,this._insunits=ft.Millimeters,this._unitmode=0,this._measurement=1,this._ltscale=1,this._lwdisplay=!1,this._tilemode=1,this._psltscale=!0,this._cannoscale="1:1",this._dimStyleAnnotationScales=new Map,this._annoallvisible=!0,this._pdmode=0,this._pdsize=0,this._osmode=0,this._orthomode=0,this._comparehatch=js,this._comparercmargin=Vs,this._comparetext=Us,this._comparetolerance=Hs,this._maxHandle=0,this._tables={appIdTable:new Hp(this),blockTable:new Np(this),dimStyleTable:new Xp(this),linetypeTable:new Yp(this),textStyleTable:new Nr(this),ucsTable:new jp(this),viewTable:new Vp(this),layerTable:new zp(this),viewportTable:new Up(this)},this._objects={dictionary:new K(this),dictionaryVar:new K(this),group:new K(this),imageDefinition:new K(this),layerFilter:new K(this),layerIndex:new K(this),layout:new Gp(this),mleaderStyle:new K(this),mlineStyle:new K(this),objectContextData:new K(this),scale:new K(this),sortentsTable:new K(this),xrecord:new K(this)},this._layerFilters=new nn,this.transactionManager=new Zp(this),this.registerBootstrapHandles()}get tables(){return this._tables}get classes(){return this._classes}set classes(t){this._classes=t.map(e=>({...e}))}get objects(){return this._objects}get layerFilters(){return this._layerFilters}set layerFilters(t){this._layerFilters=t??new nn}getObjectById(t,e=!1){return t===this.objectId?this:this._handleRegistry.get(t)}createExtensionDictionaryFor(t){const e=t.extensionDictionary;if(e)return e;const n=new K(this);return n.database=this,n.ownerId=t.objectId,this.commitObjectHandle(n),t.extensionDictionary=n.objectId,n.objectId}isUndoRecording(){return this.transactionManager.isRecording()}openObject(t,e){const n=this.transactionManager.currentTransaction();if(n){const r=n.getObject(t,e);if(r)return r}return this.getObjectById(t)}openObjectForRead(t){return this.openObject(t,Mi.kForRead)}openObjectForWrite(t){return this.openObject(t,Mi.kForWrite)}openEntityForRead(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForRead(e)}openEntityForWrite(t){const e=typeof t=="string"?t:t.objectId;return this.openObjectForWrite(e)}runDatabaseEdit(t,e){if(this.isUndoRecording()){e();return}this.transactionManager.runUndoable(t,e)}getRootDictionaries(){return[this.objects.dictionary,this.objects.dictionaryVar,this.objects.group,this.objects.imageDefinition,this.objects.layerFilter,this.objects.layerIndex,this.objects.layout,this.objects.mleaderStyle,this.objects.mlineStyle,this.objects.objectContextData,this.objects.scale,this.objects.sortentsTable,this.objects.xrecord]}beginEventBatch(){this._eventBatchDepth++}endEventBatch(){this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth===0&&(this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents(),this.flushEventBatch()))}async endEventBatchChunked(t,e){if(this._eventBatchDepth<=0||(this._eventBatchDepth--,this._eventBatchDepth!==0))return;this.transactionManager.flushPendingEntityModifiedEvents(),this.transactionManager.flushPendingLayerModifiedEvents();const n=this._pendingEntityAppended;this._pendingEntityAppended=[];const r=n.length,s=Math.max(1,t);if(r===0){this.flushEventBatchRemainder();return}let a=0;try{for(let o=0;o<r;o+=s){const c=Math.min(o+s,r),l=n.slice(o,c);this.events.entityAppended.dispatch({database:this,entity:l}),a=c,e&&await e(c,r)}}finally{a<r&&this.events.entityAppended.dispatch({database:this,entity:n.slice(a)}),this.flushEventBatchRemainder()}}isEventBatched(){return this._eventBatchDepth>0}notifyEntityAppended(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityAppended.push(...e);return}this.events.entityAppended.dispatch({database:this,entity:t})}notifyEntityErased(t){if(this.isEventBatched()){const e=Array.isArray(t)?t:[t];this._pendingEntityErased.push(...e);return}this.events.entityErased.dispatch({database:this,entity:t})}notifyDictObjectSet(t,e){if(this.isEventBatched()){this._pendingDictObjectSet.push({object:t,key:e});return}this.events.dictObjetSet.dispatch({database:this,object:t,key:e})}notifyDictObjectErased(t,e){if(this.isEventBatched()){this._pendingDictObjectErased.push({object:t,key:e});return}this.events.dictObjectErased.dispatch({database:this,object:t,key:e})}flushEventBatch(){if(this._pendingEntityAppended.length>0){const t=this._pendingEntityAppended;this._pendingEntityAppended=[],this.events.entityAppended.dispatch({database:this,entity:t})}this.flushEventBatchRemainder()}flushEventBatchRemainder(){if(this._pendingEntityErased.length>0){const t=this._pendingEntityErased;this._pendingEntityErased=[],this.events.entityErased.dispatch({database:this,entity:t})}if(this._pendingDictObjectSet.length>0){const t=this._pendingDictObjectSet;this._pendingDictObjectSet=[];for(const{object:e,key:n}of t)this.events.dictObjetSet.dispatch({database:this,object:e,key:n})}if(this._pendingDictObjectErased.length>0){const t=this._pendingDictObjectErased;this._pendingDictObjectErased=[];for(const{object:e,key:n}of t)this.events.dictObjectErased.dispatch({database:this,object:e,key:n})}}get formatter(){return this._formatter??(this._formatter=new Ep(this))}generateHandle(){return this._maxHandleBig!=null?(this._maxHandleBig+=BigInt(1),this._maxHandleBig.toString(16).toUpperCase()):this._maxHandle>=Number.MAX_SAFE_INTEGER?(this._maxHandleBig=BigInt(this._maxHandle),this.generateHandle()):(this._maxHandle++,this._maxHandle.toString(16).toUpperCase())}generateUniqueHandle(){let t=this.generateHandle();for(;this.isHandleTaken(t);)t=this.generateHandle();return t}initializeHandleSeed(t){const e=BigInt("0x"+t);if(e<=BigInt(0))return;const n=e-BigInt(1);if(n<=BigInt(Number.MAX_SAFE_INTEGER)){if(this._maxHandleBig==null){const r=Number(n);r>this._maxHandle&&(this._maxHandle=r)}return}(this._maxHandleBig==null||n>this._maxHandleBig)&&(this._maxHandleBig=n)}adoptExternalHandle(t,e){return this.releaseObjectHandle(t),e&&!e.startsWith(yn)&&!this.isHandleTaken(e)?(t.objectId=e,this.registerObjectHandle(t),this.updateMaxHandle(e),e):this.assignGeneratedHandle(t)}registerObjectHandle(t){const e=t.objectId;!e||e.startsWith(yn)||this._handleRegistry.set(e,t)}releaseObjectHandle(t){const e=t.objectId;!e||e.startsWith(yn)||this._handleRegistry.get(e)===t&&this._handleRegistry.delete(e)}isHandleTaken(t,e){if(!t||t.startsWith(yn))return!1;const n=this._handleRegistry.get(t);return n!==void 0&&n!==e}registerBootstrapHandles(){this._handleRegistry.clear(),this.registerObjectHandle(this);for(const t of[this._tables.blockTable,this._tables.dimStyleTable,this._tables.layerTable,this._tables.linetypeTable,this._tables.appIdTable,this._tables.textStyleTable,this._tables.ucsTable,this._tables.viewTable,this._tables.viewportTable])this.registerObjectHandle(t);for(const t of[this._objects.dictionary,this._objects.dictionaryVar,this._objects.group,this._objects.imageDefinition,this._objects.layerFilter,this._objects.layerIndex,this._objects.layout,this._objects.mleaderStyle,this._objects.mlineStyle,this._objects.objectContextData,this._objects.scale,this._objects.sortentsTable,this._objects.xrecord])this.registerObjectHandle(t)}assignGeneratedHandle(t){const e=t.objectId;this.releaseObjectHandle(t);const n=this.generateUniqueHandle();if(t.objectId=n,this.registerObjectHandle(t),e&&e!==n){if(this.updateMaxHandle(n),t instanceof ct)for(const r of t.newIterator())r.getAttrWithoutException("ownerId")===e&&(r.ownerId=n);if(t instanceof Ae)for(const r of t.newIterator(!0))r.getAttrWithoutException("ownerId")===e&&(r.ownerId=n);if(t instanceof K)for(const r of t.newIterator())r.getAttrWithoutException("ownerId")===e&&(r.ownerId=n)}return n}updateMaxHandle(t){this.trackMaxHandle(t)}trackMaxHandle(t){if(this._maxHandleBig!=null){if(t.length>=14){const n=BigInt("0x"+t);n>this._maxHandleBig&&(this._maxHandleBig=n)}return}const e=parseInt(t,16);if(!isNaN(e)){if(e>Number.MAX_SAFE_INTEGER){this._maxHandleBig=BigInt("0x"+t);return}e>this._maxHandle&&(this._maxHandle=e)}}commitObjectHandle(t,e){const n=t.getAttrWithoutException("objectId"),r=e!=null&&n!=null&&e(n);if(!n||t.isTemp||r){this.assignGeneratedHandle(t);return}const a=this._handleRegistry.get(n);if(a&&a!==t)if(this.shouldPreserveIncomingHandle(t))this.assignGeneratedHandle(a);else{this.assignGeneratedHandle(t);return}this.registerObjectHandle(t),this.updateMaxHandle(n)}shouldPreserveIncomingHandle(t){return!t.isTemp}get currentSpaceId(){return this._currentSpace||(this._currentSpace=this._tables.blockTable.modelSpace),this._currentSpace.objectId}set currentSpaceId(t){const e=this.tables.blockTable.getIdAt(t);if(e==null)throw new Error(`[AcDbDatabase] The specified block table record id '${t}' doesn't exist in the drawing database!`);this._currentSpace=e}get aunits(){return this._aunits}set aunits(t){this.updateSysVar(I.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get auprec(){return this._auprec}set auprec(t){this.updateSysVar(I.AUPREC,this._auprec,t??0,e=>{this._auprec=e})}get lunits(){return this._lunits}set lunits(t){this.updateSysVar(I.LUNITS,this._lunits,t??_t.Decimal,e=>{this._lunits=e})}get luprec(){return this._luprec}set luprec(t){this.updateSysVar(I.LUPREC,this._luprec,t??4,e=>{this._luprec=e})}get version(){return this._version}set version(t){this.updateSysVar(I.ACADVER,this._version,new Tt(t),e=>{this._version=e})}get dwgCodePage(){return this._dwgCodePage}set dwgCodePage(t){this._dwgCodePage=t!=null&&t.trim()?t.trim():void 0}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(I.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get unitmode(){return this._unitmode}set unitmode(t){this.updateSysVar(I.UNITMODE,this._unitmode,t??0,e=>{this._unitmode=e})}get measurement(){return this._measurement}set measurement(t){this.updateSysVar(I.MEASUREMENT,this._measurement,t??1,e=>{this._measurement=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(I.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get cannoscale(){return this._cannoscale}set cannoscale(t){this.updateSysVar(I.CANNOSCALE,this._cannoscale,t||"1:1",e=>{this._cannoscale=e})}getDimStyleAnnotationScale(t){if(t)return this._dimStyleAnnotationScales.get(t.trim().toUpperCase())}setDimStyleAnnotationScale(t,e){!t||!(e>0)||this._dimStyleAnnotationScales.set(t.trim().toUpperCase(),e)}get annoallvisible(){return this._annoallvisible}set annoallvisible(t){const e=!!t;this.updateSysVar(I.ANNOALLVISIBLE,this._annoallvisible,e,n=>{this._annoallvisible=n})}get lwdisplay(){return this._lwdisplay}get drawNoPlotLayers(){return this._drawNoPlotLayers}get drawCircleSides(){return this._drawCircleSides}set drawCircleSides(t){this._drawCircleSides=J.resolveCircleSides(t)}get dwgname(){return this._dwgname}setDwgName(t){const e=t.trim();e&&this.updateSysVar(I.DWGNAME,this._dwgname,e,n=>{this._dwgname=n})}get thumbnailImage(){return this._thumbnailImage}set thumbnailImage(t){if(!t||t.length===0){this._thumbnailImage=void 0;return}this._thumbnailImage=t}isLayerDrawable(t){if(this._drawNoPlotLayers)return!0;const e=this.tables.layerTable.getAt(t);return e==null||e.isPlottable}set lwdisplay(t){this.updateSysVar(I.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get tilemode(){return this._tilemode}set tilemode(t){this.updateSysVar(I.TILEMODE,this._tilemode,t??1,e=>{this._tilemode=e})}get psltscale(){return this._psltscale}set psltscale(t){this._psltscale=t}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(I.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e.clone()})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(I.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celtype(){return this._celtype}set celtype(t){const e=this.normalizeLinetypeName(t??Pt);this.updateSysVar(I.CELTYPE,this._celtype,e,n=>{this._celtype=n})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(I.CELWEIGHT,this._celweight,t??exports.AcGiLineWeight.ByLayer,e=>{this._celweight=e})}get cetransparency(){return this._cetransparency}set cetransparency(t){this.updateSysVar(I.CETRANSPARENCY,this._cetransparency,t??new At,e=>{this._cetransparency=e.clone()})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(I.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get cmlstyle(){return this._cmlstyle}set cmlstyle(t){this.updateSysVar(I.CMLSTYLE,this._cmlstyle,t??Ze,e=>{this._cmlstyle=e})}get cmlscale(){return this._cmlscale}set cmlscale(t){this.updateSysVar(I.CMLSCALE,this._cmlscale,t??1,e=>{this._cmlscale=e})}get cmleaderstyle(){return this._cmleaderstyle}set cmleaderstyle(t){this.updateSysVar(I.CMLEADERSTYLE,this._cmleaderstyle,t??Qe,e=>{this._cmleaderstyle=e})}get hpbackgroundcolor(){return this._hpbackgroundcolor}set hpbackgroundcolor(t){this.updateSysVar(I.HPBACKGROUNDCOLOR,this._hpbackgroundcolor,t??new U(exports.AcCmColorMethod.None),e=>{this._hpbackgroundcolor=e.clone()})}get hpcolor(){return this._hpcolor}set hpcolor(t){this.updateSysVar(I.HPCOLOR,this._hpcolor,t??this._cecolor,e=>{this._hpcolor=e.clone()})}get hplayer(){return this._hplayer}set hplayer(t){this.updateSysVar(I.HPLAYER,this._hplayer,t??".",e=>{this._hplayer=e})}get hptransparency(){return this._hptransparency}set hptransparency(t){this.updateSysVar(I.HPTRANSPARENCY,this._hptransparency,t??new At,e=>{this._hptransparency=e.clone()})}get textstyle(){return this._textstyle}set textstyle(t){this.updateSysVar(I.TEXTSTYLE,this._textstyle,t??gt,e=>{this._textstyle=e})}get dimstyle(){return this._dimstyle}set dimstyle(t){this.updateSysVar(I.DIMSTYLE,this._dimstyle,t??gt,e=>{this._dimstyle=e})}get angbase(){return this._angbase}set angbase(t){this.updateSysVar(I.ANGBASE,this._angbase,t??0,e=>{this._angbase=e})}get angdir(){return this._angdir}set angdir(t){this.updateSysVar(I.ANGDIR,this._angdir,t??0,e=>{this._angdir=e})}get extmax(){return this._extents.max}set extmax(t){if(t){const e=this._extents.max.clone();this._extents.expandByPoint(t),this._extents.max.equals(e)||this.triggerSysVarChangedEvent(I.EXTMAX,e,this._extents.max)}}get extmin(){return this._extents.min}set extmin(t){if(t){const e=this._extents.min.clone();this._extents.expandByPoint(t),this._extents.min.equals(e)||this.triggerSysVarChangedEvent(I.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(I.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(I.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}get osmode(){return this._osmode}set osmode(t){this.updateSysVar(I.OSMODE,this._osmode,t??0,e=>{this._osmode=e})}get orthomode(){return this._orthomode}set orthomode(t){this.updateSysVar(I.ORTHOMODE,this._orthomode,t??0,e=>{this._orthomode=e})}get comparehatch(){return this._comparehatch}set comparehatch(t){const e=Me("COMPAREHATCH",t??js,Ja,to);this.updateSysVar(I.COMPAREHATCH,this._comparehatch,e,n=>{this._comparehatch=n})}get comparercmargin(){return this._comparercmargin}set comparercmargin(t){const e=Me("COMPARERCMARGIN",t??Vs,eo,no);this.updateSysVar(I.COMPARERCMARGIN,this._comparercmargin,e,n=>{this._comparercmargin=n})}get comparetext(){return this._comparetext}set comparetext(t){const e=Me("COMPARETEXT",t??Us,io,ro);this.updateSysVar(I.COMPARETEXT,this._comparetext,e,n=>{this._comparetext=n})}get comparetolerance(){return this._comparetolerance}set comparetolerance(t){const e=Me("COMPARETOLERANCE",t??Hs,so,ao);this.updateSysVar(I.COMPARETOLERANCE,this._comparetolerance,e,n=>{this._comparetolerance=n})}get lastOpenError(){return this._lastOpenError}async read(t,e,n=ur.DXF){const r=Le.instance.get(n);if(r==null)throw new Error(`Database converter for file type '${n}' isn't registered and can can't read this file!`);let s;if(typeof t=="string"){const a=new TextEncoder().encode(t);s=a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength)}else if(t instanceof ArrayBuffer)s=t;else if(ArrayBuffer.isView(t))s=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);else{const a=new Bt("AcDbDatabase.read expects a string, ArrayBuffer, or ArrayBufferView","unknown");throw this._lastOpenError=a,this.events.openFailed.dispatch({database:this,error:a}),a}this.clear(),this._lastOpenError=null,this._drawNoPlotLayers=(e==null?void 0:e.drawNoPlotLayers)??!0,this.drawCircleSides=(e==null?void 0:e.circleSides)??kc,e!=null&&e.fileName&&this.setDwgName(e.fileName),zg(this);try{await r.read(s,this,{minimumChunkSize:e&&e.minimumChunkSize||10,progress:this.createConversionProgressHandler(),timeout:e==null?void 0:e.timeout,encoding:e==null?void 0:e.encoding,sysVars:e==null?void 0:e.sysVars})}catch(a){const o=Bt.from(a);throw this._lastOpenError=o,this.events.openFailed.dispatch({database:this,error:o}),o}this._lastOpenError=null,this.ensureDatabaseDefaults()}createConversionProgressHandler(){return async(t,e,n,r,s)=>{let a=r;if(n==="ERROR"&&s){const o=Bt.fromTask(s);this._lastOpenError=o,a={code:o.code,message:o.message,stage:o.stage??e}}this.events.openProgress.dispatch({database:this,percentage:t,stage:"CONVERSION",subStage:e,subStageStatus:n,data:a})}}async openUri(t,e){var g;this.events.openProgress.dispatch({database:this,percentage:0,stage:"FETCH_FILE",subStageStatus:"START"});const n=await fetch(t);if(!n.ok)throw this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"ERROR"}),new Error(`Failed to fetch file '${t}' with HTTP status code '${n.status}'!`);const r=n.headers.get("content-length"),s=r?parseInt(r,10):null;let a=0;const o=(g=n.body)==null?void 0:g.getReader();if(!o)throw new Error("Failed to get response reader");const c=[];for(;;){const{done:f,value:p}=await o.read();if(f)break;if(c.push(p),a+=p.length,s!==null){const m=Math.round(a/s*100);this.events.openProgress.dispatch({database:this,percentage:m,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const l=new Uint8Array(a);let h=0;for(const f of c)l.set(f,h),h+=f.length;const u=this.getFileNameFromUri(t);u&&this.setDwgName(u);const d=u.toLowerCase().split(".").pop();d==="dwg"?await this.read(l.buffer,e,ur.DWG):d==="dxf"?await this.read(l.buffer,e,ur.DXF):await this.read(l.buffer,e,d),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}dxfOut(t,e=16,n=this.version.name,r=!1){this.ensureDatabaseDefaults(),this._layerFilters.root.getNestedFilters().length>0&&!this.tables.layerTable.extensionDictionary&&(this.tables.layerTable.extensionDictionary=this.generateHandle());const s=typeof r=="boolean"?{saveThumbnailImage:r,format:"ascii"}:{saveThumbnailImage:r.saveThumbnailImage??!1,format:r.format??"ascii"},a=n instanceof Tt?n:new Tt(n),o=new tn({database:this,precision:e,version:a,outputFormat:s.format});return this.writeDxfHeaderSection(o),this.writeDxfClassesSection(o),this.writeDxfTablesSection(o,a),this.writeDxfBlocksSection(o),this.writeDxfEntitiesSection(o),this.writeDxfObjectsSection(o),this.writeDxfThumbnailImageSection(o,s.saveThumbnailImage),o.writeStart("EOF"),o.finalizeHandseed(),s.format==="binary"?o.toBinary():o.toString()}async regen(){await new qf(this).read(null,this,{minimumChunkSize:500,progress:this.createConversionProgressHandler()})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new jl(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}ensureEntityStyleDefaults(t){var e;if(t.dxfTypeName==="MLINE"){this.ensureMLineStyle(this._cmlstyle||Ze);return}if(t.dxfTypeName==="MULTILEADER"){this.ensureMLeaderStyle(this._cmleaderstyle||Qe);return}if(t.dxfTypeName==="HATCH"){const n=t;(e=n.applyPatternDefaultsFromSysVars)==null||e.call(n,this)}}ensureTextStyleDefaults(){this.hasDefaultTextStyle()||this.tables.textStyleTable.add(new uo({name:gt,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}hasDefaultTextStyle(){const t=[gt,"STANDARD"];for(const e of t)if(this.tables.textStyleTable.has(e))return!0;for(const e of this.tables.textStyleTable.newIterator())if(e.name.toUpperCase()===gt.toUpperCase())return!0;return!1}ensureDatabaseDefaults(){if(!this.tables.layerTable.has("0")){const e=new U;e.colorIndex=7,this.tables.layerTable.add(new Wr({name:"0",standardFlags:0,linetype:wn,lineWeight:0,isOff:!1,color:e,isPlottable:!0}))}if(this.tables.linetypeTable.has(Oe)||this.tables.linetypeTable.add(new An({name:Oe,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(Pt)||this.tables.linetypeTable.add(new An({name:Pt,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(wn)||this.tables.linetypeTable.add(new An({name:wn,standardFlag:0,description:"Solid line",totalPatternLength:0})),this.ensureTextStyleDefaults(),this.tables.dimStyleTable.has(gt)||this.tables.dimStyleTable.add(new Qt({name:gt,dimtxsty:gt})),!this.tables.viewportTable.has(Ei)){const e=new Sn;e.name=Ei,this.tables.viewportTable.add(e)}this.ensureMLineStyle(this._cmlstyle||Ze),this.ensureMLeaderStyle(this._cmleaderstyle||Qe);const t=this.tables.blockTable.modelSpace;if(!this.objects.layout.getAt("Model")){const e=new jn;e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.objectId,e.limits.min.copy({x:0,y:0}),e.limits.max.copy({x:1e6,y:1e6}),e.extents.min.copy({x:0,y:0,z:0}),e.extents.max.copy({x:1e6,y:1e6,z:0}),this.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId}this.ensureDefaultPaperSpaceLayout(),this.tables.appIdTable.has(pc)||this.tables.appIdTable.add(new ia(pc)),this.tables.appIdTable.has(fc)||this.tables.appIdTable.add(new ia(fc))}ensureDefaultPaperSpaceLayout(){for(const r of this.tables.blockTable.newIterator())if(r.isPaperSapce)return;const t=new ct;t.name=ct.PAPER_SPACE_NAME_PREFIX,this.tables.blockTable.add(t);const e=this.objects.layout.getAt("Layout1")?`Layout${this.objects.layout.maxTabOrder+1}`:"Layout1",n=new jn;n.layoutName=e,n.tabOrder=Math.max(1,this.objects.layout.maxTabOrder+1),n.blockTableRecordId=t.objectId,n.limits.min.copy({x:0,y:0}),n.limits.max.copy({x:12,y:9}),n.extents.min.copy({x:0,y:0,z:0}),n.extents.max.copy({x:12,y:9,z:0}),this.objects.layout.setAt(n.layoutName,n),t.layoutId=n.objectId}ensureMLineStyle(t){var s;const e=this.objects.mlineStyle,n=t.trim();if(!n||e.getAt(n))return;for(const[a,o]of e.entries())if((a==null?void 0:a.toUpperCase())===n.toUpperCase()||((s=o.styleName)==null?void 0:s.toUpperCase())===n.toUpperCase())return;const r=new Xl;r.styleName=n,r.elements=[{offset:.5,color:new U().setByLayer(),lineType:Pt},{offset:-.5,color:new U().setByLayer(),lineType:Pt}],e.setAt(n,r)}ensureMLeaderStyle(t){const e=this.objects.mleaderStyle,n=t.trim();if(!n||e.getAt(n))return;for(const[o]of e.entries())if((o==null?void 0:o.toUpperCase())===n.toUpperCase())return;const r=new po;r.unknown1=2,r.maxLeaderSegmentsPoints=2,r.leaderLineColor=new U().setByBlock(),r.textColor=new U().setByBlock(),r.blockColor=new U().setByBlock(),r.alignSpace=4,r.breakSize=3.75,r.enableBlockRotation=!0,r.unknown2=!1;const s=this.tables.linetypeTable.getAt(Oe);r.leaderLineTypeId=s==null?void 0:s.objectId;const a=this.tables.textStyleTable.getAt(gt);r.textStyleId=a==null?void 0:a.objectId,e.setAt(n,r)}writeDxfHeaderSection(t){var e;if(t.startSection("HEADER"),t.writeString(9,"$ACADVER"),t.writeString(1,((e=t.version)==null?void 0:e.name)??this.version.name),t.writeHandseedPlaceholder(),t.writeString(9,"$DWGCODEPAGE"),t.capabilities.supportsUtf8CodePage)t.writeString(3,"UTF-8");else{const n=this._dwgCodePage,r=n&&!/^utf-?8$/i.test(n)?n:"ANSI_1252";t.writeString(3,r)}t.writeString(9,"$INSUNITS"),t.writeInt16(70,this.insunits),t.writeString(9,"$LUNITS"),t.writeInt16(70,this.lunits),t.writeString(9,"$LUPREC"),t.writeInt16(70,this.luprec),t.writeString(9,"$UNITMODE"),t.writeInt16(70,this.unitmode),t.writeString(9,"$MEASUREMENT"),t.writeInt16(70,this.measurement),t.writeString(9,"$LTSCALE"),t.writeDouble(40,this.ltscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$LWDISPLAY"),t.writeBoolean(290,this.lwdisplay)),t.writeString(9,"$CELTSCALE"),t.writeDouble(40,this.celtscale),t.capabilities.supportsLineWeight&&(t.writeString(9,"$CELWEIGHT"),t.writeLineWeight(370,this.celweight)),t.writeString(9,"$CECOLOR"),t.writeCmColor(this.cecolor),t.writeString(9,"$TILEMODE"),t.writeInt16(70,this.tilemode),t.writeString(9,"$PSLTSCALE"),t.writeInt16(70,this.psltscale?1:0),t.writeString(9,"$CLAYER"),t.writeString(8,this.clayer),t.writeString(9,"$CELTYPE"),t.writeString(6,this.celtype),t.capabilities.supportsTransparency&&!this.cetransparency.isInvalid&&(t.writeString(9,"$CETRANSPARENCY"),t.writeTransparency(this.cetransparency)),t.writeString(9,"$CMLSTYLE"),t.writeString(2,this.cmlstyle),t.writeString(9,"$CMLSCALE"),t.writeDouble(40,this.cmlscale),t.capabilities.supportsMLeader&&(t.writeString(9,"$CMLEADERSTYLE"),t.writeString(2,this.cmleaderstyle)),t.capabilities.supportsHatchHeaderVars&&(this.hpcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPCOLOR"),t.writeCmColor(this.hpcolor)),this.hpbackgroundcolor.colorMethod!==exports.AcCmColorMethod.None&&(t.writeString(9,"$HPBACKGROUNDCOLOR"),t.writeCmColor(this.hpbackgroundcolor)),this.hplayer&&this.hplayer!=="."&&(t.writeString(9,"$HPLAYER"),t.writeString(8,this.hplayer)),t.capabilities.supportsTransparency&&!this.hptransparency.isInvalid&&(t.writeString(9,"$HPTRANSPARENCY"),t.writeTransparency(this.hptransparency))),t.writeString(9,"$TEXTSTYLE"),t.writeString(7,this.textstyle),t.writeString(9,"$DIMSTYLE"),t.writeString(2,this.dimstyle),t.writeString(9,"$ANGBASE"),t.writeAngle(50,this.angbase),t.writeString(9,"$ANGDIR"),t.writeInt16(70,this.angdir),t.writeString(9,"$AUNITS"),t.writeInt16(70,this.aunits),t.writeString(9,"$AUPREC"),t.writeInt16(70,this.auprec),this.writeDxfExtentsHeader(t),t.writeString(9,"$PDMODE"),t.writeInt32(70,this.pdmode),t.writeString(9,"$PDSIZE"),t.writeDouble(40,this.pdsize),t.writeString(9,"$OSMODE"),t.writeInt32(70,this.osmode),t.writeString(9,"$ORTHOMODE"),t.writeInt16(70,this.orthomode),t.endSection()}writeDxfExtentsHeader(t){if(this._extents.isEmpty()&&this.refreshExtentsFromModelSpace(),this._extents.isEmpty()){t.writeString(9,"$EXTMIN"),t.writePoint3d(10,{x:1e20,y:1e20,z:1e20}),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,{x:-1e20,y:-1e20,z:-1e20});return}t.writeString(9,"$EXTMIN"),t.writePoint3d(10,this.extmin),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,this.extmax)}refreshExtentsFromModelSpace(){for(const t of this.tables.blockTable.modelSpace.newIterator())try{const e=t.geometricExtents;e&&!e.isEmpty()&&this._extents.union(e)}catch{}}writeDxfClassesSection(t){if(!(!t.capabilities.supportsClassesSection||this._classes.length===0)){t.startSection("CLASSES");for(const e of this._classes)t.writeStart("CLASS"),t.writeString(1,e.name),t.writeString(2,e.cppClassName),t.writeString(3,e.appName),t.writeInt32(90,e.proxyFlag),t.writeInt32(91,e.instanceCount),t.writeInt8(280,e.wasProxy?1:0),t.writeInt8(281,e.isEntity?1:0);t.endSection()}}writeDxfTablesSection(t,e){t.startSection("TABLES"),this.writeDxfTable(t,"VPORT",this.tables.viewportTable,this.tables.viewportTable.newIterator(),"VPORT"),this.writeDxfTable(t,"VIEW",this.tables.viewTable,this.tables.viewTable.newIterator(),"VIEW"),this.writeDxfTable(t,"UCS",this.tables.ucsTable,this.tables.ucsTable.newIterator(),"UCS"),this.writeDxfTable(t,"LTYPE",this.tables.linetypeTable,this.tables.linetypeTable.newIterator(),"LTYPE"),this.writeDxfTable(t,"LAYER",this.tables.layerTable,this.tables.layerTable.newIterator(),"LAYER"),this.writeDxfTable(t,"STYLE",this.tables.textStyleTable,this.tables.textStyleTable.newIterator(!0),"STYLE"),this.writeDxfTable(t,"APPID",this.tables.appIdTable,this.tables.appIdTable.newIterator(),"APPID"),this.writeDxfTable(t,"DIMSTYLE",this.tables.dimStyleTable,this.tables.dimStyleTable.newIterator(),"DIMSTYLE"),e.capabilities.supportsBlockRecordTable&&this.writeDxfTable(t,"BLOCK_RECORD",this.tables.blockTable,this.tables.blockTable.newIterator(),"BLOCK_RECORD"),t.endSection()}writeDxfBlocksSection(t){t.startSection("BLOCKS");for(const e of this.tables.blockTable.newIterator()){if(e.dxfOutBlockBegin(t),!e.isModelSapce&&!e.isPaperSapce)for(const n of e.newIterator())this.writeDxfEntity(t,n);e.dxfOutBlockEnd(t)}t.endSection()}writeDxfEntitiesSection(t){t.startSection("ENTITIES");for(const e of this.tables.blockTable.newIterator())if(!(!e.isModelSapce&&!e.isPaperSapce))for(const n of e.newIterator())this.writeDxfEntity(t,n);t.endSection()}writeDxfObjectsSection(t){if(!t.capabilities.supportsObjectsSection)return;t.startSection("OBJECTS");const e=this.objects.dictionary;e.ownerId="0";const n=l=>{t.writeStart("DICTIONARY"),l.dxfOut(t,!0)},r=(l,h)=>{e.getAt(l)!==h&&e.setAt(l,h)},s=l=>{e.getAt(l)&&e.remove(l)};r("ACAD_LAYOUT",this.objects.layout),r("ACAD_GROUP",this.objects.group),this.objects.sortentsTable.numEntries>0?r("ACAD_SORTENTS",this.objects.sortentsTable):s("ACAD_SORTENTS");const a=this.objects.mleaderStyle.numEntries>0,o=t.capabilities.supportsMLeader&&a,c=!o&&e.getAt("ACAD_MLEADERSTYLE")===this.objects.mleaderStyle;o?r("ACAD_MLEADERSTYLE",this.objects.mleaderStyle):s("ACAD_MLEADERSTYLE"),this.objects.mlineStyle.numEntries>0?r("ACAD_MLINESTYLE",this.objects.mlineStyle):s("ACAD_MLINESTYLE"),this.objects.imageDefinition.numEntries>0?r("ISM_RASTER_IMAGE_DICT",this.objects.imageDefinition):s("ISM_RASTER_IMAGE_DICT"),this.objects.xrecord.numEntries>0?r("MLIGHT_XRECORD",this.objects.xrecord):s("MLIGHT_XRECORD"),n(e),n(this.objects.layout),n(this.objects.group),this.objects.sortentsTable.numEntries>0&&n(this.objects.sortentsTable),o&&n(this.objects.mleaderStyle),this.objects.mlineStyle.numEntries>0&&n(this.objects.mlineStyle),this.objects.imageDefinition.numEntries>0&&n(this.objects.imageDefinition),this.objects.xrecord.numEntries>0&&n(this.objects.xrecord);for(const[l,h]of this.objects.layout.entries())t.writeStart("LAYOUT"),h.dxfOut(t,!0);for(const[l,h]of this.objects.group.entries())h.name||(h.name=l),t.writeStart("GROUP"),h.dxfOut(t,!0);for(const[l,h]of this.objects.sortentsTable.entries())t.writeStart("SORTENTSTABLE"),h.dxfOut(t,!0);for(const[l,h]of this.objects.imageDefinition.entries())t.writeStart("IMAGEDEF"),h.dxfOut(t,!0);for(const[l,h]of this.objects.layerFilter.entries())t.writeStart("LAYER_FILTER"),h.dxfOut(t,!0);for(const[l,h]of this.objects.layerIndex.entries())t.writeStart("LAYER_INDEX"),h.dxfOut(t,!0);if(o)for(const[l,h]of this.objects.mleaderStyle.entries())t.writeStart("MLEADERSTYLE"),h.dxfOut(t,!0);for(const[l,h]of this.objects.mlineStyle.entries())t.writeStart("MLINESTYLE"),h.dxfOut(t,!0);for(const[l,h]of this.objects.xrecord.entries())t.writeStart("XRECORD"),h.dxfOut(t,!0);this.writeAcLyLayerFilterObjects(t),t.endSection(),c&&e.setAt("ACAD_MLEADERSTYLE",this.objects.mleaderStyle)}writeAcLyLayerFilterObjects(t){const e=op(this._layerFilters);if(e.nodes.length===0)return;const n=[],r=[],s=this.tables.layerTable,a=s.extensionDictionary??this.generateHandle();s.extensionDictionary=a;const o=this.generateHandle(),c=this.generateHandle(),l=[],h=[],u=(f,p,m)=>{const y=this.generateHandle();let b;if(f.children.length>0){const _=this.generateHandle(),w=this.generateHandle(),P=[];for(const S of f.children)P.push({name:S.key,id:u(S,w,!1)});n.push({handle:_,ownerId:y,entries:[{name:Bi,id:w}]}),n.push({handle:w,ownerId:_,entries:P}),b=_}return r.push({handle:y,ownerId:p,extensionDictionaryId:b,data:f.data}),m&&h.push({name:f.key,id:y}),y};for(const f of e.nodes)l.push({name:f.key,id:u(f,o,!0)});const d=new Map,g=this.getObjectById(a);if(g instanceof K)for(const[f,p]of g.entries())d.set(f,p.objectId);d.set(Bi,o),d.set(fo,c),n.unshift({handle:a,ownerId:s.objectId,entries:Array.from(d,([f,p])=>({name:f,id:p}))},{handle:o,ownerId:a,entries:l},{handle:c,ownerId:a,entries:h});for(const f of n){t.writeStart("DICTIONARY"),t.writeHandle(5,f.handle),t.writeObjectId(330,f.ownerId),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const p of f.entries)t.writeString(3,p.name),t.writeObjectId(350,p.id)}for(const f of r){const p=new oo;p.objectId=f.handle,p.ownerId=f.ownerId,f.extensionDictionaryId&&(p.extensionDictionary=f.extensionDictionaryId),p.data=cp(f.data),t.writeStart("XRECORD"),p.dxfOut(t)}}writeDxfTable(t,e,n,r,s){const a=[...r];t.startTable(e),n.dxfOut(t);for(const o of a){if(s==="BLOCK_RECORD"&&o instanceof ct){o.dxfOutBlockRecord(t);continue}t.writeStart(s),o.dxfOut(t,!0)}t.endTable()}writeDxfEntity(t,e){if(e instanceof Vt&&!t.capabilities.supportsLwPolyline){t.writeStart("POLYLINE"),e.dxfOutAs2dPolyline(t,!0);return}t.writeStart(e.dxfTypeName),e.dxfOut(t,!0)}writeDxfThumbnailImageSection(t,e=!1){const n=this._thumbnailImage;if(!e||!n||n.length===0||!t.capabilities.supportsObjectsSection)return;const r=127;t.startSection("THUMBNAILIMAGE"),t.writeInt32(90,n.length);for(let s=0;s<n.length;s+=r){const a=n.subarray(s,s+r);t.writeString(310,co(a))}t.endSection()}clear(){this.transactionManager.clearUndoStack(),this._classes=[],this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.ucsTable.removeAll(),this._tables.viewTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._tables.appIdTable.removeAll(),this._objects.layout.removeAll(),this._objects.group.removeAll(),this._objects.imageDefinition.removeAll(),this._objects.layerFilter.removeAll(),this._objects.layerIndex.removeAll(),this._objects.mleaderStyle.removeAll(),this._objects.mlineStyle.removeAll(),this._objects.objectContextData.removeAll(),this._objects.scale.removeAll(),this._objects.dictionaryVar.removeAll(),this._objects.sortentsTable.removeAll(),this._objects.xrecord.removeAll(),this._cannoscale="1:1",this._dimStyleAnnotationScales.clear(),this._annoallvisible=!0,this._layerFilters=new nn,this._currentSpace=void 0,this._extents.makeEmpty(),this.registerBootstrapHandles()}updateSysVar(t,e,n,r){xt.instance().applyVarMutation(t,e,n,this,()=>r(n))}normalizeLinetypeName(t){const e=t.trim();return e.toUpperCase()==="BYLAYER"?Pt:e.toUpperCase()==="BYBLOCK"?Oe:e}triggerSysVarChangedEvent(t,e,n){const r=xt.instance(),s=t.toLowerCase();r.getDescriptor(s)!=null&&r.events.sysVarChanged.dispatch({database:this,name:s,oldVal:e,newVal:n})}getFileNameFromUri(t){try{const n=new URL(t).pathname.split("/");return n[n.length-1]||""}catch{return""}}};br._unsavedDrawingSequence=0;let Tc=br;class Ww{constructor(){this.transactionStack=[]}startTransaction(){const t=new Gl;return this.transactionStack.push(t),t}currentTransaction(){return this.transactionStack[this.transactionStack.length-1]}commitTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to commit.");t.commit()}abortTransaction(){const t=this.transactionStack.pop();if(!t)throw new Error("No active transaction to abort.");t.abort()}hasTransaction(){return this.transactionStack.length>0}}const Ho=6,uh=class uh extends rt{get dxfTypeName(){return"TOLERANCE"}constructor(){super(),this._location=new x,this._text="",this._dimensionStyle="",this._normal=new A(0,0,1),this._direction=new A(1,0,0)}get location(){return this._location}set location(t){this._location.set(t.x,t.y,t.z??0)}get text(){return this._text}set text(t){this._text=t}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get normal(){return this._normal}set normal(t){this._normal.set(t.x,t.y,t.z??0),this._normal.lengthSq()>0&&this._normal.normalize()}get direction(){return this._direction}set direction(t){this._direction.set(t.x,t.y,t.z??0),this._direction.lengthSq()>0&&this._direction.normalize()}setOrientation(t,e){return this.normal=t,this.direction=e,this}getBoundingPoints(){return this.getBoundingPolyline().slice(0,4)}getBoundingPolyline(){const{width:t,rowHeight:e,rowCount:n}=this.resolveFrameLayout(),r=e/2,s=r-e*n;return[new x(0,r,0),new x(t,r,0),new x(t,s,0),new x(0,s,0),new x(0,r,0)].map(o=>this.toFrameWcs(o.x,o.y))}get geometricExtents(){const t=new H;for(const e of this.getBoundingPoints())t.expandByPoint(e);return t.isEmpty()&&t.expandByPoint(this._location),t}subGetGripPoints(){return[this._location]}subMoveGripPointsAt(t,e){return le(t,e,this._location),this}subGetOsnapPoints(t,e,n,r){t===E.Insertion&&r.push(this._location)}transformBy(t){const e=this.resolveLocalBasis(),n=this._location.clone(),r=n.clone().add(e.xAxis),s=n.clone().add(e.yAxis);n.applyMatrix4(t),r.applyMatrix4(t),s.applyMatrix4(t);const a=new A(r).sub(n),o=new A(s).sub(n);let c=new A().crossVectors(a,o);c.lengthSq()===0?c=this._normal.clone().transformDirection(t):c.normalize();let l=a.clone();return l.lengthSq()===0?l=this._direction.clone().transformDirection(t):l.normalize(),this._location.copy(n),this._normal.copy(c),this._direction.copy(l),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"tolerance",properties:[{name:"annotative",type:"boolean",editable:!0,accessor:{get:()=>this.annotative,set:t=>{this.annotative=t}}},{name:"text",type:"string",editable:!0,accessor:{get:()=>this.text,set:t=>{this.text=t}}},{name:"dimensionStyle",type:"string",editable:!0,accessor:{get:()=>this.dimensionStyle,set:t=>{this.dimensionStyle=t}}},{name:"textHeight",type:"float",editable:!1,accessor:{get:()=>this.textHeight}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}get annotative(){return ve(this)}set annotative(t){pe(this,t)}subWorldDraw(t,e){const r=this.collectFrameLineSegments().map(([o,c])=>t.lines([o,c])),s=this.drawToleranceText(t,e);let a;if(r.length>0&&s?a=t.group([...r,s]):r.length===1?a=r[0]:r.length>1?a=t.group(r):a=s,a&&this.annotative){const o=Yn(this);if(o.annotationScale){const c=a.userData??(a.userData={});c.annotationScale=o.annotationScale}}return a}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbFcf"),this._dimensionStyle&&t.writeString(3,this._dimensionStyle),t.writePoint3d(10,this._location),t.writeString(1,this._text),this._normal.equals(A.Z_AXIS)||t.writeVector3d(210,this._normal),this._direction.equals(A.X_AXIS)||t.writeVector3d(11,this._direction),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbFcf");let e=this.location.x,n=this.location.y,r=this.location.z,s=this.normal.x,a=this.normal.y,o=this.normal.z,c=this.direction.x,l=this.direction.y,h=this.direction.z,u=!1,d=!1;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 1:this.text=String(g.value);break;case 3:this.dimensionStyle=String(g.value);break;case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:c=p,d=!0;break;case 21:l=p,d=!0;break;case 31:h=p,d=!0;break;case 210:s=p,u=!0;break;case 220:a=p,u=!0;break;case 230:o=p,u=!0;break}}return this.location={x:e,y:n,z:r},u&&(this.normal={x:s,y:a,z:o}),d&&(this.direction={x:c,y:l,z:h}),this}get textHeight(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxt)??Qt.DEFAULT_DIM_VALUES.dimtxt,n=(t==null?void 0:t.dimscale)??Qt.DEFAULT_DIM_VALUES.dimscale;return e*n}drawToleranceText(t,e){const n=this.parseToleranceFrame(this._text);if(n.length===0)return;const r=this.resolveFrameLayout(n),s=this.getTextStyle(),a=[];for(let o=0;o<n.length;o++){const c=n[o];let l=r.cellPadding;const h=-r.rowHeight*o;for(let u=0;u<c.cells.length;u++){const d=c.cells[u],g=r.columnWidths[u]??this.textHeight;if(d.trim()){const f=this.toFrameWcs(l+g/2,h),p={text:d,height:this.textHeight,width:1/0,position:f,directionVector:this._direction,attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,drawingDirection:exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT};a.push(t.mtext(p,s,e))}l+=g+r.columnGap}}if(a.length!==0)return a.length===1?a[0]:t.group(a)}collectFrameLineSegments(){const t=this.parseToleranceFrame(this._text),e=this.resolveFrameLayout(t),{width:n,rowHeight:r,rowCount:s,columnDivisions:a}=e;if(n<=0||r<=0||s<=0)return[];const o=r/2,c=o-r*s,l=[],h=(u,d)=>{l.push([u,d])};h(this.toFrameWcs(0,o),this.toFrameWcs(n,o)),h(this.toFrameWcs(n,o),this.toFrameWcs(n,c)),h(this.toFrameWcs(n,c),this.toFrameWcs(0,c)),h(this.toFrameWcs(0,c),this.toFrameWcs(0,o));for(const u of a)h(this.toFrameWcs(u,o),this.toFrameWcs(u,c));for(let u=1;u<t.length;u++){const d=o-r*u;h(this.toFrameWcs(0,d),this.toFrameWcs(n,d))}return l}toFrameWcs(t,e){const n=this.resolveLocalBasis();return this._location.clone().addScaledVector(n.xAxis,t).addScaledVector(n.yAxis,e)}resolveFrameLayout(t){const e=t??this.parseToleranceFrame(this._text),n=this.textHeight,r=n*2,s=n/2,a=n;if(n<=0||e.length===0)return{width:0,totalHeight:0,rowHeight:0,columnWidths:[],columnDivisions:[],rowCount:0,cellPadding:0,columnGap:0};const o=Math.max(...e.map(d=>d.cells.length),0),c=[];for(let d=0;d<o;d++){let g=n;for(const f of e){const p=f.cells[d]??"";if(!p.trim())continue;const m=rx(p,n);g=Math.max(g,m)}c.push(g)}const l=[0];let h=s;for(let d=0;d<c.length;d++)h+=c[d],h+=a,l.push(h-s);return{width:l[l.length-1]??0,totalHeight:r*e.length,rowHeight:r,columnWidths:c,columnDivisions:l,rowCount:e.length,cellPadding:s,columnGap:a}}parseToleranceFrame(t){if(!t)return[];const e=this.splitToleranceRows(t);if(e.length===0)return[];if(!t.includes("%%v"))return e.map(s=>({cells:this.parsePipeSeparatedCells(s)}));const n=e.map(s=>{const o=this.splitToleranceTokens(s,"%%v").slice(0,Ho);for(;o.length<Ho;)o.push("");return o}),r=[0,1];n.some(s=>{var a;return(a=s[2])==null?void 0:a.trim()})&&r.push(2);for(let s=3;s<Ho;s++)n.some(a=>{var o;return(o=a[s])==null?void 0:o.trim()})&&r.push(s);return n.map(s=>({cells:r.map(a=>s[a]??"")}))}splitToleranceRows(t){return t.replace(/\^J/g,`
13
13
  `).split(/\r\n|\r|\n|\\P/i).map(n=>n.trim()).filter(n=>n.length>0)}splitToleranceTokens(t,e){if(!t)return[];const n=[];let r="",s=0;for(let a=0;a<t.length;){if(t.startsWith(e,a)&&s===0){n.push(r),r="",a+=e.length;continue}const o=t[a];o==="{"?s++:o==="}"&&(s=Math.max(0,s-1)),r+=o,a++}return n.push(r),n}parsePipeSeparatedCells(t){return t?this.splitToleranceTokens(t,"|").filter(n=>n.length>0):[]}resolveLocalBasis(){const t=this._normal.clone();t.lengthSq()===0?t.set(0,0,1):t.normalize();let e=this._direction.clone();e.lengthSq()===0?e.set(1,0,0):e.normalize();let n=new A().crossVectors(t,e);return n.lengthSq()===0&&(e=A.X_AXIS.clone(),n=new A().crossVectors(t,e)),n.normalize(),e=new A().crossVectors(n,t).normalize(),{xAxis:e,yAxis:n,zAxis:t}}resolveDimensionStyle(){const t=this._dimensionStyle.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}tryGetDatabase(){try{return this.database}catch{return}}getTextStyle(){const t=this.resolveDimensionStyle(),e=(t==null?void 0:t.dimtxsty)??Qt.DEFAULT_DIM_VALUES.dimtxsty??"Standard",n=this.database.tables.textStyleTable.resolveAt(e);if(!n)throw new Error("No valid text style found in text style table.");return n.textStyle}};uh.typeName="Fcf";let ra=uh;const dh=class dh extends rt{constructor(){super(),this._normal=new A(0,0,1),this._annotationHeight=0,this._columnType=0,this._columnCount=0,this._columnFlowReversed=!1,this._columnAutoHeight=!1,this._columnWidth=0,this._columnGutter=0,this._contents="",this._height=0,this._width=0,this._extentsWidth=0,this._lineSpacingFactor=1,this._lineSpacingStyle=0,this._backgroundFill=!1,this._backgroundFillColor=13158600,this._backgroundFillTransparency=1,this._backgroundScaleFactor=1,this._rotation=0,this._styleName="",this._location=new x,this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._direction=new A(1,0,0),this._drawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT}get dxfTypeName(){return"MTEXT"}get contents(){return this._contents}set contents(t){this._contents=t}get height(){return this._height}set height(t){this._height=t}get annotative(){return ve(this)}set annotative(t){pe(this,t)}get width(){return this._width}set width(t){this._width=t}get extentsWidth(){return this._extentsWidth}set extentsWidth(t){this._extentsWidth=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get lineSpacingFactor(){return this._lineSpacingFactor}set lineSpacingFactor(t){this._lineSpacingFactor=t}get lineSpacingStyle(){return this._lineSpacingStyle}set lineSpacingStyle(t){this._lineSpacingStyle=t}get backgroundFill(){return this._backgroundFill}set backgroundFill(t){this._backgroundFill=t,this._backgroundFillColor=13158600}get backgroundFillColor(){return this._backgroundFillColor}set backgroundFillColor(t){this._backgroundFillColor=t}get backgroundFillTransparency(){return this._backgroundFillTransparency}set backgroundFillTransparency(t){this._backgroundFillTransparency=t}get backgroundScaleFactor(){return this._backgroundScaleFactor}set backgroundScaleFactor(t){this._backgroundScaleFactor=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get location(){return this._location}set location(t){this._location.copy(t)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get direction(){return this._direction}set direction(t){this._direction.copy(t)}get drawingDirection(){return this._drawingDirection}set drawingDirection(t){this._drawingDirection=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get annotationHeight(){return this._annotationHeight}set annotationHeight(t){this._annotationHeight=t}get columnType(){return this._columnType}set columnType(t){this._columnType=t}get columnCount(){return this._columnCount}set columnCount(t){this._columnCount=t}get columnFlowReversed(){return this._columnFlowReversed}set columnFlowReversed(t){this._columnFlowReversed=t}get columnAutoHeight(){return this._columnAutoHeight}set columnAutoHeight(t){this._columnAutoHeight=t}get columnWidth(){return this._columnWidth}set columnWidth(t){this._columnWidth=t}get columnGutter(){return this._columnGutter}set columnGutter(t){this._columnGutter=t}resolveAnnotativePresentation(){var u;const t=Ht(this),e=t.length>0||fe(this);let n=this.height,r=this._location,s=this.direction,a=this.attachmentPoint,o=this.width,c=this.extentsWidth,l,h;if(e&&t.length>0){const d=Ne(this.height,t);l=je(t,(u=this.database)==null?void 0:u.cannoscale)??t.find(f=>f.isDefault)??t[0],n=De(d,l.scale.scaleFactor);const g=l.contextData;g instanceof sn&&(r=g.insertionPoint,s=g.direction,a=g.attachmentPoint,g.definedWidth>0&&(o=g.definedWidth),g.extentsWidth>0&&(c=g.extentsWidth)),h=Ve(t,l)}return{height:n,width:o,extentsWidth:c,position:r,direction:s,attachmentPoint:a,preferred:l,annotationScale:h}}get geometricExtents(){const t=new H,e=this.resolveAnnotativePresentation(),n=e.extentsWidth>0?e.extentsWidth:e.width>0?e.width:an(this.contents,e.height),r=Rf(this.contents),s=Bf(r,e.height,this.lineSpacingFactor,this.lineSpacingStyle);return Ff(t,e.position,n,s,e.attachmentPoint,this.rotation,e.direction)}subGetGripPoints(){return[this.resolveAnnotativePresentation().position]}subMoveGripPointsAt(t,e){const{preferred:n}=this.resolveAnnotativePresentation(),r=n==null?void 0:n.contextData;return r instanceof sn?(le(t,e,r.insertionPoint),n!=null&&n.isDefault&&le(t,e,this._location),this):(le(t,e,this._location),this)}subGetOsnapPoints(t,e,n,r){E.Insertion===t&&r.push(this.resolveAnnotativePresentation().position)}transformBy(t){const e=this._location.clone(),n=this._direction.lengthSq()>0?this._direction.clone().normalize():new A(Math.cos(this._rotation),Math.sin(this._rotation),0),r=new A(-n.y,n.x,n.z);r.lengthSq()===0&&r.set(0,1,0),r.normalize();const s=e.clone().add(n),a=e.clone().add(r);e.applyMatrix4(t),s.applyMatrix4(t),a.applyMatrix4(t);const o=new A(s).sub(e),c=new A(a).sub(e),l=o.length(),h=c.length();return this._location.copy(e),l>0&&(this._direction.copy(o).normalize(),this._rotation=Math.atan2(this._direction.y,this._direction.x),this._width*=l,this._extentsWidth>0&&(this._extentsWidth*=l)),h>0&&(this._height*=h),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"annotative",type:"boolean",editable:!0,accessor:{get:()=>this.annotative,set:t=>{this.annotative=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"attachmentPoint",type:"enum",editable:!0,options:[{label:exports.AcGiMTextAttachmentPoint[1],value:1},{label:exports.AcGiMTextAttachmentPoint[2],value:2},{label:exports.AcGiMTextAttachmentPoint[3],value:3},{label:exports.AcGiMTextAttachmentPoint[4],value:4},{label:exports.AcGiMTextAttachmentPoint[5],value:5},{label:exports.AcGiMTextAttachmentPoint[6],value:6},{label:exports.AcGiMTextAttachmentPoint[7],value:7},{label:exports.AcGiMTextAttachmentPoint[8],value:8},{label:exports.AcGiMTextAttachmentPoint[9],value:9}],accessor:{get:()=>this.attachmentPoint,set:t=>{this.attachmentPoint=t}}},{name:"drawingDirection",type:"enum",editable:!0,options:[{label:exports.AcGiMTextFlowDirection[1],value:1},{label:exports.AcGiMTextFlowDirection[2],value:2},{label:exports.AcGiMTextFlowDirection[3],value:3},{label:exports.AcGiMTextFlowDirection[4],value:4},{label:exports.AcGiMTextFlowDirection[5],value:5}],accessor:{get:()=>this.drawingDirection,set:t=>{this.drawingDirection=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"lineSpacingFactor",type:"float",editable:!0,accessor:{get:()=>this.lineSpacingFactor,set:t=>{this.lineSpacingFactor=t}}},{name:"definedWidth",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"directionX",type:"float",editable:!0,accessor:{get:()=>this.direction.x,set:t=>{this.direction.x=t}}},{name:"directionY",type:"float",editable:!0,accessor:{get:()=>this.direction.y,set:t=>{this.direction.y=t}}},{name:"directionZ",type:"float",editable:!0,accessor:{get:()=>this.direction.z,set:t=>{this.direction.z=t}}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.styleName);if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}subWorldDraw(t,e){const{height:n,width:r,position:s,direction:a,attachmentPoint:o,annotationScale:c}=this.resolveAnnotativePresentation(),l={text:this.contents,height:n,width:r,position:s,rotation:this.rotation,directionVector:a,attachmentPoint:o,drawingDirection:this.drawingDirection,lineSpaceFactor:this.lineSpacingFactor,lineSpaceStyle:this.lineSpacingStyle},h=t.mtext(l,this.getTextStyle(),e);if(h&&c){const u=h.userData;u.annotationScale=c}return h}encodeMTextContentsForDxf(t){return(t??"").replace(/\r\n|\r|\n/g,"\\P")}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMText"),t.writePoint3d(10,this.location),t.writeDouble(40,this.height),t.writeDouble(41,this.width),this.extentsWidth>0&&t.writeDouble(42,this.extentsWidth),t.writeMTextContents(this.encodeMTextContentsForDxf(this.contents??"")),t.writeString(7,this.styleName),t.writeAngle(50,this.rotation),t.writeVector3d(11,this.direction),t.writeInt16(71,this.attachmentPoint),t.writeInt16(72,this.drawingDirection),t.writeInt16(73,this.lineSpacingStyle),t.writeDouble(44,this.lineSpacingFactor),this.backgroundFill&&(t.writeInt16(90,1),t.writeInt32(63,this.backgroundFillColor),t.writeInt32(441,this.backgroundFillTransparency),t.writeDouble(45,this.backgroundScaleFactor)),this.annotationHeight!==0&&t.writeDouble(46,this.annotationHeight),this.columnType!==0&&(t.writeInt16(75,this.columnType),t.writeInt16(76,this.columnCount),t.writeInt16(78,this.columnFlowReversed?1:0),t.writeInt16(79,this.columnAutoHeight?1:0),t.writeDouble(48,this.columnWidth),t.writeDouble(49,this.columnGutter)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMText");let e=this.location.x,n=this.location.y,r=this.location.z,s=this.direction.x,a=this.direction.y,o=this.direction.z,c=this.normal.x,l=this.normal.y,h=this.normal.z,u=!1;const d=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const g=t.readItem();if(!g)break;const f=Number(g.code),p=Number(g.value);switch(f){case 10:e=p;break;case 20:n=p;break;case 30:r=p;break;case 11:s=p,u=!0;break;case 21:a=p,u=!0;break;case 31:o=p,u=!0;break;case 1:case 3:d.push(String(g.value));break;case 7:this.styleName=String(g.value);break;case 40:this.height=p;break;case 41:this.width=p;break;case 42:p>0&&(this.extentsWidth=p);break;case 43:break;case 44:this.lineSpacingFactor=p;break;case 45:this.backgroundScaleFactor=p;break;case 46:this.annotationHeight=p;break;case 48:this.columnWidth=p;break;case 49:this.columnGutter=p;break;case 50:this.rotation=O.degToRad(p);break;case 71:this.attachmentPoint=p;break;case 72:this.drawingDirection=p;break;case 73:this.lineSpacingStyle=p;break;case 75:this.columnType=p;break;case 76:this.columnCount=p;break;case 78:this.columnFlowReversed=p!==0;break;case 79:this.columnAutoHeight=p!==0;break;case 90:this.backgroundFill=p!==0;break;case 63:this.backgroundFillColor=p;break;case 441:this.backgroundFillTransparency=p;break;case 101:for(;!t.atEndOfObject&&!t.atEof&&t.readItem(););break;case 210:c=p;break;case 220:l=p;break;case 230:h=p;break;case 100:return t.pushBackItem(g),this.finishMTextDxfIn(d,e,n,r,s,a,o,u,c,l,h),this}}return this.finishMTextDxfIn(d,e,n,r,s,a,o,u,c,l,h),this}finishMTextDxfIn(t,e,n,r,s,a,o,c,l,h,u){t.length>0&&(this.contents=t.join("")),this.location={x:e,y:n,z:r},c&&(this.direction={x:s,y:a,z:o});const d=new A(l,h,u);d.lengthSq()>0&&this.normal.copy(d.normalize())}};dh.typeName="MText";let Gn=dh;var Qp=(i=>(i[i.MText=0]="MText",i[i.Fcf=1]="Fcf",i[i.BlockReference=2]="BlockReference",i[i.NoAnnotation=3]="NoAnnotation",i))(Qp||{});const gh=class gh extends Mt{get dxfTypeName(){return"LEADER"}constructor(){super(),this._isSplined=!1,this._updated=!1,this._hasArrowHead=!1,this._vertices=[],this._dimensionStyle="",this._hasHookLine=!1,this._isHookLineSameDirection=!1,this._annoType=3,this._textHeight=0,this._textWidth=0,this._associatedAnnotation="",this._normal=new A(0,0,1),this._horizontalDirection=new A(1,0,0)}get isSplined(){return this._isSplined}set isSplined(t){this._isSplined=t}get hasArrowHead(){return this._hasArrowHead}set hasArrowHead(t){this._hasArrowHead=t}get hasHookLine(){return this._hasHookLine}set hasHookLine(t){this._hasHookLine=t}get isHookLineSameDirection(){return this._isHookLineSameDirection}set isHookLineSameDirection(t){this._isHookLineSameDirection=t}get numVertices(){return this._vertices.length}get vertices(){return this._vertices.map(t=>t.clone())}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get annoType(){return this._annoType}set annoType(t){this._annoType=t}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get byBlockColor(){return this._byBlockColor}set byBlockColor(t){this._byBlockColor=t}get associatedAnnotation(){return this._associatedAnnotation}set associatedAnnotation(t){this._associatedAnnotation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get horizontalDirection(){return this._horizontalDirection}set horizontalDirection(t){this._horizontalDirection.copy(t)}get offsetFromBlock(){var t;return(t=this._offsetFromBlock)==null?void 0:t.clone()}set offsetFromBlock(t){this._offsetFromBlock=t?new A(t):void 0}get offsetFromAnnotation(){var t;return(t=this._offsetFromAnnotation)==null?void 0:t.clone()}set offsetFromAnnotation(t){this._offsetFromAnnotation=t?new A(t):void 0}appendVertex(t){this._vertices.push(new x().copy(t)),this._updated=!0}setVertexAt(t,e){if(t<0||t>=this._vertices.length)throw new Error("The vertex index is out of range!");return this._vertices[t].copy(e),this._updated=!0,this}vertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("The vertex index is out of range!");return this._vertices[t].clone()}subGetGripPoints(){return this._vertices.map(t=>t.clone())}subMoveGripPointsAt(t,e){return Gi(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){if(this.numVertices===0)return;if(this.isSplined&&this.splineGeo){switch(t){case E.EndPoint:r.push(this._vertices[0]),r.push(this._vertices[this.numVertices-1]);break;case E.Nearest:r.push(this.splineGeo.nearestPoint(e));break}return}const s=this._vertices;switch(t){case E.EndPoint:r.push(...s);break;case E.MidPoint:case E.Nearest:case E.Perpendicular:{const a=[];for(let o=0;o<s.length-1;o++){const c=[];Wi(s[o],s[o+1],t,e,c),a.push(...c)}if(t===E.MidPoint)r.push(...a);else{const o=me(e,a);o&&r.push(o)}break}}}get geometricExtents(){return this._isSplined&&this.splineGeo?this.splineGeo.calculateBoundingBox():new H().setFromPoints(this.collectDrawPoints())}subGetIntersectCurves(){return this.isSplined&&this.splineGeo?[{kind:"spline",spline:this.splineGeo.clone(),extendable:!1}]:te(this._vertices,!1)}get closed(){return!1}set closed(t){}get area(){return 0}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this.transformVector(this._normal,t),this.transformVector(this._horizontalDirection,t),this._offsetFromBlock&&this.transformVector(this._offsetFromBlock,t),this._offsetFromAnnotation&&this.transformVector(this._offsetFromAnnotation,t),this._splineGeo?(this._splineGeo.transform(t),this._updated=!1):this._updated=!0,this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){return t.lines(this.collectDrawPoints(t))}collectDrawPoints(t){if(this.isSplined&&this.splineGeo)return this.splineGeo.tessellate(qr(t));const e=this._vertices.map(n=>n.clone());if(e.length>0&&!this._isSplined){const n=e[e.length-1];if(this.shouldDrawHookLine(n)){const r=this.computeHookLineEndPoint(n);r&&e.push(r)}}return e}shouldDrawHookLine(t){if(this.resolveHookLineLength(t)<=0)return!1;if(this._hasHookLine)return!0;const e=this.resolveAssociatedMText();if(e&&this.resolveHookSpanFromMText(e,t)>0)return!0;if(this._annoType!==0)return!1;const n=this.resolveDimensionStyle();return((n==null?void 0:n.dimtad)??Qt.DEFAULT_DIM_VALUES.dimtad)!==vn.Center}computeHookLineEndPoint(t){const e=this.resolveHookLineLength(t);if(e<=0)return null;const n=this.resolveHookAxis();return t.clone().addScaledVector(n,e)}resolveHookLineLength(t){const e=this.resolveDimensionStyle(),n=((e==null?void 0:e.dimgap)??Qt.DEFAULT_DIM_VALUES.dimgap)*((e==null?void 0:e.dimscale)??Qt.DEFAULT_DIM_VALUES.dimscale);let r=this._textWidth+n;const s=this.resolveAssociatedMText();if(s){const a=this.resolveHookSpanFromMText(s,t);if(a>0)r=Math.max(r,a);else{const o=this.resolveAnnotationWidth(s);o>0&&(r=Math.max(r,o))}}return r}resolveHookAxis(){const t=this._horizontalDirection.clone();t.lengthSq()===0?t.set(1,0,0):t.normalize();const e=this._isHookLineSameDirection?1:-1;return t.multiplyScalar(e),t}resolveHookSpanFromMText(t,e){const n=this.resolveHookAxis(),r=this.resolveMTextLayoutMetrics(t);let s=0;for(const a of ox(r)){const o=(a.x-e.x)*n.x+(a.y-e.y)*n.y+(a.z-e.z)*n.z;o>s&&(s=o)}return s}resolveAnnotationWidth(t){if(t.extentsWidth>0)return t.extentsWidth;const e=Tl(t.contents).split(`
14
14
  `);return Math.max(...e.map(n=>an(n.trim(),t.height)),0)}resolveMTextLayoutMetrics(t){return sx({contents:t.contents,height:t.height,width:t.width,extentsWidth:t.extentsWidth,lineSpacingFactor:t.lineSpacingFactor,lineSpacingStyle:t.lineSpacingStyle,attachmentPoint:t.attachmentPoint,rotation:t.rotation,direction:t.direction,location:t.location})}scoreMTextAssociation(t,e){const n=this.resolveMTextLayoutMetrics(t),r=Math.max(t.height*2,1),s=Math.max(t.height,1),a=Math.max(n.height,t.height*4,10);return cx(e,n,{padX:r,padYAbove:s,padYBelow:a})}resolveDimensionStyle(){var n;const t=(n=this._dimensionStyle)==null?void 0:n.trim(),e=this.tryGetDatabase();if(!(!t||!e))return e.tables.dimStyleTable.getAt(t)}resolveAssociatedMText(){const t=this.tryGetDatabase();if(!t)return;if(this._associatedAnnotation){const o=t.getObjectById(this._associatedAnnotation);if(o instanceof Gn)return o}if(this._vertices.length===0)return;const e=this.getAttrWithoutException("ownerId");if(!e)return;const n=t.getObjectById(e);if(!(n instanceof ct))return;const r=this._vertices[this._vertices.length-1];let s,a=Number.POSITIVE_INFINITY;for(const o of n.newIterator()){if(!(o instanceof Gn))continue;const c=this.scoreMTextAssociation(o,r);c==null||c>=a||(a=c,s=o)}return s}tryGetDatabase(){try{return this.database}catch{return}}get splineGeo(){return this.createSplineIfNeeded(),this._splineGeo}createSplineIfNeeded(){this.isSplined&&this.numVertices>=2&&(this._splineGeo==null||this._updated)&&(this._splineGeo=new Xt(this._vertices,"Uniform"),this._updated=!1)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLeader"),t.writeString(3,this.dimensionStyle),t.writeInt16(71,this.hasArrowHead?1:0),t.writeInt16(72,this.isSplined?1:0),t.writeInt16(73,this.annoType),t.writeInt16(74,this.isHookLineSameDirection?1:0),t.writeInt16(75,this.hasHookLine?1:0),t.writeInt16(76,this.numVertices),this.textHeight!==0&&t.writeDouble(40,this.textHeight),this.textWidth!==0&&t.writeDouble(41,this.textWidth),this.byBlockColor!=null&&t.writeInt16(77,this.byBlockColor),this.associatedAnnotation&&t.writeHandle(340,this.associatedAnnotation);for(const e of this.vertices)t.writePoint3d(10,e);return t.writeVector3d(210,this.normal),t.writeVector3d(211,this.horizontalDirection),this._offsetFromBlock&&t.writeVector3d(212,this._offsetFromBlock),this._offsetFromAnnotation&&t.writeVector3d(213,this._offsetFromAnnotation),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbLeader"),this._vertices.length=0;let e=null,n=this.normal.x,r=this.normal.y,s=this.normal.z,a=this.horizontalDirection.x,o=this.horizontalDirection.y,c=this.horizontalDirection.z,l=0,h=0,u=0,d=0,g=0,f=0,p=!1,m=!1;const y=()=>{e&&(this.appendVertex(e),e=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 3:this.dimensionStyle=String(b.value);break;case 10:y(),e={x:w,y:0,z:0};break;case 20:e&&(e.y=w);break;case 30:e&&(e.z=w);break;case 40:this.textHeight=w;break;case 41:this.textWidth=w;break;case 71:this.hasArrowHead=w!==0;break;case 72:this.isSplined=w!==0;break;case 73:this.annoType=w;break;case 74:this.isHookLineSameDirection=w!==0;break;case 75:this.hasHookLine=w!==0;break;case 76:break;case 77:this.byBlockColor=w;break;case 210:n=w;break;case 220:r=w;break;case 230:s=w;break;case 211:a=w;break;case 221:o=w;break;case 231:c=w;break;case 212:l=w,p=!0;break;case 222:h=w,p=!0;break;case 232:u=w,p=!0;break;case 213:d=w,m=!0;break;case 223:g=w,m=!0;break;case 233:f=w,m=!0;break;case 340:this.associatedAnnotation=String(b.value);break}}return y(),this.normal={x:n,y:r,z:s},this.horizontalDirection={x:a,y:o,z:c},p&&(this.offsetFromBlock={x:l,y:h,z:u}),m&&(this.offsetFromAnnotation={x:d,y:g,z:f}),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d();return e.length<2?1:Vt.from2dPoints(e,!1).getOffsetSideAtPoint(t)}createOffsetCurve(t){return mo(this.collectPath2d(),!1,t)}collectPath2d(){return this.isSplined&&this.splineGeo?this.splineGeo.getPoints(64).map(t=>new M(t.x,t.y)):this._vertices.map(t=>new M(t.x,t.y))}transformVector(t,e){const n=new x,r=new x(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}};gh.typeName="Leader";let sa=gh;var gr=(i=>(i[i.InvisibleLeader=0]="InvisibleLeader",i[i.StraightLeader=1]="StraightLeader",i[i.SplineLeader=2]="SplineLeader",i))(gr||{}),li=(i=>(i[i.NoneContent=0]="NoneContent",i[i.BlockContent=1]="BlockContent",i[i.MTextContent=2]="MTextContent",i[i.ToleranceContent=3]="ToleranceContent",i))(li||{}),Jp=(i=>(i[i.Horizontal=0]="Horizontal",i[i.Vertical=1]="Vertical",i))(Jp||{}),t0=(i=>(i[i.Unknown=0]="Unknown",i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.Top=3]="Top",i[i.Bottom=4]="Bottom",i))(t0||{});const $w=1,qw=2,Kw=4,Zw=8,Qw=64,Jw=128,tv=32768,fh=class fh extends rt{get dxfTypeName(){return"MULTILEADER"}constructor(){super(),this._leaders=[],this._leaderLineType=1,this._contentType=0,this._doglegEnabled=!1,this._doglegLength=0,this._doglegVector=new A(1,0,0),this._normal=new A(0,0,1),this._mleaderStyleId="",this._textHeight=2.5,this._textWidth=0,this._textRotation=0,this._textDirection=new A(1,0,0),this._textStyleName="",this._textAttachmentPoint=exports.AcGiMTextAttachmentPoint.MiddleLeft,this._textDrawingDirection=exports.AcGiMTextFlowDirection.LEFT_TO_RIGHT,this._textLineSpacingFactor=1,this._textAttachmentDirection=0,this._arrowheadOverrides=[],this._blockAttributes=[]}get leaders(){return this._leaders.map(t=>this.cloneLeader(t))}get numberOfLeaders(){return this._leaders.length}get leaderLineType(){return this._leaderLineType}set leaderLineType(t){this._leaderLineType=t}get contentType(){return this._contentType}set contentType(t){this._contentType=t}get doglegEnabled(){return this._doglegEnabled}set doglegEnabled(t){this._doglegEnabled=t}get doglegLength(){return this._doglegLength}set doglegLength(t){this._doglegLength=t}get doglegVector(){return this._doglegVector}set doglegVector(t){this._doglegVector.copy(t)}get landingPoint(){return this._landingPoint}set landingPoint(t){this._landingPoint=t?this.createPoint(t):void 0}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get mleaderStyleId(){return this._mleaderStyleId}set mleaderStyleId(t){this._mleaderStyleId=t}get version(){return this._version}set version(t){this._version=t}get leaderStyleId(){return this._leaderStyleId}set leaderStyleId(t){this._leaderStyleId=t}get propertyOverrideFlag(){return this._propertyOverrideFlag}set propertyOverrideFlag(t){this._propertyOverrideFlag=t}get leaderLineColor(){return this._leaderLineColor}set leaderLineColor(t){this._leaderLineColor=t==null?void 0:t.clone()}get leaderLineTypeId(){return this._leaderLineTypeId}set leaderLineTypeId(t){this._leaderLineTypeId=t}get leaderLineWeight(){return this._leaderLineWeight}set leaderLineWeight(t){this._leaderLineWeight=t}get landingEnabled(){return this._landingEnabled}set landingEnabled(t){this._landingEnabled=t}get arrowheadId(){return this._arrowheadId}set arrowheadId(t){this._arrowheadId=t}get arrowheadSize(){return this._arrowheadSize}set arrowheadSize(t){this._arrowheadSize=t}get textStyleId(){return this._textStyleId}set textStyleId(t){this._textStyleId=t}get textLeftAttachmentType(){return this._textLeftAttachmentType}set textLeftAttachmentType(t){this._textLeftAttachmentType=t}get textRightAttachmentType(){return this._textRightAttachmentType}set textRightAttachmentType(t){this._textRightAttachmentType=t}get textAngleType(){return this._textAngleType}set textAngleType(t){this._textAngleType=t}get textAlignmentType(){return this._textAlignmentType}set textAlignmentType(t){this._textAlignmentType=t}get textColor(){return this._textColor}set textColor(t){this._textColor=t==null?void 0:t.clone()}get textFrameEnabled(){return this._textFrameEnabled}set textFrameEnabled(t){this._textFrameEnabled=t}get landingGap(){return this._landingGap}set landingGap(t){this._landingGap=t}get textAttachment(){return this._textAttachment}set textAttachment(t){this._textAttachment=t}get textFlowDirection(){return this._textFlowDirection}set textFlowDirection(t){this._textFlowDirection=t}get blockContentId(){return this._blockContentId}set blockContentId(t){this._blockContentId=t}get blockContentColor(){return this._blockContentColor}set blockContentColor(t){this._blockContentColor=t==null?void 0:t.clone()}get blockContentScale(){return this._blockContentScale}set blockContentScale(t){this._blockContentScale=t}get blockContentRotation(){return this._blockContentRotation}set blockContentRotation(t){this._blockContentRotation=t}get blockContentConnectionType(){return this._blockContentConnectionType}set blockContentConnectionType(t){this._blockContentConnectionType=t}get annotativeScaleEnabled(){return this._annotativeScaleEnabled}set annotativeScaleEnabled(t){this._annotativeScaleEnabled=t}get annotative(){return this._annotativeScaleEnabled===!0||ve(this)}set annotative(t){this._annotativeScaleEnabled=t,pe(this,t)}get arrowheadOverrides(){return this._arrowheadOverrides}set arrowheadOverrides(t){this._arrowheadOverrides=t}get blockAttributes(){return this._blockAttributes}set blockAttributes(t){this._blockAttributes=t}get textDirectionNegative(){return this._textDirectionNegative}set textDirectionNegative(t){this._textDirectionNegative=t}get textAlignInIPE(){return this._textAlignInIPE}set textAlignInIPE(t){this._textAlignInIPE=t}get bottomTextAttachmentDirection(){return this._bottomTextAttachmentDirection}set bottomTextAttachmentDirection(t){this._bottomTextAttachmentDirection=t}get topTextAttachmentDirection(){return this._topTextAttachmentDirection}set topTextAttachmentDirection(t){this._topTextAttachmentDirection=t}get contentScale(){return this._contentScale}set contentScale(t){this._contentScale=t}get contentBasePosition(){return this._contentBasePosition}set contentBasePosition(t){this._contentBasePosition=t}get textAnchor(){return this._textAnchor}set textAnchor(t){this._textAnchor=t}get textLineSpacingStyle(){return this._textLineSpacingStyle}set textLineSpacingStyle(t){this._textLineSpacingStyle=t}get textBackgroundColor(){return this._textBackgroundColor}set textBackgroundColor(t){this._textBackgroundColor=t==null?void 0:t.clone()}get textBackgroundScaleFactor(){return this._textBackgroundScaleFactor}set textBackgroundScaleFactor(t){this._textBackgroundScaleFactor=t}get textBackgroundTransparency(){return this._textBackgroundTransparency}set textBackgroundTransparency(t){this._textBackgroundTransparency=t}get textBackgroundColorOn(){return this._textBackgroundColorOn}set textBackgroundColorOn(t){this._textBackgroundColorOn=t}get textFillOn(){return this._textFillOn}set textFillOn(t){this._textFillOn=t}get textColumnType(){return this._textColumnType}set textColumnType(t){this._textColumnType=t}get textUseAutoHeight(){return this._textUseAutoHeight}set textUseAutoHeight(t){this._textUseAutoHeight=t}get textColumnWidth(){return this._textColumnWidth}set textColumnWidth(t){this._textColumnWidth=t}get textColumnGutterWidth(){return this._textColumnGutterWidth}set textColumnGutterWidth(t){this._textColumnGutterWidth=t}get textColumnFlowReversed(){return this._textColumnFlowReversed}set textColumnFlowReversed(t){this._textColumnFlowReversed=t}get textColumnHeight(){return this._textColumnHeight}set textColumnHeight(t){this._textColumnHeight=t}get textUseWordBreak(){return this._textUseWordBreak}set textUseWordBreak(t){this._textUseWordBreak=t}get hasMText(){return this._hasMText}set hasMText(t){this._hasMText=t}get hasBlock(){return this._hasBlock}set hasBlock(t){this._hasBlock=t}get planeOrigin(){return this._planeOrigin}set planeOrigin(t){this._planeOrigin=t}get planeXAxisDirection(){return this._planeXAxisDirection}set planeXAxisDirection(t){this._planeXAxisDirection=t}get planeYAxisDirection(){return this._planeYAxisDirection}set planeYAxisDirection(t){this._planeYAxisDirection=t}get planeNormalReversed(){return this._planeNormalReversed}set planeNormalReversed(t){this._planeNormalReversed=t}get leaderSections(){return this.leaders}get blockContentData(){return this.blockContent}get mtextContent(){return this._mtextContent?{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint.clone()}:void 0}set mtextContent(t){if(!t){this._mtextContent=void 0,this._contentType===2&&(this._contentType=0);return}this._mtextContent={text:t.text,anchorPoint:this.createPoint(t.anchorPoint)},this._contentType=2}get contents(){var t;return((t=this._mtextContent)==null?void 0:t.text)??""}set contents(t){this._mtextContent?this._mtextContent.text=t:this._mtextContent={text:t,anchorPoint:new x},this._contentType=2}get textLocation(){var t;return(t=this._mtextContent)==null?void 0:t.anchorPoint}set textLocation(t){if(!t){this._mtextContent=void 0;return}this._mtextContent?this._mtextContent.anchorPoint.copy(t):this._mtextContent={text:"",anchorPoint:this.createPoint(t)},this._contentType=2}get textHeight(){return this._textHeight}set textHeight(t){this._textHeight=t}get textWidth(){return this._textWidth}set textWidth(t){this._textWidth=t}get textRotation(){return this._textRotation}set textRotation(t){this._textRotation=t}get textDirection(){return this._textDirection}set textDirection(t){this._textDirection.copy(t)}get textStyleName(){return this._textStyleName}set textStyleName(t){this._textStyleName=t}get textAttachmentPoint(){return this._textAttachmentPoint}set textAttachmentPoint(t){this._textAttachmentPoint=t}get textDrawingDirection(){return this._textDrawingDirection}set textDrawingDirection(t){this._textDrawingDirection=t}get textLineSpacingFactor(){return this._textLineSpacingFactor}set textLineSpacingFactor(t){this._textLineSpacingFactor=t}get textAttachmentDirection(){return this._textAttachmentDirection}set textAttachmentDirection(t){this._textAttachmentDirection=t}get blockContent(){var t,e,n;return this._blockContent?{blockContentId:this._blockContent.blockContentId,blockHandle:this._blockContent.blockHandle,normal:(t=this._blockContent.normal)==null?void 0:t.clone(),position:(e=this._blockContent.position)==null?void 0:e.clone(),scale:this._blockContent.scale.clone(),rotation:this._blockContent.rotation,color:(n=this._blockContent.color)==null?void 0:n.clone(),transformationMatrix:[...this._blockContent.transformationMatrix]}:void 0}set blockContent(t){var e;if(!t){this._blockContent=void 0,this._contentType===1&&(this._contentType=0);return}this._blockContent={blockContentId:t.blockContentId??t.blockHandle,blockHandle:t.blockHandle,normal:t.normal?new A(t.normal):void 0,position:t.position?this.createPoint(t.position):void 0,scale:new A(t.scale??{x:1,y:1,z:1}),rotation:t.rotation??0,color:(e=t.color)==null?void 0:e.clone(),transformationMatrix:t.transformationMatrix?[...t.transformationMatrix]:[]},this.blockContentId=this._blockContent.blockContentId,this._contentType=1}addLeader(t={}){var n,r;const e={lastLeaderLinePoint:t.lastLeaderLinePoint?this.createPoint(t.lastLeaderLinePoint):void 0,lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:t.landingPoint?this.createPoint(t.landingPoint):void 0,doglegVector:t.doglegVector?new A(t.doglegVector):void 0,doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:((n=t.breaks)==null?void 0:n.map(s=>({index:s.index,start:this.createPoint(s.start),end:this.createPoint(s.end)})))??[],leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:[]};return(r=t.leaderLines)==null||r.forEach(s=>{e.leaderLines.push(this.createLeaderLine(s))}),this._leaders.push(e),this._leaders.length-1}removeLeader(t){return this.checkLeaderIndex(t),this._leaders.splice(t,1),this}addLeaderLine(t,e=[]){return this.checkLeaderIndex(t),this._leaders[t].leaderLines.push(this.createLeaderLine({vertices:e})),this._leaders[t].leaderLines.length-1}appendVertex(t,e,n){return this.getMutableLeaderLine(t,e).vertices.push(this.createPoint(n)),this}setLeaderLineVertices(t,e,n){return this.getMutableLeaderLine(t,e).vertices=n.map(r=>this.createPoint(r)),this}getLeaderLineVertices(t,e){return this.getMutableLeaderLine(t,e).vertices.map(n=>n.clone())}addBreak(t,e,n,r){return this.getMutableLeaderLine(t,e).breaks.push({start:this.createPoint(n),end:this.createPoint(r)}),this}setLandingPoint(t,e){return this.checkLeaderIndex(t),this._leaders[t].landingPoint=e?this.createPoint(e):void 0,this}setDoglegDirection(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegVector=new A(e),this}setDoglegLength(t,e){return this.checkLeaderIndex(t),this._leaders[t].doglegLength=e,this}get geometricExtents(){const t=this.collectGeometryPoints();return t.length>0?new H().setFromPoints(t):new H}subGetIntersectCurves(){const t=[];return this._leaders.forEach(e=>{e.leaderLines.forEach(n=>{t.push(...te(n.vertices,!1))})}),t}subGetGripPoints(){return this.collectGeometryPoints().map(t=>t.clone())}subMoveGripPointsAt(t,e){return It(t,n=>{this.moveGeometryGripPointAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){var s;if(t===E.Insertion){this.contentBasePosition?r.push(this.contentBasePosition):this._mtextContent?r.push(this._mtextContent.anchorPoint):(s=this._blockContent)!=null&&s.position&&r.push(this._blockContent.position);return}this._leaders.forEach(a=>{a.leaderLines.forEach(o=>{const c=this.getLeaderLineDrawPoints(a,o);if(c.length!==0)switch(t){case E.EndPoint:r.push(...c);break;case E.MidPoint:case E.Nearest:case E.Perpendicular:{const l=[];for(let h=0;h<c.length-1;h++){const u=[];Wi(c[h],c[h+1],t,e,u),l.push(...u)}if(t===E.MidPoint)r.push(...l);else{const h=me(e,l);h&&r.push(h)}break}}})})}transformBy(t){var e,n,r,s,a,o,c,l;return this._leaders.forEach(h=>{var u,d;(u=h.lastLeaderLinePoint)==null||u.applyMatrix4(t),(d=h.landingPoint)==null||d.applyMatrix4(t),h.doglegVector&&this.transformVector(h.doglegVector,t),h.breaks.forEach(g=>{g.start.applyMatrix4(t),g.end.applyMatrix4(t)}),h.leaderLines.forEach(g=>{g.vertices.forEach(f=>f.applyMatrix4(t)),g.breaks.forEach(f=>{f.start.applyMatrix4(t),f.end.applyMatrix4(t)})})}),(e=this._landingPoint)==null||e.applyMatrix4(t),(n=this.contentBasePosition)==null||n.applyMatrix4(t),this.transformVector(this._doglegVector,t),this.transformVector(this._normal,t),(r=this.textAnchor)==null||r.applyMatrix4(t),(s=this._mtextContent)==null||s.anchorPoint.applyMatrix4(t),this.transformVector(this._textDirection,t),(o=(a=this._blockContent)==null?void 0:a.position)==null||o.applyMatrix4(t),(c=this._blockContent)!=null&&c.normal&&this.transformVector(this._blockContent.normal,t),this.blockContentScale&&this.transformVector(this.blockContentScale,t),(l=this.planeOrigin)==null||l.applyMatrix4(t),this.planeXAxisDirection&&this.transformVector(this.planeXAxisDirection,t),this.planeYAxisDirection&&this.transformVector(this.planeYAxisDirection,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"leader",properties:[{name:"annotative",type:"boolean",editable:!0,accessor:{get:()=>this.annotative,set:t=>{this.annotative=t}}},{name:"contentType",type:"enum",editable:!0,options:[{label:li[0],value:0},{label:li[1],value:1},{label:li[2],value:2},{label:li[3],value:3}],accessor:{get:()=>this.contentType,set:t=>{this.contentType=t}}},{name:"leaderLineType",type:"enum",editable:!0,options:[{label:gr[0],value:0},{label:gr[1],value:1},{label:gr[2],value:2}],accessor:{get:()=>this.leaderLineType,set:t=>{this.leaderLineType=t}}},{name:"doglegEnabled",type:"boolean",editable:!0,accessor:{get:()=>this.doglegEnabled,set:t=>{this.doglegEnabled=t}}},{name:"doglegLength",type:"float",editable:!0,accessor:{get:()=>this.doglegLength,set:t=>{this.doglegLength=t}}},{name:"leaderCount",type:"int",editable:!1,accessor:{get:()=>this.numberOfLeaders}}]},{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.textHeight,set:t=>{this.textHeight=t}}},{name:"textWidth",type:"float",editable:!0,accessor:{get:()=>this.textWidth,set:t=>{this.textWidth=t}}},{name:"textStyleName",type:"string",editable:!0,accessor:{get:()=>this.textStyleName,set:t=>{this.textStyleName=t}}}]}]}}resolveEffectiveProperties(){if(super.resolveEffectiveProperties(),this._mleaderStyleId)return;const t=this.getDefaultMLeaderStyle();t&&(this._mleaderStyleId=t.objectId)}resolveAnnotativePresentation(){var h;const t=this.getBaseTextHeight(),e=this.getBaseArrowheadSize(),n=Ht(this),r=n.length>0||this._annotativeScaleEnabled===!0||fe(this);let s=t,a=e,o,c,l;if(r&&n.length>0){c=je(n,(h=this.database)==null?void 0:h.cannoscale)??n.find(d=>d.isDefault)??n[0],l=Ve(n,c);const u=c.contextData;u instanceof Ir?(u.textHeight>0?s=u.textHeight:s=De(Ne(t,n),c.scale.scaleFactor),u.arrowheadSize>0?a=u.arrowheadSize:a=De(Ne(e,n),c.scale.scaleFactor),u.hasTextAnchor&&(o=u.textAnchor.clone())):(s=De(Ne(t,n),c.scale.scaleFactor),a=De(Ne(e,n),c.scale.scaleFactor))}return{textHeight:s,arrowheadSize:a,textAnchor:o,preferred:c,annotationScale:l}}subWorldDraw(t,e){const n=this.resolveAnnotativePresentation();this._drawPresentation=n;const r=[],s=t.subEntityTraits,a=s.color,o=s.lineType,c=s.lineWeight,l=this.getResolvedLeaderLineColor(),h=this.getResolvedLeaderLineStyle(),u=this.getResolvedLeaderLineWeight(),d=this.getResolvedTextColor();this.getResolvedLeaderLineType()!==0&&(this.applyColorTraits(s,l,a),this.applyLineTraits(s,h,u),this._leaders.forEach(m=>{m.leaderLines.forEach(b=>{const _=this.getLeaderLineDrawPoints(m,b);if(_.length>0){const w=this.drawLeaderLine(t,_);w&&r.push(w)}});const y=this.getDoglegPoints(m);y&&r.push(t.lines(y))}));const g=this.getRenderableMTextContent();if(!!g&&(this.contentType===2||this.contentType===0||this.hasMText===!0)&&g){this.applyColorTraits(s,d,a);const m=n.textHeight,y={text:g.text,height:m,width:this.getMTextRenderWidth(g.text,m),position:n.textAnchor??g.anchorPoint,rotation:this.textRotation,directionVector:this.textDirection,attachmentPoint:this.textAttachmentPoint,drawingDirection:this.textDrawingDirection,lineSpaceFactor:this.textLineSpacingFactor,lineSpaceStyle:this.textLineSpacingStyle};r.push(t.mtext(y,this.getTextStyle(),e))}if(s.color=a,s.lineType=o,s.lineWeight=c,this._drawPresentation=void 0,r.length===0)return;const p=r.length===1?r[0]:t.group(r);if(p&&this.annotative){let m=n.annotationScale;m||(m={drawnScaleFactor:1,supportedScaleFactors:[1],supportedScaleNames:[]});const y=p.userData??(p.userData={});y.annotationScale=m}return p}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMLeader"),t.writeInt16(170,this.leaderLineType),t.writeBoolean(290,this.doglegEnabled),t.writeDouble(41,this.doglegLength),t.writeInt16(172,this.contentType),t.writeVector3d(210,this.normal),t.writeHandle(340,this.mleaderStyleId),this._landingPoint&&t.writePoint3d(10,this._landingPoint),t.writeVector3d(11,this.doglegVector),this._mtextContent&&(t.writeString(1,this._mtextContent.text),t.writePoint3d(12,this._mtextContent.anchorPoint),t.writeDouble(40,this.textHeight),t.writeDouble(42,this.textWidth),t.writeAngle(50,this.textRotation),t.writeString(7,this.textStyleName)),this._blockContent&&(t.writeHandle(341,this._blockContent.blockContentId??""),this._blockContent.position&&t.writePoint3d(15,this._blockContent.position),t.writeVector3d(16,this._blockContent.scale),t.writeAngle(52,this._blockContent.rotation)),this._leaders.forEach(e=>{e.landingPoint&&t.writePoint3d(110,e.landingPoint),e.doglegVector&&t.writeVector3d(111,e.doglegVector),t.writeDouble(140,e.doglegLength),t.writeInt16(171,e.leaderLines.length),e.leaderLines.forEach(n=>{t.writeInt16(90,n.vertices.length),n.vertices.forEach(r=>t.writePoint3d(10,r))})}),this}dxfInFields(t){var k,L,C,N,D,tt,G,F,$,T,W,st,B,Rt,ee;super.dxfInFields(t),t.atSubclassData("AcDbMLeader"),this._leaders.length=0;let e=(k=this._mtextContent)==null?void 0:k.text,n=(C=(L=this._mtextContent)==null?void 0:L.anchorPoint)==null?void 0:C.clone(),r=!!this._mtextContent,s=(N=this._blockContent)==null?void 0:N.blockContentId,a=(tt=(D=this._blockContent)==null?void 0:D.position)==null?void 0:tt.clone(),o=(F=(G=this._blockContent)==null?void 0:G.scale)==null?void 0:F.clone(),c=($=this._blockContent)==null?void 0:$.rotation,l=(W=(T=this._blockContent)==null?void 0:T.normal)==null?void 0:W.clone(),h=(B=(st=this._blockContent)==null?void 0:st.color)==null?void 0:B.clone(),u=(Rt=this._blockContent)!=null&&Rt.transformationMatrix?[...this._blockContent.transformationMatrix]:[],d=!!this._blockContent,g=!1,f=!1,p=!1,m=(ee=this._landingPoint)==null?void 0:ee.clone(),y=this._doglegVector.clone(),b=null,_=null,w=!1,P;const S=()=>{_&&b&&b.leaderLines.push(_),_=null},v=()=>{S(),b&&this.addLeader(b),b=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const ut=t.readItem();if(!ut)break;const ln=Number(ut.code),q=Number(ut.value),lt=String(ut.value??"");switch(ln){case 100:return t.pushBackItem(ut),v(),this.finishMLeaderDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,m,y,P),this;case 300:if(lt==="CONTEXT_DATA{"){f=!0;const R=this.dxfInContextData(t);R.hasArrowheadSize&&(p=!0),R.textContent!=null&&(e=R.textContent,r=!0),R.textAnchor&&(n=R.textAnchor,r=!0),R.hasMText!=null&&(this.hasMText=R.hasMText),R.hasBlock!=null&&(this.hasBlock=R.hasBlock),R.blockContentId&&(s=R.blockContentId,d=this.isValidMLeaderHandle(R.blockContentId)),R.blockPosition&&(a=R.blockPosition,d=!0),R.blockScale&&(o=R.blockScale,d=!0),R.blockRotation!=null&&(c=R.blockRotation,d=!0),R.blockNormal&&(l=R.blockNormal,d=!0),R.blockColor&&(h=R.blockColor,d=!0),R.blockMatrix.length>0&&(u=R.blockMatrix,d=!0),r&&!g&&(this.contentType=2,g=!0)}break;case 270:f=!0,this.version=q;break;case 340:this.leaderStyleId=lt,this.mleaderStyleId=lt;break;case 90:w?(S(),_={vertices:[],breakPointIndexes:[],breaks:[]}):this.propertyOverrideFlag=q;break;case 170:this.leaderLineType=q;break;case 91:this.leaderLineColor=zt(q);break;case 341:f?this.leaderLineTypeId=lt:this.isValidMLeaderHandle(lt)?(s=lt,d=!0):this.leaderLineTypeId=lt;break;case 171:w||(this.leaderLineWeight=q);break;case 290:f?this.landingEnabled=this.readDxfBoolean(ut):this.doglegEnabled=this.readDxfBoolean(ut);break;case 291:this.doglegEnabled=this.readDxfBoolean(ut);break;case 40:f?this.doglegLength=q:this.textHeight=q;break;case 41:this.doglegLength=q;break;case 342:this.arrowheadId=lt;break;case 42:f?p||(this.arrowheadSize=q*(this.contentScale??1)):this.textWidth=q;break;case 172:this.contentType=q,g=!0;break;case 343:this.textStyleId=lt;break;case 173:this.textLeftAttachmentType=q;break;case 95:this.textRightAttachmentType=q;break;case 174:this.textAngleType=q;break;case 175:this.textAlignmentType=q;break;case 92:this.textColor=zt(q);break;case 292:this.textFrameEnabled=this.readDxfBoolean(ut);break;case 344:this.isValidMLeaderHandle(lt)&&(s=lt,this.blockContentId=lt,d=!0);break;case 93:this.blockContentColor=zt(q);break;case 10:if(w){t.pushBackItem(ut);const R=t.readPoint3d(10);R&&_&&_.vertices.push(R)}else{t.pushBackItem(ut);const R=t.readPoint3d(10);if(!R)break;f?(this.blockContentScale=new A(R),o=new A(R),d=!0):m=R}break;case 43:this.blockContentRotation=q,c=q,d=!0;break;case 176:this.blockContentConnectionType=q;break;case 293:this.annotativeScaleEnabled=this.readDxfBoolean(ut);break;case 94:{this.arrowheadOverrides.push({index:q});break}case 345:{const R=this.arrowheadOverrides[this.arrowheadOverrides.length-1];R?R.handle=lt:this.arrowheadOverrides.push({index:0,handle:lt});break}case 330:this.blockAttributes.push({id:lt});break;case 177:{const R=this.blockAttributes[this.blockAttributes.length-1];R&&(R.index=q);break}case 44:{const R=this.blockAttributes[this.blockAttributes.length-1];R&&(R.width=q);break}case 302:{const R=this.blockAttributes[this.blockAttributes.length-1];R&&(R.text=lt);break}case 294:this.textDirectionNegative=this.readDxfBoolean(ut);break;case 178:this.textAlignInIPE=q;break;case 179:q!==0&&(this.textAttachmentPoint=q);break;case 271:this.textAttachmentDirection=q;break;case 272:this.bottomTextAttachmentDirection=q;break;case 273:this.topTextAttachmentDirection=q;break;case 210:t.pushBackItem(ut);{const R=t.readVector3d(210);R&&(this.normal=R)}break;case 110:v(),w=!0,t.pushBackItem(ut),b={landingPoint:t.readPoint3d(110),doglegVector:new A(1,0,0),doglegLength:0,breaks:[],leaderLines:[]};break;case 111:if(b){t.pushBackItem(ut);const R=t.readVector3d(111);R&&(b.doglegVector=R)}break;case 140:b?b.doglegLength=q:this.arrowheadSize=q;break;case 1:e=lt,r=!0;break;case 12:t.pushBackItem(ut);{const R=t.readPoint3d(12);R&&(n=R,r=!0)}break;case 7:this.textStyleName=lt;break;case 50:P=q;break;case 15:t.pushBackItem(ut);{const R=t.readPoint3d(15);R&&(a=R,d=!0)}break;case 16:t.pushBackItem(ut);{const R=t.readVector3d(16);R&&(o=R,d=!0)}break;case 52:c=q*Math.PI/180,d=!0;break;case 11:if(!w&&!f){t.pushBackItem(ut);const R=t.readVector3d(11);R&&(y=R)}break}}return v(),this.finishMLeaderDxfIn(e,n,r,s,a,o,c,l,h,u,d,g,m,y,P),this}finishMLeaderDxfIn(t,e,n,r,s,a,o,c,l,h,u,d,g,f,p){if(g&&(this.landingPoint=g),this.doglegVector=f,p!=null&&(this.textRotation=p*Math.PI/180),!this.textStyleName&&this.textStyleId){const y=this.database.tables.textStyleTable.getIdAt(this.textStyleId);y!=null&&y.name&&(this.textStyleName=y.name)}const m=e??this.textAnchor??this.contentBasePosition??g;(n||this.hasMText)&&t!=null&&m?(this.mtextContent={text:t,anchorPoint:m.clone()},this.textAnchor||(this.textAnchor=m.clone()),d||(this.contentType=2)):(n||this.hasMText)&&t!=null&&!m&&(d||(this.contentType=2)),u&&this.isValidMLeaderHandle(r)&&this.contentType!==2&&!this.mtextContent&&(this.blockContent={blockContentId:r,position:s,scale:a??new A(1,1,1),rotation:o??0,normal:c,color:l,transformationMatrix:h},!d&&this.contentType===0&&(this.contentType=1))}dxfInContextData(t){const e={blockMatrix:[]};for(;!t.atEof;){const n=t.readItem();if(!n)break;const r=Number(n.code),s=Number(n.value),a=String(n.value??"");if(r===301)break;if(r===0){t.pushBackItem(n);break}switch(r){case 10:t.pushBackItem(n),this.contentBasePosition=t.readPoint3d(10);break;case 11:t.pushBackItem(n);{const o=t.readVector3d(11);o&&(this.normal=o)}break;case 12:t.pushBackItem(n);{const o=t.readPoint3d(12);o&&(e.textAnchor=o,this.textAnchor=o.clone())}break;case 13:t.pushBackItem(n);{const o=t.readVector3d(13);o&&(this.textDirection=o)}break;case 14:t.pushBackItem(n),e.blockNormal=t.readVector3d(14);break;case 15:t.pushBackItem(n),e.blockPosition=t.readPoint3d(15);break;case 16:t.pushBackItem(n),e.blockScale=t.readVector3d(16);break;case 40:this.contentScale=s;break;case 41:s>0&&(this.textHeight=s);break;case 42:this.textRotation=s;break;case 43:s>0&&(this.textWidth=s);break;case 44:s>0&&(this.textHeight=s);break;case 45:this.textLineSpacingFactor=s;break;case 46:e.blockRotation=s;break;case 47:e.blockMatrix.push(s);break;case 90:this.textColor=zt(s);break;case 91:this.textBackgroundColor=zt(s);break;case 92:this.textBackgroundTransparency=s;break;case 93:e.blockColor=zt(s);break;case 110:t.pushBackItem(n),this.planeOrigin=t.readPoint3d(110);break;case 111:t.pushBackItem(n),this.planeXAxisDirection=t.readVector3d(111);break;case 112:t.pushBackItem(n),this.planeYAxisDirection=t.readVector3d(112);break;case 140:this.arrowheadSize=s,e.hasArrowheadSize=!0;break;case 141:this.textBackgroundScaleFactor=s;break;case 142:this.textColumnWidth=s;break;case 143:this.textColumnGutterWidth=s;break;case 144:this.textColumnHeight=s;break;case 145:this.landingGap=s;break;case 170:this.textLineSpacingStyle=s;break;case 171:this.textAttachment=s;break;case 172:this.textFlowDirection=s;break;case 173:this.textColumnType=s;break;case 290:e.hasMText=this.readDxfBoolean(n),this.hasMText=e.hasMText;break;case 291:this.textBackgroundColorOn=this.readDxfBoolean(n);break;case 292:this.textFillOn=this.readDxfBoolean(n);break;case 293:this.textUseAutoHeight=this.readDxfBoolean(n);break;case 294:this.textColumnFlowReversed=this.readDxfBoolean(n);break;case 295:this.textUseWordBreak=this.readDxfBoolean(n);break;case 296:e.hasBlock=this.readDxfBoolean(n),this.hasBlock=e.hasBlock;break;case 297:this.planeNormalReversed=this.readDxfBoolean(n);break;case 302:if(a==="LEADER{"){const o=this.dxfInLeaderSection(t);this.addLeader(o)}break;case 304:a!=="LEADER_LINE{"&&(e.textContent=a,this.hasMText=!0);break;case 340:this.textStyleId=a;break;case 341:e.blockContentId=a,this.isValidMLeaderHandle(a)&&(this.blockContentId=a);break}}return e}dxfInLeaderSection(t){const e={breaks:[],leaderLines:[]};let n;const r=()=>{n&&(e.breaks.push(n),n=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value),c=String(s.value??"");if(a===303){r();break}if(a===0||a===301){t.pushBackItem(s),r();break}switch(a){case 290:e.lastLeaderLinePointSet=this.readDxfBoolean(s);break;case 291:e.doglegVectorSet=this.readDxfBoolean(s);break;case 10:t.pushBackItem(s),e.lastLeaderLinePoint=t.readPoint3d(10);break;case 11:t.pushBackItem(s),e.doglegVector=t.readVector3d(11);break;case 12:t.pushBackItem(s);{const l=t.readPoint3d(12);l&&(n={start:l,end:l.clone()})}break;case 13:t.pushBackItem(s);{const l=t.readPoint3d(13);n&&l&&(n.end=l,r())}break;case 90:e.leaderBranchIndex=o;break;case 40:e.doglegLength=o;break;case 304:c==="LEADER_LINE{"&&e.leaderLines.push(this.dxfInLeaderLine(t));break}}return e}dxfInLeaderLine(t){const e={vertices:[],breakPointIndexes:[],breaks:[]};let n;const r=()=>{n&&(e.breaks.push(n),n=void 0)};for(;!t.atEof;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);if(a===305){r();break}if(a===0||a===303||a===301){t.pushBackItem(s),r();break}switch(a){case 10:t.pushBackItem(s);{const c=t.readPoint3d(10);c&&e.vertices.push(c)}break;case 11:t.pushBackItem(s);{const c=t.readPoint3d(11);c&&(n={index:n==null?void 0:n.index,start:c,end:c.clone()})}break;case 12:t.pushBackItem(s);{const c=t.readPoint3d(12);n&&c&&(n.end=c,r())}break;case 90:e.breakPointIndexes.push(o),n={index:o,start:(n==null?void 0:n.start)??new x,end:(n==null?void 0:n.end)??new x};break;case 91:e.leaderLineIndex=o;break}}return e}readDxfBoolean(t){if(typeof t.value=="boolean")return t.value;const e=Number(t.value);if(Number.isFinite(e))return e!==0;const n=String(t.value??"");return n!==""&&n!=="0"}isValidMLeaderHandle(t){return t!=null&&t!==""&&t!=="0"}createPoint(t){return new x().copy(t)}createLeaderLine(t){var e,n;return{vertices:((e=t.vertices)==null?void 0:e.map(r=>this.createPoint(r)))??[],breakPointIndexes:t.breakPointIndexes?[...t.breakPointIndexes]:[],leaderLineIndex:t.leaderLineIndex,breaks:((n=t.breaks)==null?void 0:n.map(r=>({index:r.index,start:this.createPoint(r.start),end:this.createPoint(r.end)})))??[]}}cloneLeader(t){var e,n,r;return{lastLeaderLinePoint:(e=t.lastLeaderLinePoint)==null?void 0:e.clone(),lastLeaderLinePointSet:t.lastLeaderLinePointSet,landingPoint:(n=t.landingPoint)==null?void 0:n.clone(),doglegVector:(r=t.doglegVector)==null?void 0:r.clone(),doglegVectorSet:t.doglegVectorSet,doglegLength:t.doglegLength,breaks:t.breaks.map(s=>({index:s.index,start:s.start.clone(),end:s.end.clone()})),leaderBranchIndex:t.leaderBranchIndex,directionType:t.directionType,leaderLines:t.leaderLines.map(s=>({vertices:s.vertices.map(a=>a.clone()),breakPointIndexes:[...s.breakPointIndexes],leaderLineIndex:s.leaderLineIndex,breaks:s.breaks.map(a=>({index:a.index,start:a.start.clone(),end:a.end.clone()}))}))}}checkLeaderIndex(t){if(t<0||t>=this._leaders.length)throw new Error("The leader index is out of range!")}getMutableLeaderLine(t,e){this.checkLeaderIndex(t);const n=this._leaders[t].leaderLines[e];if(!n)throw new Error("The leader line index is out of range!");return n}collectGeometryPoints(){var e;const t=[];return this._leaders.forEach(n=>{n.lastLeaderLinePoint&&t.push(n.lastLeaderLinePoint),n.landingPoint&&t.push(n.landingPoint),n.breaks.forEach(s=>t.push(s.start,s.end)),n.leaderLines.forEach(s=>{t.push(...s.vertices),s.breaks.forEach(a=>t.push(a.start,a.end))});const r=this.getDoglegPoints(n);r&&t.push(...r),n.leaderLines.forEach(s=>{const a=this.getArrowheadPoints(this.getLeaderLineDrawPoints(n,s));a&&t.push(...a)})}),this._landingPoint&&t.push(this._landingPoint),this.contentBasePosition&&t.push(this.contentBasePosition),this.textAnchor&&t.push(this.textAnchor),this._mtextContent&&t.push(this._mtextContent.anchorPoint),(e=this._blockContent)!=null&&e.position&&t.push(this._blockContent.position),this.planeOrigin&&t.push(this.planeOrigin),t}moveGeometryGripPointAt(t,e){var s;let n=0;const r=(a,o)=>{if(a){n===t&&a.add(e),n++;return}o&&(n===t&&o(),n++)};this._leaders.forEach(a=>{r(a.lastLeaderLinePoint),r(a.landingPoint),a.breaks.forEach(c=>{r(c.start),r(c.end)}),a.leaderLines.forEach(c=>{c.vertices.forEach(l=>r(l)),c.breaks.forEach(l=>{r(l.start),r(l.end)})});const o=this.getDoglegPoints(a);o&&(r(o[0]),r(void 0,()=>{const c=o[0],l=o[1];if(!c||!l)return;const h=c.distanceTo({x:l.x+e.x,y:l.y+e.y,z:(l.z??0)+(e.z??0)});a.doglegLength!=null||a.doglegVectorSet?a.doglegLength=h:this._doglegLength=h})),a.leaderLines.forEach(c=>{const l=this.getLeaderLineDrawPoints(a,c),h=this.getArrowheadPoints(l);h&&h.forEach((u,d)=>{d===0||d===h.length-1?r(l[0]):r(void 0)})})}),r(this._landingPoint),r(this.contentBasePosition),r(this.textAnchor),this._mtextContent&&r(this._mtextContent.anchorPoint),(s=this._blockContent)!=null&&s.position&&r(this._blockContent.position),r(this.planeOrigin)}getLeaderLineDrawPoints(t,e){if(e.vertices.length>=2)return e.vertices;if(e.vertices.length===0)return[];const n=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint??this.contentBasePosition;return!n||e.vertices[0].equals(n)?e.vertices:[e.vertices[0],n]}getDoglegPoints(t){if(!this.getResolvedDoglegEnabled())return;const e=t.lastLeaderLinePoint??t.landingPoint??this._landingPoint;if(!e)return;const n=this.contentBasePosition;if(n&&!n.equals(e))return[e,n.clone()];const r=t.doglegVector??this._doglegVector,s=t.doglegLength??this.getResolvedDoglegLength();if(s==null||s===0||r.lengthSq()===0)return;const a=e.clone().add(r.clone().normalize().multiplyScalar(s));return[e,a]}getArrowheadPoints(t){if(!this.isArrowheadVisible()||t.length<2)return;const e=this.getArrowheadFrame(t);if(!e)return;const n=this.getResolvedArrowheadSize(),{tip:r,unit:s}=e,a=r.clone().add(s.clone().multiplyScalar(n)),o=n/6,c=new A(-s.y,s.x,0),l=a.clone().add(c.clone().multiplyScalar(o)),h=a.clone().add(c.clone().multiplyScalar(-o));return[r,l,h,r]}isArrowheadVisible(){const t=this.getResolvedArrowheadId();return(t==null?void 0:t.toUpperCase())==="_NONE"?!1:this.getResolvedArrowheadSize()>0}drawLeaderLine(t,e){const n=[],r=this.getLeaderLinePointsForDraw(e);r.length>=2&&n.push(t.lines(r));const s=this.drawArrowhead(t,e);if(s&&n.push(s),n.length!==0)return n.length===1?n[0]:t.group(n)}getLeaderLinePointsForDraw(t){const e=this.getArrowheadLeaderLineTrimDistance();return e<=0?t:this.trimPolylineStart(t,e)}getArrowheadLeaderLineTrimDistance(){if(!this.isArrowheadVisible())return 0;const t=this.getResolvedArrowheadBlockTableRecord();if(!t)return 0;const e=this.getResolvedArrowheadSize();if(e<=0)return 0;const n=t.origin??x.ORIGIN;let r=n.x;for(const s of t.newIterator()){const a=s.geometricExtents;a.isEmpty()||a.max.x>r&&(r=a.max.x)}return Math.max(0,(r-n.x)*e)}trimPolylineStart(t,e){if(t.length<2||e<=0)return t;let n=e;for(let r=0;r<t.length-1;r++){const s=t[r],a=t[r+1],o=a.distanceTo(s);if(!(o<=0)){if(n<o){const c=new A().subVectors(a,s);return[s.clone().add(c.multiplyScalar(n/o)),...t.slice(r+1)]}n-=o}}return[t[t.length-1]]}drawArrowhead(t,e){if(!this.isArrowheadVisible())return;const n=this.drawArrowheadBlock(t,e);if(n)return n;const r=this.getArrowheadPoints(e);if(!r)return;const s=new Ye;s.add(new ot(r,!0));const a=t.subEntityTraits,o=a.fillType;a.fillType={solidFill:!0,patternAngle:0,definitionLines:[]};const c=t.area(s);return a.fillType=o,c}drawArrowheadBlock(t,e){const n=this.getResolvedArrowheadBlockTableRecord();if(!n)return;const r=this.getArrowheadFrame(e);if(!r)return;const{tip:s,unit:a}=r,o=this.getResolvedArrowheadSize(),c=Math.atan2(a.y,a.x),l=n.origin??x.ORIGIN,h=new X().makeTranslation(-l.x,-l.y,-l.z),u=new X().makeScale(o,o,o),d=new X().makeRotationZ(c),g=new X().makeTranslation(s.x,s.y,s.z),f=new X().multiplyMatrices(g,d).multiply(u).multiply(h);return Vn.instance.draw(t,n,this.resolvedColor,[],!0,f,new A(this.normal))}getArrowheadFrame(t){if(t.length<2)return;const e=t[0],n=t.find(s=>!s.equals(e));if(!n)return;const r=new A().subVectors(n,e);if(r.lengthSq()!==0)return{tip:e,unit:r.normalize()}}getResolvedArrowheadId(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.arrowSymbolId;return this.arrowheadId??t}getResolvedArrowheadBlockTableRecord(){const t=this.getResolvedArrowheadId();if(t)return this.database.tables.blockTable.getIdAt(t)}getBaseArrowheadSize(){const t=this.getMLeaderStyle(),e=(t==null?void 0:t.arrowSize)??(t==null?void 0:t.scale);return this.arrowheadSize??this.contentScale??e??this.getBaseTextHeight()}getResolvedArrowheadSize(){return this._drawPresentation?this._drawPresentation.arrowheadSize:this.getBaseArrowheadSize()}getBaseTextHeight(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.textHeight;return this.textHeight>0?this.textHeight:t!=null&&t>0?t:2.5}getRenderableMTextContent(){var n;if(this._mtextContent)return{text:this._mtextContent.text,anchorPoint:this._mtextContent.anchorPoint};const t=(n=this.getMLeaderStyle())==null?void 0:n.defaultMTextContents,e=this.textAnchor??this.contentBasePosition??this._landingPoint;if(!(!t||!e))return{text:t,anchorPoint:e}}getMTextRenderWidth(t,e){return this._textWidth>0?this._textWidth:0}transformVector(t,e){const n=new x,r=new x(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}getMLeaderStyle(){var n,r;const t=this.database.objects.mleaderStyle,e=(n=this.mleaderStyleId||this.leaderStyleId)==null?void 0:n.trim();if(e){const s=t.getIdAt(e);if(s)return s;const a=e.toUpperCase();for(const[,c]of t.entries())if(((r=c.objectId)==null?void 0:r.toUpperCase())===a)return c;const o=this.database.getObjectById(e);if(o instanceof po)return o}return this.getDefaultMLeaderStyle()}getDefaultMLeaderStyle(){const t=this.resolveMLeaderStyleByName(this.getDefaultMLeaderStyleName());return t||this.database.objects.mleaderStyle.newIterator().toArray()[0]}resolveMLeaderStyleByName(t){const e=t==null?void 0:t.trim();if(!e)return;const n=this.database.objects.mleaderStyle,r=n.getAt(e);if(r)return r;const s=n.getIdAt(e);if(s)return s;const a=e.toUpperCase();for(const[o,c]of n.entries())if(o.toUpperCase()===a)return c}getDefaultMLeaderStyleName(){try{return this.database.cmleaderstyle||Qe}catch{return Qe}}getResolvedTextStyleName(){var s,a,o;const t=this.database.tables.textStyleTable,e=(s=this.getMLeaderStyle())==null?void 0:s.textStyleId,n=e?(a=t.getIdAt(e))==null?void 0:a.name:void 0,r=this.textStyleId?(o=t.getIdAt(this.textStyleId))==null?void 0:o.name:void 0;if(this.textStyleName){const c=t.getAt(this.textStyleName);if(c!=null&&c.name)return c.name;const l=t.getIdAt(this.textStyleName);if(l!=null&&l.name)return l.name}return r||n}getTextStyle(){const t=this.database.tables.textStyleTable.resolveAt(this.getResolvedTextStyleName());if(!t)throw new Error("No valid text style found in text style table.");return t.textStyle}getResolvedLeaderLineColor(){var t;return this.getResolvedComponentColor(this.leaderLineColor,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineColor,qw)}getResolvedLeaderLineType(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.leaderLineType;return this.getResolvedStyleDrivenValue(this.leaderLineType,t,$w)}getResolvedLeaderLineTypeId(){var t;return this.getResolvedStyleDrivenValue(this.leaderLineTypeId,(t=this.getMLeaderStyle())==null?void 0:t.leaderLineTypeId,Kw)}getResolvedLeaderLineStyle(){const t=this.getResolvedLeaderLineTypeId();if(!t)return;const e=this.database.tables.linetypeTable.getIdAt(t);if(e)return{type:"UserSpecified",...e.linetype}}getResolvedLeaderLineWeight(){var n;const t=(n=this.getMLeaderStyle())==null?void 0:n.leaderLineWeight,e=this.getResolvedStyleDrivenValue(this.leaderLineWeight,t,Zw);if(e!=null)return e}getResolvedDoglegEnabled(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegEnabled;return this.getResolvedStyleDrivenValue(this.doglegEnabled,t,Qw)}getResolvedDoglegLength(){var e;const t=(e=this.getMLeaderStyle())==null?void 0:e.doglegLength;return this.getResolvedStyleDrivenValue(this.doglegLength,t,Jw)}getResolvedTextColor(){var t;return this.getResolvedComponentColor(this.textColor,(t=this.getMLeaderStyle())==null?void 0:t.textColor,tv)}getResolvedComponentColor(t,e,n){if(!t)return e;if(!t.isByBlock&&!t.isByLayer)return t;const r=this.isPropertyOverrideEnabled(n);return r===!0?t:e??t}getResolvedStyleDrivenValue(t,e,n){const r=this.isPropertyOverrideEnabled(n);return r===!0?t??e:e??t}isPropertyOverrideEnabled(t){if(this.propertyOverrideFlag!=null)return(this.propertyOverrideFlag&t)!==0}applyColorTraits(t,e,n){t.color=n,e&&(t.color=e)}applyLineTraits(t,e,n){e&&(t.lineType=e),n!=null&&(t.lineWeight=n)}};fh.typeName="MLeader";let aa=fh;var e0=(i=>(i[i.Top=0]="Top",i[i.Zero=1]="Zero",i[i.Bottom=2]="Bottom",i))(e0||{}),n0=(i=>(i[i.HasVertex=1]="HasVertex",i[i.Closed=2]="Closed",i[i.SuppressStartCaps=4]="SuppressStartCaps",i[i.SuppressEndCaps=8]="SuppressEndCaps",i))(n0||{});const ph=class ph extends rt{get dxfTypeName(){return"MLINE"}constructor(){super(),this._styleName="",this._styleObjectHandle="",this._scale=1,this._justification=1,this._flags=0,this._styleCount=0,this._startPosition=new x,this._normal=new A(0,0,1),this._segments=[]}get styleName(){return this._styleName||this.getDefaultStyleName()}set styleName(t){this._styleName=t}get styleObjectHandle(){return this._styleObjectHandle}set styleObjectHandle(t){this._styleObjectHandle=t}get scale(){return this._scale}set scale(t){this._scale=t}get justification(){return this._justification}set justification(t){this._justification=t}get flags(){return this._flags}set flags(t){this._flags=t}get styleCount(){return this._styleCount}set styleCount(t){this._styleCount=Math.max(0,t)}get startPosition(){return this._startPosition}set startPosition(t){this._startPosition.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get segments(){return this._segments.map(t=>this.cloneSegment(t))}set segments(t){this._segments=t.map(e=>this.createSegment(e)),this.updateHasVertexFlag()}get vertexCount(){return this._segments.length}get closed(){return(this._flags&2)!==0}set closed(t){this.setFlag(2,t)}get suppressStartCaps(){return(this._flags&4)!==0}set suppressStartCaps(t){this.setFlag(4,t)}get suppressEndCaps(){return(this._flags&8)!==0}set suppressEndCaps(t){this.setFlag(8,t)}appendSegment(t){this._segments.push(this.createSegment(t)),this.updateHasVertexFlag()}clearSegments(){this._segments=[],this.updateHasVertexFlag()}get geometricExtents(){const t=this.collectGeometryPoints();return new H().setFromPoints(t)}subGetIntersectCurves(){const t=[],e=this.getMLineStyle(),n=this.getRenderableElementCount(e);if(n<=0)return te(this.getReferencePath(),this.closed);for(let r=0;r<n;r++)t.push(...te(this.getElementPath(r,e),this.closed));return t}transformBy(t){return this._startPosition.applyMatrix4(t),this._segments.forEach(e=>{e.position.applyMatrix4(t),this.transformVector(e.direction,t),this.transformVector(e.miterDirection,t)}),this.transformVector(this._normal,t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"mline",properties:[{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"scale",type:"float",editable:!0,accessor:{get:()=>this.scale,set:t=>{this.scale=t}}},{name:"justification",type:"int",editable:!0,accessor:{get:()=>this.justification,set:t=>{this.justification=t}}},{name:"closed",type:"boolean",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}},{name:"vertexCount",type:"int",editable:!1,accessor:{get:()=>this.vertexCount}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this._startPosition.clone()),this._segments.forEach(e=>t.push(e.position.clone())),t}subMoveGripPointsAt(t,e){const n=[this._startPosition,...this._segments.map(r=>r.position)];return Gi(t,e,n),It(t,r=>{this.updateReferencePathDirectionsAfterGripMove(r)}),this}subGetOsnapPoints(t,e,n,r){const s=[this._startPosition,...this._segments.map(a=>a.position)];if(s.length!==0)switch(t){case E.EndPoint:r.push(...s);break;case E.MidPoint:case E.Nearest:case E.Perpendicular:{const a=[];for(let o=0;o<s.length-1;o++){const c=[];Wi(s[o],s[o+1],t,e,c),a.push(...c)}if(t===E.MidPoint)r.push(...a);else{const o=me(e,a);o&&r.push(o)}break}}}subWorldDraw(t){if(this._segments.length===0)return;const e=[],n=this.getMLineStyle(),r=this.getRenderableElementCount(n),s=t.subEntityTraits,a=s.color,o=s.lineType,c=s.fillType,l=s.drawOrder,h=this.createFillArea(n,r);if(h&&(s.color=a,this.applyFillTraits(n,s),s.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},s.drawOrder=-1,e.push(t.area(h)),s.fillType=c,s.drawOrder=l),r<=0){const u=this.getReferencePath();u.length>=2&&e.push(t.lines(u))}else{for(let u=0;u<r;u++){s.color=a,s.lineType=o,this.applyStyleElementTraits(n,u,s);const d=this.getElementPath(u,n);d.length>=2&&e.push(t.lines(d))}this.appendStyleDrivenJointAndCapEntities(t,e,n,r,a,o)}if(s.color=a,s.lineType=o,s.fillType=c,s.drawOrder=l,e.length!==0)return e.length===1?e[0]:t.group(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMline"),t.writeString(2,this.styleName),t.writeHandle(340,this._styleObjectHandle),t.writeDouble(40,this._scale),t.writeInt16(70,this._justification),t.writeInt16(71,this._flags),t.writeInt16(72,this.vertexCount),t.writeInt16(73,this._styleCount),t.writePoint3d(10,this._startPosition),t.writeVector3d(210,this._normal),this._segments.forEach(e=>{t.writePoint3d(11,e.position),t.writeVector3d(12,e.direction),t.writeVector3d(13,e.miterDirection),e.elements.forEach(n=>{t.writeInt16(74,n.parameterCount),n.parameters.forEach(r=>t.writeDouble(41,r)),t.writeInt16(75,n.fillCount),n.fillParameters.forEach(r=>t.writeDouble(42,r))})}),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbMline");let e=this._startPosition.x,n=this._startPosition.y,r=this._startPosition.z,s=this._normal.x,a=this._normal.y,o=this._normal.z;const c=[];let l=null,h=null,u=!1,d=!1,g=0,f=0;const p=()=>{h&&l&&l.elements.push(h),h=null,u=!1,d=!1,g=0,f=0},m=()=>{p(),l&&c.push(l),l=null};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const y=t.readItem();if(!y)break;const b=Number(y.code),_=Number(y.value);switch(b){case 2:this.styleName=String(y.value);break;case 340:this.styleObjectHandle=String(y.value);break;case 40:this.scale=_;break;case 70:this.justification=_;break;case 71:this.flags=_;break;case 72:break;case 73:this.styleCount=_;break;case 10:e=_;break;case 20:n=_;break;case 30:r=_;break;case 210:s=_;break;case 220:a=_;break;case 230:o=_;break;case 11:m(),l={position:new x(_,0,0),direction:new A(1,0,0),miterDirection:new A(0,1,0),elements:[]};break;case 21:l&&(l.position.y=_);break;case 31:l&&(l.position.z=_);break;case 12:l&&(l.direction.x=_);break;case 22:l&&(l.direction.y=_);break;case 32:l&&(l.direction.z=_);break;case 13:l&&(l.miterDirection.x=_);break;case 23:l&&(l.miterDirection.y=_);break;case 33:l&&(l.miterDirection.z=_);break;case 74:p(),g=_,u=!0,d=!1,h={parameterCount:_,parameters:[],fillCount:0,fillParameters:[]};break;case 41:h&&u&&(h.parameters.push(_),g>0&&h.parameters.length>=g&&(u=!1));break;case 75:h&&(f=_,h.fillCount=_,d=!0,u=!1);break;case 42:h&&d&&(h.fillParameters.push(_),f>0&&h.fillParameters.length>=f&&(d=!1));break}}return m(),this.startPosition=new x(e,n,r),this.normal=new A(s,a,o),this.segments=c,this}setFlag(t,e){e?this._flags|=t:this._flags&=~t}updateHasVertexFlag(){this.setFlag(1,this._segments.length>0)}updateReferencePathDirectionsAfterGripMove(t){const e=r=>{const s=this._segments[r];if(!s)return;const a=r===0?this._startPosition:this._segments[r-1].position,o=new A().subVectors(s.position,a);o.lengthSq()>0&&s.direction.copy(o.normalize())};if(t===0){this._segments.length>0&&e(0);return}const n=t-1;n<0||n>=this._segments.length||(e(n),n+1<this._segments.length&&e(n+1))}createSegment(t){var e;return{position:new x().copy(t.position),direction:new A().copy(t.direction),miterDirection:new A().copy(t.miterDirection),elements:((e=t.elements)==null?void 0:e.map(n=>this.createElement(n)))??[]}}createElement(t){const e=t.parameters?[...t.parameters]:[],n=t.fillParameters?[...t.fillParameters]:[];return{parameterCount:t.parameterCount??e.length,parameters:e,fillCount:t.fillCount??n.length,fillParameters:n}}cloneSegment(t){return{position:t.position.clone(),direction:t.direction.clone(),miterDirection:t.miterDirection.clone(),elements:t.elements.map(e=>({parameterCount:e.parameterCount,parameters:[...e.parameters],fillCount:e.fillCount,fillParameters:[...e.fillParameters]}))}}collectGeometryPoints(){const t=[this._startPosition];if(this._segments.length===0)return t;const e=this.getMLineStyle(),n=this.getRenderableElementCount(e);if(n<=0)return this._segments.forEach(r=>t.push(r.position)),t;for(let r=0;r<n;r++)t.push(...this.getElementPath(r,e));return t}getRenderableElementCount(t){const e=(t==null?void 0:t.elementCount)??0;return Math.max(this._styleCount,e,...this._segments.map(n=>n.elements.length),0)}getReferencePath(){const t=[this._startPosition.clone(),...this._segments.map(e=>e.position.clone())];return this.closePathIfNeeded(t)}getElementPath(t,e){const n=[],r=this._segments[0];return n.push(this.getElementBoundaryPoint("start",r,t,e)),this._segments.forEach(s=>{n.push(this.offsetPoint(s.position,s.miterDirection,this.getElementMiterOffset(s,t,e)))}),n[n.length-1]=this.getElementBoundaryPoint("end",this._segments[this._segments.length-1],t,e),this.closePathIfNeeded(n)}getElementMiterOffset(t,e,n){var s;const r=t.elements[e];return(s=r==null?void 0:r.parameters)!=null&&s.length?r.parameters[0]:this.getStyleElementOffset(e,n)}getElementBoundaryPoint(t,e,n,r){const s=this.getElementMiterOffset(e,n,r),a=t==="start"?this._startPosition:e.position,o=this.offsetPoint(a,e.miterDirection,s);if(!this.shouldApplyCapCutAtSide(t,r))return o;const c=t==="start"?r==null?void 0:r.startAngle:r==null?void 0:r.endAngle,l=this.computeCapCutDistance(s,c,t);if(l===0)return o;const h=t==="start"?this.getStartSegmentDirection():this.getEndSegmentDirection();return h.lengthSq()===0?o:o.add(h.multiplyScalar(l))}shouldApplyCapCutAtSide(t,e){return!e||this.closed?!1:t==="start"?this.suppressStartCaps?!1:(e.flags&112)!==0:this.suppressEndCaps?!1:(e.flags&1792)!==0}computeCapCutDistance(t,e,n){const r=this.normalizeCapAngle(e),s=Math.tan(r);if(Math.abs(s)<1e-6)return 0;const a=t/s;return a}normalizeCapAngle(t){if(t==null||!Number.isFinite(t))return Math.PI/2;let e=t%180;return e<0&&(e+=180),(e<1||e>179)&&(e=90),e*Math.PI/180}getStartSegmentDirection(){const t=this._segments[0],e=new A;return t&&(e.subVectors(t.position,this._startPosition),e.lengthSq()===0&&e.copy(t.direction)),e.lengthSq()>0&&e.normalize(),e}getEndSegmentDirection(){const t=this._segments[this._segments.length-1];if(!t)return new A;const e=new A,n=this._segments.length>1?this._segments[this._segments.length-2].position:this._startPosition;return e.subVectors(t.position,n),e.lengthSq()===0&&e.copy(t.direction),e.lengthSq()>0&&e.normalize(),e}createFillArea(t,e){if(!t||(t.flags&1)===0||e<2)return;const n=this.getFillBoundaryElementIndices(e,t);if(!n)return;const r=this.getElementPath(n.outerIndex,t),s=this.getElementPath(n.innerIndex,t),a=this.stripClosingPoint(r),o=this.stripClosingPoint(s);if(a.length<2||o.length<2)return;const c=new Ye;if(this.closed){if(a.length<3||o.length<3)return;c.add(new ot(a.map(l=>({x:l.x,y:l.y})),!0)),c.add(new ot(o.map(l=>({x:l.x,y:l.y})),!0))}else{const l=[...a,...o.slice().reverse()].map(h=>({x:h.x,y:h.y}));if(l.length<3)return;c.add(new ot(l,!0))}return c}getFillBoundaryElementIndices(t,e){let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=-1,a=-1;for(let o=0;o<t;o++){const c=this.getElementReferenceOffset(o,e);c<n&&(n=c,s=o),c>r&&(r=c,a=o)}if(!(s<0||a<0||s===a))return{outerIndex:a,innerIndex:s}}getElementReferenceOffset(t,e){var r;const n=this._segments[0];if(n){const s=n.elements[t];if((r=s==null?void 0:s.parameters)!=null&&r.length)return s.parameters[0]}return this.getStyleElementOffset(t,e)}getStyleElementOffset(t,e){const n=e==null?void 0:e.elements[t];if(!n)return 0;const r=this.getStyleJustificationShift(e);return(n.offset+r)*this._scale}getStyleJustificationShift(t){const e=(t==null?void 0:t.elements)??[];if(e.length<=0)return 0;let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const s of e){const a=s.offset;a<n&&(n=a),a>r&&(r=a)}return this._justification===0?-r:this._justification===2?-n:0}stripClosingPoint(t){if(t.length<2)return t;const e=t[0],n=t[t.length-1],r=1e-9;return Math.abs(e.x-n.x)<=r&&Math.abs(e.y-n.y)<=r&&Math.abs(e.z-n.z)<=r?t.slice(0,-1):t}offsetPoint(t,e,n){if(n===0||e.lengthSq()===0)return t.clone();const r=e.clone().normalize().multiplyScalar(n);return t.clone().add(r)}closePathIfNeeded(t){if(!this.closed||t.length<2)return t;const e=t[0],n=t[t.length-1],r=1e-9;return Math.abs(e.x-n.x)<=r&&Math.abs(e.y-n.y)<=r&&Math.abs(e.z-n.z)<=r||t.push(e.clone()),t}appendStyleDrivenJointAndCapEntities(t,e,n,r,s,a){!n||r<2||(e.push(...this.drawMiterJointEntities(t,n,r,s,a)),e.push(...this.drawCapEntities(t,n,r,s,a)))}drawMiterJointEntities(t,e,n,r,s){if(this.closed||this._segments.length<2||(e.flags&2)===0)return[];const a=[],o=t.subEntityTraits;for(let c=0;c<this._segments.length-1;c++){const l=this._segments[c],h=Array.from({length:n},(u,d)=>{const g=this.getElementMiterOffset(l,d,e);return{elementIndex:d,offset:g,point:this.offsetPoint(l.position,l.miterDirection,g)}}).sort((u,d)=>d.offset-u.offset);for(let u=0;u<h.length-1;u++)this.applyElementDrawTraits(o,r,s,e,h[u].elementIndex),a.push(t.lines([h[u].point,h[u+1].point]))}return a}drawCapEntities(t,e,n,r,s){if(this.closed||this._segments.length<=0)return[];const a=[];return a.push(...this.drawCapEntitiesForSide(t,"start",e,n,r,s)),a.push(...this.drawCapEntitiesForSide(t,"end",e,n,r,s)),a}drawCapEntitiesForSide(t,e,n,r,s,a){if(e==="start"&&this.suppressStartCaps)return[];if(e==="end"&&this.suppressEndCaps)return[];const o=n.flags,c=e==="start",l=c?(o&16)!==0:(o&256)!==0,h=c?(o&64)!==0:(o&1024)!==0,u=c?(o&32)!==0:(o&512)!==0;if(!l&&!h&&!u)return[];const d=this.getCapElementPoints(e,r,n);if(d.length<2)return[];const g=[],f=t.subEntityTraits;if(l)for(let m=0;m<d.length-1;m++)this.applyElementDrawTraits(f,s,a,n,d[m].elementIndex),g.push(t.lines([d[m].point,d[m+1].point]));const p=c?this.getStartSegmentDirection().multiplyScalar(-1):this.getEndSegmentDirection().clone();if(h){const m=this.drawCapArcBetweenElements(t,e,d[0],d[d.length-1],p,f,s,a,n);m&&g.push(m)}if(u)for(let m=1;m<Math.floor(d.length/2);m++){const y=d[m],b=d[d.length-1-m];if(!y||!b||y===b)continue;const _=this.drawCapArcBetweenElements(t,e,y,b,p,f,s,a,n);_&&g.push(_)}return g}getCapElementPoints(t,e,n){const r=t==="start"?this._segments[0]:this._segments[this._segments.length-1];return r?Array.from({length:e},(s,a)=>({elementIndex:a,offset:this.getElementMiterOffset(r,a,n),point:this.getElementBoundaryPoint(t,r,a,n)})).sort((s,a)=>a.offset-s.offset):[]}drawCapArcBetweenElements(t,e,n,r,s,a,o,c,l){const h=e==="end"?r.point:n.point,u=e==="end"?n.point:r.point,d=h.distanceTo(u);if(d<=1e-9||s.lengthSq()===0)return;const f=h.clone().add(new A().subVectors(u,h).multiplyScalar(.5)).add(s.clone().normalize().multiplyScalar(d/2)),p=bt.createByThreePoints(h,u,f);if(p)return this.applyElementDrawTraits(a,o,c,l,e==="end"?r.elementIndex:n.elementIndex),t.circularArc(p)}applyElementDrawTraits(t,e,n,r,s){t.color=e,t.lineType=n,this.applyStyleElementTraits(r,s,t)}transformVector(t,e){const n=new x,r=new x(t.x,t.y,t.z);n.applyMatrix4(e),r.applyMatrix4(e),t.set(r.x-n.x,r.y-n.y,r.z-n.z)}getMLineStyle(){var s;const t=this.database.objects.mlineStyle,e=this.styleObjectHandle?t.getIdAt(this.styleObjectHandle):void 0;if(e)return e;const n=this.styleName?t.getAt(this.styleName):void 0;if(n)return n;const r=(s=this.styleName)==null?void 0:s.toUpperCase();if(r)for(const[a,o]of t.entries()){const c=(o.styleName||a).toUpperCase();if(a.toUpperCase()===r||c===r)return o}}applyStyleElementTraits(t,e,n){const r=t==null?void 0:t.elements[e];if(!r)return;const s=this.resolveStyleElementLineType(r.lineType);s&&(n.lineType=s),!(r.color.isByBlock||r.color.isByLayer)&&(n.color=r.color.clone())}applyFillTraits(t,e){const n=t==null?void 0:t.fillColor;!n||n.isByBlock||n.isByLayer||(e.color=n.clone())}resolveStyleElementLineType(t){var l;const e=t==null?void 0:t.trim();if(!e)return;const n=e.toUpperCase(),r=Pt.toUpperCase(),s=Oe.toUpperCase();let a="UserSpecified",o=e;if(n===r){a="ByLayer";const h=(l=this.database.tables.layerTable.getAt(this.layer))==null?void 0:l.linetype;o=h&&h.toUpperCase()!==r&&h.toUpperCase()!==s?h:wn}else n===s&&(a="ByBlock",o=wn);const c=this.database.tables.linetypeTable.getAt(o);return c?{type:a,...c.linetype}:{type:a,name:o,standardFlag:0,description:"",totalPatternLength:0}}resolveEffectiveProperties(){super.resolveEffectiveProperties(),this._styleName||(this._styleName=this.getDefaultStyleName())}getDefaultStyleName(){try{return this.database.cmlstyle||Ze}catch{return Ze}}};ph.typeName="MLine";let oa=ph;function i0(i,t){if(t.length<3)return;const e=i.subEntityTraits,n=e.fillType,r=e.transparency;e.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},e.transparency=new At(0);const s=new Ye;s.add(new ot(t,!0));const a=i.area(s);e.fillType=n,e.transparency=r;const o=i.lines(t);return a?o?i.group([a,o]):a:o}const Ku=[208,207,17,224,161,177,26,225],Lc=128,Mc=8,Go=3*Mc,fs=2;function r0(i){if(!i||i.length<Lc)return;for(let l=0;l<Ku.length;l++)if(i[Lc+l]!==Ku[l])return;const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=l=>{const h=t.getFloat64(l,!0),u=t.getFloat64(l+Mc,!0),d=t.getFloat64(l+2*Mc,!0);if([h,u,d].every(Number.isFinite))return{x:h,y:u,z:d}},n=e(fs),r=e(fs+Go),s=e(fs+2*Go),a=e(fs+3*Go);if(!n||!r||!s||!a)return;const o=Math.abs(s.x-n.x),c=Math.abs(n.y-s.y);if(!(o<=0||c<=0))return{upperLeft:n,upperRight:r,lowerRight:s,lowerLeft:a}}const Dr="image/wmf",_i="image/emf",s0=2596720087;function Wl(i){return i===Dr||i===_i}function Fe(i){if(i.length<18)return!1;const t=new DataView(i.buffer,i.byteOffset,i.byteLength);return i.length>=40&&t.getUint32(0,!0)===s0?Zu(i.subarray(22)):Zu(i)}function ca(i){return o0(i)>=0}const ev=1574,nv=15,iv=1128680791;function a0(i){if(!Fe(i))return;const t=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;if(t.getUint32(0,!0)===s0&&(e=22),e+18>i.length)return;const n=t.getUint16(e+2,!0);if(n<9)return;e+=n*2;const r=[];let s=0;for(;e+6<=i.length;){const c=t.getUint32(e,!0),l=c*2,h=t.getUint16(e+4,!0);if(c<3||l<6||e+l>i.length)break;if(h===ev&&e+44<=e+l&&t.getUint16(e+6,!0)===nv){const d=t.getUint32(e+10,!0),g=t.getUint32(e+32,!0),f=t.getUint32(e+40,!0),p=g>0&&g===f||g>0?g:f,m=e+44;d===iv&&p>0&&m+p<=e+l&&(r.push(i.subarray(m,m+p)),s+=p)}if(h===0)break;e+=l}if(r.length===0||s<88)return;const a=new Uint8Array(s);let o=0;for(const c of r)a.set(c,o),o+=c.length;if(yo(a,0))return a}function o0(i){const t=Math.min(i.length-44,4096);for(let e=0;e<=t;e++)if(yo(i,e))return e;return-1}function yo(i,t){if(t+88>i.length)return!1;const e=new DataView(i.buffer,i.byteOffset+t,i.length-t);if(e.getUint32(0,!0)!==1)return!1;const n=e.getUint32(4,!0);if(n<88||t+n>i.length||i[t+40]!==32||i[t+41]!==69||i[t+42]!==77||i[t+43]!==70)return!1;const r=e.getUint32(48,!0),s=e.getUint32(52,!0);return!(r<n||t+r>i.length||s<2||s>1e7)}function Zu(i){if(i.length<18)return!1;const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=t.getUint16(0,!0),n=t.getUint16(2,!0),r=t.getUint16(4,!0),s=t.getUint32(6,!0);return!(e!==1&&e!==2||n<9||n>100||r!==256&&r!==768||(s<n||s*2>i.length+16)&&s<n)}const Cc=[208,207,17,224,161,177,26,225],rv=2,Oc=3,sv=8,Qu=14,Wo=128,av=64*1024*1024;function c0(i){if(!(i!=null&&i.length))return;const t=ov(i);return t||Dc(i)}function ov(i){const t=Rr(i,Cc);if(t<0)return;const e=i.subarray(t);let n;try{n=yv(e)}catch{return}for(const s of n.entries()){if(s.type!=="stream"||!Ju(s.name))continue;const a=n.readStream(s.name);if(!(a!=null&&a.length))continue;const o=td(a,{allowMetafile:!1});if(o)return o}const r=["CONTENTS","Ole10Native","Ole10Native","Package"];for(const s of r){const a=n.readStream(s);if(!(a!=null&&a.length))continue;const o=la(a);if(o)return o}for(const s of n.entries()){if(s.type!=="stream"||!Ju(s.name))continue;const a=n.readStream(s.name);if(!(a!=null&&a.length))continue;const o=td(a,{allowMetafile:!0});if(o)return o;const c=Dc(a);if(c)return c}for(const s of n.entries()){if(s.type!=="stream")continue;const a=n.readStream(s.name);if(!(a!=null&&a.length))continue;const o=Dc(a);if(o)return o}}function Ju(i){return/olepres/i.test(i)||i.includes("OlePres")}function td(i,t={}){if(i.length<28)return;const e=t.allowMetafile!==!1,n=new DataView(i.buffer,i.byteOffset,i.byteLength);let r=0;const s=n.getUint32(r,!0);r+=4;let a=0;if(s===4294967295)a=n.getUint32(r,!0),r+=4;else if(s===4294967294){if(r+4>i.length)return;const h=n.getUint32(r,!0);r+=4+h}else if(s>0&&s<65535)r+=s;else return;if(r+4>i.length)return;const o=n.getUint32(r,!0);if(r+=4,o>4&&(r+=o-4),r+=24,r+4>i.length)return;const c=n.getUint32(r,!0);if(r+=4,c<=0||r+c>i.length)return;const l=i.subarray(r,r+c);return cv(l,a,{allowMetafile:e})}function cv(i,t,e={}){const n=e.allowMetafile!==!1;if(!((t===Qu||t===Oc)&&!n)){if(t===sv){const s=h0(i);if(s)return s}if(t===rv){const s=la(i);if(s)return s}if(n&&(t===Qu||t===Oc)){const s=Nc(i,t);if(s)return s}if(n){const s=Nc(i);if(s)return s}return la(i)}}function Nc(i,t){let e=i;if(t===Oc&&i.length>30){const r=i.subarray(12);Fe(r)&&(e=r)}if(Fe(e)){const r=a0(e);if(r)return new Blob([tr(r)],{type:_i})}const n=o0(i);if(n>=0&&yo(i,n)){const r=lv(i,n);if(r)return new Blob([tr(r)],{type:_i});const a=new DataView(i.buffer,i.byteOffset+n,i.length-n).getUint32(48,!0);if(a>88&&n+a<=i.length)return new Blob([tr(i.subarray(n,n+a))],{type:_i})}if(Fe(e)){const r=hv(e);return r?new Blob([tr(r)],{type:Dr}):new Blob([tr(e)],{type:Dr})}}function tr(i){const t=new Uint8Array(i.length);return t.set(i),t}function lv(i,t){if(!yo(i,t))return;const e=new DataView(i.buffer,i.byteOffset+t,i.length-t),n=e.getUint32(48,!0),r=e.getUint32(52,!0);let s=0;for(let a=0;a<r;a++){if(s+8>n)return;const o=e.getUint32(s,!0),c=e.getUint32(s+4,!0);if(c<8||s+c>n)return;if(s+=c,o===14)return i.subarray(t,t+s)}}function hv(i){let t=0;const e=new DataView(i.buffer,i.byteOffset,i.byteLength);if(i.length>=40&&e.getUint32(0,!0)===2596720087&&(t=22),!Fe(i.subarray(t)))return;const n=new DataView(i.buffer,i.byteOffset+t,i.length-t),r=n.getUint16(2,!0),s=n.getUint32(6,!0),a=t+s*2;if(a>i.length)return;let o=t+r*2;const c=a;let l=0;for(;o+6<=c&&l<5e5;){const h=e.getUint32(o,!0),u=e.getUint16(o+4,!0);if(h<3||o+h*2>c)return;if(o+=h*2,l++,u===0)return i.subarray(0,o)}}function Dc(i){const t=la(i);if(t)return t;if(ca(i)||Fe(i))return Nc(i)}function la(i){const t=uv(i);if(t)return t;const e=dv(i);if(e)return e;const n=gv(i);if(n)return n;const r=fv(i);if(r)return r;const s=pv(i);if(s)return s}function uv(i){for(let t=0;t<i.length-14;t++){if(i[t]!==66||i[t+1]!==77)continue;const e=new DataView(i.buffer,i.byteOffset+t,i.length-t),n=e.getUint32(2,!0);if(n<14||n>i.length-t)continue;const r=e.getUint32(10,!0);if(!(r<14||r>=n))return new Blob([i.subarray(t,t+n)],{type:"image/bmp"})}}function dv(i){const e=Rr(i,[137,80,78,71,13,10,26,10]);if(!(e<0)){for(let n=e+8;n+12<=i.length;n++)if(i[n+4]===73&&i[n+5]===69&&i[n+6]===78&&i[n+7]===68){const r=n+12;return new Blob([i.subarray(e,r)],{type:"image/png"})}return new Blob([i.subarray(e)],{type:"image/png"})}}function gv(i){const t=Rr(i,[255,216,255]);if(!(t<0)){for(let e=t+3;e+1<i.length;e++)if(i[e]===255&&i[e+1]===217)return new Blob([i.subarray(t,e+2)],{type:"image/jpeg"})}}function fv(i){const t=Rr(i,[71,73,70,56,55,97]),e=Rr(i,[71,73,70,56,57,97]),n=t>=0?t:e;if(!(n<0)){for(let r=n+6;r<i.length;r++)if(i[r]===59)return new Blob([i.subarray(n,r+1)],{type:"image/gif"});return new Blob([i.subarray(n)],{type:"image/gif"})}}function pv(i){for(let t=0;t+40<=i.length;t++){const e=new DataView(i.buffer,i.byteOffset+t,i.length-t),n=e.getUint32(0,!0);if(n!==40)continue;const r=e.getInt32(4,!0),s=e.getInt32(8,!0),a=e.getUint16(12,!0),o=e.getUint16(14,!0),c=e.getUint32(16,!0),l=e.getUint32(20,!0),h=e.getUint32(32,!0);if(r<=0||r>65536||s===0||Math.abs(s)>65536||a!==1||![1,4,8,16,24,32].includes(o)||c!==0&&c!==3)continue;const u=l0(n,o,c,h),d=Math.abs(s),g=r*o+31>>5<<2,f=l>0?l:g*d,p=u+f;if(!(p<=40||t+p>i.length))return h0(i.subarray(t,t+p))}}function l0(i,t,e,n){let r=0;return t>8&&e===3&&(r+=12),n>0?r+=n*4:t<=8&&(r+=(1<<t)*4),i+r}function h0(i){if(i.length<40)return;const e=new DataView(i.buffer,i.byteOffset,i.byteLength).getUint32(0,!0);if(e!==40&&e!==12)return;const n=14+i.length,r=new Uint8Array(14),s=new DataView(r.buffer);r[0]=66,r[1]=77,s.setUint32(2,n,!0),s.setUint32(10,14+mv(i),!0);const a=new Uint8Array(n);return a.set(r,0),a.set(i,14),new Blob([a],{type:"image/bmp"})}function mv(i){const t=new DataView(i.buffer,i.byteOffset,i.byteLength),e=t.getUint32(0,!0);if(e===12){const a=t.getUint16(10,!0),o=a<=8?1<<a:0;return e+o*3}const n=t.getUint16(14,!0),r=t.getUint32(16,!0),s=t.getUint32(32,!0);return l0(e,n,r,s)}function Rr(i,t){t:for(let e=0;e<=i.length-t.length;e++){for(let n=0;n<t.length;n++)if(i[e+n]!==t[n])continue t;return e}return-1}function yv(i){if(i.length<512)throw new Error("CFB too small");for(let S=0;S<Cc.length;S++)if(i[S]!==Cc[S])throw new Error("Not a CFB document");const t=new DataView(i.buffer,i.byteOffset,i.byteLength),n=1<<t.getUint16(30,!0);if(n!==512&&n!==4096)throw new Error("Unsupported CFB sector size");const r=t.getUint32(44,!0),s=t.getUint32(48,!0),a=t.getUint32(56,!0),o=t.getUint32(60,!0),c=t.getUint32(64,!0),l=t.getUint32(68,!0),h=t.getUint32(72,!0),u=[];for(let S=0;S<109;S++){const v=t.getUint32(76+S*4,!0);v<=4294967290&&u.push(v)}let d=l;for(let S=0;S<h&&d<=4294967290;S++){const v=(d+1)*n;if(v+n>i.length)break;const k=n/4-1;for(let L=0;L<k;L++){const C=t.getUint32(v+L*4,!0);C<=4294967290&&u.push(C)}d=t.getUint32(v+k*4,!0)}const g=[];for(let S=0;S<Math.min(r,u.length);S++){const k=(u[S]+1)*n;if(k+n>i.length)break;const L=n/4;for(let C=0;C<L;C++)g.push(t.getUint32(k+C*4,!0))}const f=ps(g,s,4096),p=ms(i,f,n),m=[],y=Math.floor(p.length/Wo);for(let S=0;S<y;S++){const v=S*Wo,k=new DataView(p.buffer,p.byteOffset+v,Wo),L=k.getUint16(64,!0);if(L<2||L>64)continue;const C=Math.floor((L-2)/2);let N="";for(let W=0;W<C;W++)N+=String.fromCharCode(k.getUint16(W*2,!0));const D=k.getUint8(66),tt=k.getUint32(116,!0),G=k.getUint32(120,!0),F=k.getUint32(124,!0),$=F===0?G:G+F*4294967296;let T="unknown";D===5?T="root":D===1?T="storage":D===2&&(T="stream"),m.push({name:N,type:T,size:$,startSector:tt})}const b=m.find(S=>S.type==="root"),_=[];if(c>0&&o<=4294967290){const S=ps(g,o,c),v=ms(i,S,n),k=new DataView(v.buffer,v.byteOffset,v.byteLength);for(let L=0;L+4<=v.length;L+=4)_.push(k.getUint32(L,!0))}let w;if(b&&b.size>0){const S=ps(g,b.startSector,65536);w=ms(i,S,n).subarray(0,b.size)}return{entries:()=>m,readStream:S=>{const v=m.find(L=>L.type==="stream"&&(L.name===S||L.name.toLowerCase()===S.toLowerCase()));if(!v||v.size<=0||v.size>av)return;if(v.size<a&&w&&_.length>0){const C=u0(_,v.startSector,65536),N=new Uint8Array(v.size);let D=0;for(const tt of C){if(D>=v.size)break;const G=tt*64,F=Math.min(G+64,w.length);if(G>=w.length)break;const $=w.subarray(G,F);N.set($.subarray(0,Math.min($.length,v.size-D)),D),D+=$.length}return N.subarray(0,Math.min(D,v.size))}const k=ps(g,v.startSector,65536);return ms(i,k,n).subarray(0,v.size)}}}function ps(i,t,e){return u0(i,t,e)}function u0(i,t,e){const n=[];let r=t;const s=new Set;for(;r<=4294967290&&n.length<e&&!(s.has(r)||(s.add(r),n.push(r),r>=i.length));)r=i[r];return n}function ms(i,t,e){const n=new Uint8Array(t.length*e);let r=0;for(const s of t){const a=(s+1)*e,o=Math.min(a+e,i.length);if(a>=i.length)break;n.set(i.subarray(a,o),r),r+=e}return n}const mh=class mh extends rt{};mh.typeName="Frame";let ha=mh;const yh=class yh extends ha{constructor(){super(),this._oleVersion=0}get dxfTypeName(){return"OLEFRAME"}get oleVersion(){return this._oleVersion}set oleVersion(t){this._oleVersion=t}getOleObject(){return this._oleObject?new Uint8Array(this._oleObject):void 0}setOleObject(t){t==null?this._oleObject=void 0:this._oleObject=t instanceof ArrayBuffer?new Uint8Array(t.slice(0)):new Uint8Array(t),this.onOleObjectChanged()}loadOleObjectFromDxf(t,e){e!=null&&e.length?t!=null&&t>0&&t<e.length?this._oleObject=e.subarray(0,t):this._oleObject=new Uint8Array(e):this._oleObject=void 0,this.onOleObjectChanged()}get oleObjectData(){return this._oleObject}onOleObjectChanged(){}getOleProperties(){return{groupName:"ole",properties:[{name:"oleVersion",type:"int",editable:!0,accessor:{get:()=>this.oleVersion,set:t=>{this.oleVersion=t}}}]}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),this.getOleProperties()]}}get geometricExtents(){return new H}subWorldDraw(t){}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbOleFrame"),t.writeInt16(70,this._oleVersion),(e=this._oleObject)!=null&&e.length){t.writeInt32(90,this._oleObject.length);let n=0;for(;n<this._oleObject.length;){const r=this._oleObject.subarray(n,n+127);t.writeString(310,co(r)),n+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbOleFrame");const e=[];let n;const r=()=>{e.length>0&&this.loadOleObjectFromDxf(n,Gr(e))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const s=t.readItem();if(!s)break;const a=Number(s.code),o=Number(s.value);switch(a){case 1:break;case 70:this.oleVersion=o;break;case 90:n=o;break;case 310:s.value instanceof Uint8Array?e.push(s.value):e.push(String(s.value));break}}return r(),this}};yh.typeName="OleFrame";let Br=yh;var fr=(i=>(i[i.Link=1]="Link",i[i.Embedded=2]="Embedded",i[i.Static=3]="Static",i))(fr||{}),ua=(i=>(i[i.ModelSpace=0]="ModelSpace",i[i.PaperSpace=1]="PaperSpace",i))(ua||{});const bh=class bh extends Br{constructor(){super(),this._upperLeft=new x,this._lowerRight=new x,this._rotation=0,this._scaleWidth=1,this._scaleHeight=1,this._lockAspect=!1,this._outputQuality=0,this._autoOutputQuality=0,this._oleObjectType=2,this._tileMode=0,this._userType="",this._linkName="",this._linkPath="",this._oleClientItem=null,this._imageResolved=!1}get dxfTypeName(){return"OLE2FRAME"}get upperLeftCorner(){return this._upperLeft}set upperLeftCorner(t){this._upperLeft.copy(t)}get lowerRightCorner(){return this._lowerRight}set lowerRightCorner(t){this._lowerRight.copy(t)}getLocation(t){return t?t.copy(this._upperLeft):this._upperLeft.clone()}setLocation(t){const e=t.x-this._upperLeft.x,n=t.y-this._upperLeft.y,r=(t.z??0)-this._upperLeft.z;this._upperLeft.copy(t),this._lowerRight.x+=e,this._lowerRight.y+=n,this._lowerRight.z+=r}position(){return{upperLeft:this._upperLeft.clone(),upperRight:this.cornerUpperRight(),lowerLeft:this.cornerLowerLeft(),lowerRight:this._lowerRight.clone()}}setPosition(t){this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight)}wcsWidth(){return Math.abs(this._lowerRight.x-this._upperLeft.x)}setWcsWidth(t){const e=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+e*Math.abs(t),this._lockAspect&&this.syncHeightFromAspect()}wcsHeight(){return Math.abs(this._upperLeft.y-this._lowerRight.y)}setWcsHeight(t){const e=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-e*Math.abs(t),this._lockAspect&&this.syncWidthFromAspect()}scaleWidth(){return this._scaleWidth}setScaleWidth(t){this._scaleWidth=t}scaleHeight(){return this._scaleHeight}setScaleHeight(t){this._scaleHeight=t}rotation(){return this._rotation}setRotation(t){this._rotation=t}lockAspect(){return this._lockAspect}setLockAspect(t){this._lockAspect=!!t}outputQuality(){return this._outputQuality}setOutputQuality(t){this._outputQuality=t&255}autoOutputQuality(){return this._autoOutputQuality}setAutoOutputQuality(t){this._autoOutputQuality=t&255}getType(){return this._oleObjectType}setType(t){this._oleObjectType=t}get oleObjectType(){return this._oleObjectType}set oleObjectType(t){this._oleObjectType=t}get tileMode(){return this._tileMode}set tileMode(t){this._tileMode=t}getUserType(){return this._userType}setUserType(t){this._userType=t}get userType(){return this._userType}set userType(t){this._userType=t}getLinkName(){return this._linkName}setLinkName(t){this._linkName=t}getLinkPath(){return this._linkPath}setLinkPath(t){this._linkPath=t}getOleClientItem(){return this._oleClientItem}setOleClientItem(t){this._oleClientItem=t??null}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.x,set:t=>{this.setLocation({x:t,y:this.upperLeftCorner.y,z:this.upperLeftCorner.z})}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.y,set:t=>{this.setLocation({x:this.upperLeftCorner.x,y:t,z:this.upperLeftCorner.z})}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.upperLeftCorner.z,set:t=>{this.setLocation({x:this.upperLeftCorner.x,y:this.upperLeftCorner.y,z:t})}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation(),set:t=>{this.setRotation(t)}}},{name:"width",type:"float",editable:!0,accessor:{get:()=>this.wcsWidth(),set:t=>{this.setWcsWidth(t)}}},{name:"height",type:"float",editable:!0,accessor:{get:()=>this.wcsHeight(),set:t=>{this.setWcsHeight(t)}}},{name:"scaleWidth",type:"float",editable:!0,accessor:{get:()=>this.scaleWidth(),set:t=>{this.setScaleWidth(t)}}},{name:"scaleHeight",type:"float",editable:!0,accessor:{get:()=>this.scaleHeight(),set:t=>{this.setScaleHeight(t)}}},{name:"lockAspect",type:"boolean",editable:!0,accessor:{get:()=>this.lockAspect(),set:t=>{this.setLockAspect(t)}}}]},{groupName:"ole",properties:[...this.getOleProperties().properties,{name:"userType",type:"string",editable:!0,accessor:{get:()=>this.userType,set:t=>{this.userType=t}}},{name:"oleObjectType",type:"enum",editable:!0,options:[{label:fr[1],value:1},{label:fr[2],value:2},{label:fr[3],value:3}],accessor:{get:()=>this.oleObjectType,set:t=>{this.oleObjectType=t}}},{name:"tileMode",type:"enum",editable:!0,options:[{label:ua[0],value:0},{label:ua[1],value:1}],accessor:{get:()=>this.tileMode,set:t=>{this.tileMode=t}}},{name:"linkName",type:"string",editable:!0,accessor:{get:()=>this.getLinkName(),set:t=>{this.setLinkName(t)}}},{name:"linkPath",type:"string",editable:!0,accessor:{get:()=>this.getLinkPath(),set:t=>{this.setLinkPath(t)}}},{name:"outputQuality",type:"int",editable:!0,accessor:{get:()=>this.outputQuality(),set:t=>{this.setOutputQuality(t)}}},{name:"autoOutputQuality",type:"int",editable:!0,accessor:{get:()=>this.autoOutputQuality(),set:t=>{this.setAutoOutputQuality(t)}}}]}]}}get geometricExtents(){return new H().setFromPoints(this.boundaryPath())}subGetIntersectCurves(){return te(this.boundaryPath().slice(0,4),!0)}subGetGripPoints(){return this.boundaryPath().slice(0,4)}subMoveGripPointsAt(t,e){const n=this.boundaryPath().slice(0,4);return Gi(t,e,n),It(t,r=>{r===0?this._upperLeft.copy(n[0]):r===2?this._lowerRight.copy(n[2]):r===1?(this._upperLeft.y=n[1].y,this._lowerRight.x=n[1].x,this._upperLeft.z=n[1].z,this._lowerRight.z=n[1].z):r===3&&(this._upperLeft.x=n[3].x,this._lowerRight.y=n[3].y,this._upperLeft.z=n[3].z,this._lowerRight.z=n[3].z)}),this}subGetOsnapPoints(t,e,n,r){if(t===E.Insertion){r.push(this._upperLeft.clone());return}const s=this.boundaryPath().slice(0,4);if(t===E.EndPoint){r.push(...s);return}lo(s,!0,t,e,r)}transformBy(t){const e=this._lowerRight.x-this._upperLeft.x,n=this._upperLeft.y-this._lowerRight.y,r=Math.cos(this._rotation),s=Math.sin(this._rotation),a=this._upperLeft.clone(),o=a.clone().add(new A(e*r,e*s,0)),c=a.clone().add(new A(n*s,-n*r,0));a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new A().subVectors(o,a),h=new A().subVectors(c,a);return this._upperLeft.copy(a),this._rotation=Math.atan2(l.y,l.x),this._lowerRight.set(a.x+l.length(),a.y-h.length(),a.z),this}get image(){return this.resolveImage()}subWorldDraw(t){const e=this.resolveImage(),n=this.imageBoundaryPath();return e?t.image(e,{boundary:n,roation:this._rotation}):i0(t,this.boundaryPath())}onOleObjectChanged(){this._image=void 0,this._imageResolved=!1,this.applyGeometryFromOleObjectData()}applyGeometryFromOleObjectData(){const t=r0(this.oleObjectData);t&&(this._upperLeft.copy(t.upperLeft),this._lowerRight.copy(t.lowerRight))}resolveImage(){return this._imageResolved?this._image:(this._imageResolved=!0,this._image=c0(this.oleObjectData),this._image)}imageBoundaryPath(){const t=this.boundaryPath(),e=[t[3],t[2],t[1],t[0]];return e.push(e[0].clone()),e}dxfOutFields(t){rt.prototype.dxfOutFields.call(this,t),t.writeSubclassMarker("AcDbOle2Frame"),t.writeInt16(70,this.oleVersion),this._userType&&t.writeString(3,this._userType),t.writePoint3d(10,this._upperLeft),t.writePoint3d(11,this._lowerRight),t.writeInt16(71,this._oleObjectType),t.writeInt16(72,this._tileMode),this._outputQuality&&t.writeInt16(73,this._outputQuality);const e=this.getOleObject();if(e!=null&&e.length){t.writeInt32(90,e.length);let n=0;for(;n<e.length;){const r=e.subarray(n,n+127);t.writeString(310,co(r)),n+=127}}return t.writeString(1,"OLE"),this}dxfInFields(t){rt.prototype.dxfInFields.call(this,t),t.atSubclassData("AcDbOle2Frame");let e=this._upperLeft.x,n=this._upperLeft.y,r=this._upperLeft.z,s=this._lowerRight.x,a=this._lowerRight.y,o=this._lowerRight.z;const c=[];let l;const h=()=>{this.upperLeftCorner=new x(e,n,r),this.lowerRightCorner=new x(s,a,o),c.length>0&&this.loadOleObjectFromDxf(l,Gr(c))};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 1:break;case 3:this.userType=String(u.value);break;case 10:e=g;break;case 20:n=g;break;case 30:r=g;break;case 11:s=g;break;case 21:a=g;break;case 31:o=g;break;case 70:this.oleVersion=g;break;case 71:this.oleObjectType=g;break;case 72:this.tileMode=g;break;case 73:this.setOutputQuality(g);break;case 90:l=g;break;case 310:u.value instanceof Uint8Array?c.push(u.value):c.push(String(u.value));break}}return h(),this}cornerUpperRight(){return new x(this._lowerRight.x,this._upperLeft.y,this._upperLeft.z)}cornerLowerLeft(){return new x(this._upperLeft.x,this._lowerRight.y,this._lowerRight.z)}boundaryPath(){const t=[this._upperLeft.clone(),this.cornerUpperRight(),this._lowerRight.clone(),this.cornerLowerLeft()];if(this._rotation!==0){const e=this._upperLeft;for(let n=1;n<t.length;n++)t[n].sub(e).applyMatrix4(new X().makeRotationZ(this._rotation)),t[n].add(e)}return t.push(t[0].clone()),t}syncHeightFromAspect(){const t=this.wcsWidth();if(t===0||this._scaleWidth===0)return;const e=this._scaleHeight/this._scaleWidth,n=t*e,r=this._upperLeft.y>=this._lowerRight.y?1:-1;this._lowerRight.y=this._upperLeft.y-r*Math.abs(n)}syncWidthFromAspect(){const t=this.wcsHeight();if(t===0||this._scaleHeight===0)return;const e=this._scaleWidth/this._scaleHeight,n=t*e,r=this._lowerRight.x>=this._upperLeft.x?1:-1;this._lowerRight.x=this._upperLeft.x+r*Math.abs(n)}};bh.typeName="Ole2Frame";let da=bh;const _h=class _h extends rt{constructor(){super(),this._thickness=0,this._normal=new A(0,0,1),this._ecsRotation=0,this._geo=new x}get dxfTypeName(){return"POINT"}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get ecsRotation(){return this._ecsRotation}set ecsRotation(t){this._ecsRotation=t}get geometricExtents(){return new H().expandByPoint(this._geo)}subGetGripPoints(){return[this._geo]}subMoveGripPointsAt(t,e){return le(t,e,this._geo),this}subGetOsnapPoints(t,e,n,r){t===E.Node&&r.push(this._geo)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}transformBy(t){return this._geo.applyMatrix4(t),this}get directBatchPrimitive(){var e;return(((e=this.database)==null?void 0:e.pdmode)??0)===0?"point":null}subWorldDraw(t){return t.point(this._geo,{displayMode:this.database.pdmode,displaySize:this.database.pdsize})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbPoint"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,this.position),this.ecsRotation!==0&&t.writeAngle(50,this.ecsRotation),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbPoint");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.thickness,a=this.ecsRotation*180/Math.PI,o=this.normal.x,c=this.normal.y,l=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const u=t.readItem();if(!u)break;const d=Number(u.code),g=Number(u.value);switch(d){case 10:e=g;break;case 20:n=g;break;case 30:r=g;break;case 39:s=g;break;case 50:a=g;break;case 210:o=g;break;case 220:c=g;break;case 230:l=g;break}}const h=new A(o,c,l);return h.lengthSq()>0&&this.normal.copy(h.normalize()),this.thickness=s,this.ecsRotation=a*Math.PI/180,this.position=new x(e,n,r),this}};_h.typeName="Point";let ga=_h;const xh=class xh extends rt{constructor(){super(...arguments),this._originalDxfName="",this._originalClassName="",this._applicationName="",this._proxyEntityClassId=498,this._applicationEntityClassId=0,this._objectDrawingFormat=0,this._originalDataFormat=0,this._entityOrigins=[],this._worldTransform=new X}get dxfTypeName(){return"ACAD_PROXY_ENTITY"}get originalDxfName(){return this._originalDxfName}set originalDxfName(t){this._originalDxfName=t}get originalClassName(){return this._originalClassName}set originalClassName(t){this._originalClassName=t}get applicationName(){return this._applicationName}set applicationName(t){this._applicationName=t}get proxyEntityClassId(){return this._proxyEntityClassId}set proxyEntityClassId(t){this._proxyEntityClassId=t}get applicationEntityClassId(){return this._applicationEntityClassId}set applicationEntityClassId(t){this._applicationEntityClassId=t}get objectDrawingFormat(){return this._objectDrawingFormat}set objectDrawingFormat(t){this._objectDrawingFormat=t}get graphicsMetafileType(){return this._objectDrawingFormat}set graphicsMetafileType(t){this._objectDrawingFormat=t}get originalDataFormat(){return this._originalDataFormat}set originalDataFormat(t){this._originalDataFormat=t}get proxyGraphic(){return this._proxyGraphic}setProxyGraphic(t){this._proxyGraphic=t?new Uint8Array(t):void 0}get entityOrigins(){return this._entityOrigins}setEntityOrigins(t){this._entityOrigins=t.map(e=>new x(e.x,e.y,e.z))}get geometricExtents(){const t=this._proxyGraphic;if(!(t!=null&&t.length))return new H;const n=new Ac(t,{database:this.database,defaultLayer:this.layer}).scanExtents();if(n){const r=new H().setFromPoints(n);return this._worldTransform.equals(new X)||r.applyMatrix4(this._worldTransform),r}return new H}subGetGripPoints(){if(this._entityOrigins.length>0)return[...this._entityOrigins];const t=this.geometricExtents;return t.isEmpty()?[]:[new x(t.min.x,t.min.y,t.min.z),new x(t.max.x,t.max.y,t.max.z)]}subMoveGripPointsAt(t,e){return this._entityOrigins.length>0?(Gi(t,e,this._entityOrigins),this):this.geometricExtents.isEmpty()?this:(It(t,r=>{r===0&&this.transformBy(X.makeTranslation(e))}),this)}transformBy(t){return this._entityOrigins.forEach(e=>e.applyMatrix4(t)),this._worldTransform.premultiply(t),this}subWorldDraw(t){const e=this._proxyGraphic;if(!(e!=null&&e.length))return;const r=new Ac(e,{database:this.database,defaultLayer:this.layer}).worldDraw(t);return r&&!this._worldTransform.equals(new X)&&r.applyMatrix(this._worldTransform),r}dxfOutFields(t){var e;if(super.dxfOutFields(t),t.writeSubclassMarker("AcDbProxyEntity"),this._originalDxfName&&t.writeString(1,this._originalDxfName),this._originalClassName&&t.writeString(3,this._originalClassName),t.writeInt32(90,this._proxyEntityClassId||498),this._applicationEntityClassId&&t.writeInt32(91,this._applicationEntityClassId),this._objectDrawingFormat&&t.writeInt32(95,this._objectDrawingFormat),t.writeInt16(70,this._originalDataFormat),(e=this._proxyGraphic)!=null&&e.length){t.writeInt32(160,this._proxyGraphic.length);let n=0;for(;n<this._proxyGraphic.length;){const r=this._proxyGraphic.subarray(n,n+127);t.writeString(310,co(r)),n+=127}}return this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbProxyEntity");const e=[];let n;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const r=t.readItem();if(!r)break;const s=Number(r.code),a=Number(r.value);switch(s){case 1:this.originalDxfName=String(r.value);break;case 3:this.originalClassName=String(r.value);break;case 70:this.originalDataFormat=a;break;case 90:this.proxyEntityClassId=a;break;case 91:this.applicationEntityClassId=a;break;case 95:this.objectDrawingFormat=a;break;case 160:n=a;break;case 310:r.value instanceof Uint8Array?e.push(r.value):e.push(String(r.value));break}}return e.length>0&&this.loadProxyGraphicFromDxf(n,e),this}loadProxyGraphicFromDxf(t,e){const n=qx(t,e);n&&this.setProxyGraphic(n)}};xh.typeName="ProxyEntity";let fa=xh;var d0=(i=>(i[i.Invalid=0]="Invalid",i[i.Rect=1]="Rect",i[i.Poly=2]="Poly",i))(d0||{}),g0=(i=>(i[i.Show=1]="Show",i[i.ShowUnAligned=2]="ShowUnAligned",i[i.Clip=4]="Clip",i[i.Transparent=8]="Transparent",i))(g0||{});const wh=class wh extends rt{constructor(){super(),this._classVersion=0,this._clipMode=0,this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new x,this._scale=new yt(1,1),this._rotation=0,this._imageSize=new M,this._clipBoundaryType=1,this._clipBoundary=[],this._isClipped=!1,this._isShownClipped=!1,this._isImageShown=!0,this._isImageTransparent=!1,this._imageDefId=""}get dxfTypeName(){return"IMAGE"}get brightness(){return this._brightness}set brightness(t){this._brightness=t}get contrast(){return this._contrast}set contrast(t){this._contrast=t}get fade(){return this._fade}set fade(t){this._fade=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get position(){return this._position}set position(t){this._position=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scale(){return this._scale}set scale(t){this._scale.copy(t)}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get clipBoundaryType(){return this._clipBoundaryType}set clipBoundaryType(t){this._clipBoundaryType=t}get clipBoundary(){return this._clipBoundary}set clipBoundary(t){this._clipBoundary=[],this._clipBoundary.push(...t)}get isClipped(){return this._isClipped}set isClipped(t){this._isClipped=t}get isShownClipped(){return this._isShownClipped}set isShownClipped(t){this._isShownClipped=t}get isImageShown(){return this._isImageShown}set isImageShown(t){this._isImageShown=t}get isImageTransparent(){return this._isImageTransparent}set isImageTransparent(t){this._isImageTransparent=t}get classVersion(){return this._classVersion}set classVersion(t){this._classVersion=t}get clipMode(){return this._clipMode}set clipMode(t){this._clipMode=t}get image(){return this._image}set image(t){this._image=t}get imageDefId(){return this._imageDefId}set imageDefId(t){this._imageDefId=t}get imageFileName(){if(this._imageDefId){const t=this.database.objects.imageDefinition,e=t.getIdAt(this._imageDefId)??t.getAt(this._imageDefId);if(e)return e.sourceFileName}return""}get imageDisplayName(){const t=this.imageFileName.trim();if(!t)return"";const e=t.replace(/\\/g,"/").split("/");return e[e.length-1]||t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"name",type:"string",editable:!1,accessor:{get:()=>this.imageFileName||this.imageDisplayName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"width",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"height",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}}]},{groupName:"image",properties:[{name:"brightness",type:"int",editable:!0,accessor:{get:()=>this.brightness,set:t=>{this.brightness=t}}},{name:"contrast",type:"int",editable:!0,accessor:{get:()=>this.contrast,set:t=>{this.contrast=t}}},{name:"fade",type:"int",editable:!0,accessor:{get:()=>this.fade,set:t=>{this.fade=t}}},{name:"isImageShown",type:"boolean",editable:!0,accessor:{get:()=>this.isImageShown,set:t=>{this.isImageShown=t}}},{name:"isImageTransparent",type:"boolean",editable:!0,accessor:{get:()=>this.isImageTransparent,set:t=>{this.isImageTransparent=t}}},{name:"isClipped",type:"boolean",editable:!0,accessor:{get:()=>this.isClipped,set:t=>{this.isClipped=t}}},{name:"isShownClipped",type:"boolean",editable:!0,accessor:{get:()=>this.isShownClipped,set:t=>{this.isShownClipped=t}}}]}]}}get geometricExtents(){const t=new H;return t.min.copy(this._position),t.max.set(this._position.x+this._width,this._position.y+this._height,0),t}subGetIntersectCurves(){return te(this.boundaryPath(),!0)}subGetGripPoints(){return this.boundaryPath()}subMoveGripPointsAt(t,e){return It(t,n=>{this.isClipped&&this._clipBoundary.length>3?this.moveClippedBoundaryGripAt(n,e):this.moveUnclippedGripAt(n,e)}),this}subGetOsnapPoints(t,e,n,r){if(t===E.Insertion){r.push(this._position);return}const s=this.boundaryPath();if(s.length===0)return;let a=s;if(s.length>1){const o=s[0],c=s[s.length-1];o.x===c.x&&o.y===c.y&&(o.z||0)===(c.z||0)&&(a=s.slice(0,-1))}if(t===E.EndPoint){r.push(...a);return}lo(a,!0,t,e,r)}subWorldDraw(t){const e=this.boundaryPath();if(this._image&&this.isImageShown)return t.image(this._image,{boundary:e,roation:this._rotation});const n=i0(t,e),r=this.drawMissingImageLabel(t,e);return r?n?t.group([n,r]):r:n}drawMissingImageLabel(t,e){if(this._image||e.length<3)return;let n="";try{n=this.imageFileName.trim()}catch{return}if(!n)return;const r=this.boundaryCenter(e),{width:s,height:a,rotation:o}=this.boundaryLocalSize(e);if(s<=0||a<=0)return;const c=n.replace(/\\/g,"/"),l=this.fitLabelTextHeight(c,s,a);if(l<=0)return;const h=nx(n),u=an(c,l),d={text:h,height:l,width:Math.max(u,l),position:r,rotation:o,attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter};try{return t.mtext(d,this.resolveLabelTextStyle())}catch{return}}resolveLabelTextStyle(){const t=this.database.tables.textStyleTable,e=t.resolveAt(gt)??t.resolveAt("STANDARD");return e?e.textStyle:{name:gt,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:0,font:"txt",bigFont:""}}fitLabelTextHeight(t,e,n){const r=e*.85,s=n*.85;if(r<=0||s<=0||!t)return 0;let a=0,o=s;for(let c=0;c<24;c++){const l=(a+o)/2;an(t,l)<=r&&l<=s?a=l:o=l}return a}boundaryCenter(t){let e=t.length;e>1&&t[0].x===t[e-1].x&&t[0].y===t[e-1].y&&(e-=1);let n=0,r=0,s=0;for(let a=0;a<e;a++)n+=t[a].x,r+=t[a].y,s+=t[a].z;return new x(n/e,r/e,s/e)}boundaryLocalSize(t){let e=t.length;if(e>1&&t[0].x===t[e-1].x&&t[0].y===t[e-1].y&&(e-=1),e<2)return{width:this._width,height:this._height,rotation:this._rotation};const n=t[0],r=t[1],s=r.x-n.x,a=r.y-n.y,o=Math.hypot(s,a),c=Math.atan2(a,s);if(o<=0)return{width:this._width,height:this._height,rotation:this._rotation};const l=s/o,h=a/o;let u=0,d=0;for(let f=0;f<e;f++){const p=t[f].x-n.x,m=t[f].y-n.y,y=p*-h+m*l;u=Math.min(u,y),d=Math.max(d,y)}const g=Math.max(d-u,0);return{width:o>0?o:this._width,height:g>0?g:this._height,rotation:c}}transformBy(t){const e=this._width*this._scale.x,n=this._height*this._scale.y,r=new A(e*Math.cos(this._rotation),e*Math.sin(this._rotation),0),s=new A(-n*Math.sin(this._rotation),n*Math.cos(this._rotation),0),a=this._position.clone(),o=this._position.clone().add(r),c=this._position.clone().add(s);a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new A(o).sub(a),h=new A(c).sub(a);return this._position.copy(a),this._rotation=Math.atan2(l.y,l.x),this._width=l.length(),this._height=h.length(),this._scale.set(1,1),this}moveUnclippedGripAt(t,e){const n=this._position.x,r=this._position.y,s=this._width,a=this._height;switch(t){case 0:this._position.add(e);break;case 1:{const o=n,c=r+a,l=n+s+e.x,h=r+e.y;this._position.x=o,this._position.y=h,this._width=l-o,this._height=c-h;break}case 2:{const o=n+s+e.x,c=r+a+e.y;this._width=o-n,this._height=c-r;break}case 3:{const o=n+s,c=r,l=n+e.x,h=r+a+e.y;this._position.x=l,this._position.y=c,this._width=o-l,this._height=h-c;break}}}moveClippedBoundaryGripAt(t,e){if(t<0||t>=this._clipBoundary.length)return;const n=this._width,r=this._height,s=new Lt;s.setFromPoints(this._clipBoundary);const a=new M;a.setX(this._position.x-s.min.x*n),a.setY(this._position.y-s.min.y*r);const o=this._clipBoundary[t],c=o.x*n+a.x+e.x,l=o.y*r+a.y+e.y;o.x=(c-a.x)/n,o.y=(l-a.y)/r}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,n=this._height,r=new Lt;r.setFromPoints(this._clipBoundary);const s=new M;s.setX(this._position.x-r.min.x*e),s.setY(this._position.y-r.min.y*n),this._clipBoundary.forEach(a=>{const o=a.x*e+s.x,c=a.y*n+s.y;t.push(new x(o,c,this._position.z))})}else{if(t.push(this._position),t.push(this._position.clone().setX(this._position.x+this._width)),t.push(this._position.clone().set(this._position.x+this._width,this._position.y+this._height,this._position.z)),t.push(this._position.clone().setY(this._position.y+this._height)),this._rotation>0){ed.copy(t[1]);for(let e=1;e<4;e++)ys.copy(t[e]),ys.rotateAround(ed,this._rotation),t[e].setX(ys.x),t[e].setY(ys.y)}t.push(t[0])}return t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImage"),t.writeInt32(90,this.classVersion),t.writePoint3d(10,this.position);const e=this.width*this.scale.x,n=this.height*this.scale.y,r=this._imageSize.x>0&&this._imageSize.y>0?this._imageSize:{x:e,y:n},s=r.x>0?e/r.x:e,a=r.y>0?n/r.y:n,o=Math.cos(this._rotation),c=Math.sin(this._rotation);t.writePoint3d(11,{x:s*o,y:s*c,z:0}),t.writePoint3d(12,{x:-a*c,y:a*o,z:0}),t.writePoint2d(13,r),t.writeObjectId(340,this.imageDefId);const l=(this.isImageShown?1:0)|(this.isShownClipped?4:0)|(this.isImageTransparent?8:0);if(t.writeInt16(70,l),t.writeInt16(280,this.isClipped?1:0),t.writeInt16(281,this.brightness),t.writeInt16(282,this.contrast),t.writeInt16(283,this.fade),t.writeInt16(71,this.clipBoundaryType),this.isClipped){t.writeInt16(91,this.clipBoundary.length);for(const h of this.clipBoundary)t.writePoint2d(14,h)}return t.writeInt16(290,this.clipMode),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRasterImage");let e=this.position.x,n=this.position.y,r=this.position.z,s=1,a=0,o=0,c=0,l=1,h=0,u=this.imageSize.x,d=this.imageSize.y;const g=[];let f=null;const p=()=>{f&&(g.push(new M(f.x,f.y)),f=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const m=t.readItem();if(!m)break;const y=Number(m.code),b=Number(m.value);switch(y){case 10:e=b;break;case 20:n=b;break;case 30:r=b;break;case 11:s=b;break;case 21:a=b;break;case 31:o=b;break;case 12:c=b;break;case 22:l=b;break;case 32:h=b;break;case 13:u=b;break;case 23:d=b;break;case 14:p(),f={x:b,y:0};break;case 24:f&&(f.y=b);break;case 70:{this.isImageShown=(b&3)!==0,this.isShownClipped=(b&4)!==0,this.isImageTransparent=(b&8)!==0;break}case 71:this.clipBoundaryType=b;break;case 90:this.classVersion=b;break;case 91:break;case 280:this.isClipped=b!==0;break;case 281:this.brightness=b;break;case 282:this.contrast=b;break;case 283:this.fade=b;break;case 290:this.clipMode=b;break;case 340:this.imageDefId=String(m.value);break}}return p(),this.applyRasterImageDxfIn(e,n,r,s,a,o,c,l,h,u,d,g),this}applyRasterImageDxfIn(t,e,n,r,s,a,o,c,l,h,u,d){this.position.copy({x:t,y:e,z:n}),this.imageSize.copy({x:h,y:u});const g=Math.hypot(r,s,a),f=Math.hypot(o,c,l);this.width=g*(h||1),this.height=f*(u||1),this.rotation=Math.atan2(s,r),d.length>0&&(this.clipBoundary=d)}};wh.typeName="RasterImage";let Fr=wh;const ed=new M,ys=new M,Ga=class Ga extends Mt{get dxfTypeName(){return"RAY"}constructor(){super(),this._basePoint=new x,this._unitDir=new A}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get area(){return 0}get geometricExtents(){const t=new H;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Dt(this._basePoint,t),extent:"ray"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return le(t,e,this.basePoint),this}subGetOsnapPoints(t,e,n,r){const s=this.basePoint;if(t===E.EndPoint){r.push(s);return}const a=this.unitDir.clone();if(a.lengthSq()===0)return;a.normalize();const o=new Dt(s,s.clone().add(a));switch(t){case E.Nearest:{const c=o.project(e),h=new A(c).sub(s).dot(a);r.push(h<0?s:c);break}case E.Perpendicular:r.push(o.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRay"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbRay");let e=this.basePoint.x,n=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,a=this.unitDir.y,o=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 11:s=h;break;case 21:a=h;break;case 31:o=h;break}}return this.basePoint=new x(e,n,r),this.unitDir=new A(s,a,o),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,n=this.unitDir,r=Math.hypot(n.x,n.y);return r<=1e-9||(n.x*(t.y-e.y)-n.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=dg(this.basePoint,this.unitDir,t);if(!e)return null;const n=new Ga;return n.basePoint=e,n.unitDir=this.unitDir.clone(),n}};Ga.typeName="Ray";let pa=Ga;const vh=class vh extends rt{get dxfTypeName(){return"SHAPE"}constructor(){super(),this._position=new x,this._size=1,this._name="",this._rotation=0,this._widthFactor=1,this._oblique=0,this._thickness=0,this._normal=new A(0,0,1),this._shapeNumber=0,this._styleName=""}get position(){return this._position}set position(t){this._position.copy(t)}get size(){return this._size}set size(t){this._size=t}get name(){return this._name}set name(t){this._name=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}get shapeNumber(){return this._shapeNumber}set shapeNumber(t){this._shapeNumber=t}get styleId(){var e,n,r;const t=(r=(n=(e=this.database)==null?void 0:e.tables)==null?void 0:n.textStyleTable)==null?void 0:r.resolveAt(this._styleName);return(t==null?void 0:t.objectId)??""}set styleId(t){var n,r,s;const e=(s=(r=(n=this.database)==null?void 0:n.tables)==null?void 0:r.textStyleTable)==null?void 0:s.getIdAt(t);e&&(this._styleName=e.name)}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get isPlanar(){return!0}get geometricExtents(){const t=Math.abs(this._size)/2,e=new H;return e.expandByPoint(this._position),t>0&&(e.expandByPoint(new x(this._position.x-t,this._position.y-t,this._position.z)),e.expandByPoint(new x(this._position.x+t,this._position.y+t,this._position.z))),e}subGetGripPoints(){return[this._position]}subMoveGripPointsAt(t,e){return le(t,e,this._position),this}subGetOsnapPoints(t,e,n,r){t===E.Insertion&&r.push(this._position)}transformBy(t){const e=new X().setFromExtrusionDirection(this._normal),n=new X().makeRotationZ(this._rotation),r=new X().multiplyMatrices(e,n),s=this._position.clone(),a=new x(this._widthFactor,0,0).applyMatrix4(r).add(s),o=new x(0,1,0).applyMatrix4(r).add(s),c=new x(0,0,1).applyMatrix4(r).add(s);s.applyMatrix4(t),a.applyMatrix4(t),o.applyMatrix4(t),c.applyMatrix4(t);const l=new A(a).sub(s),h=new A(o).sub(s),u=new A(c).sub(s);let d=new A().crossVectors(l,h);d.lengthSq()===0?d=this._normal.clone().transformDirection(t):d.normalize();const f=new X().setFromExtrusionDirection(d).clone().invert(),p=l.clone().applyMatrix4(f),m=h.length(),y=l.length();this._position.copy(s),this._normal.copy(d),y>0&&(this._rotation=Math.atan2(p.y,p.x)),m>0&&(this._size*=m,y>0&&(this._widthFactor*=y/m));const b=u.length();return b>0&&(this._thickness*=b),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"shape",properties:[{name:"name",type:"string",editable:!0,accessor:{get:()=>this.name,set:t=>{this.name=t}}},{name:"size",type:"float",editable:!0,accessor:{get:()=>this.size,set:t=>{this.size=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}},{name:"shapeNumber",type:"int",editable:!0,accessor:{get:()=>this.shapeNumber,set:t=>{this.shapeNumber=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t,e){const n=this.getTextStyle(),r=n?{...n,widthFactor:this.widthFactor,obliqueAngle:this.oblique*180/Math.PI}:void 0,s={...this.renderGlyphIdentity(),size:this.size,position:this._position,rotation:this._rotation,directionVector:this._normal,widthFactor:this.widthFactor};return t.shape(s,r,e)}renderGlyphIdentity(){const t=this._name.trim(),e=Number(t);return t!==""&&Number.isInteger(e)&&e!==0&&String(e)===t?{shapeNumber:e}:{name:t||void 0,shapeNumber:this._shapeNumber!==0?this._shapeNumber:void 0}}getTextStyle(){const t=this.styleName.trim();if(!t)return;const e=this.database.tables.textStyleTable.resolveAt(t);return e==null?void 0:e.textStyle}get dxfShapeIdentity(){const t=this._name.trim();return t||(this._shapeNumber!==0?String(this._shapeNumber):"")}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbShape"),t.writePoint3d(10,this.position),t.writeDouble(40,this.size);const e=this.dxfShapeIdentity;return e&&t.writeString(2,e),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeDouble(39,this.thickness),this._styleName&&t.writeString(3,this._styleName),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbShape");let e=this.position.x,n=this.position.y,r=this.position.z,s=this.normal.x,a=this.normal.y,o=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 2:{const u=String(c.value).trim(),d=Number(u);u!==""&&Number.isInteger(d)&&d!==0&&String(d)===u?(this.shapeNumber=d,this.name=""):this.name=u;break}case 3:this.styleName=String(c.value);break;case 39:this.thickness=h;break;case 40:this.size=h;break;case 41:this.widthFactor=h;break;case 50:this.rotation=O.degToRad(h);break;case 51:this.oblique=O.degToRad(h);break;case 210:s=h;break;case 220:a=h;break;case 230:o=h;break}}return this.position={x:e,y:n,z:r},this.normal={x:s,y:a,z:o},this}};vh.typeName="Shape";let ma=vh;const gi=class gi extends Mt{constructor(){super(),this._normal=new A(0,0,1),this._elevation=0,this._thickness=0,this._vertices=[new x,new x,new x,new x]}get dxfTypeName(){return"TRACE"}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return!0}get area(){return new ot(gi.boundaryPointsFromVertices(this._vertices),!0).area}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}getPointAt(t){return t<0?this._vertices[0]:t>3?this._vertices[3]:this._vertices[t]}setPointAt(t,e){if(t<0&&this._vertices[0].copy(e),t>3)return this._vertices[3].copy(e);this._vertices[t].copy(e)}get geometricExtents(){return new H().setFromPoints(this._vertices)}subGetIntersectCurves(){const t=this._vertices[0],e=this._vertices[1],n=this._vertices[2],r=this._vertices[3];return te([t,e,r,n],!0)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subMoveGripPointsAt(t,e){return Gi(t,e,this._vertices),this}subGetOsnapPoints(t,e,n,r){const s=[this._vertices[0],this._vertices[1],this._vertices[3],this._vertices[2]];lo(s,!0,t,e,r)}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._elevation=this._vertices[0].z,this}get directBatchPrimitive(){return"area"}subWorldDraw(t){const e=new ot(gi.boundaryPointsFromVertices(this._vertices),!0),n=new Ye;n.add(e);const r=t.subEntityTraits;return r.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(n)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTrace"),this.thickness!==0&&t.writeDouble(39,this.thickness),t.writePoint3d(10,qt(this.getPointAt(0),this.normal)),t.writePoint3d(11,qt(this.getPointAt(1),this.normal)),t.writePoint3d(12,qt(this.getPointAt(2),this.normal)),t.writePoint3d(13,qt(this.getPointAt(3),this.normal)),t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbTrace");const e=[{x:this.getPointAt(0).x,y:this.getPointAt(0).y,z:this.getPointAt(0).z},{x:this.getPointAt(1).x,y:this.getPointAt(1).y,z:this.getPointAt(1).z},{x:this.getPointAt(2).x,y:this.getPointAt(2).y,z:this.getPointAt(2).z},{x:this.getPointAt(3).x,y:this.getPointAt(3).y,z:this.getPointAt(3).z}];let n=this.normal.x,r=this.normal.y,s=this.normal.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const o=t.readItem();if(!o)break;const c=Number(o.code),l=Number(o.value);switch(c){case 10:case 11:case 12:case 13:e[c-10].x=l;break;case 20:case 21:case 22:case 23:e[c-20].y=l;break;case 30:case 31:case 32:case 33:e[c-30].z=l;break;case 39:this.thickness=l;break;case 210:n=l;break;case 220:r=l;break;case 230:s=l;break}}const a=new A(n,r,s);return a.lengthSq()>0&&this.normal.copy(a.normalize()),e.forEach((o,c)=>this.setPointAt(c,oe(o,this.normal))),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectBoundary2d();return e.length<2?1:Vt.from2dPoints(e,!0).getOffsetSideAtPoint(t)}createOffsetCurve(t){return mo(this.collectBoundary2d(),!0,t)}collectBoundary2d(){return gi.boundaryPointsFromVertices(this._vertices)}static boundaryPointsFromVertices(t){const e=t[0],n=t[1],r=t[2],s=t[3];return[new M(e.x,e.y),new M(n.x,n.y),new M(s.x,s.y),new M(r.x,r.y)]}};gi.typeName="Trace";let Xr=gi;const Ah=class Ah extends Xr{get dxfTypeName(){return"SOLID"}};Ah.typeName="Solid";let ya=Ah;function bv(i){return i&2048?"SqrtChord":i&1024?"Chord":"Uniform"}function nd(i,t){try{return new zr(i.controlPoints,i.knots,_v(i.weights,i.controlPoints.length),i.degree,t)}catch{return null}}function _v(i,t){if(!(!i||i.length!==t))return i}const fi=class fi extends Mt{constructor(t,e,n,r,s){super(),this._geoData=null,this._knotTolerance=1e-6,this._controlTolerance=1e-6,this._fitTolerance=1e-9,this._normal=new A(0,0,1),t!==void 0&&this.rebuild(t,e,n,r,s)}get dxfTypeName(){return"SPLINE"}static fromControlPoints(t,e,n,r,s){const a=Xt.fromControlPoints(t,e,n,r,s);return a?nd(a,s):null}static fromFitPoints(t,e,n,r,s,a){const o=Xt.fromFitPoints(t,e,n,r,s,a);return o?nd(o,r):null}static fromDwgSpline(t){var o,c,l;const e=!!(t.flag&1),n=bv(t.flag),r=t.numberOfControlPoints||((o=t.controlPoints)==null?void 0:o.length)||0,s=t.numberOfKnots||((c=t.knots)==null?void 0:c.length)||0,a=t.numberOfFitPoints||((l=t.fitPoints)==null?void 0:l.length)||0;if(r>0&&s>0){const h=fi.fromControlPoints(t.controlPoints,t.knots,t.weights,t.degree,e);if(h)return h}return a>0?fi.fromFitPoints(t.fitPoints,n,t.degree,e,t.startTangent,t.endTangent):null}get _geo(){if(this._geoData==null){const t=[{x:0,y:0,z:0},{x:1,y:0,z:0},{x:2,y:0,z:0},{x:3,y:0,z:0}],e=[0,0,0,0,1,1,1,1];this._geoData=Xt.fromControlPoints(t,e,void 0,3,!1)??new Xt(t,e,void 0,3,!1)}return this._geoData}set _geo(t){this._geoData=t}rebuild(t,e,n,r,s){const a=+(t!==void 0)+ +(e!==void 0)+ +(n!==void 0)+ +(r!==void 0)+ +(s!==void 0);if(a<2||a>5)throw Yt.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new Xt(t,e,n,r):this._geo=new Xt(t,e,n,r,s)}get geometricExtents(){return this._geo.box}subGetIntersectCurves(){return[{kind:"spline",spline:this._geo.clone(),extendable:!1}]}get closed(){return this._geo.closed}get area(){return this._geo.area}set closed(t){this._geo.closed=t}get knotTolerance(){return this._knotTolerance}set knotTolerance(t){this._knotTolerance=t}get controlTolerance(){return this._controlTolerance}set controlTolerance(t){this._controlTolerance=t}get fitTolerance(){return this._fitTolerance}set fitTolerance(t){this._fitTolerance=t}get normal(){return this._normal}set normal(t){this._normal.copy(t)}subGetGripPoints(){return this._geo.getGripPoints()}subMoveGripPointsAt(t,e){return this._geo.moveGripPointsAt(t,e),this}subGetOsnapPoints(t,e,n,r){switch(t){case E.EndPoint:r.push(this._geo.startPoint),r.push(this._geo.endPoint);break;case E.Node:{const s=new Set;for(const a of this._geo.knots)s.has(a)||(s.add(a),r.push(this._geo.evaluateAt(a)));break}case E.Nearest:r.push(this._geo.nearestPoint(e));break}}transformBy(t){return this._geo.transform(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=this._geo.tessellate(qr(t));return t.lines(e)}dxfOutFields(t){var n;const e=this._geo;super.dxfOutFields(t),t.writeSubclassMarker("AcDbSpline"),t.writeInt16(70,this.closed?1:0),t.writeInt16(71,e.degree),t.writeInt16(72,e.knots.length),t.writeInt16(73,e.controlPoints.length),t.writeInt16(74,((n=e.fitPoints)==null?void 0:n.length)??0),t.writeDouble(42,this.knotTolerance),t.writeDouble(43,this.controlTolerance),t.writeDouble(44,this.fitTolerance);for(const r of e.knots)t.writeDouble(40,r);for(const r of e.weights)t.writeDouble(41,r);for(const r of e.controlPoints)t.writePoint3d(10,r);for(const r of e.fitPoints??[])t.writePoint3d(11,r);return t.writeVector3d(210,this.normal),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbSpline");let e=this.closed?1:0,n=3,r=0,s=0,a=0;const o=[],c=[],l=[],h=[];let u=null,d=null,g=this.knotTolerance,f=this.controlTolerance,p=this.fitTolerance,m=this.normal.x,y=this.normal.y,b=this.normal.z,_=null,w=null,P=null,S=null;const v=()=>{_&&(l.push(_),_=null)},k=()=>{w&&(h.push(w),w=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const C=t.readItem();if(!C)break;const N=Number(C.code),D=Number(C.value);switch(N){case 70:e=D;break;case 71:n=D;break;case 72:r=D;break;case 73:s=D;break;case 74:a=D;break;case 42:g=D;break;case 43:f=D;break;case 44:p=D;break;case 40:o.push(D);break;case 41:c.push(D);break;case 10:v(),_={x:D,y:0,z:0};break;case 20:_&&(_.y=D);break;case 30:_&&(_.z=D);break;case 11:k(),w={x:D,y:0,z:0};break;case 21:w&&(w.y=D);break;case 31:w&&(w.z=D);break;case 12:P={x:D,y:0,z:0};break;case 22:P&&(P.y=D);break;case 32:P&&(P.z=D,u=P,P=null);break;case 13:S={x:D,y:0,z:0};break;case 23:S&&(S.y=D);break;case 33:S&&(S.z=D,d=S,S=null);break;case 210:m=D;break;case 220:y=D;break;case 230:b=D;break}}v(),k(),this.knotTolerance=g,this.controlTolerance=f,this.fitTolerance=p;const L=new A(m,y,b);return L.lengthSq()>0&&this.normal.copy(L.normalize()),this.applyDxfInSpline({flag:e,degree:n,numberOfControlPoints:s||l.length,numberOfKnots:r||o.length,numberOfFitPoints:a||h.length,controlPoints:l,knots:o,weights:c.length>0?c:void 0,fitPoints:h,startTangent:u,endTangent:d}),this}applyDxfInSpline(t){const e=fi.fromDwgSpline(t);e&&(this._geo=e._geo,this.closed=e.closed)}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.collectPath2d(1);return e.length<2?1:Vt.from2dPoints(e,this.closed).getOffsetSideAtPoint(t)}createOffsetCurve(t){const{points:e,tangents:n}=this._geo.getOffsetSamplePath2d(t),r=Jy(e,this.closed,t,n);return r?Vt.fromGePolyline(r):null}collectPath2d(t){return this._geo.getOffsetSamplePath2d(t).points}};fi.typeName="Spline";let zr=fi;function xv(i){return i==null?Tt.latest.capabilities:typeof i=="object"&&"supportsHandles"in i?i:i instanceof Tt?i.capabilities:new Tt(i).capabilities}const wv=new A,Sh=class Sh extends he{get dxfTypeName(){return"ACAD_TABLE"}constructor(t,e,n){super(t??""),this._attachmentPoint=exports.AcGiMTextAttachmentPoint.TopLeft,this._numColumns=n,this._numRows=e,this._columnWidth=new Array(n),this._rowHeight=new Array(e),this._cells=new Array(e*n)}get blockTableRecord(){const t=this.blockName;if(t){const n=this.database.tables.blockTable.getAt(t);if(n)return n}const e=this.owningBlockRecordId;if(e)return this.database.tables.blockTable.getIdAt(e)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get numRows(){return this._numRows}set numRows(t){this._numRows=t}get numColumns(){return this._numColumns}set numColumns(t){this._numColumns=t}numContents(t,e){return 1}rowHeight(t){return this._rowHeight[t]}setRowHeight(t,e){this._rowHeight[t]=e}setUniformRowHeight(t){this._rowHeight.fill(t)}columnWidth(t){return this._columnWidth[t]}setUniformColumnWidth(t){this._columnWidth.fill(t)}setColumnWidth(t,e){this._columnWidth[t]=e}resizeGrid(t,e){const n=Math.max(0,t),r=Math.max(0,e);this._numRows=n,this._numColumns=r,this._rowHeight=new Array(n).fill(0),this._columnWidth=new Array(r).fill(0),this._cells=new Array(n*r)}cell(t){if(!(t<0||t>=this._cells.length))return this._cells[t]}setCell(t,e){this._cells[t]=e}textString(t,e,n){var s;const r=t*this._numColumns+e;return(s=this._cells[r])==null?void 0:s.text}setTextString(t,e,n){const r=t*this._numColumns+e;if(!this._cells[r]){this._cells[r]={text:n,attachmentPoint:this._attachmentPoint,cellType:1,textHeight:0};return}this._cells[r].text=n}isEmpty(t,e){var r;const n=t*this._numColumns+e;return!((r=this._cells[n])!=null&&r.text)}get geometricExtents(){let t;try{t=this.blockTableRecord}catch{t=void 0}if(t&&t.newIterator().count>0){const o=new H;for(const c of t.newIterator())o.union(c.geometricExtents);return o.applyMatrix4(this.blockTransform),o}const e=this._columnWidth.reduce((o,c)=>o+c,0),n=this._rowHeight.reduce((o,c)=>o+c,0),r=new H;if(e===0&&n===0)return r.expandByPoint(this.position),r;const s=new vi;s.setFromAxisAngle(A.Z_AXIS,this.rotation),Jn.compose(this.position,s,this.scaleFactors);const a=[new x(0,0,0),new x(e,0,0),new x(e,-n,0),new x(0,-n,0)];for(const o of a)r.expandByPoint(o.applyMatrix4(Jn));return r}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"table",properties:[{name:"numRows",type:"string",editable:!0,accessor:{get:()=>this.numRows,set:t=>{this.numRows=t}}},{name:"numColumns",type:"float",editable:!0,accessor:{get:()=>this.numColumns,set:t=>{this.numColumns=t}}},{name:"tableWidth",type:"float",editable:!1,accessor:{get:()=>this._columnWidth.reduce((t,e)=>t+e,0)}},{name:"tableHeight",type:"float",editable:!1,accessor:{get:()=>this._rowHeight.reduce((t,e)=>t+e,0)}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t){const e=this.blockTableRecord;if(e&&e.newIterator().count>0){const g=this.drawAnonymousTableBlock(t,e);if(g)return g}let n=0,r=0;const s=new Uint16Array(this.numColumns*this.numRows*8),a=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let o=0;for(let g=0;g<=this.numRows;g++){n-=g>0?this.rowHeight(g-1):0,r=0;for(let f=0;f<=this.numColumns;f++)r+=f>0?this.columnWidth(f-1):0,a[o++]=r,a[o++]=n,a[o++]=0}const c=[],l=new Array(this.numRows*this.numColumns).fill(!1);r=0,o=0;let h=0;for(let g=0;g<this.numColumns;g++){r+=g>0?this.columnWidth(g-1):0,n=0;for(let f=0;f<this.numRows;f++){n+=f>0?this.rowHeight(f-1):0;const p=this.cell(f*this.numColumns+g);if(h=f*this.numColumns+g,p&&!l[h]){const m=p.borderWidth??1,y=p.borderHeight??1;this.fillVisited(l,h,this.numColumns,m,y),s[o++]=g+f*(this.numColumns+1),s[o++]=g+f*(this.numColumns+1)+m;const b=a[s[o-1]*3]-r,_=g+(f+y)*(this.numColumns+1)+m;g+m==this.numColumns&&(s[o++]=g+f*(this.numColumns+1)+m,s[o++]=_);const w=-a[_*3+1]-n;if(f+y==this.numRows&&(s[o++]=g+(f+y)*(this.numColumns+1)+y,s[o++]=g+(f+y)*(this.numColumns+1)),s[o++]=g+(f+y)*(this.numColumns+1),s[o++]=g+f*(this.numColumns+1),p.text){const P=p.attachmentPoint||this.attachmentPoint||exports.AcGiMTextAttachmentPoint.MiddleCenter,S=this.getTableTextOffset(P,b,w),v={text:p.text,height:this.getCellTextHeight(p,w),width:b,position:wv.set(r,-n,0).clone().add(S),rotation:this.rotation,attachmentPoint:P},k=this.getTextStyle(p);c.push(t.mtext(v,k))}}}}c.push(t.lineSegments(a,3,s));const u=t.group(c),d=new vi;return d.setFromAxisAngle(A.Z_AXIS,this.rotation),Jn.compose(this.position,d,this.scaleFactors),u.applyMatrix(Jn),u}drawAnonymousTableBlock(t,e){const n=[],r=e.newIterator();for(const o of r){let c;if(o.color.isByBlock){id.copy(o.color);const l=this.resolvedColor;l.isForeground?o.color.setForeground():l.RGB!=null&&o.color.setRGBValue(l.RGB),c=o.worldDraw(t),o.color.copy(id)}else c=o.worldDraw(t);c&&(c.objectId=this.objectId,c.ownerId=this.ownerId,c.layerName=this.layer,c.visible=this.visibility&&o.visibility,n.push(c))}const s=t.group(n);s.applyMatrix(this.blockTransform);const a=this.normal;return a&&(a.x!==0||a.y!==0||a.z!==1)&&(Jn.setFromExtrusionDirection(a),s.applyMatrix(Jn)),s}fillVisited(t,e,n,r,s){if(s==1&&r==1)t[e]=!0;else for(let a=0;a<r;++a)for(let o=0;o<s;++o)t[e+a+o*n]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable.resolveAt(t.textStyle);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}getTableTextOffset(t,e,n){const r=new A;switch(t){case 1:break;case 2:r.setX(e/2);break;case 3:r.setX(e);break;case 4:r.setY(-n/2);break;case 5:r.set(e/2,-n/2,0);break;case 6:r.set(e,-n/2,0);break;case 7:r.setY(-n);break;case 8:r.set(e/2,-n,0);break;case 9:r.set(e,-n,0);break}return r}getCellTextHeight(t,e){return t.textHeight&&t.textHeight>0?t.textHeight:Math.max(e/2,1)}dxfOutFields(t){var s,a,o,c,l,h,u;super.dxfOutFields(t),t.writeSubclassMarker("AcDbTable");const e=t.version??((s=t.database)==null?void 0:s.version)??((a=this.database)==null?void 0:a.version),n=xv(e).supportsUtf8CodePage;t.writeInt16(280,this.tableDataVersion),t.writeObjectId(342,this.tableStyleId),t.writeObjectId(343,this.owningBlockRecordId),t.writeVector3d(11,this.horizontalDirection),t.writeUInt32(90,this.tableValueFlag),t.writeUInt32(93,this.tableOverrideFlag),t.writeUInt32(94,this.borderColorOverrideFlag),t.writeUInt32(95,this.borderLineweightOverrideFlag),t.writeUInt32(96,this.borderVisibilityOverrideFlag),t.writeInt16(71,this.attachmentPoint),t.writeInt32(91,this.numRows),t.writeInt32(92,this.numColumns);for(let d=0;d<this.numRows;++d)t.writeDouble(141,this.rowHeight(d));for(let d=0;d<this.numColumns;++d)t.writeDouble(142,this.columnWidth(d));const r=this._cells.length>0?this._cells.length:this.numRows*this.numColumns;for(let d=0;d<r;d++){const g=this._cells[d],f=(g==null?void 0:g.cellType)??(g!=null&&g.blockTableRecordId?2:1);if(t.writeInt16(171,f),t.writeInt16(172,(g==null?void 0:g.flagValue)??0),t.writeInt16(173,(g==null?void 0:g.mergedValue)??0),t.writeBoolean(174,g==null?void 0:g.autoFit),t.writeInt16(175,g==null?void 0:g.borderWidth),t.writeInt16(176,g==null?void 0:g.borderHeight),(g==null?void 0:g.overrideFlag)!=null&&(n?t.writeInt32(91,g.overrideFlag):t.writeInt16(177,g.overrideFlag)),t.writeInt16(178,g==null?void 0:g.virtualEdgeFlag),t.writeAngle(145,g==null?void 0:g.rotation),n&&t.writeInt16(92,g==null?void 0:g.extendedCellFlags),f===1)g!=null&&g.fieldObjetId?t.writeObjectId(344,g.fieldObjetId):this.writeCellText(t,(g==null?void 0:g.text)??"",n,g==null?void 0:g.cellValueBlockBegin);else if(f===2){if(t.writeObjectId(340,g==null?void 0:g.blockTableRecordId),t.writeDouble(144,g==null?void 0:g.blockScale),t.writeInt16(179,g==null?void 0:g.blockAttrNum),(o=g==null?void 0:g.attrDefineId)!=null&&o.length)for(const p of g.attrDefineId)t.writeObjectId(331,p);if((g==null?void 0:g.attrText)!=null)if(Array.isArray(g.attrText))for(const p of g.attrText)t.writeString(300,p);else t.writeString(300,g.attrText)}g!=null&&g.textStyle&&t.writeString(7,g.textStyle),(g==null?void 0:g.textHeight)!=null&&t.writeDouble(140,g.textHeight),(g==null?void 0:g.attachmentPoint)!=null&&t.writeInt16(170,g.attachmentPoint),(g==null?void 0:g.topBorderVisibility)!=null&&t.writeInt16(289,g.topBorderVisibility?1:0),(g==null?void 0:g.rightBorderVisibility)!=null&&t.writeInt16(285,g.rightBorderVisibility?1:0),(g==null?void 0:g.bottomBorderVisibility)!=null&&t.writeInt16(286,g.bottomBorderVisibility?1:0),(g==null?void 0:g.leftBorderVisibility)!=null&&t.writeInt16(288,g.leftBorderVisibility?1:0)}if(t.writeInt16(70,this.flowDirection),t.writeDouble(40,this.horizontalCellMargin),t.writeDouble(41,this.verticalCellMargin),this.suppressTitle!=null&&t.writeInt16(280,this.suppressTitle?1:0),this.suppressHeader!=null&&t.writeInt16(281,this.suppressHeader?1:0),(c=this.cellTypeOverrides)!=null&&c.length)for(const d of this.cellTypeOverrides){t.writeString(7,d.textStyle),t.writeDouble(140,d.textHeight),t.writeInt16(170,d.alignment),t.writeInt16(63,d.backgroundColor),t.writeInt16(64,d.contentColor),d.backgroundColorEnabled!=null&&t.writeInt16(283,d.backgroundColorEnabled?1:0);const g=d.borderLineweights;g&&(t.writeInt16(274,g.top),t.writeInt16(275,g.right),t.writeInt16(276,g.bottom),t.writeInt16(277,g.left),t.writeInt16(278,g.insideHorizontal),t.writeInt16(279,g.insideVertical));const f=d.borderVisibility;f&&(t.writeInt16(284,f.top?1:0),t.writeInt16(285,f.right?1:0),t.writeInt16(286,f.bottom?1:0),t.writeInt16(287,f.left?1:0),t.writeInt16(288,f.insideHorizontal?1:0),t.writeInt16(289,f.insideVertical?1:0))}if(this.tableBorderColors&&(t.writeInt16(63,this.tableBorderColors.left),t.writeInt16(64,this.tableBorderColors.top),t.writeInt16(65,this.tableBorderColors.insideHorizontal),t.writeInt16(66,this.tableBorderColors.bottom),t.writeInt16(68,this.tableBorderColors.insideVertical),t.writeInt16(69,this.tableBorderColors.right)),(l=this.rowDataTypes)!=null&&l.length)for(const d of this.rowDataTypes)t.writeInt16(97,d);if((h=this.rowUnitTypes)!=null&&h.length)for(const d of this.rowUnitTypes)t.writeInt16(98,d);if((u=this.rowFormats)!=null&&u.length)for(const d of this.rowFormats)t.writeString(4,d);return this}dxfInFields(t){var p,m,y;super.dxfInFields(t),t.atSubclassData("AcDbTable");let e=this._numRows,n=this._numColumns,r=!1;const s=[],a=[];let o=0,c=null,l=[],h=((p=this.horizontalDirection)==null?void 0:p.x)??1,u=((m=this.horizontalDirection)==null?void 0:m.y)??0,d=((y=this.horizontalDirection)==null?void 0:y.z)??0;const g=()=>{e>0&&n>0&&(!r||this._numRows!==e||this._numColumns!==n)&&(this.resizeGrid(e,n),r=!0)},f=()=>{c&&(l.length>0&&(c.text=l.join(""),l=[]),g(),o<this._cells.length&&this.setCell(o,c),o+=1,c=null)};for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const b=t.readItem();if(!b)break;const _=Number(b.code),w=Number(b.value);switch(_){case 280:c||(this.tableDataVersion=w);break;case 342:this.tableStyleId=String(b.value);break;case 343:this.owningBlockRecordId=String(b.value);break;case 11:h=w;break;case 21:u=w;break;case 31:d=w;break;case 90:c||(this.tableValueFlag=w);break;case 93:c||(this.tableOverrideFlag=w);break;case 94:c||(this.borderColorOverrideFlag=w);break;case 95:c||(this.borderLineweightOverrideFlag=w);break;case 96:c||(this.borderVisibilityOverrideFlag=w);break;case 71:this.attachmentPoint=w;break;case 170:c?c.attachmentPoint=w:this.attachmentPoint=w;break;case 91:c?c&&(c.overrideFlag=w):(e=w,g());break;case 92:c?c&&(c.extendedCellFlags=w):(n=w,g());break;case 141:s.push(w);break;case 142:a.push(w);break;case 171:f(),c={text:"",attachmentPoint:exports.AcGiMTextAttachmentPoint.MiddleCenter,cellType:w,textHeight:0};break;case 172:c&&(c.flagValue=w);break;case 173:c&&(c.mergedValue=w);break;case 174:c&&(c.autoFit=!!b.value||w!==0);break;case 175:c&&(c.borderWidth=w);break;case 176:c&&(c.borderHeight=w);break;case 177:c&&(c.overrideFlag=w);break;case 178:c&&(c.virtualEdgeFlag=w);break;case 145:c&&(c.rotation=w*Math.PI/180);break;case 1:case 2:case 302:case 303:l.push(String(b.value));break;case 300:if(c){const P=c.attrText;Array.isArray(P)?P.push(String(b.value)):P!=null&&P!==""?c.attrText=[String(P),String(b.value)]:c.attrText=String(b.value)}break;case 301:c&&(c.cellValueBlockBegin=String(b.value));break;case 304:break;case 7:c&&(c.textStyle=String(b.value));break;case 140:c&&(c.textHeight=w);break;case 340:c&&(c.blockTableRecordId=String(b.value));break;case 344:case 345:c&&(c.fieldObjetId=String(b.value));break;case 144:case 146:c&&(c.blockScale=w);break;case 179:c&&(c.blockAttrNum=w);break;case 70:this.flowDirection=w;break;case 40:this.horizontalCellMargin=w;break;case 41:this.verticalCellMargin=w;break;case 281:this.suppressHeader=w!==0;break}}return f(),this.horizontalDirection=new A(h,u,d),s.forEach((b,_)=>this.setRowHeight(_,b)),a.forEach((b,_)=>this.setColumnWidth(_,b)),this}writeCellText(t,e,n,r){if(!n){if(e.length<=250){t.writeString(1,e);return}const o=Math.ceil(e.length/250);for(let c=0;c<o;c++){const l=c*250,h=l+250,u=e.slice(l,h);c===o-1?t.writeString(1,u):t.writeString(2,u)}return}if(t.writeString(301,r??"CELL_VALUE"),e.length<=250){t.writeString(302,e),t.writeString(304,"ACVALUE_END");return}const a=Math.ceil(e.length/250);for(let o=0;o<a;o++){const c=o*250,l=c+250,h=e.slice(c,l);o===a-1?t.writeString(302,h):t.writeString(303,h)}t.writeString(304,"ACVALUE_END")}};Sh.typeName="Table";let ba=Sh;const Jn=new X,id=new U,Ph=class Ph extends rt{constructor(){super(),this._snapBase=new x,this._snapSpacing=new x(1,1,0),this._gridSpacing=new x(1,1,0),this._perspectiveLensLength=50,this._frontClipZ=0,this._backClipZ=0,this._snapAngle=0,this._status=0,this._ucsPerViewport=0,this._circleZoomPercent=1e3,this._statusBitFlags=0,this._ucsOrigin=new x,this._ucsXAxis=new A(1,0,0),this._ucsYAxis=new A(0,1,0),this._elevation=0,this._frozenLayerIds=[],this._sheetName="",this._iconFlag=0,this._orthographicType=0,this._majorGridFrequency=0,this._ambientLightColorIndex=0,this._brightness=0,this._contrast=0,this._shadePlotMode=0,this._renderMode=0,this._defaultLightingType=0,this._isDefaultLighting=!1,this._clippingBoundaryId="",this._backgroundId="",this._shadePlotId="",this._ucsId="",this._ucsBaseId="",this._visualStyleId="",this._sunId="",this._ambientLightColorInstance=0,this._ambientLightColorName="",this._softPointers=[],this._centerPoint=new x,this._height=0,this._width=0,this._viewCenter=new x,this._viewTarget=new x,this._viewDirection=new A(0,0,1),this._viewTwistAngle=0,this._viewHeight=0,this._number=-1}get dxfTypeName(){return"VIEWPORT"}get number(){return this._number}set number(t){this._number=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter=t}get viewTarget(){return this._viewTarget}set viewTarget(t){this._viewTarget=t}get viewDirection(){return this._viewDirection}set viewDirection(t){this._viewDirection.copy(t)}get snapBase(){return this._snapBase}set snapBase(t){this._snapBase.copy(t)}get snapSpacing(){return this._snapSpacing}set snapSpacing(t){this._snapSpacing.copy(t)}get gridSpacing(){return this._gridSpacing}set gridSpacing(t){this._gridSpacing.copy(t)}get perspectiveLensLength(){return this._perspectiveLensLength}set perspectiveLensLength(t){this._perspectiveLensLength=t}get frontClipZ(){return this._frontClipZ}set frontClipZ(t){this._frontClipZ=t}get backClipZ(){return this._backClipZ}set backClipZ(t){this._backClipZ=t}get snapAngle(){return this._snapAngle}set snapAngle(t){this._snapAngle=t}get status(){return this._status}set status(t){this._status=t}get ucsPerViewport(){return this._ucsPerViewport}set ucsPerViewport(t){this._ucsPerViewport=t}get circleZoomPercent(){return this._circleZoomPercent}set circleZoomPercent(t){this._circleZoomPercent=t}get statusBitFlags(){return this._statusBitFlags}set statusBitFlags(t){this._statusBitFlags=t}get ucsOrigin(){return this._ucsOrigin}set ucsOrigin(t){this._ucsOrigin.copy(t)}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get frozenLayerIds(){return this._frozenLayerIds}set frozenLayerIds(t){this._frozenLayerIds=[...t]}get ucsXAxis(){return this._ucsXAxis}set ucsXAxis(t){this._ucsXAxis.copy(t)}get ucsYAxis(){return this._ucsYAxis}set ucsYAxis(t){this._ucsYAxis.copy(t)}get sheetName(){return this._sheetName}set sheetName(t){this._sheetName=t}get iconFlag(){return this._iconFlag}set iconFlag(t){this._iconFlag=t}get orthographicType(){return this._orthographicType}set orthographicType(t){this._orthographicType=t}get majorGridFrequency(){return this._majorGridFrequency}set majorGridFrequency(t){this._majorGridFrequency=t}get ambientLightColorIndex(){return this._ambientLightColorIndex}set ambientLightColorIndex(t){this._ambientLightColorIndex=t}get viewportBrightness(){return this._brightness}set viewportBrightness(t){this._brightness=t}get viewportContrast(){return this._contrast}set viewportContrast(t){this._contrast=t}get shadePlotMode(){return this._shadePlotMode}set shadePlotMode(t){this._shadePlotMode=t}get renderMode(){return this._renderMode}set renderMode(t){this._renderMode=t}get defaultLightingType(){return this._defaultLightingType}set defaultLightingType(t){this._defaultLightingType=t}get isDefaultLighting(){return this._isDefaultLighting}set isDefaultLighting(t){this._isDefaultLighting=t}get clippingBoundaryId(){return this._clippingBoundaryId}set clippingBoundaryId(t){this._clippingBoundaryId=t}get backgroundId(){return this._backgroundId}set backgroundId(t){this._backgroundId=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get ucsId(){return this._ucsId}set ucsId(t){this._ucsId=t}get ucsBaseId(){return this._ucsBaseId}set ucsBaseId(t){this._ucsBaseId=t}get visualStyleId(){return this._visualStyleId}set visualStyleId(t){this._visualStyleId=t}get sunId(){return this._sunId}set sunId(t){this._sunId=t}get ambientLightColorInstance(){return this._ambientLightColorInstance}set ambientLightColorInstance(t){this._ambientLightColorInstance=t}get ambientLightColorName(){return this._ambientLightColorName}set ambientLightColorName(t){this._ambientLightColorName=t}get softPointers(){return this._softPointers}set softPointers(t){this._softPointers=[...t]}get viewTwistAngle(){return this._viewTwistAngle}set viewTwistAngle(t){this._viewTwistAngle=t}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get geometricExtents(){const t=this._width/2,e=this._height/2,n=new H;return n.expandByPoint(new x(this._centerPoint.x-t,this._centerPoint.y-e,this._centerPoint.z)),n.expandByPoint(new x(this._centerPoint.x+t,this._centerPoint.y+e,this._centerPoint.z)),n}subGetIntersectCurves(){const t=this._width/2,e=this._height/2,n=this._centerPoint.z,r=[new x(this._centerPoint.x-t,this._centerPoint.y-e,n),new x(this._centerPoint.x+t,this._centerPoint.y-e,n),new x(this._centerPoint.x+t,this._centerPoint.y+e,n),new x(this._centerPoint.x-t,this._centerPoint.y+e,n)];return te(r,!0)}subGetGripPoints(){const t=new Array,e=this._width/2,n=this._height/2,r=this._centerPoint.z;return t.push(this._centerPoint),(e>0||n>0)&&t.push(new x(this._centerPoint.x-e,this._centerPoint.y-n,r),new x(this._centerPoint.x+e,this._centerPoint.y-n,r),new x(this._centerPoint.x+e,this._centerPoint.y+n,r),new x(this._centerPoint.x-e,this._centerPoint.y+n,r)),t}subMoveGripPointsAt(t,e){return It(t,n=>{this.moveGripAt(n,e)}),this}transformBy(t){const e=this._centerPoint.clone(),n=this._centerPoint.clone().add(new A(this._width,0,0)),r=this._centerPoint.clone().add(new A(0,this._height,0));e.applyMatrix4(t),n.applyMatrix4(t),r.applyMatrix4(t);const s=new A(n).sub(e),a=new A(r).sub(e),o=this._height!==0?a.length()/this._height:1;return this._centerPoint.copy(e),this._width=s.length(),this._height=a.length(),this._viewHeight*=o,this}subWorldDraw(t){if(this._number>1&&this.ownerId!=this.database.tables.blockTable.modelSpace.objectId){const e=this.toGiViewport();return t.group(this.createViewportRect(e,t))}}toGiViewport(){var s;const t=new Ug;t.id=this.objectId,t.groupId=this.ownerId,t.number=this.number,t.centerPoint=this.centerPoint,t.width=this.width,t.height=this.height,t.viewHeight=this.viewHeight,t.viewCenter=this.viewCenter,t.viewTarget=this.viewTarget,t.viewTwistAngle=this.viewTwistAngle,t.frozenLayerIds=this.frozenLayerIds;const e=[],n=(s=this.database)==null?void 0:s.tables.layerTable;if(n)for(const a of this.frozenLayerIds){const o=n.getIdAt(a);o&&e.push(o.name)}t.frozenLayers=e;const r=uf(this);return r&&(t.annotationScaleName=r.scaleName,t.annotationScaleFactor=r.scaleFactor),t}createViewportRect(t,e){const n=[];return n.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),n.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),n.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),n.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),n}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewport"),t.writePoint3d(10,this.centerPoint),t.writeDouble(40,this.width),t.writeDouble(41,this.height),t.writePoint3d(12,this.viewCenter),t.writePoint3d(13,this.snapBase),t.writePoint3d(14,this.snapSpacing),t.writePoint3d(15,this.gridSpacing),t.writeVector3d(16,this.viewDirection),t.writePoint3d(17,this.viewTarget),t.writeDouble(42,this.perspectiveLensLength),t.writeDouble(43,this.frontClipZ),t.writeDouble(44,this.backClipZ),t.writeDouble(45,this.viewHeight),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.viewTwistAngle),t.writeInt16(68,this.status),t.writeInt32(69,this.number),t.writeInt16(71,this.ucsPerViewport),t.writeInt16(72,this.circleZoomPercent),t.writeInt32(90,this.statusBitFlags);for(const e of this.frozenLayerIds)t.writeObjectId(331,e);t.writePoint3d(110,this.ucsOrigin),t.writeVector3d(111,this.ucsXAxis),t.writeVector3d(112,this.ucsYAxis),t.writeDouble(146,this.elevation),this.sheetName&&t.writeString(1,this.sheetName),t.writeInt16(61,this.majorGridFrequency),t.writeInt16(63,this.ambientLightColorIndex),t.writeInt16(74,this.iconFlag),t.writeInt16(79,this.orthographicType);for(const e of this.softPointers)t.writeObjectId(91,e);return t.writeDouble(141,this.viewportBrightness),t.writeDouble(142,this.viewportContrast),t.writeInt16(170,this.shadePlotMode),t.writeInt16(281,this.renderMode),t.writeInt16(282,this.defaultLightingType),t.writeInt16(292,this.isDefaultLighting?1:0),this.clippingBoundaryId&&t.writeObjectId(340,this.clippingBoundaryId),this.backgroundId&&t.writeObjectId(332,this.backgroundId),this.shadePlotId&&t.writeObjectId(333,this.shadePlotId),this.ucsId&&t.writeObjectId(345,this.ucsId),this.ucsBaseId&&t.writeObjectId(346,this.ucsBaseId),this.visualStyleId&&t.writeObjectId(348,this.visualStyleId),this.sunId&&t.writeObjectId(361,this.sunId),this.ambientLightColorInstance&&t.writeInt32(421,this.ambientLightColorInstance),this.ambientLightColorName&&t.writeString(431,this.ambientLightColorName),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbViewport");let e=this.centerPoint.x,n=this.centerPoint.y,r=this.centerPoint.z,s=this.viewCenter.x,a=this.viewCenter.y,o=this.viewCenter.z,c=this.viewTarget.x,l=this.viewTarget.y,h=this.viewTarget.z,u=this.viewDirection.x,d=this.viewDirection.y,g=this.viewDirection.z,f=this.snapBase.x,p=this.snapBase.y,m=this.snapBase.z,y=this.snapSpacing.x,b=this.snapSpacing.y,_=this.snapSpacing.z,w=this.gridSpacing.x,P=this.gridSpacing.y,S=this.gridSpacing.z,v=this.ucsOrigin.x,k=this.ucsOrigin.y,L=this.ucsOrigin.z,C=this.ucsXAxis.x,N=this.ucsXAxis.y,D=this.ucsXAxis.z,tt=this.ucsYAxis.x,G=this.ucsYAxis.y,F=this.ucsYAxis.z;const $=[],T=[];for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const W=t.readItem();if(!W)break;const st=Number(W.code),B=Number(W.value);switch(st){case 1:this.sheetName=String(W.value);break;case 10:e=B;break;case 20:n=B;break;case 30:r=B;break;case 12:s=B;break;case 22:a=B;break;case 32:o=B;break;case 13:f=B;break;case 23:p=B;break;case 33:m=B;break;case 14:y=B;break;case 24:b=B;break;case 34:_=B;break;case 15:w=B;break;case 25:P=B;break;case 35:S=B;break;case 16:u=B;break;case 26:d=B;break;case 36:g=B;break;case 17:c=B;break;case 27:l=B;break;case 37:h=B;break;case 40:this.width=B;break;case 41:this.height=B;break;case 42:this.perspectiveLensLength=B;break;case 43:this.frontClipZ=B;break;case 44:this.backClipZ=B;break;case 45:this.viewHeight=B;break;case 50:this.snapAngle=O.degToRad(B);break;case 51:this.viewTwistAngle=O.degToRad(B);break;case 61:this.majorGridFrequency=B;break;case 63:this.ambientLightColorIndex=B;break;case 68:this.status=B;break;case 69:this.number=B;break;case 71:this.ucsPerViewport=B;break;case 72:this.circleZoomPercent=B;break;case 74:this.iconFlag=B;break;case 79:this.orthographicType=B;break;case 90:this.statusBitFlags=B;break;case 91:case 335:case 343:case 344:T.push(String(W.value));break;case 110:v=B;break;case 120:k=B;break;case 130:L=B;break;case 111:C=B;break;case 121:N=B;break;case 131:D=B;break;case 112:tt=B;break;case 122:G=B;break;case 132:F=B;break;case 141:this.viewportBrightness=B;break;case 142:this.viewportContrast=B;break;case 146:this.elevation=B;break;case 170:this.shadePlotMode=B;break;case 281:this.renderMode=B;break;case 282:this.defaultLightingType=B;break;case 292:this.isDefaultLighting=B!==0;break;case 331:$.push(String(W.value));break;case 332:this.backgroundId=String(W.value);break;case 333:this.shadePlotId=String(W.value);break;case 340:this.clippingBoundaryId=String(W.value);break;case 345:this.ucsId=String(W.value);break;case 346:this.ucsBaseId=String(W.value);break;case 348:this.visualStyleId=String(W.value);break;case 361:this.sunId=String(W.value);break;case 421:this.ambientLightColorInstance=B;break;case 431:this.ambientLightColorName=String(W.value);break}}return this.applyViewportDxfIn(e,n,r,s,a,o,c,l,h),this._viewDirection.copy({x:u,y:d,z:g}),this._snapBase.copy({x:f,y:p,z:m}),this._snapSpacing.copy({x:y,y:b,z:_}),this._gridSpacing.copy({x:w,y:P,z:S}),this._ucsOrigin.copy({x:v,y:k,z:L}),this._ucsXAxis.copy({x:C,y:N,z:D}),this._ucsYAxis.copy({x:tt,y:G,z:F}),this.frozenLayerIds=$,this.softPointers=T,this}applyViewportDxfIn(t,e,n,r,s,a,o,c,l){this.centerPoint.copy({x:t,y:e,z:n}),this.viewCenter.copy({x:r,y:s,z:a}),this.viewTarget.copy({x:o,y:c,z:l});const h=1e-6,u=Math.abs(t)<h&&Math.abs(e)<h,d=Math.abs(o)<h&&Math.abs(c)<h,g=Number.isFinite(this.height)&&Number.isFinite(this.viewHeight)&&Math.abs(this.viewHeight-this.height)<h;u&&d&&g&&this.centerPoint.copy(this.viewCenter)}moveGripAt(t,e){switch(t){case 0:this._centerPoint.add(e);break;case 1:case 2:case 3:case 4:{const n=this.width/2,r=this.height/2,s=this._centerPoint.x,a=this._centerPoint.y,o={1:{x:s-n,y:a-r},2:{x:s+n,y:a-r},3:{x:s+n,y:a+r},4:{x:s-n,y:a+r}},c=t===1?3:t===2?4:t===3?1:2,l=o[t],h=o[c];l.x+=e.x,l.y+=e.y,this._centerPoint.x=(l.x+h.x)/2,this._centerPoint.y=(l.y+h.y)/2,this._centerPoint.z=(this._centerPoint.z??0)+(e.z??0),this.width=Math.abs(h.x-l.x),this.height=Math.abs(h.y-l.y);break}}}};Ph.typeName="Viewport";let _a=Ph;const kh=class kh extends Fr{get dxfTypeName(){return"WIPEOUT"}subWorldDraw(t){t.subEntityTraits.isBackgroundFill=!0;const e=this.boundaryPath(),n=new Ye;return n.add(new ot(e)),t.area(n)}dxfOutFields(t){return super.dxfOutFields(t),this}};kh.typeName="Wipeout";let xa=kh;const Wa=class Wa extends Mt{get dxfTypeName(){return"XLINE"}constructor(){super(),this._basePoint=new x,this._unitDir=new A}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get area(){return 0}get geometricExtents(){const t=new H;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetIntersectCurves(){const t=this._basePoint.clone().add(this._unitDir);return[{kind:"line",line:new Dt(this._basePoint,t),extent:"unbounded"}]}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subMoveGripPointsAt(t,e){return le(t,e,this.basePoint),this}subGetOsnapPoints(t,e,n,r){const s=this.basePoint;if(t===E.EndPoint){r.push(s);return}const a=this.unitDir.clone();if(a.lengthSq()===0)return;a.normalize();const o=new Dt(s,s.clone().add(a));switch(t){case E.Nearest:r.push(o.project(e));break;case E.Perpendicular:r.push(o.perpPoint(e));break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}get directBatchPrimitive(){return"lineStrip"}subWorldDraw(t){const e=[];return e.push(this._unitDir.clone().multiplyScalar(-1e6).add(this._basePoint)),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXline"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}dxfInFields(t){super.dxfInFields(t),t.atSubclassData("AcDbXline");let e=this.basePoint.x,n=this.basePoint.y,r=this.basePoint.z,s=this.unitDir.x,a=this.unitDir.y,o=this.unitDir.z;for(;!t.atEndOfObject&&!t.atEof&&!t.atExtendedData;){const c=t.readItem();if(!c)break;const l=Number(c.code),h=Number(c.value);switch(l){case 10:e=h;break;case 20:n=h;break;case 30:r=h;break;case 11:s=h;break;case 21:a=h;break;case 31:o=h;break}}return this.basePoint=new x(e,n,r),this.unitDir=new A(s,a,o),this}getOffsetCurves(t){const e=this.createOffsetCurve(t);return e?[e]:[]}getOffsetSideAtPoint(t){const e=this.basePoint,n=this.unitDir,r=Math.hypot(n.x,n.y);return r<=1e-9||(n.x*(t.y-e.y)-n.y*(t.x-e.x))/r>=0?1:-1}createOffsetCurve(t){const e=dg(this.basePoint,this.unitDir,t);if(!e)return null;const n=new Wa;return n.basePoint=e,n.unitDir=this.unitDir.clone(),n}};Wa.typeName="Xline";let wa=Wa;function jt(i,t){var e;if(t){const n=Yn(t);if(n.preferred&&n.preferred.scale.scaleFactor>0)return n.preferred.scale.scaleFactor}try{const n=(e=i.database)==null?void 0:e.getDimStyleAnnotationScale(i.name);if(n!=null&&n>0)return n}catch{}return i.dimscale>0?i.dimscale:1}function vv(i,t){let e=i*t.dimlfac;t.dimrnd>0&&(e=Math.round(e/t.dimrnd)*t.dimrnd);let n;switch(t.dimlunit){case 1:n=e.toExponential(Math.max(0,t.dimdec));break;case 4:case 5:n=Pv(e,t.dimdec);break;case 3:n=kv(e,t.dimdec);break;case 2:default:n=pr(e,t.dimdec,t.dimdsep,t.dimzin);break}return n=Iv(n,t.dimzin),$l(n,t.dimpost)}function Av(i,t){const e=Math.abs(i);let n;switch(t.dimaunit){case 1:{const r=e*180/Math.PI,s=Math.floor(r),a=(r-s)*60,o=Math.floor(a),c=(a-o)*60,l=t.dimadec>0?c.toFixed(t.dimadec):String(Math.round(c));n=`${s}d${String(o).padStart(2,"0")}'${l}"`;break}case 2:n=pr(e*200/Math.PI,t.dimadec,t.dimdsep,t.dimazin),n=`${n}g`;break;case 3:n=pr(e,t.dimadec,t.dimdsep,t.dimazin),n=`${n}r`;break;case 0:default:{const r=e*180/Math.PI;n=pr(r,t.dimadec,t.dimdsep,t.dimazin),n=`${n}%%d`;break}}return n=Ev(n,t.dimazin),$l(n,t.dimpost)}function Sv(i,t,e,n="linear"){if(t===".")return"";let r=n==="angular"?Av(i,e):vv(i,e);if(n==="radial"&&!r.startsWith("R")?r=`R${r}`:n==="diametric"&&!r.includes("%%c")&&(r=`%%c${r}`),e.dimtol===1&&n!=="angular"){const s=e.dimtp.toFixed(Math.max(0,e.dimtdec)),a=e.dimtm.toFixed(Math.max(0,e.dimtdec));r=`${r}{\\H0.7x;\\S+${s}^-${a};}`}if(e.dimalt===1&&n!=="angular"){const s=i*e.dimlfac*(e.dimaltf||25.4),a=e.dimaltd,o=pr(s,a,e.dimdsep,e.dimaltz),c=$l(o,e.dimapost||"");r=`${r} [${c}]`}return t==null||t===""?r:t.includes("<>")?t.split("<>").join(r):t}function pr(i,t,e=".",n=0){const r=i.toFixed(Math.max(0,t));return e&&e!=="."?r.replace(".",e):r}function Pv(i,t){const e=Math.trunc(i),n=Math.abs(i-e),r=Math.max(1,Math.pow(2,Math.min(6,Math.max(0,t)))),s=Math.round(n*r);if(s===0)return String(e);if(s===r)return String(e+(i<0?-1:1));const a=Tv(s,r),o=s/a,c=r/a;return e===0?`${i<0?"-":""}${o}/${c}`:`${e} ${o}/${c}`}function kv(i,t){const e=Math.trunc(i/12),n=i-e*12;return`${e}'-${n.toFixed(Math.max(0,t))}"`}function $l(i,t){return t?t.includes("<>")?t.split("<>").join(i):`${i}${t}`:i}function Iv(i,t){return(t&na.Leading)!==0&&i.startsWith("0.")&&(i=i.slice(1)),(t&na.Trailing)!==0&&i.includes(".")&&(i=i.replace(/\.?0+$/,"")),i}function Ev(i,t){return(t===ci.Leading||t===ci.LeadingAndTrailing)&&i.startsWith("0.")&&(i=i.slice(1)),(t===ci.Trailing||t===ci.LeadingAndTrailing)&&i.includes(".")&&(i=i.replace(/(\.\d*?)0+(%%d|g|r|"|')?$/,"$1$2").replace(/\.(%%d|g|r)/,"$1")),i}function Tv(i,t){let e=Math.abs(i),n=Math.abs(t);for(;n;){const r=n;n=e%n,e=r}return e||1}const Lv="_CLOSEDFILLED";function Kt(i){return i==null||i===""||i===exports.AcGiArrowType.ClosedFilled?Lv:i===exports.AcGiArrowType.None||i.toUpperCase()==="_NONE"?"":i}function Zi(i,t){const e=new jl(i),n=new Set;t.dimsah===0?n.add(Kt(t.dimblk)):(n.add(Kt(t.dimblk1)),n.add(Kt(t.dimblk2))),n.add(Kt(t.dimldrblk));for(const r of n)r&&e.ensureArrowBlock(r)}function ql(i){return Fl(i)}function St(i,t,e,n="dimension"){const r=new Xi(i,t);return r.layer="0",r.color=ql(n==="dimension"?e.dimclrd:e.dimclre),r}function _e(i,t,e,n){if(!n)return null;const r=new he(n);return r.position=i,r.rotation=t,r.scaleFactors={x:e,y:e,z:e},r.layer="0",r.color=new U(exports.AcCmColorMethod.ByBlock),r}function Kr(i,t){const e=jt(i,t);return i.dimtsz>0?i.dimtsz*e:i.dimasz*e}function bo(i,t){return i.dimtxt*jt(i,t)}function Wn(i){if(!i.contents)return null;const t=new Gn;return t.layer="0",t.color=ql(i.style.dimclrt),t.location=i.position,t.contents=i.contents,t.height=bo(i.style,i.entity),t.direction={x:Math.cos(i.rotation),y:Math.sin(i.rotation),z:0},t.styleName=i.style.dimtxsty,t.attachmentPoint=i.attachmentPoint??Mv(i.style.dimtad),t}function Mv(i){switch(i){case vn.Above:return exports.AcGiMTextAttachmentPoint.BottomCenter;case vn.Below:return exports.AcGiMTextAttachmentPoint.TopCenter;default:return exports.AcGiMTextAttachmentPoint.MiddleCenter}}function va(i,t,e,n){const r=(e.dimgap>=0?e.dimgap:0)*jt(e,n),s=bo(e,n);let a=0;e.dimtad===vn.Above?a=r+s*.5:e.dimtad===vn.Below?a=-(r+s*.5):e.dimtad===vn.Outside&&(a=r+s*.5);const o=-Math.sin(t),c=Math.cos(t);return new x(i.x+o*a,i.y+c*a,i.z??0)}function Cv(i,t,e,n){const r=e.dimcen*jt(e,n);if(r===0)return;const s=Math.abs(r),a=new x().copy(t);if(i.appendEntity(St({x:a.x-s,y:a.y,z:a.z},{x:a.x+s,y:a.y,z:a.z},e,"extension")),i.appendEntity(St({x:a.x,y:a.y-s,z:a.z},{x:a.x,y:a.y+s,z:a.z},e,"extension")),r<0){const o=s*2;i.appendEntity(St({x:a.x-o,y:a.y,z:a.z},{x:a.x+o,y:a.y,z:a.z},e,"extension")),i.appendEntity(St({x:a.x,y:a.y-o,z:a.z},{x:a.x,y:a.y+o,z:a.z},e,"extension"))}}function Qi(i){const t=new ct;return t.name=i,t}function $n(i,t,e,n){return Sv(i,t,e,n)}function xi(i,t,e,n,r){const s=new Mr(i,t,e,n);return s.layer="0",s.color=ql(r.dimclrd),s}function rn(i,t){return Math.atan2(t.y-i.y,t.x-i.x)}function $o(i){let t=i;for(;t<0;)t+=Math.PI*2;for(;t>=Math.PI*2;)t-=Math.PI*2;return t}function Ov(i,t,e){return i<=t?e>=i&&e<=t:e>=i||e<=t}function Aa(i){const t=rn(i.center,i.xLine1),e=rn(i.center,i.xLine2),n=rn(i.center,i.arcPoint);let r=t,s=e;const a=$o(r),o=$o(s),c=$o(n);Ov(a,o,c)||(r=e,s=t);let l=s-r;for(;l<0;)l+=Math.PI*2;for(;l>Math.PI*2;)l-=Math.PI*2;return{start:r,end:s,sweep:l}}function $t(i,t,e){return new x(i.x+Math.cos(t)*e,i.y+Math.sin(t)*e,i.z??0)}function Rc(i,t){return new x((i.x+t.x)/2,(i.y+t.y)/2,((i.z??0)+(t.z??0))/2)}function Nv(i,t,e){const n=t.dimdle*jt(t,e);n!==0&&(i.extend(n),i.extend(n,!0))}var f0=(i=>(i.ClosedFilled="",i.Dot="_DOT",i.DotSmall="_DOTSMALL",i.DotBlank="_DOTBLANK",i.Origin="_ORIGIN",i.Origin2="_ORIGIN2",i.Open="_OPEN",i.Open90="_OPEN90",i.Open30="_OPEN30",i.Closed="_CLOSED",i.Small="_SMALL",i.None="_NONE",i.Oblique="_OBLIQUE",i.BoxFilled="_BOXFILLED",i.Box="_BOXBLANK",i.ClosedBlank="_CLOSEDBLANK",i.DatumBlank="_DATUMBLANK",i.DatumFilled="_DATUMFILLED",i.Integral="_INTEGRAL",i.ArchTick="_ARCHTICK",i))(f0||{});const ti=48,rd=8,Dv=48,p0=80,m0=32,qo=80,Ko=24,Bc=40,Rv=8,Bv=4,sd=64,Fv=64,Xv=new Set(["_version","_angbase","_angdir","_aunits","_auprec","_lunits","_luprec","_celtscale","_cecolor","_celtype","_celweight","_cetransparency","_clayer","_cmlstyle","_cmlscale","_cmleaderstyle","_hpbackgroundcolor","_hpcolor","_hplayer","_hptransparency","_textstyle","_dimstyle","_dimstyle","_dimstyle","_extents","_insunits","_unitmode","_measurement","_ltscale","_lwdisplay","_pdmode","_pdsize","_osmode","_orthomode","_maxHandle","_drawNoPlotLayers","_drawCircleSides","_dwgname","_currentSpace","_formatter","_eventBatchDepth","_pendingEntityAppended","_pendingEntityErased","_pendingDictObjectSet","_pendingDictObjectErased","_lastOpenError"]),y0=new Set(["constructor","prototype","__proto__","caller","callee","arguments"]);function Pe(i,t){let e=i.get(t);return e||(e={bytes:0,count:0},i.set(t,e)),e}function re(i,t,e,n=0){if(e<=0&&n===0)return;const r=Pe(i.byCategory,t);r.bytes+=e,r.count+=n}function zv(i){const t=Object.getPrototypeOf(i);return t===Object.prototype||t===null}function Yv(i){return ArrayBuffer.isView(i)}function jv(i){return typeof i.addEventListener=="function"&&typeof i.dispatch=="function"&&"listeners"in i}function Vv(i,t,e){return y0.has(t)?!0:!i.includeEventManagers&&(t==="events"||e==="events")?t==="events":!i.includeTransactionManager&&(t==="transactionManager"||e==="transaction")?t==="transactionManager":!1}function ad(i,t,e){return t==="_xDataMap"||t==="_importedXData"||i==="xdata"?"xdata":t==="_tables"||i==="tables"?e instanceof rt?"entities":"tables":t==="_entities"||i==="entities"?"entities":t==="_objects"||i==="objects"?"objects":t==="_handleRegistry"||i==="handleRegistry"?"handleRegistry":t==="transactionManager"||i==="transaction"?"transaction":t==="events"||i==="events"?"events":i==="sysvars"||Xv.has(t)?"sysvars":e instanceof rt?"entities":i==="other"?"other":i}function Uv(i){const t=new Set;let e=i;for(;e&&e!==Object.prototype;){for(const n of Object.getOwnPropertyNames(e)){if(y0.has(n))continue;const r=Object.getOwnPropertyDescriptor(e,n);r&&typeof r.value=="function"||r&&(r.get||r.set)&&r.value===void 0||t.add(n)}if(e=Object.getPrototypeOf(e),e===Object.prototype||e===null||e===Array.prototype||e===Map.prototype||e===Set.prototype)break}return[...t]}function b0(i){if(i==null)return 0;switch(typeof i){case"number":return Rv;case"boolean":return Bv;case"string":return Bc+i.length*2;case"bigint":return 16;case"symbol":return Bc+String(i.description??"").length*2;default:return 0}}function Hv(i,t){if(i.visited.has(t))return 0;i.visited.add(t),i.objectCount+=1;let e=p0+t.size*m0;for(const n of t.keys())e+=b0(n);return re(i,"handleRegistry",e,1),e}function ri(i,t,e,n){if(t==null)return 0;const r=typeof t;if(r==="function")return 0;if(r!=="object"){const h=b0(t);if(re(i,e,h),n){const u=Pe(i.byEntityType,n);u.bytes+=h}return h}const s=t;if(typeof s.nodeType=="number"||i.visited.has(s))return 0;if(i.visited.add(s),i.objectCount+=1,!i.includeEventManagers&&jv(s))return re(i,e,ti,1),ti;let a=n,o=e;if(s instanceof rt){o="entities",a=s.type,i.entityCount+=1;const h=Pe(i.byEntityType,a);h.count+=1}if(typeof s.then=="function")return re(i,o,ti,1),ti;if(s instanceof ArrayBuffer){const h=sd+s.byteLength;return re(i,o,h,1),a&&(Pe(i.byEntityType,a).bytes+=h),h}if(Yv(s)){const h=sd+s.byteLength;return s.buffer&&!i.visited.has(s.buffer)&&i.visited.add(s.buffer),re(i,o,h,1),a&&(Pe(i.byEntityType,a).bytes+=h),h}if(typeof Blob<"u"&&s instanceof Blob){const h=Fv+s.size;return re(i,o,h,1),a&&(Pe(i.byEntityType,a).bytes+=h),h}if(s instanceof Date){const h=ti+8;return re(i,o,h,1),h}if(s instanceof Map){const h=o==="handleRegistry",u=p0+s.size*m0;let d=u;re(i,o,u,1),a&&(Pe(i.byEntityType,a).bytes+=u);for(const[g,f]of s)d+=ri(i,g,o,a),h||(d+=ri(i,f,o,a));return d}if(s instanceof Set){let h=qo+s.size*Ko;for(const u of s)h+=ri(i,u,o,a);return re(i,o,qo+s.size*Ko,1),a&&(Pe(i.byEntityType,a).bytes+=qo+s.size*Ko),h}if(Array.isArray(s)){let h=Dv+s.length*rd;re(i,o,h,1),a&&(Pe(i.byEntityType,a).bytes+=h);for(let u=0;u<s.length;u++){const d=s[u],g=ad(o,String(u),d);h+=ri(i,d,g,a)}return h}let c=ti;const l=zv(s)?Object.getOwnPropertyNames(s):Uv(s);for(const h of l)c+=rd,c+=Math.min(Bc+h.length*2,64);re(i,o,c,1),a&&(Pe(i.byEntityType,a).bytes+=c);for(const h of l){if(Vv(i,h,o)||h==="_database"||h==="database")continue;let u;try{u=s[h]}catch{continue}if(typeof u=="function")continue;if(h==="_handleRegistry"&&u instanceof Map){c+=Hv(i,u);continue}const d=ad(o,h,u);!i.includeTransactionManager&&d==="transaction"||!i.includeEventManagers&&d==="events"||(c+=ri(i,u,d,a))}return c}function Gv(i,t){const e={visited:new WeakSet,objectCount:0,entityCount:0,byCategory:new Map,byEntityType:new Map,includeTransactionManager:(t==null?void 0:t.includeTransactionManager)===!0,includeEventManagers:(t==null?void 0:t.includeEventManagers)===!0};ri(e,i,"sysvars",null);let n=0;const r={};for(const[a,o]of e.byCategory)r[a]={bytes:o.bytes,count:o.count},n+=o.bytes;const s={};for(const[a,o]of e.byEntityType)s[a]={bytes:o.bytes,count:o.count};return{totalBytes:n,objectCount:e.objectCount,entityCount:e.entityCount,byCategory:r,byEntityType:s}}function Zo(i){return i<1024?`${i} B`:i<1024*1024?`${(i/1024).toFixed(2)} KiB`:`${(i/(1024*1024)).toFixed(2)} MiB`}function Wv(i){const t=[`AcDbDatabase memory estimate: ${Zo(i.totalBytes)} (${i.totalBytes} bytes)`,`Objects: ${i.objectCount}, Entities: ${i.entityCount}`,"By category:"],e=Object.entries(i.byCategory).sort((r,s)=>s[1].bytes-r[1].bytes);for(const[r,s]of e)t.push(` ${r}: ${Zo(s.bytes)} (${s.bytes} bytes), count=${s.count}`);const n=Object.entries(i.byEntityType).sort((r,s)=>s[1].bytes-r[1].bytes);if(n.length>0){t.push("By entity type:");for(const[r,s]of n)t.push(` ${r}: ${Zo(s.bytes)} (${s.bytes} bytes), count=${s.count}`)}return t.join(`
15
15
  `)}function $v(i,t,e){const n=r=>r.toString(16).padStart(2,"0");return`#${n(i&255)}${n(t&255)}${n(e&255)}`}function Be(i,t){const e=i.getUint8(t),n=i.getUint8(t+1),r=i.getUint8(t+2);return $v(e,n,r)}function ae(i){const t=(i>>>24&255)/255,e=i>>>16&255,n=i>>>8&255,r=i&255;return`rgba(${e},${n},${r},${t.toFixed(3)})`}function _0(i,t,e){const n=Math.min(1,Math.max(0,e)),r=(u,d)=>Math.round(u+(d-u)*n),s=i>>>24&255,a=t>>>24&255,o=r(i>>>16&255,t>>>16&255),c=r(i>>>8&255,t>>>8&255),l=r(i&255,t&255),h=r(s,a)/255;return`rgba(${o},${c},${l},${h.toFixed(3)})`}function qv(i){const t=/^#([0-9a-f]{6})$/i.exec(i);if(t)return`#${(16777215^parseInt(t[1],16)).toString(16).padStart(6,"0")}`;const e=/^#([0-9a-f]{3})$/i.exec(i);if(e){const[r,s,a]=e[1].split("").map(c=>parseInt(c+c,16)),o=c=>(255-c).toString(16).padStart(2,"0");return`#${o(r)}${o(s)}${o(a)}`}const n=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+)\s*)?\)$/i.exec(i);if(n){const r=255-Math.min(255,parseInt(n[1],10)),s=255-Math.min(255,parseInt(n[2],10)),a=255-Math.min(255,parseInt(n[3],10));return n[4]!==void 0?`rgba(${r},${s},${a},${n[4]})`:`rgb(${r},${s},${a})`}return i}var x0=1,w0=2,v0=3,Kv=4,Fc=5,A0=6,Zv=7,Qv=8,Jv=9,t2=10,e2=11,n2=12,i2=13,r2=14,s2=15,a2=17,o2=18,c2=19,l2=20,h2=21,u2=1,d2=2,g2=3,f2=4,p2=5,m2=6,y2=7,b2=8,_2=9,x2=10,w2=11,v2=12,A2=14,S2=15,P2=16,Xc=8192,S0=2e5,P0=5e5,od=22,k2=24,I2=25,E2=26,T2=27,L2=28,M2=29,C2=30,O2=31,N2=32,D2=33,R2=34,B2=35,F2=36,X2=37,z2=38,Y2=39,j2=40,V2=42,U2=43,H2=44,G2=45,zc=46,Ts=47,W2=54,k0=55,$2=58,q2=59,K2=60,Z2=61,Q2=62,J2=63,tA=64,eA=67,nA=70,iA=75,rA=76,sA=81,aA=82,oA=84,I0=85,E0=86,cA=87,Yc=88,T0=89,lA=91,hA=95,uA=98,dA=115,cd=2147483648,gA=726027589,fA=1128875079,pA=16385,mA=16386,yA=16388,bA=16392,_A=16394,xA=16395,wA=16396,vA=16397,AA=16398,SA=16399,Qo=16400,PA=16401,kA=16402,IA=16404,EA=16405,TA=16410,LA=16411,MA=16412,CA=16414,OA=16415,NA=16417,DA=16418,RA=16420,BA=16421,FA=16422,XA=16424,zA=16425,YA=16426,jA=16427,VA=16428,UA=16429,HA=16430,GA=16431,WA=16432,$A=16433,qA=16434,KA=16435,ZA=16436,QA=16438,JA=16437,tS=1,eS=2,nS=3,iS=4,rS=5,sS=6,aS=7,oS=8,cS=0,lS=1,hS=3,uS=4,dS=0,gS=513,fS=258,pS=260,mS=262,yS=521,bS=302,_S=523,xS=524,wS=532,vS=531,AS=1051,SS=1564,PS=1048,kS=2071,bs=2074,Jo=2096,IS=804,ES=805,TS=301,LS=496,MS=762,CS=764,OS=763,NS=1313,DS=2610,RS=30,BS=295,FS=1336,j=(...i)=>{},Xe=(...i)=>{},Kl=1;function L0(i,t,e,n,r=Kl,s=Xc){const a=Math.max(1,Math.min(r,4));let o=Math.round(i*a),c=Math.round(t*a),l=a,h=a;if(e&&o>e){const f=e/o;o=e,c=Math.round(c*f),l*=f,h*=f}if(n&&c>n){const f=n/c;o=Math.round(o*f),c=n,l*=f,h*=f}const u=Math.max(1,Math.floor(s)),d=Math.max(1,Math.min(o,u)),g=Math.max(1,Math.min(c,u));o=d,c=g;try{if(typeof OffscreenCanvas<"u"){j(`createCanvas: using OffscreenCanvas ${o}×${c}, scale=(${l.toFixed(3)},${h.toFixed(3)})`);const m=new OffscreenCanvas(o,c),y=m.getContext("2d");return y?{canvas:m,ctx:y,scaleX:l,scaleY:h}:(Xe('createCanvas: OffscreenCanvas.getContext("2d") returned null'),null)}if(typeof document>"u")return Xe("createCanvas: no OffscreenCanvas and no document — cannot create canvas"),null;j(`createCanvas: using HTMLCanvasElement ${o}×${c}, scale=(${l.toFixed(3)},${h.toFixed(3)})`);const f=document.createElement("canvas");f.width=o,f.height=c;const p=f.getContext("2d");return p?{canvas:f,ctx:p,scaleX:l,scaleY:h}:(Xe('createCanvas: HTMLCanvasElement.getContext("2d") returned null'),null)}catch{return null}}function M0(i,t){if(i<=0||t<=0)return null;if(i=Math.max(1,Math.min(Math.floor(i),Xc)),t=Math.max(1,Math.min(Math.floor(t),Xc)),typeof OffscreenCanvas<"u"){const e=new OffscreenCanvas(i,t),n=e.getContext("2d");return n?{canvas:e,ctx:n}:null}if(typeof document<"u"){const e=document.createElement("canvas");e.width=i,e.height=t;const n=e.getContext("2d");return n?{canvas:e,ctx:n}:null}return null}function C0(i){switch(i){case u2:return{gco:"source-over",colorTransform:"black",exact:!0};case P2:return{gco:"source-over",colorTransform:"white",exact:!0};case w2:return{gco:"source-over",colorTransform:"skip",exact:!0};case f2:return{gco:"source-over",colorTransform:"invert",exact:!0};case m2:return{gco:"difference",colorTransform:"white",exact:!0};case y2:case p2:return{gco:"difference",colorTransform:"none",exact:!1};case x2:return{gco:"difference",colorTransform:"invert",exact:!1};case _2:return{gco:"darken",colorTransform:"none",exact:!1};case g2:case d2:return{gco:"darken",colorTransform:"invert",exact:!1};case S2:case A2:return{gco:"lighten",colorTransform:"none",exact:!1};case v2:case b2:return{gco:"lighten",colorTransform:"invert",exact:!1};default:return{gco:"source-over",colorTransform:"none",exact:!0}}}function O0(i,t){switch(t){case"invert":return qv(i);case"black":return"#000000";case"white":return"#ffffff";case"skip":return"rgba(0,0,0,0)";default:return i}}function vt(i,t){const e=C0(t.rop2);if(i.globalCompositeOperation=e.gco,t.penStyle===5){i.strokeStyle="rgba(0,0,0,0)",i.lineWidth=0;return}switch(i.strokeStyle=O0(t.penColor,e.colorTransform),i.lineWidth=Math.max(t.penWidth,1),t.penStyle){case 1:i.setLineDash([8,4]);break;case 2:i.setLineDash([2,2]);break;case 3:i.setLineDash([8,4,2,4]);break;case 4:i.setLineDash([8,4,2,4,2,4]);break;default:i.setLineDash([]);break}}function Nt(i,t){const e=C0(t.rop2);if(i.globalCompositeOperation=e.gco,t.brushStyle===1){i.fillStyle="rgba(0,0,0,0)";return}i.fillStyle=O0(t.brushColor,e.colorTransform)}function XS(i){if(!i||i===400)return"";const t=Math.round(i/100)*100;return t===700?"bold":t>=100&&t<=900?String(t):i>=700?"bold":""}function jc(i,t){const e=(t==null?void 0:t[i.toLowerCase().trim()])??i;return/[\s,]/.test(e)&&!/^["']/.test(e)?`"${e}"`:e}function Zl(i,t=1){return Math.max(Math.abs(i.fontHeight)*Math.abs(t||1),8)}function Vc(i,t,e=1){const n=t.fontItalic?"italic ":"",r=XS(t.fontWeight),s=r?`${r} `:"",a=Zl(t,e),o=jc(t.fontFamily,t.fontFamilyMap);i.font=`${n}${s}${a}px ${o}`}function zS(i,t,e,n,r,s=1){if(!t.fontUnderline&&!t.fontStrikeOut)return;const a=Zl(t,s),o=Math.max(1,Math.round(a/14)),c=i.fillStyle;i.fillStyle=t.textColor,t.fontUnderline&&i.fillRect(e,n+Math.round(a*.12),r,o),t.fontStrikeOut&&i.fillRect(e,n-Math.round(a*.3),r,o),i.fillStyle=c}function Yr(i,t,e){if(e<=0)return"";const n=i.byteLength-t;if(n<=0)return"";const r=Math.min(e,Math.floor(n/2));if(r<=0)return"";let s;try{const o=new Uint8Array(i.buffer,i.byteOffset+t,r*2);s=new TextDecoder("utf-16le").decode(o)}catch{const o=[];for(let c=0;c<r;c++){const l=i.getUint16(t+c*2,!0);if(l===0)return o.join("");o.push(String.fromCharCode(l))}return o.join("")}const a=s.indexOf("\0");return a===-1?s:s.slice(0,a)}function YS(i){switch(i){case 0:return{kind:"brush",style:0,color:"#ffffff"};case 1:return{kind:"brush",style:0,color:"#c0c0c0"};case 2:return{kind:"brush",style:0,color:"#808080"};case 3:return{kind:"brush",style:0,color:"#404040"};case 4:return{kind:"brush",style:0,color:"#000000"};case 5:return{kind:"brush",style:1,color:"#000000"};case 6:return{kind:"pen",style:0,widthX:1,color:"#ffffff"};case 7:return{kind:"pen",style:0,widthX:1,color:"#000000"};case 8:return{kind:"pen",style:5,widthX:0,color:"#000000"};case 10:case 11:return{kind:"font",height:12,weight:400,italic:!1,underline:!1,strikeOut:!1,family:"monospace"};case 12:case 13:case 14:case 17:return{kind:"font",height:12,weight:400,italic:!1,underline:!1,strikeOut:!1,family:"sans-serif"};default:return null}}async function jS(i){const t=new Uint8Array(await i.arrayBuffer());let e="";const n=32768;for(let s=0;s<t.length;s+=n)e+=String.fromCharCode(...t.subarray(s,s+n));return`data:${i.type||"application/octet-stream"};base64,${btoa(e)}`}async function N0(i){if(typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas){j(`exportCanvasToPngDataUrl: using OffscreenCanvas.convertToBlob (${i.width}×${i.height})`);const t=await i.convertToBlob({type:"image/png"});return j(`exportCanvasToPngDataUrl: blob size=${t.size} bytes, type=${t.type}`),jS(t)}return typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement?(j(`exportCanvasToPngDataUrl: using HTMLCanvasElement.toDataURL (${i.width}×${i.height})`),i.toDataURL("image/png")):null}function VS(i){if(j("parseEmfHeader: byteLength =",i.byteLength),i.byteLength<88||i.getUint32(0,!0)!==x0)return null;const e=i.getInt32(8,!0),n=i.getInt32(12,!0),r=i.getInt32(16,!0),s=i.getInt32(20,!0),a=i.getInt32(24,!0),o=i.getInt32(28,!0),c=i.getInt32(32,!0),l=i.getInt32(36,!0),h=c-a,u=l-o;return{bounds:{left:e,top:n,right:r,bottom:s},frameW:h,frameH:u}}function US(i){const t=i.bounds.right-i.bounds.left,e=i.bounds.bottom-i.bounds.top;return t>0&&e>0?i.bounds:i.frameW>0&&i.frameH>0?(j(`getRenderableEmfBounds: bounds invalid (${t}×${e}), falling back to frame ${i.frameW}×${i.frameH}`),{left:0,top:0,right:i.frameW,bottom:i.frameH}):null}function HS(i){if(i.byteLength<22)return null;const t=i.getUint32(0,!0);let e=0,n=0,r=0,s=800,a=600,o=96;if(t===2596720087&&(n=i.getInt16(6,!0),r=i.getInt16(8,!0),s=i.getInt16(10,!0),a=i.getInt16(12,!0),o=i.getUint16(14,!0)||96,e=22),e+18>i.byteLength)return null;const c=i.getUint16(e,!0);if(c!==1&&c!==2)return null;const l=i.getUint16(e+2,!0)*2,h=i.getUint32(e+8,!0)*2;return{headerSize:e+l,maxRecordSize:h,boundsLeft:n,boundsTop:r,boundsRight:s,boundsBottom:a,unitsPerInch:o}}function nt(i,t){const e=i.state.worldTransform,n=e[0]*t+e[4];return i.useMappingMode?(n-i.windowOrg.x)/(i.windowExt.cx||1)*(i.viewportExt.cx||1)+i.viewportOrg.x:(n-i.bounds.left)*i.sx}function it(i,t){const e=i.state.worldTransform,n=e[3]*t+e[5];return i.useMappingMode?(n-i.windowOrg.y)/(i.windowExt.cy||1)*(i.viewportExt.cy||1)+i.viewportOrg.y:(n-i.bounds.top)*i.sy}function ue(i,t){const e=i.state.worldTransform[0]*t;return i.useMappingMode?e/(i.windowExt.cx||1)*(i.viewportExt.cx||1):e*i.sx}function Jt(i,t){const e=i.state.worldTransform[3]*t;return i.useMappingMode?e/(i.windowExt.cy||1)*(i.viewportExt.cy||1):e*i.sy}function Tn(i){i.useMappingMode=!0}function GS(i,t,e){const{ctx:n,view:r}=i;if(e>=20){const s=r.getInt32(t,!0),a=r.getInt32(t+4,!0),o=Be(r,t+8);n.fillStyle=o,n.fillRect(nt(i,s),it(i,a),1,1)}return!0}function WS(i,t,e){const{ctx:n,view:r,state:s,inPath:a}=i;return e>=16&&(s.curX=r.getInt32(t,!0),s.curY=r.getInt32(t+4,!0),a&&n.moveTo(nt(i,s.curX),it(i,s.curY))),!0}function $S(i,t,e){const{ctx:n,view:r,state:s,inPath:a}=i;if(e>=16){const o=r.getInt32(t,!0),c=r.getInt32(t+4,!0);a?n.lineTo(nt(i,o),it(i,c)):(vt(n,s),n.beginPath(),n.moveTo(nt(i,s.curX),it(i,s.curY)),n.lineTo(nt(i,o),it(i,c)),n.stroke()),s.curX=o,s.curY=c}return!0}function qS(i,t,e){const{ctx:n,view:r,state:s,inPath:a}=i;if(e>=24){const o=r.getInt32(t,!0),c=r.getInt32(t+4,!0),l=r.getInt32(t+8,!0),h=r.getInt32(t+12,!0);a?n.rect(nt(i,o),it(i,c),ue(i,l-o),Jt(i,h-c)):(Nt(n,s),n.fillRect(nt(i,o),it(i,c),ue(i,l-o),Jt(i,h-c)),vt(n,s),n.strokeRect(nt(i,o),it(i,c),ue(i,l-o),Jt(i,h-c)))}return!0}function KS(i,t,e){const{ctx:n,view:r,state:s,inPath:a}=i;if(e>=32){const o=r.getInt32(t,!0),c=r.getInt32(t+4,!0),l=r.getInt32(t+8,!0),h=r.getInt32(t+12,!0),u=Math.abs(ue(i,r.getInt32(t+16,!0)))/2,d=Math.abs(Jt(i,r.getInt32(t+20,!0)))/2,g=nt(i,o),f=it(i,c),p=ue(i,l-o),m=Jt(i,h-c),y=()=>{const b=Math.min(u,d,p/2,m/2);n.moveTo(g+b,f),n.lineTo(g+p-b,f),n.arcTo(g+p,f,g+p,f+b,b),n.lineTo(g+p,f+m-b),n.arcTo(g+p,f+m,g+p-b,f+m,b),n.lineTo(g+b,f+m),n.arcTo(g,f+m,g,f+m-b,b),n.lineTo(g,f+b),n.arcTo(g,f,g+b,f,b),n.closePath()};a?y():(n.beginPath(),y(),Nt(n,s),n.fill(),vt(n,s),n.stroke())}return!0}function ZS(i,t,e){const{ctx:n,view:r,state:s,inPath:a}=i;if(e>=24){const o=r.getInt32(t,!0),c=r.getInt32(t+4,!0),l=r.getInt32(t+8,!0),h=r.getInt32(t+12,!0),u=nt(i,(o+l)/2),d=it(i,(c+h)/2),g=Math.abs(ue(i,l-o))/2,f=Math.abs(Jt(i,h-c))/2;a?n.ellipse(u,d,g,f,0,0,Math.PI*2):(n.beginPath(),n.ellipse(u,d,g,f,0,0,Math.PI*2),Nt(n,s),n.fill(),vt(n,s),n.stroke())}return!0}function QS(i,t,e,n){const{ctx:r,view:s,state:a,inPath:o}=i;if(n>=40){const c=s.getInt32(e,!0),l=s.getInt32(e+4,!0),h=s.getInt32(e+8,!0),u=s.getInt32(e+12,!0),d=s.getInt32(e+16,!0),g=s.getInt32(e+20,!0),f=s.getInt32(e+24,!0),p=s.getInt32(e+28,!0),m=(c+h)/2,y=(l+u)/2,b=Math.abs(h-c)/2,_=Math.abs(u-l)/2,w=Math.atan2((g-y)/(_||1),(d-m)/(b||1)),P=Math.atan2((p-y)/(_||1),(f-m)/(b||1)),S=nt(i,m),v=it(i,y),k=Math.abs(ue(i,b)),L=Math.abs(Jt(i,_)),C=t===k0,N=t===Ts||t===zc;o||r.beginPath(),t===Ts&&r.moveTo(S,v),C&&r.lineTo(S+k*Math.cos(w),v+L*Math.sin(w)),r.ellipse(S,v,k,L,0,w,P,!1),(t===Ts||t===zc)&&r.closePath(),o||(N&&(Nt(r,a),r.fill()),vt(r,a),r.stroke()),C&&(a.curX=f,a.curY=p)}return!0}function JS(i,t,e,n){switch(t){case s2:return GS(i,e,n);case T2:return WS(i,e,n);case W2:return $S(i,e,n);case U2:return qS(i,e,n);case H2:return KS(i,e,n);case V2:return ZS(i,e,n);case G2:case k0:case zc:case Ts:return QS(i,t,e,n);default:return!1}}var _s=1<<24;function tP(i,t,e,n){return{cmds:[{op:"rect",x:i,y:t,w:e,h:n}],fillRule:"nonzero",simple:!0}}function eP(i){return{cmds:i.map(t=>({op:"rect",x:t.x,y:t.y,w:t.w,h:t.h})),fillRule:"nonzero",simple:!0}}function wi(){return{cmds:[{op:"rect",x:0,y:0,w:0,h:0}],fillRule:"nonzero",simple:!0}}function nP(i,t,e){return{...i,cmds:i.cmds.map(n=>{switch(n.op){case"rect":return{...n,x:n.x+t,y:n.y+e};case"moveTo":case"lineTo":return{...n,x:n.x+t,y:n.y+e};case"bezierCurveTo":return{...n,cp1x:n.cp1x+t,cp1y:n.cp1y+e,cp2x:n.cp2x+t,cp2y:n.cp2y+e,x:n.x+t,y:n.y+e};case"closePath":return n}})}}function D0(i,t,e){return i?i.map(n=>nP(n,t,e)):null}function un(i){return i.simple&&i.fillRule==="nonzero"}function xs(i){return{cmds:[{op:"rect",x:-_s,y:-_s,w:2*_s,h:2*_s},...i.cmds],fillRule:"evenodd",simple:!1}}function mr(i,t,e){switch(e){case"replace":return{region:[t],exact:!0};case"intersect":return{region:i?[...i,t]:[t],exact:!0};case"exclude":{if(!un(t))return{region:i?[...i,t]:[t],exact:!1};const n=xs(t);return{region:i?[...i,n]:[n],exact:!0}}case"union":return i?i.length===1&&un(i[0])&&un(t)?{region:[{cmds:[...i[0].cmds,...t.cmds],fillRule:"nonzero",simple:!1}],exact:!1}:{region:i,exact:!1}:{region:null,exact:!0};case"xor":return i?i.length===1&&un(i[0])&&un(t)?{region:[{cmds:[...i[0].cmds,...t.cmds],fillRule:"evenodd",simple:!1}],exact:!0}:un(t)?{region:[...i,xs(t)],exact:!1}:{region:[...i,t],exact:!1}:un(t)?{region:[xs(t)],exact:!0}:{region:[t],exact:!1};case"complement":return i?i.length===1&&un(i[0])?{region:[t,xs(i[0])],exact:!0}:{region:[t],exact:!1}:{region:[wi()],exact:!0}}}function R0(i,t,e){if(e==="replace")return{region:t,exact:!0};if(t&&t.length===1)return mr(i,t[0],e);if(!t)switch(e){case"intersect":return{region:i,exact:!0};case"union":return{region:null,exact:!0};case"exclude":return{region:[wi()],exact:!0};case"xor":case"complement":return i?i.length===1?mr(null,i[0],"exclude"):{region:i,exact:!1}:{region:[wi()],exact:!0}}switch(e){case"intersect":return{region:i?[...i,...t]:t,exact:!0};case"union":return{region:i,exact:!1};case"xor":return{region:i??t,exact:!1};case"exclude":return{region:i,exact:!1};case"complement":return i?i.length===1?mr(t,i[0],"exclude"):{region:t,exact:!1}:{region:[wi()],exact:!0}}}function iP(i,t){for(const e of t)switch(e.op){case"rect":i.rect(e.x,e.y,e.w,e.h);break;case"moveTo":i.moveTo(e.x,e.y);break;case"lineTo":i.lineTo(e.x,e.y);break;case"bezierCurveTo":i.bezierCurveTo(e.cp1x,e.cp1y,e.cp2x,e.cp2y,e.x,e.y);break;case"closePath":i.closePath();break}}function Uc(i,t){for(const e of t){i.beginPath(),iP(i,e.cmds);try{i.clip(e.fillRule)}catch{}}}function zi(i,t,e=!1){const{ctx:n}=i;for(;i.clipSaveDepth>0;)n.restore(),i.clipSaveDepth--;t&&(n.save(),i.clipSaveDepth=1,e&&n.setTransform(1,0,0,1,0,0),Uc(n,t))}function B0(i,t,e){const n=globalThis.ImageData;return typeof n=="function"?new n(i,t,e):{data:i,width:t,height:e,colorSpace:"srgb"}}function rP(i,t,e,n,r,s,a,o,c,l){let h=0,u=r-1,d=t;const g=t+e;for(;d+1<g&&u>=0;){const f=i.getUint8(d),p=i.getUint8(d+1);if(d+=2,f===0)if(p===0)h=0,u--;else{if(p===1)break;if(p===2){if(d+1>=g)break;h+=i.getUint8(d),u-=i.getUint8(d+1),d+=2}else{const m=p;if(a){const y=Math.ceil(m/2);let b=0;for(let _=0;_<y&&d<g;_++){const w=i.getUint8(d++);for(let P=0;P<2&&b<m;P++){const S=P===0?w>>4&15:w&15;S<o.length&&h<n&&l(h,r-1-u,o[S][0],o[S][1],o[S][2],255),h++,b++}}y&1&&d++}else{for(let y=0;y<m&&d<g&&h<n;y++){const b=i.getUint8(d++);b<o.length&&l(h,r-1-u,o[b][0],o[b][1],o[b][2],255),h++}m&1&&d++}}}else if(a){const m=p>>4&15,y=p&15;for(let b=0;b<f&&h<n;b++){const _=(b&1)===0?m:y;_<o.length&&l(h,r-1-u,o[_][0],o[_][1],o[_][2],255),h++}}else{const m=p,y=m<o.length?o[m]:[0,0,0];for(let b=0;b<f&&h<n;b++)l(h,r-1-u,y[0],y[1],y[2],255),h++}}return B0(new Uint8ClampedArray(c.buffer,c.byteOffset,c.byteLength),n,r)}function tc(i){if(i===0)return 0;let t=0,e=i;for(;(e&1)===0;)e>>>=1,t++;return t}var sP=3;function aP(i,t,e,n,r){let s=0,a=0,o=0,c=0,l=0,h=0,u=1,d=1,g=1;if(n===sP){const f=t+e;if(f+12>i.byteLength)return null;s=i.getUint32(f,!0),a=i.getUint32(f+4,!0),o=i.getUint32(f+8,!0),c=tc(s),l=tc(a),h=tc(o),u=s>>>c||1,d=a>>>l||1,g=o>>>h||1}else r===16&&(s=31744,a=992,o=31,c=10,l=5,h=0,u=31,d=31,g=31);return{rMask:s,gMask:a,bMask:o,rShift:c,gShift:l,bShift:h,rMax:u,gMax:d,bMax:g}}function oP(i,t,e,n,r,s,a,o,c){const l=Math.floor((s*e+31)/32)*4,{rMask:h,gMask:u,bMask:d,rShift:g,gShift:f,bShift:p,rMax:m,gMax:y,bMax:b}=o;for(let _=0;_<n;_++){const w=r?_:n-1-_,P=t+w*l;if(!(P+l>i.byteLength))for(let S=0;S<e;S++){const v=(_*e+S)*4;if(s===1){const k=P+(S>>3),L=i.getUint8(k)>>7-(S&7)&1;L<a.length&&(c[v]=a[L][0],c[v+1]=a[L][1],c[v+2]=a[L][2]),c[v+3]=255}else if(s===4){const k=P+(S>>1),L=(S&1)===0?i.getUint8(k)>>4&15:i.getUint8(k)&15;L<a.length&&(c[v]=a[L][0],c[v+1]=a[L][1],c[v+2]=a[L][2]),c[v+3]=255}else if(s===8){const k=i.getUint8(P+S);k<a.length&&(c[v]=a[k][0],c[v+1]=a[k][1],c[v+2]=a[k][2]),c[v+3]=255}else if(s===16){const k=i.getUint16(P+S*2,!0);c[v]=Math.round(((k&h)>>>g)*255/m),c[v+1]=Math.round(((k&u)>>>f)*255/y),c[v+2]=Math.round(((k&d)>>>p)*255/b),c[v+3]=255}else if(s===24){const k=P+S*3;c[v]=i.getUint8(k+2),c[v+1]=i.getUint8(k+1),c[v+2]=i.getUint8(k),c[v+3]=255}else{const k=P+S*4,L=i.getUint8(k),C=i.getUint8(k+1),N=i.getUint8(k+2),D=i.getUint8(k+3);c[v]=N,c[v+1]=C,c[v+2]=L,c[v+3]=D===0?255:D}}}}function F0(i,t,e,n){if(t<0||e<0||t+40>i.byteLength||e+n>i.byteLength)return null;const r=i.getUint32(t,!0);if(r<40||t+r>i.byteLength)return null;const s=i.getInt32(t+4,!0),a=i.getInt32(t+8,!0),o=i.getUint16(t+12,!0),c=i.getUint16(t+14,!0),l=i.getUint32(t+16,!0);if(o!==1||s<=0||a===0||s>8192||Math.abs(a)>8192)return null;const h=0,u=1,d=2,g=3;if(c!==1&&c!==4&&c!==8&&c!==16&&c!==24&&c!==32||l===u&&c!==8||l===d&&c!==4||l===g&&c!==16&&c!==32||l!==h&&l!==u&&l!==d&&l!==g)return null;const f=Math.abs(a),p=a<0,m=[];if(c<=8){const _=1<<c,w=i.getUint32(t+32,!0)||_,P=Math.min(w,_),S=t+r;if(S+P*4>i.byteLength)return null;for(let v=0;v<P;v++){const k=i.getUint8(S+v*4),L=i.getUint8(S+v*4+1),C=i.getUint8(S+v*4+2);m.push([C,L,k])}}const y=aP(i,t,r,l,c);if(!y)return null;const b=new Uint8ClampedArray(s*f*4);return l===u||l===d?rP(i,e,n,s,f,p,l===d,m,b,(w,P,S,v,k,L)=>{const C=(P*s+w)*4;b[C]=S,b[C+1]=v,b[C+2]=k,b[C+3]=L}):(oP(i,e,s,f,p,c,m,y,b),B0(b,s,f))}function cP(i,t,e,n){const{ctx:r,view:s,state:a}=i;if(n>=76){const o=s.getInt32(e+28,!0),c=s.getInt32(e+32,!0),l=s.getUint32(e+36,!0),h=s.getUint32(e+40,!0),u=s.byteLength;if(l>0&&h>0&&t+h+l*2<=u){const d=Yr(s,t+h,l);if(d.length>0){const g=Math.abs(Jt(i,1));Vc(r,a,g),r.fillStyle=a.textColor;const f=a.textAlign&24,p=f===24?"alphabetic":f===8?"bottom":"top";let m="left";if(a.textAlign&6&&(m="center"),a.textAlign&2&&(m="right"),r.textBaseline=p,r.textAlign=m,a.bkMode===2){const y=r.measureText(d),b=Zl(a,g);r.fillStyle=a.bkColor,r.fillRect(nt(i,o),it(i,c)-b,y.width,b),r.fillStyle=a.textColor}if(r.fillText(d,nt(i,o),it(i,c)),a.fontUnderline||a.fontStrikeOut){const y=r.measureText(d).width,b=nt(i,o),_=m==="center"?b-y/2:m==="right"?b-y:b;zS(r,a,_,it(i,c),y,g)}}}}return!0}var lP=15728673,hP=1;function uP(i,t,e,n){const{ctx:r,view:s,state:a}=i;if(n>=96){const o=s.getInt32(e+16,!0),c=s.getInt32(e+20,!0),l=s.getInt32(e+24,!0),h=s.getInt32(e+28,!0),u=s.getUint32(e+32,!0),d=s.getUint32(e+76,!0),g=s.getUint32(e+80,!0),f=s.getUint32(e+84,!0),p=s.getUint32(e+88,!0);if(d===0&&u===lP){const m=r.fillStyle;return a.brushStyle!==hP&&(r.fillStyle=a.brushColor,r.fillRect(nt(i,o),it(i,c),ue(i,l),Jt(i,h))),r.fillStyle=m,!0}if(d>0&&g>0&&f>0&&p>0){const m=F0(s,t+d,t+f,p);if(m){const y=M0(m.width,m.height);y&&(y.ctx.putImageData(m,0,0),r.drawImage(y.canvas,nt(i,o),it(i,c),ue(i,l),Jt(i,h)))}}}return!0}function dP(i,t,e,n){const{ctx:r,view:s}=i;if(n>=80){const a=s.getInt32(e+16,!0),o=s.getInt32(e+20,!0),c=s.getInt32(e+64,!0),l=s.getInt32(e+68,!0),h=s.getUint32(e+40,!0),u=s.getUint32(e+44,!0),d=s.getUint32(e+48,!0),g=s.getUint32(e+52,!0);if(h>0&&u>0&&d>0&&g>0){const f=F0(s,t+h,t+d,g);if(f){const p=M0(f.width,f.height);p&&(p.ctx.putImageData(f,0,0),r.drawImage(p.canvas,nt(i,a),it(i,o),ue(i,c),Jt(i,l)))}}}return!0}function Ql(i,t,e){const{ctx:n}=i;if(i.clipUntracked&&e!=="replace")switch(e){case"intersect":case"complement":{n.save(),i.clipSaveDepth++,Uc(n,[t]);return}case"exclude":case"xor":{const s=mr(null,t,"exclude");n.save(),i.clipSaveDepth++,Uc(n,s.region??[t]);return}case"union":return}const r=mr(e==="replace"?null:i.clipRegion??null,t,e);r.exact,i.clipRegion=r.region,i.clipUntracked=!1,zi(i,r.region)}function X0(i,t){const{view:e}=i,n=e.getInt32(t,!0),r=e.getInt32(t+4,!0),s=e.getInt32(t+8,!0),a=e.getInt32(t+12,!0);return tP(nt(i,n),it(i,r),ue(i,s-n),Jt(i,a-r))}function gP(i,t,e){return e>=24&&Ql(i,X0(i,t),"intersect"),!0}function fP(i,t,e){return e>=24&&Ql(i,X0(i,t),"exclude"),!0}var pP={1:"intersect",2:"union",3:"xor",4:"exclude",5:"replace"};function mP(i,t,e){const{view:n}=i;if(e<16)return!0;const r=n.getUint32(t,!0),s=n.getUint32(t+4,!0),a=pP[s];if(!a)return!0;if(r===0)return a==="replace"&&(i.clipRegion=null,i.clipUntracked=!1,zi(i,null)),!0;const o=t+8;if(r<32)return!0;const c=n.getUint32(o+8,!0);if(c===0)return!0;const l=[],h=o+32;for(let u=0;u<c;u++){const d=h+u*16;if(d+16>t+8+r)break;const g=n.getInt32(d,!0),f=n.getInt32(d+4,!0),p=n.getInt32(d+8,!0),m=n.getInt32(d+12,!0);l.push({x:(g-i.bounds.left)*i.sx,y:(f-i.bounds.top)*i.sy,w:(p-g)*i.sx,h:(m-f)*i.sy})}return l.length===0||Ql(i,eP(l),a),!0}function yP(i,t,e){if(e>=16){const n=i.view.getInt32(t,!0),r=i.view.getInt32(t+4,!0);if(i.clipUntracked)return!0;i.clipRegion&&(i.clipRegion=D0(i.clipRegion,ue(i,n),Jt(i,r)),zi(i,i.clipRegion))}return!0}function bP(i,t,e,n,r){switch(t){case oA:return cP(i,e,n,r);case rA:return uP(i,e,n,r);case sA:return dP(i,e,n,r);case C2:return gP(i,n,r);case iA:return mP(i,n,r);case M2:return fP(i,n,r);case E2:return yP(i,n,r);default:return!1}}function _P(i,t,e,n,r){return JS(i,t,n,r)||bP(i,t,e,n,r)}function xP(i,t,e,n){const{ctx:r,view:s,state:a,inPath:o}=i,c=s.getUint32(e+16,!0),l=s.getUint32(e+20,!0);if(c===0||c>=1e4||l>=1e5)return;const h=e+24,u=h+c*4;if(u+l*8>t+n)return;o||r.beginPath();let d=0;for(let g=0;g<c;g++){const f=s.getUint32(h+g*4,!0);for(let p=0;p<f&&d<l;p++){const m=s.getInt32(u+d*8,!0),y=s.getInt32(u+d*8+4,!0);p===0?r.moveTo(nt(i,m),it(i,y)):r.lineTo(nt(i,m),it(i,y)),d++}r.closePath()}o||(Nt(r,a),r.fill(a.polyFillMode===2?"nonzero":"evenodd"),vt(r,a),r.stroke())}function wP(i,t,e,n){const{ctx:r,view:s,state:a,inPath:o}=i,c=s.getUint32(e+16,!0),l=s.getUint32(e+20,!0);if(c===0||c>=1e4||l>=1e5)return;const h=e+24,u=h+c*4;if(u+l*8>t+n)return;o||r.beginPath();let d=0;for(let g=0;g<c;g++){const f=s.getUint32(h+g*4,!0);for(let p=0;p<f&&d<l;p++){const m=s.getInt32(u+d*8,!0),y=s.getInt32(u+d*8+4,!0);p===0?r.moveTo(nt(i,m),it(i,y)):r.lineTo(nt(i,m),it(i,y)),d++}}o||(vt(r,a),r.stroke())}function vP(i,t,e,n){const{ctx:r,view:s,state:a,inPath:o}=i,c=s.getUint32(e+16,!0),l=s.getUint32(e+20,!0);if(c===0||c>=1e4||l>=1e5)return;const h=e+24,u=h+c*4;if(u+l*4>t+n)return;o||r.beginPath();let d=0;for(let g=0;g<c;g++){const f=s.getUint32(h+g*4,!0);for(let p=0;p<f&&d<l;p++){const m=s.getInt16(u+d*4,!0),y=s.getInt16(u+d*4+2,!0);p===0?r.moveTo(nt(i,m),it(i,y)):r.lineTo(nt(i,m),it(i,y)),d++}r.closePath()}o||(Nt(r,a),r.fill(a.polyFillMode===2?"nonzero":"evenodd"),vt(r,a),r.stroke())}function AP(i,t,e,n,r){const{ctx:s,view:a,state:o,inPath:c}=i;if(r<28)return!0;const l=a.getUint32(n+16,!0),h=n+20;if(l===0||h+l*8>e+r)return!0;const u=t===v0,d=t===w0||t===Fc,g=t===Fc||t===A0;c||s.beginPath(),g||s.moveTo(nt(i,a.getInt32(h,!0)),it(i,a.getInt32(h+4,!0)));let f=g?0:1;if(d)for(;f+2<l;)s.bezierCurveTo(nt(i,a.getInt32(h+f*8,!0)),it(i,a.getInt32(h+f*8+4,!0)),nt(i,a.getInt32(h+(f+1)*8,!0)),it(i,a.getInt32(h+(f+1)*8+4,!0)),nt(i,a.getInt32(h+(f+2)*8,!0)),it(i,a.getInt32(h+(f+2)*8+4,!0))),f+=3;else for(;f<l;f++)s.lineTo(nt(i,a.getInt32(h+f*8,!0)),it(i,a.getInt32(h+f*8+4,!0)));if(u&&s.closePath(),c||(u&&(Nt(s,o),s.fill(o.polyFillMode===2?"nonzero":"evenodd")),vt(s,o),s.stroke()),l>0){const p=l-1;o.curX=a.getInt32(h+p*8,!0),o.curY=a.getInt32(h+p*8+4,!0)}return!0}function SP(i,t,e,n,r){const{ctx:s,view:a,state:o,inPath:c}=i;if(r<28)return!0;const l=a.getUint32(n+16,!0),h=n+20;if(l===0||h+l*4>e+r)return!0;const u=t===E0,d=t===I0||t===Yc,g=t===Yc||t===T0;c||s.beginPath(),g||s.moveTo(nt(i,a.getInt16(h,!0)),it(i,a.getInt16(h+2,!0)));let f=g?0:1;if(d)for(;f+2<l;)s.bezierCurveTo(nt(i,a.getInt16(h+f*4,!0)),it(i,a.getInt16(h+f*4+2,!0)),nt(i,a.getInt16(h+(f+1)*4,!0)),it(i,a.getInt16(h+(f+1)*4+2,!0)),nt(i,a.getInt16(h+(f+2)*4,!0)),it(i,a.getInt16(h+(f+2)*4+2,!0))),f+=3;else for(;f<l;f++)s.lineTo(nt(i,a.getInt16(h+f*4,!0)),it(i,a.getInt16(h+f*4+2,!0)));if(u&&s.closePath(),c||(u&&(Nt(s,o),s.fill(o.polyFillMode===2?"nonzero":"evenodd")),vt(s,o),s.stroke()),l>0){const p=l-1;o.curX=a.getInt16(h+p*4,!0),o.curY=a.getInt16(h+p*4+2,!0)}return!0}function PP(i,t,e,n,r){const{ctx:s,state:a}=i;switch(t){case Kv:case v0:case w0:case Fc:case A0:return AP(i,t,e,n,r);case cA:case E0:case I0:case Yc:case T0:return SP(i,t,e,n,r);case Zv:return r>=28&&wP(i,e,n,r),!0;case Qv:return r>=28&&xP(i,e,n,r),!0;case lA:return r>=28&&vP(i,e,n,r),!0;case q2:return i.inPath=!0,s.beginPath(),!0;case K2:return i.inPath=!1,!0;case Z2:return s.closePath(),!0;case Q2:return Nt(s,a),s.fill(a.polyFillMode===2?"nonzero":"evenodd"),!0;case J2:return Nt(s,a),s.fill(a.polyFillMode===2?"nonzero":"evenodd"),vt(s,a),s.stroke(),!0;case tA:return vt(s,a),s.stroke(),!0;case eA:{const o=r>=12?i.view.getUint32(n,!0):5;try{if(o===5)for(;i.clipSaveDepth>0;)s.restore(),i.clipSaveDepth--;s.save(),i.clipSaveDepth++,s.clip(a.polyFillMode===2?"nonzero":"evenodd"),i.clipRegion=null,i.clipUntracked=!0}catch{}return!0}default:return!1}}function kP(i,t,e,n){const{view:r,state:s}=i;switch(t){case z2:{if(n>=28){const a=r.getUint32(e,!0),o=r.getUint32(e+4,!0),c=r.getInt32(e+8,!0),l=Be(r,e+16);i.objectTable.set(a,{kind:"pen",style:o&255,widthX:c,color:l})}return!0}case hA:{if(n>=52){const a=r.getUint32(e,!0),o=r.getUint32(e+12,!0),c=r.getInt32(e+16,!0),l=Be(r,e+24);i.objectTable.set(a,{kind:"pen",style:o&255,widthX:c,color:l})}return!0}case Y2:{if(n>=24){const a=r.getUint32(e,!0),o=r.getUint32(e+4,!0),c=Be(r,e+8);i.objectTable.set(a,{kind:"brush",style:o,color:c})}return!0}case aA:{if(n>=332){const a=r.getUint32(e,!0),o=r.getInt32(e+4,!0),c=r.getInt32(e+20,!0),l=r.getUint8(e+24),h=r.getUint8(e+25),u=r.getUint8(e+26),d=Yr(r,e+32,32)||"sans-serif";i.objectTable.set(a,{kind:"font",height:Math.abs(o),weight:c,italic:l!==0,underline:h!==0,strikeOut:u!==0,family:d})}return!0}case X2:{if(n>=12){const a=r.getUint32(e,!0),o=a>=cd?YS(a-cd):i.objectTable.get(a)??null;if(o)switch(o.kind){case"pen":s.penStyle=o.style,s.penWidth=o.widthX,s.penColor=o.color;break;case"brush":s.brushStyle=o.style,s.brushColor=o.color;break;case"font":s.fontHeight=o.height,s.fontWeight=o.weight,s.fontItalic=o.italic,s.fontUnderline=o.underline,s.fontStrikeOut=o.strikeOut,s.fontFamily=o.family;break}}return!0}case j2:return n>=12&&i.objectTable.delete(r.getUint32(e,!0)),!0;default:return!1}}function IP(i,t,e,n){const{view:r}=i;switch(t){case Jv:return n>=16&&(i.windowExt.cx=r.getInt32(e,!0),i.windowExt.cy=r.getInt32(e+4,!0),Tn(i)),!0;case t2:return n>=16&&(i.windowOrg.x=r.getInt32(e,!0),i.windowOrg.y=r.getInt32(e+4,!0),Tn(i)),!0;case e2:return n>=16&&(i.viewportExt.cx=r.getInt32(e,!0),i.viewportExt.cy=r.getInt32(e+4,!0),Tn(i)),!0;case n2:return n>=16&&(i.viewportOrg.x=r.getInt32(e,!0),i.viewportOrg.y=r.getInt32(e+4,!0),Tn(i)),!0;case a2:{if(n>=12){const s=r.getUint32(e,!0);(s===8||s===7)&&Tn(i)}return!0}case O2:{if(n>=24){const s=r.getInt32(e,!0),a=r.getInt32(e+4,!0),o=r.getInt32(e+8,!0),c=r.getInt32(e+12,!0);a!==0&&(i.viewportExt.cx=Math.round(i.viewportExt.cx*s/a)),c!==0&&(i.viewportExt.cy=Math.round(i.viewportExt.cy*o/c)),Tn(i)}return!0}case N2:{if(n>=24){const s=r.getInt32(e,!0),a=r.getInt32(e+4,!0),o=r.getInt32(e+8,!0),c=r.getInt32(e+12,!0);a!==0&&(i.windowExt.cx=Math.round(i.windowExt.cx*s/a)),c!==0&&(i.windowExt.cy=Math.round(i.windowExt.cy*o/c)),Tn(i)}return!0}default:return!1}}function EP(i,t,e,n){const{view:r,state:s}=i;switch(t){case B2:return n>=32&&(s.worldTransform=[r.getFloat32(e,!0),r.getFloat32(e+4,!0),r.getFloat32(e+8,!0),r.getFloat32(e+12,!0),r.getFloat32(e+16,!0),r.getFloat32(e+20,!0)]),!0;case F2:{if(n>=36){const a=r.getUint32(e+24,!0);if(a===1)s.worldTransform=[1,0,0,1,0,0];else if(a===2||a===3){const o=[r.getFloat32(e,!0),r.getFloat32(e+4,!0),r.getFloat32(e+8,!0),r.getFloat32(e+12,!0),r.getFloat32(e+16,!0),r.getFloat32(e+20,!0)],[c,l,h,u,d,g]=s.worldTransform;a===2?s.worldTransform=[o[0]*c+o[1]*h,o[0]*l+o[1]*u,o[2]*c+o[3]*h,o[2]*l+o[3]*u,o[4]*c+o[5]*h+d,o[4]*l+o[5]*u+g]:s.worldTransform=[c*o[0]+l*o[2],c*o[1]+l*o[3],h*o[0]+u*o[2],h*o[1]+u*o[3],d*o[0]+g*o[2]+o[4],d*o[1]+g*o[3]+o[5]]}}return!0}default:return!1}}function TP(i,t,e,n){return IP(i,t,e,n)||EP(i,t,e,n)}function z0(){return{penColor:"#000000",penWidth:1,penStyle:0,brushColor:"#ffffff",brushStyle:0,textColor:"#000000",bkColor:"#ffffff",bkMode:1,fontHeight:12,fontWeight:400,fontItalic:!1,fontFamily:"sans-serif",fontUnderline:!1,fontStrikeOut:!1,rop2:13,curX:0,curY:0,polyFillMode:1,textAlign:0,worldTransform:[1,0,0,1,0,0]}}function Y0(i){return{...i,worldTransform:[...i.worldTransform]}}function j0(){return{objectTable:new Map,worldTransform:[1,0,0,1,0,0],saveStack:[],saveIdMap:new Map,clipRegion:null,clipSaveDepth:0}}function LP(i,t,e,n,r){var c,l;if(TP(i,t,n,r)||kP(i,t,n,r))return!0;const{ctx:s,view:a,state:o}=i;switch(t){case D2:{for(;i.clipSaveDepth>0;)s.restore(),i.clipSaveDepth--;return i.clipStack??(i.clipStack=[]),i.clipStack.push({region:i.clipRegion??null,untracked:i.clipUntracked??!1}),i.stateStack.push(Y0(o)),s.save(),i.clipUntracked?(i.clipUntracked=!1,i.clipRegion=null):i.clipRegion&&zi(i,i.clipRegion),!0}case R2:{if(r>=12){for(;i.clipSaveDepth>0;)s.restore(),i.clipSaveDepth--;let h=a.getInt32(n,!0);for(h<0&&(h=i.stateStack.length+h+1);i.stateStack.length>h&&i.stateStack.length>0;)i.stateStack.pop(),(c=i.clipStack)==null||c.pop(),s.restore();const u=i.stateStack.pop();if(u){const d=(l=i.clipStack)==null?void 0:l.pop();Object.assign(o,u),s.restore(),i.clipRegion=(d==null?void 0:d.region)??null,i.clipUntracked=!1,i.clipRegion&&zi(i,i.clipRegion)}}return!0}case k2:return r>=12&&(o.textColor=Be(a,n)),!0;case I2:return r>=12&&(o.bkColor=Be(a,n)),!0;case o2:return r>=12&&(o.bkMode=a.getUint32(n,!0)),!0;case c2:return r>=12&&(o.polyFillMode=a.getUint32(n,!0)),!0;case l2:return r>=12&&(o.rop2=a.getUint32(n,!0)),!0;case h2:case $2:case od:return t===od&&r>=12&&(o.textAlign=a.getUint32(n,!0)),!0;default:return!1}}function ld(i,t,e){return e?{x:i.getInt16(t,!0),y:i.getInt16(t+2,!0),w:i.getInt16(t+4,!0),h:i.getInt16(t+6,!0)}:{x:i.getFloat32(t,!0),y:i.getFloat32(t+4,!0),w:i.getFloat32(t+8,!0),h:i.getFloat32(t+12,!0)}}function hd(i,t,e){return e?{x:i.getInt16(t,!0),y:i.getInt16(t+2,!0)}:{x:i.getFloat32(t,!0),y:i.getFloat32(t+4,!0)}}function Jl(i,t,e){if(e<12)return null;i.getUint32(t,!0);const n=i.getUint32(t+4,!0),r=i.getUint32(t+8,!0);if(n===0||n>1e5)return null;const s=(r&16384)!==0;if(12+(n*(s?4:8)+n)>e)return null;const h=[];let u=t+12;for(let f=0;f<n;f++)s?(h.push({x:i.getInt16(u,!0),y:i.getInt16(u+2,!0)}),u+=4):(h.push({x:i.getFloat32(u,!0),y:i.getFloat32(u+4,!0)}),u+=8);const d=u+3&-4,g=new Uint8Array(i.buffer,i.byteOffset+d,n);return{kind:"plus-path",points:h,types:new Uint8Array(g)}}function V0(i,t){const e=(c,l)=>t[0]*c+t[2]*l+t[4],n=(c,l)=>t[1]*c+t[3]*l+t[5],r=[],s=i.points,a=i.types;let o=0;for(;o<s.length;){const c=a[o]&15,l=(a[o]&128)!==0;if(c===0)r.push({op:"moveTo",x:e(s[o].x,s[o].y),y:n(s[o].x,s[o].y)}),o++;else if(c===3){if(o+2<s.length){r.push({op:"bezierCurveTo",cp1x:e(s[o].x,s[o].y),cp1y:n(s[o].x,s[o].y),cp2x:e(s[o+1].x,s[o+1].y),cp2y:n(s[o+1].x,s[o+1].y),x:e(s[o+2].x,s[o+2].y),y:n(s[o+2].x,s[o+2].y)}),(a[o+2]&128)!==0&&r.push({op:"closePath"}),o+=3;continue}break}else r.push({op:"lineTo",x:e(s[o].x,s[o].y),y:n(s[o].x,s[o].y)}),o++;l&&r.push({op:"closePath"})}return r}function ud(i,t){i.beginPath();const e=t.points,n=t.types;let r=0;for(;r<e.length;){const s=n[r]&15,a=(n[r]&128)!==0;if(s===0)i.moveTo(e[r].x,e[r].y),r++;else if(s===1)i.lineTo(e[r].x,e[r].y),r++;else if(s===3)if(r+2<e.length){i.bezierCurveTo(e[r].x,e[r].y,e[r+1].x,e[r+1].y,e[r+2].x,e[r+2].y),(n[r+2]&128)!==0&&i.closePath(),r+=3;continue}else break;else i.lineTo(e[r].x,e[r].y),r++;a&&i.closePath()}}function dn(i,t){return[i[0]*t[0]+i[1]*t[2],i[0]*t[1]+i[1]*t[3],i[2]*t[0]+i[3]*t[2],i[2]*t[1]+i[3]*t[3],i[4]*t[0]+i[5]*t[2]+t[4],i[4]*t[1]+i[5]*t[3]+t[5]]}function MP(i,t){const e=i.ctx;try{let n=null;if(t.type==="linear"&&typeof e.createLinearGradient=="function"){if(t.x1===t.x2&&t.y1===t.y2)return null;n=e.createLinearGradient(t.x1,t.y1,t.x2,t.y2)}else if(t.type==="radial"&&typeof e.createRadialGradient=="function"){if(!(t.r>0))return null;n=e.createRadialGradient(t.cx,t.cy,0,t.cx,t.cy,t.r)}if(!n)return null;for(const r of t.stops)n.addColorStop(r.offset,r.color);return n}catch{return null}}function On(i,t,e){if(t&32768)return ae(e);const n=i.objectTable.get(e&255);if(n&&n.kind==="plus-brush"){if(n.gradient){const r=MP(i,n.gradient);if(r)return r}return n.color}return"rgba(0,0,0,1)"}function Sa(i,t){let n;switch(i){case 3:n=96/72;break;case 4:n=96;break;case 5:n=96/300;break;case 6:n=96/25.4;break;default:n=1;break}return n*t}function be(i){const t=i.worldTransform,e=Sa(i.pageUnit,i.pageScale),n=i.dpiScale;i.ctx.setTransform(t[0]*e*n,t[1]*e*n,t[2]*e*n,t[3]*e*n,t[4]*e*n,t[5]*e*n)}function dd(i,t){i.saveStack.push({transform:[...i.worldTransform]}),i.saveIdMap.set(t,i.saveStack.length-1)}function gd(i,t){const e=i.saveIdMap.get(t);if(e!==void 0&&e<i.saveStack.length){i.worldTransform=[...i.saveStack[e].transform],i.saveStack.length=e;const n=new Map;for(const[r,s]of i.saveIdMap)s<e&&n.set(r,s);i.saveIdMap=n}}function ws(i){const t=i.worldTransform,e=Sa(i.pageUnit,i.pageScale)*i.dpiScale;return[t[0]*e,t[1]*e,t[2]*e,t[3]*e,t[4]*e,t[5]*e]}function U0(i,t,e,n,r){const s=(c,l)=>r[0]*c+r[2]*l+r[4],a=(c,l)=>r[1]*c+r[3]*l+r[5];return{cmds:[{op:"moveTo",x:s(i,t),y:a(i,t)},{op:"lineTo",x:s(i+e,t),y:a(i+e,t)},{op:"lineTo",x:s(i+e,t+n),y:a(i+e,t+n)},{op:"lineTo",x:s(i,t+n),y:a(i,t+n)},{op:"closePath"}],fillRule:"nonzero",simple:!0}}function CP(i,t){return{cmds:V0(i.path,t),fillRule:"nonzero",simple:!0}}var OP={0:"intersect",1:"intersect",2:"union",3:"xor",4:"exclude",5:"complement"},NP=64;function Hc(i,t,e=0){if(e>NP)return{region:[wi()],exact:!1};switch(i.type){case"rect":return{region:[U0(i.x,i.y,i.width,i.height,t)],exact:!0};case"path":return{region:[CP(i,t)],exact:!0};case"infinite":return{region:null,exact:!0};case"empty":return{region:[wi()],exact:!0};case"combine":{const n=Hc(i.left,t,e+1),r=Hc(i.right,t,e+1),s=OP[i.combineMode]??"intersect",a=R0(n.region,r.region,s);return{region:a.region,exact:a.exact&&n.exact&&r.exact}}}}var DP={0:"replace",1:"intersect",2:"union",3:"xor",4:"exclude",5:"complement"};function Gc(i){zi(i,i.clipRegion??null,!0)}function H0(i,t,e,n){const r=DP[e],s=R0(i.clipRegion??null,t,r??"intersect");s.exact,i.clipRegion=s.region,Gc(i)}function fd(i,t,e,n){H0(i,[t],e)}function RP(i,t,e,n,r){const{view:s}=i;switch(t){case YA:return r>=24&&(i.worldTransform=[s.getFloat32(n,!0),s.getFloat32(n+4,!0),s.getFloat32(n+8,!0),s.getFloat32(n+12,!0),s.getFloat32(n+16,!0),s.getFloat32(n+20,!0)]),!0;case jA:return i.worldTransform=[1,0,0,1,0,0],!0;case VA:{if(r>=24){const a=[s.getFloat32(n,!0),s.getFloat32(n+4,!0),s.getFloat32(n+8,!0),s.getFloat32(n+12,!0),s.getFloat32(n+16,!0),s.getFloat32(n+20,!0)];e&8192?i.worldTransform=dn(i.worldTransform,a):i.worldTransform=dn(a,i.worldTransform)}return!0}case UA:{if(r>=8){const a=s.getFloat32(n,!0),o=s.getFloat32(n+4,!0),c=[1,0,0,1,a,o];e&8192?i.worldTransform=dn(i.worldTransform,c):i.worldTransform=dn(c,i.worldTransform)}return!0}case HA:{if(r>=8){const a=s.getFloat32(n,!0),o=s.getFloat32(n+4,!0),c=[a,0,0,o,0,0];e&8192?i.worldTransform=dn(i.worldTransform,c):i.worldTransform=dn(c,i.worldTransform)}return!0}case GA:{if(r>=4){const a=s.getFloat32(n,!0)*Math.PI/180,o=Math.cos(a),c=Math.sin(a),l=[o,c,-c,o,0,0];e&8192?i.worldTransform=dn(i.worldTransform,l):i.worldTransform=dn(l,i.worldTransform)}return!0}case BA:return r>=4&&dd(i,s.getUint32(n,!0)),!0;case FA:return r>=4&&gd(i,s.getUint32(n,!0)),!0;case qA:{if(r>=16){const a=e>>8&15,o=s.getFloat32(n,!0),c=s.getFloat32(n+4,!0),l=s.getFloat32(n+8,!0),h=s.getFloat32(n+12,!0),u=U0(o,c,l,h,ws(i));fd(i,u,a)}return!0}case $A:return i.clipRegion=null,Gc(i),!0;case ZA:{const a=e&255,o=e>>8&15,c=i.objectTable.get(a);if(c&&c.kind==="plus-region"&&c.nodes.length>0){const l=Hc(c.nodes[0],ws(i));l.exact,H0(i,l.region,o)}return!0}case KA:{const a=e&255,o=e>>8&15,c=i.objectTable.get(a);if(c&&c.kind==="plus-path"){const l={cmds:V0(c,ws(i)),fillRule:"nonzero",simple:!0};fd(i,l,o)}return!0}case JA:{if(r>=8){const a=s.getFloat32(n,!0),o=s.getFloat32(n+4,!0);if(i.clipRegion){const c=ws(i),l=c[0]*a+c[2]*o,h=c[1]*a+c[3]*o;i.clipRegion=D0(i.clipRegion,l,h),Gc(i)}}return!0}case XA:return r>=4&&dd(i,s.getUint32(n,!0)),!0;case zA:return r>=4&&gd(i,s.getUint32(n,!0)),!0;case WA:{const a=e&255,o=r>=4?s.getFloat32(n,!0):1;return i.pageUnit=a,i.pageScale=o,!0}case CA:case OA:case NA:case DA:case RA:return!0;default:return!1}}function vs(i,t){i.strokeStyle=t.color,i.lineWidth=t.width;const e=t.width||1;switch(t.dashStyle){case 1:i.setLineDash([e*3,Number(e)]);break;case 2:i.setLineDash([Number(e),Number(e)]);break;case 3:i.setLineDash([e*3,Number(e),Number(e),Number(e)]);break;case 4:i.setLineDash([e*3,Number(e),Number(e),Number(e),Number(e),Number(e)]);break;default:i.setLineDash([]);break}}function BP(i,t,e,n,r){const{ctx:s,view:a,objectTable:o}=i;switch(t){case _A:{if(r>=8){const c=a.getUint32(n,!0),l=a.getUint32(n+4,!0),h=(e&16384)!==0,u=h?8:16;s.fillStyle=On(i,e,c),be(i);let d=n+8;for(let g=0;g<l&&d+u<=n+r;g++){const{x:f,y:p,w:m,h:y}=ld(a,d,h);s.fillRect(f,p,m,y),d+=u}}return!0}case xA:{if(r>=4){const c=e&255,l=o.get(c),h=a.getUint32(n,!0),u=(e&16384)!==0,d=u?8:16;l&&l.kind==="plus-pen"&&vs(s,l),be(i);let g=n+4;for(let f=0;f<h&&g+d<=n+r;f++){const{x:p,y:m,w:y,h:b}=ld(a,g,u);s.strokeRect(p,m,y,b),g+=d}}return!0}case AA:{if(r>=12){const c=a.getUint32(n,!0),l=(e&16384)!==0;let h,u,d,g;if(l)h=a.getInt16(n+4,!0),u=a.getInt16(n+6,!0),d=a.getInt16(n+8,!0),g=a.getInt16(n+10,!0);else{if(r<20)return!0;h=a.getFloat32(n+4,!0),u=a.getFloat32(n+8,!0),d=a.getFloat32(n+12,!0),g=a.getFloat32(n+16,!0)}s.fillStyle=On(i,e,c),be(i),s.beginPath(),s.ellipse(h+d/2,u+g/2,Math.abs(d)/2,Math.abs(g)/2,0,0,Math.PI*2),s.fill()}return!0}case SA:{const c=e&255,l=o.get(c),h=(e&16384)!==0;let u,d,g,f;if(h&&r>=8)u=a.getInt16(n,!0),d=a.getInt16(n+2,!0),g=a.getInt16(n+4,!0),f=a.getInt16(n+6,!0);else if(!h&&r>=16)u=a.getFloat32(n,!0),d=a.getFloat32(n+4,!0),g=a.getFloat32(n+8,!0),f=a.getFloat32(n+12,!0);else return!0;return l&&l.kind==="plus-pen"&&vs(s,l),be(i),s.beginPath(),s.ellipse(u+g/2,d+f/2,Math.abs(g)/2,Math.abs(f)/2,0,0,Math.PI*2),s.stroke(),!0}case Qo:case PA:case kA:{const c=t===Qo;if(r<(c?12:8))return!0;let h=n;if(c){const S=a.getUint32(h,!0);s.fillStyle=On(i,e,S),h+=4}const u=a.getFloat32(h,!0)*Math.PI/180,d=a.getFloat32(h+4,!0)*Math.PI/180;h+=8;const g=(e&16384)!==0;let f,p,m,y;if(g&&h+8<=n+r)f=a.getInt16(h,!0),p=a.getInt16(h+2,!0),m=a.getInt16(h+4,!0),y=a.getInt16(h+6,!0);else if(!g&&h+16<=n+r)f=a.getFloat32(h,!0),p=a.getFloat32(h+4,!0),m=a.getFloat32(h+8,!0),y=a.getFloat32(h+12,!0);else return!0;if(t!==Qo){const S=e&255,v=o.get(S);v&&v.kind==="plus-pen"&&vs(s,v)}be(i),s.beginPath();const b=f+m/2,_=p+y/2,w=Math.abs(m)/2,P=Math.abs(y)/2;return c&&s.moveTo(b,_),s.ellipse(b,_,w,P,0,u,u+d,d<0),c?(s.closePath(),s.fill()):s.stroke(),!0}case vA:{if(r>=4){const c=e&255,l=o.get(c),h=a.getUint32(n,!0),u=(e&16384)!==0,d=u?4:8;l&&l.kind==="plus-pen"&&vs(s,l),be(i),s.beginPath();let g=n+4;for(let f=0;f<h&&g+d<=n+r;f++){const p=hd(a,g,u);f===0?s.moveTo(p.x,p.y):s.lineTo(p.x,p.y),g+=d}e&8192&&s.closePath(),s.stroke()}return!0}case wA:{if(r>=8){const c=a.getUint32(n,!0),l=a.getUint32(n+4,!0),h=(e&16384)!==0,u=h?4:8;s.fillStyle=On(i,e,c),be(i),s.beginPath();let d=n+8;for(let g=0;g<l&&d+u<=n+r;g++){const f=hd(a,d,h);g===0?s.moveTo(f.x,f.y):s.lineTo(f.x,f.y),d+=u}s.closePath(),s.fill()}return!0}default:return!1}}var FP=1,G0=2,W0=4,$0=8,Pa=4096;function q0(i){return i>>>12===900097}function K0(i,t){return[i.getFloat32(t,!0),i.getFloat32(t+4,!0),i.getFloat32(t+8,!0),i.getFloat32(t+12,!0),i.getFloat32(t+16,!0),i.getFloat32(t+20,!0)]}function ka(i,t,e){return{x:i[0]*t+i[2]*e+i[4],y:i[1]*t+i[3]*e+i[5]}}function XP(i){return Number.isFinite(i)?Math.min(1,Math.max(0,i)):0}function Z0(i){return i.map(t=>({offset:XP(t.offset),color:t.color})).sort((t,e)=>t.offset-e.offset)}function Q0(i,t,e){if(t+4>e)return null;const n=i.getUint32(t,!0);if(n===0||n>Pa)return null;const r=t+4,s=r+n*4,a=s+n*4;if(a>e)return null;const o=[];for(let c=0;c<n;c++)o.push({offset:i.getFloat32(r+c*4,!0),color:ae(i.getUint32(s+c*4,!0))});return{stops:o,next:a}}function J0(i,t,e){if(t+4>e)return null;const n=i.getUint32(t,!0);if(n===0||n>Pa)return null;const r=t+4,s=r+n*4,a=s+n*4;if(a>e)return null;const o=[];for(let c=0;c<n;c++)o.push({pos:i.getFloat32(r+c*4,!0),factor:i.getFloat32(s+c*4,!0)});return{entries:o,next:a}}function zP(i,t,e){if(t+40>e)return null;const n=i.getUint32(t,!0),r=i.getFloat32(t+8,!0),s=i.getFloat32(t+12,!0),a=i.getFloat32(t+16,!0),o=i.getFloat32(t+20,!0),c=i.getUint32(t+24,!0),l=i.getUint32(t+28,!0);let h=t+40,u=null;n&G0&&h+24<=e&&(u=K0(i,h),h+=24);let d=[{offset:0,color:ae(c)},{offset:1,color:ae(l)}];if(n&W0){const p=Q0(i,h,e);p&&(d=p.stops)}else if(n&$0){const p=J0(i,h,e);p&&(d=p.entries.map(m=>({offset:m.pos,color:_0(c,l,m.factor)})))}let g={x:r,y:s+o/2},f={x:r+a,y:s+o/2};return u&&(g=ka(u,g.x,g.y),f=ka(u,f.x,f.y)),j(`parseEmfPlusBrushObject: linear gradient (${g.x.toFixed(1)},${g.y.toFixed(1)})→(${f.x.toFixed(1)},${f.y.toFixed(1)}), ${d.length} stop(s)`),{kind:"plus-brush",color:ae(c),gradient:{type:"linear",x1:g.x,y1:g.y,x2:f.x,y2:f.y,stops:Z0(d)}}}function YP(i,t,e){if(t+24>e)return null;const n=i.getUint32(t,!0),r=i.getUint32(t+8,!0);let s=i.getFloat32(t+12,!0),a=i.getFloat32(t+16,!0);const o=i.getUint32(t+20,!0);if(o>Pa)return{kind:"plus-brush",color:ae(r)};const c=[];let l=t+24;for(let p=0;p<o&&l+4<=e;p++)c.push(i.getUint32(l,!0)),l+=4;let h=[];if(n&FP){if(l+4<=e){const p=i.getInt32(l,!0);if(l+=4,p>0&&l+p<=e){const m=Jl(i,l,p);m&&(h=m.points),l+=p}}}else if(l+4<=e){const p=i.getUint32(l,!0);if(l+=4,p>0&&p<=Pa&&l+p*8<=e){for(let m=0;m<p;m++)h.push({x:i.getFloat32(l+m*8,!0),y:i.getFloat32(l+m*8+4,!0)});l+=p*8}}let u=null;n&G0&&l+24<=e&&(u=K0(i,l),l+=24),u&&({x:s,y:a}=ka(u,s,a),h=h.map(p=>ka(u,p.x,p.y)));const d=c.length>0?c[0]:r;let g=[{offset:0,color:ae(r)},{offset:1,color:ae(d)}];if(n&W0){const p=Q0(i,l,e);p&&(g=p.stops.map(m=>({offset:1-m.offset,color:m.color})))}else if(n&$0){const p=J0(i,l,e);p&&(g=p.entries.map(m=>({offset:1-m.pos,color:_0(d,r,m.factor)})))}let f=0;for(const p of h){const m=Math.hypot(p.x-s,p.y-a);m>f&&(f=m)}return f>0?(j(`parseEmfPlusBrushObject: path gradient centre=(${s.toFixed(1)},${a.toFixed(1)}), r=${f.toFixed(1)}, ${g.length} stop(s)`),{kind:"plus-brush",color:ae(r),gradient:{type:"radial",cx:s,cy:a,r:f,stops:Z0(g)}}):{kind:"plus-brush",color:ae(r)}}function tm(i,t,e){if(e<8)return null;const n=t+e,r=q0(i.getUint32(t,!0)),s=t+(r?4:0);if(s+8>n)return null;const a=i.getUint32(s,!0),o=s+4;switch(a){case cS:return{kind:"plus-brush",color:ae(i.getUint32(o,!0))};case lS:return o+8<=n?{kind:"plus-brush",color:ae(i.getUint32(o+4,!0))}:{kind:"plus-brush",color:"rgba(0,0,0,1)"};case uS:return zP(i,o,n)??{kind:"plus-brush",color:"rgba(0,0,0,1)"};case hS:return YP(i,o,n)??{kind:"plus-brush",color:"rgba(0,0,0,1)"};default:return{kind:"plus-brush",color:"rgba(0,0,0,1)"}}}var jP=137224,VP=139273,UP=2498570,pd=925707;function HP(i,t,e,n,r,s){const a=Math.abs(r),o=r>0,l=e*4+3&-4,h=l*n,u=new Uint8Array(h);for(let b=0;b<n;b++){const _=o?b:n-1-b,w=t+_*a,P=(n-1-b)*l;switch(s){case UP:case pd:{for(let S=0;S<e;S++){const v=w+S*4;if(v+3>=i.byteLength)break;let k=i.getUint8(v),L=i.getUint8(v+1),C=i.getUint8(v+2);const N=i.getUint8(v+3);s===pd&&N>0&&N<255&&(C=Math.min(255,Math.round(C*255/N)),L=Math.min(255,Math.round(L*255/N)),k=Math.min(255,Math.round(k*255/N)));const D=P+S*4;u[D]=k,u[D+1]=L,u[D+2]=C,u[D+3]=N}break}case VP:{for(let S=0;S<e;S++){const v=w+S*4;if(v+3>=i.byteLength)break;const k=P+S*4;u[k]=i.getUint8(v),u[k+1]=i.getUint8(v+1),u[k+2]=i.getUint8(v+2),u[k+3]=255}break}case jP:{for(let S=0;S<e;S++){const v=w+S*3;if(v+2>=i.byteLength)break;const k=P+S*4;u[k]=i.getUint8(v),u[k+1]=i.getUint8(v+1),u[k+2]=i.getUint8(v+2),u[k+3]=255}break}default:return null}}const d=14,g=108,f=d+g+h,p=new ArrayBuffer(f),m=new DataView(p),y=new Uint8Array(p);return m.setUint8(0,66),m.setUint8(1,77),m.setUint32(2,f,!0),m.setUint32(6,0,!0),m.setUint32(10,d+g,!0),m.setUint32(14,g,!0),m.setInt32(18,e,!0),m.setInt32(22,n,!0),m.setUint16(26,1,!0),m.setUint16(28,32,!0),m.setUint32(30,3,!0),m.setUint32(34,h,!0),m.setInt32(38,2835,!0),m.setInt32(42,2835,!0),m.setUint32(46,0,!0),m.setUint32(50,0,!0),m.setUint32(54,16711680,!0),m.setUint32(58,65280,!0),m.setUint32(62,255,!0),m.setUint32(66,4278190080,!0),m.setUint32(70,1934772034,!0),y.set(u,d+g),p}function GP(i,t,e){if(e<20)return null;const n=q0(i.getUint32(t,!0)),r=i.getUint32(t+(n?8:4),!0),s=i.getFloat32(t+16,!0);let a=t+20;const o=[[1,4],[2,4],[4,4],[8,4],[16,4],[32,4],[64,4],[128,4]];let c=0;for(const[h,u]of o)r&h&&(h===1?a+=24:(h===32&&a+4<=t+e&&(c=i.getUint32(a,!0)),a+=u));if(r&256&&a+4<=t+e){const h=i.getUint32(a,!0);a+=4+h*4}if(r&512&&a+4<=t+e){const h=i.getUint32(a,!0);a+=4+h*4}if(r&1024&&a+4<=t+e){const h=i.getUint32(a,!0);a+=4+h}if(r&2048&&a+4<=t+e){const h=i.getUint32(a,!0);a+=4+h}let l="rgba(0,0,0,1)";if(a+8<=t+e){const h=tm(i,a,t+e-a);h&&(l=h.color)}return{kind:"plus-pen",color:l,width:s||1,dashStyle:c}}function WP(i,t,e,n){let r=null;const s=i.getUint32(t+4,!0);if(s===1&&e>=28){const a=i.getUint32(t+24,!0);if(a===1){const o=i.getInt32(t+8,!0),c=i.getInt32(t+12,!0),l=i.getInt32(t+16,!0),h=i.getUint32(t+20,!0);j(` Bitmap(Pixel): ${o}×${c}, stride=${l}, pixelFormat=0x${h.toString(16).padStart(8,"0")}`);const u=t+28,d=Math.abs(l);if(o>0&&c>0&&o<=8192&&c<=8192&&u+d*c<=i.byteLength){const g=HP(i,u,o,c,l,h);g&&(j(` Bitmap(Pixel): decoded successfully, size=${g.byteLength} bytes`),r=g)}}else if(a===2){const o=t+28,c=e-28;if(j(` Bitmap(Compressed): imgLen=${c}, imgStart=0x${o.toString(16)}`),c>0&&o+c<=i.byteLength&&(r=i.buffer.slice(i.byteOffset+o,i.byteOffset+o+c),r.byteLength>=4)){const l=new Uint8Array(r,0,4);j(` Bitmap(Compressed): first 4 bytes = [${Array.from(l).map(h=>h.toString(16).padStart(2,"0")).join(" ")}]`)}}}else if(s===2&&e>=12){i.getUint32(t+8,!0);const a=i.getUint32(t+12,!0),o=t+16;a>0&&o+a<=i.byteLength?(r=i.buffer.slice(i.byteOffset+o,i.byteOffset+o+a),r.byteLength>=4&&new DataView(r).getUint32(0,!0)):Xe(` Metafile: out of bounds or empty (mfStart=0x${o.toString(16)}, mfDataSize=${a}, viewLen=${i.byteLength})`)}return{data:r,type:s}}function $P(i,t,e){if(e<28)return null;const n=i.getFloat32(t+4,!0),r=i.getInt32(t+12,!0),s=i.getUint32(t+20,!0);let a="sans-serif";return s>0&&t+24+s*2<=t+e&&(a=Yr(i,t+24,s)||"sans-serif"),{kind:"plus-font",emSize:n||12,flags:r,family:a}}function md(i,t,e,n){const{view:r,objectTable:s}=i,a=t&255;switch(t>>8&127){case tS:{const c=tm(r,e,n);c&&s.set(a,c);break}case eS:{const c=GP(r,e,n);c&&s.set(a,c);break}case nS:{const c=Jl(r,e,n);c&&s.set(a,c);break}case sS:{const c=$P(r,e,n);c&&s.set(a,c);break}case aS:{if(n>=16){const c=r.getUint32(e+4,!0),l=r.getUint32(e+12,!0),h=r.getUint32(e+16,!0);s.set(a,{kind:"plus-stringformat",flags:c,alignment:l??0,lineAlignment:h??0})}break}case rS:{if(n<8)break;const c=WP(r,e,n);s.set(a,{kind:"plus-image",data:c.data,type:c.type}),i.totalImageObjects++;break}case iS:{s.set(a,{kind:"plus-imageattributes"});break}case oS:{const c=KP(r,e,n);c&&s.set(a,c);break}}}var qP=64;function Wc(i,t,e,n=0){if(t+4>e||n>qP)return null;const r=i.getUint32(t,!0);let s=t+4;if(r<=5){const a=Wc(i,s,e,n+1);if(!a)return null;s+=a.bytesRead;const o=Wc(i,s,e,n+1);return o?(s+=o.bytesRead,{node:{type:"combine",combineMode:r,left:a.node,right:o.node},bytesRead:s-t}):null}if(r===268435456){if(s+16>e)return null;const a=i.getFloat32(s,!0),o=i.getFloat32(s+4,!0),c=i.getFloat32(s+8,!0),l=i.getFloat32(s+12,!0);return{node:{type:"rect",x:a,y:o,width:c,height:l},bytesRead:s+16-t}}if(r===268435457){if(s+4>e)return null;const a=i.getInt32(s,!0);if(s+=4,a<=0||s+a>e)return null;const o=Jl(i,s,a);return{node:o?{type:"path",path:o}:{type:"empty"},bytesRead:s+a-t}}return r===268435458?{node:{type:"empty"},bytesRead:4}:r===268435459?{node:{type:"infinite"},bytesRead:4}:(Xe(`parseRegionNode: unknown node type 0x${r.toString(16)}`),{node:{type:"empty"},bytesRead:4})}function KP(i,t,e){if(e<8)return null;i.getUint32(t,!0);const n=i.getUint32(t+4,!0);if(n===0||n>1e5)return null;const r=t+e,s=Wc(i,t+8,r);return s?{kind:"plus-region",nodes:[s.node]}:null}function ZP(i,t,e,n,r){const{ctx:s,view:a,objectTable:o}=i;switch(t){case IA:{if(r>=4){const c=a.getUint32(n,!0),l=e&255,h=o.get(l);h&&h.kind==="plus-path"&&(s.fillStyle=On(i,e,c),be(i),ud(s,h),s.fill())}return!0}case EA:{if(r>=4){const c=a.getUint32(n,!0),l=e&255,h=o.get(l),u=o.get(c&255);h&&h.kind==="plus-path"&&(u&&u.kind==="plus-pen"&&(s.strokeStyle=u.color,s.lineWidth=u.width),be(i),ud(s,h),s.stroke())}return!0}case MA:{if(r>=28){const c=a.getUint32(n,!0),l=a.getUint32(n+4,!0),h=a.getUint32(n+8,!0),u=a.getFloat32(n+12,!0),d=a.getFloat32(n+16,!0);a.getFloat32(n+20,!0),a.getFloat32(n+24,!0);const g=e&255,f=o.get(g);if(h>0&&n+28+h*2<=n+r){const p=Yr(a,n+28,h);if(p.length>0&&f&&f.kind==="plus-font"){const m=f.flags&1?"bold ":"",y=f.flags&2?"italic ":"",b=jc(f.family,i.fontFamilyMap);s.font=`${y}${m}${f.emSize}px ${b}`,s.fillStyle=On(i,e,c),s.textBaseline="top";const _=o.get(l);if(_&&_.kind==="plus-stringformat")switch(_.alignment){case 1:s.textAlign="center";break;case 2:s.textAlign="right";break;default:s.textAlign="left"}else s.textAlign="left";be(i),s.fillText(p,u,d)}}}return!0}case QA:{if(r>=16){const c=a.getUint32(n,!0),l=a.getUint32(n+12,!0),h=e&255,u=o.get(h),d=n+16,f=d+l*2+3&-4;if(l>0&&l<1e5&&f+l*8<=n+r&&u&&u.kind==="plus-font"){const p=Yr(a,d,l);if(p.length>0){const m=u.flags&1?"bold ":"",y=u.flags&2?"italic ":"",b=jc(u.family,i.fontFamilyMap);s.font=`${y}${m}${u.emSize}px ${b}`,s.fillStyle=On(i,e,c),s.textBaseline="alphabetic",s.textAlign="left",be(i);const _=a.getFloat32(f,!0),w=a.getFloat32(f+4,!0);s.fillText(p,_,w)}}}return!0}case TA:{if(r>=24){const c=e&255,l=o.get(c),h=(e&16384)!==0,u=n+24;let d,g,f,p;if(h&&u+8<=n+r)d=a.getInt16(u,!0),g=a.getInt16(u+2,!0),f=a.getInt16(u+4,!0),p=a.getInt16(u+6,!0);else if(!h&&u+16<=n+r)d=a.getFloat32(u,!0),g=a.getFloat32(u+4,!0),f=a.getFloat32(u+8,!0),p=a.getFloat32(u+12,!0);else return!0;i.totalDrawImageCalls++;const m=l&&l.kind==="plus-image"&&l.data;if(j(`DrawImage: imgId=${c}, dest=(${d},${g},${f},${p}), compressed=${h}, hasObj=${!!l}, objKind=${l==null?void 0:l.kind}, hasData=${!!m}, dataLen=${m?l.data.byteLength:0}, isMetafile=${(l==null?void 0:l.kind)==="plus-image"?l.type===2:"N/A"}`),j(`DrawImage: worldTransform=[${i.worldTransform.map(y=>y.toFixed(3)).join(", ")}]`),l&&l.kind==="plus-image"&&l.data){const y=i.worldTransform,b=Sa(i.pageUnit,i.pageScale)*i.dpiScale;i.deferredImages.push({imageData:l.data,dx:d,dy:g,dw:f,dh:p,transform:[y[0]*b,y[1]*b,y[2]*b,y[3]*b,y[4]*b,y[5]*b],isMetafile:l.type===2}),j(`DrawImage: queued deferred image (total=${i.deferredImages.length})`)}}return!0}case LA:{if(r>=28){const c=e&255,l=o.get(c),h=a.getUint32(n+24,!0),u=(e&16384)!==0,d=n+28;if(h>=3&&l&&l.kind==="plus-image"&&l.data){let g,f,p,m,y,b;if(u&&d+12<=n+r)g=a.getInt16(d,!0),f=a.getInt16(d+2,!0),p=a.getInt16(d+4,!0),m=a.getInt16(d+6,!0),y=a.getInt16(d+8,!0),b=a.getInt16(d+10,!0);else if(!u&&d+24<=n+r)g=a.getFloat32(d,!0),f=a.getFloat32(d+4,!0),p=a.getFloat32(d+8,!0),m=a.getFloat32(d+12,!0),y=a.getFloat32(d+16,!0),b=a.getFloat32(d+20,!0);else return!0;const _=g,w=f,P=Math.sqrt((p-g)**2+(m-f)**2),S=Math.sqrt((y-g)**2+(b-f)**2);i.totalDrawImageCalls++,j(`DrawImagePoints: imgId=${c}, points=[(${g},${f}),(${p},${m}),(${y},${b})], dest=(${_.toFixed(1)},${w.toFixed(1)},${P.toFixed(1)},${S.toFixed(1)})`),j(`DrawImagePoints: worldTransform=[${i.worldTransform.map(L=>L.toFixed(3)).join(", ")}]`);const v=i.worldTransform,k=Sa(i.pageUnit,i.pageScale)*i.dpiScale;i.deferredImages.push({imageData:l.data,dx:_,dy:w,dw:P,dh:S,transform:[v[0]*k,v[1]*k,v[2]*k,v[3]*k,v[4]*k,v[5]*k],isMetafile:l.type===2}),j(`DrawImagePoints: queued deferred image (total=${i.deferredImages.length})`)}else l&&l.kind==="plus-image"&&l.data}return!0}default:return!1}}var QP={16385:"Header",16386:"EndOfFile",16388:"GetDC",16392:"Object",16394:"FillRects",16395:"DrawRects",16396:"FillPolygon",16397:"DrawLines",16398:"FillEllipse",16399:"DrawEllipse",16404:"FillPath",16405:"DrawPath",16410:"DrawImage",16411:"DrawImagePoints",16412:"DrawString",16438:"DrawDriverString",16414:"SetAntiAliasMode",16426:"SetWorldTransform",16427:"ResetWorldTransform",16428:"MultiplyWorldTransform",16432:"SetPageTransform",16433:"ResetClip",16434:"SetClipRect",16435:"SetClipPath",16436:"SetClipRegion",16437:"OffsetClip",16421:"Save",16422:"Restore",16424:"BeginContainerNoParams",16425:"EndContainer"};function JP(i,t,e,n,r,s,a,o=1,c=P0,l){const h=a??j0(),u={ctx:n,view:i,objectTable:h.objectTable,worldTransform:h.worldTransform,deferredImages:[],saveStack:h.saveStack,saveIdMap:h.saveIdMap,totalImageObjects:0,totalDrawImageCalls:0,clipSaveDepth:h.clipSaveDepth,clipRegion:h.clipRegion,pageUnit:2,pageScale:1,continuationBuffer:null,continuationObjectId:-1,continuationObjectType:0,continuationTotalSize:0,continuationOffset:0,dpiScale:o,fontFamilyMap:l},d=t+e;let g=0;const f=new Map;for(j(`replayEmfPlusRecords: offset=0x${t.toString(16)}, length=${e}`);t+12<=d&&g<c;){const m=i.getUint16(t,!0),y=i.getUint16(t+2,!0),b=i.getUint32(t+4,!0),_=i.getUint32(t+8,!0);if(b<12||t+b>d)break;g++,f.set(m,(f.get(m)??0)+1);const w=t+12;switch(m){case pA:{_>=16&&(i.getFloat32(w+8,!0),i.getFloat32(w+12,!0));break}case mA:t=d;continue;case yA:break;case bA:{const P=(y&32768)!==0,S=y&255;if(P)if(u.continuationBuffer===null){if(_>=4){const v=i.getUint32(w,!0),k=y>>8&127,L=64*1024*1024,C=i.byteLength-w;if(!(!Number.isFinite(v)||v<=0||v>L||v>C||_-4<0)){u.continuationTotalSize=v,u.continuationObjectId=S,u.continuationObjectType=k,u.continuationBuffer=new Uint8Array(v);const N=_-4,D=new Uint8Array(i.buffer,i.byteOffset+w+4,Math.min(N,v));u.continuationBuffer.set(D,0),u.continuationOffset=D.length}}}else{const v=u.continuationTotalSize-u.continuationOffset,k=new Uint8Array(i.buffer,i.byteOffset+w,Math.min(_,v));u.continuationBuffer.set(k,u.continuationOffset),u.continuationOffset+=k.length}else if(u.continuationBuffer!==null&&S===u.continuationObjectId){const v=u.continuationTotalSize-u.continuationOffset,k=new Uint8Array(i.buffer,i.byteOffset+w,Math.min(_,v));u.continuationBuffer.set(k,u.continuationOffset);const L=new DataView(u.continuationBuffer.buffer,u.continuationBuffer.byteOffset,u.continuationBuffer.byteLength),C=u.continuationObjectType<<8|S;md({...u,view:L},C,0,u.continuationTotalSize),u.continuationBuffer=null,u.continuationObjectId=-1,u.continuationObjectType=0,u.continuationTotalSize=0,u.continuationOffset=0}else md(u,y,w,_);break}default:{const P=BP(u,m,y,w,_)||ZP(u,m,y,w,_)||RP(u,m,y,w,_);break}}t+=b}g>=c;const p=[];for(const[m,y]of f)p.push(`${QP[m]??`0x${m.toString(16)}`}:${y}`);return j(`replayEmfPlusRecords: totalImageObjects=${u.totalImageObjects}, totalDrawImageCalls=${u.totalDrawImageCalls}, deferredImages=${u.deferredImages.length}`),j(`replayEmfPlusRecords: object table has ${u.objectTable.size} entries: [${Array.from(u.objectTable.entries()).map(([m,y])=>`${m}:${y.kind}`).join(", ")}]`),a&&(a.worldTransform=u.worldTransform,a.saveIdMap=u.saveIdMap,a.clipRegion=u.clipRegion??null,a.clipSaveDepth=u.clipSaveDepth),n.setTransform(1,0,0,1,0,0),u.deferredImages}var tk={1:"EMR_HEADER",2:"EMR_POLYBEZIER",3:"EMR_POLYGON",4:"EMR_POLYLINE",5:"EMR_POLYBEZIERTO",6:"EMR_POLYLINETO",14:"EMR_EOF",27:"EMR_MOVETOEX",37:"EMR_SELECTOBJECT",38:"EMR_CREATEPEN",39:"EMR_CREATEBRUSHINDIRECT",40:"EMR_DELETEOBJECT",42:"EMR_ELLIPSE",43:"EMR_RECTANGLE",54:"EMR_LINETO",59:"EMR_BEGINPATH",60:"EMR_ENDPATH",62:"EMR_FILLPATH",63:"EMR_STROKEANDFILLPATH",64:"EMR_STROKEPATH",70:"EMR_COMMENT",76:"EMR_BITBLT",81:"EMR_STRETCHDIBITS",84:"EMR_EXTTEXTOUTW",85:"EMR_POLYBEZIER16",86:"EMR_POLYGON16",87:"EMR_POLYLINE16",88:"EMR_POLYBEZIERTO16",91:"EMR_POLYPOLYGON16"};function ek(i,t,e,n,r,s=1,a={}){j(`replayEmfRecords: bounds=(${e.left},${e.top})→(${e.right},${e.bottom}), canvas=${n}×${r}`);const o=[],c=j0(),l=a.maxRecords??S0,h=a.maxRecordsEmfPlus??P0,u=e.right-e.left||1,d=e.bottom-e.top||1,g=n/u,f=r/d;j(`replayEmfRecords: logical=${u}×${d}, scale=(${g.toFixed(4)},${f.toFixed(4)})`);const p={ctx:t,view:i,objectTable:new Map,state:{...z0(),fontFamilyMap:a.fontFamilyMap},stateStack:[],inPath:!1,windowOrg:{x:e.left,y:e.top},windowExt:{cx:u,cy:d},viewportOrg:{x:0,y:0},viewportExt:{cx:n,cy:r},useMappingMode:!1,clipSaveDepth:0,bounds:e,canvasW:n,canvasH:r,sx:g,sy:f};let m=0;const y=i.byteLength;let b=0,_=0;const w=new Map;for(;m+8<=y&&b<l;){const P=i.getUint32(m,!0),S=i.getUint32(m+4,!0);if(S<8||m+S>y)break;b++;const v=m+8;if(w.set(P,(w.get(P)??0)+1),P===nA){if(S>=16){const L=i.getUint32(v,!0),C=i.getUint32(v+4,!0);if(C===gA&&L>4){_++,j(`replayEmfRecords: EMF+ comment #${_} at offset 0x${m.toString(16)}, dataSize=${L}`);const N=JP(i,v+8,L-4,t,n,r,c,s,h,a.fontFamilyMap);j(`replayEmfRecords: EMF+ comment #${_} returned ${N.length} deferred images`),o.push(...N)}else j(C===fA?`replayEmfRecords: EMR_COMMENT_PUBLIC at offset 0x${m.toString(16)}, size=${L}`:`replayEmfRecords: EMR_COMMENT (sig=0x${C.toString(16).padStart(8,"0")}) at offset 0x${m.toString(16)}, size=${L}`)}m+=S;continue}if(P===r2){const L=[];for(const[C,N]of w)L.push(`${tk[C]??`0x${C.toString(16)}`}:${N}`);j(`replayEmfRecords: total deferred images = ${o.length}, EMF+ object table size = ${c.objectTable.size}`);break}if(P===i2||P===L2||P===uA||P===dA||P===x0){m+=S;continue}const k=LP(p,P,m,v,S)||_P(p,P,m,v,S)||PP(p,P,m,v,S);m+=S}return b>=l,o}function nk(i,t,e,n,r){const{ctx:s,view:a,state:o,coord:c}=i,{mx:l,my:h,mw:u,mh:d}=c;switch(t){case wS:return r>=10&&(o.curY=a.getInt16(n,!0),o.curX=a.getInt16(n+2,!0)),!0;case vS:if(r>=10){const g=a.getInt16(n,!0),f=a.getInt16(n+2,!0);vt(s,o),s.beginPath(),s.moveTo(l(o.curX),h(o.curY)),s.lineTo(l(f),h(g)),s.stroke(),o.curX=f,o.curY=g}return!0;case AS:if(r>=14){const g=a.getInt16(n,!0),f=a.getInt16(n+2,!0),p=a.getInt16(n+4,!0),m=a.getInt16(n+6,!0);Nt(s,o),s.fillRect(l(m),h(p),u(f-m),d(g-p)),vt(s,o),s.strokeRect(l(m),h(p),u(f-m),d(g-p))}return!0;case SS:if(r>=18){const g=Math.abs(d(a.getInt16(n,!0)))/2,f=Math.abs(u(a.getInt16(n+2,!0)))/2,p=a.getInt16(n+4,!0),m=a.getInt16(n+6,!0),y=a.getInt16(n+8,!0),b=a.getInt16(n+10,!0),_=l(b),w=h(y),P=u(m-b),S=d(p-y),v=Math.min(f,g,P/2,S/2);s.beginPath(),s.moveTo(_+v,w),s.lineTo(_+P-v,w),s.arcTo(_+P,w,_+P,w+v,v),s.lineTo(_+P,w+S-v),s.arcTo(_+P,w+S,_+P-v,w+S,v),s.lineTo(_+v,w+S),s.arcTo(_,w+S,_,w+S-v,v),s.lineTo(_,w+v),s.arcTo(_,w,_+v,w,v),s.closePath(),Nt(s,o),s.fill(),vt(s,o),s.stroke()}return!0;case PS:if(r>=14){const g=a.getInt16(n,!0),f=a.getInt16(n+2,!0),p=a.getInt16(n+4,!0),m=a.getInt16(n+6,!0);s.beginPath(),s.ellipse(l((m+f)/2),h((p+g)/2),Math.abs(u(f-m))/2,Math.abs(d(g-p))/2,0,0,Math.PI*2),Nt(s,o),s.fill(),vt(s,o),s.stroke()}return!0;case kS:case bs:case Jo:if(r>=22){const g=a.getInt16(n,!0),f=a.getInt16(n+2,!0),p=a.getInt16(n+4,!0),m=a.getInt16(n+6,!0),y=a.getInt16(n+8,!0),b=a.getInt16(n+10,!0),_=a.getInt16(n+12,!0),w=a.getInt16(n+14,!0),P=(w+b)/2,S=(_+y)/2,v=Math.abs(b-w)/2,k=Math.abs(y-_)/2,L=Math.atan2((p-S)/(k||1),(m-P)/(v||1)),C=Math.atan2((g-S)/(k||1),(f-P)/(v||1));s.beginPath(),t===bs&&s.moveTo(l(P),h(S)),s.ellipse(l(P),h(S),Math.abs(u(v)),Math.abs(d(k)),0,L,C,!1),(t===bs||t===Jo)&&s.closePath(),(t===bs||t===Jo)&&(Nt(s,o),s.fill()),vt(s,o),s.stroke()}return!0;case IS:if(r>=10){const g=a.getInt16(n,!0);if(g>0&&n+2+g*4<=e+r){s.beginPath();for(let f=0;f<g;f++){const p=a.getInt16(n+2+f*4,!0),m=a.getInt16(n+4+f*4,!0);f===0?s.moveTo(l(p),h(m)):s.lineTo(l(p),h(m))}s.closePath(),Nt(s,o),s.fill(o.polyFillMode===2?"nonzero":"evenodd"),vt(s,o),s.stroke()}}return!0;case ES:if(r>=10){const g=a.getInt16(n,!0);if(g>0&&n+2+g*4<=e+r){s.beginPath();for(let f=0;f<g;f++){const p=a.getInt16(n+2+f*4,!0),m=a.getInt16(n+4+f*4,!0);f===0?s.moveTo(l(p),h(m)):s.lineTo(l(p),h(m))}vt(s,o),s.stroke()}}return!0;case FS:if(r>=10){const g=a.getUint16(n,!0);let f=n+2;const p=[];for(let m=0;m<g&&f+2<=e+r;m++)p.push(a.getInt16(f,!0)),f+=2;s.beginPath();for(const m of p)if(m>0&&f+m*4<=e+r){for(let y=0;y<m;y++){const b=a.getInt16(f+y*4,!0),_=a.getInt16(f+y*4+2,!0);y===0?s.moveTo(l(b),h(_)):s.lineTo(l(b),h(_))}s.closePath(),f+=m*4}Nt(s,o),s.fill(o.polyFillMode===2?"nonzero":"evenodd"),vt(s,o),s.stroke()}return!0;case NS:if(r>=12){const g=a.getInt16(n,!0);if(g>0&&n+2+g<=e+r){let f="";for(let y=0;y<g;y++){const b=a.getUint8(n+2+y);if(b===0)break;f+=String.fromCharCode(b)}const p=g+g%2,m=n+2+p;if(m+4<=e+r){const y=a.getInt16(m,!0),b=a.getInt16(m+2,!0);Vc(s,o,Math.abs(d(1))),s.fillStyle=o.textColor,s.fillText(f,l(b),h(y))}}}return!0;case DS:if(r>=14){const g=a.getInt16(n,!0),f=a.getInt16(n+2,!0),p=a.getInt16(n+4,!0),m=(a.getUint16(n+6,!0)&4)!==0,y=n+8+(m?8:0);if(p>0&&y+p<=e+r){let b="";for(let _=0;_<p;_++){const w=a.getUint8(y+_);if(w===0)break;b+=String.fromCharCode(w)}Vc(s,o,Math.abs(d(1))),s.fillStyle=o.textColor,s.fillText(b,l(f),h(g))}}return!0;default:return!1}}function ik(i,t,e,n){return{mx:r=>(r-i.x)/(t.cx||1)*e,my:r=>(r-i.y)/(t.cy||1)*n,mw:r=>r/(t.cx||1)*e,mh:r=>r/(t.cy||1)*n}}function rk(i,t,e,n,r,s={}){const a=e.boundsRight-e.boundsLeft||1,o=e.boundsBottom-e.boundsTop||1,c={x:e.boundsLeft,y:e.boundsTop},l={cx:a,cy:o},h=ik(c,l,n,r),u=new Map,d=()=>{let w=0;for(;u.has(w);)w++;return w},g={...z0(),fontFamilyMap:s.fontFamilyMap},f=[],p={view:i,ctx:t,state:g,coord:h};let m=e.headerSize;const y=i.byteLength,b=s.maxRecords??S0;let _=0;for(;m+6<=y&&_<b;){const w=i.getUint32(m,!0),P=i.getUint16(m+4,!0),S=w*2;if(S<6||m+S>y||P===dS)break;_++;const v=m+6;if(nk(p,P,m,v,S)){m+=S;continue}switch(P){case _S:S>=10&&(c.y=i.getInt16(v,!0),c.x=i.getInt16(v+2,!0));break;case xS:S>=10&&(l.cy=i.getInt16(v,!0),l.cx=i.getInt16(v+2,!0));break;case RS:f.push(Y0(g));break;case BS:{const k=f.pop();k&&Object.assign(g,k);break}case yS:S>=10&&(g.textColor=Be(i,v));break;case gS:S>=10&&(g.bkColor=Be(i,v));break;case fS:S>=8&&(g.bkMode=i.getUint16(v,!0));break;case pS:S>=8&&(g.rop2=i.getUint16(v,!0));break;case mS:S>=8&&(g.polyFillMode=i.getUint16(v,!0));break;case bS:S>=8&&(g.textAlign=i.getUint16(v,!0));break;case MS:if(S>=16){const k=d();u.set(k,{kind:"pen",style:i.getUint16(v,!0)&255,widthX:i.getInt16(v+2,!0),color:Be(i,v+6)})}break;case CS:if(S>=14){const k=d();u.set(k,{kind:"brush",style:i.getUint16(v,!0),color:Be(i,v+2)})}break;case OS:if(S>=24){let k="";for(let C=0;C<32&&v+14+C<m+S;C++){const N=i.getUint8(v+14+C);if(N===0)break;k+=String.fromCharCode(N)}const L=d();u.set(L,{kind:"font",height:Math.abs(i.getInt16(v,!0)),weight:i.getInt16(v+8,!0),italic:i.getUint8(v+10)!==0,underline:i.getUint8(v+11)!==0,strikeOut:i.getUint8(v+12)!==0,family:k||"sans-serif"})}break;case TS:if(S>=8){const k=u.get(i.getUint16(v,!0));if(k)switch(k.kind){case"pen":g.penStyle=k.style,g.penWidth=k.widthX,g.penColor=k.color;break;case"brush":g.brushStyle=k.style,g.brushColor=k.color;break;case"font":g.fontHeight=k.height,g.fontWeight=k.weight,g.fontItalic=k.italic,g.fontUnderline=k.underline,g.fontStrikeOut=k.strikeOut,g.fontFamily=k.family;break}}break;case LS:S>=8&&u.delete(i.getUint16(v,!0));break}m+=S}_>=b}var Ia=3;async function yd(i){const t=globalThis.createImageBitmap;if(typeof t!="function")throw new Error("createImageBitmap is not available in this runtime");return t(i)}async function sk(i,t,e=0){j(`processDeferredImages: processing ${t.length} deferred images (recursionDepth=${e})...`);for(let n=0;n<t.length;n++){const r=t[n];j(` Deferred image [${n}]: isMetafile=${r.isMetafile}, dataLen=${r.imageData.byteLength}, dest=(${r.dx.toFixed(1)},${r.dy.toFixed(1)},${r.dw.toFixed(1)},${r.dh.toFixed(1)}), transform=[${r.transform.map(s=>s.toFixed(3)).join(",")}]`);try{const s=new ArrayBuffer(r.imageData.byteLength);if(new Uint8Array(s).set(new Uint8Array(r.imageData)),i.setTransform(r.transform[0],r.transform[1],r.transform[2],r.transform[3],r.transform[4],r.transform[5]),r.isMetafile){if(e>=Ia){Xe(` Deferred image [${n}]: skipping embedded metafile — recursion depth ${e} >= ${Ia}`);continue}j(` Deferred image [${n}]: recursively converting embedded metafile...`);const o=await $c(s,void 0,e+1)??await qc(s,void 0,e+1);if(o){j(` Deferred image [${n}]: metafile converted, dataUrl length=${o.length}`);const c=atob(o.split(",")[1]),l=o.match(/data:([^;]+)/),h=l?l[1]:"image/png",u=new ArrayBuffer(c.length),d=new Uint8Array(u);for(let p=0;p<c.length;p++)d[p]=c.charCodeAt(p);const g=new Blob([u],{type:h});j(` Deferred image [${n}]: creating ImageBitmap from ${g.size} byte blob (${h})...`);const f=await yd(g);j(` Deferred image [${n}]: ImageBitmap created ${f.width}×${f.height}`),i.drawImage(f,r.dx,r.dy,r.dw,r.dh),f.close()}else Xe(` Deferred image [${n}]: metafile conversion returned null`)}else{j(` Deferred image [${n}]: creating ImageBitmap from ${s.byteLength} byte blob...`);const o=new Blob([s]),c=await yd(o);j(` Deferred image [${n}]: ImageBitmap created ${c.width}×${c.height}`),i.drawImage(c,r.dx,r.dy,r.dw,r.dh),c.close()}}catch(s){s instanceof Error?s.message:String(s)}}i.setTransform(1,0,0,1,0,0)}async function $c(i,t,e=0){if(e>Ia)return null;const n=t??{},r=n.dpiScale??Kl,s=n.maxWidth,a=n.maxHeight,o={maxRecords:n.maxRecords,maxRecordsEmfPlus:n.maxRecords,fontFamilyMap:n.fontFamilyMap};try{if(j("=== convertEmfToDataUrl START ==="),j(`Input buffer: ${i.byteLength} bytes, maxWidth=${s}, maxHeight=${a}, dpiScale=${r}`),i.byteLength>=16){const b=new Uint8Array(i,0,16);j(`First 16 bytes: [${Array.from(b).map(_=>_.toString(16).padStart(2,"0")).join(" ")}]`)}const c=new DataView(i),l=VS(c);if(!l)return j("convertEmfToDataUrl: parseEmfHeader returned null — returning null"),null;const h=US(l);if(!h)return j("convertEmfToDataUrl: getRenderableEmfBounds returned null — returning null"),null;const u=h.right-h.left,d=h.bottom-h.top;j(`convertEmfToDataUrl: logicalSize=${u}×${d}`);const g=L0(u,d,s,a,r,n.maxCanvasDimension);if(!g)return j("convertEmfToDataUrl: createCanvas returned null — returning null"),null;const{canvas:f,ctx:p}=g;j(`convertEmfToDataUrl: canvas created ${f.width}×${f.height} (dpiScale=${r})`),p.save(),j("convertEmfToDataUrl: starting replayEmfRecords...");const m=ek(c,p,h,f.width,f.height,r,o);j(`convertEmfToDataUrl: replayEmfRecords returned ${m.length} deferred images`),p.restore(),await sk(p,m),j("convertEmfToDataUrl: exporting canvas to PNG data URL...");const y=await N0(f);return y?j(`convertEmfToDataUrl: SUCCESS — data URL length=${y.length}`):Xe("convertEmfToDataUrl: exportCanvasToPngDataUrl returned null"),j("=== convertEmfToDataUrl END ==="),y}catch(c){return Xe("convertEmfToDataUrl: EXCEPTION:",c instanceof Error?c.message:c),null}}async function qc(i,t,e=0){if(e>Ia)return null;const n=t??{},r=n.dpiScale??Kl,s=n.maxWidth,a=n.maxHeight,o={maxRecords:n.maxRecords,fontFamilyMap:n.fontFamilyMap};try{j("=== convertWmfToDataUrl START ===",`buffer=${i.byteLength} bytes, dpiScale=${r}`);const c=new DataView(i),l=HS(c);if(!l)return j("convertWmfToDataUrl: parseWmfHeader returned null"),null;const h=l.boundsRight-l.boundsLeft,u=l.boundsBottom-l.boundsTop;if(j(`convertWmfToDataUrl: logicalSize=${h}×${u}`),h<=0||u<=0)return j("convertWmfToDataUrl: invalid dimensions — returning null"),null;const d=L0(h,u,s,a,r,n.maxCanvasDimension);if(!d)return null;const{canvas:g,ctx:f}=d;f.save(),rk(c,f,l,g.width,g.height,o),f.restore();const p=await N0(g);return j(`convertWmfToDataUrl: result=${p?`dataUrl len=${p.length}`:"null"}`),j("=== convertWmfToDataUrl END ==="),p}catch(c){return Xe("convertWmfToDataUrl: EXCEPTION:",c instanceof Error?c.message:c),null}}const ak={宋体:'"SimSun", "NSimSun", "Microsoft YaHei", "Noto Sans SC", "Source Han Sans SC", sans-serif',simsun:'"SimSun", "NSimSun", "Microsoft YaHei", "Noto Sans SC", sans-serif',nsimsun:'"NSimSun", "SimSun", "Microsoft YaHei", sans-serif',黑体:'"SimHei", "Microsoft YaHei", "Noto Sans SC", sans-serif',simhei:'"SimHei", "Microsoft YaHei", sans-serif',微软雅黑:'"Microsoft YaHei", "Noto Sans SC", sans-serif',"microsoft yahei":'"Microsoft YaHei", "Noto Sans SC", sans-serif'};async function ok(i,t={}){const e=i instanceof Uint8Array?i:new Uint8Array(await i.arrayBuffer());if(!e.length)return;const n=i instanceof Blob&&Wl(i.type)?i.type:void 0,r={maxWidth:t.maxWidth,maxHeight:t.maxHeight,dpiScale:t.dpiScale??1,maxCanvasDimension:t.maxCanvasDimension,fontFamilyMap:{...ak,...t.fontFamilyMap}},s=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),a=n===_i||n==null&&ca(e)&&!Fe(e);let o=null;if(a?(o=await $c(s,r),!o&&Fe(e)&&(o=await qc(s,r))):((n===Dr||Fe(e))&&(o=await qc(s,r)),!o&&ca(e)&&(o=await $c(s,r))),!!o)return lk(o)}function ck(i){return Wl(i.type)}function As(i){const t=i.indexOf(",");if(!i.startsWith("data:")||t<0)return;const e=i.slice(5,t),n=i.slice(t+1),r=e.split(";"),s=r[0]||"image/png";if(r.includes("base64")){const c=atob(n),l=new Uint8Array(c.length);for(let h=0;h<c.length;h++)l[h]=c.charCodeAt(h);return new Blob([l],{type:s})}const o=decodeURIComponent(n);return new Blob([o],{type:s})}async function lk(i){const t=hk();if(!t)return As(i);try{const e=await t.decodeImage(i),n=Math.max(1,e.width),r=Math.max(1,e.height),s=t.createCanvas(n,r),a=s.getContext("2d");if(!a)return As(i);a.fillStyle="#ffffff",a.fillRect(0,0,n,r),a.drawImage(e,0,0);const o=globalThis.OffscreenCanvas;if(typeof o=="function"&&s instanceof o)return await s.convertToBlob({type:"image/png"});const c=s;if(typeof c.toBlob=="function")return await new Promise(l=>{c.toBlob(h=>l(h||void 0),"image/png")});if(typeof c.toDataURL=="function")return As(c.toDataURL("image/png"))}catch{}return As(i)}function hk(){if(typeof OffscreenCanvas<"u")return{createCanvas:(i,t)=>new OffscreenCanvas(i,t),decodeImage:async i=>{const e=await(await fetch(i)).blob(),n=globalThis.createImageBitmap;if(typeof n!="function")throw new Error("createImageBitmap is not available in this runtime");return n(e)}};if(typeof document<"u"&&document.createElement)return{createCanvas:(i,t)=>{const e=document.createElement("canvas");return e.width=i,e.height=t,e},decodeImage:i=>new Promise((t,e)=>{const n=globalThis.Image;if(typeof n!="function"){e(new Error("Image is not available in this runtime"));return}const r=new n;r.onload=()=>t(r),r.onerror=()=>e(new Error("Failed to decode PNG")),r.src=i})}}class th{parse(t){const n=this.normalizeLineEndings(t).split(`