@malloydata/render 0.0.197-dev241009193540 → 0.0.197-dev241009205116
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.
|
@@ -1318,7 +1318,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
|
|
|
1318
1318
|
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof hu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return new Error(`INTERNAL ERROR IN TRANSLATION: ${e}`)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.logError("experiment-not-enabled",{experimentId:e}),!1)}}We.MalloyElement=hu;class kge extends hu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}We.Unimplemented=kge;class FO extends hu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}We.ModelEntryReference=FO;class Mge extends hu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}We.ExperimentalExperiment=Mge;function Fq(t){return t.execute!==void 0}We.isDocStatement=Fq;function Pge(t){return t instanceof j1||Fq(t)}We.isDocStatementOrDocStatementList=Pge;class Lq extends hu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}We.ListOf=Lq;class j1 extends Lq{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=wq.extendNoteMethod,this.noteCursor=0}executeList(e){for(;this.execCursor<this.elements.length;){const n=this.elements[this.execCursor];if(this.noteCursor===this.execCursor&&(this.note&&(0,wq.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof j1){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}We.DocStatementList=j1;const jge="5a79a191-06bc-43cf-9b12-58741cd82970";function Iq(t){const e=t.inherits?Iq(t.inherits):[];return t.blockNotes&&e.push(...t.blockNotes.map(n=>n.text)),t.notes&&e.push(...t.notes.map(n=>n.text)),e}function Uge(t){const e=Iq(t).join("");return(0,Bge.v5)(e,jge)}class LO extends hu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new $ge.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new wge.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new j1(e),this.has({statements:e})}initModelDef(e){if(!this.didInitModel){if(this.documentModel={},this.queryList=[],this.sqlBlocks=[],e){e.annotation&&(this.annotation.inherits=e.annotation);for(const[n,r]of Object.entries(e.contents)){const i=structuredClone(r);if((0,hv.modelObjIsSource)(i)||i.type==="query"||i.type==="function"){const s=e.exports.includes(n);this.setEntry(n,{entry:i,exported:s})}}}this.didInitModel=!0}}compile(){const e=this.statements.executeList(this),n=this.modelDef();if(e===void 0){for(const i of this.queryList)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation);for(const i of this.sqlBlocks)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation)}if(n.annotation)for(const i of this.modelAnnotationTodoList)i.modelAnnotation||(i.modelAnnotation=n.annotation);return{modelDef:n,queryList:this.queryList,sqlBlocks:this.sqlBlocks,needs:e}}rememberToAddModelAnnotations(e){this.modelAnnotationTodoList.push(e)}hasAnnotation(){return this.annotation.notes&&this.annotation.notes.length>0||this.annotation.inherits!==void 0}currentModelAnnotation(){if(this.hasAnnotation()){const e={...this.annotation,id:""};return e.id=Uge(e),e}}modelDef(){const e={name:"",exports:[],contents:{}};this.hasAnnotation()&&(e.annotation=this.currentModelAnnotation());for(const n in this.documentModel){const r=this.documentModel[n].entry;if((0,hv.modelObjIsSource)(r)||r.type==="query"){this.documentModel[n].exported&&e.exports.push(n);const i=structuredClone(r);i.modelAnnotation===void 0&&e.annotation&&(i.modelAnnotation=e.annotation),e.contents[n]=i}}return e}defineSQL(e,n){const r={...e,as:`$${this.sqlBlocks.length}`};if(n){if(this.getEntry(n))return!1;r.as=n,this.setEntry(n,{entry:r})}return this.sqlBlocks.push(r),!0}getEntry(e){var n;return(n=this.globalNameSpace.getEntry(e))!==null&&n!==void 0?n:this.documentModel[e]}setEntry(e,n){this.globalNameSpace.getEntry(e)!==void 0&&this.logError("name-conflict-with-global",`Cannot redefine '${e}', which is in global namespace`),(0,hv.modelObjIsSource)(n.entry)&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,Nq.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.logError("experimental-dialect-not-enabled",{dialect:n})}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,Nq.getDialect)(e),r=new Ige.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}We.Document=LO;var pv={},Sd={},kr={},Ql={};Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.canMakeEntry=Ql.SpaceEntry=void 0;class qge{}Ql.SpaceEntry=qge;function zge(t){return"makeEntry"in t}Ql.canMakeEntry=zge,Object.defineProperty(kr,"__esModule",{value:!0}),kr.SpaceField=void 0;const Hge=Ql;class Qge extends Hge.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}constructorFieldDef(){}}kr.SpaceField=Qge,Object.defineProperty(Sd,"__esModule",{value:!0}),Sd.ViewField=void 0;const Gge=kr;class Wge extends Gge.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Sd.ViewField=Wge,Object.defineProperty(pv,"__esModule",{value:!0}),pv.ASTViewField=void 0;const Vge=Sd;class Yge extends Vge.ViewField{constructor(e,n,r){super(e),this.view=n,this.name=r}getQueryFieldDef(e){return this.view.getFieldDef(e)}fieldDef(){return this.view.getFieldDef(this.inSpace)}}pv.ASTViewField=Yge,Object.defineProperty(P1,"__esModule",{value:!0}),P1.ViewFieldDeclaration=void 0;const Xge=We,Jge=Br,Kge=Ad,Zge=pv;class eme extends Xge.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=Jge.extendNoteMethod}makeEntry(e){const n=new Zge.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,Kge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}P1.ViewFieldDeclaration=eme;var En={};Object.defineProperty(En,"__esModule",{value:!0}),En.LegalRefinementStage=En.QueryClass=void 0;var $q;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})($q||(En.QueryClass=$q={}));var Bq;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(Bq||(En.LegalRefinementStage=Bq={})),Object.defineProperty(M1,"__esModule",{value:!0}),M1.NestFieldDeclaration=void 0;const tme=Ad,nme=P1,kq=En;class rme extends nme.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=kq.LegalRefinementStage.Single,this.forceQueryClass=kq.QueryClass.Grouping}queryExecute(e){e.resultFS.pushFields(this)}getFieldDef(e){if(e.isQueryFieldSpace()){const{pipeline:n,annotation:r}=this.view.pipelineComp(e,e.outputSpace()),i=(0,tme.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}throw this.internalError("Unexpected namespace for nest")}}M1.NestFieldDeclaration=rme;var _d={},Mr={};Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.ErrorFactory=void 0;const Mq="~malformed~";class IO{static get structDef(){return{type:"table",name:Mq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:Mq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],join:"one",matrixOperation:"left",errorFactory:!0}}static didCreate(e){return e.type==="table"&&"errorFactory"in e}static get query(){return{structRef:IO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Mr.ErrorFactory=IO,Object.defineProperty(_d,"__esModule",{value:!0}),_d.DefineSourceList=_d.DefineSource=void 0;const ime=Mr,Pq=We,sme=Br;class ome extends Pq.MalloyElement{constructor(e,n,r,i){super(),this.name=e,this.sourceExpr=n,this.exported=r,this.parameters=i,this.elementType="defineSource",this.isNoteableObj=!0,this.extendNote=sme.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.logError("source-definition-name-conflict",`Cannot redefine '${this.name}'`);else{const r=(n=this.sourceExpr)===null||n===void 0?void 0:n.getSource();if(r===void 0)return;const i=this.deduplicatedParameters(),s=r.withParameters(void 0,this.parameters);if(this.validateParameterShadowing(i,s),ime.ErrorFactory.didCreate(s))return;const o={...s,as:this.name,location:this.location};this.note&&(o.annotation=s.annotation?{...this.note,inherits:s.annotation}:this.note),e.setEntry(this.name,{entry:o,exported:this.exported})}}deduplicatedParameters(){if(this.parameters===void 0)return[];const e={},n=[];for(const r of this.parameters)r.name in e&&r.logError("parameter-name-conflict",`Cannot redefine parameter \`${r.name}\``),e[r.name]=!0,n.push(r);return n}validateParameterShadowing(e,n){for(const r of e)n.fields.find(i=>{var s;return((s=i.as)!==null&&s!==void 0?s:i.name)===r.name})&&r.logError("parameter-shadowing-field",`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}_d.DefineSource=ome;class ume extends Pq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}_d.DefineSourceList=ume;var Cd={};Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.DefineQueryList=Cd.DefineQuery=void 0;const jq=We,ame=Br;class lme extends jq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=ame.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.logError("query-definition-name-conflict",`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("query-definition-from-non-query","Cannot define a query from this expression");return}const i={...r.query(),type:"query",name:this.name,location:this.location};this.note&&(i.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:i,exported:!0})}}Cd.DefineQuery=lme;class cme extends jq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Cd.DefineQueryList=cme;var xo={};Object.defineProperty(xo,"__esModule",{value:!0}),xo.Source=void 0;const fme=We;class xme extends fme.MalloyElement{structRef(e){return{structRef:this.getSourceDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.getSourceDef(e),parameters:this.packParameters(n)}}}xo.Source=xme;var U1={},bd={},gv={},Gl={};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.mergeFields=Gl.nameFromDef=void 0;function $O(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Gl.nameFromDef=$O;function dme(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>$O(i))),r=t.filter(i=>!n.has($O(i)));return r.push(...e),r}Gl.mergeFields=dme;var q1={},yr={},pu={};Object.defineProperty(pu,"__esModule",{value:!0}),pu.DefinedParameter=pu.AbstractParameter=pu.SpaceParam=void 0;const hme=Ql;class BO extends hme.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}pu.SpaceParam=BO;class pme extends BO{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}pu.AbstractParameter=pme;class gme extends BO{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}pu.DefinedParameter=gme;var Td={};Object.defineProperty(Td,"__esModule",{value:!0}),Td.StructSpaceFieldBase=void 0;const mme=kr;class yme extends mme.SpaceField{constructor(e){super(),this.sourceDef=e}fieldDef(){return this.sourceDef}get joinPathElement(){return{name:this.sourceDef.as||this.sourceDef.name,joinType:this.sourceDef.join,joinElementType:this.sourceDef.type}}typeDesc(){return{dataType:this.sourceDef.type,expressionType:"scalar",evalSpace:"input"}}}Td.StructSpaceFieldBase=yme;var z1={};Object.defineProperty(z1,"__esModule",{value:!0}),z1.ColumnSpaceField=void 0;const Eme=kr;class Ame extends Eme.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}z1.ColumnSpaceField=Ame;var mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.IRViewField=void 0;const vme=Sd;class Sme extends vme.ViewField{constructor(e,n){super(e),this.turtleDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}constructorFieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}mv.IRViewField=Sme,Object.defineProperty(yr,"__esModule",{value:!0}),yr.StaticSourceSpace=yr.StructSpaceField=yr.StaticSpace=void 0;const _me=Wo,yv=ce,Cme=pu,bme=kr,Ev=Td,Tme=z1,Rme=mv;class kO{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,_me.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,yv.isJoined)(e)?new Uq(e,this.fromStruct.dialect):(0,yv.isTurtleDef)(e)?new Rme.IRViewField(this,e):new Tme.ColumnSpaceField(e)}get map(){if(this.memoMap===void 0){this.memoMap={};for(const e of this.fromStruct.fields){const n=e.as||e.name;this.memoMap[n]=this.defToSpaceField(e)}if((0,yv.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new Cme.DefinedParameter(n))}return this.memoMap}dropEntries(){this.memoMap={}}dropEntry(e){delete this.map[e]}entry(e){return this.map[e]}setEntry(e,n){this.map[e]=n}entries(){return Object.entries(this.map)}structDef(){return this.fromStruct}emptyStructDef(){const e={...this.fromStruct};return(0,yv.isSourceDef)(e)&&(e.parameters={}),e.fields=[],e}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:{message:`'${n}' is not defined`,code:"field-not-found"},found:i};if(i instanceof bme.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof Ev.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof Ev.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof Ev.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,joinPath:[...s,...o.joinPath]}:o}return{error:{message:`'${n}' cannot contain a '${r[0]}'`,code:"invalid-property-access-in-field-reference"},found:void 0}}return{found:i,error:void 0,joinPath:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}yr.StaticSpace=kO;class Uq extends Ev.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new kO(this.sourceDef)}}yr.StructSpaceField=Uq;class Ome extends kO{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}yr.StaticSourceSpace=Ome,Object.defineProperty(q1,"__esModule",{value:!0}),q1.JoinSpaceField=void 0;const Dme=yr;class Nme extends Dme.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}q1.JoinSpaceField=Nme;var Rd={};Object.defineProperty(Rd,"__esModule",{value:!0}),Rd.ParameterSpace=void 0;const wme=pu;class Fme{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new wme.AbstractParameter(n)}structDef(){throw new Error("Parameter space does not have a structDef")}emptyStructDef(){throw new Error("Parameter space does not have an emptyStructDef")}entry(e){return this._map[e]}lookup(e){const n=e[0];if(n===void 0)return{error:{message:"Invalid reference",code:"invalid-parameter-reference"},found:void 0};const r=this.entry(n.refString);return r===void 0?{error:{message:`\`${n}\` is not defined`,code:"parameter-not-found"},found:void 0}:e.length>1?{error:{message:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,code:"invalid-parameter-reference"},found:void 0}:{found:r,error:void 0,joinPath:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectName(){return"~parameter-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Rd.ParameterSpace=Fme;var Lme=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Ime=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),$me=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Lme(e,t,n);return Ime(e,t),e};Object.defineProperty(gv,"__esModule",{value:!0}),gv.DynamicSpace=void 0;const Bme=$me(ce),kme=Gl,Mme=Mr,Pme=kr,jme=q1,Ume=Sd,qq=pu,qme=yr,zme=Td,Hme=Rd;class Qme extends qme.StaticSpace{constructor(e){super(structuredClone(e)),this.completions=[],this.complete=!1,this.parameters=[],this.fromSource=e,this.final=void 0}isComplete(){this.complete=!0}setEntry(e,n){if(this.final)throw new Error("Space already final");super.setEntry(e,n)}addParameters(e){for(const n of e)this.entry(n.name)===void 0&&(this.parameters.push(n),this.setEntry(n.name,new qq.AbstractParameter(n)));return this}parameterSpace(){return new Hme.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.logError("definition-name-conflict",`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,kme.nameFromDef)(e),this.defToSpaceField(e))}setTimezone(e){this.newTimezone=e}structDef(){if(this.final===void 0){const e={};for(const[a,l]of this.entries())l instanceof qq.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromSource,fields:[]},this.final.parameters=e;const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof zme.StructSpaceFieldBase?r.push([a,l]):l instanceof Ume.ViewField?i.push([a,l]):l instanceof Pme.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof jme.JoinSpaceField){const l=a.join.structDef(u);Mme.ErrorFactory.didCreate(l)||(this.final.fields.push(l),s.push([a.join,l]))}else{const l=a.fieldDef();l&&this.final.fields.push(l)}for(const[a,l]of s)a.fixupJoinOn(this,l)}return this.newTimezone&&Bme.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}gv.DynamicSpace=Qme,Object.defineProperty(bd,"__esModule",{value:!0}),bd.RefinedSpace=void 0;const Gme=gv,Wme=Ql;class MO extends Gme.DynamicSpace{static filteredFrom(e,n,r){const i=new MO(e);if(n){const s=n.refs.list,o=i.entries();for(const u of s)o.find(([l])=>l===u.refString)===void 0&&(r!=null&&r.entry(u.refString)?u.logError(`${n.edit}-parameter`,`Illegal \`${n.edit}:\` of parameter`):u.logError("field-list-edit-not-found",`\`${u.refString}\` is not defined`));i.dropEntries();for(const[u,a]of o){const l=!!s.find(f=>f.refString===u),c=n.edit==="accept";l===c&&i.setEntry(u,a)}}return i}pushFields(...e){for(const n of e)(0,Wme.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}bd.RefinedSpace=MO;var Wl={},ns={};Object.defineProperty(ns,"__esModule",{value:!0}),ns.DefinitionList=void 0;const Vme=We,zq=Br;class Yme extends Vme.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,zq.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,zq.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}ns.DefinitionList=Yme,Object.defineProperty(Wl,"__esModule",{value:!0}),Wl.DeclareFields=void 0;const Xme=ns,Jme=En;class Kme extends Xme.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=Jme.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Wl.DeclareFields=Kme;var ho={};Object.defineProperty(ho,"__esModule",{value:!0}),ho.Filter=ho.FilterElement=void 0;const Hq=ce,Qq=We,PO=En;class Zme extends Qq.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.logError("non-boolean-filter","Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}ho.FilterElement=Zme;let e3e=class extends Qq.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=PO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?PO.LegalRefinementStage.Tail:PO.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,Hq.expressionIsAggregate)(i.expressionType),o=(0,Hq.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.logError("analytic-in-having","Analytic expressions are not allowed in `having:`");continue}}else if(o){r.logError("analytic-in-where","Analytic expressions are not allowed in `where:`");continue}else s&&r.logError("aggregate-in-where","Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};ho.Filter=e3e;var Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.FieldListEdit=void 0;const t3e=We;class n3e extends t3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Od.FieldListEdit=n3e;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.PrimaryKey=void 0;const r3e=We;class i3e extends r3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}Dd.PrimaryKey=i3e;var Nd={};Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.Views=void 0;const s3e=ns;class o3e extends s3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Nd.Views=o3e;var wd={};Object.defineProperty(wd,"__esModule",{value:!0}),wd.TimezoneStatement=void 0;const u3e=We;class a3e extends u3e.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}wd.TimezoneStatement=a3e;var Vl={};Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.ModelAnnotation=Vl.ObjectAnnotation=void 0;const l3e=Vo,c3e=We;class Gq extends c3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}Vl.ObjectAnnotation=Gq;class f3e extends Gq{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=l3e.Tag.annotationToTag({notes:this.notes},{prefix:/^##! /,extending:e});return r.log.forEach(i=>n.log(i)),r.tag}execute(e){e.annotation.notes===void 0&&(e.annotation.notes=[]),e.annotation.notes.push(...this.notes)}}Vl.ModelAnnotation=f3e;var Yl={},Av={};Object.defineProperty(Av,"__esModule",{value:!0}),Av.RenameSpaceField=void 0;const x3e=kr;class d3e extends x3e.SpaceField{constructor(e,n,r){super(),this.otherField=e,this.newName=n,this.location=r}fieldDef(){const e=this.otherField.fieldDef();if(e!==void 0)return{...e,as:this.newName,location:this.location}}typeDesc(){return this.otherField.typeDesc()}}Av.RenameSpaceField=d3e,Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.Renames=Yl.RenameField=void 0;const h3e=Av,Wq=We,p3e=kr;class g3e extends Wq.MalloyElement{constructor(e,n){super(),this.newName=e,this.oldName=n,this.elementType="renameField",this.has({oldName:n})}makeEntry(e){if(this.oldName.refString===this.newName){this.logError("invalid-rename-with-same-name","Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof p3e.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new h3e.RenameSpaceField(n.found,this.newName,this.location)):this.logError("failed-rename",`'${this.oldName}' cannot be renamed`):this.logError("rename-field-not-found",`Can't rename '${this.oldName}', no such field`)}}Yl.RenameField=g3e;class m3e extends Wq.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Yl.Renames=m3e;var Di={};Object.defineProperty(Di,"__esModule",{value:!0}),Di.JoinStatement=Di.ExpressionJoin=Di.KeyJoin=Di.Join=void 0;const jO=ce,y3e=q1,E3e=ns,A3e=We,v3e=Br,Vq=Mr,S3e=En;class UO extends A3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=v3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new y3e.JoinSpaceField(e.parameterSpace(),this,e.dialect))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.getSourceDef(e):(this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),Vq.ErrorFactory.structDef)}}Di.Join=UO;class _3e extends UO{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e);if(!(0,jO.isJoinable)(r))throw this.internalError(`Cannot join struct type '${r.type}'`);const i={...r,name:this.name.refString,join:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"},location:this.location};return delete i.as,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if((0,jO.isSourceDef)(n)&&n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.join="one",n.onExpression={node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}};return}else this.logError("join-on-primary-key-type-mismatch",`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.logError("join-primary-key-not-found",`join_one: Primary key '${i}' not found in source`)}else this.logError("join-with-without-primary-key","join_one: Cannot use with unless source has a primary key")}}Di.KeyJoin=_3e;class C3e extends UO{constructor(e,n){super({name:e,sourceExpr:n}),this.name=e,this.sourceExpr=n,this.elementType="joinOnExpr",this.joinType="one",this.matrixOperation="left"}set joinOn(e){this.expr=e,this.has({on:e})}get joinOn(){return this.expr}fixupJoinOn(e,n){if(this.expr===void 0)return;const r=this.expr.getExpression(e);if(r.dataType!=="boolean"){this.logError("non-boolean-join-on","join conditions must be boolean expressions");return}n.onExpression=r.value}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),Vq.ErrorFactory.joinDef;const i=r.getSourceDef(e);let s="left";if(this.inExperiment("join_types",!0)&&(s=this.matrixOperation),!(0,jO.isJoinable)(i))throw this.internalError(`Can't join struct type ${i.type}`);const o={...i,name:this.name.refString,join:this.joinType,matrixOperation:s,location:this.location};return delete o.as,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}Di.ExpressionJoin=C3e;class b3e extends E3e.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=S3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Di.JoinStatement=b3e,Object.defineProperty(U1,"__esModule",{value:!0}),U1.RefinedSource=void 0;const T3e=ce,R3e=bd,O3e=Wl,D3e=ho,N3e=Od,w3e=Dd,F3e=Nd,L3e=xo,I3e=wd,$3e=Vl,B3e=Yl,k3e=Rd,M3e=Di;class P3e extends L3e.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;let i,s;const o=[],u=[];let a;for(const m of this.refinement.list){if(m instanceof $3e.ObjectAnnotation)continue;const g=m;if(m instanceof w3e.PrimaryKey){if(i){const y="multiple-primary-keys";i.logError(y,"Primary key already defined"),m.logError(y,"Primary key redefined")}i=m}else if(m instanceof N3e.FieldListEdit){if(s){const y="multiple-field-list-edits";s.logError(y,"Too many accept/except statements"),m.logError(y,"Too many accept/except statements")}s=m}else m instanceof O3e.DeclareFields||m instanceof M3e.JoinStatement||m instanceof F3e.Views||m instanceof B3e.Renames?o.push(...m.list):m instanceof D3e.Filter?u.push(m):m instanceof I3e.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new k3e.ParameterSpace(n):void 0,c=structuredClone(this.source.getSourceDef(l));i&&(c.primaryKey=i.field.name);const f=R3e.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.logError(m.error.code,m.error.message)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterCondition(f);(0,T3e.expressionIsCalculation)(y.expressionType)?g.logError("aggregate-in-source-filter","Can't use aggregate computations in top level filters"):(h.push(y),p=!0)}return p?{...x,filterList:h}:((r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(x),x)}}U1.RefinedSource=P3e;var gu={};Object.defineProperty(gu,"__esModule",{value:!0}),gu.SourceQueryElement=void 0;const j3e=We;class qO extends j3e.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e,n,r){return this.isErrorFree()&&this.logError(e,n,r),this.errored=!0,e}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof qO&&n.errored){e=!1;break}return e}}gu.SourceQueryElement=qO;var vv={},Yc={};Object.defineProperty(Yc,"__esModule",{value:!0}),Yc.QuerySource=void 0;const U3e=xo,q3e=Fy;class z3e extends U3e.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}getSourceDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,name:`QuerySource-${(0,q3e.v4)()}`,type:"query_source",query:i.query};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Yc.QuerySource=z3e;var Fd={},H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.QueryBase=void 0;const H3e=Ad,Q3e=We;class G3e extends Q3e.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,H3e.detectAndRemovePartialStages)(e.pipeline,this)}}}H1.QueryBase=G3e,Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.QueryArrow=void 0;const W3e=ce,V3e=xo,Yq=yr,Y3e=H1;class X3e extends Y3e.QueryBase{constructor(e,n){super({source:e,view:n}),this.source=e,this.view=n,this.elementType="arrow"}queryComp(e){let n,r,i;if(this.source instanceof V3e.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,W3e.refIsStructDef)(l.structRef)?l.structRef:this.source.getSourceDef(void 0),i=new Yq.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Yq.StaticSpace(l.outputStruct)}const{pipeline:s,annotation:o,outputStruct:u,name:a}=this.view.pipelineComp(i);return{query:{...r,name:a,annotation:o,pipeline:[...r.pipeline,...s]},outputStruct:u,inputStruct:n}}}Fd.QueryArrow=X3e,Object.defineProperty(vv,"__esModule",{value:!0}),vv.SQArrow=void 0;const J3e=gu,K3e=Yc,Z3e=Fd;class eye extends J3e.SourceQueryElement{constructor(e,n){super({applyTo:e,operation:n}),this.applyTo=e,this.operation=n,this.elementType="sq-arrow"}getQuery(){const e=this.applyTo.isSource()?this.applyTo.getSource():this.applyTo.getQuery();if(e===void 0){this.sqLog("failed-to-compute-arrow-source","Could not get LHS of arrow operation");return}const n=new Z3e.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("failed-to-compute-source-from-query","Couldn't comprehend query well enough to make a source");return}const n=new K3e.QuerySource(e);return this.has({asSource:n}),n}}vv.SQArrow=eye;var Sv={},Ld={},rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.getStructFieldDef=rs.getFinalStruct=rs.opOutputStruct=void 0;const Xq=wl,tye=xc,_v=ce,Jq=Mr;function Kq(t,e,n){const r=Jq.ErrorFactory.didCreate(e)||(0,_v.structHasErrors)(e);(0,_v.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,_v.segmentHasErrors)(n);if(!r&&!i)try{const s=tye.Segment.nextStructDef(e,n);if((0,_v.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
|
|
1319
1319
|
STRUCTDEF: ${(0,Xq.inspect)(s,{breakLength:72,depth:1/0})}`)}catch(s){t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1320
1320
|
QUERY: ${(0,Xq.inspect)(n,{breakLength:72,depth:1/0})}`)}return Jq.ErrorFactory.structDef}rs.opOutputStruct=Kq;function nye(t,e,n){for(const r of n)e=Kq(t,e,r);return e}rs.getFinalStruct=nye;function rye(t,e){return t.fields.find(n=>(n.as||n.name)===e)}rs.getStructFieldDef=rye,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.QueryRefine=void 0;const iye=yr,sye=rs,oye=H1;class uye extends oye.QueryBase{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="query-refine"}queryComp(e){const n=this.base.queryComp(e),r=new iye.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,sye.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Ld.QueryRefine=uye;var Q1={},Id={},er={};Object.defineProperty(er,"__esModule",{value:!0}),er.timeResult=er.resolution=er.castDateToTimestamp=er.castTimestampToDate=er.castTo=er.timeOffset=void 0;const aye=ce;function lye(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}er.timeOffset=lye;function cye(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,aye.isAtomicFieldType)(n)&&(i.srcType=n),i}er.castTo=cye;function fye(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}er.castTimestampToDate=fye;function xye(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}er.castDateToTimestamp=xye;function dye(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}er.resolution=dye;function hye(t,e){return e?{...t,timeframe:e}:t}er.timeResult=hye;var Xc={},dt={},un={};Object.defineProperty(un,"__esModule",{value:!0}),un.FT=void 0;const pye=Ts;function Jc(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class Er{static in(e,n){return e?n.find(i=>Er.eq(i,e))!==void 0:!1}static eq(e,n){return n!==void 0&&e.dataType===n.dataType&&e.expressionType===n.expressionType}static typeIn(e,n){return e?n.find(i=>Er.typeEq(i,e))!==void 0:!1}static typeEq(e,n,r=!1,i=!0){const s=e.dataType===n.dataType,o=r&&(e.dataType==="null"||n.dataType==="null"),u=i&&(e.dataType==="error"||n.dataType==="error");return s||o||u}static inspect(...e){return e.map(r=>{if(r){let i=r.dataType;return(0,pye.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}un.FT=Er,Er.nullT=Jc("null"),Er.numberT=Jc("number"),Er.stringT=Jc("string"),Er.dateT=Jc("date"),Er.timestampT=Jc("timestamp"),Er.boolT=Jc("boolean"),Er.anyAtomicT=[Er.numberT,Er.stringT,Er.dateT,Er.timestampT,Er.boolT],Er.aggregateBoolT=Jc("boolean","aggregate");var $d={};Object.defineProperty($d,"__esModule",{value:!0}),$d.isGranularResult=void 0;function gye(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}$d.isGranularResult=gye;var mu={};Object.defineProperty(mu,"__esModule",{value:!0}),mu.isComparison=mu.isEquality=mu.getExprNode=void 0;function mye(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}mu.getExprNode=mye;function Zq(t){return t==="="||t==="!="||t==="~"||t==="!~"}mu.isEquality=Zq;function yye(t){return Zq(t)||t===">="||t==="<="||t===">"||t==="<"}mu.isComparison=yye,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const An=ce,zO=Oi,Kc=un,Cv=er,ez=$d,Eye=We,G1=mu;class Aye extends Error{}class tz extends Eye.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=Kc.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!Kc.FT.in(n,this.legalChildTypes)?(n.dataType==="sql native"?e.logError("sql-native-not-allowed-in-expression",{rawType:n.rawType}):e.logError("expression-type-error",`'${this.elementType}' Can't use type ${Kc.FT.inspect(n)}`),!1):!0}apply(e,n,r){return sz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=tz;class HO extends tz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[Kc.FT.timestampT,Kc.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTemporalField)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!Kc.FT.typeEq(s,Kc.FT.numberT))return this.logError("invalid-duration-quantity",`Duration quantity needs number not '${s.dataType}`),(0,zO.errorFor)("illegal unit expression");let o;if((0,ez.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,Cv.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,Cv.timeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,Cv.timeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,Cv.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):this.loggedErrorExpr("invalid-timeframe-for-time-offset",`Cannot offset date by ${this.timeframe}`)}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}dt.ExprDuration=HO;function nz(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function vye(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=vye;function rz(t,e,n,r){const i=(0,An.isTemporalField)(e.dataType),s=(0,An.isTemporalField)(r.dataType),o=(0,G1.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=nz(e,"timestamp"),a=nz(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.logError("time-comparison-type-mismatch",`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function Sye(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function _ye(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function Cye(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,G1.getExprNode)(n),a=W1("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=V1(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=rz(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){let f=Sye(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new Aye("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=_ye(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function bye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=W1("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=V1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=rz(e,i,n,s)||{node:(0,G1.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function iz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=W1("number",i,s);if(o)return o;const u=V1(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,zO.errorFor)("numbers required")}function Tye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=V1(e,i,r,s);if(o)return o;const u=(0,An.isTemporalField)(i.dataType),a=W1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,ez.isGranularResult)(i))l=new HO(r,i.timeframe);else if(i.dataType==="date")l=new HO(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return iz(t,e,n,r)}function sz(t,e,n,r){if((0,G1.isEquality)(n))return Cye(t,e,n,r);if((0,G1.isComparison)(n))return bye(t,e,n,r);if(n==="+"||n==="-")return Tye(t,e,n,r);if(n==="*")return iz(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=V1(e,i,r,s);if(o)return o;const u=W1("number",i,s);if(u)return u;if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch","Numerator must be a number");else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch","Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,zO.errorFor)("divide type mismatch")}return e.loggedErrorExpr("unexpected-binary-operator",`Cannot use ${n} operator here`)}dt.applyBinary=sz;function W1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function V1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.logError("sql-native-not-allowed-in-expression",{rawType:e.rawType}),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.logError("sql-native-not-allowed-in-expression",{rawType:r.rawType}),i}Object.defineProperty(Xc,"__esModule",{value:!0}),Xc.ExprIdReference=void 0;const Rye=ce,Oye=dt;class Dye extends Oye.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,Rye.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}Xc.ExprIdReference=Dye,Object.defineProperty(Id,"__esModule",{value:!0}),Id.NamedSource=void 0;const QO=ce,Nye=xo,wye=Mr,Fye=er,oz=We,Lye=Xc,Iye=Rd;class $ye extends Nye.Source{constructor(e,n,r){super(),this.ref=e,this.sourceArguments=n,this.args=r,this.elementType="namedSource",r&&this.has({args:r}),e instanceof oz.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof oz.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.getSourceDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLogError(e,n,r){typeof this.ref=="string"?this.logError(e,n,r):this.ref.logError(e,n,r)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){this.refLogError("source-not-found",`Undefined source '${this.refName}'`);return}if(r.type==="query"){this.logError("invalid-source-from-query",`Cannot construct a source from query '${this.refName}'`);return}else if(r.type==="function"){this.logError("invalid-source-from-function",`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.logError("invalid-source-from-connection",`Cannot construct a source from a connection '${this.refName}'`);return}else if((e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect),(0,QO.isSourceDef)(r))return{...r};this.logError("invalid-source-source",`Cannot construct a source from a ${r.type}`)}evaluateArgumentsForRef(e){const n=this.modelStruct();return n===void 0?{}:this.evaluateArguments(e,n.parameters,[])}evaluateArguments(e,n,r){var i,s;const o={...this.sourceArguments},u=new Set;for(const a of(i=this.args)!==null&&i!==void 0?i:[]){const l=(s=a.id)!==null&&s!==void 0?s:a.value instanceof Lye.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.logError("unnamed-source-argument","Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.logError("duplicate-source-argument",`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.logError("source-parameter-not-found",`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new Iye.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,QO.isCastType)(f.type)&&(p=(0,Fye.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,QO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLogError("missing-source-argument",`Argument not provided for required parameter \`${a}\``));return o}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=wye.ErrorFactory.structDef,l=`${this.refName}-undefined`;return a.name=a.name+l,a.dialect=a.dialect+l,a}const s={};for(const a of n??[]){const l=a.parameter();s[l.name]=l}const o=this.evaluateArguments(e,i.parameters,n),u={...i,parameters:s,arguments:o};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(u),u}}Id.NamedSource=$ye;var Y1={},bv={};Object.defineProperty(bv,"__esModule",{value:!0}),bv.QueryHeadStruct=void 0;const Bye=ce,kye=xo,Mye=Id;class Pye extends kye.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,Bye.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Mye.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}bv.QueryHeadStruct=Pye,Object.defineProperty(Y1,"__esModule",{value:!0}),Y1.QueryReference=void 0;const GO=Mr,jye=We,Uye=bv,qye=ce,zye=rs;class Hye extends jye.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:GO.ErrorFactory.structDef,outputStruct:GO.ErrorFactory.structDef,query:GO.ErrorFactory.query}};if(!r)return this.logError("query-reference-not-found",`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new Uye.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,zye.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,qye.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.logError("non-query-used-as-query",`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}Y1.QueryReference=Hye,Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.SQReference=void 0;const Qye=gu,Gye=Yc,Wye=Id,uz=Y1,az=Ts;class Vye extends Qye.SourceQueryElement{constructor(e,n){super({ref:e}),this.ref=e,this.args=n,this.elementType="sq-reference",n!==void 0&&this.has({args:n})}getQuery(){const e=this.ref.getNamed();if(e)if(e.type==="query"){const n=new uz.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog("cannot-use-as-query",`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.logError("source-or-query-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){const e=this.ref.getNamed();return e!==void 0&&(0,az.modelObjIsSource)(e)}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.logError("source-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.logError("illegal-query-argument","Arguments cannot be passed to queries");const n=new uz.QueryReference(this.ref);this.asSource=new Gye.QuerySource(n)}else if((0,az.modelObjIsSource)(e))this.asSource=new Wye.NamedSource(this.ref,void 0,this.args);else{this.sqLog("cannot-use-struct-as-source",`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}Q1.SQReference=Vye,Object.defineProperty(Sv,"__esModule",{value:!0}),Sv.SQRefine=void 0;const Yye=gu,Xye=Yc,Jye=Ld,Kye=Q1;class Zye extends Yye.SourceQueryElement{constructor(e,n){super({toRefine:e,refine:n}),this.toRefine=e,this.refine=n,this.elementType="sq-refine"}getQuery(){if(this.toRefine.isSource()){this.toRefine instanceof Kye.SQReference?this.sqLog("illegal-refinement-of-source",`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("illegal-refinement-of-source","Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new Jye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Xye.QuerySource(e);return this.has({queryAsSource:n}),n}}}Sv.SQRefine=Zye;var Tv={},X1={};Object.defineProperty(X1,"__esModule",{value:!0}),X1.QueryRaw=void 0;const eEe=ce,tEe=We;class nEe extends tEe.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)},r=(0,eEe.refIsStructDef)(n.structRef)?n.structRef:this.source.getSourceDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}X1.QueryRaw=nEe;var J1={},Rv={};Object.defineProperty(Rv,"__esModule",{value:!0}),Rv.makeSQLSentence=void 0;const rEe=ce,iEe=Nt;function sEe(t,e){return{name:`sql://${e}/${oEe(t)}`,connection:e,select:t}}Rv.makeSQLSentence=sEe;function oEe(t){const e=t.map(n=>(0,rEe.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,iEe.generateHash)(e.join(";"))}Object.defineProperty(J1,"__esModule",{value:!0}),J1.SQLSource=void 0;const uEe=Rv,aEe=xo,Ov=Mr;class lEe extends aEe.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlSentence(){return this.requestBlock||(this.requestBlock=(0,uEe.makeSQLSentence)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.getSourceDef()}}validateConnectionName(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(this.connectionNameInvalid)return!1;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection")return this.connectionName.logError("invalid-connection-for-sql-source",`${this.connectionName.refString} is not a connection`),this.connectionNameInvalid=!0,!1;return!0}needs(e){var n;if(!this.validateConnectionName())return;const r=super.needs(e);if(r)return r;const i=this.sqlSentence(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block");return}s.reference(i.name,this.location);const o=s.getEntry(i.name);if(o.status==="reference")return{compileSQL:i,partialModel:this.select.containsQueries?e.modelDef():void 0};o.status==="present"&&e.checkExperimentalDialect(this,o.value.dialect)}getSourceDef(){var e;if(!this.validateConnectionName())return Ov.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block"),Ov.ErrorFactory.structDef;const r=this.sqlSentence();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.logError("invalid-sql-source","Invalid SQL, "+s.join(`
|
|
1321
|
-
`)),Ov.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Ov.ErrorFactory.structDef}}J1.SQLSource=lEe,Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.SQSource=void 0;const cEe=gu,fEe=X1,xEe=J1;class dEe extends cEe.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof xEe.SQLSource){const e=new fEe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}Tv.SQSource=dEe;var Dv={};Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.SQExtend=void 0;const hEe=U1,pEe=gu;class gEe extends pEe.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new hEe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}Dv.SQExtend=gEe;var Nv={},K1={},Z1={};Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.BinaryBoolean=void 0;const lz=ce,mEe=Oi,yEe=un,EEe=mu,AEe=dt;class vEe extends AEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[yEe.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,lz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,lz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,EEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,mEe.errorFor)("logial required boolean")}}Z1.BinaryBoolean=vEe,Object.defineProperty(K1,"__esModule",{value:!0}),K1.ExprCompare=void 0;const Vt=un,SEe=Z1,_Ee={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class CEe extends SEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=_Ee[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}K1.ExprCompare=CEe;var eg={},Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.ExprTime=void 0;const bEe=ce,TEe=dt;class WO extends TEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,bEe.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new WO(e,r,n.expressionType)}}Bd.ExprTime=WO;var Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.Range=void 0;const cz=ce,REe=Oi,OEe=dt;class DEe extends OEe.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,cz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,cz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,REe.errorFor)("a range is not a value")}}Xl.Range=DEe,Object.defineProperty(eg,"__esModule",{value:!0}),eg.ExprGranularTime=void 0;const fz=ce,NEe=Oi,xz=un,dz=er,wEe=dt,wv=Bd,hz=Xl;class FEe extends wEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[xz.FT.timestampT,xz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,fz.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,fz.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,NEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=wv.ExprTime.fromValue("timestamp",n),a=new wv.ExprTime("timestamp",(0,dz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new hz.Range(u,a)}const i=new wv.ExprTime("date",n.value,n.expressionType),s=(0,dz.timeOffset)("date",n.value,"+",r,this.units),o=new wv.ExprTime("date",s,n.expressionType);return new hz.Range(i,o)}}eg.ExprGranularTime=FEe,Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.Apply=void 0;const LEe=K1,IEe=$d,pz=eg;class $Ee extends LEe.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,IEe.isGranularResult)(r)&&(n=new pz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof pz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Nv.Apply=$Ee;var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.BinaryNumeric=void 0;const BEe=un,kEe=dt;class MEe extends kEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[BEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}kd.BinaryNumeric=MEe;var Fv={};Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.Boolean=void 0;const PEe=dt,jEe=un;let UEe=class extends PEe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...jEe.FT.boolT,value:{node:this.value}}}};Fv.Boolean=UEe;var Jl={};Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.FunctionOrdering=Jl.FunctionOrderBy=void 0;const VO=ce,gz=We,qEe=Xc;class zEe extends gz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,VO.expressionIsAggregate)(n.expressionType)||((0,VO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof qEe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,VO.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Jl.FunctionOrderBy=zEe;class HEe extends gz.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Jl.FunctionOrdering=HEe;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.ExprAddSub=void 0;const QEe=kd;class GEe extends QEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Lv.ExprAddSub=GEe;var Oa={},pt={},tg={};Object.defineProperty(tg,"__esModule",{value:!0}),tg.ReferenceField=void 0;const mz=kr;class WEe extends mz.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof mz.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}tg.ReferenceField=WEe;var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.typecheckGroupBy=Mn.typecheckAggregate=Mn.typecheckCalculate=Mn.typecheckDeclare=Mn.typecheckMeasure=Mn.typecheckDimension=Mn.typecheckIndex=Mn.typecheckProject=void 0;const vn=Ts;function VEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckProject=VEe;function YEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}Mn.typecheckIndex=YEe;function XEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckDimension=XEe;function JEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckMeasure=JEe;function KEe(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}Mn.typecheckDeclare=KEe;function ZEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckCalculate=ZEe;function eAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckAggregate=eAe;function tAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckGroupBy=tAe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const nAe=tg,rAe=ns,yz=We,Ez=Br,Kl=Mn;class Ni extends yz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Ez.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new nAe.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=Ni;class iAe extends Ni{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=iAe;class sAe extends Ni{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=sAe;class oAe extends Ni{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=oAe;class uAe extends Ni{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=uAe;class aAe extends Ni{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Kl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=aAe;class YO extends Ni{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Kl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return YO.indexOutputName(this.path)}}pt.IndexFieldReference=YO;class lAe extends Ni{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Kl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=lAe;class cAe extends Ni{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Kl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=cAe;class fAe extends Ni{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Kl.typecheckProject)(e,this)}}pt.ProjectFieldReference=fAe;class xAe extends Ni{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Kl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=xAe;class dAe extends Ni{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Kl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=dAe;class hAe extends Ni{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Kl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=hAe;class pAe extends Ni{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=pAe;class gAe extends yz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Ez.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=gAe;class mAe extends rAe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=mAe,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.ExprAggregateFunction=void 0;const ng=ce,yAe=Nt,EAe=Oi,Az=yr,AAe=un,vAe=pt,SAe=dt,_Ae=kr,CAe=Xc;class bAe extends SAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[AAe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof Az.StructSpaceField))if((0,ng.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>TAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,ng.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=JO(l,f),m=KO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=RAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,EAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...XO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...XO(e,r))}return n}}Oa.ExprAggregateFunction=bAe;function TAe(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function XO(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof Az.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof _Ae.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,yAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,ng.isAtomic)(o)&&!(0,ng.isJoined)(o))if((0,ng.hasExpression)(o)){const u=XO(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function JO(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function KO(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function RAe(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=JO(i,e),o=KO(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=JO(l,e),f=KO(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof vAe.FieldReference?`${n.refString}.${r}()`:n instanceof CAe.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var Iv={};Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.ExprAlternationTree=void 0;const vz=ce,OAe=dt;class DAe extends OAe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,vz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,vz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}}Iv.ExprAlternationTree=DAe;var Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.ExprAsymmetric=void 0;const NAe=Oa;class wAe extends NAe.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}Md.ExprAsymmetric=wAe;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.ExprAvg=void 0;const FAe=Md;class LAe extends FAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}$v.ExprAvg=LAe;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.ExprCast=void 0;const IAe=er,$Ae=dt;class BAe extends $Ae.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`))}return{dataType:r,expressionType:n.expressionType,value:(0,IAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Bv.ExprCast=BAe;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprCoalesce=void 0;const Sz=Ts,_z=un,kAe=dt;class MAe extends kAe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=_z.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(_z.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,Sz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,Sz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}kv.ExprCoalesce=MAe;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprCount=void 0;const PAe=Oa;class jAe extends PAe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}Mv.ExprCount=jAe;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.ExprCountDistinct=void 0;const jv=un,UAe=Oa;class qAe extends UAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[jv.FT.numberT,jv.FT.stringT,jv.FT.dateT,jv.FT.timestampT]}}Pv.ExprCountDistinct=qAe;var Uv={},Zl={};Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.Limit=void 0;const zAe=We,HAe=En;class QAe extends zAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=HAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Zl.Limit=QAe;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.PartitionBy=void 0;const GAe=We;class WAe extends GAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Pd.PartitionBy=WAe;var rg={},e0={};Object.defineProperty(e0,"__esModule",{value:!0}),e0.FieldName=void 0;const VAe=We;class YAe extends VAe.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}e0.FieldName=YAe,Object.defineProperty(rg,"__esModule",{value:!0}),rg.ExprFunc=void 0;const is=ce,XAe=Oi,JAe=Td,KAe=dt,ZAe=e0,Cz=Nt;class eve extends KAe.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,is.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Cz.composeSQLExpr)(L),evalSpace:(0,is.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,XAe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,is.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof JAe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=tve(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,is.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,is.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,is.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,is.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const M=L.getField(e);M.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,is.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,is.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=nve(O),M=L.filter(G=>G.type==="interpolation"&&G.name.includes(".")).map(G=>G.type==="interpolation"?`\${${G.name}}`:`\${${G.value}}`);if(M.length>0){const G=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",G)}const H=[];for(const G of L)if(G.type==="string")H.push(G.value);else if(G.name==="TABLE")H.push({node:"source-reference"});else{const Q=new ZAe.FieldName(G.name);this.has({name:Q});const Y=e.lookup([Q]);if(Y.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${Y.error.message}`);Y.found.refType==="parameter"?H.push({node:"parameter",path:[G.name]}):H.push({node:"field",path:[G.name]})}S=(0,Cz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,is.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,is.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}rg.ExprFunc=eve;function tve(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,is.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,is.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function nve(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprProps=void 0;const rve=ce,ive=Oi,sve=un,ove=Jl,uve=Zl,ave=Pd,lve=dt,cve=rg;class fve extends lve.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=sve.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,rve.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,ive.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof ave.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof uve.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof ove.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof cve.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Uv.ExprProps=fve;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ExprLogicalOp=void 0;const xve=Z1,bz=un;class dve extends xve.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[bz.FT.boolT,bz.FT.aggregateBoolT]}}qv.ExprLogicalOp=dve;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprMax=void 0;const Hv=un,hve=Oa;class pve extends hve.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[Hv.FT.numberT,Hv.FT.stringT,Hv.FT.dateT,Hv.FT.timestampT]}returns(e){return e.dataType}}zv.ExprMax=pve;var Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.ExprMin=void 0;const Gv=un,gve=Oa;class mve extends gve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[Gv.FT.numberT,Gv.FT.stringT,Gv.FT.dateT,Gv.FT.timestampT]}returns(e){return e.dataType}}Qv.ExprMin=mve;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprMinus=void 0;const yve=Oi,Tz=un,Eve=dt;class Ave extends Eve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Tz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Tz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,yve.errorFor)("negate requires number")}}Wv.ExprMinus=Ave;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprMulDiv=void 0;const vve=kd;class Sve extends vve.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Vv.ExprMulDiv=Sve;var Yv={},ig={};Object.defineProperty(ig,"__esModule",{value:!0}),ig.Unary=void 0;const _ve=dt;class Cve extends _ve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}ig.Unary=Cve,Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprNot=void 0;const Rz=un,bve=ig;class Tve extends bve.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Rz.FT.boolT,Rz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}Yv.ExprNot=Tve;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprNow=void 0;const Rve=dt;class Ove extends Rve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Xv.ExprNow=Ove;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ExprNULL=void 0;const Dve=dt;class Nve extends Dve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}Jv.ExprNULL=Nve;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprNumber=void 0;const wve=un,Fve=dt;class Lve extends Fve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...wve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}Kv.ExprNumber=Lve;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprParens=void 0;const Ive=dt;class $ve extends Ive.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}Zv.ExprParens=$ve;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprRegEx=void 0;const Bve=dt;class kve extends Bve.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}eS.ExprRegEx=kve;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.ExprString=void 0;const Mve=dt,Pve=un;class jve extends Mve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...Pve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}tS.ExprString=jve;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.ExprSum=void 0;const Uve=Md;class qve extends Uve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}nS.ExprSum=qve;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.ExprTimeExtract=void 0;const Zc=ce,Oz=Oi,ZO=dt,zve=Xl;class sg extends ZO.ExpressionDef{static extractor(e){const n=sg.pluralMap[e];if(n)return n;if((0,Zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=sg.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof zve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Oz.errorFor)("extract from error").value};if(!(0,Zc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Zc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,ZO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,ZO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Zc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Oz.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}rS.ExprTimeExtract=sg,sg.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var iS={},po={},sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.QueryInputSpace=void 0;const Hve=Di,Qve=bd;class Gve extends Qve.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Hve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}sS.QueryInputSpace=Gve;var Wve=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Vve=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Yve=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Wve(e,t,n);return Vve(e,t),e};Object.defineProperty(po,"__esModule",{value:!0}),po.ReduceFieldSpace=po.QuerySpace=po.QueryOperationSpace=void 0;const oS=Yve(ce),e7=Gl,Xve=e0,Jve=kr,Kve=pt,Zve=bd,eSe=z1,tSe=yr,nSe=sS;class Dz extends Zve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new nSe.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof tSe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();oS.isAtomicFieldType(l.dataType)&&oS.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}po.QueryOperationSpace=Dz;class Nz extends Dz{addRefineFromFields(e){var n;if(oS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Xve.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new eSe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Kve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Jve.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!iSe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(oS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,e7.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,e7.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,e7.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}po.QuerySpace=Nz;class rSe extends Nz{constructor(){super(...arguments),this.segmentType="reduce"}}po.ReduceFieldSpace=rSe;function iSe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(iS,"__esModule",{value:!0}),iS.ExprUngroup=void 0;const wz=ce,sSe=po,oSe=un,uSe=dt;class aSe extends uSe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=oSe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,wz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,wz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof sSe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}iS.ExprUngroup=aSe;var uS={};Object.defineProperty(uS,"__esModule",{value:!0}),uS.ForRange=void 0;const Fz=Ts,Lz=Oi,Iz=un,aS=er,lSe=dt,lS=Bd,$z=Xl;class cSe extends lSe.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[Iz.FT.timestampT,Iz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Lz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,Fz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Fz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Lz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,aS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,aS.timeOffset)("date",i.value,"+",o.value,u),g=new lS.ExprTime("date",m);return new $z.Range(p,g).apply(e,n,r)}const l=lS.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,aS.castDateToTimestamp)(f),c=new lS.ExprTime("timestamp",f,i.expressionType)}const x=(0,aS.timeOffset)("timestamp",f,"+",o.value,u),h=new lS.ExprTime("timestamp",x,i.expressionType);return new $z.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}uS.ForRange=cSe;var tr={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});class ef extends Error{}class fSe extends ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class xSe extends ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class dSe extends ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class og extends ef{}class Bz extends ef{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends ef{}class t0 extends ef{constructor(){super("Zone is an abstract class")}}const Me="numeric",go="short",ss="long",t7={year:Me,month:Me,day:Me},kz={year:Me,month:go,day:Me},hSe={year:Me,month:go,day:Me,weekday:go},Mz={year:Me,month:ss,day:Me},Pz={year:Me,month:ss,day:Me,weekday:ss},jz={hour:Me,minute:Me},Uz={hour:Me,minute:Me,second:Me},qz={hour:Me,minute:Me,second:Me,timeZoneName:go},zz={hour:Me,minute:Me,second:Me,timeZoneName:ss},Hz={hour:Me,minute:Me,hourCycle:"h23"},Qz={hour:Me,minute:Me,second:Me,hourCycle:"h23"},Gz={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:go},Wz={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:ss},Vz={year:Me,month:Me,day:Me,hour:Me,minute:Me},Yz={year:Me,month:Me,day:Me,hour:Me,minute:Me,second:Me},Xz={year:Me,month:go,day:Me,hour:Me,minute:Me},Jz={year:Me,month:go,day:Me,hour:Me,minute:Me,second:Me},pSe={year:Me,month:go,day:Me,weekday:go,hour:Me,minute:Me},Kz={year:Me,month:ss,day:Me,hour:Me,minute:Me,timeZoneName:go},Zz={year:Me,month:ss,day:Me,hour:Me,minute:Me,second:Me,timeZoneName:go},eH={year:Me,month:ss,day:Me,weekday:ss,hour:Me,minute:Me,timeZoneName:ss},tH={year:Me,month:ss,day:Me,weekday:ss,hour:Me,minute:Me,second:Me,timeZoneName:ss};function _t(t){return typeof t>"u"}function tf(t){return typeof t=="number"}function cS(t){return typeof t=="number"&&t%1===0}function gSe(t){return typeof t=="string"}function mSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function nH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ySe(t){return Array.isArray(t)?t:[t]}function rH(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function ESe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function jd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Da(t,e,n){return cS(t)&&t>=e&&t<=n}function ASe(t,e){return t-e*Math.floor(t/e)}function wn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function n0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function nf(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function n7(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function r7(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function ug(t){return t%4===0&&(t%100!==0||t%400===0)}function ag(t){return ug(t)?366:365}function fS(t,e){const n=ASe(e-1,12)+1,r=t+(e-n)/12;return n===2?ug(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function i7(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function xS(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function s7(t){return t>99?t:t>60?1900+t:2e3+t}function iH(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function dS(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function sH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function hS(t,e){const n={};for(const r in t)if(jd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=sH(i)}return n}function lg(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${wn(n,2)}:${wn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${wn(n,2)}${wn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function pS(t){return ESe(t,["hour","minute","second","millisecond"])}const oH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,vSe=["January","February","March","April","May","June","July","August","September","October","November","December"],uH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],SSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function aH(t){switch(t){case"narrow":return[...SSe];case"short":return[...uH];case"long":return[...vSe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const lH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],cH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],_Se=["M","T","W","T","F","S","S"];function fH(t){switch(t){case"narrow":return[..._Se];case"short":return[...cH];case"long":return[...lH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const xH=["AM","PM"],CSe=["Before Christ","Anno Domini"],bSe=["BC","AD"],TSe=["B","A"];function dH(t){switch(t){case"narrow":return[...TSe];case"short":return[...bSe];case"long":return[...CSe];default:return null}}function RSe(t){return xH[t.hour<12?0:1]}function OSe(t,e){return fH(e)[t.weekday-1]}function DSe(t,e){return aH(e)[t.month-1]}function NSe(t,e){return dH(e)[t.year<0?0:1]}function wSe(t,e,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function hH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const FSe={D:t7,DD:kz,DDD:Mz,DDDD:Pz,t:jz,tt:Uz,ttt:qz,tttt:zz,T:Hz,TT:Qz,TTT:Gz,TTTT:Wz,f:Vz,ff:Xz,fff:Kz,ffff:eH,F:Yz,FF:Jz,FFF:Zz,FFFF:tH};class Fi{static create(e,n={}){return new Fi(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return FSe[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return wn(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?RSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?DSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?OSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?NSe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return hH(Fi.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Fi.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return hH(s,i(u))}}class mo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ud=class{get type(){throw new t0}get name(){throw new t0}get ianaName(){return this.name}get isUniversal(){throw new t0}offsetName(e,n){throw new t0}formatOffset(e,n){throw new t0}offset(e){throw new t0}equals(e){throw new t0}get isValid(){throw new t0}},o7=null;class gS extends Ud{static get instance(){return o7===null&&(o7=new gS),o7}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return iH(e,n,r)}formatOffset(e,n){return lg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let mS={};function LSe(t){return mS[t]||(mS[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),mS[t]}const ISe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function $Se(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function BSe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ISe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let yS={};class yu extends Ud{static create(e){return yS[e]||(yS[e]=new yu(e)),yS[e]}static resetCache(){yS={},mS={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return iH(e,n,r,this.name)}formatOffset(e,n){return lg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=LSe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?BSe(r,n):$Se(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=i7({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let u7=null;class Pr extends Ud{static get utcInstance(){return u7===null&&(u7=new Pr(0)),u7}static instance(e){return e===0?Pr.utcInstance:new Pr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Pr(dS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${lg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${lg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return lg(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class pH extends Ud{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function r0(t,e){if(_t(t)||t===null)return e;if(t instanceof Ud)return t;if(gSe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Pr.utcInstance:Pr.parseSpecifier(n)||yu.create(t)}else return tf(t)?Pr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new pH(t)}let gH=()=>Date.now(),mH="system",yH=null,EH=null,AH=null,vH;class Fn{static get now(){return gH}static set now(e){gH=e}static set defaultZone(e){mH=e}static get defaultZone(){return r0(mH,gS.instance)}static get defaultLocale(){return yH}static set defaultLocale(e){yH=e}static get defaultNumberingSystem(){return EH}static set defaultNumberingSystem(e){EH=e}static get defaultOutputCalendar(){return AH}static set defaultOutputCalendar(e){AH=e}static get throwOnInvalid(){return vH}static set throwOnInvalid(e){vH=e}static resetCaches(){xn.resetCache(),yu.resetCache()}}let SH={};function kSe(t,e={}){const n=JSON.stringify([t,e]);let r=SH[n];return r||(r=new Intl.ListFormat(t,e),SH[n]=r),r}let a7={};function l7(t,e={}){const n=JSON.stringify([t,e]);let r=a7[n];return r||(r=new Intl.DateTimeFormat(t,e),a7[n]=r),r}let c7={};function MSe(t,e={}){const n=JSON.stringify([t,e]);let r=c7[n];return r||(r=new Intl.NumberFormat(t,e),c7[n]=r),r}let f7={};function PSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=f7[i];return s||(s=new Intl.RelativeTimeFormat(t,e),f7[i]=s),s}let cg=null;function jSe(){return cg||(cg=new Intl.DateTimeFormat().resolvedOptions().locale,cg)}function USe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=l7(t).resolvedOptions()}catch{n=l7(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function qSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function zSe(t){const e=[];for(let n=1;n<=12;n++){const r=ut.utc(2016,n,1);e.push(t(r))}return e}function HSe(t){const e=[];for(let n=1;n<=7;n++){const r=ut.utc(2016,11,13+n);e.push(t(r))}return e}function ES(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function QSe(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class GSe{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=MSe(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):r7(e,3);return wn(n,this.padTo)}}}class WSe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ut.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=l7(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class VSe{constructor(e,n,r){this.opts={style:"long",...r},!n&&nH()&&(this.rtf=PSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):wSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":jSe()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){cg=null,a7={},c7={},f7={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=USe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=qSe(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=QSe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return ES(this,e,r,aH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=zSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return ES(this,e,r,fH,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=HSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return ES(this,void 0,e,()=>xH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ut.utc(2016,11,13,9),ut.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return ES(this,e,n,dH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ut.utc(-40,1,1),ut.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new GSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new WSe(e,this.intl,n)}relFormatter(e={}){return new VSe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return kSe(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function qd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function zd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function Hd(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function _H(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=n0(e[n+i]);return[r,null,n+i]}}const CH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,YSe=`(?:${CH.source}?(?:\\[(${oH.source})\\])?)?`,x7=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,bH=RegExp(`${x7.source}${YSe}`),d7=RegExp(`(?:T${bH.source})?`),XSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,JSe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,KSe=/(\d{4})-?(\d{3})/,ZSe=_H("weekYear","weekNumber","weekDay"),e4e=_H("year","ordinal"),t4e=/(\d{4})-(\d\d)-(\d\d)/,TH=RegExp(`${x7.source} ?(?:${CH.source}|(${oH.source}))?`),n4e=RegExp(`(?: ${TH.source})?`);function Qd(t,e,n){const r=t[e];return _t(r)?n:n0(r)}function r4e(t,e){return[{year:Qd(t,e),month:Qd(t,e+1,1),day:Qd(t,e+2,1)},null,e+3]}function Gd(t,e){return[{hours:Qd(t,e,0),minutes:Qd(t,e+1,0),seconds:Qd(t,e+2,0),milliseconds:n7(t[e+3])},null,e+4]}function fg(t,e){const n=!t[e]&&!t[e+1],r=dS(t[e+1],t[e+2]),i=n?null:Pr.instance(r);return[{},i,e+3]}function xg(t,e){const n=t[e]?yu.create(t[e]):null;return[{},n,e+1]}const i4e=RegExp(`^T?${x7.source}$`),s4e=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function o4e(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(nf(n)),months:x(nf(r)),weeks:x(nf(i)),days:x(nf(s)),hours:x(nf(o)),minutes:x(nf(u)),seconds:x(nf(a),a==="-0"),milliseconds:x(n7(l),f)}]}const u4e={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function h7(t,e,n,r,i,s,o){const u={year:e.length===2?s7(n0(e)):n0(e),month:uH.indexOf(n)+1,day:n0(r),hour:n0(i),minute:n0(s)};return o&&(u.second=n0(o)),t&&(u.weekday=t.length>3?lH.indexOf(t)+1:cH.indexOf(t)+1),u}const a4e=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function l4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=h7(e,i,r,n,s,o,u);let h;return a?h=u4e[a]:l?h=0:h=dS(c,f),[x,new Pr(h)]}function c4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const f4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,x4e=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,d4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function RH(t){const[,e,n,r,i,s,o,u]=t;return[h7(e,i,r,n,s,o,u),Pr.utcInstance]}function h4e(t){const[,e,n,r,i,s,o,u]=t;return[h7(e,u,n,r,i,s,o),Pr.utcInstance]}const p4e=qd(XSe,d7),g4e=qd(JSe,d7),m4e=qd(KSe,d7),y4e=qd(bH),OH=zd(r4e,Gd,fg,xg),E4e=zd(ZSe,Gd,fg,xg),A4e=zd(e4e,Gd,fg,xg),v4e=zd(Gd,fg,xg);function S4e(t){return Hd(t,[p4e,OH],[g4e,E4e],[m4e,A4e],[y4e,v4e])}function _4e(t){return Hd(c4e(t),[a4e,l4e])}function C4e(t){return Hd(t,[f4e,RH],[x4e,RH],[d4e,h4e])}function b4e(t){return Hd(t,[s4e,o4e])}const T4e=zd(Gd);function R4e(t){return Hd(t,[i4e,T4e])}const O4e=qd(t4e,n4e),D4e=qd(TH),N4e=zd(Gd,fg,xg);function w4e(t){return Hd(t,[O4e,OH],[D4e,N4e])}const F4e="Invalid Duration",DH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},L4e={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...DH},Ls=146097/400,Wd=146097/4800,I4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:Wd/7,days:Wd,hours:Wd*24,minutes:Wd*24*60,seconds:Wd*24*60*60,milliseconds:Wd*24*60*60*1e3},...DH},rf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],$4e=rf.slice(0).reverse();function sf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new Ct(r)}function B4e(t){return t<0?Math.floor(t):Math.ceil(t)}function NH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?B4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function k4e(t,e){$4e.reduce((n,r)=>_t(e[r])?n:(n&&NH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?I4e:L4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:hS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(tf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=b4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=R4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new dSe(r);return new Ct({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new Bz(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Fi.create(this.loc,r).formatDurationFromString(this,e):F4e}toHuman(e={}){const n=rf.map(r=>{const i=this.values[r];return _t(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=r7(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e),r={};for(const i of rf)(jd(n.values,i)||jd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return sf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=sH(e(this.values[r],r));return sf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...hS(e,Ct.normalizeUnit)};return sf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),sf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return k4e(this.matrix,e),sf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of rf)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;tf(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)rf.indexOf(l)>rf.indexOf(o)&&NH(this.matrix,i,l,n,o)}else tf(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return sf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return sf(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of rf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const dg="Invalid Interval";function M4e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Interval is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new xSe(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=mg(e),i=mg(n),s=M4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=mg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=mg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ut.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ut.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(mg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:dg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:dg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:dg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:dg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:dg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let hg=class{static hasDST(e=Fn.defaultZone){const n=ut.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return yu.isValidZone(e)}static normalizeZone(e){return r0(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:nH()}}};function wH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function P4e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=wH(u,a);return(l-l%7)/7}],["days",wH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function j4e(t,e,n,r){let[i,s,o,u]=P4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=Ct.fromObject(s,r);return l.length>0?Ct.fromMillis(a,r).shiftTo(...l).plus(c):c}const p7={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},FH={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},U4e=p7.hanidec.replace(/[\[|\]]/g,"").split("");function q4e(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(p7.hanidec)!==-1)e+=U4e.indexOf(t[n]);else for(const i in FH){const[s,o]=FH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function yo({numberingSystem:t},e=""){return new RegExp(`${p7[t||"latn"]}${e}`)}const z4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(q4e(n))}}const LH="[ ]",IH=new RegExp(LH,"g");function H4e(t){return t.replace(/\./g,"\\.?").replace(IH,LH)}function $H(t){return t.replace(/\./g,"").replace(IH," ").toLowerCase()}function Eo(t,e){return t===null?null:{regex:RegExp(t.map(H4e).join("|")),deser:([n])=>t.findIndex(r=>$H(n)===$H(r))+e}}function BH(t,e){return{regex:t,deser:([,n,r])=>dS(n,r),groups:e}}function g7(t){return{regex:t,deser:([e])=>e}}function Q4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function G4e(t,e){const n=yo(e),r=yo(e,"{2}"),i=yo(e,"{3}"),s=yo(e,"{4}"),o=yo(e,"{6}"),u=yo(e,"{1,2}"),a=yo(e,"{1,3}"),l=yo(e,"{1,6}"),c=yo(e,"{1,9}"),f=yo(e,"{2,4}"),x=yo(e,"{4,6}"),h=g=>({regex:RegExp(Q4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Eo(e.eras("short",!1),0);case"GG":return Eo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,s7);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Eo(e.months("short",!0,!1),1);case"MMMM":return Eo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Eo(e.months("short",!1,!1),1);case"LLLL":return Eo(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return g7(c);case"uu":return g7(u);case"uuu":return $t(n);case"a":return Eo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,s7);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Eo(e.weekdays("short",!1,!1),1);case"EEEE":return Eo(e.weekdays("long",!1,!1),1);case"ccc":return Eo(e.weekdays("short",!0,!1),1);case"cccc":return Eo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return BH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return BH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return g7(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:z4e};return m.token=t,m}const W4e={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function V4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=W4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Y4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function X4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(jd(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function J4e(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return _t(t.z)||(n=yu.create(t.z)),_t(t.Z)||(n||(n=new Pr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),_t(t.u)||(t.S=n7(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let m7=null;function K4e(){return m7||(m7=ut.fromMillis(1555555555555)),m7}function Z4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts(K4e()).map(o=>V4e(o,e,n));return s.includes(void 0)?t:s}function e_e(t,e){return Array.prototype.concat(...t.map(n=>Z4e(n,e)))}function kH(t,e,n){const r=e_e(Fi.parseFormat(n),t),i=r.map(o=>G4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Y4e(i),a=RegExp(o,"i"),[l,c]=X4e(e,a,u),[f,x,h]=c?J4e(c):[null,null,void 0];if(jd(c,"a")&&jd(c,"H"))throw new og("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function t_e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=kH(t,e,n);return[r,i,s,o]}const MH=[0,31,59,90,120,151,181,212,243,273,304,334],PH=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new mo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function jH(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function UH(t,e,n){return n+(ug(t)?PH:MH)[e-1]}function qH(t,e){const n=ug(t)?PH:MH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function y7(t){const{year:e,month:n,day:r}=t,i=UH(e,n,r),s=jH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=xS(u)):o>xS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...pS(t)}}function zH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=jH(e,1,4),s=ag(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=ag(u)):o>s?(u=e+1,o-=ag(e)):u=e;const{month:a,day:l}=qH(u,o);return{year:u,month:a,day:l,...pS(t)}}function E7(t){const{year:e,month:n,day:r}=t,i=UH(e,n,r);return{year:e,ordinal:i,...pS(t)}}function HH(t){const{year:e,ordinal:n}=t,{month:r,day:i}=qH(e,n);return{year:e,month:r,day:i,...pS(t)}}function n_e(t){const e=cS(t.weekYear),n=Da(t.weekNumber,1,xS(t.weekYear)),r=Da(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function r_e(t){const e=cS(t.year),n=Da(t.ordinal,1,ag(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function QH(t){const e=cS(t.year),n=Da(t.month,1,12),r=Da(t.day,1,fS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function GH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Da(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Da(n,0,59),u=Da(r,0,59),a=Da(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const A7="Invalid DateTime",WH=864e13;function AS(t){return new mo("unsupported zone",`the zone "${t.name}" is not supported`)}function v7(t){return t.weekData===null&&(t.weekData=y7(t.c)),t.weekData}function pg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ut({...n,...e,old:n})}function VH(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function YH(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function vS(t,e,n){return VH(i7(t),e,n)}function XH(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,fS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=i7(s);let[a,l]=VH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function gg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ut.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ut.invalid(new mo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function SS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function S7(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=wn(t.c.year,n?6:4),e?(r+="-",r+=wn(t.c.month),r+="-",r+=wn(t.c.day)):(r+=wn(t.c.month),r+=wn(t.c.day)),r}function JH(t,e,n,r,i,s){let o=wn(t.c.hour);return e?(o+=":",o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=wn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=wn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=wn(Math.trunc(-t.o/60)),o+=":",o+=wn(Math.trunc(-t.o%60))):(o+="+",o+=wn(Math.trunc(t.o/60)),o+=":",o+=wn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const KH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},i_e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},s_e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},ZH=["year","month","day","hour","minute","second","millisecond"],o_e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],u_e=["year","ordinal","hour","minute","second","millisecond"];function eQ(t){const e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Bz(t);return e}function tQ(t,e){const n=r0(e.zone,Fn.defaultZone),r=xn.fromObject(e),i=Fn.now();let s,o;if(_t(t.year))s=i;else{for(const l of ZH)_t(t[l])&&(t[l]=KH[l]);const u=QH(t)||GH(t);if(u)return ut.invalid(u);const a=n.offset(i);[s,o]=vS(t,a,n)}return new ut({ts:s,zone:n,loc:r,o})}function nQ(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=r7(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function rQ(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class ut{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new mo("invalid input"):null)||(n.isValid?null:AS(n));this.ts=_t(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=YH(this.ts,u),r=Number.isNaN(i.year)?new mo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ut({})}static local(){const[e,n]=rQ(arguments),[r,i,s,o,u,a,l]=n;return tQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=rQ(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Pr.utcInstance,tQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=mSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ut.invalid("invalid input");const i=r0(n.zone,Fn.defaultZone);return i.isValid?new ut({ts:r,zone:i,loc:xn.fromObject(n)}):ut.invalid(AS(i))}static fromMillis(e,n={}){if(tf(e))return e<-WH||e>WH?ut.invalid("Timestamp out of range"):new ut({ts:e,zone:r0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(tf(e))return new ut({ts:e*1e3,zone:r0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=r0(n.zone,Fn.defaultZone);if(!r.isValid)return ut.invalid(AS(r));const i=Fn.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=hS(e,eQ),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new og("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new og("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=YH(i,s);h?(p=o_e,m=i_e,g=y7(g)):u?(p=u_e,m=s_e,g=E7(g)):(p=ZH,m=KH);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?n_e(o):u?r_e(o):QH(o),A=E||GH(o);if(A)return ut.invalid(A);const v=h?zH(o):u?HH(o):o,[_,S]=vS(v,s,r),C=new ut({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ut.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=S4e(e);return gg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=_4e(e);return gg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=C4e(e);return gg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=t_e(o,e,n);return c?ut.invalid(c):gg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ut.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=w4e(e);return gg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new fSe(r);return new ut({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?v7(this).weekYear:NaN}get weekNumber(){return this.isValid?v7(this).weekNumber:NaN}get weekday(){return this.isValid?v7(this).weekday:NaN}get ordinal(){return this.isValid?E7(this.c).ordinal:NaN}get monthShort(){return this.isValid?hg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?hg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?hg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?hg.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return ug(this.year)}get daysInMonth(){return fS(this.year,this.month)}get daysInYear(){return this.isValid?ag(this.year):NaN}get weeksInWeekYear(){return this.isValid?xS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Pr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=r0(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=vS(o,s,e)}return pg(this,{ts:i,zone:e})}else return ut.invalid(AS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return pg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=hS(e,eQ),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new og("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new og("Can't mix ordinal dates with month/day");let l;r?l=zH({...y7(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(fS(l.year,l.month),l.day))):l=HH({...E7(this.c),...n});const[c,f]=vS(l,this.o,this.zone);return pg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return pg(this,XH(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return pg(this,XH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):A7}toLocaleString(e=t7,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):A7}toLocaleParts(e={}){return this.isValid?Fi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=S7(this,o);return u+="T",u+=JH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?S7(this,e==="extended"):null}toISOWeekDate(){return SS(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+JH(this,o==="extended",n,e,r,s):null}toRFC2822(){return SS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return SS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?S7(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),SS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():A7}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=ySe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=j4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ut.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ut.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),nQ(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?nQ(e.base||ut.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ut.isDateTime))throw new Fs("min requires all arguments be DateTimes");return rH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ut.isDateTime))throw new Fs("max requires all arguments be DateTimes");return rH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return kH(o,e,n)}static fromStringExplain(e,n,r={}){return ut.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return t7}static get DATE_MED(){return kz}static get DATE_MED_WITH_WEEKDAY(){return hSe}static get DATE_FULL(){return Mz}static get DATE_HUGE(){return Pz}static get TIME_SIMPLE(){return jz}static get TIME_WITH_SECONDS(){return Uz}static get TIME_WITH_SHORT_OFFSET(){return qz}static get TIME_WITH_LONG_OFFSET(){return zz}static get TIME_24_SIMPLE(){return Hz}static get TIME_24_WITH_SECONDS(){return Qz}static get TIME_24_WITH_SHORT_OFFSET(){return Gz}static get TIME_24_WITH_LONG_OFFSET(){return Wz}static get DATETIME_SHORT(){return Vz}static get DATETIME_SHORT_WITH_SECONDS(){return Yz}static get DATETIME_MED(){return Xz}static get DATETIME_MED_WITH_SECONDS(){return Jz}static get DATETIME_MED_WITH_WEEKDAY(){return pSe}static get DATETIME_FULL(){return Kz}static get DATETIME_FULL_WITH_SECONDS(){return Zz}static get DATETIME_HUGE(){return eH}static get DATETIME_HUGE_WITH_SECONDS(){return tH}}function mg(t){if(ut.isDateTime(t))return t;if(t&&t.valueOf&&tf(t.valueOf()))return ut.fromJSDate(t);if(t&&typeof t=="object")return ut.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const a_e="2.5.2";var l_e=wi.DateTime=ut;wi.Duration=Ct,wi.FixedOffsetZone=Pr,wi.IANAZone=yu,wi.Info=hg,wi.Interval=dn,wi.InvalidZone=pH,wi.Settings=Fn,wi.SystemZone=gS,wi.VERSION=a_e,wi.Zone=Ud,Object.defineProperty(tr,"__esModule",{value:!0}),tr.LiteralYear=tr.LiteralQuarter=tr.LiteralMonth=tr.LiteralWeek=tr.LiteralDay=tr.LiteralHour=tr.LiteralTimestamp=tr.TimeFormatError=void 0;const i0=wi,c_e=ce,f_e=Xl,iQ=Bd,_7=dt;class x_e extends Error{}tr.TimeFormatError=x_e;function of(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const sQ="yyyy",oQ=`${sQ}-LL`,$s=`${oQ}-dd`,uQ=`${$s} HH`,aQ=`${uQ}:mm`,C7=`${aQ}:ss`;class lQ extends _7.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class b7 extends lQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=of(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=i0.DateTime.fromFormat(e,C7);if(s.isValid)return new b7(r,n);if(s=i0.DateTime.fromFormat(e,aQ),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(C7);return new T7(r,n,"timestamp",o)}}}tr.LiteralTimestamp=b7;class T7 extends lQ{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,_7.getMorphicValue)(i,"timestamp"),a=(0,_7.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,c_e.isTemporalField)(o.dataType)){const u=o.dataType;return new f_e.Range(new iQ.ExprTime(u,i.value),new iQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class R7 extends T7{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,uQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(C7),new R7(n,r)}}tr.LiteralHour=R7;class yg extends T7{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class O7 extends yg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new O7(n,r)}}tr.LiteralDay=O7;class D7 extends yg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.slice(0,10),s=i0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new D7(n,r)}}}tr.LiteralWeek=D7;class N7 extends yg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,oQ);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new N7(n,r)}}}tr.LiteralMonth=N7;class w7 extends yg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=i0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new w7(n,r)}}}tr.LiteralQuarter=w7;class F7 extends yg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,sQ);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new F7(n,r)}}}tr.LiteralYear=F7;var _S={};Object.defineProperty(_S,"__esModule",{value:!0}),_S.PartialCompare=void 0;const d_e=dt;class h_e extends d_e.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}}_S.PartialCompare=h_e;var Vd={};Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.PickWhen=Vd.Pick=void 0;const Eu=ce,Yd=un,p_e=dt,g_e=We;function CS(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class m_e extends p_e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Eu.maxExpressionType)(o,(0,Eu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Eu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Yd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=CS(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=CS(s,l),Yd.FT.typeEq(s,l,!0)?(i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Eu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Eu.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Yd.FT.typeEq(a.when,Yd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Yd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=CS(i,a.pick),s=(0,Eu.maxExpressionType)(s,(0,Eu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Eu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Eu.maxExpressionType)(s,u.expressionType),o=(0,Eu.mergeEvalSpaces)(o,u.evalSpace),i=CS(i,u),Yd.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}Vd.Pick=m_e;class y_e extends g_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Vd.PickWhen=y_e;var Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.RecordLiteral=Xd.RecordElement=void 0;const cQ=Ts,E_e=dt,A_e=We;class v_e extends A_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Xd.RecordElement=v_e;class S_e extends E_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,cQ.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,cQ.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Xd.RecordLiteral=S_e;var bS={};Object.defineProperty(bS,"__esModule",{value:!0}),bS.Timeframe=void 0;const __e=ce,C_e=We;class b_e extends C_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,__e.isTimestampUnit)(n)?n:"second"}}bS.Timeframe=b_e;var TS={};Object.defineProperty(TS,"__esModule",{value:!0}),TS.TopBy=void 0;const T_e=ce,fQ=dt,R_e=We;class O_e extends R_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof fQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof fQ.ExpressionDef){const n=this.by.getExpression(e);return(0,T_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}TS.TopBy=O_e;var s0={};Object.defineProperty(s0,"__esModule",{value:!0}),s0.ImportStatement=s0.ImportSelect=s0.ImportSourceName=void 0;const L7=We;class D_e extends L7.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}s0.ImportSourceName=D_e;class N_e extends L7.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}s0.ImportSelect=N_e;class w_e extends L7.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}s0.ImportStatement=w_e;var Eg={};Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.ExtendBlock=void 0;const F_e=We,L_e=En;class I_e extends F_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=L_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Eg.ExtendBlock=I_e;var RS={};Object.defineProperty(RS,"__esModule",{value:!0}),RS.Argument=void 0;const $_e=We;class B_e extends $_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}RS.Argument=B_e;var OS={};Object.defineProperty(OS,"__esModule",{value:!0}),OS.HasParameter=void 0;const xQ=ce,k_e=We;class M_e extends k_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,xQ.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,xQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}OS.HasParameter=M_e;var DS={};Object.defineProperty(DS,"__esModule",{value:!0}),DS.AnonymousQuery=void 0;const P_e=We,j_e=Br;class U_e extends P_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=j_e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}DS.AnonymousQuery=U_e;var o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.View=void 0;const q_e=We;let z_e=class extends q_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};o0.View=z_e;var NS={};Object.defineProperty(NS,"__esModule",{value:!0}),NS.ViewArrow=void 0;const H_e=yr,Q_e=o0;class G_e extends Q_e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new H_e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}NS.ViewArrow=G_e;var wS={},Ag={};Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.refine=void 0;const I7=Ts,$7=Gl;function W_e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,I7.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,I7.isQuerySegment)(o)&&(0,I7.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,$7.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,$7.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map($7.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Ag.refine=W_e,Object.defineProperty(wS,"__esModule",{value:!0}),wS.ViewRefine=void 0;const V_e=Mr,Y_e=rs,X_e=Ag,J_e=o0;class K_e extends J_e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,Y_e.getFinalStruct)(this.refinement,e.structDef(),i):V_e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,X_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}wS.ViewRefine=K_e;var FS={};Object.defineProperty(FS,"__esModule",{value:!0}),FS.ReferenceView=void 0;const B7=ce,dQ=Mr,Z_e=rs,e5e=kr,t5e=Ag,n5e=o0;class r5e extends n5e.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:dQ.ErrorFactory.structDef,outputStruct:dQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof e5e.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,B7.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,B7.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,B7.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,Z_e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,t5e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}FS.ReferenceView=r5e;var LS={},vg={},IS={},Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.Index=void 0;const i5e=We,s5e=En;let o5e=class extends i5e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=s5e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Sg.Index=o5e;var _g={};Object.defineProperty(_g,"__esModule",{value:!0}),_g.SampleProperty=void 0;const u5e=We,hQ=En;class a5e extends u5e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=hQ.LegalRefinementStage.Tail,this.forceQueryClass=hQ.QueryClass.Index}sampling(){return this.sample}}_g.SampleProperty=a5e;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.IndexFieldSpace=void 0;const pQ=ce,k7=pt,l5e=kr,c5e=po,f5e=tg,x5e=yr;class d5e extends c5e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof k7.FieldReference?super.pushFields(n):n instanceof k7.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof l5e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof f5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof x5e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=k7.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,pQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,pQ.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}$S.IndexFieldSpace=d5e,Object.defineProperty(IS,"__esModule",{value:!0}),IS.IndexBuilder=void 0;const M7=ce,h5e=Mr,p5e=ho,g5e=Sg,m5e=Zl,y5e=_g,E5e=$S;class A5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new E5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof p5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof m5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof g5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof y5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,M7.isIndexSegment)(e)&&!(0,M7.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),h5e.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,M7.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}IS.IndexBuilder=A5e;var BS={},Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.GroupBy=void 0;const v5e=ns,gQ=En;class S5e extends v5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=gQ.LegalRefinementStage.Single,this.forceQueryClass=gQ.QueryClass.Grouping}}Cg.GroupBy=S5e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.ProjectFieldSpace=void 0;const P7=ce,_5e=po;class C5e extends _5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,P7.expressionIsAggregate)(e.expressionType)?!1:(0,P7.expressionInvolvesAggregate)(e.expressionType)&&(0,P7.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}kS.ProjectFieldSpace=C5e;var u0={},uf={};Object.defineProperty(uf,"__esModule",{value:!0}),uf.Ordering=uf.OrderBy=void 0;const b5e=ce,mQ=e0,yQ=We,T5e=En;class R5e extends yQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof mQ.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof mQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,b5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}uf.OrderBy=R5e;class O5e extends yQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=T5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}uf.Ordering=O5e;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.Top=void 0;const EQ=ce,D5e=e0,N5e=We,w5e=En;let F5e=class extends N5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=w5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof D5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,EQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,EQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};bg.Top=F5e,Object.defineProperty(u0,"__esModule",{value:!0}),u0.ReduceBuilder=u0.QuerySegmentBuilder=void 0;const AQ=ce,L5e=Mr,I5e=ho,$5e=Zl,vQ=uf,SQ=bg,B5e=po,k5e=ns;class _Q{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof k5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof I5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof SQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof $5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof vQ.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof SQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof vQ.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}u0.QuerySegmentBuilder=_Q;class M5e extends _Q{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new B5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,AQ.isReduceSegment)(e)||(0,AQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),L5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}u0.ReduceBuilder=M5e,Object.defineProperty(BS,"__esModule",{value:!0}),BS.ProjectBuilder=void 0;const CQ=ce,P5e=Mr,j5e=Cg,U5e=kS,q5e=u0;class z5e extends q5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new U5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof j5e.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,CQ.isProjectSegment)(e)||(0,CQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),P5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}BS.ProjectBuilder=z5e;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.PartialBuilder=void 0;const H5e=Ts,Q5e=u0;class G5e extends Q5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,H5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}MS.PartialBuilder=G5e,Object.defineProperty(vg,"__esModule",{value:!0}),vg.QOpDesc=void 0;const W5e=IS,V5e=BS,Y5e=u0,X5e=We,J5e=rs,K5e=yr,af=En,Z5e=MS;class eCe extends X5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=af.QueryClass.Grouping:this.refineThis.type==="project"?n=af.QueryClass.Project:this.refineThis.type==="index"&&(n=af.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=af.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case af.QueryClass.Grouping:return new Y5e.ReduceBuilder(e,this.refineThis,n,r);case af.QueryClass.Project:return new V5e.ProjectBuilder(e,this.refineThis,n,r);case af.QueryClass.Index:return new W5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new Z5e.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new K5e.StaticSourceSpace((0,J5e.opOutputStruct)(this,e.structDef(),i))}}}vg.QOpDesc=eCe,Object.defineProperty(LS,"__esModule",{value:!0}),LS.QOpDescView=void 0;const tCe=ce,nCe=yr,bQ=vg,rCe=rs,j7=En,iCe=o0;class sCe extends iCe.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,tCe.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new bQ.QOpDesc([]),o=new bQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case j7.LegalRefinementStage.Head:s.push(u);break;case j7.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case j7.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,rCe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new nCe.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}LS.QOpDescView=sCe;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const TQ=ce,oCe=un,uCe=$d,aCe=We,lf=Mn,lCe=Br,cCe=kr;class a0 extends aCe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=lCe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new U7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,TQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,uCe.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof U7&&e.foundCircle)&&r.dataType!=="error"){const u=oCe.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new RQ(e,this))}}hn.AtomicFieldDeclaration=a0;class fCe extends a0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=fCe;class xCe extends a0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=xCe;class dCe extends a0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=dCe;class hCe extends a0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=hCe;class pCe extends a0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=pCe;class gCe extends a0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=gCe;class mCe extends a0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=mCe;class U7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}hn.DefSpace=U7;class RQ extends cCe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,TQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=RQ;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.Aggregate=void 0;const yCe=ns,OQ=En;let ECe=class extends yCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=OQ.LegalRefinementStage.Single,this.forceQueryClass=OQ.QueryClass.Grouping}};PS.Aggregate=ECe;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.Calculate=void 0;const ACe=ns,vCe=En;class SCe extends ACe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=vCe.LegalRefinementStage.Single}}jS.Calculate=SCe;var Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.Dimensions=void 0;const _Ce=Wl;class CCe extends _Ce.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Tg.Dimensions=CCe;var Rg={};Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.Measures=void 0;const bCe=Wl;class TCe extends bCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Rg.Measures=TCe;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.Nests=void 0;const RCe=ns,DQ=En;class OCe extends RCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=DQ.LegalRefinementStage.Single,this.forceQueryClass=DQ.QueryClass.Grouping}}US.Nests=OCe;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.ProjectStatement=void 0;const DCe=ns,NQ=En;class NCe extends DCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=NQ.QueryClass.Project,this.queryRefinementStage=NQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}qS.ProjectStatement=NCe;var l0={},Na={};Object.defineProperty(Na,"__esModule",{value:!0}),Na.findReferences=Na.deprecatedParseTableURI=Na.constructTableKey=void 0;const wCe=Dl,q7=sn;function z7(t){const e=(0,q7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,q7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class FCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=wQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,q7.getId)(e.connectionId()),r=z7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=z7(e.tableURI()),{connectionName:r,tablePath:i}=FQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=z7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function wQ(t,e){return t===void 0?e:`${t}:${e}`}Na.constructTableKey=wQ;function FQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Na.deprecatedParseTableURI=FQ;function LCe(t,e,n){const r=new FCe(t,e),i=r;return wCe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Na.findReferences=LCe,Object.defineProperty(l0,"__esModule",{value:!0}),l0.TableFunctionSource=l0.TableMethodSource=l0.TableSource=void 0;const LQ=Na,ICe=xo,IQ=Mr;class H7 extends ICe.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return IQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,LQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),IQ.ErrorFactory.structDef}}l0.TableSource=H7;class $Ce extends H7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}l0.TableMethodSource=$Ce;class BCe extends H7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,LQ.deprecatedParseTableURI)(this.tableURI)}}l0.TableFunctionSource=BCe;var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.SQLString=void 0;const kCe=We,$Q=gu;class MCe extends kCe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(PCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof $Q.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}zS.SQLString=MCe;function PCe(t){return t instanceof $Q.SourceQueryElement}var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.SourceDesc=void 0;const jCe=We;class UCe extends jCe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}HS.SourceDesc=UCe;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.isSourceProperty=void 0;const qCe=ho,zCe=Wl,HCe=Od,QCe=Yl,GCe=Dd,WCe=Nd,VCe=wd,YCe=Vl,XCe=Di;function JCe(t){return t instanceof qCe.Filter||t instanceof XCe.JoinStatement||t instanceof zCe.DeclareFields||t instanceof HCe.FieldListEdit||t instanceof QCe.Renames||t instanceof GCe.PrimaryKey||t instanceof YCe.ObjectAnnotation||t instanceof WCe.Views||t instanceof VCe.TimezoneStatement}QS.isSourceProperty=JCe;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.isFieldCollectionMember=void 0;const KCe=hn,BQ=pt;function ZCe(t){return t instanceof BQ.FieldReference||t instanceof BQ.WildcardFieldReference||t instanceof KCe.AtomicFieldDeclaration}GS.isFieldCollectionMember=ZCe;var WS={};Object.defineProperty(WS,"__esModule",{value:!0}),WS.isQueryElement=void 0;const ebe=Fd,tbe=Ld,nbe=Y1,rbe=X1;function ibe(t){return t instanceof ebe.QueryArrow||t instanceof tbe.QueryRefine||t instanceof nbe.QueryReference||t instanceof rbe.QueryRaw}WS.isQueryElement=ibe;var kQ={};Object.defineProperty(kQ,"__esModule",{value:!0});var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.isQueryProperty=void 0;function sbe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}VS.isQueryProperty=sbe;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.isQueryExtendProperty=void 0;const obe=Tg,ube=Di,abe=Rg;function lbe(t){return t instanceof obe.Dimensions||t instanceof abe.Measures||t instanceof ube.JoinStatement}YS.isQueryExtendProperty=lbe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.isFieldPropStatement=void 0;const cbe=Jl,fbe=ho,xbe=Zl,dbe=Pd;function hbe(t){return t instanceof fbe.Filter||t instanceof xbe.Limit||t instanceof dbe.PartitionBy||t instanceof cbe.FunctionOrdering}XS.isFieldPropStatement=hbe,function(t){var e=D&&D.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=D&&D.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(M1,t),n(_d,t),n(Cd,t),n(xo,t),n(U1,t),n(gu,t),n(vv,t),n(Sv,t),n(Tv,t),n(Q1,t),n(Dv,t),n(Od,t),n(Dd,t),n(Yl,t),n(Nd,t),n(wd,t),n(Nv,t),n(kd,t),n(Fv,t),n(Jl,t),n(Lv,t),n(Oa,t),n(Iv,t),n(Md,t),n($v,t),n(Bv,t),n(kv,t),n(K1,t),n(Mv,t),n(Pv,t),n(Uv,t),n(rg,t),n(eg,t),n(Xc,t),n(qv,t),n(zv,t),n(Qv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(Xv,t),n(Jv,t),n(Kv,t),n(Zv,t),n(eS,t),n(tS,t),n(nS,t),n(rS,t),n(iS,t),n(uS,t),n(tr,t),n(_S,t),n(Pd,t),n(Vd,t),n(Xd,t),n(Xl,t),n(bS,t),n(TS,t),n(ig,t),n(s0,t),n(Eg,t),n(RS,t),n(OS,t),n(DS,t),n(Ld,t),n(Fd,t),n(o0,t),n(NS,t),n(wS,t),n(FS,t),n(LS,t),n(hn,t),n(pt,t),n(PS,t),n(jS,t),n(Wl,t),n(Tg,t),n(Eg,t),n(ho,t),n(Cg,t),n(Sg,t),n(Di,t),n(P1,t),n(Zl,t),n(Rg,t),n(M1,t),n(US,t),n(uf,t),n(qS,t),n(vg,t),n(_g,t),n(bg,t),n(Id,t),n(Yc,t),n(J1,t),n(l0,t),n(zS,t),n(Vl,t),n(mu,t),n(HS,t),n(QS,t),n(dt,t),n(GS,t),n(e0,t),n(We,t),n(WS,t),n(kQ,t),n(VS,t),n(YS,t),n(XS,t)}(fv);var JS={},Jd={};Object.defineProperty(Jd,"__esModule",{value:!0}),Jd.ConstantExpression=Jd.ConstantFieldSpace=void 0;const pbe=dt;class MQ{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Jd.ConstantFieldSpace=MQ;class gbe extends pbe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new MQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Jd.ConstantExpression=gbe;var mbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),ybe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ebe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&mbe(e,t,n);return ybe(e,t),e};Object.defineProperty(JS,"__esModule",{value:!0}),JS.MalloyToAST=void 0;const PQ=lA,Abe=U2,ie=Ebe(fv),Q7=xv,vbe=Yn,Sbe=fv,Pn=sn,G7=ce,_be=Vo,Cbe=Jd;class jQ extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class W7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const bbe=["##! m4warnings=error"];class Tbe extends Abe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of bbe){const s=_be.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,Q7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r,i){this.msgLog.log((0,Q7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,Q7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof W7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,Pn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,Pn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new vbe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Pn.getPlainString)(e);for(const i of r)i instanceof PQ.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,Pn.getStringParts)(e))r instanceof PQ.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new Cbe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,Pn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,Pn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Pn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,G7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,Pn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,Pn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,Pn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Pn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Pn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,Pn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ie.isComparison(n))return new ie.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,G7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Pn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,G7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Pn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,Pn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,Pn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new W7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new W7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new jQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof Sbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new jQ}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}}JS.MalloyToAST=Tbe;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.Zone=void 0;class Rbe{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}KS.Zone=Rbe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.walkForDocumentSymbols=void 0;const Obe=Dl,Dbe=sn;class Nbe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,Dbe.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function wbe(t,e,n){const r=new Nbe(t,e,[],[]),i=r;return Obe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}ZS.walkForDocumentSymbols=wbe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.walkForDocumentCompletions=void 0;const Fbe=Dl,Lbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],Ibe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],$be=["source","explore","query","sql"];class Bbe{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of Lbe)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of Ibe)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of $be)this.completions.push({type:"model_property",text:`${r}: `})}}}function kbe(t,e,n){const r=new Bbe(t,[],n),i=r;return Fbe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}e4.walkForDocumentCompletions=kbe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.walkForDocumentHelpContext=void 0;const Mbe=e6;class Pbe extends Mbe.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function jbe(t,e){return new Pbe(e).visit(t)}t4.walkForDocumentHelpContext=jbe;var n4={},Og={};Object.defineProperty(Og,"__esModule",{value:!0}),Og.locationContainsPosition=void 0;function Ube(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}Og.locationContainsPosition=Ube,Object.defineProperty(n4,"__esModule",{value:!0}),n4.ReferenceList=void 0;const qbe=Og;class zbe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,qbe.locationContainsPosition)(r.location,e))return r}}n4.ReferenceList=zbe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.isNeedResponse=void 0;function Hbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}r4.isNeedResponse=Hbe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.walkForModelAnnotation=void 0;const Qbe=Dl;class Gbe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function Wbe(t,e,n){const r=new Gbe(t,e,n),i=r;return Qbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}i4.walkForModelAnnotation=Wbe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.walkForTablePath=void 0;const UQ=sn,Vbe=Dl;class Ybe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,UQ.getId)(e.connectionId()),[r,i]=(0,UQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Xbe(t,e,n){const r=new Ybe(t,e),i=r;return Vbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}s4.walkForTablePath=Xbe;var Jbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Kbe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Zbe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Jbe(e,t,n);return Kbe(e,t),e};Object.defineProperty(lu,"__esModule",{value:!0}),lu.MalloyParserErrorHandler=lu.MalloyTranslator=lu.MalloyChildTranslator=lu.MalloyTranslation=void 0;const qQ=lA,eTe=ce,tTe=bA,nTe=F,zQ=Zbe(fv),rTe=JS,V7=xv,iTe=Na,Y7=KS,sTe=ZS,oTe=e4,uTe=t4,aTe=n4,o4=r4,lTe=Og,HQ=Vo,cTe=i4,fTe=s4;class xTe extends tTe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class dTe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1321
|
+
`)),Ov.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Ov.ErrorFactory.structDef}}J1.SQLSource=lEe,Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.SQSource=void 0;const cEe=gu,fEe=X1,xEe=J1;class dEe extends cEe.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof xEe.SQLSource){const e=new fEe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}Tv.SQSource=dEe;var Dv={};Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.SQExtend=void 0;const hEe=U1,pEe=gu;class gEe extends pEe.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new hEe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}Dv.SQExtend=gEe;var Nv={},K1={},Z1={};Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.BinaryBoolean=void 0;const lz=ce,mEe=Oi,yEe=un,EEe=mu,AEe=dt;class vEe extends AEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[yEe.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,lz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,lz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,EEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,mEe.errorFor)("logial required boolean")}}Z1.BinaryBoolean=vEe,Object.defineProperty(K1,"__esModule",{value:!0}),K1.ExprCompare=void 0;const Vt=un,SEe=Z1,_Ee={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class CEe extends SEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=_Ee[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}K1.ExprCompare=CEe;var eg={},Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.ExprTime=void 0;const bEe=ce,TEe=dt;class WO extends TEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,bEe.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new WO(e,r,n.expressionType)}}Bd.ExprTime=WO;var Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.Range=void 0;const cz=ce,REe=Oi,OEe=dt;class DEe extends OEe.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,cz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,cz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,REe.errorFor)("a range is not a value")}}Xl.Range=DEe,Object.defineProperty(eg,"__esModule",{value:!0}),eg.ExprGranularTime=void 0;const fz=ce,NEe=Oi,xz=un,dz=er,wEe=dt,wv=Bd,hz=Xl;class FEe extends wEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[xz.FT.timestampT,xz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,fz.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,fz.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,NEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=wv.ExprTime.fromValue("timestamp",n),a=new wv.ExprTime("timestamp",(0,dz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new hz.Range(u,a)}const i=new wv.ExprTime("date",n.value,n.expressionType),s=(0,dz.timeOffset)("date",n.value,"+",r,this.units),o=new wv.ExprTime("date",s,n.expressionType);return new hz.Range(i,o)}}eg.ExprGranularTime=FEe,Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.Apply=void 0;const LEe=K1,IEe=$d,pz=eg;class $Ee extends LEe.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,IEe.isGranularResult)(r)&&(n=new pz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof pz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Nv.Apply=$Ee;var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.BinaryNumeric=void 0;const BEe=un,kEe=dt;class MEe extends kEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[BEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}kd.BinaryNumeric=MEe;var Fv={};Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.Boolean=void 0;const PEe=dt,jEe=un;let UEe=class extends PEe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...jEe.FT.boolT,value:{node:this.value}}}};Fv.Boolean=UEe;var Jl={};Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.FunctionOrdering=Jl.FunctionOrderBy=void 0;const VO=ce,gz=We,qEe=Xc;class zEe extends gz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,VO.expressionIsAggregate)(n.expressionType)||((0,VO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof qEe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,VO.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Jl.FunctionOrderBy=zEe;class HEe extends gz.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Jl.FunctionOrdering=HEe;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.ExprAddSub=void 0;const QEe=kd;class GEe extends QEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Lv.ExprAddSub=GEe;var Oa={},pt={},tg={};Object.defineProperty(tg,"__esModule",{value:!0}),tg.ReferenceField=void 0;const mz=kr;class WEe extends mz.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof mz.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}tg.ReferenceField=WEe;var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.typecheckGroupBy=Mn.typecheckAggregate=Mn.typecheckCalculate=Mn.typecheckDeclare=Mn.typecheckMeasure=Mn.typecheckDimension=Mn.typecheckIndex=Mn.typecheckProject=void 0;const vn=Ts;function VEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckProject=VEe;function YEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}Mn.typecheckIndex=YEe;function XEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckDimension=XEe;function JEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckMeasure=JEe;function KEe(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}Mn.typecheckDeclare=KEe;function ZEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckCalculate=ZEe;function eAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckAggregate=eAe;function tAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckGroupBy=tAe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const nAe=tg,rAe=ns,yz=We,Ez=Br,Kl=Mn;class Ni extends yz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Ez.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new nAe.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=Ni;class iAe extends Ni{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=iAe;class sAe extends Ni{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=sAe;class oAe extends Ni{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=oAe;class uAe extends Ni{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=uAe;class aAe extends Ni{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Kl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=aAe;class YO extends Ni{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Kl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return YO.indexOutputName(this.path)}}pt.IndexFieldReference=YO;class lAe extends Ni{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Kl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=lAe;class cAe extends Ni{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Kl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=cAe;class fAe extends Ni{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Kl.typecheckProject)(e,this)}}pt.ProjectFieldReference=fAe;class xAe extends Ni{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Kl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=xAe;class dAe extends Ni{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Kl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=dAe;class hAe extends Ni{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Kl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=hAe;class pAe extends Ni{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=pAe;class gAe extends yz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Ez.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=gAe;class mAe extends rAe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=mAe,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.ExprAggregateFunction=void 0;const ng=ce,yAe=Nt,EAe=Oi,Az=yr,AAe=un,vAe=pt,SAe=dt,_Ae=kr,CAe=Xc;class bAe extends SAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[AAe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof Az.StructSpaceField))if((0,ng.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>TAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,ng.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=JO(l,f),m=KO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=RAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,EAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...XO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...XO(e,r))}return n}}Oa.ExprAggregateFunction=bAe;function TAe(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function XO(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof Az.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof _Ae.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,yAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,ng.isAtomic)(o)&&!(0,ng.isJoined)(o))if((0,ng.hasExpression)(o)){const u=XO(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function JO(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function KO(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function RAe(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=JO(i,e),o=KO(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=JO(l,e),f=KO(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof vAe.FieldReference?`${n.refString}.${r}()`:n instanceof CAe.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var Iv={};Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.ExprAlternationTree=void 0;const vz=ce,OAe=dt;class DAe extends OAe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,vz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,vz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}}Iv.ExprAlternationTree=DAe;var Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.ExprAsymmetric=void 0;const NAe=Oa;class wAe extends NAe.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}Md.ExprAsymmetric=wAe;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.ExprAvg=void 0;const FAe=Md;class LAe extends FAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}$v.ExprAvg=LAe;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.ExprCast=void 0;const IAe=er,$Ae=dt;class BAe extends $Ae.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,IAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Bv.ExprCast=BAe;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprCoalesce=void 0;const Sz=Ts,_z=un,kAe=dt;class MAe extends kAe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=_z.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(_z.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,Sz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,Sz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}kv.ExprCoalesce=MAe;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprCount=void 0;const PAe=Oa;class jAe extends PAe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}Mv.ExprCount=jAe;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.ExprCountDistinct=void 0;const jv=un,UAe=Oa;class qAe extends UAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[jv.FT.numberT,jv.FT.stringT,jv.FT.dateT,jv.FT.timestampT]}}Pv.ExprCountDistinct=qAe;var Uv={},Zl={};Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.Limit=void 0;const zAe=We,HAe=En;class QAe extends zAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=HAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Zl.Limit=QAe;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.PartitionBy=void 0;const GAe=We;class WAe extends GAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Pd.PartitionBy=WAe;var rg={},e0={};Object.defineProperty(e0,"__esModule",{value:!0}),e0.FieldName=void 0;const VAe=We;class YAe extends VAe.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}e0.FieldName=YAe,Object.defineProperty(rg,"__esModule",{value:!0}),rg.ExprFunc=void 0;const is=ce,XAe=Oi,JAe=Td,KAe=dt,ZAe=e0,Cz=Nt;class eve extends KAe.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,is.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Cz.composeSQLExpr)(L),evalSpace:(0,is.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,XAe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,is.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof JAe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=tve(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,is.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,is.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,is.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,is.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const M=L.getField(e);M.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,is.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,is.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=nve(O),M=L.filter(G=>G.type==="interpolation"&&G.name.includes(".")).map(G=>G.type==="interpolation"?`\${${G.name}}`:`\${${G.value}}`);if(M.length>0){const G=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",G)}const H=[];for(const G of L)if(G.type==="string")H.push(G.value);else if(G.name==="TABLE")H.push({node:"source-reference"});else{const Q=new ZAe.FieldName(G.name);this.has({name:Q});const Y=e.lookup([Q]);if(Y.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${Y.error.message}`);Y.found.refType==="parameter"?H.push({node:"parameter",path:[G.name]}):H.push({node:"field",path:[G.name]})}S=(0,Cz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,is.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,is.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}rg.ExprFunc=eve;function tve(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,is.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,is.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function nve(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprProps=void 0;const rve=ce,ive=Oi,sve=un,ove=Jl,uve=Zl,ave=Pd,lve=dt,cve=rg;class fve extends lve.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=sve.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,rve.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,ive.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof ave.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof uve.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof ove.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof cve.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Uv.ExprProps=fve;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ExprLogicalOp=void 0;const xve=Z1,bz=un;class dve extends xve.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[bz.FT.boolT,bz.FT.aggregateBoolT]}}qv.ExprLogicalOp=dve;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprMax=void 0;const Hv=un,hve=Oa;class pve extends hve.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[Hv.FT.numberT,Hv.FT.stringT,Hv.FT.dateT,Hv.FT.timestampT]}returns(e){return e.dataType}}zv.ExprMax=pve;var Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.ExprMin=void 0;const Gv=un,gve=Oa;class mve extends gve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[Gv.FT.numberT,Gv.FT.stringT,Gv.FT.dateT,Gv.FT.timestampT]}returns(e){return e.dataType}}Qv.ExprMin=mve;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprMinus=void 0;const yve=Oi,Tz=un,Eve=dt;class Ave extends Eve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Tz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Tz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,yve.errorFor)("negate requires number")}}Wv.ExprMinus=Ave;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprMulDiv=void 0;const vve=kd;class Sve extends vve.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Vv.ExprMulDiv=Sve;var Yv={},ig={};Object.defineProperty(ig,"__esModule",{value:!0}),ig.Unary=void 0;const _ve=dt;class Cve extends _ve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}ig.Unary=Cve,Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprNot=void 0;const Rz=un,bve=ig;class Tve extends bve.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Rz.FT.boolT,Rz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}Yv.ExprNot=Tve;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprNow=void 0;const Rve=dt;class Ove extends Rve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Xv.ExprNow=Ove;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ExprNULL=void 0;const Dve=dt;class Nve extends Dve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}Jv.ExprNULL=Nve;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprNumber=void 0;const wve=un,Fve=dt;class Lve extends Fve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...wve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}Kv.ExprNumber=Lve;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprParens=void 0;const Ive=dt;class $ve extends Ive.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}Zv.ExprParens=$ve;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprRegEx=void 0;const Bve=dt;class kve extends Bve.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}eS.ExprRegEx=kve;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.ExprString=void 0;const Mve=dt,Pve=un;class jve extends Mve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...Pve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}tS.ExprString=jve;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.ExprSum=void 0;const Uve=Md;class qve extends Uve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}nS.ExprSum=qve;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.ExprTimeExtract=void 0;const Zc=ce,Oz=Oi,ZO=dt,zve=Xl;class sg extends ZO.ExpressionDef{static extractor(e){const n=sg.pluralMap[e];if(n)return n;if((0,Zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=sg.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof zve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Oz.errorFor)("extract from error").value};if(!(0,Zc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Zc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,ZO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,ZO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Zc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Oz.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}rS.ExprTimeExtract=sg,sg.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var iS={},po={},sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.QueryInputSpace=void 0;const Hve=Di,Qve=bd;class Gve extends Qve.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Hve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}sS.QueryInputSpace=Gve;var Wve=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Vve=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Yve=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Wve(e,t,n);return Vve(e,t),e};Object.defineProperty(po,"__esModule",{value:!0}),po.ReduceFieldSpace=po.QuerySpace=po.QueryOperationSpace=void 0;const oS=Yve(ce),e7=Gl,Xve=e0,Jve=kr,Kve=pt,Zve=bd,eSe=z1,tSe=yr,nSe=sS;class Dz extends Zve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new nSe.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof tSe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();oS.isAtomicFieldType(l.dataType)&&oS.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}po.QueryOperationSpace=Dz;class Nz extends Dz{addRefineFromFields(e){var n;if(oS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Xve.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new eSe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Kve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Jve.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!iSe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(oS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,e7.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,e7.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,e7.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}po.QuerySpace=Nz;class rSe extends Nz{constructor(){super(...arguments),this.segmentType="reduce"}}po.ReduceFieldSpace=rSe;function iSe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(iS,"__esModule",{value:!0}),iS.ExprUngroup=void 0;const wz=ce,sSe=po,oSe=un,uSe=dt;class aSe extends uSe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=oSe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,wz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,wz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof sSe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}iS.ExprUngroup=aSe;var uS={};Object.defineProperty(uS,"__esModule",{value:!0}),uS.ForRange=void 0;const Fz=Ts,Lz=Oi,Iz=un,aS=er,lSe=dt,lS=Bd,$z=Xl;class cSe extends lSe.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[Iz.FT.timestampT,Iz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Lz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,Fz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Fz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Lz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,aS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,aS.timeOffset)("date",i.value,"+",o.value,u),g=new lS.ExprTime("date",m);return new $z.Range(p,g).apply(e,n,r)}const l=lS.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,aS.castDateToTimestamp)(f),c=new lS.ExprTime("timestamp",f,i.expressionType)}const x=(0,aS.timeOffset)("timestamp",f,"+",o.value,u),h=new lS.ExprTime("timestamp",x,i.expressionType);return new $z.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}uS.ForRange=cSe;var tr={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});class ef extends Error{}class fSe extends ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class xSe extends ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class dSe extends ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class og extends ef{}class Bz extends ef{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends ef{}class t0 extends ef{constructor(){super("Zone is an abstract class")}}const Me="numeric",go="short",ss="long",t7={year:Me,month:Me,day:Me},kz={year:Me,month:go,day:Me},hSe={year:Me,month:go,day:Me,weekday:go},Mz={year:Me,month:ss,day:Me},Pz={year:Me,month:ss,day:Me,weekday:ss},jz={hour:Me,minute:Me},Uz={hour:Me,minute:Me,second:Me},qz={hour:Me,minute:Me,second:Me,timeZoneName:go},zz={hour:Me,minute:Me,second:Me,timeZoneName:ss},Hz={hour:Me,minute:Me,hourCycle:"h23"},Qz={hour:Me,minute:Me,second:Me,hourCycle:"h23"},Gz={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:go},Wz={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:ss},Vz={year:Me,month:Me,day:Me,hour:Me,minute:Me},Yz={year:Me,month:Me,day:Me,hour:Me,minute:Me,second:Me},Xz={year:Me,month:go,day:Me,hour:Me,minute:Me},Jz={year:Me,month:go,day:Me,hour:Me,minute:Me,second:Me},pSe={year:Me,month:go,day:Me,weekday:go,hour:Me,minute:Me},Kz={year:Me,month:ss,day:Me,hour:Me,minute:Me,timeZoneName:go},Zz={year:Me,month:ss,day:Me,hour:Me,minute:Me,second:Me,timeZoneName:go},eH={year:Me,month:ss,day:Me,weekday:ss,hour:Me,minute:Me,timeZoneName:ss},tH={year:Me,month:ss,day:Me,weekday:ss,hour:Me,minute:Me,second:Me,timeZoneName:ss};function _t(t){return typeof t>"u"}function tf(t){return typeof t=="number"}function cS(t){return typeof t=="number"&&t%1===0}function gSe(t){return typeof t=="string"}function mSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function nH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ySe(t){return Array.isArray(t)?t:[t]}function rH(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function ESe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function jd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Da(t,e,n){return cS(t)&&t>=e&&t<=n}function ASe(t,e){return t-e*Math.floor(t/e)}function wn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function n0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function nf(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function n7(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function r7(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function ug(t){return t%4===0&&(t%100!==0||t%400===0)}function ag(t){return ug(t)?366:365}function fS(t,e){const n=ASe(e-1,12)+1,r=t+(e-n)/12;return n===2?ug(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function i7(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function xS(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function s7(t){return t>99?t:t>60?1900+t:2e3+t}function iH(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function dS(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function sH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function hS(t,e){const n={};for(const r in t)if(jd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=sH(i)}return n}function lg(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${wn(n,2)}:${wn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${wn(n,2)}${wn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function pS(t){return ESe(t,["hour","minute","second","millisecond"])}const oH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,vSe=["January","February","March","April","May","June","July","August","September","October","November","December"],uH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],SSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function aH(t){switch(t){case"narrow":return[...SSe];case"short":return[...uH];case"long":return[...vSe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const lH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],cH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],_Se=["M","T","W","T","F","S","S"];function fH(t){switch(t){case"narrow":return[..._Se];case"short":return[...cH];case"long":return[...lH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const xH=["AM","PM"],CSe=["Before Christ","Anno Domini"],bSe=["BC","AD"],TSe=["B","A"];function dH(t){switch(t){case"narrow":return[...TSe];case"short":return[...bSe];case"long":return[...CSe];default:return null}}function RSe(t){return xH[t.hour<12?0:1]}function OSe(t,e){return fH(e)[t.weekday-1]}function DSe(t,e){return aH(e)[t.month-1]}function NSe(t,e){return dH(e)[t.year<0?0:1]}function wSe(t,e,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function hH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const FSe={D:t7,DD:kz,DDD:Mz,DDDD:Pz,t:jz,tt:Uz,ttt:qz,tttt:zz,T:Hz,TT:Qz,TTT:Gz,TTTT:Wz,f:Vz,ff:Xz,fff:Kz,ffff:eH,F:Yz,FF:Jz,FFF:Zz,FFFF:tH};class Fi{static create(e,n={}){return new Fi(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return FSe[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return wn(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?RSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?DSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?OSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?NSe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return hH(Fi.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Fi.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return hH(s,i(u))}}class mo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ud=class{get type(){throw new t0}get name(){throw new t0}get ianaName(){return this.name}get isUniversal(){throw new t0}offsetName(e,n){throw new t0}formatOffset(e,n){throw new t0}offset(e){throw new t0}equals(e){throw new t0}get isValid(){throw new t0}},o7=null;class gS extends Ud{static get instance(){return o7===null&&(o7=new gS),o7}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return iH(e,n,r)}formatOffset(e,n){return lg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let mS={};function LSe(t){return mS[t]||(mS[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),mS[t]}const ISe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function $Se(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function BSe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ISe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let yS={};class yu extends Ud{static create(e){return yS[e]||(yS[e]=new yu(e)),yS[e]}static resetCache(){yS={},mS={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return iH(e,n,r,this.name)}formatOffset(e,n){return lg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=LSe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?BSe(r,n):$Se(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=i7({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let u7=null;class Pr extends Ud{static get utcInstance(){return u7===null&&(u7=new Pr(0)),u7}static instance(e){return e===0?Pr.utcInstance:new Pr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Pr(dS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${lg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${lg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return lg(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class pH extends Ud{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function r0(t,e){if(_t(t)||t===null)return e;if(t instanceof Ud)return t;if(gSe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Pr.utcInstance:Pr.parseSpecifier(n)||yu.create(t)}else return tf(t)?Pr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new pH(t)}let gH=()=>Date.now(),mH="system",yH=null,EH=null,AH=null,vH;class Fn{static get now(){return gH}static set now(e){gH=e}static set defaultZone(e){mH=e}static get defaultZone(){return r0(mH,gS.instance)}static get defaultLocale(){return yH}static set defaultLocale(e){yH=e}static get defaultNumberingSystem(){return EH}static set defaultNumberingSystem(e){EH=e}static get defaultOutputCalendar(){return AH}static set defaultOutputCalendar(e){AH=e}static get throwOnInvalid(){return vH}static set throwOnInvalid(e){vH=e}static resetCaches(){xn.resetCache(),yu.resetCache()}}let SH={};function kSe(t,e={}){const n=JSON.stringify([t,e]);let r=SH[n];return r||(r=new Intl.ListFormat(t,e),SH[n]=r),r}let a7={};function l7(t,e={}){const n=JSON.stringify([t,e]);let r=a7[n];return r||(r=new Intl.DateTimeFormat(t,e),a7[n]=r),r}let c7={};function MSe(t,e={}){const n=JSON.stringify([t,e]);let r=c7[n];return r||(r=new Intl.NumberFormat(t,e),c7[n]=r),r}let f7={};function PSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=f7[i];return s||(s=new Intl.RelativeTimeFormat(t,e),f7[i]=s),s}let cg=null;function jSe(){return cg||(cg=new Intl.DateTimeFormat().resolvedOptions().locale,cg)}function USe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=l7(t).resolvedOptions()}catch{n=l7(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function qSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function zSe(t){const e=[];for(let n=1;n<=12;n++){const r=ut.utc(2016,n,1);e.push(t(r))}return e}function HSe(t){const e=[];for(let n=1;n<=7;n++){const r=ut.utc(2016,11,13+n);e.push(t(r))}return e}function ES(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function QSe(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class GSe{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=MSe(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):r7(e,3);return wn(n,this.padTo)}}}class WSe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ut.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=l7(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class VSe{constructor(e,n,r){this.opts={style:"long",...r},!n&&nH()&&(this.rtf=PSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):wSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":jSe()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){cg=null,a7={},c7={},f7={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=USe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=qSe(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=QSe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return ES(this,e,r,aH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=zSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return ES(this,e,r,fH,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=HSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return ES(this,void 0,e,()=>xH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ut.utc(2016,11,13,9),ut.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return ES(this,e,n,dH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ut.utc(-40,1,1),ut.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new GSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new WSe(e,this.intl,n)}relFormatter(e={}){return new VSe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return kSe(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function qd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function zd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function Hd(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function _H(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=n0(e[n+i]);return[r,null,n+i]}}const CH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,YSe=`(?:${CH.source}?(?:\\[(${oH.source})\\])?)?`,x7=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,bH=RegExp(`${x7.source}${YSe}`),d7=RegExp(`(?:T${bH.source})?`),XSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,JSe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,KSe=/(\d{4})-?(\d{3})/,ZSe=_H("weekYear","weekNumber","weekDay"),e4e=_H("year","ordinal"),t4e=/(\d{4})-(\d\d)-(\d\d)/,TH=RegExp(`${x7.source} ?(?:${CH.source}|(${oH.source}))?`),n4e=RegExp(`(?: ${TH.source})?`);function Qd(t,e,n){const r=t[e];return _t(r)?n:n0(r)}function r4e(t,e){return[{year:Qd(t,e),month:Qd(t,e+1,1),day:Qd(t,e+2,1)},null,e+3]}function Gd(t,e){return[{hours:Qd(t,e,0),minutes:Qd(t,e+1,0),seconds:Qd(t,e+2,0),milliseconds:n7(t[e+3])},null,e+4]}function fg(t,e){const n=!t[e]&&!t[e+1],r=dS(t[e+1],t[e+2]),i=n?null:Pr.instance(r);return[{},i,e+3]}function xg(t,e){const n=t[e]?yu.create(t[e]):null;return[{},n,e+1]}const i4e=RegExp(`^T?${x7.source}$`),s4e=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function o4e(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(nf(n)),months:x(nf(r)),weeks:x(nf(i)),days:x(nf(s)),hours:x(nf(o)),minutes:x(nf(u)),seconds:x(nf(a),a==="-0"),milliseconds:x(n7(l),f)}]}const u4e={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function h7(t,e,n,r,i,s,o){const u={year:e.length===2?s7(n0(e)):n0(e),month:uH.indexOf(n)+1,day:n0(r),hour:n0(i),minute:n0(s)};return o&&(u.second=n0(o)),t&&(u.weekday=t.length>3?lH.indexOf(t)+1:cH.indexOf(t)+1),u}const a4e=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function l4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=h7(e,i,r,n,s,o,u);let h;return a?h=u4e[a]:l?h=0:h=dS(c,f),[x,new Pr(h)]}function c4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const f4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,x4e=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,d4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function RH(t){const[,e,n,r,i,s,o,u]=t;return[h7(e,i,r,n,s,o,u),Pr.utcInstance]}function h4e(t){const[,e,n,r,i,s,o,u]=t;return[h7(e,u,n,r,i,s,o),Pr.utcInstance]}const p4e=qd(XSe,d7),g4e=qd(JSe,d7),m4e=qd(KSe,d7),y4e=qd(bH),OH=zd(r4e,Gd,fg,xg),E4e=zd(ZSe,Gd,fg,xg),A4e=zd(e4e,Gd,fg,xg),v4e=zd(Gd,fg,xg);function S4e(t){return Hd(t,[p4e,OH],[g4e,E4e],[m4e,A4e],[y4e,v4e])}function _4e(t){return Hd(c4e(t),[a4e,l4e])}function C4e(t){return Hd(t,[f4e,RH],[x4e,RH],[d4e,h4e])}function b4e(t){return Hd(t,[s4e,o4e])}const T4e=zd(Gd);function R4e(t){return Hd(t,[i4e,T4e])}const O4e=qd(t4e,n4e),D4e=qd(TH),N4e=zd(Gd,fg,xg);function w4e(t){return Hd(t,[O4e,OH],[D4e,N4e])}const F4e="Invalid Duration",DH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},L4e={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...DH},Ls=146097/400,Wd=146097/4800,I4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:Wd/7,days:Wd,hours:Wd*24,minutes:Wd*24*60,seconds:Wd*24*60*60,milliseconds:Wd*24*60*60*1e3},...DH},rf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],$4e=rf.slice(0).reverse();function sf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new Ct(r)}function B4e(t){return t<0?Math.floor(t):Math.ceil(t)}function NH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?B4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function k4e(t,e){$4e.reduce((n,r)=>_t(e[r])?n:(n&&NH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?I4e:L4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:hS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(tf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=b4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=R4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new dSe(r);return new Ct({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new Bz(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Fi.create(this.loc,r).formatDurationFromString(this,e):F4e}toHuman(e={}){const n=rf.map(r=>{const i=this.values[r];return _t(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=r7(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e),r={};for(const i of rf)(jd(n.values,i)||jd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return sf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=sH(e(this.values[r],r));return sf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...hS(e,Ct.normalizeUnit)};return sf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),sf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return k4e(this.matrix,e),sf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of rf)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;tf(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)rf.indexOf(l)>rf.indexOf(o)&&NH(this.matrix,i,l,n,o)}else tf(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return sf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return sf(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of rf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const dg="Invalid Interval";function M4e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Interval is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new xSe(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=mg(e),i=mg(n),s=M4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=mg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=mg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ut.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ut.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(mg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:dg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:dg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:dg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:dg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:dg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let hg=class{static hasDST(e=Fn.defaultZone){const n=ut.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return yu.isValidZone(e)}static normalizeZone(e){return r0(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:nH()}}};function wH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function P4e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=wH(u,a);return(l-l%7)/7}],["days",wH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function j4e(t,e,n,r){let[i,s,o,u]=P4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=Ct.fromObject(s,r);return l.length>0?Ct.fromMillis(a,r).shiftTo(...l).plus(c):c}const p7={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},FH={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},U4e=p7.hanidec.replace(/[\[|\]]/g,"").split("");function q4e(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(p7.hanidec)!==-1)e+=U4e.indexOf(t[n]);else for(const i in FH){const[s,o]=FH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function yo({numberingSystem:t},e=""){return new RegExp(`${p7[t||"latn"]}${e}`)}const z4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(q4e(n))}}const LH="[ ]",IH=new RegExp(LH,"g");function H4e(t){return t.replace(/\./g,"\\.?").replace(IH,LH)}function $H(t){return t.replace(/\./g,"").replace(IH," ").toLowerCase()}function Eo(t,e){return t===null?null:{regex:RegExp(t.map(H4e).join("|")),deser:([n])=>t.findIndex(r=>$H(n)===$H(r))+e}}function BH(t,e){return{regex:t,deser:([,n,r])=>dS(n,r),groups:e}}function g7(t){return{regex:t,deser:([e])=>e}}function Q4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function G4e(t,e){const n=yo(e),r=yo(e,"{2}"),i=yo(e,"{3}"),s=yo(e,"{4}"),o=yo(e,"{6}"),u=yo(e,"{1,2}"),a=yo(e,"{1,3}"),l=yo(e,"{1,6}"),c=yo(e,"{1,9}"),f=yo(e,"{2,4}"),x=yo(e,"{4,6}"),h=g=>({regex:RegExp(Q4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Eo(e.eras("short",!1),0);case"GG":return Eo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,s7);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Eo(e.months("short",!0,!1),1);case"MMMM":return Eo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Eo(e.months("short",!1,!1),1);case"LLLL":return Eo(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return g7(c);case"uu":return g7(u);case"uuu":return $t(n);case"a":return Eo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,s7);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Eo(e.weekdays("short",!1,!1),1);case"EEEE":return Eo(e.weekdays("long",!1,!1),1);case"ccc":return Eo(e.weekdays("short",!0,!1),1);case"cccc":return Eo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return BH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return BH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return g7(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:z4e};return m.token=t,m}const W4e={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function V4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=W4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Y4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function X4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(jd(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function J4e(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return _t(t.z)||(n=yu.create(t.z)),_t(t.Z)||(n||(n=new Pr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),_t(t.u)||(t.S=n7(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let m7=null;function K4e(){return m7||(m7=ut.fromMillis(1555555555555)),m7}function Z4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts(K4e()).map(o=>V4e(o,e,n));return s.includes(void 0)?t:s}function e_e(t,e){return Array.prototype.concat(...t.map(n=>Z4e(n,e)))}function kH(t,e,n){const r=e_e(Fi.parseFormat(n),t),i=r.map(o=>G4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Y4e(i),a=RegExp(o,"i"),[l,c]=X4e(e,a,u),[f,x,h]=c?J4e(c):[null,null,void 0];if(jd(c,"a")&&jd(c,"H"))throw new og("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function t_e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=kH(t,e,n);return[r,i,s,o]}const MH=[0,31,59,90,120,151,181,212,243,273,304,334],PH=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new mo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function jH(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function UH(t,e,n){return n+(ug(t)?PH:MH)[e-1]}function qH(t,e){const n=ug(t)?PH:MH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function y7(t){const{year:e,month:n,day:r}=t,i=UH(e,n,r),s=jH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=xS(u)):o>xS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...pS(t)}}function zH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=jH(e,1,4),s=ag(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=ag(u)):o>s?(u=e+1,o-=ag(e)):u=e;const{month:a,day:l}=qH(u,o);return{year:u,month:a,day:l,...pS(t)}}function E7(t){const{year:e,month:n,day:r}=t,i=UH(e,n,r);return{year:e,ordinal:i,...pS(t)}}function HH(t){const{year:e,ordinal:n}=t,{month:r,day:i}=qH(e,n);return{year:e,month:r,day:i,...pS(t)}}function n_e(t){const e=cS(t.weekYear),n=Da(t.weekNumber,1,xS(t.weekYear)),r=Da(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function r_e(t){const e=cS(t.year),n=Da(t.ordinal,1,ag(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function QH(t){const e=cS(t.year),n=Da(t.month,1,12),r=Da(t.day,1,fS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function GH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Da(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Da(n,0,59),u=Da(r,0,59),a=Da(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const A7="Invalid DateTime",WH=864e13;function AS(t){return new mo("unsupported zone",`the zone "${t.name}" is not supported`)}function v7(t){return t.weekData===null&&(t.weekData=y7(t.c)),t.weekData}function pg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ut({...n,...e,old:n})}function VH(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function YH(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function vS(t,e,n){return VH(i7(t),e,n)}function XH(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,fS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=i7(s);let[a,l]=VH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function gg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ut.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ut.invalid(new mo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function SS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function S7(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=wn(t.c.year,n?6:4),e?(r+="-",r+=wn(t.c.month),r+="-",r+=wn(t.c.day)):(r+=wn(t.c.month),r+=wn(t.c.day)),r}function JH(t,e,n,r,i,s){let o=wn(t.c.hour);return e?(o+=":",o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=wn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=wn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=wn(Math.trunc(-t.o/60)),o+=":",o+=wn(Math.trunc(-t.o%60))):(o+="+",o+=wn(Math.trunc(t.o/60)),o+=":",o+=wn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const KH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},i_e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},s_e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},ZH=["year","month","day","hour","minute","second","millisecond"],o_e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],u_e=["year","ordinal","hour","minute","second","millisecond"];function eQ(t){const e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Bz(t);return e}function tQ(t,e){const n=r0(e.zone,Fn.defaultZone),r=xn.fromObject(e),i=Fn.now();let s,o;if(_t(t.year))s=i;else{for(const l of ZH)_t(t[l])&&(t[l]=KH[l]);const u=QH(t)||GH(t);if(u)return ut.invalid(u);const a=n.offset(i);[s,o]=vS(t,a,n)}return new ut({ts:s,zone:n,loc:r,o})}function nQ(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=r7(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function rQ(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class ut{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new mo("invalid input"):null)||(n.isValid?null:AS(n));this.ts=_t(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=YH(this.ts,u),r=Number.isNaN(i.year)?new mo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ut({})}static local(){const[e,n]=rQ(arguments),[r,i,s,o,u,a,l]=n;return tQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=rQ(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Pr.utcInstance,tQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=mSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ut.invalid("invalid input");const i=r0(n.zone,Fn.defaultZone);return i.isValid?new ut({ts:r,zone:i,loc:xn.fromObject(n)}):ut.invalid(AS(i))}static fromMillis(e,n={}){if(tf(e))return e<-WH||e>WH?ut.invalid("Timestamp out of range"):new ut({ts:e,zone:r0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(tf(e))return new ut({ts:e*1e3,zone:r0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=r0(n.zone,Fn.defaultZone);if(!r.isValid)return ut.invalid(AS(r));const i=Fn.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=hS(e,eQ),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new og("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new og("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=YH(i,s);h?(p=o_e,m=i_e,g=y7(g)):u?(p=u_e,m=s_e,g=E7(g)):(p=ZH,m=KH);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?n_e(o):u?r_e(o):QH(o),A=E||GH(o);if(A)return ut.invalid(A);const v=h?zH(o):u?HH(o):o,[_,S]=vS(v,s,r),C=new ut({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ut.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=S4e(e);return gg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=_4e(e);return gg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=C4e(e);return gg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=t_e(o,e,n);return c?ut.invalid(c):gg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ut.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=w4e(e);return gg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new fSe(r);return new ut({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?v7(this).weekYear:NaN}get weekNumber(){return this.isValid?v7(this).weekNumber:NaN}get weekday(){return this.isValid?v7(this).weekday:NaN}get ordinal(){return this.isValid?E7(this.c).ordinal:NaN}get monthShort(){return this.isValid?hg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?hg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?hg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?hg.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return ug(this.year)}get daysInMonth(){return fS(this.year,this.month)}get daysInYear(){return this.isValid?ag(this.year):NaN}get weeksInWeekYear(){return this.isValid?xS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Pr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=r0(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=vS(o,s,e)}return pg(this,{ts:i,zone:e})}else return ut.invalid(AS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return pg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=hS(e,eQ),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new og("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new og("Can't mix ordinal dates with month/day");let l;r?l=zH({...y7(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(fS(l.year,l.month),l.day))):l=HH({...E7(this.c),...n});const[c,f]=vS(l,this.o,this.zone);return pg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return pg(this,XH(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return pg(this,XH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):A7}toLocaleString(e=t7,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):A7}toLocaleParts(e={}){return this.isValid?Fi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=S7(this,o);return u+="T",u+=JH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?S7(this,e==="extended"):null}toISOWeekDate(){return SS(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+JH(this,o==="extended",n,e,r,s):null}toRFC2822(){return SS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return SS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?S7(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),SS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():A7}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=ySe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=j4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ut.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ut.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),nQ(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?nQ(e.base||ut.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ut.isDateTime))throw new Fs("min requires all arguments be DateTimes");return rH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ut.isDateTime))throw new Fs("max requires all arguments be DateTimes");return rH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return kH(o,e,n)}static fromStringExplain(e,n,r={}){return ut.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return t7}static get DATE_MED(){return kz}static get DATE_MED_WITH_WEEKDAY(){return hSe}static get DATE_FULL(){return Mz}static get DATE_HUGE(){return Pz}static get TIME_SIMPLE(){return jz}static get TIME_WITH_SECONDS(){return Uz}static get TIME_WITH_SHORT_OFFSET(){return qz}static get TIME_WITH_LONG_OFFSET(){return zz}static get TIME_24_SIMPLE(){return Hz}static get TIME_24_WITH_SECONDS(){return Qz}static get TIME_24_WITH_SHORT_OFFSET(){return Gz}static get TIME_24_WITH_LONG_OFFSET(){return Wz}static get DATETIME_SHORT(){return Vz}static get DATETIME_SHORT_WITH_SECONDS(){return Yz}static get DATETIME_MED(){return Xz}static get DATETIME_MED_WITH_SECONDS(){return Jz}static get DATETIME_MED_WITH_WEEKDAY(){return pSe}static get DATETIME_FULL(){return Kz}static get DATETIME_FULL_WITH_SECONDS(){return Zz}static get DATETIME_HUGE(){return eH}static get DATETIME_HUGE_WITH_SECONDS(){return tH}}function mg(t){if(ut.isDateTime(t))return t;if(t&&t.valueOf&&tf(t.valueOf()))return ut.fromJSDate(t);if(t&&typeof t=="object")return ut.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const a_e="2.5.2";var l_e=wi.DateTime=ut;wi.Duration=Ct,wi.FixedOffsetZone=Pr,wi.IANAZone=yu,wi.Info=hg,wi.Interval=dn,wi.InvalidZone=pH,wi.Settings=Fn,wi.SystemZone=gS,wi.VERSION=a_e,wi.Zone=Ud,Object.defineProperty(tr,"__esModule",{value:!0}),tr.LiteralYear=tr.LiteralQuarter=tr.LiteralMonth=tr.LiteralWeek=tr.LiteralDay=tr.LiteralHour=tr.LiteralTimestamp=tr.TimeFormatError=void 0;const i0=wi,c_e=ce,f_e=Xl,iQ=Bd,_7=dt;class x_e extends Error{}tr.TimeFormatError=x_e;function of(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const sQ="yyyy",oQ=`${sQ}-LL`,$s=`${oQ}-dd`,uQ=`${$s} HH`,aQ=`${uQ}:mm`,C7=`${aQ}:ss`;class lQ extends _7.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class b7 extends lQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=of(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=i0.DateTime.fromFormat(e,C7);if(s.isValid)return new b7(r,n);if(s=i0.DateTime.fromFormat(e,aQ),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(C7);return new T7(r,n,"timestamp",o)}}}tr.LiteralTimestamp=b7;class T7 extends lQ{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,_7.getMorphicValue)(i,"timestamp"),a=(0,_7.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,c_e.isTemporalField)(o.dataType)){const u=o.dataType;return new f_e.Range(new iQ.ExprTime(u,i.value),new iQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class R7 extends T7{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,uQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(C7),new R7(n,r)}}tr.LiteralHour=R7;class yg extends T7{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class O7 extends yg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new O7(n,r)}}tr.LiteralDay=O7;class D7 extends yg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.slice(0,10),s=i0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new D7(n,r)}}}tr.LiteralWeek=D7;class N7 extends yg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,oQ);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new N7(n,r)}}}tr.LiteralMonth=N7;class w7 extends yg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=i0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new w7(n,r)}}}tr.LiteralQuarter=w7;class F7 extends yg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,sQ);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new F7(n,r)}}}tr.LiteralYear=F7;var _S={};Object.defineProperty(_S,"__esModule",{value:!0}),_S.PartialCompare=void 0;const d_e=dt;class h_e extends d_e.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}}_S.PartialCompare=h_e;var Vd={};Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.PickWhen=Vd.Pick=void 0;const Eu=ce,Yd=un,p_e=dt,g_e=We;function CS(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class m_e extends p_e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Eu.maxExpressionType)(o,(0,Eu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Eu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Yd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=CS(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=CS(s,l),Yd.FT.typeEq(s,l,!0)?(i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Eu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Eu.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Yd.FT.typeEq(a.when,Yd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Yd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=CS(i,a.pick),s=(0,Eu.maxExpressionType)(s,(0,Eu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Eu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Eu.maxExpressionType)(s,u.expressionType),o=(0,Eu.mergeEvalSpaces)(o,u.evalSpace),i=CS(i,u),Yd.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}Vd.Pick=m_e;class y_e extends g_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Vd.PickWhen=y_e;var Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.RecordLiteral=Xd.RecordElement=void 0;const cQ=Ts,E_e=dt,A_e=We;class v_e extends A_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Xd.RecordElement=v_e;class S_e extends E_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,cQ.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,cQ.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Xd.RecordLiteral=S_e;var bS={};Object.defineProperty(bS,"__esModule",{value:!0}),bS.Timeframe=void 0;const __e=ce,C_e=We;class b_e extends C_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,__e.isTimestampUnit)(n)?n:"second"}}bS.Timeframe=b_e;var TS={};Object.defineProperty(TS,"__esModule",{value:!0}),TS.TopBy=void 0;const T_e=ce,fQ=dt,R_e=We;class O_e extends R_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof fQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof fQ.ExpressionDef){const n=this.by.getExpression(e);return(0,T_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}TS.TopBy=O_e;var s0={};Object.defineProperty(s0,"__esModule",{value:!0}),s0.ImportStatement=s0.ImportSelect=s0.ImportSourceName=void 0;const L7=We;class D_e extends L7.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}s0.ImportSourceName=D_e;class N_e extends L7.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}s0.ImportSelect=N_e;class w_e extends L7.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}s0.ImportStatement=w_e;var Eg={};Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.ExtendBlock=void 0;const F_e=We,L_e=En;class I_e extends F_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=L_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Eg.ExtendBlock=I_e;var RS={};Object.defineProperty(RS,"__esModule",{value:!0}),RS.Argument=void 0;const $_e=We;class B_e extends $_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}RS.Argument=B_e;var OS={};Object.defineProperty(OS,"__esModule",{value:!0}),OS.HasParameter=void 0;const xQ=ce,k_e=We;class M_e extends k_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,xQ.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,xQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}OS.HasParameter=M_e;var DS={};Object.defineProperty(DS,"__esModule",{value:!0}),DS.AnonymousQuery=void 0;const P_e=We,j_e=Br;class U_e extends P_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=j_e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}DS.AnonymousQuery=U_e;var o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.View=void 0;const q_e=We;let z_e=class extends q_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};o0.View=z_e;var NS={};Object.defineProperty(NS,"__esModule",{value:!0}),NS.ViewArrow=void 0;const H_e=yr,Q_e=o0;class G_e extends Q_e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new H_e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}NS.ViewArrow=G_e;var wS={},Ag={};Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.refine=void 0;const I7=Ts,$7=Gl;function W_e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,I7.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,I7.isQuerySegment)(o)&&(0,I7.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,$7.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,$7.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map($7.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Ag.refine=W_e,Object.defineProperty(wS,"__esModule",{value:!0}),wS.ViewRefine=void 0;const V_e=Mr,Y_e=rs,X_e=Ag,J_e=o0;class K_e extends J_e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,Y_e.getFinalStruct)(this.refinement,e.structDef(),i):V_e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,X_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}wS.ViewRefine=K_e;var FS={};Object.defineProperty(FS,"__esModule",{value:!0}),FS.ReferenceView=void 0;const B7=ce,dQ=Mr,Z_e=rs,e5e=kr,t5e=Ag,n5e=o0;class r5e extends n5e.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:dQ.ErrorFactory.structDef,outputStruct:dQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof e5e.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,B7.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,B7.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,B7.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,Z_e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,t5e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}FS.ReferenceView=r5e;var LS={},vg={},IS={},Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.Index=void 0;const i5e=We,s5e=En;let o5e=class extends i5e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=s5e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Sg.Index=o5e;var _g={};Object.defineProperty(_g,"__esModule",{value:!0}),_g.SampleProperty=void 0;const u5e=We,hQ=En;class a5e extends u5e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=hQ.LegalRefinementStage.Tail,this.forceQueryClass=hQ.QueryClass.Index}sampling(){return this.sample}}_g.SampleProperty=a5e;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.IndexFieldSpace=void 0;const pQ=ce,k7=pt,l5e=kr,c5e=po,f5e=tg,x5e=yr;class d5e extends c5e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof k7.FieldReference?super.pushFields(n):n instanceof k7.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof l5e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof f5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof x5e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=k7.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,pQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,pQ.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}$S.IndexFieldSpace=d5e,Object.defineProperty(IS,"__esModule",{value:!0}),IS.IndexBuilder=void 0;const M7=ce,h5e=Mr,p5e=ho,g5e=Sg,m5e=Zl,y5e=_g,E5e=$S;class A5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new E5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof p5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof m5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof g5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof y5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,M7.isIndexSegment)(e)&&!(0,M7.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),h5e.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,M7.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}IS.IndexBuilder=A5e;var BS={},Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.GroupBy=void 0;const v5e=ns,gQ=En;class S5e extends v5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=gQ.LegalRefinementStage.Single,this.forceQueryClass=gQ.QueryClass.Grouping}}Cg.GroupBy=S5e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.ProjectFieldSpace=void 0;const P7=ce,_5e=po;class C5e extends _5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,P7.expressionIsAggregate)(e.expressionType)?!1:(0,P7.expressionInvolvesAggregate)(e.expressionType)&&(0,P7.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}kS.ProjectFieldSpace=C5e;var u0={},uf={};Object.defineProperty(uf,"__esModule",{value:!0}),uf.Ordering=uf.OrderBy=void 0;const b5e=ce,mQ=e0,yQ=We,T5e=En;class R5e extends yQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof mQ.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof mQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,b5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}uf.OrderBy=R5e;class O5e extends yQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=T5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}uf.Ordering=O5e;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.Top=void 0;const EQ=ce,D5e=e0,N5e=We,w5e=En;let F5e=class extends N5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=w5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof D5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,EQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,EQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};bg.Top=F5e,Object.defineProperty(u0,"__esModule",{value:!0}),u0.ReduceBuilder=u0.QuerySegmentBuilder=void 0;const AQ=ce,L5e=Mr,I5e=ho,$5e=Zl,vQ=uf,SQ=bg,B5e=po,k5e=ns;class _Q{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof k5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof I5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof SQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof $5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof vQ.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof SQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof vQ.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}u0.QuerySegmentBuilder=_Q;class M5e extends _Q{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new B5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,AQ.isReduceSegment)(e)||(0,AQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),L5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}u0.ReduceBuilder=M5e,Object.defineProperty(BS,"__esModule",{value:!0}),BS.ProjectBuilder=void 0;const CQ=ce,P5e=Mr,j5e=Cg,U5e=kS,q5e=u0;class z5e extends q5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new U5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof j5e.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,CQ.isProjectSegment)(e)||(0,CQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),P5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}BS.ProjectBuilder=z5e;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.PartialBuilder=void 0;const H5e=Ts,Q5e=u0;class G5e extends Q5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,H5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}MS.PartialBuilder=G5e,Object.defineProperty(vg,"__esModule",{value:!0}),vg.QOpDesc=void 0;const W5e=IS,V5e=BS,Y5e=u0,X5e=We,J5e=rs,K5e=yr,af=En,Z5e=MS;class eCe extends X5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=af.QueryClass.Grouping:this.refineThis.type==="project"?n=af.QueryClass.Project:this.refineThis.type==="index"&&(n=af.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=af.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case af.QueryClass.Grouping:return new Y5e.ReduceBuilder(e,this.refineThis,n,r);case af.QueryClass.Project:return new V5e.ProjectBuilder(e,this.refineThis,n,r);case af.QueryClass.Index:return new W5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new Z5e.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new K5e.StaticSourceSpace((0,J5e.opOutputStruct)(this,e.structDef(),i))}}}vg.QOpDesc=eCe,Object.defineProperty(LS,"__esModule",{value:!0}),LS.QOpDescView=void 0;const tCe=ce,nCe=yr,bQ=vg,rCe=rs,j7=En,iCe=o0;class sCe extends iCe.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,tCe.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new bQ.QOpDesc([]),o=new bQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case j7.LegalRefinementStage.Head:s.push(u);break;case j7.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case j7.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,rCe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new nCe.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}LS.QOpDescView=sCe;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const TQ=ce,oCe=un,uCe=$d,aCe=We,lf=Mn,lCe=Br,cCe=kr;class a0 extends aCe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=lCe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new U7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,TQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,uCe.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof U7&&e.foundCircle)&&r.dataType!=="error"){const u=oCe.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new RQ(e,this))}}hn.AtomicFieldDeclaration=a0;class fCe extends a0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=fCe;class xCe extends a0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=xCe;class dCe extends a0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=dCe;class hCe extends a0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=hCe;class pCe extends a0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=pCe;class gCe extends a0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=gCe;class mCe extends a0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=mCe;class U7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}hn.DefSpace=U7;class RQ extends cCe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,TQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=RQ;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.Aggregate=void 0;const yCe=ns,OQ=En;let ECe=class extends yCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=OQ.LegalRefinementStage.Single,this.forceQueryClass=OQ.QueryClass.Grouping}};PS.Aggregate=ECe;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.Calculate=void 0;const ACe=ns,vCe=En;class SCe extends ACe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=vCe.LegalRefinementStage.Single}}jS.Calculate=SCe;var Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.Dimensions=void 0;const _Ce=Wl;class CCe extends _Ce.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Tg.Dimensions=CCe;var Rg={};Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.Measures=void 0;const bCe=Wl;class TCe extends bCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Rg.Measures=TCe;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.Nests=void 0;const RCe=ns,DQ=En;class OCe extends RCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=DQ.LegalRefinementStage.Single,this.forceQueryClass=DQ.QueryClass.Grouping}}US.Nests=OCe;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.ProjectStatement=void 0;const DCe=ns,NQ=En;class NCe extends DCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=NQ.QueryClass.Project,this.queryRefinementStage=NQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}qS.ProjectStatement=NCe;var l0={},Na={};Object.defineProperty(Na,"__esModule",{value:!0}),Na.findReferences=Na.deprecatedParseTableURI=Na.constructTableKey=void 0;const wCe=Dl,q7=sn;function z7(t){const e=(0,q7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,q7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class FCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=wQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,q7.getId)(e.connectionId()),r=z7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=z7(e.tableURI()),{connectionName:r,tablePath:i}=FQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=z7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function wQ(t,e){return t===void 0?e:`${t}:${e}`}Na.constructTableKey=wQ;function FQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Na.deprecatedParseTableURI=FQ;function LCe(t,e,n){const r=new FCe(t,e),i=r;return wCe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Na.findReferences=LCe,Object.defineProperty(l0,"__esModule",{value:!0}),l0.TableFunctionSource=l0.TableMethodSource=l0.TableSource=void 0;const LQ=Na,ICe=xo,IQ=Mr;class H7 extends ICe.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return IQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,LQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),IQ.ErrorFactory.structDef}}l0.TableSource=H7;class $Ce extends H7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}l0.TableMethodSource=$Ce;class BCe extends H7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,LQ.deprecatedParseTableURI)(this.tableURI)}}l0.TableFunctionSource=BCe;var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.SQLString=void 0;const kCe=We,$Q=gu;class MCe extends kCe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(PCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof $Q.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}zS.SQLString=MCe;function PCe(t){return t instanceof $Q.SourceQueryElement}var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.SourceDesc=void 0;const jCe=We;class UCe extends jCe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}HS.SourceDesc=UCe;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.isSourceProperty=void 0;const qCe=ho,zCe=Wl,HCe=Od,QCe=Yl,GCe=Dd,WCe=Nd,VCe=wd,YCe=Vl,XCe=Di;function JCe(t){return t instanceof qCe.Filter||t instanceof XCe.JoinStatement||t instanceof zCe.DeclareFields||t instanceof HCe.FieldListEdit||t instanceof QCe.Renames||t instanceof GCe.PrimaryKey||t instanceof YCe.ObjectAnnotation||t instanceof WCe.Views||t instanceof VCe.TimezoneStatement}QS.isSourceProperty=JCe;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.isFieldCollectionMember=void 0;const KCe=hn,BQ=pt;function ZCe(t){return t instanceof BQ.FieldReference||t instanceof BQ.WildcardFieldReference||t instanceof KCe.AtomicFieldDeclaration}GS.isFieldCollectionMember=ZCe;var WS={};Object.defineProperty(WS,"__esModule",{value:!0}),WS.isQueryElement=void 0;const ebe=Fd,tbe=Ld,nbe=Y1,rbe=X1;function ibe(t){return t instanceof ebe.QueryArrow||t instanceof tbe.QueryRefine||t instanceof nbe.QueryReference||t instanceof rbe.QueryRaw}WS.isQueryElement=ibe;var kQ={};Object.defineProperty(kQ,"__esModule",{value:!0});var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.isQueryProperty=void 0;function sbe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}VS.isQueryProperty=sbe;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.isQueryExtendProperty=void 0;const obe=Tg,ube=Di,abe=Rg;function lbe(t){return t instanceof obe.Dimensions||t instanceof abe.Measures||t instanceof ube.JoinStatement}YS.isQueryExtendProperty=lbe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.isFieldPropStatement=void 0;const cbe=Jl,fbe=ho,xbe=Zl,dbe=Pd;function hbe(t){return t instanceof fbe.Filter||t instanceof xbe.Limit||t instanceof dbe.PartitionBy||t instanceof cbe.FunctionOrdering}XS.isFieldPropStatement=hbe,function(t){var e=D&&D.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=D&&D.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(M1,t),n(_d,t),n(Cd,t),n(xo,t),n(U1,t),n(gu,t),n(vv,t),n(Sv,t),n(Tv,t),n(Q1,t),n(Dv,t),n(Od,t),n(Dd,t),n(Yl,t),n(Nd,t),n(wd,t),n(Nv,t),n(kd,t),n(Fv,t),n(Jl,t),n(Lv,t),n(Oa,t),n(Iv,t),n(Md,t),n($v,t),n(Bv,t),n(kv,t),n(K1,t),n(Mv,t),n(Pv,t),n(Uv,t),n(rg,t),n(eg,t),n(Xc,t),n(qv,t),n(zv,t),n(Qv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(Xv,t),n(Jv,t),n(Kv,t),n(Zv,t),n(eS,t),n(tS,t),n(nS,t),n(rS,t),n(iS,t),n(uS,t),n(tr,t),n(_S,t),n(Pd,t),n(Vd,t),n(Xd,t),n(Xl,t),n(bS,t),n(TS,t),n(ig,t),n(s0,t),n(Eg,t),n(RS,t),n(OS,t),n(DS,t),n(Ld,t),n(Fd,t),n(o0,t),n(NS,t),n(wS,t),n(FS,t),n(LS,t),n(hn,t),n(pt,t),n(PS,t),n(jS,t),n(Wl,t),n(Tg,t),n(Eg,t),n(ho,t),n(Cg,t),n(Sg,t),n(Di,t),n(P1,t),n(Zl,t),n(Rg,t),n(M1,t),n(US,t),n(uf,t),n(qS,t),n(vg,t),n(_g,t),n(bg,t),n(Id,t),n(Yc,t),n(J1,t),n(l0,t),n(zS,t),n(Vl,t),n(mu,t),n(HS,t),n(QS,t),n(dt,t),n(GS,t),n(e0,t),n(We,t),n(WS,t),n(kQ,t),n(VS,t),n(YS,t),n(XS,t)}(fv);var JS={},Jd={};Object.defineProperty(Jd,"__esModule",{value:!0}),Jd.ConstantExpression=Jd.ConstantFieldSpace=void 0;const pbe=dt;class MQ{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Jd.ConstantFieldSpace=MQ;class gbe extends pbe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new MQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Jd.ConstantExpression=gbe;var mbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),ybe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ebe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&mbe(e,t,n);return ybe(e,t),e};Object.defineProperty(JS,"__esModule",{value:!0}),JS.MalloyToAST=void 0;const PQ=lA,Abe=U2,ie=Ebe(fv),Q7=xv,vbe=Yn,Sbe=fv,Pn=sn,G7=ce,_be=Vo,Cbe=Jd;class jQ extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class W7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const bbe=["##! m4warnings=error"];class Tbe extends Abe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of bbe){const s=_be.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,Q7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r,i){this.msgLog.log((0,Q7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,Q7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof W7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,Pn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,Pn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new vbe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Pn.getPlainString)(e);for(const i of r)i instanceof PQ.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,Pn.getStringParts)(e))r instanceof PQ.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new Cbe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,Pn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,Pn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Pn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,G7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,Pn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,Pn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,Pn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Pn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Pn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,Pn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ie.isComparison(n))return new ie.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,G7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Pn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,G7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Pn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,Pn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,Pn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new W7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new W7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new jQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof Sbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new jQ}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}}JS.MalloyToAST=Tbe;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.Zone=void 0;class Rbe{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}KS.Zone=Rbe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.walkForDocumentSymbols=void 0;const Obe=Dl,Dbe=sn;class Nbe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,Dbe.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function wbe(t,e,n){const r=new Nbe(t,e,[],[]),i=r;return Obe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}ZS.walkForDocumentSymbols=wbe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.walkForDocumentCompletions=void 0;const Fbe=Dl,Lbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],Ibe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],$be=["source","explore","query","sql"];class Bbe{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of Lbe)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of Ibe)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of $be)this.completions.push({type:"model_property",text:`${r}: `})}}}function kbe(t,e,n){const r=new Bbe(t,[],n),i=r;return Fbe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}e4.walkForDocumentCompletions=kbe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.walkForDocumentHelpContext=void 0;const Mbe=e6;class Pbe extends Mbe.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function jbe(t,e){return new Pbe(e).visit(t)}t4.walkForDocumentHelpContext=jbe;var n4={},Og={};Object.defineProperty(Og,"__esModule",{value:!0}),Og.locationContainsPosition=void 0;function Ube(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}Og.locationContainsPosition=Ube,Object.defineProperty(n4,"__esModule",{value:!0}),n4.ReferenceList=void 0;const qbe=Og;class zbe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,qbe.locationContainsPosition)(r.location,e))return r}}n4.ReferenceList=zbe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.isNeedResponse=void 0;function Hbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}r4.isNeedResponse=Hbe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.walkForModelAnnotation=void 0;const Qbe=Dl;class Gbe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function Wbe(t,e,n){const r=new Gbe(t,e,n),i=r;return Qbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}i4.walkForModelAnnotation=Wbe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.walkForTablePath=void 0;const UQ=sn,Vbe=Dl;class Ybe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,UQ.getId)(e.connectionId()),[r,i]=(0,UQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Xbe(t,e,n){const r=new Ybe(t,e),i=r;return Vbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}s4.walkForTablePath=Xbe;var Jbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Kbe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Zbe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Jbe(e,t,n);return Kbe(e,t),e};Object.defineProperty(lu,"__esModule",{value:!0}),lu.MalloyParserErrorHandler=lu.MalloyTranslator=lu.MalloyChildTranslator=lu.MalloyTranslation=void 0;const qQ=lA,eTe=ce,tTe=bA,nTe=F,zQ=Zbe(fv),rTe=JS,V7=xv,iTe=Na,Y7=KS,sTe=ZS,oTe=e4,uTe=t4,aTe=n4,o4=r4,lTe=Og,HQ=Vo,cTe=i4,fTe=s4;class xTe extends tTe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class dTe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1322
1322
|
`:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logError("parse-exception",{message:s.message}),i=void 0}return e.root.logger.hasErrors()?this.response={parse:i,...e.fatalResponse()}:this.response={parse:i},this.response}getSourceInfo(e){const n=/\r?\n/,r={at:[],lines:[],length:e.length};let i=e,s=0;for(;i!=="";){const o=i.match(n);if(o&&o.index!==void 0){r.lines.push(i.slice(0,o.index));const u=o.index+o[0].length;r.at.push({begin:s,end:s+u}),s+=u,i=i.slice(u)}else{r.lines.push(i),r.at.push({begin:s,end:s+i.length});break}}return r}runParser(e,n){const r=qQ.CharStreams.fromString(e),i=new xTe(r),s=new qQ.CommonTokenStream(i),o=new nTe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new GQ(n,n.root.logger));const u=o[n.grammarRule];if(!u)throw new Error(`No such parse rule as ${n.grammarRule}`);return{root:u.call(o),tokenStream:s,sourceStream:r,sourceURL:n.sourceURL,importBaseURL:n.importBaseURL||n.sourceURL,rangeFromContext:a=>n.rangeFromContext(a),malloyVersion:"4.0.0"}}}class hTe{constructor(e){this.parseStep=e,this.parseReferences=void 0}step(e){const n=this.parseStep.step(e);if(n.parse===void 0)return n;if(!this.parseReferences){this.parseReferences=(0,iTe.findReferences)(e,n.parse.tokenStream,n.parse.root);for(const o in this.parseReferences.tables)e.root.schemaZone.reference(o,{url:e.sourceURL,range:this.parseReferences.tables[o].firstReference});for(const o in this.parseReferences.urls){const u=this.parseReferences.urls[o];try{const a=decodeURI(new URL(o,e.importBaseURL||e.sourceURL).toString());e.addChild(a),e.imports.push({importURL:a,location:{url:e.sourceURL,range:u}}),e.root.importZone.reference(a,{url:e.sourceURL,range:u})}catch{e.root.logError("invalid-import-url",`Malformed URL '${o}'"`,{at:{url:e.sourceURL,range:u}})}}}if(e.root.logger.hasErrors())return null;let r={};const i=e.root.schemaZone.getUndefined();if(i){const o={};for(const u of i){const a=this.parseReferences.tables[u];o[u]={connectionName:a.connectionName,tablePath:a.tablePath}}r={tables:o}}const s=e.root.importZone.getUndefined();if(s&&(r={...r,urls:s}),(0,o4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,o4.isNeedResponse)(u))return u}return null}}class pTe{constructor(e){this.importStep=e,this.walked=!1}step(e){if(this.response)return this.response;const n=this.importStep.step(e);if(n)return n;const r=e.parseStep.response;if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;const i=r==null?void 0:r.parse;if(!i)throw new Error("TRANSLATOR INTERNAL ERROR: Translator parse response had no errors, but also no parser");const s=new rTe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof zQ.Unimplemented&&u.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node");this.walked=!0}if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;for(const u of e.childTranslators.values()){const a=u.astStep.step(u);if((0,o4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class gTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,sTe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class mTe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i=[];if(n!==void 0)try{i=(0,oTe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class yTe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i;if(n!==void 0)try{i=(0,uTe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class ETe{constructor(e){this.parseStep=e}step(e,n){if(!this.response){const r=this.parseStep.step(e);if(!r.parse||r.final)return r;{const i=(0,cTe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class ATe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,fTe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class vTe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=HQ.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,o4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof zQ.Document){const i=r.ast;for(i.initModelDef(n);;){const s=i.compile();if(s.needs)return s.needs;e.modelDef=s.modelDef,e.queryList=s.queryList,e.sqlBlocks=s.sqlBlocks;break}}else e.root.logError("parsed-non-malloy-document",{url:e.sourceURL},{at:e.defaultLocation()});return e.root.logger.hasErrors()?this.response={fromSources:e.getDependencies(),...e.fatalResponse()}:this.response={translated:{modelDef:e.modelDef,queryList:e.queryList,sqlBlocks:e.sqlBlocks},fromSources:e.getDependencies(),...e.problemResponse(),final:!0},this.response}}class X7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new HQ.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new dTe,this.modelAnnotationStep=new ETe(this.parseStep),this.metadataStep=new gTe(this.parseStep),this.completionsStep=new mTe(this.parseStep),this.helpContextStep=new yTe(this.parseStep),this.importsAndTablesStep=new hTe(this.parseStep),this.astStep=new pTe(this.importsAndTablesStep),this.tablePathInfoStep=new ATe(this.parseStep),this.translateStep=new vTe(this.astStep),this.references=new aTe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new QQ(e,this.root))}getDependencies(){const e=[this.sourceURL];for(const[n,r]of this.childTranslators)e.push(...r.getDependencies());return e}addReference(e){this.references.add(e)}referenceAt(e){return this.references.find(e)}fatalResponse(){return{final:!0,...this.problemResponse()}}problemResponse(){return{problems:this.problems()}}problems(){return[...this.root.logger.getLog()]}getLineMap(e){var n,r;if(e===this.sourceURL)return(n=this.parseStep.sourceInfo)===null||n===void 0?void 0:n.lines;const i=this.childTranslators.get(e);if(i)return(r=i.parseStep.sourceInfo)===null||r===void 0?void 0:r.lines}codeAtLocation(e){const n=this.getLineMap(e.url)||[];if(e.range.start.line===e.range.end.line)return n[e.range.start.line].slice(e.range.start.character,e.range.end.character);let r="";r+=n[e.range.start.line].slice(e.range.start.character);for(let i=e.range.start.line+1;i<e.range.end.line;i++)r+=n[i];return r+=n[e.range.end.line].slice(0,e.range.end.character),r}prettyErrors(){let e="",n="";for(const r of this.root.logger.getLog()){let i=r.message,s=this.sourceURL;if(r.at){s=r.at.url;const o=r.at.range.start.line,u=r.at.range.start.character,a=this.getLineMap(r.at.url);if(a){const l=a[o];i=`line ${o+1}: ${r.message}
|
|
1323
1323
|
| ${l}`,u>0&&(i=i+`
|
|
1324
1324
|
| ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
|