@univerjs-pro/engine-formula 0.22.1 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/facade.js +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/es/facade.js +1 -1
- package/lib/es/index.js +1 -1
- package/lib/facade.js +1 -1
- package/lib/index.js +1 -1
- package/lib/types/engine/dependency-engine/cell-codec.d.ts +39 -0
- package/lib/types/engine/dependency-engine/dependency-engine.d.ts +341 -0
- package/lib/types/engine/dependency-engine/formula-cell-index.d.ts +23 -0
- package/lib/types/engine/dependency-engine/helpers.d.ts +32 -0
- package/lib/types/engine/dependency-engine/node-helpers.d.ts +7 -0
- package/lib/types/engine/dependency-engine/point-subscription-index.d.ts +24 -0
- package/lib/types/engine/dependency-engine/range-index.d.ts +66 -0
- package/lib/types/engine/dependency-engine/types.d.ts +220 -0
- package/lib/types/engine/dependency-engine.d.ts +8 -0
- package/lib/types/engine/formula-dependency.d.ts +85 -23
- package/lib/types/engine/shared-formula-group-analyzer.d.ts +45 -0
- package/lib/types/index.d.ts +0 -1
- package/lib/types/plugin.d.ts +0 -2
- package/lib/types/services/calculate-formula.service.d.ts +18 -1
- package/lib/types/services/dependency-manager.service.d.ts +39 -14
- package/lib/umd/facade.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +5 -5
- package/lib/types/engine/lexer-tree-builder.d.ts +0 -25
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x569e68=_0x10c5;(function(_0x3a8e13,_0x57d6a9){const _0x938461=_0x10c5,_0x1d3b07=_0x3a8e13();while(!![]){try{const _0x17a729=parseInt(_0x938461(0x1c6))/0x1*(parseInt(_0x938461(0x269))/0x2)+parseInt(_0x938461(0x21a))/0x3+parseInt(_0x938461(0x254))/0x4+-parseInt(_0x938461(0x1eb))/0x5*(-parseInt(_0x938461(0x1d3))/0x6)+parseInt(_0x938461(0x280))/0x7+-parseInt(_0x938461(0x238))/0x8+-parseInt(_0x938461(0x21f))/0x9;if(_0x17a729===_0x57d6a9)break;else _0x1d3b07['push'](_0x1d3b07['shift']());}catch(_0x1ff5a5){_0x1d3b07['push'](_0x1d3b07['shift']());}}}(_0x13fe,0xc880f));import{CalculateFormulaService,DEFAULT_INTERVAL_COUNT,DEFAULT_TOKEN_LAMBDA_FUNCTION_NAME,DEFAULT_TOKEN_LET_FUNCTION_NAME,DEFAULT_TOKEN_TYPE_LAMBDA_PARAMETER,DEFAULT_TOKEN_TYPE_PARAMETER,DEFAULT_TOKEN_TYPE_ROOT,DependencyManagerBaseService,DependencyManagerService,ENGINE_FORMULA_PLUGIN_CONFIG_KEY,ErrorType,FormulaDependencyGenerator,FormulaDependencyTree,FormulaDependencyTreeType,FormulaDependencyTreeVirtual,FormulaExecuteStageType,ICalculateFormulaService,IDependencyManagerService,IFormulaDependencyGenerator,LexerNode,LexerTreeBuilder,NEW_EXCEL_FUNCTIONS,OPERATOR_TOKEN_SET,SUFFIX_TOKEN_SET,UniverFormulaEnginePlugin,generateAstNode,generateRandomDependencyTreeId,isReferenceString,matchToken,prefixToken,splitTableStructuredRef}from'@univerjs/engine-formula';import{LS_CONFIG_KEY,UniverLicensePlugin,getLicenseInfo,getSheetFeatureLimit,isFeatureAuthorizedWithinTime}from'@univerjs-pro/license';import{DependentOn,ObjectMatrix,RTree,requestImmediateMacroTask}from'@univerjs/core';export*from'@univerjs/engine-formula';function _typeof(_0x2921a9){'@babel/helpers - typeof';const _0x224964=_0x10c5;return _typeof=_0x224964(0x283)==typeof Symbol&&_0x224964(0x24b)==typeof Symbol[_0x224964(0x25a)]?function(_0x3aafa8){return typeof _0x3aafa8;}:function(_0x30e944){const _0x17adcd=_0x224964;return _0x30e944&&_0x17adcd(0x283)==typeof Symbol&&_0x30e944[_0x17adcd(0x23c)]===Symbol&&_0x30e944!==Symbol[_0x17adcd(0x249)]?_0x17adcd(0x24b):typeof _0x30e944;},_typeof(_0x2921a9);}function toPrimitive(_0x41bb7c,_0x43bc90){const _0x91be2b=_0x10c5;if(_0x91be2b(0x1c3)!=_typeof(_0x41bb7c)||!_0x41bb7c)return _0x41bb7c;var _0x345095=_0x41bb7c[Symbol[_0x91be2b(0x281)]];if(void 0x0!==_0x345095){var _0x579cd7=_0x345095[_0x91be2b(0x259)](_0x41bb7c,_0x43bc90||_0x91be2b(0x1af));if(_0x91be2b(0x1c3)!=_typeof(_0x579cd7))return _0x579cd7;throw new TypeError(_0x91be2b(0x1ec));}return(_0x91be2b(0x278)===_0x43bc90?String:Number)(_0x41bb7c);}function _0x13fe(){const _0xc7fbf9=['_dependencyManagerService','closeKdTree','removeFormulaDependencyByDefinedName','removeOtherFormulaDependency','_isCyclicUtilMap','has','_getDependencyTreeChildrenIds','setDependencyTreeModelData','size','_removeDependencyRTreeCacheById','FEATURE_FORMULA','_generateTreeList','_createVirtualFDtree','clear','getOwnPropertyDescriptor','generate','_initLicenseValid','dirtyRanges','12361184BWHuXi','getFormulaDependency','getUnitData','next','constructor','CURRENTLY_CALCULATING','openKdTree','intervalCount','getOtherFormulaDependency','pop','_checkAddBracketForMinus','_dependencyRTreeCache','decorate','_getUpdateTreeListAndMakeDependency','MINUS','endRow','_xlpm.','prototype','column','symbol','_executionCompleteListener$','_dependencyTreeCache','setTotalFormulasToCalculate','_config','setCompletedArrayFormulasCount','toUpperCase','max','Lambda\x20parameter\x20name\x20\x22','4051548dpFrJh','_handleChildrenForExprTree','clearFormulaDependency','_dependencyRTreeCacheForAddressFunction','unitId','call','iterator','_handleTextNodeForExprTree','forEach','packageName','row','_createFDtree','_otherFormulaData','startColumn','getChildren','_otherFormulaManagerService','_astTreeBuilder','_removeAllTreeMap','setRuntimeFeatureRange','checkAsyncNode','trim','2021854YjqDAj','_handleNewFunctionChild','formulaId','_getTreeNode','_xlfn.','set','_getDependencyTreeParenIds','value','addOtherFormulaDependencyMainData','setRuntimeFeatureCellData','resolve','_getAllDependencyJson','columnCount','setRuntimeData','_featureFormulaData','string','isAdded','markedAsStopFunctionsExecuted','toRTreeItem','_definedNameMap','@univerjs-pro/engine-formula','Let\x20variable\x20name\x20\x22','_formulaDependencyGenerator','7299887lvKEIj','toPrimitive','length','function','notExecuteFormula','_startFormulaDependencyTreeModel','_executionInProgressListener$','_lambdaFunctionParameterSet','getFormulaData','_updateRangeFlatten','inRangeData','default','featureId','valid','_restDependencyTreeId','_checkColonNodeForExprTree','_initializeWithOverride','node','_checkIsCycleDependency','endsWith','executeAsync','addOtherFormulaDependency','formula','PLUS','defineProperty','isVirtual','add','sheetId','version','isSkip','addFormulaDependencyByDefinedName','object','_registerFormulas','_clearPrefix','1CCPkbP','setSkip','setFormulaExecuteStage','min','enableCycleDependency','slice','_clearFunctionString','children','getDirtyData','START_CALCULATION','startsWith','hasOtherFormulaDataMainData','keys','8307366jfAqxF','_resetPrefix','setTotalArrayFormulasToCalculate','_interpreter','COLON','forValue','Dependency\x20tree\x20not\x20found\x20for\x20treeId:','_calculateRunList','IDLE','_initializeGenerateTreeList','0.22.1','addFormulaDependency','searchDependency','_xlfnPrefix','getStartIndex','_generateExprTree','getAllRuntimeData','treeId','_formulaDependencyTreeModel','clearArrayObjectCache','_getFeatureFormulaTree','_handleLambdaForExprTree','subUnitId','isDirty','5rzLHWT','@@toPrimitive\x20must\x20return\x20a\x20primitive\x20value.','_xlpmPrefix','delete','_generateNewFunctionString','isForceCalculate','_runtimeService','refOffsetY','_getFirstCellOfRange','getValue','push','dispose','resetCalculationState','_currentConfigService','VALUE','markedAsSuccessfullyExecuted','type','getExcludedRange','getRuntimeState','treeBuilder','_getTableNameFromStructuredRef','reset','_removeDependencyRTreeCache','_formulaData','clearOtherFormulaDependency','bulkSearch','join','realDeleteValue','startIndex','\x22\x20is\x20duplicated.','_allTreeMap','setAdded','_hasNewExcelFunction','startRow','getToken','isCache','endColumn','get','setValue','from','_getCurNodeTypeForExprTree','rangeList','featureDirtyRanges','_convertDirtyRangesToUnitRange','_lexer','rowCount','clearFeatureFormulaDependency','3765537xAOsVV','_currentUnitId','getDirtyRanges','_traverse','_injector','30059856QloGsi','error','setCompletedFormulasCount','execute','values','refOffsetX','_otherFormulaDataMainData'];_0x13fe=function(){return _0xc7fbf9;};return _0x13fe();}function toPropertyKey(_0x31642a){const _0x3d9587=_0x10c5;var _0x5c98f7=toPrimitive(_0x31642a,_0x3d9587(0x278));return'symbol'==_typeof(_0x5c98f7)?_0x5c98f7:_0x5c98f7+'';}function _0x10c5(_0xc86615,_0x466e8a){_0xc86615=_0xc86615-0x1ac;const _0x13fe9e=_0x13fe();let _0x10c5bf=_0x13fe9e[_0xc86615];return _0x10c5bf;}function _defineProperty(_0x5c1ae9,_0x38401c,_0x3e56cb){const _0xaeddd0=_0x10c5;return(_0x38401c=toPropertyKey(_0x38401c))in _0x5c1ae9?Object[_0xaeddd0(0x1bc)](_0x5c1ae9,_0x38401c,{'value':_0x3e56cb,'enumerable':!0x0,'configurable':!0x0,'writable':!0x0}):_0x5c1ae9[_0x38401c]=_0x3e56cb,_0x5c1ae9;}var LexerTreeProBuilder=class extends LexerTreeBuilder{constructor(..._0x461084){const _0xca6d31=_0x10c5;super(..._0x461084),_defineProperty(this,_0xca6d31(0x20b),![]),_defineProperty(this,_0xca6d31(0x287),new Set()),_defineProperty(this,_0xca6d31(0x1ed),'_xlpm.'),_defineProperty(this,_0xca6d31(0x1e0),_0xca6d31(0x26d)),_defineProperty(this,_0xca6d31(0x21b),'');}[_0x569e68(0x1d4)](){const _0x374ad7=_0x569e68;this[_0x374ad7(0x1ed)]=_0x374ad7(0x248),this[_0x374ad7(0x1e0)]=_0x374ad7(0x26d);}[_0x569e68(0x1c5)](){const _0x26d041=_0x569e68;this[_0x26d041(0x1ed)]='',this[_0x26d041(0x1e0)]='';}['getNewFormulaWithPrefix'](_0x317e48,_0x244161){const _0x434aec=_0x569e68,_0x59e315=this[_0x434aec(0x1fe)](_0x317e48,![]);if(!_0x59e315||_0x59e315===ErrorType[_0x434aec(0x1f9)]||Array['isArray'](_0x59e315))return null;const _0x3de04c=[];this['_hasNewExcelFunction']=![],this[_0x434aec(0x1ef)](_0x59e315,_0x3de04c,_0x244161);if(this[_0x434aec(0x20b)])return'='+_0x3de04c[_0x434aec(0x205)]('');return null;}['_generateNewFunctionString'](_0x17e3da,_0x550b7d,_0x53d4f9){const _0x487a3f=_0x569e68,_0x516825=_0x17e3da['getToken'](),_0x28d5df=_0x516825[_0x487a3f(0x268)](),_0x4e7d85=_0x28d5df['toUpperCase'](),_0x100c08=this[_0x487a3f(0x1cc)](_0x4e7d85),_0x57b3c7=_0x53d4f9(_0x100c08);let _0x14f333=0x0;if(_0x516825===DEFAULT_TOKEN_TYPE_ROOT)_0x14f333=0x3;else{if(_0x516825===DEFAULT_TOKEN_TYPE_PARAMETER)_0x14f333=0x4;else{if(_0x516825===DEFAULT_TOKEN_TYPE_LAMBDA_PARAMETER)_0x14f333=0x5;else{if(NEW_EXCEL_FUNCTIONS['has'](_0x100c08))_0x550b7d[_0x487a3f(0x1f5)](''+this['_xlfnPrefix']+_0x28d5df),this[_0x487a3f(0x20b)]=!![];else{if(_0x4e7d85===DEFAULT_TOKEN_LAMBDA_FUNCTION_NAME)_0x550b7d[_0x487a3f(0x1f5)](''+this[_0x487a3f(0x1e0)]+_0x28d5df),this[_0x487a3f(0x20b)]=!![],_0x14f333=0x2;else{if(_0x4e7d85===DEFAULT_TOKEN_LET_FUNCTION_NAME)_0x550b7d[_0x487a3f(0x1f5)](''+this['_xlfnPrefix']+_0x28d5df),this['_hasNewExcelFunction']=!![],_0x14f333=0x1;else{if(_0x4e7d85===matchToken['COLON'])_0x14f333=0x8;else{if(SUFFIX_TOKEN_SET[_0x487a3f(0x22b)](_0x4e7d85))_0x14f333=0x7;else{if(_0x4e7d85===prefixToken[_0x487a3f(0x246)]){if(this[_0x487a3f(0x242)](_0x17e3da))_0x14f333=0x9;_0x550b7d[_0x487a3f(0x1f5)](_0x516825);}else _0x550b7d[_0x487a3f(0x1f5)](_0x516825),_0x14f333=0xa;}}}}}}}}if(_0x57b3c7){if(_0x14f333!==0x2&&_0x14f333!==0x1)_0x14f333=0x6;_0x550b7d['push']('(');}else{if(_0x14f333===0x9)_0x550b7d[_0x487a3f(0x1f5)]('(');}const _0x3e5581=_0x17e3da[_0x487a3f(0x262)](),_0x373e97=_0x3e5581[_0x487a3f(0x282)];if(_0x14f333===0x2){const _0x56f8bd=_0x3e5581[0x0];let _0x36e3c3=0x0;if(_0x56f8bd instanceof LexerNode){if(_0x56f8bd[_0x487a3f(0x20d)]()===DEFAULT_TOKEN_TYPE_LAMBDA_PARAMETER)_0x36e3c3=0x1;}for(let _0x4f59d=_0x36e3c3;_0x4f59d<_0x373e97-0x1;_0x4f59d++){const _0x52e9c0=_0x3e5581[_0x4f59d];if(_0x52e9c0 instanceof LexerNode){const _0x46bf7b=_0x52e9c0['getChildren']()[0x0];if(typeof _0x46bf7b==='string'){if(this[_0x487a3f(0x287)]['has'](_0x46bf7b))console['error'](_0x487a3f(0x253)+_0x46bf7b+_0x487a3f(0x208));this[_0x487a3f(0x287)][_0x487a3f(0x1be)](_0x46bf7b),_0x550b7d[_0x487a3f(0x1f5)](''+this[_0x487a3f(0x1ed)]+_0x46bf7b),this['_hasNewExcelFunction']=!![];}}_0x550b7d[_0x487a3f(0x1f5)](',');}this['_handleNewFunctionChild'](_0x3e5581[_0x373e97-0x1],_0x550b7d,_0x53d4f9);if(_0x36e3c3===0x1)_0x550b7d[_0x487a3f(0x1f5)](')'),_0x550b7d[_0x487a3f(0x1f5)]('('),this[_0x487a3f(0x1ef)](_0x56f8bd,_0x550b7d,_0x53d4f9),_0x550b7d[_0x487a3f(0x1f5)](')');else _0x550b7d[_0x487a3f(0x1f5)](')');return;}else{if(_0x14f333===0x1){for(let _0x3ebd7c=0x0;_0x3ebd7c<_0x373e97-0x1;_0x3ebd7c++){const _0x56f1c2=_0x3e5581[_0x3ebd7c];if(_0x56f1c2 instanceof LexerNode&&_0x3ebd7c%0x2===0x0){const _0x5c6337=_0x56f1c2[_0x487a3f(0x262)]()[0x0];if(typeof _0x5c6337===_0x487a3f(0x278)){if(this[_0x487a3f(0x287)][_0x487a3f(0x22b)](_0x5c6337))console[_0x487a3f(0x220)](_0x487a3f(0x27e)+_0x5c6337+_0x487a3f(0x208));this['_lambdaFunctionParameterSet'][_0x487a3f(0x1be)](_0x5c6337),_0x550b7d['push'](''+this['_xlpmPrefix']+_0x5c6337),this['_hasNewExcelFunction']=!![],_0x550b7d['push'](',');continue;}}this[_0x487a3f(0x26a)](_0x56f1c2,_0x550b7d,_0x53d4f9);if(_0x56f1c2 instanceof LexerNode){const _0x309807=_0x3e5581[_0x3ebd7c+0x1];if(_0x309807&&_0x309807 instanceof LexerNode)_0x550b7d[_0x487a3f(0x1f5)](',');}}this['_handleNewFunctionChild'](_0x3e5581[_0x373e97-0x1],_0x550b7d,_0x53d4f9),_0x550b7d['push'](')');return;}else{if(_0x14f333===0x8){const _0x1b1704=_0x3e5581[0x0],_0x5d2a24=_0x3e5581[0x1];this[_0x487a3f(0x26a)](_0x1b1704,_0x550b7d,_0x53d4f9),_0x550b7d[_0x487a3f(0x1f5)](_0x516825),this[_0x487a3f(0x26a)](_0x5d2a24,_0x550b7d,_0x53d4f9);return;}}}for(let _0x29d336=0x0;_0x29d336<_0x373e97;_0x29d336++){const _0x3ef65f=_0x3e5581[_0x29d336];this[_0x487a3f(0x26a)](_0x3ef65f,_0x550b7d,_0x53d4f9);if(_0x3ef65f instanceof LexerNode){const _0x31d2ac=_0x3e5581[_0x29d336+0x1];if(_0x31d2ac&&_0x31d2ac instanceof LexerNode)_0x550b7d['push'](',');}}if(_0x14f333===0x7)_0x550b7d['push'](_0x516825);if(_0x57b3c7)_0x550b7d['push'](')');else{if(_0x14f333===0x9)_0x550b7d[_0x487a3f(0x1f5)](')');}}['_handleNewFunctionChild'](_0x583987,_0x3c3103,_0x22974e){const _0x596e28=_0x569e68;if(_0x583987 instanceof LexerNode)this['_generateNewFunctionString'](_0x583987,_0x3c3103,_0x22974e);else{if(this[_0x596e28(0x287)]['has'](_0x583987))_0x3c3103[_0x596e28(0x1f5)](''+this[_0x596e28(0x1ed)]+_0x583987),this[_0x596e28(0x20b)]=!![];else _0x3c3103['push'](_0x583987);}}[_0x569e68(0x1cc)](_0x6697b){const _0x410ac7=_0x569e68;let _0x4dced0=_0x6697b[_0x410ac7(0x268)]();if(!_0x4dced0)return _0x4dced0;const _0x1c40e2=_0x4dced0[0x0];if(_0x1c40e2===prefixToken['AT']||_0x1c40e2===prefixToken[_0x410ac7(0x246)]||_0x1c40e2===prefixToken[_0x410ac7(0x1bb)])_0x4dced0=_0x4dced0[_0x410ac7(0x1cb)](0x1);if(!_0x4dced0)return _0x4dced0;const _0x3bc978=_0x4dced0[_0x4dced0[_0x410ac7(0x282)]-0x1];if(SUFFIX_TOKEN_SET[_0x410ac7(0x22b)](_0x3bc978))_0x4dced0=_0x4dced0[_0x410ac7(0x1cb)](0x0,-0x1);return _0x4dced0;}[_0x569e68(0x242)](_0x3df170){const _0x574d3d=_0x569e68,_0x3bfe7a=_0x3df170['getChildren']()[0x0];if(!_0x3bfe7a||!(_0x3bfe7a instanceof LexerNode)||_0x3df170['getChildren']()[_0x574d3d(0x282)]>0x1)return![];const _0xf9da8c=_0x3bfe7a[_0x574d3d(0x262)](),_0x247540=_0xf9da8c[_0x574d3d(0x282)];if(_0x247540===0x1)return![];for(let _0x138167=0x0;_0x138167<_0x247540;_0x138167++){const _0x1f1988=_0xf9da8c[_0x138167];if(!(_0x1f1988 instanceof LexerNode)&&OPERATOR_TOKEN_SET['has'](_0x1f1988))return!![];}return![];}['getFormulaExprTree'](_0x49cc15,_0x225010,_0x474261,_0x1c8a7d,_0x705168){const _0x1faacd=_0x569e68,_0xe49025=this[_0x1faacd(0x1fe)](_0x49cc15,![]);if(!_0xe49025||_0xe49025===ErrorType['VALUE']||Array['isArray'](_0xe49025))return null;this[_0x1faacd(0x1c5)](),this[_0x1faacd(0x21b)]=_0x225010;const _0x4f12b2=this[_0x1faacd(0x1e2)](_0xe49025,_0x474261,_0x1c8a7d,_0x705168);return this[_0x1faacd(0x21b)]='',this[_0x1faacd(0x1d4)](),_0x4f12b2;}[_0x569e68(0x1e2)](_0xbf7377,_0x252e36,_0x10b40c,_0x5f3b51){const _0x2ab65c=_0x569e68,_0x819ccf={'value':'','children':[],'startIndex':0x0};let _0x49ceba=_0xbf7377;if(_0x49ceba instanceof LexerNode&&(_0x49ceba[_0x2ab65c(0x20d)]()===DEFAULT_TOKEN_TYPE_ROOT||_0x49ceba[_0x2ab65c(0x20d)]()===DEFAULT_TOKEN_TYPE_PARAMETER)&&_0x49ceba[_0x2ab65c(0x262)]()[_0x2ab65c(0x282)]===0x1)_0x49ceba=_0x49ceba[_0x2ab65c(0x262)]()[0x0];if(!(_0x49ceba instanceof LexerNode))return this[_0x2ab65c(0x25b)](_0x49ceba,_0x10b40c,_0x5f3b51);const _0x92bd9=_0x49ceba[_0x2ab65c(0x262)](),_0x311d55=_0x92bd9[_0x2ab65c(0x282)],_0x201927=[];this[_0x2ab65c(0x1ef)](_0x49ceba,_0x201927,_0x252e36),_0x819ccf[_0x2ab65c(0x270)]=_0x201927['join'](''),_0x819ccf['startIndex']=_0x49ceba[_0x2ab65c(0x1e1)]();const _0x56d9fa=this[_0x2ab65c(0x213)](_0x49ceba);if(_0x56d9fa===0x2){const _0x470b7e=_0x92bd9[0x0];if(_0x470b7e instanceof LexerNode){if(_0x470b7e[_0x2ab65c(0x20d)]()[_0x2ab65c(0x268)]()!==DEFAULT_TOKEN_TYPE_LAMBDA_PARAMETER)return _0x819ccf;this[_0x2ab65c(0x1e8)](_0x470b7e,_0x819ccf,_0x252e36,_0x10b40c,_0x5f3b51);}return _0x819ccf;}else{if(_0x56d9fa===0x1){for(let _0x28ba5b=0x0;_0x28ba5b<_0x311d55-0x1;_0x28ba5b++){const _0x561644=_0x92bd9[_0x28ba5b];if(_0x561644 instanceof LexerNode&&_0x28ba5b%0x2===0x1){const _0x37c7cb=_0x561644[_0x2ab65c(0x262)]();if(_0x37c7cb[_0x2ab65c(0x282)]===0x1&&!(_0x37c7cb[0x0]instanceof LexerNode))continue;const _0x41e9ec=this[_0x2ab65c(0x1e2)](_0x561644,_0x252e36,_0x10b40c,_0x5f3b51);_0x41e9ec&&_0x819ccf['children'][_0x2ab65c(0x1f5)](_0x41e9ec);}}return _0x819ccf;}else{if(_0x56d9fa===0x8){const _0x1db12b=_0x92bd9[0x0];if(_0x1db12b instanceof LexerNode){const _0x4cec76=_0x1db12b[_0x2ab65c(0x262)]()[0x0];if(_0x4cec76 instanceof LexerNode)_0x819ccf[_0x2ab65c(0x207)]=_0x4cec76['getStartIndex']();}if(this[_0x2ab65c(0x1b3)](_0x49ceba))return _0x819ccf;}else{if(_0x56d9fa===0x7){const _0xf6dfa2=_0x92bd9[0x0];if(_0xf6dfa2 instanceof LexerNode){const _0x2517b2=_0xf6dfa2[_0x2ab65c(0x262)]()[0x0];if(_0x2517b2 instanceof LexerNode)_0x819ccf[_0x2ab65c(0x207)]=_0x2517b2[_0x2ab65c(0x1e1)]();}}}}}return this[_0x2ab65c(0x255)](_0x92bd9,_0x56d9fa,_0x819ccf,_0x252e36,_0x10b40c,_0x5f3b51),_0x819ccf;}[_0x569e68(0x255)](_0x458e8c,_0x3cf0f4,_0x2921d3,_0x1b6bda,_0x4e4c2c,_0x3383d8){const _0x39aa01=_0x569e68;for(let _0x2e8810=0x0;_0x2e8810<_0x458e8c[_0x39aa01(0x282)];_0x2e8810++){let _0x8a37a3=_0x458e8c[_0x2e8810];if(!(_0x8a37a3 instanceof LexerNode)){const _0x16ff09=this['_handleTextNodeForExprTree'](_0x8a37a3,_0x4e4c2c,_0x3383d8);_0x16ff09&&_0x2921d3['children'][_0x39aa01(0x1f5)](_0x16ff09);continue;}const _0x382eea=_0x8a37a3['getChildren']();if(_0x382eea[_0x39aa01(0x282)]===0x1&&!(_0x382eea[0x0]instanceof LexerNode)){const _0x359dec=_0x382eea[0x0];if(!_0x4e4c2c(this['_currentUnitId'],_0x359dec)&&!this[_0x39aa01(0x1ff)](_0x359dec,_0x3383d8)&&!isReferenceString(_0x359dec))continue;}if(_0x3cf0f4===0x8){const _0x33f8ad=_0x382eea[0x0];if(_0x33f8ad instanceof LexerNode){if(isReferenceString(_0x33f8ad['getToken']()['trim']()))continue;_0x8a37a3=_0x33f8ad;}}const _0x7145b7=this[_0x39aa01(0x1e2)](_0x8a37a3,_0x1b6bda,_0x4e4c2c,_0x3383d8);_0x7145b7&&_0x2921d3[_0x39aa01(0x1cd)][_0x39aa01(0x1f5)](_0x7145b7);}}['_checkColonNodeForExprTree'](_0x399d7c){const _0x131511=_0x569e68,_0x5a6b87=_0x399d7c[_0x131511(0x262)]();if(_0x5a6b87['length']<0x2)return![];const _0x4708a7=_0x5a6b87[0x0],_0x3b42f1=_0x5a6b87[0x1];if(!(_0x4708a7 instanceof LexerNode)||!(_0x3b42f1 instanceof LexerNode))return![];const _0x30042c=_0x4708a7[_0x131511(0x262)]()[0x0],_0x5f00c5=_0x3b42f1[_0x131511(0x262)]()[0x0];if(!(_0x30042c instanceof LexerNode)||!(_0x5f00c5 instanceof LexerNode))return![];const _0x243601=_0x30042c['getToken']()[_0x131511(0x268)](),_0x49c103=_0x5f00c5[_0x131511(0x20d)]()[_0x131511(0x268)]();if(isReferenceString(''+_0x243601+matchToken[_0x131511(0x1d7)]+_0x49c103))return!![];return![];}['_handleTextNodeForExprTree'](_0xe379d9,_0x2c91b2,_0x537548){const _0x1031f3=_0x569e68,_0xa3d353=_0xe379d9[_0x1031f3(0x268)]();if(_0xa3d353[_0x1031f3(0x1d0)]('{')&&_0xa3d353[_0x1031f3(0x1b7)]('}')||_0x2c91b2(this[_0x1031f3(0x21b)],_0xa3d353)||this[_0x1031f3(0x1ff)](_0xa3d353,_0x537548)||isReferenceString(_0xa3d353))return{'value':_0xa3d353,'children':[],'startIndex':-0x1};return null;}[_0x569e68(0x1ff)](_0x2b25c1,_0x593fde){const _0x4f57b9=_0x569e68,{tableName:_0x50b333}=splitTableStructuredRef(_0x2b25c1);if(_0x593fde(this[_0x4f57b9(0x21b)],_0x50b333))return _0x50b333;return null;}[_0x569e68(0x1e8)](_0x1e1dee,_0x31b681,_0x2ba979,_0x35f508,_0x1ab325){const _0x4369d9=_0x569e68,_0x379b10=_0x1e1dee[_0x4369d9(0x262)]();for(let _0x3d0616=0x0;_0x3d0616<_0x379b10[_0x4369d9(0x282)];_0x3d0616++){const _0x54c726=_0x379b10[_0x3d0616];if(!(_0x54c726 instanceof LexerNode))continue;const _0xdbf4c1=_0x54c726[_0x4369d9(0x262)]();if(_0xdbf4c1[_0x4369d9(0x282)]===0x1&&!(_0xdbf4c1[0x0]instanceof LexerNode))continue;const _0x220034=this[_0x4369d9(0x1e2)](_0x54c726,_0x2ba979,_0x35f508,_0x1ab325);_0x220034&&_0x31b681[_0x4369d9(0x1cd)][_0x4369d9(0x1f5)](_0x220034);}}[_0x569e68(0x213)](_0x2c18f5){const _0x1e4190=_0x569e68,_0x238971=_0x2c18f5['getToken'](),_0x7eb18a=_0x238971[_0x1e4190(0x268)]()[_0x1e4190(0x251)]();let _0x3436c4=0x0;if(_0x238971===DEFAULT_TOKEN_TYPE_ROOT)_0x3436c4=0x3;else{if(_0x238971===DEFAULT_TOKEN_TYPE_PARAMETER)_0x3436c4=0x4;else{if(_0x238971===DEFAULT_TOKEN_TYPE_LAMBDA_PARAMETER)_0x3436c4=0x5;else{if(_0x7eb18a===DEFAULT_TOKEN_LAMBDA_FUNCTION_NAME)_0x3436c4=0x2;else{if(_0x7eb18a===DEFAULT_TOKEN_LET_FUNCTION_NAME)_0x3436c4=0x1;else{if(_0x7eb18a===matchToken[_0x1e4190(0x1d7)])_0x3436c4=0x8;else{if(SUFFIX_TOKEN_SET[_0x1e4190(0x22b)](_0x7eb18a))_0x3436c4=0x7;else{if(_0x7eb18a===prefixToken['MINUS']){if(this[_0x1e4190(0x242)](_0x2c18f5))_0x3436c4=0x9;}else _0x3436c4=0xa;}}}}}}}return _0x3436c4;}},name=_0x569e68(0x27d),version=_0x569e68(0x1dd),FormulaDependencyProGenerator=class extends FormulaDependencyGenerator{constructor(..._0x239cf0){const _0x11a151=_0x569e68;super(..._0x239cf0),_defineProperty(this,_0x11a151(0x24d),new Map());}[_0x569e68(0x1f6)](){const _0x4912c1=_0x569e68;super[_0x4912c1(0x1f6)](),this[_0x4912c1(0x24d)][_0x4912c1(0x233)]();}async['generate'](_0x3abdb9=![]){const _0x5a7033=_0x569e68;this[_0x5a7033(0x1ad)]();const _0x4f0234=this[_0x5a7033(0x1f8)][_0x5a7033(0x1ac)](),_0x52af75=this[_0x5a7033(0x263)]['getOtherFormulaData'](),_0x32327d=this[_0x5a7033(0x1f8)]['getClearDependencyTreeCache']();if(_0x32327d!=null)Object[_0x5a7033(0x1d2)](_0x32327d)[_0x5a7033(0x25c)](_0x7e022f=>{const _0x162397=_0x5a7033;if(_0x7e022f==null)return;Object['keys'](_0x32327d[_0x7e022f])[_0x162397(0x25c)](_0x24ae06=>{const _0xe37be=_0x162397;if(_0x24ae06==null)return;this['_dependencyManagerService']['clearOtherFormulaDependency'](_0x7e022f,_0x24ae06),this['_dependencyManagerService'][_0xe37be(0x219)](_0x7e022f,_0x24ae06),this[_0xe37be(0x226)][_0xe37be(0x256)](_0x7e022f,_0x24ae06);});});const _0x4737b5=this[_0x5a7033(0x1f8)][_0x5a7033(0x23a)]();await this[_0x5a7033(0x231)](_0x4f0234,_0x52af75,_0x4737b5),this[_0x5a7033(0x226)][_0x5a7033(0x23e)]();const _0x41d01b=this[_0x5a7033(0x245)](),_0x5bd763=this[_0x5a7033(0x1da)](_0x41d01b);if(this['_checkIsCycleDependency'](_0x5bd763))this[_0x5a7033(0x1f1)][_0x5a7033(0x1ca)]();if(_0x3abdb9)this[_0x5a7033(0x1f1)][_0x5a7033(0x22d)](this[_0x5a7033(0x274)](Array[_0x5a7033(0x212)](this[_0x5a7033(0x24d)]['values']())));return this[_0x5a7033(0x24d)][_0x5a7033(0x233)](),this[_0x5a7033(0x257)][_0x5a7033(0x233)](),this[_0x5a7033(0x226)][_0x5a7033(0x227)](),this['_runtimeService'][_0x5a7033(0x1e6)](),Promise[_0x5a7033(0x273)](_0x5bd763);}['_isCyclicUtilMap'](_0x3dd5d9,_0x4dbb03){const _0x558a43=_0x569e68,_0x5961e4=0x0,_0x446ac2=0x1,_0x34d4cd=0x2,_0x46fc19=[_0x3dd5d9];while(_0x46fc19[_0x558a43(0x282)]>0x0){const _0x2005eb=_0x46fc19[_0x46fc19[_0x558a43(0x282)]-0x1];if((_0x4dbb03['get'](_0x2005eb)||_0x5961e4)===_0x5961e4){_0x4dbb03[_0x558a43(0x26e)](_0x2005eb,_0x446ac2);const _0x22a1b0=this[_0x558a43(0x24d)][_0x558a43(0x210)](_0x2005eb);if(_0x22a1b0==null){_0x4dbb03[_0x558a43(0x26e)](_0x2005eb,_0x34d4cd),_0x46fc19[_0x558a43(0x241)]();continue;}const _0x37e9d7=this[_0x558a43(0x226)][_0x558a43(0x1df)](_0x22a1b0[_0x558a43(0x27b)]());for(const _0x50cf51 of _0x37e9d7){const _0x276364=_0x4dbb03[_0x558a43(0x210)](_0x50cf51)||_0x5961e4;if(_0x276364===_0x446ac2)return!![];else{if(_0x276364===_0x5961e4)_0x46fc19[_0x558a43(0x1f5)](_0x50cf51);}}}else _0x4dbb03[_0x558a43(0x26e)](_0x2005eb,_0x34d4cd),_0x46fc19[_0x558a43(0x241)]();}return![];}[_0x569e68(0x1b6)](_0x131c5b){const _0x17344c=_0x569e68,_0x405edb=new Map();for(const _0x48b409 of _0x131c5b)if(!_0x405edb[_0x17344c(0x22b)](_0x48b409[_0x17344c(0x1e4)])){if(this[_0x17344c(0x22a)](_0x48b409[_0x17344c(0x1e4)],_0x405edb))return!![];}return _0x405edb[_0x17344c(0x233)](),![];}[_0x569e68(0x1e7)](_0x499277,_0x32f25d,_0x5a1faa){const _0x144687=_0x569e68,{unitId:_0x16e72b,subUnitId:_0x4d56b0,dependencyRanges:_0x2a33aa,getDirtyData:_0x7ec624}=_0x5a1faa,_0xbd0916=new FormulaDependencyTree(_0x32f25d||generateRandomDependencyTreeId(this[_0x144687(0x226)]));_0xbd0916[_0x144687(0x258)]=_0x16e72b,_0xbd0916[_0x144687(0x1e9)]=_0x4d56b0,_0xbd0916['rangeList']=_0x2a33aa,_0xbd0916[_0x144687(0x1ce)]=_0x7ec624;const _0x244052=_0x7ec624(this[_0x144687(0x1f8)][_0x144687(0x1ce)](),this['_runtimeService'][_0x144687(0x1e3)]());_0xbd0916[_0x144687(0x215)]=this[_0x144687(0x216)](_0x244052[_0x144687(0x237)]),_0xbd0916[_0x144687(0x1b0)]=_0x499277,_0xbd0916[_0x144687(0x1fb)]=FormulaDependencyTreeType[_0x144687(0x230)],this[_0x144687(0x226)]['addFeatureFormulaDependency'](_0x16e72b,_0x4d56b0,_0x499277,_0xbd0916),this['_dependencyTreeCache'][_0x144687(0x26e)](_0xbd0916[_0x144687(0x1e4)],_0xbd0916);if(this[_0x144687(0x226)]['getFeatureFormulaDependency'](_0x5a1faa[_0x144687(0x258)],_0x5a1faa[_0x144687(0x1e9)],_0x499277))_0xbd0916[_0x144687(0x20e)]=!![];return _0xbd0916;}['_registerOtherFormulas'](_0x10acac,_0x4d8a1b,_0x256264){const _0xdd3328=_0x569e68;for(const _0x2985ac of _0x4d8a1b){const _0x2a0b70=_0x10acac[_0x2985ac];if(_0x2a0b70==null)continue;const _0xae19bb=Object[_0xdd3328(0x1d2)](_0x2a0b70);for(const _0x519e28 of _0xae19bb){const _0x4e20f8=_0x2a0b70[_0x519e28];if(_0x4e20f8==null)continue;const {rowCount:rowCount=Infinity,columnCount:columnCount=Infinity}=this[_0xdd3328(0x1f8)]['getSheetRowColumnCount'](_0x2985ac,_0x519e28)||{},_0x334155=Object[_0xdd3328(0x1d2)](_0x4e20f8);for(const _0xc5a005 of _0x334155){var _0xab3989;const _0xd5a7c6=this[_0xdd3328(0x226)][_0xdd3328(0x1d1)](_0xc5a005),{f:_0x3d7bec,ranges:_0x4b4ea5}=_0x4e20f8[_0xc5a005];let _0x276d8e=![];if(_0xd5a7c6)_0x276d8e=!![];const {firstRow:_0x5cb75d,firstColumn:_0x495497}=this[_0xdd3328(0x1f3)](_0x4b4ea5),_0x552af5=this[_0xdd3328(0x226)][_0xdd3328(0x240)](_0x2985ac,_0x519e28,_0xc5a005),_0x3bde88=new FormulaDependencyTree((_0xab3989=_0x552af5===null||_0x552af5===void 0x0?void 0x0:_0x552af5['getValue'](0x0,0x0))!==null&&_0xab3989!==void 0x0?_0xab3989:generateRandomDependencyTreeId(this[_0xdd3328(0x226)]));for(let _0x3dbf0a=0x0;_0x3dbf0a<_0x4b4ea5[_0xdd3328(0x282)];_0x3dbf0a++){const _0x4cfa29=_0x4b4ea5[_0x3dbf0a],{startRow:_0x1caede,startColumn:_0x2de7de}=_0x4cfa29;let {endRow:_0x2df212,endColumn:_0x133751}=_0x4cfa29;_0x2df212=Math[_0xdd3328(0x1c9)](_0x2df212,rowCount-0x1),_0x133751=Math[_0xdd3328(0x1c9)](_0x133751,columnCount-0x1);for(let _0x5d6755=_0x1caede;_0x5d6755<=_0x2df212;_0x5d6755++)for(let _0x3f3ed7=_0x2de7de;_0x3f3ed7<=_0x133751;_0x3f3ed7++){const _0x5c33ed=_0x3f3ed7-_0x495497,_0x59a3ed=_0x5d6755-_0x5cb75d;if(_0x5c33ed===0x0&&_0x59a3ed===0x0){_0x3bde88[_0xdd3328(0x1ba)]=_0x3d7bec,_0x3bde88[_0xdd3328(0x258)]=_0x2985ac,_0x3bde88[_0xdd3328(0x1e9)]=_0x519e28,_0x3bde88[_0xdd3328(0x26b)]=_0xc5a005,_0x3bde88[_0xdd3328(0x1fb)]=FormulaDependencyTreeType['OTHER_FORMULA'],_0x3bde88[_0xdd3328(0x20e)]=_0x276d8e,_0x256264['push'](_0x3bde88),this['_dependencyTreeCache'][_0xdd3328(0x26e)](_0x3bde88['treeId'],_0x3bde88),this[_0xdd3328(0x226)][_0xdd3328(0x1b9)](_0x2985ac,_0x519e28,_0xc5a005,_0x3bde88),this[_0xdd3328(0x226)][_0xdd3328(0x1c2)](_0x3bde88);continue;}const _0x267d09=new FormulaDependencyTreeVirtual();_0x267d09['treeId']=(_0x552af5===null||_0x552af5===void 0x0?void 0x0:_0x552af5['getValue'](_0x5c33ed,_0x59a3ed))||generateRandomDependencyTreeId(this['_dependencyManagerService']),_0x267d09['refTree']=_0x3bde88,_0x267d09['refOffsetX']=_0x5c33ed,_0x267d09[_0xdd3328(0x1f2)]=_0x59a3ed,_0x267d09[_0xdd3328(0x20e)]=_0x276d8e,_0x267d09[_0xdd3328(0x1fb)]=FormulaDependencyTreeType['OTHER_FORMULA'],this[_0xdd3328(0x226)]['addOtherFormulaDependency'](_0x2985ac,_0x519e28,_0xc5a005,_0x267d09),this[_0xdd3328(0x226)][_0xdd3328(0x1c2)](_0x267d09),_0x256264[_0xdd3328(0x1f5)](_0x267d09),this[_0xdd3328(0x24d)][_0xdd3328(0x26e)](_0x267d09[_0xdd3328(0x1e4)],_0x267d09);}}this[_0xdd3328(0x226)][_0xdd3328(0x271)](_0xc5a005);}}}}[_0x569e68(0x1c4)](_0x9f5837,_0x374e98,_0x133691,_0x133faa){const _0x3ba1bd=_0x569e68;for(const _0x206877 of _0x9f5837){const _0x10a8e6=_0x374e98[_0x206877];if(_0x10a8e6==null)continue;const _0xb25e8c=Object[_0x3ba1bd(0x1d2)](_0x10a8e6);for(const _0x4dc7ac of _0xb25e8c){const _0x18faa9=new ObjectMatrix(_0x10a8e6[_0x4dc7ac]||{}),_0x115e32=new Map();_0x18faa9[_0x3ba1bd(0x1d8)]((_0x5e9831,_0x2ae937,_0xfe883b)=>{const _0x50e3b0=_0x3ba1bd;if(_0xfe883b==null)return!![];const {x:x=0x0,y:y=0x0,si:_0x1aae9c}=_0xfe883b;if(!(x===0x0&&y===0x0&&_0x1aae9c!=null))return!![];const _0x1699ba=this['_createFDtree'](_0x206877,_0x4dc7ac,_0x5e9831,_0x2ae937,_0x133691,_0xfe883b),_0x379910=this[_0x50e3b0(0x226)][_0x50e3b0(0x239)](_0x206877,_0x4dc7ac,_0x5e9831,_0x2ae937);if(_0x379910!=null)_0x1699ba['treeId']=_0x379910;else this[_0x50e3b0(0x226)][_0x50e3b0(0x1de)](_0x206877,_0x4dc7ac,_0x5e9831,_0x2ae937,_0x1699ba),this['_dependencyManagerService'][_0x50e3b0(0x1c2)](_0x1699ba);_0x115e32[_0x50e3b0(0x26e)](_0x1aae9c,_0x1699ba),_0x133faa[_0x50e3b0(0x1f5)](_0x1699ba),this[_0x50e3b0(0x24d)][_0x50e3b0(0x26e)](_0x1699ba[_0x50e3b0(0x1e4)],_0x1699ba);}),_0x18faa9[_0x3ba1bd(0x1d8)]((_0x5e1b3b,_0x2139ab,_0x3e2f37)=>{const _0x35a744=_0x3ba1bd;if(_0x3e2f37==null)return!![];const {x:x=0x0,y:y=0x0,si:_0x41bf87}=_0x3e2f37;if(x===0x0&&y===0x0&&_0x41bf87!=null)return!![];let _0x13e860;if(_0x41bf87&&_0x115e32[_0x35a744(0x22b)](_0x41bf87)){const _0x16b7c9=_0x115e32[_0x35a744(0x210)](_0x41bf87);_0x13e860=this[_0x35a744(0x232)](_0x16b7c9,_0x3e2f37);}else _0x13e860=this[_0x35a744(0x25f)](_0x206877,_0x4dc7ac,_0x5e1b3b,_0x2139ab,_0x133691,_0x3e2f37);const _0x110614=this[_0x35a744(0x226)][_0x35a744(0x239)](_0x206877,_0x4dc7ac,_0x5e1b3b,_0x2139ab);if(_0x110614!=null)_0x13e860[_0x35a744(0x1e4)]=_0x110614;else this[_0x35a744(0x226)][_0x35a744(0x1de)](_0x206877,_0x4dc7ac,_0x5e1b3b,_0x2139ab,_0x13e860),this['_dependencyManagerService']['addFormulaDependencyByDefinedName'](_0x13e860);_0x133faa[_0x35a744(0x1f5)](_0x13e860),this[_0x35a744(0x24d)][_0x35a744(0x26e)](_0x13e860[_0x35a744(0x1e4)],_0x13e860);}),_0x115e32['clear']();}}}['_createFDtree'](_0xc0a1a1,_0x41b1d0,_0x372851,_0xbd1235,_0x41892d,_0x20363d){const _0x5a0762=_0x569e68,{f:_0x23d350,x:x=0x0,y:y=0x0}=_0x20363d,_0xe37429=new FormulaDependencyTree(generateRandomDependencyTreeId(this['_dependencyManagerService'])),_0x1b0a49=_0x41892d[_0xc0a1a1][_0x41b1d0];return _0xe37429[_0x5a0762(0x1ba)]=_0x23d350,_0xe37429['unitId']=_0xc0a1a1,_0xe37429[_0x5a0762(0x1e9)]=_0x41b1d0,_0xe37429[_0x5a0762(0x25e)]=_0x372851,_0xe37429[_0x5a0762(0x24a)]=_0xbd1235,_0xe37429[_0x5a0762(0x218)]=_0x1b0a49['rowCount'],_0xe37429[_0x5a0762(0x275)]=_0x1b0a49[_0x5a0762(0x275)],_0xe37429;}[_0x569e68(0x245)](){const _0x33a7d6=_0x569e68,_0x56656e=[],_0x204ba9=new Set(),_0x2f8e4e=this[_0x33a7d6(0x1f8)][_0x33a7d6(0x1f0)](),_0x4fd48a=this[_0x33a7d6(0x1f8)][_0x33a7d6(0x21c)](),_0x3dd812=this[_0x33a7d6(0x226)][_0x33a7d6(0x1df)](_0x4fd48a),_0x77ee6d=this[_0x33a7d6(0x257)][_0x33a7d6(0x204)](_0x4fd48a);for(const _0x426146 of _0x77ee6d)_0x3dd812[_0x33a7d6(0x1be)](_0x426146);for(const [_0x90d4b1,_0xdefd94]of this[_0x33a7d6(0x24d)])(_0x2f8e4e||_0xdefd94[_0x33a7d6(0x1ea)]||_0xdefd94['dependencySheetName'](this[_0x33a7d6(0x1f8)]['getDirtyNameMap']())||_0x3dd812[_0x33a7d6(0x22b)](_0x90d4b1)&&!_0xdefd94['isExcludeRange'](this[_0x33a7d6(0x1f8)][_0x33a7d6(0x1fc)]()))&&!_0x204ba9['has'](_0x90d4b1)&&(_0x56656e[_0x33a7d6(0x1f5)](_0xdefd94),_0x204ba9[_0x33a7d6(0x1be)](_0x90d4b1));for(const [_0x2ffb04,_0x9f0c6d]of this[_0x33a7d6(0x24d)]){if(_0x9f0c6d[_0x33a7d6(0x1bd)])continue;_0x9f0c6d[_0x33a7d6(0x214)][_0x33a7d6(0x282)]=0x0;}return _0x56656e;}['_getTreeById'](_0x1ecb70){return this['_dependencyTreeCache']['get'](_0x1ecb70);}[_0x569e68(0x26c)](_0x1303c9){const _0x31b12a=_0x569e68;return generateAstNode(_0x1303c9[_0x31b12a(0x258)],_0x1303c9['formula'],this[_0x31b12a(0x217)],this[_0x31b12a(0x264)],this['_currentConfigService']);}*[_0x569e68(0x21d)](_0x2505dd,_0x49543c){const _0x3dcf70=_0x569e68,_0x554935=_0x2505dd,_0x4f2f89=new Set();while(_0x554935[_0x3dcf70(0x282)]>0x0){const _0x2c7fc2=_0x554935['pop']();_0x4f2f89['clear']();if(_0x2c7fc2===void 0x0||_0x2c7fc2['isSkip']())continue;if(_0x2c7fc2[_0x3dcf70(0x279)]()){yield _0x2c7fc2,_0x2c7fc2[_0x3dcf70(0x1c7)](),_0x49543c[_0x3dcf70(0x1be)](_0x2c7fc2[_0x3dcf70(0x1e4)]);continue;}const _0x29fc3b=this['_dependencyManagerService'][_0x3dcf70(0x1df)](_0x2c7fc2[_0x3dcf70(0x27b)](),_0x49543c),_0x44e7af=this[_0x3dcf70(0x257)][_0x3dcf70(0x204)](_0x2c7fc2[_0x3dcf70(0x27b)](),_0x49543c);for(const _0x15ff3a of _0x44e7af)_0x29fc3b['add'](_0x15ff3a);for(const _0x308bed of _0x29fc3b){const _0x5bb466=this['_dependencyTreeCache'][_0x3dcf70(0x210)](_0x308bed);if(!_0x5bb466){console[_0x3dcf70(0x220)](_0x3dcf70(0x1d9),_0x308bed);continue;}if(_0x5bb466['isAdded']()||_0x2c7fc2[_0x3dcf70(0x1c1)]())continue;_0x4f2f89[_0x3dcf70(0x1be)](_0x5bb466);}_0x29fc3b[_0x3dcf70(0x233)]();if(_0x4f2f89['size']===0x0)yield _0x2c7fc2,_0x2c7fc2[_0x3dcf70(0x1c7)](),_0x49543c[_0x3dcf70(0x1be)](_0x2c7fc2[_0x3dcf70(0x1e4)]);else{_0x2c7fc2[_0x3dcf70(0x20a)](),_0x554935[_0x3dcf70(0x1f5)](_0x2c7fc2);for(const _0x4afdf9 of _0x4f2f89)_0x554935['push'](_0x4afdf9);}}_0x554935[_0x3dcf70(0x282)]=0x0,_0x4f2f89['clear']();}['_calculateRunList'](_0x2eeef8){const _0x24dde3=_0x569e68,_0x34cce3=[],_0x41df50=new Set();for(const _0x2fbac8 of this['_traverse'](_0x2eeef8,_0x41df50))_0x34cce3[_0x24dde3(0x1f5)](_0x2fbac8);return _0x34cce3;}async['_getAllTreeList'](){const _0x312916=_0x569e68;return await this[_0x312916(0x1dc)](),Array[_0x312916(0x212)](this['_dependencyTreeCache'][_0x312916(0x223)]());}[_0x569e68(0x26f)](_0x10563b){const _0x13b9b7=_0x569e68;return this[_0x13b9b7(0x226)][_0x13b9b7(0x1df)](_0x10563b[_0x13b9b7(0x27b)]());}[_0x569e68(0x22c)](_0xcc1ff8){const _0x5ec1f8=_0x569e68,_0x1cda44=new Set(),_0x597e5b=_0xcc1ff8[_0x5ec1f8(0x214)];for(const [_0x50fc08,_0x507506]of this[_0x5ec1f8(0x24d)])for(const _0x27efd6 of _0x597e5b){const _0x13c780=_0x27efd6[_0x5ec1f8(0x258)],_0x5e5dbb=_0x27efd6[_0x5ec1f8(0x1bf)];if(_0x507506[_0x5ec1f8(0x258)]!==_0x13c780||_0x507506['subUnitId']!==_0x5e5dbb)continue;const _0x44a65f=_0x27efd6['range'];if(_0x507506[_0x5ec1f8(0x1ae)](_0x44a65f)){_0x1cda44[_0x5ec1f8(0x1be)](_0x50fc08);break;}}return _0x1cda44;}[_0x569e68(0x285)](){const _0x14c3f4=_0x569e68;this[_0x14c3f4(0x226)][_0x14c3f4(0x23e)]();}['_endFormulaDependencyTreeModel'](){const _0x3abe9f=_0x569e68;this[_0x3abe9f(0x1e5)][_0x3abe9f(0x233)](),this[_0x3abe9f(0x24d)][_0x3abe9f(0x233)](),this[_0x3abe9f(0x226)][_0x3abe9f(0x227)]();}},CalculateFormulaProService=class extends CalculateFormulaService{async['_apply'](_0x8b5073=![]){const _0x6199b8=_0x569e68;if(_0x8b5073)this[_0x6199b8(0x1f1)]['setFormulaExecuteStage'](FormulaExecuteStageType['START_DEPENDENCY_ARRAY_FORMULA']);else this[_0x6199b8(0x1f1)][_0x6199b8(0x1c8)](FormulaExecuteStageType['START_DEPENDENCY']);this[_0x6199b8(0x286)][_0x6199b8(0x23b)](this[_0x6199b8(0x1f1)]['getRuntimeState']());const _0x3a6edd=await this[_0x6199b8(0x27f)][_0x6199b8(0x235)](this['_isCalculateTreeModel']),_0x10493e=this[_0x6199b8(0x1d6)];_0x8b5073?(this[_0x6199b8(0x1f1)][_0x6199b8(0x1c8)](FormulaExecuteStageType['START_CALCULATION_ARRAY_FORMULA']),this[_0x6199b8(0x1f1)][_0x6199b8(0x1d5)](_0x3a6edd[_0x6199b8(0x282)])):(this[_0x6199b8(0x1f1)][_0x6199b8(0x1c8)](FormulaExecuteStageType[_0x6199b8(0x1cf)]),this['_runtimeService'][_0x6199b8(0x24e)](_0x3a6edd[_0x6199b8(0x282)]));this[_0x6199b8(0x286)][_0x6199b8(0x23b)](this[_0x6199b8(0x1f1)]['getRuntimeState']());let _0x2c5635=[];const _0xab59dd=this['_configService']['getConfig'](ENGINE_FORMULA_PLUGIN_CONFIG_KEY),_0x37e435=(_0xab59dd===null||_0xab59dd===void 0x0?void 0x0:_0xab59dd[_0x6199b8(0x23f)])||DEFAULT_INTERVAL_COUNT;let _0xdf968a=0x0;const _0x716597=_0x3a6edd['length'];while(_0x3a6edd[_0x6199b8(0x282)]>0x0){const _0x2450ca=_0x3a6edd[_0x6199b8(0x241)](),_0xbd6843=generateAstNode(_0x2450ca[_0x6199b8(0x258)],_0x2450ca[_0x6199b8(0x1ba)],this['_lexer'],this[_0x6199b8(0x264)],this['_currentConfigService']),_0x46c817={'node':_0xbd6843,'refOffsetX':_0x2450ca[_0x6199b8(0x224)],'refOffsetY':_0x2450ca['refOffsetY']},_0x306250=_0x2450ca[_0x6199b8(0x1ce)];if(_0xdf968a%_0x37e435===0x0){await new Promise(_0x371601=>{const _0x5ccaa4=requestImmediateMacroTask(_0x371601);_0x2c5635['push'](_0x5ccaa4);});_0x8b5073?(this[_0x6199b8(0x1f1)][_0x6199b8(0x1c8)](FormulaExecuteStageType['CURRENTLY_CALCULATING_ARRAY_FORMULA']),this[_0x6199b8(0x1f1)][_0x6199b8(0x250)](_0xdf968a+0x1)):(this['_runtimeService'][_0x6199b8(0x1c8)](FormulaExecuteStageType[_0x6199b8(0x23d)]),this[_0x6199b8(0x1f1)][_0x6199b8(0x221)](_0xdf968a+0x1));this['_executionInProgressListener$'][_0x6199b8(0x23b)](this[_0x6199b8(0x1f1)][_0x6199b8(0x1fd)]());if(this['_runtimeService']['isStopExecution']()||_0x46c817==null&&_0x306250==null){this[_0x6199b8(0x1f1)]['setFormulaExecuteStage'](FormulaExecuteStageType[_0x6199b8(0x1db)]),this['_runtimeService'][_0x6199b8(0x27a)](),this[_0x6199b8(0x24c)][_0x6199b8(0x23b)](this[_0x6199b8(0x1f1)][_0x6199b8(0x1e3)]());return;}}this[_0x6199b8(0x1f1)]['setCurrent'](_0x2450ca[_0x6199b8(0x25e)],_0x2450ca[_0x6199b8(0x24a)],_0x2450ca['rowCount'],_0x2450ca[_0x6199b8(0x275)],_0x2450ca[_0x6199b8(0x1e9)],_0x2450ca[_0x6199b8(0x258)]);let _0x3e0488;if(_0x306250!=null&&_0x2450ca['featureId']!=null){const {runtimeCellData:_0x4a83c5,dirtyRanges:_0x461397}=_0x306250(this[_0x6199b8(0x1f8)]['getDirtyData'](),this['_runtimeService'][_0x6199b8(0x1e3)]());this[_0x6199b8(0x1f1)][_0x6199b8(0x272)](_0x2450ca[_0x6199b8(0x1b0)],_0x4a83c5),this[_0x6199b8(0x1f1)][_0x6199b8(0x266)](_0x2450ca[_0x6199b8(0x1b0)],_0x461397);}else{if(_0x46c817!=null){if(_0x10493e[_0x6199b8(0x267)](_0x46c817[_0x6199b8(0x1b5)]))_0x3e0488=await _0x10493e[_0x6199b8(0x1b8)](_0x46c817);else _0x3e0488=_0x10493e[_0x6199b8(0x222)](_0x46c817);if(_0x2450ca[_0x6199b8(0x26b)]!=null)this[_0x6199b8(0x1f1)]['setRuntimeOtherData'](_0x2450ca[_0x6199b8(0x26b)],_0x2450ca[_0x6199b8(0x224)],_0x2450ca[_0x6199b8(0x1f2)],_0x3e0488);else this[_0x6199b8(0x1f1)][_0x6199b8(0x276)](_0x3e0488);}}_0xbd6843[_0x6199b8(0x1f7)](),_0xdf968a++;}_0x2c5635[_0x6199b8(0x25c)](_0xda6076=>_0xda6076()),_0x2c5635=[];if(_0x716597>0x0)this['_runtimeService'][_0x6199b8(0x1fa)]();else{if(!_0x8b5073)this['_runtimeService']['markedAsNoFunctionsExecuted']();}return this[_0x6199b8(0x1f1)][_0x6199b8(0x1e3)]();}},DependencyManagerProService=class extends DependencyManagerBaseService{constructor(..._0x5323b3){const _0x16d117=_0x569e68;super(..._0x5323b3),_defineProperty(this,'_allTreeMap',new Map()),_defineProperty(this,_0x16d117(0x243),new RTree(!![]));}[_0x569e68(0x200)](){const _0x406cec=_0x569e68;this[_0x406cec(0x260)]['clear'](),this[_0x406cec(0x277)]['clear'](),this[_0x406cec(0x202)][_0x406cec(0x233)](),this['_dependencyRTreeCache'][_0x406cec(0x233)](),this[_0x406cec(0x209)][_0x406cec(0x233)](),this[_0x406cec(0x1b2)](),this[_0x406cec(0x225)]['clear']();}[_0x569e68(0x1b9)](_0x3b6a4b,_0x370a5b,_0xbf78a7,_0x55ce2b){const _0x460aff=_0x569e68;if(!this['_otherFormulaData'][_0x460aff(0x22b)](_0x3b6a4b))this[_0x460aff(0x260)][_0x460aff(0x26e)](_0x3b6a4b,new Map());const _0x4b1a80=this[_0x460aff(0x260)][_0x460aff(0x210)](_0x3b6a4b);if(!_0x4b1a80['has'](_0x370a5b))_0x4b1a80[_0x460aff(0x26e)](_0x370a5b,new Map());const _0xad01de=_0x4b1a80[_0x460aff(0x210)](_0x370a5b);if(!_0xad01de[_0x460aff(0x22b)](_0xbf78a7))_0xad01de[_0x460aff(0x26e)](_0xbf78a7,new ObjectMatrix());_0xad01de[_0x460aff(0x210)](_0xbf78a7)[_0x460aff(0x211)](_0x55ce2b[_0x460aff(0x224)],_0x55ce2b[_0x460aff(0x1f2)],_0x55ce2b[_0x460aff(0x1e4)]);}[_0x569e68(0x229)](_0x924173,_0x147f36,_0x41ae44){const _0x163860=_0x569e68,_0x471f0e=this[_0x163860(0x260)][_0x163860(0x210)](_0x924173);if(_0x471f0e&&_0x471f0e[_0x163860(0x22b)](_0x147f36)){const _0x2346ba=_0x471f0e[_0x163860(0x210)](_0x147f36);_0x41ae44['forEach'](_0x3a8b57=>{const _0x12cdd9=_0x163860,_0x4320a6=_0x2346ba['get'](_0x3a8b57);if(_0x4320a6==null)return;_0x4320a6[_0x12cdd9(0x1d8)]((_0x1e5372,_0x16e96,_0x2d6dc7)=>{const _0x126006=_0x12cdd9;this[_0x126006(0x201)](_0x2d6dc7),this[_0x126006(0x265)](_0x2d6dc7);}),_0x2346ba[_0x12cdd9(0x1ee)](_0x3a8b57),this[_0x12cdd9(0x225)][_0x12cdd9(0x1ee)](_0x3a8b57);});if(_0x2346ba[_0x163860(0x22e)]===0x0)_0x471f0e[_0x163860(0x1ee)](_0x147f36);if(_0x471f0e['size']===0x0)this[_0x163860(0x260)][_0x163860(0x1ee)](_0x924173);}}[_0x569e68(0x203)](_0x3055a9,_0xd75fa7){const _0x23a659=_0x569e68,_0xe59812=this[_0x23a659(0x260)][_0x23a659(0x210)](_0x3055a9);if(_0xd75fa7&&_0xe59812&&_0xe59812['has'](_0xd75fa7)){const _0xbb73a5=_0xe59812[_0x23a659(0x210)](_0xd75fa7);this['_removeDependencyRTreeCacheById'](_0x3055a9,_0xd75fa7);for(const _0x4dd0da of _0xbb73a5[_0x23a659(0x1d2)]()){const _0x72cb8e=_0xbb73a5[_0x23a659(0x210)](_0x4dd0da);if(_0x72cb8e==null)continue;_0x72cb8e[_0x23a659(0x1d8)]((_0x57616e,_0x217848,_0x30392d)=>{const _0x8f14e1=_0x23a659;if(this[_0x8f14e1(0x209)][_0x8f14e1(0x210)](_0x30392d))this[_0x8f14e1(0x265)](_0x30392d);}),this[_0x23a659(0x225)]['delete'](_0x4dd0da);}_0xbb73a5[_0x23a659(0x233)]();}else{if(_0xe59812){for(const _0x4fa17e of _0xe59812[_0x23a659(0x1d2)]()){const _0x2b4d84=_0xe59812[_0x23a659(0x210)](_0x4fa17e);this[_0x23a659(0x22f)](_0x3055a9,_0x4fa17e);for(const _0x56d1f5 of _0x2b4d84['keys']()){const _0x3e465b=_0x2b4d84[_0x23a659(0x210)](_0x56d1f5);if(_0x3e465b==null)continue;_0x3e465b['forValue']((_0x1e93dc,_0x76a812,_0x380c03)=>{const _0x37ca22=_0x23a659;if(this[_0x37ca22(0x209)][_0x37ca22(0x210)](_0x380c03))this[_0x37ca22(0x265)](_0x380c03);}),this[_0x23a659(0x225)][_0x23a659(0x1ee)](_0x56d1f5);}}this[_0x23a659(0x260)][_0x23a659(0x1ee)](_0x3055a9);}}}['addFeatureFormulaDependency'](_0x25c64e,_0x406407,_0x5a9103,_0x4181a){const _0x46db3d=_0x569e68;if(!this[_0x46db3d(0x277)][_0x46db3d(0x22b)](_0x25c64e))this[_0x46db3d(0x277)]['set'](_0x25c64e,new Map());const _0x305147=this['_featureFormulaData'][_0x46db3d(0x210)](_0x25c64e);if(!_0x305147['has'](_0x406407))_0x305147[_0x46db3d(0x26e)](_0x406407,new Map());_0x305147[_0x46db3d(0x210)](_0x406407)['set'](_0x5a9103,_0x4181a[_0x46db3d(0x1e4)]);}['removeFeatureFormulaDependency'](_0x1bc0e6,_0x13e84c,_0x5844f1){const _0x53d033=_0x569e68,_0x44fc0a=this[_0x53d033(0x277)][_0x53d033(0x210)](_0x1bc0e6);if(_0x44fc0a&&_0x44fc0a['has'](_0x13e84c)){const _0x73ceb0=_0x44fc0a['get'](_0x13e84c);_0x5844f1[_0x53d033(0x25c)](_0x209848=>{const _0x47d9ad=_0x53d033,_0x27d5ae=_0x73ceb0['get'](_0x209848);if(_0x27d5ae==null)return;this[_0x47d9ad(0x201)](_0x27d5ae),_0x73ceb0[_0x47d9ad(0x1ee)](_0x209848),this['_removeAllTreeMap'](_0x27d5ae);});}}['clearFeatureFormulaDependency'](_0x1d3a86,_0x38a502){const _0x19534e=_0x569e68,_0x12d62a=this['_featureFormulaData'][_0x19534e(0x210)](_0x1d3a86);if(_0x38a502&&_0x12d62a&&_0x12d62a[_0x19534e(0x22b)](_0x38a502)){const _0x109f79=_0x12d62a[_0x19534e(0x210)](_0x38a502);this[_0x19534e(0x22f)](_0x1d3a86,_0x38a502),_0x109f79[_0x19534e(0x25c)](_0x2f95d0=>{const _0x544faa=_0x19534e;if(_0x2f95d0==null)return;this[_0x544faa(0x265)](_0x2f95d0);}),_0x109f79[_0x19534e(0x233)]();}else _0x12d62a&&(_0x12d62a[_0x19534e(0x25c)]((_0x20adc2,_0x2aee12)=>{const _0x2088e5=_0x19534e;this['_removeDependencyRTreeCacheById'](_0x1d3a86,_0x2aee12),_0x20adc2[_0x2088e5(0x25c)](_0x450096=>{if(_0x450096==null)return;this['_removeAllTreeMap'](_0x450096);});}),this[_0x19534e(0x277)][_0x19534e(0x1ee)](_0x1d3a86));}[_0x569e68(0x1de)](_0x49cd22,_0x5daa1e,_0x353d2d,_0x3705d1,_0x5b4883){const _0xff8ed8=_0x569e68;if(!this['_formulaData'][_0xff8ed8(0x22b)](_0x49cd22))this[_0xff8ed8(0x202)][_0xff8ed8(0x26e)](_0x49cd22,new Map());const _0xdbcfba=this[_0xff8ed8(0x202)]['get'](_0x49cd22);if(!_0xdbcfba[_0xff8ed8(0x22b)](_0x5daa1e))_0xdbcfba[_0xff8ed8(0x26e)](_0x5daa1e,new ObjectMatrix());_0xdbcfba[_0xff8ed8(0x210)](_0x5daa1e)[_0xff8ed8(0x211)](_0x353d2d,_0x3705d1,_0x5b4883[_0xff8ed8(0x1e4)]);}['removeFormulaDependency'](_0x2adae8,_0x37b4de,_0x3d636a,_0x133e29){const _0x3ab5b0=_0x569e68,_0x17c48c=this[_0x3ab5b0(0x202)][_0x3ab5b0(0x210)](_0x2adae8);if(_0x17c48c&&_0x17c48c[_0x3ab5b0(0x22b)](_0x37b4de)){const _0x1b11db=_0x17c48c[_0x3ab5b0(0x210)](_0x37b4de),_0x1ddb16=_0x1b11db[_0x3ab5b0(0x1f4)](_0x3d636a,_0x133e29);if(_0x1ddb16==null)return;this[_0x3ab5b0(0x201)](_0x1ddb16),_0x1b11db[_0x3ab5b0(0x206)](_0x3d636a,_0x133e29),this[_0x3ab5b0(0x265)](_0x1ddb16);}}['clearFormulaDependency'](_0x3be65d,_0x56e7bb){const _0x47b8c2=_0x569e68,_0x1b2280=this['_formulaData']['get'](_0x3be65d);if(_0x56e7bb&&_0x1b2280&&_0x1b2280[_0x47b8c2(0x22b)](_0x56e7bb)){const _0x4f849f=_0x1b2280[_0x47b8c2(0x210)](_0x56e7bb);this['_removeDependencyRTreeCacheById'](_0x3be65d,_0x56e7bb),_0x4f849f['forValue']((_0x1d29ca,_0x49e5fb,_0x4017e4)=>{const _0x1e7f28=_0x47b8c2;if(_0x4017e4==null)return!![];this[_0x1e7f28(0x265)](_0x4017e4);}),_0x4f849f[_0x47b8c2(0x200)]();}else _0x1b2280&&(_0x1b2280[_0x47b8c2(0x25c)]((_0x5d6182,_0x3618ce)=>{const _0x4d4016=_0x47b8c2;this['_removeDependencyRTreeCacheById'](_0x3be65d,_0x3618ce),_0x5d6182[_0x4d4016(0x1d8)]((_0x1c255d,_0x4718e8,_0x3b8e65)=>{const _0x76a511=_0x4d4016;if(_0x3b8e65==null)return!![];this[_0x76a511(0x265)](_0x3b8e65);});}),this[_0x47b8c2(0x202)][_0x47b8c2(0x1ee)](_0x3be65d));}[_0x569e68(0x201)](_0x4f6c37){const _0x35de14=_0x569e68;if(_0x4f6c37==null)return;const _0xa9c5d1=this[_0x35de14(0x209)]['get'](_0x4f6c37);if(_0xa9c5d1){const _0xc24056=[];for(const [_0x513f97,_0x26bdad]of _0xa9c5d1)for(const [_0x1ef324,_0x565c27]of _0x26bdad)_0xc24056['push']({'unitId':_0x513f97,'sheetId':_0x1ef324,'range':_0x565c27,'id':_0x4f6c37});this[_0x35de14(0x243)]['bulkRemove'](_0xc24056);}}[_0x569e68(0x228)](_0x5b35a1,_0x410c0c){const _0x445cd0=_0x569e68,_0x264c4c=this[_0x445cd0(0x27c)][_0x445cd0(0x210)](_0x5b35a1);if(_0x264c4c){const _0x26e976=_0x264c4c['get'](_0x410c0c);if(_0x26e976){for(const _0x50a04b of _0x26e976){this['_removeDependencyRTreeCache'](_0x50a04b),this['_removeAllTreeMap'](_0x50a04b);}_0x26e976[_0x445cd0(0x233)]();}}}[_0x569e68(0x23e)](){const _0x5cc735=_0x569e68;this[_0x5cc735(0x243)]['openKdTree']();}['closeKdTree'](){const _0x1d814c=_0x569e68;this[_0x1d814c(0x243)][_0x1d814c(0x227)]();}[_0x569e68(0x265)](_0xcc4da3){const _0x5f0f31=_0x569e68;if(_0xcc4da3==null)return;this[_0x5f0f31(0x209)][_0x5f0f31(0x1ee)](_0xcc4da3);}['_addAllTreeMap'](_0x5e69b0){const _0x7a45bb=_0x569e68,_0x96c3a7=_0x5e69b0[_0x7a45bb(0x214)];let _0x1ebfe1=this[_0x7a45bb(0x209)][_0x7a45bb(0x210)](_0x5e69b0[_0x7a45bb(0x1e4)]);for(let _0x150cc4=0x0;_0x150cc4<_0x96c3a7[_0x7a45bb(0x282)];_0x150cc4++){var _0x262121,_0x56a886;let {unitId:_0x2053fe,sheetId:_0x8959ec,range:_0x334b50}=_0x96c3a7[_0x150cc4];!_0x1ebfe1&&(_0x1ebfe1=new Map(),this[_0x7a45bb(0x209)][_0x7a45bb(0x26e)](_0x5e69b0[_0x7a45bb(0x1e4)],_0x1ebfe1));if(!_0x1ebfe1['has'](_0x2053fe))_0x1ebfe1['set'](_0x2053fe,new Map());const _0x38a641=_0x1ebfe1===null||_0x1ebfe1===void 0x0||(_0x262121=_0x1ebfe1[_0x7a45bb(0x210)](_0x2053fe))===null||_0x262121===void 0x0?void 0x0:_0x262121[_0x7a45bb(0x210)](_0x8959ec);if(_0x38a641)_0x334b50={'startRow':Math[_0x7a45bb(0x1c9)](_0x334b50['startRow'],_0x38a641[_0x7a45bb(0x20c)]),'startColumn':Math[_0x7a45bb(0x1c9)](_0x334b50['startColumn'],_0x38a641[_0x7a45bb(0x261)]),'endRow':Math[_0x7a45bb(0x252)](_0x334b50[_0x7a45bb(0x247)],_0x38a641[_0x7a45bb(0x247)]),'endColumn':Math[_0x7a45bb(0x252)](_0x334b50['endColumn'],_0x38a641[_0x7a45bb(0x20f)])};(_0x56a886=_0x1ebfe1[_0x7a45bb(0x210)](_0x2053fe))===null||_0x56a886===void 0x0||_0x56a886[_0x7a45bb(0x26e)](_0x8959ec,_0x334b50);}}};function __decorate(_0x4fecf4,_0x4cc4a8,_0x5d0d63,_0x349420){const _0x200349=_0x569e68;var _0x9f23c6=arguments[_0x200349(0x282)],_0x26ceff=_0x9f23c6<0x3?_0x4cc4a8:_0x349420===null?_0x349420=Object[_0x200349(0x234)](_0x4cc4a8,_0x5d0d63):_0x349420,_0x323997;if(typeof Reflect===_0x200349(0x1c3)&&typeof Reflect[_0x200349(0x244)]==='function')_0x26ceff=Reflect['decorate'](_0x4fecf4,_0x4cc4a8,_0x5d0d63,_0x349420);else{for(var _0x314f85=_0x4fecf4[_0x200349(0x282)]-0x1;_0x314f85>=0x0;_0x314f85--)if(_0x323997=_0x4fecf4[_0x314f85])_0x26ceff=(_0x9f23c6<0x3?_0x323997(_0x26ceff):_0x9f23c6>0x3?_0x323997(_0x4cc4a8,_0x5d0d63,_0x26ceff):_0x323997(_0x4cc4a8,_0x5d0d63))||_0x26ceff;}return _0x9f23c6>0x3&&_0x26ceff&&Object[_0x200349(0x1bc)](_0x4cc4a8,_0x5d0d63,_0x26ceff),_0x26ceff;}const BUILD_TIMESTAMP=Number['parseInt'](0x6a042e58);let UniverProFormulaEnginePlugin=class UniverProFormulaEnginePlugin extends UniverFormulaEnginePlugin{[_0x569e68(0x1b4)](){const _0x179c18=_0x569e68;if(this[_0x179c18(0x236)]()){var _0x16a371;this[_0x179c18(0x21e)][_0x179c18(0x1be)]([LexerTreeBuilder,{'useClass':LexerTreeProBuilder}]);if(!((_0x16a371=this[_0x179c18(0x24f)])===null||_0x16a371===void 0x0?void 0x0:_0x16a371[_0x179c18(0x284)]))[[ICalculateFormulaService,{'useClass':CalculateFormulaProService}],[IDependencyManagerService,{'useClass':DependencyManagerProService}],[IFormulaDependencyGenerator,{'useClass':FormulaDependencyProGenerator}]][_0x179c18(0x25c)](_0x1ac235=>this['_injector'][_0x179c18(0x1be)](_0x1ac235));}else{var _0x3f1bc6;this[_0x179c18(0x21e)]['add']([LexerTreeBuilder,{'useClass':LexerTreeBuilder}]);if(!((_0x3f1bc6=this[_0x179c18(0x24f)])===null||_0x3f1bc6===void 0x0?void 0x0:_0x3f1bc6[_0x179c18(0x284)]))[[ICalculateFormulaService,{'useClass':CalculateFormulaService}],[IDependencyManagerService,{'useClass':DependencyManagerService}],[IFormulaDependencyGenerator,{'useClass':FormulaDependencyGenerator}]][_0x179c18(0x25c)](_0xabd599=>this[_0x179c18(0x21e)]['add'](_0xabd599));}}['_initLicenseValid'](){const _0x63f8d9=_0x569e68;var _0x282d47;const {ls:_0x55783b,pbk:_0x1ddeaf}=(_0x282d47=this['_configService']['getConfig'](LS_CONFIG_KEY))!==null&&_0x282d47!==void 0x0?_0x282d47:{};if(!_0x55783b||!_0x1ddeaf)return![];const _0xa89318=getLicenseInfo(_0x55783b,_0x1ddeaf),_0x1f8648=_0xa89318['message'];if(_0xa89318[_0x63f8d9(0x1b1)]){if(isFeatureAuthorizedWithinTime(_0x1f8648,'sf',BUILD_TIMESTAMP))return getSheetFeatureLimit(_0x1f8648,!![],'a',!![],![],![]);}return![];}};_defineProperty(UniverProFormulaEnginePlugin,_0x569e68(0x25d),name),_defineProperty(UniverProFormulaEnginePlugin,_0x569e68(0x1c0),version),UniverProFormulaEnginePlugin=__decorate([DependentOn(UniverLicensePlugin)],UniverProFormulaEnginePlugin);export{LexerTreeProBuilder,UniverProFormulaEnginePlugin};
|
|
1
|
+
import{UniverLicensePlugin as e}from"@univerjs-pro/license";import{DependentOn as t,Rectangle as n,requestImmediateMacroTask as r}from"@univerjs/core";import{CELL_INVERTED_INDEX_CACHE as i,CalculateFormulaService as a,DEFAULT_CYCLE_REFERENCE_COUNT as o,DEFAULT_INTERVAL_COUNT as s,DependencyManagerBaseService as c,ENGINE_FORMULA_PLUGIN_CONFIG_KEY as l,FORMULA_REF_TO_ARRAY_CACHE as u,FormulaDependencyGenerator as d,FormulaDependencyTree as f,FormulaDependencyTreeType as p,FormulaDependencyTreeVirtual as m,FormulaExecuteStageType as h,ICalculateFormulaService as g,IDependencyManagerService as _,IFormulaDependencyGenerator as v,LexerTreeBuilder as y,UniverFormulaEnginePlugin as b,generateAstNode as x,generateRandomDependencyTreeId as S}from"@univerjs/engine-formula";export*from"@univerjs/engine-formula";var C=`@univerjs-pro/engine-formula`,w=`0.23.0`;function T(){return{totalFormulaNodes:0,totalSharedFormulaGroups:0,compressedSharedFormulaGroups:0,compressibleSharedFormulaGroups:0,expandedSharedFormulaGroups:0,totalVirtualFormulaNodesInCompressedGroups:0,totalVirtualFormulaNodesInCompressibleGroups:0,skippedExpandedDependencyRegistrationCount:0,sharedPatternCount:0,sharedSourceCoverageEntryCount:0,fallbackReasonCounts:{}}}function E(e,t={}){var n;let r=(n=t.minSharedGroupSize)==null?32:n,i=T(),a=D(e,i),o=[];return a.forEach(e=>{let t=O(e,r);if(o.push(t),i.totalSharedFormulaGroups++,t.mode===`candidate`){i.compressibleSharedFormulaGroups++,i.totalVirtualFormulaNodesInCompressibleGroups+=t.virtualFormulaCount;return}if(i.expandedSharedFormulaGroups++,t.fallbackReason){var n;i.fallbackReasonCounts[t.fallbackReason]=((n=i.fallbackReasonCounts[t.fallbackReason])==null?0:n)+1}}),{groups:o,metrics:i}}function D(e,t){let n=new Map;return Object.keys(e).forEach(r=>{let i=e[r];i!=null&&Object.keys(i).forEach(e=>{let a=i[e];a!=null&&Object.keys(a).forEach(i=>{let o=a[Number(i)];o!=null&&Object.keys(o).forEach(a=>{let s=o[Number(a)];if(s==null||(t.totalFormulaNodes++,s.si==null))return;let c=String(s.si),l=te(r,e,c),u=n.get(l);u==null&&(u={groupId:l,unitId:r,sheetId:e,si:c,members:[]},n.set(l,u)),u.members.push({row:Number(i),col:Number(a),item:s})})})})}),n}function O(e,t){let n=k(e.members),r=n.maxCol-n.minCol+1,i=n.maxRow-n.minRow+1,a={unitId:e.unitId,sheetId:e.sheetId,range:{startRow:n.minRow,endRow:n.maxRow,startColumn:n.minCol,endColumn:n.maxCol}},o=e.members.filter(e=>A(e.item)),s=o.length===1?{unitId:e.unitId,sheetId:e.sheetId,row:o[0].row,col:o[0].col}:void 0,c=ee(e,a,o.length,t);return{groupId:e.groupId,unitId:e.unitId,sheetId:e.sheetId,si:e.si,anchor:s,fillRange:a,width:r,height:i,size:e.members.length,virtualFormulaCount:Math.max(0,e.members.length-1),mode:c==null?`candidate`:`expanded`,fallbackReason:c}}function k(e){let t=1/0,n=-1/0,r=1/0,i=-1/0;for(let a=0;a<e.length;a++){let o=e[a];t=Math.min(t,o.row),n=Math.max(n,o.row),r=Math.min(r,o.col),i=Math.max(i,o.col)}return{minRow:t,maxRow:n,minCol:r,maxCol:i}}function ee(e,t,n,r){var i;if(n===0)return`missing-anchor-formula`;if(n>1)return`ambiguous-anchor-formula`;if(!ne(e.members,t))return`non-rectangular-fill-range`;if(e.members.length<r)return`small-group`;let a=e.members.find(e=>A(e.item)),o=(i=a==null?void 0:a.item.f)==null?``:i;if(ae(o))return`external-reference`;if(re(o))return`unsupported-dynamic-reference`;if(ie(o))return`volatile-function`;if(oe(o))return`array-formula`;if(se(o))return`spill-formula`}function te(e,t,n){return[e,t,n].join(`\0`)}function A(e){var t,n;return((t=e.x)==null?0:t)===0&&((n=e.y)==null?0:n)===0}function ne(e,t){let n=t.range.endColumn-t.range.startColumn+1;if(n*(t.range.endRow-t.range.startRow+1)!==e.length)return!1;let r=new Set;for(let i=0;i<e.length;i++){let a=e[i],o=(a.row-t.range.startRow)*n+(a.col-t.range.startColumn);if(r.has(o))return!1;r.add(o)}return!0}function re(e){return j(e,[`INDIRECT`,`OFFSET`])}function ie(e){return j(e,[`RAND`,`RANDBETWEEN`,`NOW`,`TODAY`])}function ae(e){return/\[[^\]]+\]/.test(e)}function oe(e){return/^\s*\{=.*\}\s*$/.test(e)}function se(e){return/#/.test(e)}function j(e,t){for(let n=0;n<t.length;n++)if(RegExp(`(^|[^A-Z0-9_.])${t[n]}\\s*\\(`,`i`).test(e))return!0;return!1}function M(e){"@babel/helpers - typeof";return M=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},M(e)}function ce(e,t){if(M(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(M(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function le(e){var t=ce(e,`string`);return M(t)==`symbol`?t:t+``}function N(e,t,n){return(t=le(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ue=class extends d{constructor(...e){super(...e),N(this,`_featureFormulaDirtyDependencies`,[]),N(this,`_calculationTreeCache`,new Map),N(this,`_calculationNodeDataCache`,new Map),N(this,`_forcedRecalculationNodeIndices`,new Set),N(this,`_sharedFormulaCompressionMetrics`,T()),N(this,`_cacheDependencyTreeModelRangeList`,!1)}dispose(){super.dispose(),this._dependencyTreeCache.clear(),this._calculationTreeCache.clear(),this._calculationNodeDataCache=new Map,this._featureFormulaDirtyDependencies.length=0,this._forcedRecalculationNodeIndices.clear(),this._sharedFormulaCompressionMetrics=T()}clearCalculatedDirty(e){this._dependencyManagerService.clearCalculatedDirty(e)}clearCachedCalculationNodeData(){this._calculationNodeDataCache=new Map}clearCachedCalculationTree(){this._calculationTreeCache.clear()}getCachedCalculationNodeData(e){return this._calculationNodeDataCache.get(e)}getCalculationOrder(){return this._dependencyManagerService.getCalculationOrder({detectCycles:!0})}getSharedFormulaCompressionMetrics(){return this._sharedFormulaCompressionMetrics}hasDynamicDepsByIndex(e){return this._dependencyManagerService.hasDynamicDepsByIndex(e)}refreshDynamicDepsByIndex(e,t){return this._dependencyManagerService.refreshDynamicDepsByIndex(e,t)}hasUncalculatedDirtyPrecedentByIndex(e,t){return this._dependencyManagerService.hasUncalculatedDirtyPrecedentByIndex(e,t)}async getAllDependencyJson(){this._featureFormulaDirtyDependencies.length=0,this._updateRangeFlatten();let e=this._currentConfigService.getFormulaData(),t=E(e);this._sharedFormulaCompressionMetrics=t.metrics;let n=this._otherFormulaManagerService.getOtherFormulaData(),r=this._currentConfigService.getUnitData();this._cacheDependencyTreeModelRangeList=!0;try{return await this._generateTreeListPro(e,n,r,t),this._getAllDependencyJsonPro(this._calculationTreeCache)}finally{this._cacheDependencyTreeModelRangeList=!1,this._featureFormulaDirtyDependencies.length=0}}async generatePro(e=!1){this._featureFormulaDirtyDependencies.length=0,this._updateRangeFlatten();let t=this._currentConfigService.getFormulaData(),n=E(t);this._sharedFormulaCompressionMetrics=n.metrics;let r=this._otherFormulaManagerService.getOtherFormulaData(),i=this._currentConfigService.getClearDependencyTreeCache(),a=this._dependencyManagerService;i!=null&&Object.keys(i).forEach(e=>{e!=null&&Object.keys(i[e]).forEach(t=>{t!=null&&(a.clearOtherFormulaDependency(e,t),a.clearFeatureFormulaDependency(e,t),a.clearFormulaDependency(e,t),this._clearCalculationTreeCache(e,t))})});let o=this._currentConfigService.getUnitData();this._cacheDependencyTreeModelRangeList=e;try{await this._generateTreeListPro(t,r,o,n)}finally{this._cacheDependencyTreeModelRangeList=!1}await this._markDirtyDependenciesPro(),this._featureFormulaDirtyDependencies.length=0,this._runtimeService.clearArrayObjectCache();let s=a.getCalculationOrder({detectCycles:!0}),c=this._calculationTreeCache;return e&&this._runtimeService.setDependencyTreeModelData(this._getAllDependencyJsonPro(c)),{calculationOrderResult:s,dependencyTree:c}}async _generateTreeListPro(e,t,n,r){let i=Object.keys(e),a=Object.keys(t);this._registerFeatureFormulasPro(),await this._registerFormulasPro(i,e,n,r),await this._registerOtherFormulasPro(t,a)}_registerFeatureFormulasPro(){this._featureCalculationManagerService.getReferenceExecutorMap().forEach((e,t)=>{e.forEach((e,t)=>{e.forEach((e,t)=>{let n=this._dependencyManagerService.getFeatureFormulaDependency(e.unitId,e.subUnitId,t);this._getFeatureFormulaTreePro(t,n,e)})})})}_getFeatureFormulaTreePro(e,t,n){let{unitId:r,subUnitId:i,dependencyRanges:a,getDirtyData:o}=n,s=new f(t||S(this._dependencyManagerService));s.unitId=r,s.subUnitId=i,s.rangeList=a,s.getDirtyData=o;let c=o(this._currentConfigService.getDirtyData(),this._runtimeService.getAllRuntimeData()),l=this._convertDirtyRangesToUnitRange(c.dirtyRanges);s.featureDirtyRanges=l,s.featureId=e,s.type=p.FEATURE_FORMULA;let u=this._dependencyManagerService.getFeatureFormulaDependencyPro(n.unitId,n.subUnitId,e),d;return u===void 0&&(u=this._dependencyManagerService.addFeatureFormulaDependencyPro(r,i,e,s),d=u),l.length>0&&this._featureFormulaDirtyDependencies.push({node:this._dependencyManagerService.getFeatureFormulaDependencyNodePro(r,i,e),dirtyRanges:l}),this._cacheCalculationTree(u,s),this._releaseDependencyTree(s),d}async _registerOtherFormulasPro(e,t){for(let n of t){let t=e[n];if(t==null)continue;let r=Object.keys(t);for(let e of r){let r=t[e];if(r==null)continue;let{rowCount:i=1/0,columnCount:a=1/0}=this._currentConfigService.getSheetRowColumnCount(n,e)||{},o=Object.keys(r);for(let t of o){let o=this._dependencyManagerService.hasOtherFormulaDataMainData(t),{f:s,ranges:c}=r[t],l=!1;o&&(l=!0);let{firstRow:u,firstColumn:d}=this._getFirstCellOfRange(c),h=new f(S(this._dependencyManagerService));for(let r=0;r<c.length;r++){let o=c[r],{startRow:f,startColumn:g}=o,{endRow:_,endColumn:v}=o;_=Math.min(_,i-1),v=Math.min(v,a-1);for(let r=f;r<=_;r++)for(let i=g;i<=v;i++){let a=i-d,o=r-u,c=this._dependencyManagerService.getOtherFormulaDependencyPro(n,e,t,a,o);if(a===0&&o===0){h.formula=s,h.unitId=n,h.subUnitId=e,h.formulaId=t,h.type=p.OTHER_FORMULA,h.isCache=l,h.node||await this._initialAstNodeAndRanges(h);let r=this._getFeatureFormulaDependencyNodes(h.rangeList);c===void 0?c=this._dependencyManagerService.addOtherFormulaDependencyPro(n,e,t,h,r):r.length>0&&(c=this._dependencyManagerService.addOtherFormulaDependencyPro(n,e,t,h,r,`merge`)),this._ensureTreeNodeForCalculation(h),this._cacheCalculationTree(c,h),this._syncForcedRecalculationNodeIndex(c,h);continue}let f=new m;f.treeId=S(this._dependencyManagerService),f.refTree=h,f.refOffsetX=a,f.refOffsetY=o,f.isCache=l,f.type=p.OTHER_FORMULA;let g=this._getFeatureFormulaDependencyNodes(f.rangeList);c===void 0?c=this._dependencyManagerService.addOtherFormulaDependencyPro(n,e,t,f,g):g.length>0&&(c=this._dependencyManagerService.addOtherFormulaDependencyPro(n,e,t,f,g,`merge`)),this._cacheCalculationTree(c,f),this._syncForcedRecalculationNodeIndex(c,f),this._releaseDependencyTree(f)}}this._releaseDependencyTree(h)}}}}async _registerFormulasPro(e,t,n,r=E(t)){let i=this._createSharedFormulaGroupMap(r.groups),a=new Map,o=this._dependencyManagerService;for(let r of e){let e=t[r];if(e==null)continue;let s=Object.keys(e);for(let t of s){let s=new Map,c=[],l=e[t];if(l==null)continue;let u=Object.keys(l);for(let e of u){let u=Number.parseInt(e,10),d=l[u];if(d==null)continue;let f=Object.keys(d);for(let e of f){let l=Number.parseInt(e,10),f=d[l];if(f==null)continue;let{x:p=0,y:m=0,si:h}=f;if(!(p===0&&m===0&&h!=null))continue;let g=this._createFDtree(r,t,u,l,n,f),_=this._createSharedFormulaGroupId(r,t,h),v=i.get(_),y=(v==null?void 0:v.mode)===`candidate`?await this._analyzeSharedFormulaCompression(g,v):void 0,b=o.getFormulaDependencyPro(r,t,u,l);if((y==null?void 0:y.mode)===`compressed`)b=o.addFormulaDependencyNodeOnlyPro(r,t,u,l),a.set(_,y),c.push(y);else if((y==null?void 0:y.mode)===`expanded`&&(a.set(_,y),this._recordExpandedSharedFormulaGroupMetrics(y)),b===void 0){g.node||await this._initialAstNodeAndRanges(g);let e=this._getFeatureFormulaDependencyNodes(g.rangeList);b=o.addFormulaDependencyPro(r,t,u,l,g,e)}else{await this._ensureTreeInitializedForFeatureDependencies(g);let e=this._getFeatureFormulaDependencyNodes(g.rangeList);e.length>0&&(b=o.addFormulaDependencyPro(r,t,u,l,g,e,`merge`))}this._ensureTreeNodeForCalculation(g),s.set(h,g),this._cacheCalculationTree(b,g),this._syncForcedRecalculationNodeIndex(b,g)}}for(let e of u){let i=Number.parseInt(e,10),c=l[i];if(c==null)continue;let u=Object.keys(c);for(let e of u){let l=Number.parseInt(e,10),u=c[l];if(u==null)continue;let{x:d=0,y:f=0,si:p}=u;if(d===0&&f===0&&p!=null)continue;let h=o.getFormulaDependencyPro(r,t,i,l),g=p==null?void 0:this._createSharedFormulaGroupId(r,t,p),_=g==null?void 0:a.get(g);if((_==null?void 0:_.mode)===`compressed`&&p!=null&&s.has(p)){h=o.addFormulaDependencyNodeOnlyPro(r,t,i,l);let e=s.get(p),{x:n=0,y:a=0}=u;this._cacheCompressedVirtualCalculationTree(h,e,n,a),this._syncCompressedVirtualForcedRecalculationNodeIndex(h,e);continue}let v;if(p!=null&&s.has(p)){let e=s.get(p);v=this._createVirtualFDtree(e,u)}else v=this._createFDtree(r,t,i,l,n,u);if(h===void 0){!v.isVirtual&&!v.node&&await this._initialAstNodeAndRanges(v);let e=this._getFeatureFormulaDependencyNodes(v.rangeList);h=o.addFormulaDependencyPro(r,t,i,l,v,e)}else{await this._ensureTreeInitializedForFeatureDependencies(v);let e=this._getFeatureFormulaDependencyNodes(v.rangeList);e.length>0&&(h=o.addFormulaDependencyPro(r,t,i,l,v,e,`merge`))}this._cacheCalculationTree(h,v),this._syncForcedRecalculationNodeIndex(h,v),v instanceof m?this._releaseDependencyTree(v):p!=null&&s.has(p)||this._releaseDependencyTree(v)}}for(let e=0;e<c.length;e++){let t=c[e];t.patterns&&t.group.fillRange&&(o.registerCompressedSharedFormulaGroup({groupId:t.group.groupId,fillRange:t.group.fillRange,patterns:t.patterns}),this._recordCompressedSharedFormulaGroupMetrics(t))}s.forEach(e=>this._releaseDependencyTree(e)),s.clear()}}}_createSharedFormulaGroupMap(e){let t=new Map;for(let n=0;n<e.length;n++)t.set(e[n].groupId,e[n]);return t}_createSharedFormulaGroupId(e,t,n){return[e,t,String(n)].join(`\0`)}async _analyzeSharedFormulaCompression(e,t){if(t.fillRange==null)return{group:t,mode:`expanded`,fallbackReason:`non-rectangular-fill-range`};e.node||await this._initialAstNodeAndRanges(e);let n=this._getFeatureFormulaDependencyNodes(e.rangeList),r=this._getSharedFormulaUnsupportedReason(e,n.length);if(r)return{group:t,mode:`expanded`,fallbackReason:r};let i=this._convertSharedFormulaPatterns(e);return i==null||i.length===0?{group:t,mode:`expanded`,fallbackReason:`unsupported-range-pattern`}:this._hasSharedFormulaSelfOverlap(t.fillRange,i)?{group:t,mode:`expanded`,fallbackReason:`self-overlap`}:{group:t,mode:`compressed`,patterns:i}}_getSharedFormulaUnsupportedReason(e,t){if(e.addressFunctionNodes&&e.addressFunctionNodes.length>0)return`unsupported-dynamic-reference`;if(t>0||/\$/.test(e.formula))return`unsupported-range-pattern`}_convertSharedFormulaPatterns(e){let t=[],n=new Set,r=e.row,i=e.column;for(let a=0;a<e.rangeList.length;a++){let o=e.rangeList[a],s=this._normalizeSharedFormulaRange(o.range),c;c=s.startRow===s.endRow&&s.startColumn===s.endColumn?{kind:`cell`,unitId:o.unitId,sheetId:o.sheetId,rowDelta:s.startRow-r,colDelta:s.startColumn-i}:{kind:`range`,unitId:o.unitId,sheetId:o.sheetId,startRowDelta:s.startRow-r,startColDelta:s.startColumn-i,endRowDelta:s.endRow-r,endColDelta:s.endColumn-i};let l=JSON.stringify(c);n.has(l)||(n.add(l),t.push(c))}return t}_hasSharedFormulaSelfOverlap(e,t){for(let r=0;r<t.length;r++){let i=this._computeSharedFormulaSourceCoverage(e,t[r]);if(!(i.unitId!==e.unitId||i.sheetId!==e.sheetId)&&n.intersects(i.range,e.range))return!0}return!1}_computeSharedFormulaSourceCoverage(e,t){if(t.kind===`cell`)return{unitId:t.unitId,sheetId:t.sheetId,range:this._normalizeSharedFormulaRange({startRow:e.range.startRow+t.rowDelta,endRow:e.range.endRow+t.rowDelta,startColumn:e.range.startColumn+t.colDelta,endColumn:e.range.endColumn+t.colDelta})};let n=Math.min(t.startRowDelta,t.endRowDelta),r=Math.max(t.startRowDelta,t.endRowDelta),i=Math.min(t.startColDelta,t.endColDelta),a=Math.max(t.startColDelta,t.endColDelta);return{unitId:t.unitId,sheetId:t.sheetId,range:this._normalizeSharedFormulaRange({startRow:e.range.startRow+n,endRow:e.range.endRow+r,startColumn:e.range.startColumn+i,endColumn:e.range.endColumn+a})}}_normalizeSharedFormulaRange(e){return{startRow:Math.min(e.startRow,e.endRow),endRow:Math.max(e.startRow,e.endRow),startColumn:Math.min(e.startColumn,e.endColumn),endColumn:Math.max(e.startColumn,e.endColumn)}}_recordCompressedSharedFormulaGroupMetrics(e){e.mode!==`compressed`||e.patterns==null||(this._sharedFormulaCompressionMetrics.compressedSharedFormulaGroups++,this._sharedFormulaCompressionMetrics.totalVirtualFormulaNodesInCompressedGroups+=e.group.virtualFormulaCount,this._sharedFormulaCompressionMetrics.skippedExpandedDependencyRegistrationCount+=e.group.size*e.patterns.length,this._sharedFormulaCompressionMetrics.sharedPatternCount+=e.patterns.length,this._sharedFormulaCompressionMetrics.sharedSourceCoverageEntryCount+=e.patterns.length)}_recordExpandedSharedFormulaGroupMetrics(e){var t;e.mode!==`expanded`||e.fallbackReason==null||(this._sharedFormulaCompressionMetrics.expandedSharedFormulaGroups++,this._sharedFormulaCompressionMetrics.fallbackReasonCounts[e.fallbackReason]=((t=this._sharedFormulaCompressionMetrics.fallbackReasonCounts[e.fallbackReason])==null?0:t)+1)}async _markDirtyDependenciesPro(){let e=this._dependencyManagerService;if(this._currentConfigService.isForceCalculate()){e.markAllDirty();return}let t=this._currentConfigService.getDirtyRanges();t.length>0&&e.markRangesChanged(t,{includeFormulaCells:!0}),e.markDirtyFeatureCalculations(this._currentConfigService.getDirtyUnitFeatureMap()),e.markDirtyOtherFormulas(this._currentConfigService.getDirtyUnitOtherFormulaMap()),e.markDirtySheetNames(this._currentConfigService.getDirtyNameMap()),this._markForcedRecalculationNodesPro(e),await this._markDirtyDefinedNameDependenciesPro(e)}_markForcedRecalculationNodesPro(e){if(this._forcedRecalculationNodeIndices.size===0)return;let t=[];this._forcedRecalculationNodeIndices.forEach(e=>{t.push(e)}),e.markIndicesChanged(t)}async _markDirtyDefinedNameDependenciesPro(e){let t=this._currentConfigService.getDirtyDefinedNameMap();if(!this._hasDirtyDefinedNames(t))return;let n=[];for(let[e,t]of this._calculationTreeCache)t.formula&&t.formula.length>0&&this._includeDirtyDefinedNamePro(t.formula)&&n.push(e);n.length>0&&e.markIndicesChanged(n)}_cacheCalculationTree(e,t){let n={unitId:t.unitId,subUnitId:t.subUnitId,formula:t.formula,row:t.row,column:t.column,rowCount:t.rowCount,columnCount:t.columnCount,refOffsetX:t.refOffsetX,refOffsetY:t.refOffsetY,formulaId:t.formulaId,featureId:t.featureId,getDirtyData:t.getDirtyData,hasDynamicDeps:t.addressFunctionNodes.length>0,type:t.type};(t.addressFunctionNodes.length>0||this._cacheDependencyTreeModelRangeList)&&(n.rangeList=t.rangeList);let r=t.nodeData;(r==null?void 0:r.node)!=null&&this._calculationNodeDataCache.set(e,{node:r.node,refOffsetX:r.refOffsetX,refOffsetY:r.refOffsetY}),this._calculationTreeCache.set(e,n)}_cacheCompressedVirtualCalculationTree(e,t,n,r){this._calculationTreeCache.set(e,{unitId:t.unitId,subUnitId:t.subUnitId,formula:t.formula,row:t.row+r,column:t.column+n,rowCount:t.rowCount,columnCount:t.columnCount,refOffsetX:n,refOffsetY:r,formulaId:t.formulaId,featureId:t.featureId,getDirtyData:null,hasDynamicDeps:!1,type:t.type}),this._cacheDependencyTreeModelRangeList&&(this._calculationTreeCache.get(e).rangeList=this._getOffsetRangeList(t.rangeList,n,r)),t.node!=null&&this._calculationNodeDataCache.set(e,{node:t.node,refOffsetX:n,refOffsetY:r})}_getOffsetRangeList(e,t,n){return t===0&&n===0?e:e.map(e=>({unitId:e.unitId,sheetId:e.sheetId,range:{startRow:e.range.startRow+n,endRow:e.range.endRow+n,startColumn:e.range.startColumn+t,endColumn:e.range.endColumn+t}}))}_getAllDependencyJsonPro(e){let t=this._dependencyManagerService,n=[];for(let[a,o]of e){var r,i;let s=[],c=[];t.forEachPrecedentNodeByIndex(a,t=>{e.has(t)&&s.push(t)}),t.forEachDependentNodeByIndex(a,t=>{e.has(t)&&c.push(t)}),n.push({children:s,parents:c,treeId:a,formula:o.formula,row:o.row,column:o.column,unitId:o.unitId,subUnitId:o.subUnitId,refOffsetX:o.refOffsetX,refOffsetY:o.refOffsetY,rangeList:(r=o.rangeList)==null?[]:r,refTreeId:void 0,formulaId:o.formulaId,featureId:o.featureId,type:(i=o.type)==null?this._inferDependencyTreeTypePro(o):i})}return n}_inferDependencyTreeTypePro(e){return e.featureId==null?e.formulaId==null?p.NORMAL_FORMULA:p.OTHER_FORMULA:p.FEATURE_FORMULA}_clearCalculationTreeCache(e,t){for(let[n,r]of this._calculationTreeCache)r.unitId===e&&r.subUnitId===t&&(this._calculationTreeCache.delete(n),this._calculationNodeDataCache.delete(n),this._forcedRecalculationNodeIndices.delete(n))}_releaseDependencyTree(e){if(e instanceof m){e.dispose();return}let t=e;t.dispose(),t.node=null}_hasDirtyDefinedNames(e){let t=Object.keys(e);for(let n=0;n<t.length;n++){let r=e[t[n]];if(r!=null&&Object.keys(r).length>0)return!0}return!1}_syncForcedRecalculationNodeIndex(e,t){if(!t.formula){this._forcedRecalculationNodeIndices.delete(e);return}let n=t.nodeData.node;n&&this._detectForcedRecalculationNodePro(n)?this._forcedRecalculationNodeIndices.add(e):this._forcedRecalculationNodeIndices.delete(e)}_syncCompressedVirtualForcedRecalculationNodeIndex(e,t){t.node&&this._detectForcedRecalculationNodePro(t.node)?this._forcedRecalculationNodeIndices.add(e):this._forcedRecalculationNodeIndices.delete(e)}_detectForcedRecalculationNodePro(e){if(e.isForcedCalculateFunction())return!0;let t=e.getChildren();for(let e=0;e<t.length;e++)if(this._detectForcedRecalculationNodePro(t[e]))return!0;return!1}_includeDirtyDefinedNamePro(e){let t=this._currentConfigService.getExecuteUnitId();if(t==null)return!1;let n=this._currentConfigService.getDirtyDefinedNameMap()[t];if(n==null)return!1;let r=Object.keys(n);for(let t=0;t<r.length;t++)if(e.indexOf(r[t])>-1)return!0;return!1}async _ensureTreeInitializedForFeatureDependencies(e){if(this._featureFormulaDirtyDependencies.length===0||e.isVirtual)return;let t=e;t.node||await this._initialAstNodeAndRanges(t)}_ensureTreeNodeForCalculation(e){if(e.node||this._lexer==null||this._astTreeBuilder==null)return;let{unitId:t,formula:n}=e;e.node=x(t,n,this._lexer,this._astTreeBuilder,this._currentConfigService),e.addressFunctionNodes=this._getAddressFunctionNodeList(e.node)}_getFeatureFormulaDependencyNodes(e){if(this._featureFormulaDirtyDependencies.length===0||e.length===0)return[];let t=[];for(let n=0;n<this._featureFormulaDirtyDependencies.length;n++){let r=this._featureFormulaDirtyDependencies[n];this._rangesIntersectAny(e,r.dirtyRanges)&&t.push(r.node)}return t}_rangesIntersectAny(e,t){for(let r=0;r<e.length;r++){let i=e[r];for(let e=0;e<t.length;e++){let r=t[e];if(i.unitId===r.unitId&&i.sheetId===r.sheetId&&n.intersects(i.range,r.range))return!0}}return!1}async _initialAstNodeAndRanges(e){let{unitId:t,formula:n}=e,r=x(t,n,this._lexer,this._astTreeBuilder,this._currentConfigService);e.node=r,e.addressFunctionNodes=this._getAddressFunctionNodeList(r),this._runtimeService.setCurrent(e.row,e.column,e.rowCount,e.columnCount,e.subUnitId,e.unitId);let i=await this._getRangeListByNode({node:r,refOffsetX:e.refOffsetX,refOffsetY:e.refOffsetY});e.pushRangeList(i)}_createFDtree(e,t,n,r,i,a){let{f:o}=a,s=new f(S(this._dependencyManagerService)),c=i[e][t];return s.formula=o,s.unitId=e,s.subUnitId=t,s.row=n,s.column=r,s.rowCount=c.rowCount,s.columnCount=c.columnCount,s}},de=class extends a{constructor(...e){super(...e),N(this,`_dynamicRuntimeRanges`,void 0)}async execute(e){this._runtimeService.setFormulaExecuteStage(h.START),this._executionInProgressListener$.next(this._runtimeService.getRuntimeState()),this._currentConfigService.load(e),this._runtimeService.reset();let t=e.maxIteration||o;this._isCalculateTreeModel=e.isCalculateTreeModel||!1,this._executeLock.acquire(`FORMULA_EXECUTION_LOCK`,async()=>{await this._executeStep(t),this._runtimeService.setFormulaExecuteStage(h.CALCULATION_COMPLETED),this._executionInProgressListener$.next(this._runtimeService.getRuntimeState()),this._executionCompleteListener$.next(this._runtimeService.getAllRuntimeData()),i.clear(),this._runtimeService.reset()})}async _executeStep(e=o){let t=await this._apply(!1,e);if(t==null)return;let{arrayFormulaRange:n}=t,{dirtyRanges:r,excludedCell:i}=this._getArrayFormulaDirtyRangeAndExcludedRange(n,{});return r==null||r.length===0?!0:(u.clear(),this._currentConfigService.loadDirtyRangesAndExcludedCell(r,i),await this._apply(!0,e),!0)}async _apply(e=!1,t=o){e?this._runtimeService.setFormulaExecuteStage(h.START_DEPENDENCY_ARRAY_FORMULA):this._runtimeService.setFormulaExecuteStage(h.START_DEPENDENCY),this._executionInProgressListener$.next(this._runtimeService.getRuntimeState());let n=this._configService.getConfig(l),r=(n==null?void 0:n.intervalCount)||s,i=this._formulaDependencyGenerator;try{let{calculationOrderResult:n,dependencyTree:a}=await i.generatePro(this._isCalculateTreeModel),o=this._getCalculationPlanTreeCount(n,a,t);n.hasCycle&&this._runtimeService.enableCycleDependency(),e?(this._runtimeService.setFormulaExecuteStage(h.START_CALCULATION_ARRAY_FORMULA),this._runtimeService.setTotalArrayFormulasToCalculate(o)):(this._runtimeService.setFormulaExecuteStage(h.START_CALCULATION),this._runtimeService.setTotalFormulasToCalculate(o)),this._executionInProgressListener$.next(this._runtimeService.getRuntimeState());let s=[],c=[],l=new Set,u=!1,d=0,f=0;for(this._runtimeService.setFormulaCycleIndex(0);;){let p=!1;if(await this._forEachCalculationPlanTree(n,a,t,async(t,n,a)=>{if(this._runtimeService.setFormulaCycleIndex(a==null?0:a),await this._waitForExecutionSlot(d,r,e,t,s))return u=!0,!1;await this._calculateDependencyTree(t,n,i)&&this._shouldRescheduleAfterDynamicChange(i,n,l)&&(p=!0),l.has(n)||(l.add(n),c.push(n)),d++}),n.calculationForest.length=0,u||!p)break;if(f++,f>8)throw Error(`Dynamic dependency did not stabilize`);n=i.getCalculationOrder(),n.hasCycle&&this._runtimeService.enableCycleDependency(),o=this._getCalculationPlanTreeCount(n,a,t),e?this._runtimeService.setTotalArrayFormulasToCalculate(o):this._runtimeService.setTotalFormulasToCalculate(o)}for(let e=0;e<s.length;e++)s[e]();return c.length>0&&i.clearCalculatedDirty(c),u?void 0:(o>0||c.length>0?this._runtimeService.markedAsSuccessfullyExecuted():e||this._runtimeService.markedAsNoFunctionsExecuted(),this._runtimeService.getAllRuntimeData())}finally{i.clearCachedCalculationNodeData(),i.clearCachedCalculationTree(),this._dynamicRuntimeRanges=void 0}}_shouldRescheduleAfterDynamicChange(e,t,n){let r=e;return typeof r.hasUncalculatedDirtyPrecedentByIndex==`function`?r.hasUncalculatedDirtyPrecedentByIndex(t,n):!0}async _forEachCalculationPlanTree(e,t,n,r){let i=Math.max(n,1);for(let n=0;n<e.calculationForest.length;n++){let a=e.calculationForest[n];for(let e=0;e<a.plan.length;e++){let n=a.plan[e];if(n.type===`node`){let e=t.get(n.nodeIndex);if(e!=null&&await r(e,n.nodeIndex)===!1)return;continue}if(n.type===`nodes`){for(let e=0;e<n.nodeIndices.length;e++){let i=n.nodeIndices[e],a=t.get(i);if(a!=null&&await r(a,i)===!1)return}n.nodeIndices.length=0;continue}for(let e=0;e<i;e++){e>0&&u.clear();for(let i=0;i<n.nodeIndices.length;i++){let a=n.nodeIndices[i],o=t.get(a);if(o!=null&&await r(o,a,e)===!1)return}}}}}_getCalculationPlanTreeCount(e,t,n){let r=Math.max(n,1),i=0;for(let n=0;n<e.calculationForest.length;n++){let a=e.calculationForest[n];for(let e=0;e<a.plan.length;e++){let n=a.plan[e];if(n.type===`node`){t.has(n.nodeIndex)&&i++;continue}if(n.type===`nodes`){for(let e=0;e<n.nodeIndices.length;e++)t.has(n.nodeIndices[e])&&i++;continue}let o=0;for(let e=0;e<n.nodeIndices.length;e++)t.has(n.nodeIndices[e])&&o++;i+=o*r}}return i}_getDynamicResolver(){let e=this._dynamicRuntimeRanges;if(e==null)return;let t=e.map(e=>this._getRangeSignature(e)).sort().join(`|`);return()=>({signature:t,ranges:e,status:e.length>0?`resolved`:`unknown`})}_refreshDynamicDepsAfterCalculate(e,t,n,r){if(n.hasDynamicDeps===!1||!e.hasDynamicDepsByIndex(t))return!1;let i=this._collectAddressFunctionRuntimeRanges(r);if(i.length===0)return!1;this._dynamicRuntimeRanges=i;try{let n=this._getDynamicResolver();return n==null?!1:e.refreshDynamicDepsByIndex(t,n)}finally{this._dynamicRuntimeRanges=void 0}}_collectAddressFunctionRuntimeRanges(e){let t=[];return this._collectAddressFunctionRuntimeRangesInternal(e,t),t}_collectAddressFunctionRuntimeRangesInternal(e,t){if(e.isAddress()){let n=e.getValue();n!=null&&n.isReferenceObject()&&t.push(n.toUnitRange())}let n=e.getChildren();for(let e=0;e<n.length;e++)this._collectAddressFunctionRuntimeRangesInternal(n[e],t)}_getRangeSignature(e){return[e.unitId,e.sheetId,e.range.startRow,e.range.endRow,e.range.startColumn,e.range.endColumn].join(`:`)}async _waitForExecutionSlot(e,t,n,i,a){return e%t===0?(await new Promise(e=>{let t=r(e);a.push(t)}),n?(this._runtimeService.setFormulaExecuteStage(h.CURRENTLY_CALCULATING_ARRAY_FORMULA),this._runtimeService.setCompletedArrayFormulasCount(e+1)):(this._runtimeService.setFormulaExecuteStage(h.CURRENTLY_CALCULATING),this._runtimeService.setCompletedFormulasCount(e+1)),this._executionInProgressListener$.next(this._runtimeService.getRuntimeState()),this._runtimeService.isStopExecution()||i.formula==null&&i.getDirtyData==null?(this._runtimeService.setFormulaExecuteStage(h.IDLE),this._runtimeService.markedAsStopFunctionsExecuted(),this._executionCompleteListener$.next(this._runtimeService.getAllRuntimeData()),!0):!1):!1}async _calculateDependencyTree(e,t,n){let r=e.getDirtyData;if(this._runtimeService.setCurrent(e.row,e.column,e.rowCount,e.columnCount,e.subUnitId,e.unitId),r!=null&&e.featureId!=null){let t=e.featureId,{runtimeCellData:n,dirtyRanges:i}=r(this._currentConfigService.getDirtyData(),this._runtimeService.getAllRuntimeData());return this._runtimeService.setRuntimeFeatureCellData(t,n),this._runtimeService.setRuntimeFeatureRange(t,i),!1}let i=this._getCalculationNodeData(e,t,n),a=i.node,o;try{return o=this._interpreter.checkAsyncNode(i.node)?await this._interpreter.executeAsync(i):this._interpreter.execute(i),e.formulaId==null?this._runtimeService.setRuntimeData(o):this._runtimeService.setRuntimeOtherData(e.formulaId,e.refOffsetX,e.refOffsetY,o),this._refreshDynamicDepsAfterCalculate(n,t,e,a)}finally{a.resetCalculationState()}}_getCalculationNodeData(e,t,n){let r=n.getCachedCalculationNodeData(t);return(r==null?void 0:r.node)==null?{node:x(e.unitId,e.formula,this._lexer,this._astTreeBuilder,this._currentConfigService),refOffsetX:e.refOffsetX,refOffsetY:e.refOffsetY}:r}},fe=class{constructor(e,t){N(this,`maxRows`,void 0),N(this,`maxCols`,void 0),N(this,`sheetSize`,void 0),N(this,`_sheetKeyById`,new Map),N(this,`_sheetIdByKey`,[]),this.maxRows=e,this.maxCols=t,this.sheetSize=e*t}reset(){this._sheetKeyById.clear(),this._sheetIdByKey.length=0}encodeCell(e,t,n,r){return this.encodeSheet(e,t)*this.sheetSize+n*this.maxCols+r}decodeCell(e){let t=Math.floor(e/this.sheetSize),n=e-t*this.sheetSize,r=Math.floor(n/this.maxCols),i=n-r*this.maxCols,{unitId:a,sheetId:o}=this.decodeSheetKey(t);return{unitId:a,sheetId:o,row:r,col:i}}encodeSheet(e,t){let n=`${e}\0${t}`,r=this._sheetKeyById.get(n);if(r!==void 0)return r;let i=this._sheetIdByKey.length;return this._sheetKeyById.set(n,i),this._sheetIdByKey.push({unitId:e,sheetId:t}),i}decodeSheetKey(e){let t=this._sheetIdByKey[e];if(!t)throw Error(`Unknown sheet key: ${e}`);return t}encodeRow(e,t,n){return this.encodeSheet(e,t)*this.maxRows+n}encodeRowBySheetKey(e,t){return e*this.maxRows+t}decodeRowKey(e){let t=Math.floor(e/this.maxRows),n=e-t*this.maxRows;return{sheetKey:t,...this.decodeSheetKey(t),row:n}}encodeCol(e,t,n){return this.encodeSheet(e,t)*this.maxCols+n}encodeColBySheetKey(e,t){return e*this.maxCols+t}decodeColKey(e){let t=Math.floor(e/this.maxCols),n=e-t*this.maxCols;return{sheetKey:t,...this.decodeSheetKey(t),col:n}}};function P(e){if(typeof e!=`number`)throw TypeError(`CellFormula node id must be a numeric CellId`)}function F(e){let{startRow:t,endRow:n,startColumn:r,endColumn:i}=e.range;if(t<=n&&r<=i)return e;let a=t<n?t:n,o=t<n?n:t,s=r<i?r:i,c=r<i?i:r;return{...e,range:{...e.range,startRow:a,endRow:o,startColumn:s,endColumn:c}}}function I(e){return e.range.endRow-e.range.startRow+1}function L(e){return e.range.endColumn-e.range.startColumn+1}function R(e,t){return e.unitId===t.unitId&&e.sheetId===t.sheetId&&e.range.startRow<=t.row&&t.row<=e.range.endRow&&e.range.startColumn<=t.col&&t.col<=e.range.endColumn}function z(e){if(!e||e.length===0)return[];if(e.length===1)return[e[0]];let t=e.slice().sort((e,t)=>e-t),n=1;for(let e=1;e<t.length;e++)t[e]!==t[n-1]&&(t[n++]=t[e]);return t.length=n,t}function B(e,t,n){let r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}function V(e,t){let n=e.indexOf(t);if(n<0)return!1;let r=e.pop();return n<e.length&&(e[n]=r),!0}function H(e,t,n){let r=e.get(t);r&&(V(r,n),r.length===0&&e.delete(t))}function U(e,t){if(e===void 0)return t;if(typeof e==`number`)return e===t?e:[e,t];for(let n=0;n<e.length;n++)if(e[n]===t)return e;return e.push(t),e}function W(e,t){if(e===void 0)return;if(typeof e==`number`)return e===t?void 0:e;let n=e.indexOf(t);if(n<0)return e;if(e.length===1)return;if(e.length===2)return e[1-n];let r=e.pop();return n<e.length&&(e[n]=r),e}function G(e,t){if(e!==void 0){if(typeof e==`number`){t(e);return}for(let n=0;n<e.length;n++)t(e[n])}}function K(e,t,n){let r=U(e.get(t),n);e.set(t,r)}function q(e,t,n){let r=e.get(t);if(r===void 0)return;let i=W(r,n);i===void 0?e.delete(t):e.set(t,i)}function J(e,t){if(e.length>=t)return e;let n=Math.max(16,e.length);for(;n<t;)n*=2;let r=new Uint8Array(n);return r.set(e),r}function Y(e,t){if(e.length>=t)return e;let n=Math.max(16,e.length);for(;n<t;)n*=2;let r=new Uint32Array(n);return r.set(e),r}function X(e){if(!e||e.length===0)return[];let t=new Set,n=[];for(let r=0;r<e.length;r++){let i=e[r],a=`${i.type}:${String(i.id)}`;t.has(a)||(t.add(a),n.push(i))}return n}function pe(e){if(e.length<=1){let t=Array(e.length);for(let n=0;n<e.length;n++)t[n]=F(e[n]);return t}let t=Array(e.length);for(let n=0;n<e.length;n++)t[n]=F(e[n]);return he(me(t))}function me(e){let t=e.slice().sort((e,t)=>{let n=e.unitId.localeCompare(t.unitId);if(n!==0)return n;let r=e.sheetId.localeCompare(t.sheetId);return r===0?e.range.startRow===t.range.startRow?e.range.endRow===t.range.endRow?e.range.startColumn===t.range.startColumn?e.range.endColumn-t.range.endColumn:e.range.startColumn-t.range.startColumn:e.range.endRow-t.range.endRow:e.range.startRow-t.range.startRow:r}),n=[];for(let e of t){let t=n[n.length-1];t&&t.unitId===e.unitId&&t.sheetId===e.sheetId&&t.range.startRow===e.range.startRow&&t.range.endRow===e.range.endRow&&e.range.startColumn<=t.range.endColumn+1?e.range.endColumn>t.range.endColumn&&(t.range.endColumn=e.range.endColumn):n.push({...e,range:{...e.range}})}return n}function he(e){let t=e.slice().sort((e,t)=>{let n=e.unitId.localeCompare(t.unitId);if(n!==0)return n;let r=e.sheetId.localeCompare(t.sheetId);return r===0?e.range.startColumn===t.range.startColumn?e.range.endColumn===t.range.endColumn?e.range.startRow===t.range.startRow?e.range.endRow-t.range.endRow:e.range.startRow-t.range.startRow:e.range.endColumn-t.range.endColumn:e.range.startColumn-t.range.startColumn:r}),n=[];for(let e of t){let t=n[n.length-1];t&&t.unitId===e.unitId&&t.sheetId===e.sheetId&&t.range.startColumn===e.range.startColumn&&t.range.endColumn===e.range.endColumn&&e.range.startRow<=t.range.endRow+1?e.range.endRow>t.range.endRow&&(t.range.endRow=e.range.endRow):n.push({...e,range:{...e.range}})}return n}var ge=class{constructor(e,t){this._codec=e,this._indexToNodeId=t,N(this,`_rowBuckets`,new Map),N(this,`_colBuckets`,new Map)}addFormulaCell(e,t){let n=this._codec.decodeCell(e);B(this._rowBuckets,this._codec.encodeRow(n.unitId,n.sheetId,n.row),t),B(this._colBuckets,this._codec.encodeCol(n.unitId,n.sheetId,n.col),t)}removeFormulaCell(e,t){let n=this._codec.decodeCell(e);H(this._rowBuckets,this._codec.encodeRow(n.unitId,n.sheetId,n.row),t),H(this._colBuckets,this._codec.encodeCol(n.unitId,n.sheetId,n.col),t)}forEachFormulaInRange(e,t){let n=F(e);return I(n)<=L(n)?this._scanRows(n,t):this._scanCols(n,t)}_scanRows(e,t){if(I(e)<=this._rowBuckets.size){for(let n=e.range.startRow;n<=e.range.endRow;n++)if(this._scanRowBucket(this._codec.encodeRow(e.unitId,e.sheetId,n),e,t)===!1)return!1;return!0}for(let[n]of this._rowBuckets){let r=this._codec.decodeRowKey(n);if(r.unitId===e.unitId&&r.sheetId===e.sheetId&&e.range.startRow<=r.row&&r.row<=e.range.endRow&&this._scanRowBucket(n,e,t)===!1)return!1}return!0}_scanCols(e,t){if(L(e)<=this._colBuckets.size){for(let n=e.range.startColumn;n<=e.range.endColumn;n++)if(this._scanColBucket(this._codec.encodeCol(e.unitId,e.sheetId,n),e,t)===!1)return!1;return!0}for(let[n]of this._colBuckets){let r=this._codec.decodeColKey(n);if(r.unitId===e.unitId&&r.sheetId===e.sheetId&&e.range.startColumn<=r.col&&r.col<=e.range.endColumn&&this._scanColBucket(n,e,t)===!1)return!1}return!0}_scanRowBucket(e,t,n){let r=this._rowBuckets.get(e);if(!r)return!0;for(let e=0;e<r.length;e++){let i=r[e],a=this._indexToNodeId[i],o=this._codec.decodeCell(a);if(o.unitId===t.unitId&&o.sheetId===t.sheetId&&t.range.startColumn<=o.col&&o.col<=t.range.endColumn&&n(i)===!1)return!1}return!0}_scanColBucket(e,t,n){let r=this._colBuckets.get(e);if(!r)return!0;for(let e=0;e<r.length;e++){let i=r[e],a=this._indexToNodeId[i],o=this._codec.decodeCell(a);if(o.unitId===t.unitId&&o.sheetId===t.sheetId&&t.range.startRow<=o.row&&o.row<=t.range.endRow&&n(i)===!1)return!1}return!0}},Z=class{constructor(e,t){this._codec=e,this._pointScanCellLimit=t,N(this,`_rowCells`,new Map),N(this,`_colCells`,new Map)}add(e){let t=this._codec.decodeCell(e);B(this._rowCells,this._codec.encodeRow(t.unitId,t.sheetId,t.row),e),B(this._colCells,this._codec.encodeCol(t.unitId,t.sheetId,t.col),e)}remove(e){let t=this._codec.decodeCell(e);H(this._rowCells,this._codec.encodeRow(t.unitId,t.sheetId,t.row),e),H(this._colCells,this._codec.encodeCol(t.unitId,t.sheetId,t.col),e)}forEachCellInRange(e,t){let n=F(e),r=I(n),i=L(n);if(this._isSmallArea(r,i)){for(let e=n.range.startRow;e<=n.range.endRow;e++)for(let r=n.range.startColumn;r<=n.range.endColumn;r++)t(this._codec.encodeCell(n.unitId,n.sheetId,e,r));return}Math.min(r,this._rowCells.size)<=Math.min(i,this._colCells.size)?this._scanRows(n,t):this._scanCols(n,t)}_isSmallArea(e,t){return e<=0||t<=0?!0:e>this._pointScanCellLimit?!1:e*t<=this._pointScanCellLimit}_scanRows(e,t){if(I(e)<=this._rowCells.size){for(let n=e.range.startRow;n<=e.range.endRow;n++)this._scanRowBucket(this._codec.encodeRow(e.unitId,e.sheetId,n),e,t);return}for(let[n]of this._rowCells){let r=this._codec.decodeRowKey(n);r.unitId===e.unitId&&r.sheetId===e.sheetId&&e.range.startRow<=r.row&&r.row<=e.range.endRow&&this._scanRowBucket(n,e,t)}}_scanCols(e,t){if(L(e)<=this._colCells.size){for(let n=e.range.startColumn;n<=e.range.endColumn;n++)this._scanColBucket(this._codec.encodeCol(e.unitId,e.sheetId,n),e,t);return}for(let[n]of this._colCells){let r=this._codec.decodeColKey(n);r.unitId===e.unitId&&r.sheetId===e.sheetId&&e.range.startColumn<=r.col&&r.col<=e.range.endColumn&&this._scanColBucket(n,e,t)}}_scanRowBucket(e,t,n){let r=this._rowCells.get(e);if(r)for(let e=0;e<r.length;e++){let i=r[e],a=this._codec.decodeCell(i);a.unitId===t.unitId&&a.sheetId===t.sheetId&&t.range.startColumn<=a.col&&a.col<=t.range.endColumn&&n(i)}}_scanColBucket(e,t,n){let r=this._colCells.get(e);if(r)for(let e=0;e<r.length;e++){let i=r[e],a=this._codec.decodeCell(i);a.unitId===t.unitId&&a.sheetId===t.sheetId&&t.range.startRow<=a.row&&a.row<=t.range.endRow&&n(i)}}},Q=class{constructor(e,t,n){this._codec=e,this._maxIndexedSpan=n,N(this,`_wholeSheet`,new Map),N(this,`_wholeCol`,new Map),N(this,`_wholeRow`,new Map),N(this,`_rowBuckets`,new Map),N(this,`_colBuckets`,new Map),N(this,`_largeRangeIds`,[]),N(this,`_sheetArr`,void 0),N(this,`_startRowArr`,void 0),N(this,`_endRowArr`,void 0),N(this,`_startColArr`,void 0),N(this,`_endColArr`,void 0),N(this,`_nodeArr`,void 0),N(this,`_kindArr`,void 0),N(this,`_activeArr`,void 0),N(this,`_rangeSeenEpochArr`,void 0),N(this,`_rangeEpoch`,1),N(this,`_nextRangeId`,0),N(this,`_freeRangeIds`,[]),N(this,`_nodeToRangeIds`,new Map),N(this,`_nodeToWholeSheetKeys`,new Map),N(this,`_nodeToWholeColKeys`,new Map),N(this,`_nodeToWholeRowKeys`,new Map);let r=Math.max(16,t);this._sheetArr=new Uint32Array(r),this._startRowArr=new Uint32Array(r),this._endRowArr=new Uint32Array(r),this._startColArr=new Uint32Array(r),this._endColArr=new Uint32Array(r),this._nodeArr=new Uint32Array(r),this._kindArr=new Uint8Array(r),this._activeArr=new Uint8Array(r),this._rangeSeenEpochArr=new Uint32Array(r)}addRange(e,t){let n=F(t),r=this._codec.encodeSheet(n.unitId,n.sheetId),i=I(n),a=L(n),o=a===this._codec.maxCols,s=i===this._codec.maxRows;if(o&&s){K(this._wholeSheet,r,e),B(this._nodeToWholeSheetKeys,e,r);return}if(s){for(let t=n.range.startColumn;t<=n.range.endColumn;t++){let n=this._codec.encodeColBySheetKey(r,t);K(this._wholeCol,n,e),B(this._nodeToWholeColKeys,e,n)}return}if(o){for(let t=n.range.startRow;t<=n.range.endRow;t++){let n=this._codec.encodeRowBySheetKey(r,t);K(this._wholeRow,n,e),B(this._nodeToWholeRowKeys,e,n)}return}let c=Math.min(i,a),l=this._allocRangeId();if(this._setRangeMeta(l,e,n),c>this._maxIndexedSpan)this._kindArr[l]=3,this._largeRangeIds.push(l);else if(i<=a){this._kindArr[l]=1;for(let e=n.range.startRow;e<=n.range.endRow;e++)B(this._rowBuckets,this._codec.encodeRowBySheetKey(r,e),l)}else{this._kindArr[l]=2;for(let e=n.range.startColumn;e<=n.range.endColumn;e++)B(this._colBuckets,this._codec.encodeColBySheetKey(r,e),l)}B(this._nodeToRangeIds,e,l)}removeNode(e){let t=this._nodeToWholeSheetKeys.get(e);if(t){for(let n=0;n<t.length;n++)q(this._wholeSheet,t[n],e);this._nodeToWholeSheetKeys.delete(e)}let n=this._nodeToWholeColKeys.get(e);if(n){for(let t=0;t<n.length;t++)q(this._wholeCol,n[t],e);this._nodeToWholeColKeys.delete(e)}let r=this._nodeToWholeRowKeys.get(e);if(r){for(let t=0;t<r.length;t++)q(this._wholeRow,r[t],e);this._nodeToWholeRowKeys.delete(e)}let i=this._nodeToRangeIds.get(e);if(i){for(let e=0;e<i.length;e++)this._removeRangeId(i[e]);this._nodeToRangeIds.delete(e)}}forEachPoint(e,t,n,r,i){let a=this._codec.encodeSheet(e,t);G(this._wholeSheet.get(a),i),G(this._wholeCol.get(this._codec.encodeColBySheetKey(a,r)),i),G(this._wholeRow.get(this._codec.encodeRowBySheetKey(a,n)),i);let o=this._rowBuckets.get(this._codec.encodeRowBySheetKey(a,n));if(o)for(let e=0;e<o.length;e++){let t=o[e];this._activeArr[t]&&this._rangeContainsPoint(t,a,n,r)&&i(this._nodeArr[t])}let s=this._colBuckets.get(this._codec.encodeColBySheetKey(a,r));if(s)for(let e=0;e<s.length;e++){let t=s[e];this._activeArr[t]&&this._rangeContainsPoint(t,a,n,r)&&i(this._nodeArr[t])}for(let e=0;e<this._largeRangeIds.length;e++){let t=this._largeRangeIds[e];this._activeArr[t]&&this._rangeContainsPoint(t,a,n,r)&&i(this._nodeArr[t])}}forEachRangeIntersecting(e,t){this.forEachRangesIntersecting([e],t)}forEachRangesIntersecting(e,t){if(e.length===0)return;let n=Array(e.length);for(let t=0;t<e.length;t++)n[t]=F(e[t]);this._nextRangeEpoch();for(let e=0;e<n.length;e++){let r=n[e],i=this._codec.encodeSheet(r.unitId,r.sheetId);G(this._wholeSheet.get(i),t),this._scanWholeCols(r,i,t),this._scanWholeRows(r,i,t),this._scanRowIndexedRanges(r,i,t),this._scanColIndexedRanges(r,i,t);for(let e=0;e<this._largeRangeIds.length;e++){let n=this._largeRangeIds[e];this._activeArr[n]&&(this._wasRangeSeen(n)||this._rangeIntersectsInput(n,r,i)&&(this._markRangeSeen(n),t(this._nodeArr[n])))}}}_allocRangeId(){let e=this._freeRangeIds.pop();if(e!==void 0)return e;let t=this._nextRangeId++;return this._ensureRangeCapacity(t+1),t}_ensureRangeCapacity(e){this._sheetArr=Y(this._sheetArr,e),this._startRowArr=Y(this._startRowArr,e),this._endRowArr=Y(this._endRowArr,e),this._startColArr=Y(this._startColArr,e),this._endColArr=Y(this._endColArr,e),this._nodeArr=Y(this._nodeArr,e),this._kindArr=J(this._kindArr,e),this._activeArr=J(this._activeArr,e),this._rangeSeenEpochArr=Y(this._rangeSeenEpochArr,e)}_setRangeMeta(e,t,n){this._sheetArr[e]=this._codec.encodeSheet(n.unitId,n.sheetId),this._startRowArr[e]=n.range.startRow,this._endRowArr[e]=n.range.endRow,this._startColArr[e]=n.range.startColumn,this._endColArr[e]=n.range.endColumn,this._nodeArr[e]=t,this._activeArr[e]=1}_removeRangeId(e){if(!this._activeArr[e])return;let t=this._kindArr[e],n=this._sheetArr[e];if(t===1)for(let t=this._startRowArr[e];t<=this._endRowArr[e];t++)H(this._rowBuckets,this._codec.encodeRowBySheetKey(n,t),e);else if(t===2)for(let t=this._startColArr[e];t<=this._endColArr[e];t++)H(this._colBuckets,this._codec.encodeColBySheetKey(n,t),e);else t===3&&V(this._largeRangeIds,e);this._activeArr[e]=0,this._kindArr[e]=0,this._freeRangeIds.push(e)}_nextRangeEpoch(){this._rangeEpoch++,this._rangeEpoch>=4294967295&&(this._rangeSeenEpochArr.fill(0),this._rangeEpoch=1)}_wasRangeSeen(e){return this._rangeSeenEpochArr[e]===this._rangeEpoch}_markRangeSeen(e){this._rangeSeenEpochArr[e]=this._rangeEpoch}_scanWholeCols(e,t,n){if(L(e)<=this._wholeCol.size){for(let r=e.range.startColumn;r<=e.range.endColumn;r++)G(this._wholeCol.get(this._codec.encodeColBySheetKey(t,r)),n);return}let r=this._codec.encodeColBySheetKey(t,e.range.startColumn),i=this._codec.encodeColBySheetKey(t,e.range.endColumn);for(let[e,t]of this._wholeCol)r<=e&&e<=i&&G(t,n)}_scanWholeRows(e,t,n){if(I(e)<=this._wholeRow.size){for(let r=e.range.startRow;r<=e.range.endRow;r++)G(this._wholeRow.get(this._codec.encodeRowBySheetKey(t,r)),n);return}let r=this._codec.encodeRowBySheetKey(t,e.range.startRow),i=this._codec.encodeRowBySheetKey(t,e.range.endRow);for(let[e,t]of this._wholeRow)r<=e&&e<=i&&G(t,n)}_scanRowIndexedRanges(e,t,n){if(I(e)<=this._rowBuckets.size){for(let r=e.range.startRow;r<=e.range.endRow;r++)this._scanRangeIdBucket(this._rowBuckets.get(this._codec.encodeRowBySheetKey(t,r)),e,t,n);return}let r=this._codec.encodeRowBySheetKey(t,e.range.startRow),i=this._codec.encodeRowBySheetKey(t,e.range.endRow);for(let[a,o]of this._rowBuckets)r<=a&&a<=i&&this._scanRangeIdBucket(o,e,t,n)}_scanColIndexedRanges(e,t,n){if(L(e)<=this._colBuckets.size){for(let r=e.range.startColumn;r<=e.range.endColumn;r++)this._scanRangeIdBucket(this._colBuckets.get(this._codec.encodeColBySheetKey(t,r)),e,t,n);return}let r=this._codec.encodeColBySheetKey(t,e.range.startColumn),i=this._codec.encodeColBySheetKey(t,e.range.endColumn);for(let[a,o]of this._colBuckets)r<=a&&a<=i&&this._scanRangeIdBucket(o,e,t,n)}_scanRangeIdBucket(e,t,n,r){if(e)for(let i=0;i<e.length;i++){let a=e[i];this._activeArr[a]&&(this._wasRangeSeen(a)||this._rangeIntersectsInput(a,t,n)&&(this._markRangeSeen(a),r(this._nodeArr[a])))}}_rangeContainsPoint(e,t,n,r){return this._sheetArr[e]===t&&this._startRowArr[e]<=n&&n<=this._endRowArr[e]&&this._startColArr[e]<=r&&r<=this._endColArr[e]}_rangeIntersectsInput(e,t,n){return this._sheetArr[e]===n&&this._startRowArr[e]<=t.range.endRow&&this._endRowArr[e]>=t.range.startRow&&this._startColArr[e]<=t.range.endColumn&&this._endColArr[e]>=t.range.startColumn}},_e=class{constructor(e){var t,n,r,i;N(this,`codec`,void 0),N(this,`_maxIndexedSpan`,void 0),N(this,`_pointScanCellLimit`,void 0),N(this,`_initialNodeCapacity`,void 0),N(this,`_initialRangeCapacity`,void 0),N(this,`directDeps`,void 0),N(this,`nodeDeps`,void 0),N(this,`rangeIndex`,void 0),N(this,`cellFormulaToIndex`,void 0),N(this,`otherFormulaToIndex`,void 0),N(this,`featureCalculationToIndex`,void 0),N(this,`indexToNodeId`,void 0),N(this,`dirty`,void 0),N(this,`inQueue`,void 0),N(this,`_indexToNodeType`,void 0),N(this,`_cellPrecedents`,void 0),N(this,`_rangePrecedents`,void 0),N(this,`_nodePrecedents`,void 0),N(this,`_dynamicDeps`,void 0),N(this,`_dynamicSignature`,void 0),N(this,`_runtimeDirectDeps`,void 0),N(this,`_runtimeNodeDeps`,void 0),N(this,`_runtimeRangeIndex`,void 0),N(this,`_runtimeCellPrecedents`,void 0),N(this,`_runtimeRangePrecedents`,void 0),N(this,`_runtimeNodePrecedents`,void 0),N(this,`_activeNode`,void 0),N(this,`_seenNodeEpoch`,void 0),N(this,`_visitNodeEpoch`,void 0),N(this,`_edgeSeenEpoch`,void 0),N(this,`_tarjanSeenEpoch`,void 0),N(this,`_tarjanIndexArr`,void 0),N(this,`_tarjanLowArr`,void 0),N(this,`_tarjanOnStack`,void 0),N(this,`_emitEpoch`,1),N(this,`_visitEpoch`,1),N(this,`_edgeEpoch`,1),N(this,`_tarjanEpoch`,1),N(this,`_propQueue`,[]),N(this,`_dirtyList`,[]),N(this,`_activeNodeCount`,0),N(this,`_dirtyNodeCount`,0),N(this,`_directPointIndex`,void 0),N(this,`_runtimeDirectPointIndex`,void 0),N(this,`_formulaCellIndex`,void 0),N(this,`_sharedFormulaGroups`,void 0),N(this,`_sharedFormulaGroupIndexById`,void 0),N(this,`_sharedFormulaMembershipByNode`,void 0),N(this,`_sharedFormulaSourceEntries`,void 0),N(this,`_sharedFormulaSourceRangeIndex`,void 0),this._maxIndexedSpan=(t=e.maxIndexedSpan)==null?4096:t,this._pointScanCellLimit=(n=e.pointScanCellLimit)==null?4096:n,this._initialNodeCapacity=Math.max(16,(r=e.initialNodeCapacity)==null?1024:r),this._initialRangeCapacity=Math.max(16,(i=e.initialRangeCapacity)==null?1024:i),this.codec=new fe(e.maxRows,e.maxCols),this.reset()}reset(){this.codec.reset(),this.directDeps=new Map,this.nodeDeps=new Map,this.rangeIndex=new Q(this.codec,this._initialRangeCapacity,this._maxIndexedSpan),this._runtimeDirectDeps=new Map,this._runtimeNodeDeps=new Map,this._runtimeRangeIndex=new Q(this.codec,this._initialRangeCapacity,this._maxIndexedSpan),this.cellFormulaToIndex=new Map,this.otherFormulaToIndex=new Map,this.featureCalculationToIndex=new Map,this.indexToNodeId=[],this._indexToNodeType=new Uint8Array(this._initialNodeCapacity),this.dirty=new Uint8Array(this._initialNodeCapacity),this.inQueue=new Uint8Array(this._initialNodeCapacity),this._activeNode=new Uint8Array(this._initialNodeCapacity),this._cellPrecedents=[],this._rangePrecedents=[],this._nodePrecedents=[],this._dynamicDeps=[],this._dynamicSignature=[],this._runtimeCellPrecedents=[],this._runtimeRangePrecedents=[],this._runtimeNodePrecedents=[],this._seenNodeEpoch=new Uint32Array(this._initialNodeCapacity),this._visitNodeEpoch=new Uint32Array(this._initialNodeCapacity),this._edgeSeenEpoch=new Uint32Array(this._initialNodeCapacity),this._tarjanSeenEpoch=new Uint32Array(this._initialNodeCapacity),this._tarjanIndexArr=new Uint32Array(this._initialNodeCapacity),this._tarjanLowArr=new Uint32Array(this._initialNodeCapacity),this._tarjanOnStack=new Uint8Array(this._initialNodeCapacity),this._emitEpoch=1,this._visitEpoch=1,this._edgeEpoch=1,this._tarjanEpoch=1,this._propQueue.length=0,this._dirtyList.length=0,this._activeNodeCount=0,this._dirtyNodeCount=0,this._directPointIndex=new Z(this.codec,this._pointScanCellLimit),this._runtimeDirectPointIndex=new Z(this.codec,this._pointScanCellLimit),this._formulaCellIndex=new ge(this.codec,this.indexToNodeId),this._sharedFormulaGroups=[],this._sharedFormulaGroupIndexById=new Map,this._sharedFormulaMembershipByNode=new Int32Array(this._initialNodeCapacity),this._sharedFormulaMembershipByNode.fill(-1),this._sharedFormulaSourceEntries=[],this._sharedFormulaSourceRangeIndex=new Q(this.codec,this._initialRangeCapacity,this._maxIndexedSpan)}encodeCell(e,t,n,r){return this.codec.encodeCell(e,t,n,r)}decodeCell(e){return this.codec.decodeCell(e)}encodeFeatureCalculationId(e,t,n){return`${e}${t}${n}`}decodeFeatureCalculationId(e){let t=this._tryDecodeFeatureCalculationId(e);if(t===void 0)throw Error(`Invalid feature calculation id: ${String(e)}`);return t}encodeOtherFormulaId(e,t,n,r,i){return`${e}${t}${n}${r}${i}`}decodeOtherFormulaId(e){let t=this._tryDecodeOtherFormulaId(e);if(t===void 0)throw Error(`Invalid other formula id: ${String(e)}`);return t}setCellFormulaDeps(e,t,n){var r,i;return this._setCalcNodeDepsByType(1,e,t,(r=n==null?void 0:n.checkCycle)==null?!0:r,(i=n==null?void 0:n.markDirty)==null?!0:i,(n==null?void 0:n.mode)===`merge`)}setOtherFormulaDeps(e,t,n){var r,i;return this._setCalcNodeDepsByType(2,e,t,(r=n==null?void 0:n.checkCycle)==null?!0:r,(i=n==null?void 0:n.markDirty)==null?!0:i,(n==null?void 0:n.mode)===`merge`)}setFeatureCalculationDeps(e,t,n){var r,i;return this._setCalcNodeDepsByType(3,e,t,(r=n==null?void 0:n.checkCycle)==null?!0:r,(i=n==null?void 0:n.markDirty)==null?!0:i,(n==null?void 0:n.mode)===`merge`)}setCalcNodeDeps(e,t,n){var r,i;return this._setCalcNodeDepsByType(e.type,e.id,t,(r=n==null?void 0:n.checkCycle)==null?!0:r,(i=n==null?void 0:n.markDirty)==null?!0:i,(n==null?void 0:n.mode)===`merge`)}registerCompressedSharedFormulaGroup(e){this.unregisterCompressedSharedFormulaGroup(e.groupId);let t=this._sharedFormulaGroups.length,n=F(e.fillRange),r={...n,range:{...n.range}},i={groupId:e.groupId,fillRange:r,patterns:e.patterns.slice(),sourceEntryIds:[]};this._sharedFormulaGroups.push(i),this._sharedFormulaGroupIndexById.set(i.groupId,t),this._markCompressedSharedFormulaMembership(t,r);for(let e=0;e<i.patterns.length;e++){let n=this._getCompressedSharedSourceCoverage(r,i.patterns[e]),a=this._sharedFormulaSourceEntries.length;this._sharedFormulaSourceEntries.push({groupIndex:t,patternIndex:e,sourceCoverage:n,active:!0}),i.sourceEntryIds.push(a),this._sharedFormulaSourceRangeIndex.addRange(a,n)}}unregisterCompressedSharedFormulaGroup(e){let t=this._sharedFormulaGroupIndexById.get(e);if(t===void 0)return;let n=this._sharedFormulaGroups[t];this._sharedFormulaGroupIndexById.delete(e);for(let e=0;e<n.sourceEntryIds.length;e++){let t=n.sourceEntryIds[e],r=this._sharedFormulaSourceEntries[t];r&&(r.active=!1),this._sharedFormulaSourceRangeIndex.removeNode(t)}this._clearCompressedSharedFormulaMembership(t,n.fillRange)}clearCompressedSharedFormulaGroups(e,t){let n=[];for(let r=0;r<this._sharedFormulaGroups.length;r++){let i=this._sharedFormulaGroups[r];this._sharedFormulaGroupIndexById.has(i.groupId)&&(e!==void 0&&i.fillRange.unitId!==e||t!==void 0&&i.fillRange.sheetId!==t||n.push(i.groupId))}for(let e=0;e<n.length;e++)this.unregisterCompressedSharedFormulaGroup(n[e])}_setCalcNodeDepsByType(e,t,n,r,i,a){var o,s,c,l,u,d,f;let p=this._getOrCreateNodeIndexByType(e,t),m=this._activeNode[p]===1,h=m&&e===1&&!this._isEmptyCalcNodeDeps(n)&&this._sharedFormulaMembershipByNode[p]>=0,g=m&&(r||a),_=g?(o=(s=this._cellPrecedents[p])==null?void 0:s.slice())==null?[]:o:[],v=g?(c=(l=this._rangePrecedents[p])==null?void 0:l.slice())==null?[]:c:[],y=g?(u=(d=this._nodePrecedents[p])==null?void 0:d.slice())==null?[]:u:[];m&&this._removeNodeDepsOnly(p);let b=this._normalizeCalcNodeDeps(n),x=b.cells,S=b.ranges,C=b.nodes,w=this._resolveExplicitNodeDeps(C),T=(f=this._dynamicDeps[p])==null?[]:f,E=a?this._mergeDynamicDeps(T,b.dynamics):b.dynamics,D=a?this._mergeSortedUniqueNumbers(_,x):x,O=a?this._mergeRangeDeps(v,S):S,k=a?this._mergeSortedUniqueNumbers(y,w):w;return r&&this._wouldCreateCycleForNewDeps(p,D,O,k)?(m&&this._addNodeDepsOnly(p,_,v,y),{nodeIndex:p,hasCycle:!0}):(h&&this._unregisterCompressedSharedFormulaGroupByNode(p),!m&&e===1&&(P(t),this._formulaCellIndex.addFormulaCell(t,p)),m||this._activeNodeCount++,this._activeNode[p]=1,this._addNodeDepsOnly(p,D,O,k),this._setNodeDynamicDeps(p,E),i&&(this._markNodeIndexDirty(p,!0),this._propagateDirtyQueue()),{nodeIndex:p,hasCycle:!1})}setManyCalcNodeDeps(e,t){var n,r;let i=(n=t==null?void 0:t.markDirty)==null?!0:n,a=(r=t==null?void 0:t.checkCycle)==null?!0:r,o=(t==null?void 0:t.mode)===`merge`,s=Array(e.length),c=[];for(let t=0;t<e.length;t++){let n=e[t],r=this._setCalcNodeDepsByType(n.node.type,n.node.id,n.deps,a,!1,o);s[t]=r,r.hasCycle||c.push(r.nodeIndex)}return i&&c.length>0&&this._markCalcNodeIndicesChanged(c),s}setManyCellFormulaDeps(e,t){var n,r;let i=(n=t==null?void 0:t.markDirty)==null?!0:n,a=(r=t==null?void 0:t.checkCycle)==null?!0:r,o=(t==null?void 0:t.mode)===`merge`,s=Array(e.length),c=[];for(let t=0;t<e.length;t++){let n=e[t],r=this._setCalcNodeDepsByType(1,n.cell,n.deps,a,!1,o);s[t]=r,r.hasCycle||c.push(r.nodeIndex)}return i&&c.length>0&&this._markCalcNodeIndicesChanged(c),s}setManyOtherFormulaDeps(e,t){var n,r;let i=(n=t==null?void 0:t.markDirty)==null?!0:n,a=(r=t==null?void 0:t.checkCycle)==null?!0:r,o=(t==null?void 0:t.mode)===`merge`,s=Array(e.length),c=[];for(let t=0;t<e.length;t++){let n=e[t],r=this._setCalcNodeDepsByType(2,n.id,n.deps,a,!1,o);s[t]=r,r.hasCycle||c.push(r.nodeIndex)}return i&&c.length>0&&this._markCalcNodeIndicesChanged(c),s}setManyFeatureCalculationDeps(e,t){var n,r;let i=(n=t==null?void 0:t.markDirty)==null?!0:n,a=(r=t==null?void 0:t.checkCycle)==null?!0:r,o=(t==null?void 0:t.mode)===`merge`,s=Array(e.length),c=[];for(let t=0;t<e.length;t++){let n=e[t],r=this._setCalcNodeDepsByType(3,n.id,n.deps,a,!1,o);s[t]=r,r.hasCycle||c.push(r.nodeIndex)}return i&&c.length>0&&this._markCalcNodeIndicesChanged(c),s}removeCellFormula(e,t){this._removeCalcNodeByType(1,e,t)}removeOtherFormula(e,t){this._removeCalcNodeByType(2,e,t)}removeFeatureCalculation(e,t){this._removeCalcNodeByType(3,e,t)}removeCellFormulas(e,t){this._removeCalcNodeIds(1,e,t)}removeOtherFormulas(e,t){this._removeCalcNodeIds(2,e,t)}removeFeatureCalculations(e,t){this._removeCalcNodeIds(3,e,t)}removeCalcNodes(e,t){if(e.length===0)return;let n=[];for(let t=0;t<e.length;t++){let r=e[t],i=this._getNodeIndexByType(r.type,r.id);i!==void 0&&this._activeNode[i]&&n.push(i)}this._removeCalcNodeIndices(n,t)}clearCellFormulas(e,t,n){let r=[];for(let[n,i]of this.cellFormulaToIndex){if(!this._activeNode[i])continue;let a=this.codec.decodeCell(n);a.unitId===e&&(t!==void 0&&a.sheetId!==t||r.push(i))}this._removeCalcNodeIndices(r,n)}clearOtherFormulas(e,t,n,r,i,a){if(n!==void 0&&n.length===0)return;let o=[];for(let[a,s]of this.otherFormulaToIndex){if(!this._activeNode[s])continue;let c=this._tryDecodeOtherFormulaId(a);c!==void 0&&c.unitId===e&&(t!==void 0&&c.sheetId!==t||n!==void 0&&!this._includesFormulaId(n,c.formulaId)||r!==void 0&&c.refOffsetX!==r||r!==void 0&&i!==void 0&&c.refOffsetY!==i||o.push(s))}this._removeCalcNodeIndices(o,a)}_includesFormulaId(e,t){for(let n=0;n<e.length;n++)if(e[n]===t)return!0;return!1}clearFeatureCalculations(e,t,n){let r=[];for(let[n,i]of this.featureCalculationToIndex){if(!this._activeNode[i])continue;let a=this._tryDecodeFeatureCalculationId(n);a!==void 0&&a.unitId===e&&(t!==void 0&&a.sheetId!==t||r.push(i))}this._removeCalcNodeIndices(r,n)}_tryDecodeFeatureCalculationId(e){if(typeof e!=`string`)return;let t=e.indexOf(`\0`);if(t<=0)return;let n=e.indexOf(`\0`,t+1);if(!(n<=t+1)&&n!==e.length-1&&e.indexOf(`\0`,n+1)===-1)return{unitId:e.slice(0,t),sheetId:e.slice(t+1,n),formulaId:e.slice(n+1)}}_tryDecodeOtherFormulaId(e){if(typeof e!=`string`)return;let t=e.indexOf(`\0`);if(t<=0)return;let n=e.indexOf(`\0`,t+1);if(n<=t+1)return;let r=e.indexOf(`\0`,n+1);if(r<=n+1)return;let i=e.indexOf(`\0`,r+1);if(i<=r+1||i===e.length-1||e.indexOf(`\0`,i+1)!==-1)return;let a=Number(e.slice(r+1,i)),o=Number(e.slice(i+1));if(!(!Number.isFinite(a)||!Number.isFinite(o)))return{unitId:e.slice(0,t),sheetId:e.slice(t+1,n),formulaId:e.slice(n+1,r),refOffsetX:a,refOffsetY:o}}_removeCalcNodeIds(e,t,n){if(t.length===0)return;let r=[];for(let n=0;n<t.length;n++){let i=this._getNodeIndexByType(e,t[n]);i!==void 0&&this._activeNode[i]&&r.push(i)}this._removeCalcNodeIndices(r,n)}_removeCalcNodeIndices(e,t){if(e.length!==0){if(t!=null&&t.markDependentsDirty&&this._markCalcNodeIndicesChanged(e),t!=null&&t.detachDependents)for(let t=0;t<e.length;t++)this._detachDependentsFromNode(e[t]);for(let t=0;t<e.length;t++)this._removeCalcNodeByIndex(e[t])}}removeCalcNode(e,t){this._removeCalcNodeByType(e.type,e.id,t)}_removeCalcNodeByType(e,t,n){let r=this._getNodeIndexByType(e,t);r!==void 0&&this._activeNode[r]&&(n!=null&&n.markDependentsDirty&&(this._markNodeIndexDirty(r,!0),this._propagateDirtyQueue()),n!=null&&n.detachDependents&&this._detachDependentsFromNode(r),this._removeCalcNodeByIndex(r))}_removeCalcNodeByIndex(e){if(this._activeNode[e]){if(this._unregisterCompressedSharedFormulaGroupByNode(e),this._removeNodeDepsOnly(e),this._removeRuntimeDepsOnly(e),this._dynamicDeps[e]=void 0,this._dynamicSignature[e]=void 0,this._indexToNodeType[e]===1){let t=this.indexToNodeId[e];this._formulaCellIndex.removeFormulaCell(t,e)}this._activeNode[e]=0,this._activeNodeCount--,this.dirty[e]&&(this.dirty[e]=0,this._dirtyNodeCount--,this._compactDirtyList()),this.inQueue[e]=0}}markCellChanged(e){this.markCellsChanged([e])}markCellsChanged(e){this._nextEmitEpoch();for(let t of e)this._forEachDependentIndexByCellRaw(t,e=>{this._emitNodeOnceAndMarkDirty(e)});this._propagateDirtyQueue()}markRangeChanged(e,t){this.markRangesChanged([e],t)}markRangesChanged(e,t){if(e.length===0)return;let n=(t==null?void 0:t.coalesce)===!1?this._normalizeRangeDeps(e):pe(e);this._nextEmitEpoch();for(let e=0;e<n.length;e++){let r=n[e];t!=null&&t.includeFormulaCells&&this._formulaCellIndex.forEachFormulaInRange(r,e=>{this._emitNodeOnceAndMarkDirty(e,!0)}),this._directPointIndex.forEachCellInRange(r,e=>{G(this.directDeps.get(e),e=>{this._emitNodeOnceAndMarkDirty(e)})}),this._runtimeDirectPointIndex.forEachCellInRange(r,e=>{G(this._runtimeDirectDeps.get(e),e=>{this._emitNodeOnceAndMarkDirty(e)})})}this._isEveryActiveNodeDirty()||this.rangeIndex.forEachRangesIntersecting(n,e=>{this._emitNodeOnceAndMarkDirty(e)}),this._isEveryActiveNodeDirty()||this._runtimeRangeIndex.forEachRangesIntersecting(n,e=>{this._emitNodeOnceAndMarkDirty(e)});for(let e=0;e<n.length&&!this._isEveryActiveNodeDirty();e++)this._forEachCompressedSharedDependentByRange(n[e],e=>{this._emitNodeOnceAndMarkDirty(e)});this._propagateDirtyQueue()}markCellFormulaChanged(e){this._markCalcNodeChangedByType(1,e)}markOtherFormulaChanged(e){this._markCalcNodeChangedByType(2,e)}markOtherFormulasChanged(e,t,n){if(!(n!==void 0&&n.length===0)){this._nextEmitEpoch();for(let[r,i]of this.otherFormulaToIndex){if(!this._activeNode[i])continue;let a=this._tryDecodeOtherFormulaId(r);a!==void 0&&a.unitId===e&&(t!==void 0&&a.sheetId!==t||n!==void 0&&!this._includesFormulaId(n,a.formulaId)||this._emitNodeOnceAndMarkDirty(i,!0))}this._propagateDirtyQueue()}}markFeatureCalculationChanged(e){this._markCalcNodeChangedByType(3,e)}markCalcNodeChanged(e){this._markCalcNodeChangedByType(e.type,e.id)}_markCalcNodeChangedByType(e,t){let n=this._getNodeIndexByType(e,t);n!==void 0&&this._activeNode[n]&&(this._markNodeIndexDirty(n,!0),this._propagateDirtyQueue())}markCalcNodesChanged(e){if(e.length!==0){this._nextEmitEpoch();for(let t=0;t<e.length;t++){let n=e[t],r=this._getNodeIndexByType(n.type,n.id);r!==void 0&&this._activeNode[r]&&this._emitNodeOnceAndMarkDirty(r,!0)}this._propagateDirtyQueue()}}markAllDirty(){this._nextEmitEpoch();for(let e=0;e<this.indexToNodeId.length;e++)this._activeNode[e]&&this._emitNodeOnceAndMarkDirty(e,!0);this._propagateDirtyQueue()}hasDynamicDeps(e){let t=this.getNodeIndex(e);if(t===void 0)return!1;let n=this._dynamicDeps[t];return n!==void 0&&n.length>0}refreshDynamicDeps(e,t){let n=this.getNodeIndex(e);if(n===void 0||!this._activeNode[n])return!1;let r=this._dynamicDeps[n];if(!r||r.length===0)return!1;let i={cells:[],ranges:[],nodes:[]},a=[];for(let n=0;n<r.length;n++){var o;let s=r[n],c=t(e,s),l=(o=c.status)==null?`resolved`:o;a.push(`${String(s.id)}:${l}:${c.signature}`),this._collectDynamicResolveResult(i,c)}i.cells=z(i.cells),i.ranges=this._normalizeRangeDeps(i.ranges),i.nodes=this._mergeSortedUniqueNumbers([],i.nodes);let s=a.join(`|`),c=this._dynamicSignature[n];return this._removeRuntimeDepsOnly(n),this._addRuntimeDepsOnly(n,i.cells,i.ranges,i.nodes),this._dynamicSignature[n]=s,s===c?!1:(this._markNodeIndexDirty(n,!0),this._propagateDirtyQueue(),!0)}prepareDynamicDependencies(e){let t=this._getDirtyNodeIndicesSnapshot(),n=!1;for(let r=0;r<t.length;r++){let i=t[r],a=this._dynamicDeps[i];!a||a.length===0||this.refreshDynamicDeps(this.getNodeRefByIndex(i),e)&&(n=!0)}return n}getCalculationOrder(e){let t=this._getDirtyNodeIndicesSnapshot();if(t.length===0)return{hasCycle:!1,calculationForest:[]};let n=this._buildDirtyCalculationGraph(t);return{hasCycle:n.hasCycle,calculationForest:n.calculationForest}}clearCalculatedDirty(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];this.dirty[r]&&(this.dirty[r]=0,this._dirtyNodeCount--,t=!0)}t&&this._compactDirtyList()}_compactDirtyList(){let e=0;for(let t=0;t<this._dirtyList.length;t++){let n=this._dirtyList[t];this.dirty[n]&&this._activeNode[n]&&(this._dirtyList[e++]=n)}this._dirtyList.length=e}clearAllDirty(){for(let e=0;e<this._dirtyList.length;e++)this.dirty[this._dirtyList[e]]=0;this._dirtyList.length=0,this._dirtyNodeCount=0}getDirtyNodeIndices(){return this._getDirtyNodeIndicesSnapshot()}getDirtyNodes(){let e=this._getDirtyNodeIndicesSnapshot(),t=Array(e.length);for(let n=0;n<e.length;n++)t[n]=this.getNodeRefByIndex(e[n]);return t}forEachDependentByCell(e,t){this._nextEmitEpoch(),this._forEachDependentIndexByCellRaw(e,e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)})}forEachDependentByRange(e,t){this._nextEmitEpoch(),this._directPointIndex.forEachCellInRange(e,e=>{G(this.directDeps.get(e),e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)})}),this._runtimeDirectPointIndex.forEachCellInRange(e,e=>{G(this._runtimeDirectDeps.get(e),e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)})}),this.rangeIndex.forEachRangeIntersecting(e,e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)}),this._runtimeRangeIndex.forEachRangeIntersecting(e,e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)}),this._forEachCompressedSharedDependentByRange(e,e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)})}forEachDependentByNode(e,t){let n=this.getNodeIndex(e);n!==void 0&&(this._nextEmitEpoch(),this._forEachDependentOfNodeRaw(n,e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)}))}forEachDependentByIndex(e,t){this._activeNode[e]&&(this._nextEmitEpoch(),this._forEachDependentOfNodeRaw(e,e=>{this._activeNode[e]&&this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)}))}forEachPrecedentNode(e,t){let n=this.getNodeIndex(e);n!==void 0&&this._activeNode[n]&&(this._nextEmitEpoch(),this._forEachPrecedentNodeIndex(n,e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)}))}forEachPrecedentNodeByIndex(e,t){this._activeNode[e]&&(this._nextEmitEpoch(),this._forEachPrecedentNodeIndex(e,e=>{this._emitNodeOnce(e)&&t(this.getNodeRefByIndex(e),e)}))}hasUncalculatedDirtyPrecedentByIndex(e,t){if(!this._activeNode[e])return!1;let n=!1;return this._nextEmitEpoch(),this._forEachPrecedentNodeIndex(e,e=>{if(!n&&this.dirty[e]&&!t.has(e))return n=!0,!1}),n}wouldCreateCycle(e,t){let n=this._getOrCreateNodeIndex(e),r=this._normalizeCalcNodeDeps(t),i=r.cells,a=r.ranges,o=r.nodes,s=this._resolveExplicitNodeDeps(o);return this._wouldCreateCycleForNewDeps(n,i,a,s)}_normalizeCalcNodeDeps(e){let t=[],n=[],r=[];return this._collectStaticDeps(e,t,n,r),{cells:z(t),ranges:this._normalizeRangeDeps(n),nodes:X(r),dynamics:e.dynamics?e.dynamics.slice():[]}}_collectStaticDeps(e,t,n,r){if(e&&(e.cells&&t.push(...e.cells),e.ranges&&n.push(...e.ranges),e.nodes&&r.push(...e.nodes),e.dynamics))for(let i=0;i<e.dynamics.length;i++)this._collectStaticDeps(e.dynamics[i].paramDeps,t,n,r)}_mergeDynamicDeps(e,t){if(e.length===0)return t;if(t.length===0)return e;let n=e.slice();for(let e=0;e<t.length;e++){let r=t[e],i=!1;for(let e=0;e<n.length;e++)if(n[e].id===r.id){i=!0;break}i||n.push(r)}return n}_setNodeDynamicDeps(e,t){let n=this._dynamicDeps[e];n===void 0&&t.length===0||this._isSameDynamicDeps(n,t)||(this._removeRuntimeDepsOnly(e),this._dynamicSignature[e]=void 0,this._dynamicDeps[e]=t.length>0?t:void 0)}_isSameDynamicDeps(e,t){var n;if(((n=e==null?void 0:e.length)==null?0:n)!==t.length)return!1;if(!e)return t.length===0;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}_normalizeRangeDeps(e){if(!e||e.length===0)return[];let t=Array(e.length);for(let n=0;n<e.length;n++)t[n]=F(e[n]);return t}_mergeSortedUniqueNumbers(e,t){if(e.length===0)return t;if(t.length===0)return e;let n=[],r=0,i=0;for(;r<e.length&&i<t.length;){let a=e[r],o=t[i];a===o?(n.push(a),r++,i++):a<o?(n.push(a),r++):(n.push(o),i++)}for(;r<e.length;)n.push(e[r++]);for(;i<t.length;)n.push(t[i++]);return n}_mergeRangeDeps(e,t){if(e.length===0)return t;if(t.length===0)return e;let n=e.slice();for(let e=0;e<t.length;e++){let r=t[e];this._containsRange(n,r)||n.push(r)}return n}_containsRange(e,t){for(let n=0;n<e.length;n++)if(this._isSameRange(e[n],t))return!0;return!1}_isSameRange(e,t){return e.unitId===t.unitId&&e.sheetId===t.sheetId&&e.range.startRow===t.range.startRow&&e.range.endRow===t.range.endRow&&e.range.startColumn===t.range.startColumn&&e.range.endColumn===t.range.endColumn}canReachNode(e,t){let n=this.getNodeIndex(e),r=this.getNodeIndex(t);return n===void 0||r===void 0?!1:this._canReachNodeIndex(n,r)}hasCellFormula(e){let t=this.cellFormulaToIndex.get(e);return t!==void 0&&this._activeNode[t]===1}hasOtherFormula(e){let t=this.otherFormulaToIndex.get(e);return t!==void 0&&this._activeNode[t]===1}hasFeatureCalculation(e){let t=this.featureCalculationToIndex.get(e);return t!==void 0&&this._activeNode[t]===1}getNodeIndex(e){return this._getNodeIndexByType(e.type,e.id)}_getNodeIndexByType(e,t){switch(e){case 1:return P(t),this.cellFormulaToIndex.get(t);case 2:return this.otherFormulaToIndex.get(t);case 3:return this.featureCalculationToIndex.get(t);default:return}}getNodeRefByIndex(e){return{type:this._indexToNodeType[e],id:this.indexToNodeId[e]}}markCalcNodeIndicesChanged(e,t){this._markCalcNodeIndicesChanged(e,t)}_markCalcNodeIndicesChanged(e,t){if(e.length===0)return;this._nextEmitEpoch();let n=(t==null?void 0:t.onlySelf)!==!0;for(let t=0;t<e.length;t++){let r=e[t];this._activeNode[r]&&this._emitNodeOnceAndMarkDirty(r,n,n)}n&&this._propagateDirtyQueue()}_getOrCreateNodeIndex(e){return this._getOrCreateNodeIndexByType(e.type,e.id)}_getOrCreateNodeIndexByType(e,t){let n=this._getNodeIndexByType(e,t);if(n!==void 0)return n;let r=this.indexToNodeId.length;switch(this.indexToNodeId.push(t),this._ensureNodeCapacity(r+1),this._indexToNodeType[r]=e,e){case 1:P(t),this.cellFormulaToIndex.set(t,r);break;case 2:this.otherFormulaToIndex.set(t,r);break;case 3:this.featureCalculationToIndex.set(t,r);break;default:throw Error(`Unknown CalcNodeType: ${e}`)}return r}_ensureNodeCapacity(e){let t=this._sharedFormulaMembershipByNode.length;this._indexToNodeType=J(this._indexToNodeType,e),this.dirty=J(this.dirty,e),this.inQueue=J(this.inQueue,e),this._activeNode=J(this._activeNode,e),this._seenNodeEpoch=Y(this._seenNodeEpoch,e),this._visitNodeEpoch=Y(this._visitNodeEpoch,e),this._edgeSeenEpoch=Y(this._edgeSeenEpoch,e),this._tarjanSeenEpoch=Y(this._tarjanSeenEpoch,e),this._tarjanIndexArr=Y(this._tarjanIndexArr,e),this._tarjanLowArr=Y(this._tarjanLowArr,e),this._tarjanOnStack=J(this._tarjanOnStack,e),this._sharedFormulaMembershipByNode=this._growIntThirtyTwoArray(this._sharedFormulaMembershipByNode,e,-1),this._sharedFormulaMembershipByNode.length>t&&this._sharedFormulaMembershipByNode.fill(-1,t)}_growIntThirtyTwoArray(e,t,n){if(e.length>=t)return e;let r=Math.max(16,e.length);for(;r<t;)r*=2;let i=new Int32Array(r);return i.fill(n),i.set(e),i}_resolveExplicitNodeDeps(e){if(e.length===0)return[];let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.type===2)throw Error(`OtherFormula cannot be used as a dependency`);let i=this._getOrCreateNodeIndex(r);t.push(i)}if(t.length<=1)return t;t.sort((e,t)=>e-t);let n=1;for(let e=1;e<t.length;e++)t[e]!==t[n-1]&&(t[n++]=t[e]);return t.length=n,t}_isEmptyCalcNodeDeps(e){return(e.cells==null||e.cells.length===0)&&(e.ranges==null||e.ranges.length===0)&&(e.nodes==null||e.nodes.length===0)&&(e.dynamics==null||e.dynamics.length===0)}_unregisterCompressedSharedFormulaGroupByNode(e){let t=this._sharedFormulaMembershipByNode[e];if(t<0)return;let n=this._sharedFormulaGroups[t];if(n==null||!this._sharedFormulaGroupIndexById.has(n.groupId)){this._sharedFormulaMembershipByNode[e]=-1;return}this.unregisterCompressedSharedFormulaGroup(n.groupId)}_markCompressedSharedFormulaMembership(e,t){for(let n=t.range.startRow;n<=t.range.endRow;n++)for(let r=t.range.startColumn;r<=t.range.endColumn;r++){let i=this.codec.encodeCell(t.unitId,t.sheetId,n,r),a=this.cellFormulaToIndex.get(i);a!==void 0&&this._activeNode[a]&&(this._sharedFormulaMembershipByNode[a]=e)}}_clearCompressedSharedFormulaMembership(e,t){for(let n=t.range.startRow;n<=t.range.endRow;n++)for(let r=t.range.startColumn;r<=t.range.endColumn;r++){let i=this.codec.encodeCell(t.unitId,t.sheetId,n,r),a=this.cellFormulaToIndex.get(i);a!==void 0&&this._sharedFormulaMembershipByNode[a]===e&&(this._sharedFormulaMembershipByNode[a]=-1)}}_getCompressedSharedSourceCoverage(e,t){if(t.kind===`cell`)return F({unitId:t.unitId,sheetId:t.sheetId,range:{startRow:e.range.startRow+t.rowDelta,endRow:e.range.endRow+t.rowDelta,startColumn:e.range.startColumn+t.colDelta,endColumn:e.range.endColumn+t.colDelta}});let n=Math.min(t.startRowDelta,t.endRowDelta),r=Math.max(t.startRowDelta,t.endRowDelta),i=Math.min(t.startColDelta,t.endColDelta),a=Math.max(t.startColDelta,t.endColDelta);return F({unitId:t.unitId,sheetId:t.sheetId,range:{startRow:e.range.startRow+n,endRow:e.range.endRow+r,startColumn:e.range.startColumn+i,endColumn:e.range.endColumn+a}})}_forEachCompressedSharedDependentByRange(e,t){let n=F(e);this._sharedFormulaSourceRangeIndex.forEachRangeIntersecting(n,e=>{let r=this._sharedFormulaSourceEntries[e];if(!(r!=null&&r.active))return;let i=this._sharedFormulaGroups[r.groupIndex],a=this._reverseMapCompressedSharedPattern(n,i.fillRange,i.patterns[r.patternIndex]);a!=null&&this._forEachActiveCellFormulaInRange(a,t)})}_forEachActiveCellFormulaInRange(e,t){for(let n=e.range.startRow;n<=e.range.endRow;n++)for(let r=e.range.startColumn;r<=e.range.endColumn;r++){let i=this.codec.encodeCell(e.unitId,e.sheetId,n,r),a=this.cellFormulaToIndex.get(i);a!==void 0&&this._activeNode[a]&&t(a)}}_reverseMapCompressedSharedPattern(e,t,n){let r=n.kind===`cell`?[e.range.startRow-n.rowDelta,e.range.endRow-n.rowDelta]:[e.range.startRow-Math.max(n.startRowDelta,n.endRowDelta),e.range.endRow-Math.min(n.startRowDelta,n.endRowDelta)],i=n.kind===`cell`?[e.range.startColumn-n.colDelta,e.range.endColumn-n.colDelta]:[e.range.startColumn-Math.max(n.startColDelta,n.endColDelta),e.range.endColumn-Math.min(n.startColDelta,n.endColDelta)];return this._intersectRanges(t,{unitId:t.unitId,sheetId:t.sheetId,range:{startRow:r[0],endRow:r[1],startColumn:i[0],endColumn:i[1]}})}_intersectRanges(e,t){if(e.unitId!==t.unitId||e.sheetId!==t.sheetId)return;let n=Math.max(e.range.startRow,t.range.startRow),r=Math.min(e.range.endRow,t.range.endRow),i=Math.max(e.range.startColumn,t.range.startColumn),a=Math.min(e.range.endColumn,t.range.endColumn);if(!(n>r||i>a))return{unitId:e.unitId,sheetId:e.sheetId,range:{startRow:n,endRow:r,startColumn:i,endColumn:a}}}_forEachCompressedSharedPrecedent(e,t){let n=this._sharedFormulaMembershipByNode[e];if(n<0)return!0;let r=this._sharedFormulaGroups[n];for(let e=0;e<r.patterns.length;e++)if(t(r.patterns[e])===!1)return!1;return!0}_getCompressedSharedPrecedentCell(e,t){let n=this.indexToNodeId[e],r=this.codec.decodeCell(n);return this.codec.encodeCell(t.unitId,t.sheetId,r.row+t.rowDelta,r.col+t.colDelta)}_getCompressedSharedPrecedentRange(e,t){let n=this.indexToNodeId[e],r=this.codec.decodeCell(n);return F({unitId:t.unitId,sheetId:t.sheetId,range:{startRow:r.row+t.startRowDelta,startColumn:r.col+t.startColDelta,endRow:r.row+t.endRowDelta,endColumn:r.col+t.endColDelta}})}_addNodeDepsOnly(e,t,n,r){for(let n=0;n<t.length;n++)this._addDirectEdge(t[n],e);this._cellPrecedents[e]=t.length>0?t:void 0,this._rangePrecedents[e]=n.length>0?n:void 0;for(let t=0;t<n.length;t++)this.rangeIndex.addRange(e,n[t]);this._nodePrecedents[e]=r.length>0?r:void 0;for(let t=0;t<r.length;t++)this._addExplicitNodeEdge(r[t],e)}_removeNodeDepsOnly(e){let t=this._cellPrecedents[e];if(t){for(let n=0;n<t.length;n++)this._removeDirectEdge(t[n],e);this._cellPrecedents[e]=void 0}this.rangeIndex.removeNode(e),this._rangePrecedents[e]=void 0;let n=this._nodePrecedents[e];if(n){for(let t=0;t<n.length;t++)this._removeExplicitNodeEdge(n[t],e);this._nodePrecedents[e]=void 0}}_collectDynamicResolveResult(e,t){t.traceCells&&e.cells.push(...t.traceCells),t.cells&&e.cells.push(...t.cells),t.ranges&&e.ranges.push(...t.ranges),t.nodes&&e.nodes.push(...this._resolveExplicitNodeDeps(X(t.nodes)))}_addRuntimeDepsOnly(e,t,n,r){for(let n=0;n<t.length;n++)this._addRuntimeDirectEdge(t[n],e);this._runtimeCellPrecedents[e]=t.length>0?t:void 0,this._runtimeRangePrecedents[e]=n.length>0?n:void 0;for(let t=0;t<n.length;t++)this._runtimeRangeIndex.addRange(e,n[t]);this._runtimeNodePrecedents[e]=r.length>0?r:void 0;for(let t=0;t<r.length;t++)this._addRuntimeExplicitNodeEdge(r[t],e)}_removeRuntimeDepsOnly(e){let t=this._runtimeCellPrecedents[e];if(t){for(let n=0;n<t.length;n++)this._removeRuntimeDirectEdge(t[n],e);this._runtimeCellPrecedents[e]=void 0}this._runtimeRangeIndex.removeNode(e),this._runtimeRangePrecedents[e]=void 0;let n=this._runtimeNodePrecedents[e];if(n){for(let t=0;t<n.length;t++)this._removeRuntimeExplicitNodeEdge(n[t],e);this._runtimeNodePrecedents[e]=void 0}}_detachDependentsFromNode(e){let t=this.nodeDeps.get(e),n=[];G(t,e=>{n.push(e)}),this.nodeDeps.delete(e);for(let t=0;t<n.length;t++)this._detachPrecedentFromDependent(n[t],e);let r=this._runtimeNodeDeps.get(e);if(r===void 0)return;let i=[];G(r,e=>{i.push(e)}),this._runtimeNodeDeps.delete(e);for(let t=0;t<i.length;t++)this._detachRuntimePrecedentFromDependent(i[t],e)}_detachPrecedentFromDependent(e,t){let n=this._nodePrecedents[e];if(n===void 0)return;let r=0,i=!1;for(let e=0;e<n.length;e++){let a=n[e];if(a===t){i=!0;continue}n[r++]=a}i&&(r===0?this._nodePrecedents[e]=void 0:n.length=r)}_detachRuntimePrecedentFromDependent(e,t){let n=this._runtimeNodePrecedents[e];if(n===void 0)return;let r=0,i=!1;for(let e=0;e<n.length;e++){let a=n[e];if(a===t){i=!0;continue}n[r++]=a}i&&(r===0?this._runtimeNodePrecedents[e]=void 0:n.length=r)}_addDirectEdge(e,t){let n=this.directDeps.get(e);n===void 0&&this._directPointIndex.add(e),this.directDeps.set(e,U(n,t))}_removeDirectEdge(e,t){let n=this.directDeps.get(e);if(n===void 0)return;let r=W(n,t);r===void 0?(this.directDeps.delete(e),this._directPointIndex.remove(e)):this.directDeps.set(e,r)}_addRuntimeDirectEdge(e,t){let n=this._runtimeDirectDeps.get(e);n===void 0&&this._runtimeDirectPointIndex.add(e),this._runtimeDirectDeps.set(e,U(n,t))}_removeRuntimeDirectEdge(e,t){let n=this._runtimeDirectDeps.get(e);if(n===void 0)return;let r=W(n,t);r===void 0?(this._runtimeDirectDeps.delete(e),this._runtimeDirectPointIndex.remove(e)):this._runtimeDirectDeps.set(e,r)}_addExplicitNodeEdge(e,t){K(this.nodeDeps,e,t)}_removeExplicitNodeEdge(e,t){q(this.nodeDeps,e,t)}_addRuntimeExplicitNodeEdge(e,t){K(this._runtimeNodeDeps,e,t)}_removeRuntimeExplicitNodeEdge(e,t){q(this._runtimeNodeDeps,e,t)}_forEachDependentIndexByCellRaw(e,t){G(this.directDeps.get(e),t),G(this._runtimeDirectDeps.get(e),t);let n=this.codec.decodeCell(e);this.rangeIndex.forEachPoint(n.unitId,n.sheetId,n.row,n.col,t),this._runtimeRangeIndex.forEachPoint(n.unitId,n.sheetId,n.row,n.col,t),this._forEachCompressedSharedDependentByRange({unitId:n.unitId,sheetId:n.sheetId,range:{startRow:n.row,endRow:n.row,startColumn:n.col,endColumn:n.col}},t)}_forEachDependentOfNodeRaw(e,t){if(this._indexToNodeType[e]===1){let n=this.indexToNodeId[e];this._forEachDependentIndexByCellRaw(n,t)}G(this.nodeDeps.get(e),t),G(this._runtimeNodeDeps.get(e),t)}_markNodeIndexDirty(e,t=!1,n=!0){if(!this._activeNode[e])return;let r=this.dirty[e]===1;r||(this.dirty[e]=1,this._dirtyList.push(e),this._dirtyNodeCount++),n&&(!r||t)&&!this.inQueue[e]&&(this.inQueue[e]=1,this._propQueue.push(e))}_isEveryActiveNodeDirty(){return this._activeNodeCount>0&&this._dirtyNodeCount>=this._activeNodeCount}_propagateDirtyQueue(){if(this._isEveryActiveNodeDirty()){for(let e=0;e<this._propQueue.length;e++)this.inQueue[this._propQueue[e]]=0;this._propQueue.length=0;return}let e=0;for(;e<this._propQueue.length;){let t=this._propQueue[e++];this.inQueue[t]=0,this._activeNode[t]&&this._forEachDependentOfNodeRaw(t,e=>{this._markNodeIndexDirty(e,!1)})}this._propQueue.length=0}_getDirtyNodeIndicesSnapshot(){let e=[];for(let t=0;t<this._dirtyList.length;t++){let n=this._dirtyList[t];this.dirty[n]&&this._activeNode[n]&&e.push(n)}return e}_forEachDependentOfNodeDeduped(e,t){this._nextEdgeEpoch(),this._forEachDependentOfNodeRaw(e,e=>{this._edgeSeenEpoch[e]!==this._edgeEpoch&&(this._edgeSeenEpoch[e]=this._edgeEpoch,t(e))})}_forEachPrecedentNodeIndex(e,t){let n=this._cellPrecedents[e];if(n)for(let e=0;e<n.length;e++){let r=n[e],i=this.cellFormulaToIndex.get(r);if(i!==void 0&&this._activeNode[i]&&t(i)===!1)return!1}let r=this._rangePrecedents[e];if(r)for(let e=0;e<r.length;e++){let n=!0;if(this._formulaCellIndex.forEachFormulaInRange(r[e],e=>{if(n&&this._activeNode[e]&&t(e)===!1)return n=!1,!1}),!n)return!1}if(!this._forEachCompressedSharedPrecedent(e,n=>{if(n.kind===`cell`){let r=this._getCompressedSharedPrecedentCell(e,n),i=this.cellFormulaToIndex.get(r);return i!==void 0&&this._activeNode[i]&&t(i)===!1?!1:void 0}let r=!0;return this._formulaCellIndex.forEachFormulaInRange(this._getCompressedSharedPrecedentRange(e,n),e=>{if(r&&this._activeNode[e]&&t(e)===!1)return r=!1,!1}),r}))return!1;let i=this._nodePrecedents[e];if(i)for(let e=0;e<i.length;e++){let n=i[e];if(this._activeNode[n]&&t(n)===!1)return!1}let a=this._runtimeCellPrecedents[e];if(a)for(let e=0;e<a.length;e++){let n=a[e],r=this.cellFormulaToIndex.get(n);if(r!==void 0&&this._activeNode[r]&&t(r)===!1)return!1}let o=this._runtimeRangePrecedents[e];if(o)for(let e=0;e<o.length;e++){let n=!0;if(this._formulaCellIndex.forEachFormulaInRange(o[e],e=>{if(n&&this._activeNode[e]&&t(e)===!1)return n=!1,!1}),!n)return!1}let s=this._runtimeNodePrecedents[e];if(s)for(let e=0;e<s.length;e++){let n=s[e];if(this._activeNode[n]&&t(n)===!1)return!1}return!0}_wouldCreateCycleForNewDeps(e,t,n,r){for(let n=0;n<t.length;n++){let r=t[n],i=this.cellFormulaToIndex.get(r);if(i!==void 0&&this._activeNode[i]&&(i===e||this._canReachNodeIndex(e,i)))return!0}if(this._indexToNodeType[e]===1){let t=this.indexToNodeId[e],r=this.codec.decodeCell(t);for(let e=0;e<n.length;e++)if(R(n[e],r))return!0}for(let t=0;t<n.length;t++){let r=n[t],i=!1;if(this._formulaCellIndex.forEachFormulaInRange(r,t=>{if(!i&&this._activeNode[t]){if(t===e){i=!0;return}this._canReachNodeIndex(e,t)&&(i=!0)}}),i)return!0}for(let t=0;t<r.length;t++){let n=r[t];if(n===e||this._canReachNodeIndex(e,n))return!0}return!1}_canReachNodeIndex(e,t){if(e===t)return!0;this._nextVisitEpoch();let n=[e];for(;n.length>0;){let e=n.pop(),r=!1;if(this._forEachDependentOfNodeRaw(e,e=>{if(!r&&this._visitNodeEpoch[e]!==this._visitEpoch){if(this._visitNodeEpoch[e]=this._visitEpoch,e===t){r=!0;return}n.push(e)}}),r)return!0}return!1}_buildDirtyCalculationGraph(e){let t=this._tryBuildAcyclicDirtyCalculationGraph(e);return t===void 0?this._buildDirtyCalculationGraphWithScc(e):t}_tryBuildAcyclicDirtyCalculationGraph(e){let t=e.length;this._nextTarjanEpoch();for(let n=0;n<t;n++){let t=e[n];this._tarjanSeenEpoch[t]=this._tarjanEpoch,this._tarjanIndexArr[t]=n+1}let n=new Uint32Array(t),r=new Int32Array(t),i=new Int32Array(t),a=new Uint8Array(t),o=new Uint8Array(t),s=new Uint8Array(t),c=[],l=[],u=new Map,d=[],f=[],p=[],m=[],h=new Q(this.codec,this._initialRangeCapacity,this._maxIndexedSpan);for(let e=0;e<t;e++)i[e]=e,r[e]=-1;for(let g=0;g<t;g++){let t=e[g];this._nextEdgeEpoch(),this._addAcyclicExactPrecedentEdges(t,g,n,r,c,l,i,a,o,s),this._addAcyclicRangePrecedentGroups(t,g,n,u,d,f,p,m,h,i,a,o,s)}let g=new Int32Array(t),_=0,v=0;for(let e=0;e<t;e++)n[e]===0&&(g[v++]=e);let y=new Int32Array(t),b=[],x=-1,S=0,C=!1;for(;_<v;){let t=g[_++],a=e[t];S++,this._appendAcyclicCalculationNode(b,y,i,o,s,t,a,x),C=C||s[t]===1,o[t]===0&&x===-1&&(x=b.length-1);for(let e=r[t];e!==-1;e=l[e]){let t=c[e];n[t]--,n[t]===0&&(g[v++]=t)}if(this._indexToNodeType[a]===1){let e=this.indexToNodeId[a],t=this.codec.decodeCell(e);h.forEachPoint(t.unitId,t.sheetId,t.row,t.col,e=>{if(f[e]<=0||(f[e]--,f[e]!==0))return;let t=p[e];for(let e=0;e<t.length;e++){let r=t[e];n[r]--,n[r]===0&&(g[v++]=r)}})}}if(S===t)return{calculationForest:b,hasCycle:C}}_addAcyclicExactPrecedentEdges(e,t,n,r,i,a,o,s,c,l){let u=e=>{if(e===void 0||!this._activeNode[e]||!this.dirty[e]||this._edgeSeenEpoch[e]===this._edgeEpoch)return;this._edgeSeenEpoch[e]=this._edgeEpoch;let u=this._getCurrentDirtyOrdinal(e);if(!(u<0)){if(c[u]=1,c[t]=1,u===t){l[t]=1;return}a.push(r[u]),i.push(t),r[u]=i.length-1,n[t]++,this._unionCalculationForestComponents(o,s,u,t)}},d=this._cellPrecedents[e];if(d)for(let e=0;e<d.length;e++)u(this.cellFormulaToIndex.get(d[e]));let f=this._nodePrecedents[e];if(f)for(let e=0;e<f.length;e++)u(f[e]);let p=this._runtimeCellPrecedents[e];if(p)for(let e=0;e<p.length;e++)u(this.cellFormulaToIndex.get(p[e]));let m=this._runtimeNodePrecedents[e];if(m)for(let e=0;e<m.length;e++)u(m[e]);this._forEachCompressedSharedPrecedent(e,t=>{t.kind===`cell`&&u(this.cellFormulaToIndex.get(this._getCompressedSharedPrecedentCell(e,t)))})}_addAcyclicRangePrecedentGroups(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=[],m=m=>{let h=this._getOrCreateAcyclicRangeGroup(m,r,i,a,o,s,c,l,u,d);if(a[h]===0)return;for(let e=0;e<p.length;e++)if(p[e]===h)return;p.push(h),o[h].push(t),n[t]++,d[t]=1;let g=s[h];g>=0&&this._unionCalculationForestComponents(l,u,g,t),this._indexToNodeType[e]===1&&R(m,this.codec.decodeCell(this.indexToNodeId[e]))&&(f[t]=1)},h=this._rangePrecedents[e];if(h)for(let e=0;e<h.length;e++)m(h[e]);let g=this._runtimeRangePrecedents[e];if(g)for(let e=0;e<g.length;e++)m(g[e]);this._forEachCompressedSharedPrecedent(e,t=>{t.kind===`range`&&m(this._getCompressedSharedPrecedentRange(e,t))})}_getOrCreateAcyclicRangeGroup(e,t,n,r,i,a,o,s,c,l){let u=F(e),d=[u.unitId,u.sheetId,u.range.startRow,u.range.endRow,u.range.startColumn,u.range.endColumn].join(`:`),f=t.get(d);if(f!==void 0)return f;let p=n.length,m=0,h=-1;return t.set(d,p),n.push(u),i.push([]),o.addRange(p,u),this._formulaCellIndex.forEachFormulaInRange(u,e=>{if(!this._activeNode[e]||!this.dirty[e])return;let t=this._getCurrentDirtyOrdinal(e);if(!(t<0)){if(m++,l[t]=1,h===-1){h=t;return}this._unionCalculationForestComponents(s,c,h,t)}}),r.push(m),a.push(h),p}_appendAcyclicCalculationNode(e,t,n,r,i,a,o,s){let c=r[a]===0,l=this._findCalculationForestRoot(n,a),u=(c?s+1:t[l])-1;if(u===-1&&(u=e.length,c||(t[l]=u+1),e.push({hasCycle:!1,plan:[]})),i[a]===1){e[u].plan.push({type:`cycle`,nodeIndices:[o]}),e[u].hasCycle=!0;return}this._appendCalculationNodePlanItem(e[u].plan,o)}_getCurrentDirtyOrdinal(e){return this._tarjanSeenEpoch[e]===this._tarjanEpoch?this._tarjanIndexArr[e]-1:-1}_buildDirtyCalculationGraphWithScc(e){let t=this._findDirtySccs(e),n=t.componentStarts.length,r=new Int32Array(this.indexToNodeId.length),i=new Int32Array(this.indexToNodeId.length);r.fill(-1),i.fill(-1);for(let t=0;t<e.length;t++)i[e[t]]=t;let a=new Int32Array(n);a.fill(2**53-1);for(let e=0;e<n;e++){let n=2**53-1,o=t.componentStarts[e],s=this._getDirtySccEnd(t,e);for(let a=o;a<s;a++){let o=t.componentNodes[a];r[o]=e;let s=i[o];s>=0&&s<n&&(n=s)}a[e]=n}let o=new Int32Array(n);o.fill(-1);let s=[],c=[],l=new Int32Array(n),u=new Uint8Array(n),d=new Uint8Array(n),f=new Uint32Array(n),p=1,m=new Uint32Array(n);for(let e=0;e<n;e++)l[e]=e;for(let e=0;e<n;e++){p===4294967295&&(f.fill(0),p=1);let n=t.componentStarts[e],i=this._getDirtySccEnd(t,e);for(let a=n;a<i;a++){let n=t.componentNodes[a];this._forEachDependentOfNodeDeduped(n,t=>{if(!this._activeNode[t]||!this.dirty[t])return;let n=r[t];n<0||n===e||f[n]!==p&&(f[n]=p,c.push(o[e]),s.push(n),o[e]=s.length-1,m[n]++,d[e]=1,d[n]=1,this._unionCalculationForestComponents(l,u,e,n))})}p++}let h=this._toposortComponents(o,s,c,m,a),g=this._buildCalculationForest(t,h,l,d);t.componentNodes.length=0,t.componentStarts.length=0,s.length=0,c.length=0,h.length=0;let _=!1;for(let e=0;e<g.length;e++)if(g[e].hasCycle){_=!0;break}return{calculationForest:g,hasCycle:_}}_toposortComponents(e,t,n,r,i){let a=new Uint32Array(r),o=[];for(let e=0;e<a.length;e++)a[e]===0&&this._insertComponentByRank(o,0,e,i);let s=[],c=0;for(;c<o.length;){let r=o[c++];s.push(r);for(let s=e[r];s!==-1;s=n[s]){let e=t[s];a[e]--,a[e]===0&&this._insertComponentByRank(o,c,e,i)}}return s}_insertComponentByRank(e,t,n,r){let i=e.length,a=r[n];for(;i>t&&r[e[i-1]]>a;)i--;e.splice(i,0,n)}_buildCalculationForest(e,t,n,r){let i=new Int32Array(e.componentStarts.length);i.fill(-1);let a=[],o=-1;for(let s=0;s<t.length;s++){let c=t[s],l=this._findCalculationForestRoot(n,c),u=r[c]===0,d=u?o:i[l];d===-1&&(d=a.length,u?o=d:i[l]=d,a.push({hasCycle:!1,plan:[]}));let f=a[d],p=this._createCalculationPlanItem(e,c);if(p.type===`node`){this._appendCalculationNodePlanItem(f.plan,p.nodeIndex);continue}f.plan.push(p),p.type===`cycle`&&(f.hasCycle=!0)}return a}_appendCalculationNodePlanItem(e,t){let n=e[e.length-1];if((n==null?void 0:n.type)===`nodes`&&n.nodeIndices.length<8192){n.nodeIndices.push(t);return}e.push({type:`nodes`,nodeIndices:[t]})}_findCalculationForestRoot(e,t){let n=t;for(;e[n]!==n;)n=e[n];for(;e[t]!==t;){let r=e[t];e[t]=n,t=r}return n}_unionCalculationForestComponents(e,t,n,r){let i=this._findCalculationForestRoot(e,n),a=this._findCalculationForestRoot(e,r);if(i!==a){if(t[i]<t[a]){let e=i;i=a,a=e}e[a]=i,t[i]===t[a]&&t[i]++}}_createCalculationPlanItem(e,t){let n=e.componentStarts[t],r=this._getDirtySccEnd(e,t);if(r-n===1&&!this._hasSelfLoop(e.componentNodes[n]))return{type:`node`,nodeIndex:e.componentNodes[n]};let i=e.componentNodes.slice(n,r);return i.sort((e,t)=>e-t),{type:`cycle`,nodeIndices:i}}_getDirtySccEnd(e,t){return t+1<e.componentStarts.length?e.componentStarts[t+1]:e.componentNodes.length}_findDirtySccs(e){this._nextTarjanEpoch();let t=1,n=[],r=[],i=[],a=e=>{if(this._tarjanSeenEpoch[e]=this._tarjanEpoch,this._tarjanIndexArr[e]=t,this._tarjanLowArr[e]=t,t++,n.push(e),this._tarjanOnStack[e]=1,this._forEachDependentOfNodeDeduped(e,t=>{this._activeNode[t]&&this.dirty[t]&&(this._tarjanSeenEpoch[t]===this._tarjanEpoch?this._tarjanOnStack[t]&&(this._tarjanLowArr[e]=Math.min(this._tarjanLowArr[e],this._tarjanIndexArr[t])):(a(t),this._tarjanLowArr[e]=Math.min(this._tarjanLowArr[e],this._tarjanLowArr[t])))}),this._tarjanLowArr[e]===this._tarjanIndexArr[e])for(i.push(r.length);;){let t=n.pop();if(this._tarjanOnStack[t]=0,r.push(t),t===e)break}};for(let t=0;t<e.length;t++){let n=e[t];this._activeNode[n]&&this.dirty[n]&&this._tarjanSeenEpoch[n]!==this._tarjanEpoch&&a(n)}return{componentNodes:r,componentStarts:i}}_hasSelfLoop(e){let t=!1;return this._forEachDependentOfNodeDeduped(e,n=>{n===e&&(t=!0)}),t}_nextEmitEpoch(){this._emitEpoch++,this._emitEpoch>=4294967295&&(this._seenNodeEpoch.fill(0),this._emitEpoch=1)}_emitNodeOnce(e){return this._seenNodeEpoch[e]===this._emitEpoch?!1:(this._seenNodeEpoch[e]=this._emitEpoch,!0)}_emitNodeOnceAndMarkDirty(e,t=!1,n=!0){this._emitNodeOnce(e)&&this._markNodeIndexDirty(e,t,n)}_nextVisitEpoch(){this._visitEpoch++,this._visitEpoch>=4294967295&&(this._visitNodeEpoch.fill(0),this._visitEpoch=1)}_nextEdgeEpoch(){this._edgeEpoch++,this._edgeEpoch>=4294967295&&(this._edgeSeenEpoch.fill(0),this._edgeEpoch=1)}_nextTarjanEpoch(){this._tarjanEpoch++,this._tarjanEpoch>=4294967295&&(this._tarjanSeenEpoch.fill(0),this._tarjanEpoch=1)}},ve=class extends c{constructor(...e){super(...e),N(this,`_dependencyEngineCache`,new _e({maxRows:1048576,maxCols:16384}))}reset(){this._dependencyEngineCache.reset()}_getCellIdsAndRanges(e){let t=[],n=[];for(let r=0;r<e.rangeList.length;r++){let{unitId:i,sheetId:a,range:o}=e.rangeList[r];if(o.startRow===o.endRow&&o.startColumn===o.endColumn){let e=this._dependencyEngineCache.encodeCell(i,a,o.startRow,o.startColumn);t.push(e)}else n.push({unitId:i,sheetId:a,range:o})}return{cellIds:t,ranges:n}}_getDynamicDeps(e,t,n,r){if(!(!e.addressFunctionNodes||e.addressFunctionNodes.length===0))return[{id:`address-functions`,paramDeps:{cells:t,ranges:n,nodes:r}}]}addOtherFormulaDependencyPro(e,t,n,r,i,a=`replace`){let{cellIds:o,ranges:s}=this._getCellIdsAndRanges(r),c=this._getDynamicDeps(r,o,s,i),l=r.refOffsetX||0,u=r.refOffsetY||0,d=this._dependencyEngineCache.encodeOtherFormulaId(e,t,n,l,u);return this._dependencyEngineCache.setOtherFormulaDeps(d,{cells:o,ranges:s,nodes:i,dynamics:c},{checkCycle:!1,markDirty:!1,mode:a}).nodeIndex}removeOtherFormulaDependency(e,t,n){this._dependencyEngineCache.clearOtherFormulas(e,t,n,void 0,void 0,{markDependentsDirty:!0})}clearOtherFormulaDependency(e,t){t?this._dependencyEngineCache.clearOtherFormulas(e,t,void 0,void 0,void 0,{markDependentsDirty:!0}):this._dependencyEngineCache.clearOtherFormulas(e,void 0,void 0,void 0,void 0,{markDependentsDirty:!0})}getOtherFormulaDependencyPro(e,t,n,r,i){let a=this._dependencyEngineCache.encodeOtherFormulaId(e,t,n,r,i);if(this._dependencyEngineCache.hasOtherFormula(a))return this._dependencyEngineCache.getNodeIndex({type:2,id:a})}addFeatureFormulaDependencyPro(e,t,n,r){let{cellIds:i,ranges:a}=this._getCellIdsAndRanges(r),o=this._dependencyEngineCache.encodeFeatureCalculationId(e,t,n);return this._dependencyEngineCache.setFeatureCalculationDeps(o,{cells:i,ranges:a},{checkCycle:!1,markDirty:!1}).nodeIndex}removeFeatureFormulaDependency(e,t,n){let r=n.map(n=>this._dependencyEngineCache.encodeFeatureCalculationId(e,t,n));this._dependencyEngineCache.removeFeatureCalculations(r,{markDependentsDirty:!0,detachDependents:!0})}clearFeatureFormulaDependency(e,t){t?this._dependencyEngineCache.clearFeatureCalculations(e,t,{markDependentsDirty:!0,detachDependents:!0}):this._dependencyEngineCache.clearFeatureCalculations(e,void 0,{markDependentsDirty:!0,detachDependents:!0})}getFeatureFormulaDependencyPro(e,t,n){let r=this._dependencyEngineCache.encodeFeatureCalculationId(e,t,n);if(this._dependencyEngineCache.hasFeatureCalculation(r))return this._dependencyEngineCache.getNodeIndex({type:3,id:r})}getFeatureFormulaDependencyNodePro(e,t,n){return{type:3,id:this._dependencyEngineCache.encodeFeatureCalculationId(e,t,n)}}addFormulaDependencyPro(e,t,n,r,i,a,o=`replace`){let s=this._dependencyEngineCache.encodeCell(e,t,n,r),{cellIds:c,ranges:l}=this._getCellIdsAndRanges(i),u=this._getDynamicDeps(i,c,l,a);return this._dependencyEngineCache.setCellFormulaDeps(s,{cells:c,ranges:l,nodes:a,dynamics:u},{checkCycle:!1,markDirty:!1,mode:o}).nodeIndex}addFormulaDependencyNodeOnlyPro(e,t,n,r){let i=this._dependencyEngineCache.encodeCell(e,t,n,r);return this._dependencyEngineCache.setCellFormulaDeps(i,{},{checkCycle:!1,markDirty:!1}).nodeIndex}registerCompressedSharedFormulaGroup(e){this._dependencyEngineCache.registerCompressedSharedFormulaGroup(e)}clearCompressedSharedFormulaGroups(e,t){this._dependencyEngineCache.clearCompressedSharedFormulaGroups(e,t)}removeFormulaDependency(e,t,n,r){let i=this._dependencyEngineCache.encodeCell(e,t,n,r);this._dependencyEngineCache.removeCellFormula(i,{markDependentsDirty:!0})}clearFormulaDependency(e,t){this._dependencyEngineCache.clearCompressedSharedFormulaGroups(e,t),t?this._dependencyEngineCache.clearCellFormulas(e,t,{markDependentsDirty:!0}):this._dependencyEngineCache.clearCellFormulas(e,void 0,{markDependentsDirty:!0})}getFormulaDependencyPro(e,t,n,r){let i=this._dependencyEngineCache.encodeCell(e,t,n,r);if(this._dependencyEngineCache.hasCellFormula(i))return this._dependencyEngineCache.getNodeIndex({type:1,id:i})}markIndicesChanged(e,t){this._dependencyEngineCache.markCalcNodeIndicesChanged(e,t)}markRangesChanged(e,t){this._dependencyEngineCache.markRangesChanged(e,t)}markDirtyFeatureCalculations(e){let t=[];Object.keys(e).forEach(n=>{let r=e[n];r!=null&&Object.keys(r).forEach(e=>{let i=r[e];i!=null&&Object.keys(i).forEach(r=>{t.push(this.getFeatureFormulaDependencyNodePro(n,e,r))})})}),this._dependencyEngineCache.markCalcNodesChanged(t)}markDirtyOtherFormulas(e){Object.keys(e).forEach(t=>{let n=e[t];n!=null&&Object.keys(n).forEach(e=>{let r=n[e];r!=null&&this._dependencyEngineCache.markOtherFormulasChanged(t,e,Object.keys(r))})})}markDirtySheetNames(e){let t=[];Object.keys(e).forEach(n=>{let r=e[n];r!=null&&Object.keys(r).forEach(e=>{t.push({unitId:n,sheetId:e,range:{startRow:0,endRow:1048575,startColumn:0,endColumn:16383}})})}),this._dependencyEngineCache.markRangesChanged(t,{includeFormulaCells:!1})}markAllDirty(){this._dependencyEngineCache.markAllDirty()}clearCalculatedDirty(e){this._dependencyEngineCache.clearCalculatedDirty(e)}hasDynamicDeps(e){return this._dependencyEngineCache.hasDynamicDeps(e)}hasDynamicDepsByIndex(e){return this._dependencyEngineCache.hasDynamicDeps(this._dependencyEngineCache.getNodeRefByIndex(e))}refreshDynamicDeps(e,t){return this._dependencyEngineCache.refreshDynamicDeps(e,t)}refreshDynamicDepsByIndex(e,t){return this._dependencyEngineCache.refreshDynamicDeps(this._dependencyEngineCache.getNodeRefByIndex(e),t)}hasUncalculatedDirtyPrecedentByIndex(e,t){return this._dependencyEngineCache.hasUncalculatedDirtyPrecedentByIndex(e,t)}forEachPrecedentNodeByIndex(e,t){this._dependencyEngineCache.forEachPrecedentNodeByIndex(e,(e,n)=>{t(n)})}forEachDependentNodeByIndex(e,t){this._dependencyEngineCache.forEachDependentByIndex(e,(e,n)=>{t(n)})}prepareDynamicDependencies(e){return this._dependencyEngineCache.prepareDynamicDependencies(e)}getCalculationOrder(e){return this._dependencyEngineCache.getCalculationOrder(e)}};function ye(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let $=class extends b{_initializeWithOverride(){var e;this._injector.add([y,{useClass:y}]),(e=this._config)!=null&&e.notExecuteFormula||[[g,{useClass:de}],[_,{useClass:ve}],[v,{useClass:ue}]].forEach(e=>this._injector.add(e))}};N($,`packageName`,C),N($,`version`,w),$=ye([t(e)],$);export{$ as UniverProFormulaEnginePlugin};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { CellId, IDecodedCell } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Encodes unit / sheet / row / column coordinates into compact numeric keys.
|
|
4
|
+
*
|
|
5
|
+
* `CellId` is encoded as:
|
|
6
|
+
* `sheetKey * maxRows * maxCols + row * maxCols + col`.
|
|
7
|
+
*/
|
|
8
|
+
export declare class CellCodec {
|
|
9
|
+
readonly maxRows: number;
|
|
10
|
+
readonly maxCols: number;
|
|
11
|
+
readonly sheetSize: number;
|
|
12
|
+
private readonly _sheetKeyById;
|
|
13
|
+
private readonly _sheetIdByKey;
|
|
14
|
+
constructor(maxRows: number, maxCols: number);
|
|
15
|
+
reset(): void;
|
|
16
|
+
encodeCell(unitId: string, sheetId: string, row: number, col: number): CellId;
|
|
17
|
+
decodeCell(cell: CellId): IDecodedCell;
|
|
18
|
+
encodeSheet(unitId: string, sheetId: string): number;
|
|
19
|
+
decodeSheetKey(sheetKey: number): {
|
|
20
|
+
unitId: string;
|
|
21
|
+
sheetId: string;
|
|
22
|
+
};
|
|
23
|
+
encodeRow(unitId: string, sheetId: string, row: number): number;
|
|
24
|
+
encodeRowBySheetKey(sheetKey: number, row: number): number;
|
|
25
|
+
decodeRowKey(key: number): {
|
|
26
|
+
sheetKey: number;
|
|
27
|
+
unitId: string;
|
|
28
|
+
sheetId: string;
|
|
29
|
+
row: number;
|
|
30
|
+
};
|
|
31
|
+
encodeCol(unitId: string, sheetId: string, col: number): number;
|
|
32
|
+
encodeColBySheetKey(sheetKey: number, col: number): number;
|
|
33
|
+
decodeColKey(key: number): {
|
|
34
|
+
sheetKey: number;
|
|
35
|
+
unitId: string;
|
|
36
|
+
sheetId: string;
|
|
37
|
+
col: number;
|
|
38
|
+
};
|
|
39
|
+
}
|