From 104f28d06ff4b403dc04ce20531efa465b259a6a Mon Sep 17 00:00:00 2001 From: Ewout Stortenbeker Date: Thu, 18 May 2023 19:44:57 +0200 Subject: [PATCH] chore: build --- dist/browser.js | 30 +++++++-- dist/browser.min.js | 2 +- dist/cjs/btree/binary-tree.js | 11 +-- dist/cjs/btree/binary-tree.js.map | 2 +- dist/cjs/storage/index.js | 17 ++++- dist/cjs/storage/index.js.map | 2 +- dist/cjs/test/issue-225.spec.js | 90 +++++++++++++++++++++++++ dist/cjs/test/issue-225.spec.js.map | 1 + dist/esm/btree/binary-tree.js | 11 +-- dist/esm/btree/binary-tree.js.map | 2 +- dist/esm/ipc/socket.js | 2 +- dist/esm/storage/index.js | 17 ++++- dist/esm/storage/index.js.map | 2 +- dist/esm/test/dataset.js | 2 +- dist/esm/test/issue-225.spec.js | 88 ++++++++++++++++++++++++ dist/esm/test/issue-225.spec.js.map | 1 + dist/esm/test/readonly.spec.js | 4 +- dist/esm/test/tempdb.js | 4 +- dist/types/btree/binary-tree.d.ts.map | 2 +- dist/types/node-info.d.ts | 2 +- dist/types/node-value-types.d.ts | 2 +- dist/types/storage/index.d.ts | 1 + dist/types/storage/index.d.ts.map | 2 +- dist/types/test/issue-225.spec.d.ts | 2 + dist/types/test/issue-225.spec.d.ts.map | 1 + 25 files changed, 265 insertions(+), 35 deletions(-) create mode 100644 dist/cjs/test/issue-225.spec.js create mode 100644 dist/cjs/test/issue-225.spec.js.map create mode 100644 dist/esm/test/issue-225.spec.js create mode 100644 dist/esm/test/issue-225.spec.js.map create mode 100644 dist/types/test/issue-225.spec.d.ts create mode 100644 dist/types/test/issue-225.spec.d.ts.map diff --git a/dist/browser.js b/dist/browser.js index f3f75e7e..05d60657 100644 --- a/dist/browser.js +++ b/dist/browser.js @@ -4588,6 +4588,7 @@ class Storage extends acebase_core_1.SimpleEventEmitter { // private _validation = new Map boolean, schema?: SchemaDefinition }>; this._schemas = []; this._indexes = []; + this._annoucedIndexes = new Map(); this.indexes = { /** * Tests if (the default storage implementation of) indexes are supported in the environment. @@ -4689,9 +4690,18 @@ class Storage extends acebase_core_1.SimpleEventEmitter { if (existingIndex) { return existingIndex; } + else if (this._annoucedIndexes.has(fileName)) { + // Index is already in the process of being added, wait until it becomes availabe + const index = await this._annoucedIndexes.get(fileName); + return index; + } try { - const index = await data_index_1.DataIndex.readFromFile(this, fileName); + // Announce the index to prevent race condition in between reading and receiving the IPC index.created notification + const indexPromise = data_index_1.DataIndex.readFromFile(this, fileName); + this._annoucedIndexes.set(fileName, indexPromise); + const index = await indexPromise; this._indexes.push(index); + this._annoucedIndexes.delete(fileName); return index; } catch (err) { @@ -5324,6 +5334,9 @@ class Storage extends acebase_core_1.SimpleEventEmitter { else if (type === 'child_removed') { trigger = oldValue !== null && newValue === null; } + if (!trigger) { + return; + } const pathKeys = acebase_core_1.PathInfo.getPathKeys(sub.dataPath); variables.forEach(variable => { // only replaces first occurrence (so multiple *'s will be processed 1 by 1) @@ -5332,7 +5345,7 @@ class Storage extends acebase_core_1.SimpleEventEmitter { pathKeys[index] = variable.value; }); const dataPath = pathKeys.reduce((path, key) => acebase_core_1.PathInfo.getChildPath(path, key), ''); - trigger && this.subscriptions.trigger(sub.type, sub.subscriptionPath, dataPath, oldValue, newValue, options.context); + this.subscriptions.trigger(sub.type, sub.subscriptionPath, dataPath, oldValue, newValue, options.context); }; const prepareMutationEvents = (currentPath, oldValue, newValue, compareResult) => { const batch = []; @@ -9087,10 +9100,15 @@ class DataReferenceQuery { } ev = eventData; } - listeners.forEach(callback => { try { - callback(ev); - } - catch (e) { } }); + listeners.forEach(callback => { + var _a, _b; + try { + callback(ev); + } + catch (err) { + this.ref.db.debug.error(`Error executing "${ev.name}" event handler of realtime query on path "${this.ref.path}": ${(_b = (_a = err === null || err === void 0 ? void 0 : err.stack) !== null && _a !== void 0 ? _a : err === null || err === void 0 ? void 0 : err.message) !== null && _b !== void 0 ? _b : err}`); + } + }); }; // Check if there are event listeners set for realtime changes options.monitor = { add: false, change: false, remove: false }; diff --git a/dist/browser.min.js b/dist/browser.min.js index 4d1eb853..528a1ce2 100644 --- a/dist/browser.min.js +++ b/dist/browser.min.js @@ -1 +1 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.acebase=f()}})((function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,(function(r){var n=e[i][1][r];return o(n||r)}),p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i{await this.ready();if(this.api.storage instanceof binary_1.AceBaseStorage){await this.api.storage.repairNode(path,options)}else if(!this.api.storage.repairNode){throw new Error(`repairNode is not supported with chosen storage engine`)}},repairNodeTree:async path=>{await this.ready();const storage=this.api.storage;await storage.repairNodeTree(path)}};const apiSettings={db:this,settings:settings};this.api=new api_local_1.LocalApi(dbname,apiSettings,(()=>{this.emit("ready")}))}async close(){await this.api.storage.close()}get settings(){const ipc=this.api.storage.ipc,debug=this.debug;return{get logLevel(){return debug.level},set logLevel(level){debug.setLevel(level)},get ipcEvents(){return ipc.eventsEnabled},set ipcEvents(enabled){ipc.eventsEnabled=enabled}}}static WithLocalStorage(dbname,settings={}){const db=(0,local_storage_1.createLocalStorageInstance)(dbname,settings);return db}static WithIndexedDB(dbname,init={}){throw new Error(`IndexedDB storage can only be used in browser contexts`)}}exports.AceBase=AceBase},{"./api-local":3,"./storage/binary":18,"./storage/custom/indexed-db/settings":23,"./storage/custom/local-storage":25,"acebase-core":43}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LocalApi=void 0;const acebase_core_1=require("acebase-core");const binary_1=require("./storage/binary");const sqlite_1=require("./storage/sqlite");const mssql_1=require("./storage/mssql");const custom_1=require("./storage/custom");const node_value_types_1=require("./node-value-types");const query_1=require("./query");const node_errors_1=require("./node-errors");class LocalApi extends acebase_core_1.Api{constructor(dbname="default",init,readyCallback){super();this.db=init.db;const storageEnv={logLevel:init.settings.logLevel};if(typeof init.settings.storage==="object"){if(sqlite_1.SQLiteStorageSettings&&init.settings.storage instanceof sqlite_1.SQLiteStorageSettings){this.storage=new sqlite_1.SQLiteStorage(dbname,init.settings.storage,storageEnv)}else if(mssql_1.MSSQLStorageSettings&&init.settings.storage instanceof mssql_1.MSSQLStorageSettings){this.storage=new mssql_1.MSSQLStorage(dbname,init.settings.storage,storageEnv)}else if(custom_1.CustomStorageSettings&&init.settings.storage instanceof custom_1.CustomStorageSettings){this.storage=new custom_1.CustomStorage(dbname,init.settings.storage,storageEnv)}else{const storageSettings=init.settings.storage instanceof binary_1.AceBaseStorageSettings?init.settings.storage:new binary_1.AceBaseStorageSettings(init.settings.storage);this.storage=new binary_1.AceBaseStorage(dbname,storageSettings,storageEnv)}}else{this.storage=new binary_1.AceBaseStorage(dbname,new binary_1.AceBaseStorageSettings,storageEnv)}this.storage.on("ready",readyCallback)}async stats(options){return this.storage.stats}subscribe(path,event,callback){this.storage.subscriptions.add(path,event,callback)}unsubscribe(path,event,callback){this.storage.subscriptions.remove(path,event,callback)}async set(path,value,options={suppress_events:false,context:null}){const cursor=await this.storage.setNode(path,value,{suppress_events:options.suppress_events,context:options.context});return Object.assign({},cursor&&{cursor:cursor})}async update(path,updates,options={suppress_events:false,context:null}){const cursor=await this.storage.updateNode(path,updates,{suppress_events:options.suppress_events,context:options.context});return Object.assign({},cursor&&{cursor:cursor})}get transactionLoggingEnabled(){return this.storage.settings.transactions&&this.storage.settings.transactions.log===true}async get(path,options){if(!options){options={}}if(typeof options.include!=="undefined"&&!(options.include instanceof Array)){throw new TypeError(`options.include must be an array of key names`)}if(typeof options.exclude!=="undefined"&&!(options.exclude instanceof Array)){throw new TypeError(`options.exclude must be an array of key names`)}if(["undefined","boolean"].indexOf(typeof options.child_objects)<0){throw new TypeError(`options.child_objects must be a boolean`)}const node=await this.storage.getNode(path,options);return{value:node.value,context:{acebase_cursor:node.cursor},cursor:node.cursor}}async transaction(path,callback,options={suppress_events:false,context:null}){const cursor=await this.storage.transactNode(path,callback,{suppress_events:options.suppress_events,context:options.context});return Object.assign({},cursor&&{cursor:cursor})}async exists(path){const nodeInfo=await this.storage.getNodeInfo(path);return nodeInfo.exists}async query(path,query,options={snapshots:false}){const results=await(0,query_1.executeQuery)(this,path,query,options);return results}createIndex(path,key,options){return this.storage.indexes.create(path,key,options)}async getIndexes(){return this.storage.indexes.list()}async deleteIndex(filePath){return this.storage.indexes.delete(filePath)}async reflect(path,type,args){args=args||{};const getChildren=async(path,limit=50,skip=0,from=null)=>{if(typeof limit==="string"){limit=parseInt(limit)}if(typeof skip==="string"){skip=parseInt(skip)}if(["null","undefined"].includes(from)){from=null}const children=[];let n=0,stop=false,more=false;await this.storage.getChildren(path).next((childInfo=>{if(stop){more=true;return false}n++;const include=from!==null?childInfo.key>from:skip===0||n>skip;if(include){children.push(Object.assign({key:typeof childInfo.key==="string"?childInfo.key:childInfo.index,type:childInfo.valueTypeName,value:childInfo.value},typeof childInfo.address==="object"&&"pageNr"in childInfo.address&&{address:{pageNr:childInfo.address.pageNr,recordNr:childInfo.address.recordNr}}))}stop=limit>0&&children.length===limit})).catch((err=>{if(!(err instanceof node_errors_1.NodeNotFoundError)){throw err}}));return{more:more,list:children}};switch(type){case"children":{const result=await getChildren(path,args.limit,args.skip,args.from);return result}case"info":{const info={key:"",exists:false,type:"unknown",value:undefined,address:undefined,children:{count:0,more:false,list:[]}};const nodeInfo=await this.storage.getNodeInfo(path,{include_child_count:args.child_count===true});info.key=typeof nodeInfo.key!=="undefined"?nodeInfo.key:nodeInfo.index;info.exists=nodeInfo.exists;info.type=nodeInfo.exists?nodeInfo.valueTypeName:undefined;info.value=nodeInfo.value;info.address=typeof nodeInfo.address==="object"&&"pageNr"in nodeInfo.address?{pageNr:nodeInfo.address.pageNr,recordNr:nodeInfo.address.recordNr}:undefined;const isObjectOrArray=nodeInfo.exists&&nodeInfo.address&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(nodeInfo.type);if(args.child_count===true){info.children={count:isObjectOrArray?nodeInfo.childCount:0}}else if(typeof args.child_limit==="number"&&args.child_limit>0){if(isObjectOrArray){info.children=await getChildren(path,args.child_limit,args.child_skip,args.child_from)}}return info}}}export(path,stream,options={format:"json",type_safe:true}){return this.storage.exportNode(path,stream,options)}import(path,read,options={format:"json",suppress_events:false,method:"set"}){return this.storage.importNode(path,read,options)}async setSchema(path,schema){return this.storage.setSchema(path,schema)}async getSchema(path){return this.storage.getSchema(path)}async getSchemas(){return this.storage.getSchemas()}async validateSchema(path,value,isUpdate){return this.storage.validateSchema(path,value,{updates:isUpdate})}async getMutations(filter){if(typeof this.storage.getMutations!=="function"){throw new Error("Used storage type does not support getMutations")}if(typeof filter!=="object"){throw new Error("No filter specified")}if(typeof filter.cursor!=="string"&&typeof filter.timestamp!=="number"){throw new Error("No cursor or timestamp given")}return this.storage.getMutations(filter)}async getChanges(filter){if(typeof this.storage.getChanges!=="function"){throw new Error("Used storage type does not support getChanges")}if(typeof filter!=="object"){throw new Error("No filter specified")}if(typeof filter.cursor!=="string"&&typeof filter.timestamp!=="number"){throw new Error("No cursor or timestamp given")}return this.storage.getChanges(filter)}}exports.LocalApi=LocalApi},{"./node-errors":11,"./node-value-types":14,"./query":17,"./storage/binary":18,"./storage/custom":21,"./storage/mssql":30,"./storage/sqlite":31,"acebase-core":43}],4:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.assert=void 0;function assert(condition,error){if(!condition){throw new Error(`Assertion failed: ${error!==null&&error!==void 0?error:"check your code"}`)}}exports.assert=assert},{}],5:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AsyncTaskBatch=void 0;class AsyncTaskBatch{constructor(limit=1e3,options){this.limit=limit;this.options=options;this.added=0;this.scheduled=[];this.running=0;this.results=[];this.done=false}async execute(task,index){var _a,_b;try{this.running++;const result=await task();this.results[index]=result;this.running--;if(this.running===0&&this.scheduled.length===0){this.done=true;(_a=this.doneCallback)===null||_a===void 0?void 0:_a.call(this,this.results)}else if(this.scheduled.length>0){const next=this.scheduled.shift();this.execute(next.task,next.index)}}catch(err){this.done=true;(_b=this.errorCallback)===null||_b===void 0?void 0:_b.call(this,err)}}add(task){var _a;if(this.done){throw new Error(`Cannot add to a batch that has already finished. Use wait option and start batch processing manually if you are adding tasks in an async loop`)}const index=this.added++;if(((_a=this.options)===null||_a===void 0?void 0:_a.wait)!==true&&this.running{this.doneCallback=resolve;this.errorCallback=reject}));return this.results}}exports.AsyncTaskBatch=AsyncTaskBatch},{}],6:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SchemaValidationError=exports.StorageSettings=exports.ICustomStorageNodeMetaData=exports.ICustomStorageNode=exports.CustomStorageHelpers=exports.CustomStorageSettings=exports.CustomStorageTransaction=exports.MSSQLStorageSettings=exports.SQLiteStorageSettings=exports.AceBaseStorageSettings=exports.IndexedDBStorageSettings=exports.LocalStorageSettings=exports.AceBaseLocalSettings=exports.AceBase=exports.PartialArray=exports.proxyAccess=exports.ID=exports.ObjectCollection=exports.TypeMappings=exports.PathReference=exports.EventSubscription=exports.EventStream=exports.DataReferencesArray=exports.DataSnapshotsArray=exports.DataReference=exports.DataSnapshot=void 0;const acebase_core_1=require("acebase-core");Object.defineProperty(exports,"DataReference",{enumerable:true,get:function(){return acebase_core_1.DataReference}});Object.defineProperty(exports,"DataSnapshot",{enumerable:true,get:function(){return acebase_core_1.DataSnapshot}});Object.defineProperty(exports,"EventSubscription",{enumerable:true,get:function(){return acebase_core_1.EventSubscription}});Object.defineProperty(exports,"PathReference",{enumerable:true,get:function(){return acebase_core_1.PathReference}});Object.defineProperty(exports,"TypeMappings",{enumerable:true,get:function(){return acebase_core_1.TypeMappings}});Object.defineProperty(exports,"ID",{enumerable:true,get:function(){return acebase_core_1.ID}});Object.defineProperty(exports,"proxyAccess",{enumerable:true,get:function(){return acebase_core_1.proxyAccess}});Object.defineProperty(exports,"DataSnapshotsArray",{enumerable:true,get:function(){return acebase_core_1.DataSnapshotsArray}});Object.defineProperty(exports,"ObjectCollection",{enumerable:true,get:function(){return acebase_core_1.ObjectCollection}});Object.defineProperty(exports,"DataReferencesArray",{enumerable:true,get:function(){return acebase_core_1.DataReferencesArray}});Object.defineProperty(exports,"EventStream",{enumerable:true,get:function(){return acebase_core_1.EventStream}});Object.defineProperty(exports,"PartialArray",{enumerable:true,get:function(){return acebase_core_1.PartialArray}});const acebase_local_1=require("./acebase-local");const acebase_browser_1=require("./acebase-browser");Object.defineProperty(exports,"AceBase",{enumerable:true,get:function(){return acebase_browser_1.BrowserAceBase}});const custom_1=require("./storage/custom");const acebase={AceBase:acebase_browser_1.BrowserAceBase,AceBaseLocalSettings:acebase_local_1.AceBaseLocalSettings,DataReference:acebase_core_1.DataReference,DataSnapshot:acebase_core_1.DataSnapshot,EventSubscription:acebase_core_1.EventSubscription,PathReference:acebase_core_1.PathReference,TypeMappings:acebase_core_1.TypeMappings,CustomStorageSettings:custom_1.CustomStorageSettings,CustomStorageTransaction:custom_1.CustomStorageTransaction,CustomStorageHelpers:custom_1.CustomStorageHelpers,ID:acebase_core_1.ID,proxyAccess:acebase_core_1.proxyAccess,DataSnapshotsArray:acebase_core_1.DataSnapshotsArray};window.acebase=acebase;window.AceBase=acebase_browser_1.BrowserAceBase;exports.default=acebase;var acebase_local_2=require("./acebase-local");Object.defineProperty(exports,"AceBaseLocalSettings",{enumerable:true,get:function(){return acebase_local_2.AceBaseLocalSettings}});Object.defineProperty(exports,"LocalStorageSettings",{enumerable:true,get:function(){return acebase_local_2.LocalStorageSettings}});Object.defineProperty(exports,"IndexedDBStorageSettings",{enumerable:true,get:function(){return acebase_local_2.IndexedDBStorageSettings}});var binary_1=require("./storage/binary");Object.defineProperty(exports,"AceBaseStorageSettings",{enumerable:true,get:function(){return binary_1.AceBaseStorageSettings}});var sqlite_1=require("./storage/sqlite");Object.defineProperty(exports,"SQLiteStorageSettings",{enumerable:true,get:function(){return sqlite_1.SQLiteStorageSettings}});var mssql_1=require("./storage/mssql");Object.defineProperty(exports,"MSSQLStorageSettings",{enumerable:true,get:function(){return mssql_1.MSSQLStorageSettings}});var custom_2=require("./storage/custom");Object.defineProperty(exports,"CustomStorageTransaction",{enumerable:true,get:function(){return custom_2.CustomStorageTransaction}});Object.defineProperty(exports,"CustomStorageSettings",{enumerable:true,get:function(){return custom_2.CustomStorageSettings}});Object.defineProperty(exports,"CustomStorageHelpers",{enumerable:true,get:function(){return custom_2.CustomStorageHelpers}});Object.defineProperty(exports,"ICustomStorageNode",{enumerable:true,get:function(){return custom_2.ICustomStorageNode}});Object.defineProperty(exports,"ICustomStorageNodeMetaData",{enumerable:true,get:function(){return custom_2.ICustomStorageNodeMetaData}});var storage_1=require("./storage");Object.defineProperty(exports,"StorageSettings",{enumerable:true,get:function(){return storage_1.StorageSettings}});Object.defineProperty(exports,"SchemaValidationError",{enumerable:true,get:function(){return storage_1.SchemaValidationError}})},{"./acebase-browser":1,"./acebase-local":2,"./storage":28,"./storage/binary":18,"./storage/custom":21,"./storage/mssql":30,"./storage/sqlite":31,"acebase-core":43}],7:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ArrayIndex=exports.GeoIndex=exports.FullTextIndex=exports.DataIndex=void 0;const not_supported_1=require("../not-supported");class DataIndex extends not_supported_1.NotSupported{}exports.DataIndex=DataIndex;class FullTextIndex extends not_supported_1.NotSupported{}exports.FullTextIndex=FullTextIndex;class GeoIndex extends not_supported_1.NotSupported{}exports.GeoIndex=GeoIndex;class ArrayIndex extends not_supported_1.NotSupported{}exports.ArrayIndex=ArrayIndex},{"../not-supported":15}],8:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NetIPCServer=exports.IPCSocketPeer=exports.RemoteIPCPeer=exports.IPCPeer=void 0;const acebase_core_1=require("acebase-core");const ipc_1=require("./ipc");const not_supported_1=require("../not-supported");Object.defineProperty(exports,"RemoteIPCPeer",{enumerable:true,get:function(){return not_supported_1.NotSupported}});Object.defineProperty(exports,"IPCSocketPeer",{enumerable:true,get:function(){return not_supported_1.NotSupported}});Object.defineProperty(exports,"NetIPCServer",{enumerable:true,get:function(){return not_supported_1.NotSupported}});class IPCPeer extends ipc_1.AceBaseIPCPeer{constructor(storage){super(storage,acebase_core_1.ID.generate());this.masterPeerId=this.id;this.ipcType="browser.bcc";window.addEventListener("beforeunload",(()=>{this.exit()}));if(typeof window.BroadcastChannel!=="undefined"){this.channel=new BroadcastChannel(`acebase:${storage.name}`)}else{const listeners=[null];const notImplemented=()=>{throw new Error("Not implemented")};this.channel={name:`acebase:${storage.name}`,postMessage:message=>{const messageId=acebase_core_1.ID.generate(),key=`acebase:${storage.name}:${this.id}:${messageId}`,payload=JSON.stringify(acebase_core_1.Transport.serialize(message));localStorage.setItem(key,payload);setTimeout((()=>localStorage.removeItem(key)),10)},set onmessage(handler){listeners[0]=handler},set onmessageerror(handler){notImplemented()},close(){notImplemented()},addEventListener(event,callback){if(event!=="message"){notImplemented()}listeners.push(callback)},removeEventListener(event,callback){const i=listeners.indexOf(callback);i>=1&&listeners.splice(i,1)},dispatchEvent(event){listeners.forEach((callback=>{try{callback&&callback(event)}catch(err){console.error(err)}}));return true}};window.addEventListener("storage",(event=>{const[acebase,dbname,peerId,messageId]=event.key.split(":");if(acebase!=="acebase"||dbname!==storage.name||peerId===this.id||event.newValue===null){return}const message=acebase_core_1.Transport.deserialize(JSON.parse(event.newValue));this.channel.dispatchEvent({data:message})}))}this.channel.addEventListener("message",(async event=>{const message=event.data;if(message.to&&message.to!==this.id){return}storage.debug.verbose(`[BroadcastChannel] received: `,message);if(message.type==="hello"&&message.frompeer.id)).concat(this.id).filter((id=>id!==this.masterPeerId));this.masterPeerId=allPeerIds.sort()[0];storage.debug.log(`[BroadcastChannel] ${this.masterPeerId===this.id?"We are":`tab ${this.masterPeerId} is`} the new master. Requesting ${this._locks.length} locks (${this._locks.filter((r=>!r.granted)).length} pending)`);const requests=this._locks.splice(0);await Promise.all(requests.filter((req=>req.granted)).map((async req=>{let released,movedToParent;req.lock.release=()=>new Promise((resolve=>released=resolve));req.lock.moveToParent=()=>new Promise((resolve=>movedToParent=resolve));const lock=await this.lock({path:req.lock.path,write:req.lock.forWriting,tid:req.lock.tid,comment:req.lock.comment});if(movedToParent){const newLock=await lock.moveToParent();movedToParent(newLock)}if(released){await lock.release();released()}})));await Promise.all(requests.filter((req=>!req.granted)).map((async req=>{await this.lock(req.request)})))}return this.handleMessage(message)}));const helloMsg={type:"hello",from:this.id,data:undefined};this.sendMessage(helloMsg)}sendMessage(message){this.storage.debug.verbose(`[BroadcastChannel] sending: `,message);this.channel.postMessage(message)}}exports.IPCPeer=IPCPeer},{"../not-supported":15,"./ipc":9,"acebase-core":43}],9:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AceBaseIPCPeer=exports.AceBaseIPCPeerExitingError=void 0;const acebase_core_1=require("acebase-core");const node_lock_1=require("../node-lock");class AceBaseIPCPeerExitingError extends Error{constructor(message){super(`Exiting: ${message}`)}}exports.AceBaseIPCPeerExitingError=AceBaseIPCPeerExitingError;class AceBaseIPCPeer extends acebase_core_1.SimpleEventEmitter{get isMaster(){return this.masterPeerId===this.id}constructor(storage,id,dbname=storage.name){super();this.storage=storage;this.id=id;this.dbname=dbname;this.ipcType="ipc";this.ourSubscriptions=[];this.remoteSubscriptions=[];this.peers=[];this._exiting=false;this._locks=[];this._requests=new Map;this._eventsEnabled=true;this._nodeLocker=new node_lock_1.NodeLocker(storage.debug,storage.settings.lockTimeout);storage.on("subscribe",(subscription=>{storage.debug.verbose(`database subscription being added on peer ${this.id}`);const remoteSubscription=this.remoteSubscriptions.find((sub=>sub.callback===subscription.callback));if(remoteSubscription){return}const othersAlreadyNotifying=this.ourSubscriptions.some((sub=>sub.event===subscription.event&&sub.path===subscription.path));this.ourSubscriptions.push(subscription);if(othersAlreadyNotifying){return}const message={type:"subscribe",from:this.id,data:{path:subscription.path,event:subscription.event}};this.sendMessage(message)}));storage.on("unsubscribe",(subscription=>{const remoteSubscription=this.remoteSubscriptions.find((sub=>sub.callback===subscription.callback));if(remoteSubscription){this.remoteSubscriptions.splice(this.remoteSubscriptions.indexOf(remoteSubscription),1);return}this.ourSubscriptions.filter((sub=>sub.path===subscription.path&&(!subscription.event||sub.event===subscription.event)&&(!subscription.callback||sub.callback===subscription.callback))).forEach((sub=>{this.ourSubscriptions.splice(this.ourSubscriptions.indexOf(sub),1);const message={type:"unsubscribe",from:this.id,data:{path:sub.path,event:sub.event}};this.sendMessage(message)}))}))}async exit(code=0){if(this._exiting){return this.once("exit")}this._exiting=true;this.storage.debug.warn(`Received ${this.isMaster?"master":"worker "+this.id} process exit request`);if(this._locks.length>0){this.storage.debug.warn(`Waiting for ${this.isMaster?"master":"worker"} ${this.id} locks to clear`);await this.once("locks-cleared")}this.sayGoodbye(this.id);this.storage.debug.warn(`${this.isMaster?"Master":"Worker "+this.id} will now exit`);this.emitOnce("exit",code)}sayGoodbye(forPeerId){const bye={type:"bye",from:forPeerId,data:undefined};this.sendMessage(bye)}addPeer(id,sendReply=true){if(this._exiting){return}const peer=this.peers.find((w=>w.id===id));if(!peer){this.peers.push({id:id,lastSeen:Date.now()})}if(sendReply){const helloMessage={type:"hello",from:this.id,to:id,data:undefined};this.sendMessage(helloMessage);this.ourSubscriptions.forEach((sub=>{const message={type:"subscribe",from:this.id,to:id,data:{path:sub.path,event:sub.event}};this.sendMessage(message)}))}}removePeer(id,ignoreUnknown=false){if(this._exiting){return}const peer=this.peers.find((peer=>peer.id===id));if(!peer){if(!ignoreUnknown){throw new Error(`We are supposed to know this peer!`)}return}this.peers.splice(this.peers.indexOf(peer),1);const subscriptions=this.remoteSubscriptions.filter((sub=>sub.for===id));subscriptions.forEach((sub=>{this.remoteSubscriptions.splice(this.remoteSubscriptions.indexOf(sub),1);this.storage.subscriptions.remove(sub.path,sub.event,sub.callback)}))}addRemoteSubscription(peerId,details){if(this._exiting){return}if(this.remoteSubscriptions.some((sub=>sub.for===peerId&&sub.event===details.event&&sub.path===details.path))){return}const subscribeCallback=(err,path,val,previous,context)=>{const eventMessage={type:"event",from:this.id,to:peerId,path:details.path,event:details.event,data:{path:path,val:val,previous:previous,context:context}};this.sendMessage(eventMessage)};this.remoteSubscriptions.push({for:peerId,event:details.event,path:details.path,callback:subscribeCallback});this.storage.subscriptions.add(details.path,details.event,subscribeCallback)}cancelRemoteSubscription(peerId,details){const sub=this.remoteSubscriptions.find((sub=>sub.for===peerId&&sub.event===details.event&&sub.path===details.event));if(!sub){return}this.storage.subscriptions.remove(details.path,details.event,sub.callback)}async handleMessage(message){switch(message.type){case"hello":return this.addPeer(message.from,message.to!==this.id);case"bye":return this.removePeer(message.from,true);case"subscribe":return this.addRemoteSubscription(message.from,message.data);case"unsubscribe":return this.cancelRemoteSubscription(message.from,message.data);case"event":{if(!this._eventsEnabled){break}const eventMessage=message;const context=eventMessage.data.context||{};context.acebase_ipc={type:this.ipcType,origin:eventMessage.from};const subscriptions=this.ourSubscriptions.filter((sub=>sub.event===eventMessage.event&&sub.path===eventMessage.path));subscriptions.forEach((sub=>{sub.callback(null,eventMessage.data.path,eventMessage.data.val,eventMessage.data.previous,context)}));break}case"lock-request":{if(!this.isMaster){throw new Error(`Workers are not supposed to receive lock requests!`)}const request=message;const result={type:"lock-result",id:request.id,from:this.id,to:request.from,ok:true,data:undefined};try{const lock=await this.lock(request.data);result.data={id:lock.id,path:lock.path,tid:lock.tid,write:lock.forWriting,expires:lock.expires,comment:lock.comment}}catch(err){result.ok=false;result.reason=err.stack||err.message||err}return this.sendMessage(result)}case"lock-result":{if(this.isMaster){throw new Error(`Masters are not supposed to receive results for lock requests!`)}const result=message;const request=this._requests.get(result.id);if(typeof request!=="object"){throw new Error(`The request must be known to us!`)}if(result.ok){request.resolve(result.data)}else{request.reject(new Error(result.reason))}return}case"unlock-request":{if(!this.isMaster){throw new Error(`Workers are not supposed to receive unlock requests!`)}const request=message;const result={type:"unlock-result",id:request.id,from:this.id,to:request.from,ok:true,data:{id:request.data.id}};try{const lockInfo=this._locks.find((l=>{var _a;return((_a=l.lock)===null||_a===void 0?void 0:_a.id)===request.data.id}));await lockInfo.lock.release()}catch(err){result.ok=false;result.reason=err.stack||err.message||err}return this.sendMessage(result)}case"unlock-result":{if(this.isMaster){throw new Error(`Masters are not supposed to receive results for unlock requests!`)}const result=message;const request=this._requests.get(result.id);if(typeof request!=="object"){throw new Error(`The request must be known to us!`)}if(result.ok){request.resolve(result.data)}else{request.reject(new Error(result.reason))}return}case"move-lock-request":{if(!this.isMaster){throw new Error(`Workers are not supposed to receive move lock requests!`)}const request=message;const result={type:"lock-result",id:request.id,from:this.id,to:request.from,ok:true,data:undefined};try{let movedLock;const lockRequest=this._locks.find((r=>{var _a;return((_a=r.lock)===null||_a===void 0?void 0:_a.id)===request.data.id}));if(request.data.move_to==="parent"){movedLock=await lockRequest.lock.moveToParent()}else{throw new Error(`Unknown lock move_to "${request.data.move_to}"`)}lockRequest.lock=movedLock;result.data={id:movedLock.id,path:movedLock.path,tid:movedLock.tid,write:movedLock.forWriting,expires:movedLock.expires,comment:movedLock.comment}}catch(err){result.ok=false;result.reason=err.stack||err.message||err}return this.sendMessage(result)}case"notification":{return this.emit("notification",message)}case"request":{return this.emit("request",message)}case"result":{const result=message;const request=this._requests.get(result.id);if(typeof request!=="object"){throw new Error(`Result of unknown request received`)}if(result.ok){request.resolve(result.data)}else{request.reject(new Error(result.reason))}}}}async lock(details){if(this._exiting){const tidApproved=this._locks.find((l=>l.tid===details.tid&&l.granted));if(!tidApproved){throw new AceBaseIPCPeerExitingError("new transaction lock denied because the IPC peer is exiting")}}const removeLock=lockDetails=>{this._locks.splice(this._locks.indexOf(lockDetails),1);if(this._locks.length===0){this.emit("locks-cleared")}};if(this.isMaster){const lockInfo={tid:details.tid,granted:false,request:details,lock:null};this._locks.push(lockInfo);const lock=await this._nodeLocker.lock(details.path,details.tid,details.write,details.comment);lockInfo.tid=lock.tid;lockInfo.granted=true;const createIPCLock=lock=>({get id(){return lock.id},get tid(){return lock.tid},get path(){return lock.path},get forWriting(){return lock.forWriting},get expires(){return lock.expires},get comment(){return lock.comment},get state(){return lock.state},release:async()=>{await lock.release();removeLock(lockInfo)},moveToParent:async()=>{const parentLock=await lock.moveToParent();lockInfo.lock=createIPCLock(parentLock);return lockInfo.lock}});lockInfo.lock=createIPCLock(lock);return lockInfo.lock}else{const lockInfo={tid:details.tid,granted:false,request:details,lock:null};this._locks.push(lockInfo);const createIPCLock=result=>{lockInfo.granted=true;lockInfo.tid=result.tid;lockInfo.lock={id:result.id,tid:result.tid,path:result.path,forWriting:result.write,state:node_lock_1.LOCK_STATE.LOCKED,expires:result.expires,comment:result.comment,release:async()=>{const req={type:"unlock-request",id:acebase_core_1.ID.generate(),from:this.id,to:this.masterPeerId,data:{id:lockInfo.lock.id}};await this.request(req);lockInfo.lock.state=node_lock_1.LOCK_STATE.DONE;this.storage.debug.verbose(`Worker ${this.id} released lock ${lockInfo.lock.id} (tid ${lockInfo.lock.tid}, ${lockInfo.lock.comment}, "/${lockInfo.lock.path}", ${lockInfo.lock.forWriting?"write":"read"})`);removeLock(lockInfo)},moveToParent:async()=>{const req={type:"move-lock-request",id:acebase_core_1.ID.generate(),from:this.id,to:this.masterPeerId,data:{id:lockInfo.lock.id,move_to:"parent"}};let result;try{result=await this.request(req)}catch(err){lockInfo.lock.state=node_lock_1.LOCK_STATE.DONE;removeLock(lockInfo);throw err}lockInfo.lock=createIPCLock(result);return lockInfo.lock}};return lockInfo.lock};const req={type:"lock-request",id:acebase_core_1.ID.generate(),from:this.id,to:this.masterPeerId,data:details};let result,err;try{result=await this.request(req)}catch(e){err=e;result=null}if(err){removeLock(lockInfo);throw err}return createIPCLock(result)}}async request(req){let resolve,reject;const promise=new Promise(((rs,rj)=>{resolve=result=>{this._requests.delete(req.id);rs(result)};reject=err=>{this._requests.delete(req.id);rj(err)}}));this._requests.set(req.id,{resolve:resolve,reject:reject,request:req});this.sendMessage(req);return promise}sendRequest(request){const req={type:"request",from:this.id,to:this.masterPeerId,id:acebase_core_1.ID.generate(),data:request};return this.request(req).catch((err=>{this.storage.debug.error(err);throw err}))}replyRequest(requestMessage,result){const reply={type:"result",id:requestMessage.id,ok:true,from:this.id,to:requestMessage.from,data:result};this.sendMessage(reply)}sendNotification(notification){const msg={type:"notification",from:this.id,data:notification};this.sendMessage(msg)}get eventsEnabled(){return this._eventsEnabled}set eventsEnabled(enabled){this.storage.debug.log(`ipc events ${enabled?"enabled":"disabled"}`);this._eventsEnabled=enabled}}exports.AceBaseIPCPeer=AceBaseIPCPeer},{"../node-lock":13,"acebase-core":43}],10:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.RemovedNodeAddress=exports.NodeAddress=void 0;class NodeAddress{constructor(path){this.path=path}toString(){return`"/${this.path}"`}equals(address){return this.path===address.path}}exports.NodeAddress=NodeAddress;class RemovedNodeAddress extends NodeAddress{constructor(path){super(path)}toString(){return`"/${this.path}" (removed)`}equals(address){return address instanceof RemovedNodeAddress&&this.path===address.path}}exports.RemovedNodeAddress=RemovedNodeAddress},{}],11:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NodeRevisionError=exports.NodeNotFoundError=void 0;class NodeNotFoundError extends Error{}exports.NodeNotFoundError=NodeNotFoundError;class NodeRevisionError extends Error{}exports.NodeRevisionError=NodeRevisionError},{}],12:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NodeInfo=void 0;const node_value_types_1=require("./node-value-types");const acebase_core_1=require("acebase-core");class NodeInfo{constructor(info){this.path=info.path;this.type=info.type;this.index=info.index;this.key=info.key;this.exists=info.exists;this.address=info.address;this.value=info.value;this.childCount=info.childCount;if(typeof this.path==="string"&&(typeof this.key==="undefined"&&typeof this.index==="undefined")){const pathInfo=acebase_core_1.PathInfo.get(this.path);if(typeof pathInfo.key==="number"){this.index=pathInfo.key}else{this.key=pathInfo.key}}if(typeof this.exists==="undefined"){this.exists=true}}get valueType(){return this.type}get valueTypeName(){return(0,node_value_types_1.getValueTypeName)(this.valueType)}toString(){if(!this.exists){return`"${this.path}" doesn't exist`}if(this.address){return`"${this.path}" is ${this.valueTypeName} stored at ${this.address.toString()}`}else{return`"${this.path}" is ${this.valueTypeName} with value ${this.value}`}}}exports.NodeInfo=NodeInfo},{"./node-value-types":14,"acebase-core":43}],13:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NodeLock=exports.NodeLocker=exports.LOCK_STATE=void 0;const acebase_core_1=require("acebase-core");const assert_1=require("./assert");const DEBUG_MODE=false;const DEFAULT_LOCK_TIMEOUT=120;exports.LOCK_STATE={PENDING:"pending",LOCKED:"locked",EXPIRED:"expired",DONE:"done"};class NodeLocker{constructor(debug,lockTimeout=DEFAULT_LOCK_TIMEOUT){this._locks=[];this._lastTid=0;this.debug=debug;this.timeout=lockTimeout*1e3}setTimeout(timeout){this.timeout=timeout*1e3}createTid(){return DEBUG_MODE?++this._lastTid:acebase_core_1.ID.generate()}_allowLock(path,tid,forWriting){const conflict=this._locks.find((otherLock=>otherLock.tid!==tid&&otherLock.state===exports.LOCK_STATE.LOCKED&&(forWriting||otherLock.forWriting)));return{allow:!conflict,conflict:conflict}}quit(){return new Promise((resolve=>{if(this._locks.length===0){return resolve()}this._quit=resolve}))}_rejectLock(lock,err){this._locks.splice(this._locks.indexOf(lock),1);clearTimeout(lock.timeout);try{lock.reject(err)}catch(err){console.error(`Unhandled promise rejection:`,err)}}_processLockQueue(){if(this._quit){const quitError=new Error("Quitting");this._locks.filter((lock=>lock.state===exports.LOCK_STATE.PENDING)).forEach((lock=>this._rejectLock(lock,quitError)));if(this._locks.length===0){this._quit()}}const pending=this._locks.filter((lock=>lock.state===exports.LOCK_STATE.PENDING)).sort(((a,b)=>{if(a.priority&&!b.priority){return-1}else if(!a.priority&&b.priority){return 1}return a.requested-b.requested}));pending.forEach((lock=>{const check=this._allowLock(lock.path,lock.tid,lock.forWriting);lock.waitingFor=check.conflict||null;if(check.allow){this.lock(lock).then(lock.resolve).catch((err=>this._rejectLock(lock,err)))}}))}async lock(path,tid,forWriting=true,comment="",options={withPriority:false,noTimeout:false}){let lock,proceed;if(path instanceof NodeLock){lock=path;proceed=true}else if(this._locks.findIndex((l=>l.tid===tid&&l.state===exports.LOCK_STATE.EXPIRED))>=0){throw new Error(`lock on tid ${tid} has expired, not allowed to continue`)}else if(this._quit&&!options.withPriority){throw new Error(`Quitting`)}else{DEBUG_MODE&&console.error(`${forWriting?"write":"read"} lock requested on "${path}" by tid ${tid} (${comment})`);lock=new NodeLock(this,path,tid,forWriting,options.withPriority===true);lock.comment=comment;this._locks.push(lock);const check=this._allowLock(path,tid,forWriting);lock.waitingFor=check.conflict||null;proceed=check.allow}if(proceed){DEBUG_MODE&&console.error(`${lock.forWriting?"write":"read"} lock ALLOWED on "${lock.path}" by tid ${lock.tid} (${lock.comment})`);lock.state=exports.LOCK_STATE.LOCKED;if(typeof lock.granted==="number"){}else{lock.granted=Date.now();if(options.noTimeout!==true){lock.expires=Date.now()+this.timeout;let timeoutCount=0;const timeoutHandler=()=>{if(lock.state!==exports.LOCK_STATE.LOCKED){return}timeoutCount++;if(timeoutCount<=3){this.debug.warn(`${lock.forWriting?"write":"read"} lock on path "/${lock.path}" by tid ${lock.tid} (${lock.comment}) is taking a long time to complete [${timeoutCount}]`);lock.timeout=setTimeout(timeoutHandler,this.timeout/4);return}this.debug.error(`lock :: ${lock.forWriting?"write":"read"} lock on path "/${lock.path}" by tid ${lock.tid} (${lock.comment}) took too long`);lock.state=exports.LOCK_STATE.EXPIRED;this._processLockQueue()};lock.timeout=setTimeout(timeoutHandler,this.timeout/4)}}return lock}else{(0,assert_1.assert)(lock.state===exports.LOCK_STATE.PENDING);return new Promise(((resolve,reject)=>{lock.resolve=resolve;lock.reject=reject}))}}unlock(lockOrId,comment,processQueue=true){let lock,i;if(lockOrId instanceof NodeLock){lock=lockOrId;i=this._locks.indexOf(lock)}else{const id=lockOrId;i=this._locks.findIndex((l=>l.id===id));lock=this._locks[i]}if(i<0){const msg=`lock on "/${lock.path}" for tid ${lock.tid} wasn't found; ${comment}`;throw new Error(msg)}lock.state=exports.LOCK_STATE.DONE;clearTimeout(lock.timeout);this._locks.splice(i,1);DEBUG_MODE&&console.error(`${lock.forWriting?"write":"read"} lock RELEASED on "${lock.path}" by tid ${lock.tid}`);processQueue&&this._processLockQueue();return lock}list(){return this._locks||[]}isAllowed(path,tid,forWriting){return this._allowLock(path,tid,forWriting).allow}}exports.NodeLocker=NodeLocker;let lastid=0;class NodeLock{static get LOCK_STATE(){return exports.LOCK_STATE}constructor(locker,path,tid,forWriting,priority=false){this.locker=locker;this.path=path;this.tid=tid;this.forWriting=forWriting;this.priority=priority;this.state=exports.LOCK_STATE.PENDING;this.requested=Date.now();this.comment="";this.waitingFor=null;this.id=++lastid;this.history=[]}async release(comment){this.history.push({action:"release",path:this.path,forWriting:this.forWriting,comment:comment});return this.locker.unlock(this,comment||this.comment)}async moveToParent(){const parentPath=acebase_core_1.PathInfo.get(this.path).parentPath;const allowed=this.locker.isAllowed(parentPath,this.tid,this.forWriting);if(allowed){DEBUG_MODE&&console.error(`moveToParent ALLOWED for ${this.forWriting?"write":"read"} lock on "${this.path}" by tid ${this.tid} (${this.comment})`);this.history.push({path:this.path,forWriting:this.forWriting,action:"moving to parent"});this.waitingFor=null;this.path=parentPath;return this}else{DEBUG_MODE&&console.error(`moveToParent QUEUED for ${this.forWriting?"write":"read"} lock on "${this.path}" by tid ${this.tid} (${this.comment})`);this.locker.unlock(this,`moveLockToParent: ${this.comment}`,false);const newLock=await this.locker.lock(parentPath,this.tid,this.forWriting,this.comment,{withPriority:true});DEBUG_MODE&&console.error(`QUEUED moveToParent ALLOWED for ${this.forWriting?"write":"read"} lock on "${this.path}" by tid ${this.tid} (${this.comment})`);newLock.history=this.history;newLock.history.push({path:this.path,forWriting:this.forWriting,action:"moving to parent through queue (priority)"});return newLock}}}exports.NodeLock=NodeLock},{"./assert":4,"acebase-core":43}],14:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getValueType=exports.getNodeValueType=exports.getValueTypeName=exports.VALUE_TYPES=void 0;const acebase_core_1=require("acebase-core");const nodeValueTypes={OBJECT:1,ARRAY:2,NUMBER:3,BOOLEAN:4,STRING:5,BIGINT:7,DATETIME:6,BINARY:8,REFERENCE:9};exports.VALUE_TYPES=nodeValueTypes;function getValueTypeName(valueType){switch(valueType){case exports.VALUE_TYPES.ARRAY:return"array";case exports.VALUE_TYPES.BINARY:return"binary";case exports.VALUE_TYPES.BOOLEAN:return"boolean";case exports.VALUE_TYPES.DATETIME:return"date";case exports.VALUE_TYPES.NUMBER:return"number";case exports.VALUE_TYPES.OBJECT:return"object";case exports.VALUE_TYPES.REFERENCE:return"reference";case exports.VALUE_TYPES.STRING:return"string";case exports.VALUE_TYPES.BIGINT:return"bigint";default:"unknown"}}exports.getValueTypeName=getValueTypeName;function getNodeValueType(value){if(value instanceof Array){return exports.VALUE_TYPES.ARRAY}else if(value instanceof acebase_core_1.PathReference){return exports.VALUE_TYPES.REFERENCE}else if(value instanceof ArrayBuffer){return exports.VALUE_TYPES.BINARY}else if(typeof value==="string"){return exports.VALUE_TYPES.STRING}else if(typeof value==="object"){return exports.VALUE_TYPES.OBJECT}else if(typeof value==="bigint"){return exports.VALUE_TYPES.BIGINT}throw new Error(`Invalid value for standalone node: ${value}`)}exports.getNodeValueType=getNodeValueType;function getValueType(value){if(value instanceof Array){return exports.VALUE_TYPES.ARRAY}else if(value instanceof acebase_core_1.PathReference){return exports.VALUE_TYPES.REFERENCE}else if(value instanceof ArrayBuffer){return exports.VALUE_TYPES.BINARY}else if(value instanceof Date){return exports.VALUE_TYPES.DATETIME}else if(typeof value==="string"){return exports.VALUE_TYPES.STRING}else if(typeof value==="object"){return exports.VALUE_TYPES.OBJECT}else if(typeof value==="number"){return exports.VALUE_TYPES.NUMBER}else if(typeof value==="boolean"){return exports.VALUE_TYPES.BOOLEAN}else if(typeof value==="bigint"){return exports.VALUE_TYPES.BIGINT}throw new Error(`Unknown value type: ${value}`)}exports.getValueType=getValueType},{"acebase-core":43}],15:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NotSupported=void 0;class NotSupported{constructor(context="browser"){throw new Error(`This feature is not supported in ${context} context`)}}exports.NotSupported=NotSupported},{}],16:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.pfs=void 0;class pfs{static get hasFileSystem(){return false}static get fs(){return null}}exports.pfs=pfs},{}],17:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.executeQuery=void 0;const acebase_core_1=require("acebase-core");const node_value_types_1=require("./node-value-types");const node_errors_1=require("./node-errors");const data_index_1=require("./data-index");const async_task_batch_1=require("./async-task-batch");const noop=()=>{};async function executeQuery(api,path,query,options={snapshots:false,include:undefined,exclude:undefined,child_objects:undefined,eventHandler:noop}){var _a,_b,_c,_d,_e,_f;if(typeof options!=="object"){options={}}if(typeof options.snapshots==="undefined"){options.snapshots=false}const context={};if((_a=api.storage.settings.transactions)===null||_a===void 0?void 0:_a.log){context.acebase_cursor=acebase_core_1.ID.generate()}const queryFilters=query.filters.map((f=>Object.assign({},f)));const querySort=query.order.map((s=>Object.assign({},s)));const sortMatches=matches=>{matches.sort(((a,b)=>{const compare=i=>{const o=querySort[i];const trailKeys=acebase_core_1.PathInfo.getPathKeys(typeof o.key==="number"?`[${o.key}]`:o.key);const left=trailKeys.reduce(((val,key)=>val!==null&&typeof val==="object"&&key in val?val[key]:null),a.val);const right=trailKeys.reduce(((val,key)=>val!==null&&typeof val==="object"&&key in val?val[key]:null),b.val);if(left===null){return right===null?0:o.ascending?-1:1}if(right===null){return o.ascending?1:-1}if(left==right){if(i{if(preResults.length===0){return[]}const maxBatchSize=50;const batch=new async_task_batch_1.AsyncTaskBatch(maxBatchSize);const results=[];preResults.forEach((({path:path},index)=>batch.add((async()=>{const node=await api.storage.getNode(path,options);const val=node.value;if(val===null){api.storage.debug.warn(`Indexed result "/${path}" does not have a record!`);return}const result={path:path,val:val};if(stepsExecuted.sorted){results[index]=result}else{results.push(result);if(!stepsExecuted.skipped&&results.length>query.skip+Math.abs(query.take)){sortMatches(results);results.pop()}}}))));await batch.finish();return results};const pathInfo=acebase_core_1.PathInfo.get(path);const isWildcardPath=pathInfo.keys.some((key=>key==="*"||key.toString().startsWith("$")));const availableIndexes=api.storage.indexes.get(path);const usingIndexes=[];let stop=async()=>{};if(isWildcardPath){const vars=pathInfo.keys.filter((key=>typeof key==="string"&&key.startsWith("$")));const hasExplicitFilterValues=vars.length>0&&vars.every((v=>query.filters.some((f=>f.key===v&&["==","in"].includes(f.op)))));const isRealtime=typeof options.monitor==="object"&&[(_b=options.monitor)===null||_b===void 0?void 0:_b.add,(_c=options.monitor)===null||_c===void 0?void 0:_c.change,(_d=options.monitor)===null||_d===void 0?void 0:_d.remove].some((val=>val===true));if(hasExplicitFilterValues&&!isRealtime){const combinations=[];for(const v of vars){const filters=query.filters.filter((f=>f.key===v));const filterValues=filters.reduce(((values,f)=>{if(f.op==="=="){values.push(f.compare)}if(f.op==="in"){if(!(f.compare instanceof Array)){throw new Error(`compare argument for 'in' operator must be an Array`)}values.push(...f.compare)}return values}),[]);const prevCombinations=combinations.splice(0);filterValues.forEach((fv=>{if(prevCombinations.length===0){combinations.push({[v]:fv})}else{combinations.push(...prevCombinations.map((c=>Object.assign(Object.assign({},c),{[v]:fv}))))}}))}const filters=query.filters.filter((f=>!vars.includes(f.key)));const paths=combinations.map((vars=>acebase_core_1.PathInfo.get(acebase_core_1.PathInfo.getPathKeys(path).map((key=>{var _a;return(_a=vars[key])!==null&&_a!==void 0?_a:key}))).path));const loadData=query.order.length>0;const promises=paths.map((path=>{var _a;return executeQuery(api,path,{filters:filters,take:0,skip:0,order:[]},{snapshots:loadData,cache_mode:options.cache_mode,include:[...(_a=options.include)!==null&&_a!==void 0?_a:[],...query.order.map((o=>o.key))],exclude:options.exclude})}));const resultSets=await Promise.all(promises);let results=resultSets.reduce(((results,set)=>(results.push(...set.results),results)),[]);if(loadData){sortMatches(results)}if(query.skip>0){results.splice(0,query.skip)}if(query.take>0){results.splice(query.take)}if(options.snapshots&&(!loadData||((_e=options.include)===null||_e===void 0?void 0:_e.length)>0||((_f=options.exclude)===null||_f===void 0?void 0:_f.length)>0||!options.child_objects)){const{include:include,exclude:exclude,child_objects:child_objects}=options;results=await loadResultsData(results,{include:include,exclude:exclude,child_objects:child_objects})}return{results:results,context:null,stop:stop}}else if(availableIndexes.length===0){const err=new Error(`Query on wildcard path "/${path}" requires an index`);return Promise.reject(err)}if(queryFilters.length===0){const index=availableIndexes.filter((index=>index.type==="normal"))[0];queryFilters.push({key:index.key,op:"!=",compare:null})}}queryFilters.forEach((filter=>{if(filter.index){return}const indexesOnKey=availableIndexes.filter((index=>index.key===filter.key)).filter((index=>index.validOperators.includes(filter.op)));if(indexesOnKey.length>=1){const otherFilterKeys=queryFilters.filter((f=>f!==filter)).map((f=>f.key));const sortKeys=querySort.map((o=>o.key)).filter((key=>key!==filter.key));const beneficialIndexes=indexesOnKey.map((index=>{const availableKeys=index.includeKeys.concat(index.key);const forOtherFilters=availableKeys.filter((key=>otherFilterKeys.includes(key)));const forSorting=availableKeys.filter((key=>sortKeys.includes(key)));const forBoth=forOtherFilters.concat(forSorting.filter((index=>!forOtherFilters.includes(index))));const points={filters:forOtherFilters.length,sorting:forSorting.length*(query.take!==0?forSorting.length:1),both:forBoth.length*forBoth.length,get total(){return this.filters+this.sorting+this.both}};return{index:index,points:points.total,filterKeys:forOtherFilters,sortKeys:forSorting}}));beneficialIndexes.sort(((a,b)=>a.points>b.points?-1:1));const bestBenificialIndex=beneficialIndexes[0];filter.index=bestBenificialIndex.index;bestBenificialIndex.filterKeys.forEach((key=>{queryFilters.filter((f=>f!==filter&&f.key===key)).forEach((f=>{if(!data_index_1.DataIndex.validOperators.includes(f.op)){return}f.indexUsage="filter";f.index=bestBenificialIndex.index}))}));bestBenificialIndex.sortKeys.forEach((key=>{querySort.filter((s=>s.key===key)).forEach((s=>{s.index=bestBenificialIndex.index}))}))}if(filter.index){usingIndexes.push({index:filter.index,description:filter.index.description})}}));if(querySort.length>0&&query.take!==0&&queryFilters.length===0){querySort.forEach((sort=>{if(sort.index){return}sort.index=availableIndexes.filter((index=>index.key===sort.key)).find((index=>index.type==="normal"))}))}const indexDescriptions=usingIndexes.map((index=>index.description)).join(", ");usingIndexes.length>0&&api.storage.debug.log(`Using indexes for query: ${indexDescriptions}`);const tableScanFilters=queryFilters.filter((filter=>!filter.index));const specialOpsRegex=/^[a-z]+:/i;if(tableScanFilters.some((filter=>specialOpsRegex.test(filter.op)))){const f=tableScanFilters.find((filter=>specialOpsRegex.test(filter.op)));const err=new Error(`query contains operator "${f.op}" which requires a special index that was not found on path "${path}", key "${f.key}"`);return Promise.reject(err)}const allowedTableScanOperators=["<","<=","==","!=",">=",">","like","!like","in","!in","matches","!matches","between","!between","has","!has","contains","!contains","exists","!exists"];for(let i=0;i0){const keys=tableScanFilters.reduce(((keys,f)=>{if(keys.indexOf(f.key)<0){keys.push(f.key)}return keys}),[]).map((key=>`"${key}"`));const err=new Error(`This wildcard path query on "/${path}" requires index(es) on key(s): ${keys.join(", ")}. Create the index(es) and retry`);return Promise.reject(err)}const indexScanPromises=[];queryFilters.forEach((filter=>{if(filter.index&&filter.indexUsage!=="filter"){let promise=filter.index.query(filter.op,filter.compare).then((results=>{options.eventHandler&&options.eventHandler({name:"stats",type:"index_query",source:filter.index.description,stats:results.stats});if(results.hints.length>0){options.eventHandler&&options.eventHandler({name:"hints",type:"index_query",source:filter.index.description,hints:results.hints})}return results}));const resultFilters=queryFilters.filter((f=>f.index===filter.index&&f.indexUsage==="filter"));if(resultFilters.length>0){promise=promise.then((results=>{resultFilters.forEach((filter=>{const{key:key,op:op,index:index}=filter;let{compare:compare}=filter;if(typeof compare==="string"&&!index.caseSensitive){compare=compare.toLocaleLowerCase(index.textLocale)}results=results.filterMetadata(key,op,compare)}));return results}))}indexScanPromises.push(promise)}}));const stepsExecuted={filtered:queryFilters.length===0,skipped:query.skip===0,taken:query.take===0,sorted:querySort.length===0,preDataLoaded:false,dataLoaded:false};if(queryFilters.length===0&&query.take===0){api.storage.debug.warn(`Filterless queries must use .take to limit the results. Defaulting to 100 for query on path "${path}"`);query.take=100}if(querySort.length>0&&querySort[0].index){const sortIndex=querySort[0].index;const ascending=query.take<0?!querySort[0].ascending:querySort[0].ascending;if(queryFilters.length===0&&querySort.slice(1).every((s=>sortIndex.allMetadataKeys.includes(s.key)))){api.storage.debug.log(`Using index for sorting: ${sortIndex.description}`);const metadataSort=querySort.slice(1).map((s=>{s.index=sortIndex;return{key:s.key,ascending:s.ascending}}));const promise=sortIndex.take(query.skip,Math.abs(query.take),{ascending:ascending,metadataSort:metadataSort}).then((results=>{options.eventHandler&&options.eventHandler({name:"stats",type:"sort_index_take",source:sortIndex.description,stats:results.stats});if(results.hints.length>0){options.eventHandler&&options.eventHandler({name:"hints",type:"sort_index_take",source:sortIndex.description,hints:results.hints})}return results}));indexScanPromises.push(promise);stepsExecuted.skipped=true;stepsExecuted.taken=true;stepsExecuted.sorted=true}}return Promise.all(indexScanPromises).then((async indexResultSets=>{let indexedResults=[];if(indexResultSets.length===1){const resultSet=indexResultSets[0];indexedResults=resultSet.map((match=>{const result={key:match.key,path:match.path,val:{[resultSet.filterKey]:match.value}};match.metadata&&Object.assign(result.val,match.metadata);return result}));stepsExecuted.filtered=true}else if(indexResultSets.length>1){indexResultSets.sort(((a,b)=>a.length{const result={key:match.key,path:match.path,val:{[shortestSet.filterKey]:match.value}};const matchedInAllSets=otherSets.every((set=>set.findIndex((m=>m.path===match.path))>=0));if(matchedInAllSets){match.metadata&&Object.assign(result.val,match.metadata);otherSets.forEach((set=>{const otherResult=set.find((r=>r.path===result.path));result.val[set.filterKey]=otherResult.value;otherResult.metadata&&Object.assign(result.val,otherResult.metadata)}));results.push(result)}return results}),[]);stepsExecuted.filtered=true}if(isWildcardPath||indexScanPromises.length>0&&tableScanFilters.length===0){if(querySort.length===0||querySort.every((o=>o.index))){stepsExecuted.preDataLoaded=true;if(!stepsExecuted.sorted&&querySort.length>0){sortMatches(indexedResults)}stepsExecuted.sorted=true;if(!stepsExecuted.skipped&&query.skip>0){indexedResults=query.take<0?indexedResults.slice(0,-query.skip):indexedResults.slice(query.skip)}if(!stepsExecuted.taken&&query.take!==0){indexedResults=query.take<0?indexedResults.slice(query.take):indexedResults.slice(0,query.take)}stepsExecuted.skipped=true;stepsExecuted.taken=true;if(!options.snapshots){return indexedResults}const childOptions={include:options.include,exclude:options.exclude,child_objects:options.child_objects};return loadResultsData(indexedResults,childOptions).then((results=>{stepsExecuted.dataLoaded=true;return results}))}if(options.snapshots||!stepsExecuted.sorted){const loadPartialResults=querySort.length>0;const childOptions=loadPartialResults?{include:querySort.map((order=>order.key))}:{include:options.include,exclude:options.exclude,child_objects:options.child_objects};return loadResultsData(indexedResults,childOptions).then((results=>{if(querySort.length>0){sortMatches(results)}stepsExecuted.sorted=true;if(query.skip>0){results=query.take<0?results.slice(0,-query.skip):results.slice(query.skip)}if(query.take!==0){results=query.take<0?results.slice(query.take):results.slice(0,query.take)}stepsExecuted.skipped=true;stepsExecuted.taken=true;if(options.snapshots&&loadPartialResults){return loadResultsData(results,{include:options.include,exclude:options.exclude,child_objects:options.child_objects})}return results}))}else{return indexedResults}}let indexKeyFilter;if(indexedResults.length>0){indexKeyFilter=indexedResults.map((result=>result.key))}let matches=[];let preliminaryStop=false;const loadPartialData=querySort.length>0;const childOptions=loadPartialData?{include:querySort.map((order=>order.key))}:{include:options.include,exclude:options.exclude,child_objects:options.child_objects};const batch={promises:[],add(promise){this.promises.push(promise);if(this.promises.length>=1e3){return Promise.all(this.promises.splice(0)).then((_=>undefined))}}};try{await api.storage.getChildren(path,{keyFilter:indexKeyFilter,async:true}).next((child=>{if(child.type!==node_value_types_1.VALUE_TYPES.OBJECT){return}if(!child.address){return}if(preliminaryStop){return false}const matchNode=async()=>{const isMatch=await api.storage.matchNode(child.address.path,tableScanFilters);if(!isMatch){return}const childPath=child.address.path;let result;if(options.snapshots||querySort.length>0){const node=await api.storage.getNode(childPath,childOptions);result={path:childPath,val:node.value}}else{result={path:childPath}}matches.push(result);if(query.take!==0&&matches.length>Math.abs(query.take)+query.skip){if(querySort.length>0){sortMatches(matches)}else if(query.take>0){preliminaryStop=true}matches.pop()}};const p=batch.add(matchNode());if(p instanceof Promise){return p}}))}catch(reason){if(!(reason instanceof node_errors_1.NodeNotFoundError)){api.storage.debug.warn(`Error getting child stream: ${reason}`)}return[]}await Promise.all(batch.promises);stepsExecuted.preDataLoaded=loadPartialData;stepsExecuted.dataLoaded=!loadPartialData;if(querySort.length>0){sortMatches(matches)}stepsExecuted.sorted=true;if(query.skip>0){matches=query.take<0?matches.slice(0,-query.skip):matches.slice(query.skip)}stepsExecuted.skipped=true;if(query.take!==0){matches=query.take<0?matches.slice(query.take):matches.slice(0,query.take)}stepsExecuted.taken=true;if(!stepsExecuted.dataLoaded){matches=await loadResultsData(matches,{include:options.include,exclude:options.exclude,child_objects:options.child_objects});stepsExecuted.dataLoaded=true}return matches})).then((matches=>{if(!stepsExecuted.sorted&&querySort.length>0){sortMatches(matches)}if(!options.snapshots){matches=matches.map((match=>match.path))}if(!stepsExecuted.skipped&&query.skip>0){matches=query.take<0?matches.slice(0,-query.skip):matches.slice(query.skip)}if(!stepsExecuted.taken&&query.take!==0){matches=query.take<0?matches.slice(query.take):matches.slice(0,query.take)}if(options.monitor===true){options.monitor={add:true,change:true,remove:true}}if(typeof options.monitor==="object"&&(options.monitor.add||options.monitor.change||options.monitor.remove)){const monitor=options.monitor;const matchedPaths=options.snapshots?matches.map((match=>match.path)):matches.slice();const ref=api.db.ref(path);const removeMatch=path=>{const index=matchedPaths.indexOf(path);if(index<0){return}matchedPaths.splice(index,1)};const addMatch=path=>{if(matchedPaths.includes(path)){return}matchedPaths.push(path)};const stopMonitoring=()=>{api.unsubscribe(ref.path,"child_changed",childChangedCallback);api.unsubscribe(ref.path,"child_added",childAddedCallback);api.unsubscribe(ref.path,"notify_child_removed",childRemovedCallback)};stop=async()=>{stopMonitoring()};const childChangedCallback=async(err,path,newValue,oldValue)=>{const wasMatch=matchedPaths.includes(path);let keepMonitoring=true;const checkKeys=[];queryFilters.forEach((f=>!checkKeys.includes(f.key)&&checkKeys.push(f.key)));const seenKeys=[];typeof oldValue==="object"&&Object.keys(oldValue).forEach((key=>!seenKeys.includes(key)&&seenKeys.push(key)));typeof newValue==="object"&&Object.keys(newValue).forEach((key=>!seenKeys.includes(key)&&seenKeys.push(key)));const missingKeys=[];let isMatch=seenKeys.every((key=>{if(!checkKeys.includes(key)){return true}const filters=queryFilters.filter((filter=>filter.key===key));return filters.every((filter=>{var _a;if(((_a=filter.index)===null||_a===void 0?void 0:_a.textLocaleKey)&&!seenKeys.includes(filter.index.textLocaleKey)){missingKeys.push(filter.index.textLocaleKey);return true}else if(allowedTableScanOperators.includes(filter.op)){return api.storage.test(newValue[key],filter.op,filter.compare)}else{return filter.index.test(newValue,filter.op,filter.compare)}}))}));if(isMatch){missingKeys.push(...checkKeys.filter((key=>!seenKeys.includes(key))));if(!wasMatch&&missingKeys.length>0){const filterQueue=queryFilters.filter((f=>missingKeys.includes(f.key)));const simpleFilters=filterQueue.filter((f=>allowedTableScanOperators.includes(f.op)));const indexFilters=filterQueue.filter((f=>!allowedTableScanOperators.includes(f.op)));if(simpleFilters.length>0){isMatch=await api.storage.matchNode(path,simpleFilters)}if(isMatch&&indexFilters.length>0){const keysToLoad=indexFilters.reduce(((keys,filter)=>{if(!keys.includes(filter.key)){keys.push(filter.key)}if(filter.index instanceof data_index_1.FullTextIndex&&filter.index.config.localeKey&&!keys.includes(filter.index.config.localeKey)){keys.push(filter.index.config.localeKey)}return keys}),[]);const node=await api.storage.getNode(path,{include:keysToLoad});if(node.value===null){return false}isMatch=indexFilters.every((filter=>filter.index.test(node.value,filter.op,filter.compare)))}}}if(isMatch){if(!wasMatch){addMatch(path)}if(options.snapshots){const loadOptions={include:options.include,exclude:options.exclude,child_objects:options.child_objects};const node=await api.storage.getNode(path,loadOptions);newValue=node.value}if(wasMatch&&monitor.change){keepMonitoring=options.eventHandler({name:"change",path:path,value:newValue})!==false}else if(!wasMatch&&monitor.add){keepMonitoring=options.eventHandler({name:"add",path:path,value:newValue})!==false}}else if(wasMatch){removeMatch(path);if(monitor.remove){keepMonitoring=options.eventHandler({name:"remove",path:path,value:oldValue})!==false}}if(keepMonitoring===false){stopMonitoring()}};const childAddedCallback=(err,path,newValue)=>{const isMatch=queryFilters.every((filter=>{if(allowedTableScanOperators.includes(filter.op)){return api.storage.test(newValue[filter.key],filter.op,filter.compare)}else{return filter.index.test(newValue,filter.op,filter.compare)}}));let keepMonitoring=true;if(isMatch){addMatch(path);if(monitor.add){keepMonitoring=options.eventHandler({name:"add",path:path,value:options.snapshots?newValue:null})!==false}}if(keepMonitoring===false){stopMonitoring()}};const childRemovedCallback=(err,path,newValue,oldValue)=>{let keepMonitoring=true;removeMatch(path);if(monitor.remove){keepMonitoring=options.eventHandler({name:"remove",path:path,value:options.snapshots?oldValue:null})!==false}if(keepMonitoring===false){stopMonitoring()}};if(options.monitor.add||options.monitor.change||options.monitor.remove){api.subscribe(ref.path,"child_changed",childChangedCallback)}if(options.monitor.remove){api.subscribe(ref.path,"notify_child_removed",childRemovedCallback)}if(options.monitor.add){api.subscribe(ref.path,"child_added",childAddedCallback)}}return{results:matches,context:context,stop:stop}}))}exports.executeQuery=executeQuery},{"./async-task-batch":5,"./data-index":7,"./node-errors":11,"./node-value-types":14,"acebase-core":43}],18:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AceBaseStorage=exports.AceBaseStorageSettings=void 0;const not_supported_1=require("../../not-supported");class AceBaseStorageSettings extends not_supported_1.NotSupported{}exports.AceBaseStorageSettings=AceBaseStorageSettings;class AceBaseStorage extends not_supported_1.NotSupported{}exports.AceBaseStorage=AceBaseStorage},{"../../not-supported":15}],19:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createIndex=void 0;const acebase_core_1=require("acebase-core");const data_index_1=require("../data-index");const promise_fs_1=require("../promise-fs");async function createIndex(context,path,key,options){if(!context.storage.indexes.supported){throw new Error("Indexes are not supported in current environment because it requires Node.js fs")}const{ipc:ipc,debug:debug,indexes:indexes,storage:storage}=context;const rebuild=options&&options.rebuild===true;const indexType=options&&options.type||"normal";let includeKeys=options&&options.include||[];if(typeof includeKeys==="string"){includeKeys=[includeKeys]}const existingIndex=indexes.find((index=>index.path===path&&index.key===key&&index.type===indexType&&index.includeKeys.length===includeKeys.length&&index.includeKeys.every(((key,index)=>includeKeys[index]===key))));if(existingIndex&&options.config){existingIndex.config=options.config}if(existingIndex&&rebuild!==true){debug.log(`Index on "/${path}/*/${key}" already exists`.colorize(acebase_core_1.ColorStyle.inverse));return existingIndex}if(!ipc.isMaster){const result=await ipc.sendRequest({type:"index.create",path:path,key:key,options:options});if(result.ok){return storage.indexes.add(result.fileName)}throw new Error(result.reason)}await promise_fs_1.pfs.mkdir(`${storage.settings.path}/${storage.name}.acebase`).catch((err=>{if(err.code!=="EEXIST"){throw err}}));const index=existingIndex||(()=>{const{include:include,caseSensitive:caseSensitive,textLocale:textLocale,textLocaleKey:textLocaleKey}=options;const indexOptions={include:include,caseSensitive:caseSensitive,textLocale:textLocale,textLocaleKey:textLocaleKey};switch(indexType){case"array":return new data_index_1.ArrayIndex(storage,path,key,Object.assign({},indexOptions));case"fulltext":return new data_index_1.FullTextIndex(storage,path,key,Object.assign(Object.assign({},indexOptions),{config:options.config}));case"geo":return new data_index_1.GeoIndex(storage,path,key,Object.assign({},indexOptions));default:return new data_index_1.DataIndex(storage,path,key,Object.assign({},indexOptions))}})();if(!existingIndex){indexes.push(index)}try{await index.build()}catch(err){context.debug.error(`Index build on "/${path}/*/${key}" failed: ${err.message} (code: ${err.code})`.colorize(acebase_core_1.ColorStyle.red));if(!existingIndex){indexes.splice(indexes.indexOf(index),1)}throw err}ipc.sendNotification({type:"index.created",fileName:index.fileName,path:path,key:key,options:options});return index}exports.createIndex=createIndex},{"../data-index":7,"../promise-fs":16,"acebase-core":43}],20:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.CustomStorageHelpers=void 0;const acebase_core_1=require("acebase-core");class CustomStorageHelpers{static ChildPathsSql(path,columnName="path"){const where=path===""?`${columnName} <> '' AND ${columnName} NOT LIKE '%/%'`:`(${columnName} LIKE '${path}/%' OR ${columnName} LIKE '${path}[%') AND ${columnName} NOT LIKE '${path}/%/%' AND ${columnName} NOT LIKE '${path}[%]/%' AND ${columnName} NOT LIKE '${path}[%][%'`;return where}static ChildPathsRegex(path){return new RegExp(`^${path}(?:/[^/[]+|\\[[0-9]+\\])$`)}static DescendantPathsSql(path,columnName="path"){const where=path===""?`${columnName} <> ''`:`${columnName} LIKE '${path}/%' OR ${columnName} LIKE '${path}[%'`;return where}static DescendantPathsRegex(path){return new RegExp(`^${path}(?:/[^/[]+|\\[[0-9]+\\])`)}static get PathInfo(){return acebase_core_1.PathInfo}}exports.CustomStorageHelpers=CustomStorageHelpers},{"acebase-core":43}],21:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.CustomStorage=exports.CustomStorageNodeInfo=exports.CustomStorageNodeAddress=exports.CustomStorageSettings=exports.CustomStorageTransaction=exports.ICustomStorageNode=exports.ICustomStorageNodeMetaData=exports.CustomStorageHelpers=void 0;const acebase_core_1=require("acebase-core");const{compareValues:compareValues}=acebase_core_1.Utils;const node_info_1=require("../../node-info");const node_lock_1=require("../../node-lock");const node_value_types_1=require("../../node-value-types");const node_errors_1=require("../../node-errors");const index_1=require("../index");const helpers_1=require("./helpers");const node_address_1=require("../../node-address");const assert_1=require("../../assert");var helpers_2=require("./helpers");Object.defineProperty(exports,"CustomStorageHelpers",{enumerable:true,get:function(){return helpers_2.CustomStorageHelpers}});class ICustomStorageNodeMetaData{constructor(){this.revision="";this.revision_nr=0;this.created=0;this.modified=0;this.type=0}}exports.ICustomStorageNodeMetaData=ICustomStorageNodeMetaData;class ICustomStorageNode extends ICustomStorageNodeMetaData{constructor(){super();this.value=null}}exports.ICustomStorageNode=ICustomStorageNode;class CustomStorageTransaction{constructor(target){this.production=false;this.target={get originalPath(){return target.path},path:target.path,get write(){return target.write}};this.id=acebase_core_1.ID.generate()}async getChildCount(path){let childCount=0;await this.childrenOf(path,{metadata:false,value:false},(()=>{childCount++;return false}));return childCount}async getMultiple(paths){const map=new Map;await Promise.all(paths.map((path=>this.get(path).then((val=>map.set(path,val))))));return map}async setMultiple(nodes){await Promise.all(nodes.map((({path:path,node:node})=>this.set(path,node))))}async removeMultiple(paths){await Promise.all(paths.map((path=>this.remove(path))))}async commit(){throw new Error(`CustomStorageTransaction.rollback must be overridden by subclass`)}async moveToParentPath(targetPath){const currentPath=this._lock&&this._lock.path||this.target.path;if(currentPath===targetPath){return targetPath}const pathInfo=helpers_1.CustomStorageHelpers.PathInfo.get(targetPath);if(pathInfo.isParentOf(currentPath)){if(this._lock){this._lock=await this._lock.moveToParent()}}else{throw new Error(`Locking issue. Locked path "${this._lock.path}" is not a child/descendant of "${targetPath}"`)}this.target.path=targetPath;return targetPath}}exports.CustomStorageTransaction=CustomStorageTransaction;class CustomStorageSettings extends index_1.StorageSettings{constructor(settings){super(settings);this.locking=true;if(typeof settings!=="object"){throw new Error("settings missing")}if(typeof settings.ready!=="function"){throw new Error(`ready must be a function`)}if(typeof settings.getTransaction!=="function"){throw new Error(`getTransaction must be a function`)}this.name=settings.name;this.locking=settings.locking!==false;if(this.locking){this.lockTimeout=typeof settings.lockTimeout==="number"?settings.lockTimeout:120}this.ready=settings.ready;const useLocking=this.locking;const nodeLocker=useLocking?new node_lock_1.NodeLocker(console,this.lockTimeout):null;this.getTransaction=async({path:path,write:write})=>{const transaction=await settings.getTransaction({path:path,write:write});(0,assert_1.assert)(typeof transaction.id==="string",`transaction id not set`);const rollback=transaction.rollback;const commit=transaction.commit;transaction.commit=async()=>{const ret=await commit.call(transaction);if(useLocking){await transaction._lock.release("commit")}return ret};transaction.rollback=async reason=>{const ret=await rollback.call(transaction,reason);if(useLocking){await transaction._lock.release("rollback")}return ret};if(useLocking){transaction._lock=await nodeLocker.lock(path,transaction.id,write,`${this.name}::getTransaction`)}return transaction}}}exports.CustomStorageSettings=CustomStorageSettings;class CustomStorageNodeAddress{constructor(containerPath){this.path=containerPath}}exports.CustomStorageNodeAddress=CustomStorageNodeAddress;class CustomStorageNodeInfo extends node_info_1.NodeInfo{constructor(info){super(info);this.revision=info.revision;this.revision_nr=info.revision_nr;this.created=info.created;this.modified=info.modified}}exports.CustomStorageNodeInfo=CustomStorageNodeInfo;class CustomStorage extends index_1.Storage{constructor(dbname,settings,env){super(dbname,settings,env);this._customImplementation=settings;this._init()}async _init(){this.debug.log(`Database "${this.name}" details:`.colorize(acebase_core_1.ColorStyle.dim));this.debug.log(`- Type: CustomStorage`.colorize(acebase_core_1.ColorStyle.dim));this.debug.log(`- Path: ${this.settings.path}`.colorize(acebase_core_1.ColorStyle.dim));this.debug.log(`- Max inline value size: ${this.settings.maxInlineValueSize}`.colorize(acebase_core_1.ColorStyle.dim));this.debug.log(`- Autoremove undefined props: ${this.settings.removeVoidProperties}`.colorize(acebase_core_1.ColorStyle.dim));await this._customImplementation.ready();const transaction=await this._customImplementation.getTransaction({path:"",write:true});const info=await this.getNodeInfo("",{transaction:transaction});if(!info.exists){await this._writeNode("",{},{transaction:transaction})}await transaction.commit();if(this.indexes.supported){await this.indexes.load()}this.emit("ready")}throwImplementationError(message){throw new Error(`CustomStorage "${this._customImplementation.name}" ${message}`)}_storeNode(path,node,options){const getTypedChildValue=val=>{if(val===null){throw new Error(`Not allowed to store null values. remove the property`)}else if(["string","number","boolean"].includes(typeof val)){return val}else if(val instanceof Date){return{type:node_value_types_1.VALUE_TYPES.DATETIME,value:val.getTime()}}else if(val instanceof acebase_core_1.PathReference){return{type:node_value_types_1.VALUE_TYPES.REFERENCE,value:val.path}}else if(val instanceof ArrayBuffer){return{type:node_value_types_1.VALUE_TYPES.BINARY,value:acebase_core_1.ascii85.encode(val)}}else if(typeof val==="object"){(0,assert_1.assert)(Object.keys(val).length===0,"child object stored in parent can only be empty");return val}};const unprocessed=`Caller should have pre-processed the value by converting it to a string`;if(node.type===node_value_types_1.VALUE_TYPES.ARRAY&&node.value instanceof Array){console.warn(`Unprocessed array. ${unprocessed}`);const obj={};for(let i=0;i{node.value[key]=getTypedChildValue(original[key])}))}return options.transaction.set(path,node)}_processReadNodeValue(node){const getTypedChildValue=val=>{if(val.type===node_value_types_1.VALUE_TYPES.BINARY){return acebase_core_1.ascii85.decode(val.value)}else if(val.type===node_value_types_1.VALUE_TYPES.DATETIME){return new Date(val.value)}else if(val.type===node_value_types_1.VALUE_TYPES.REFERENCE){return new acebase_core_1.PathReference(val.value)}else{throw new Error(`Unhandled child value type ${val.type}`)}};switch(node.type){case node_value_types_1.VALUE_TYPES.ARRAY:case node_value_types_1.VALUE_TYPES.OBJECT:{const obj=node.value;Object.keys(obj).forEach((key=>{const item=obj[key];if(typeof item==="object"&&"type"in item){obj[key]=getTypedChildValue(item)}}));node.value=obj;break}case node_value_types_1.VALUE_TYPES.BINARY:{node.value=acebase_core_1.ascii85.decode(node.value);break}case node_value_types_1.VALUE_TYPES.REFERENCE:{node.value=new acebase_core_1.PathReference(node.value);break}case node_value_types_1.VALUE_TYPES.STRING:{break}default:throw new Error(`Invalid standalone record value type`)}}async _readNode(path,options){const node=await options.transaction.get(path);if(node===null){return null}if(typeof node!=="object"){this.throwImplementationError(`transaction.get must return an ICustomStorageNode object. Use JSON.parse if your set function stored it as a string`)}this._processReadNodeValue(node);return node}_getTypeFromStoredValue(val){let type;if(typeof val==="string"){type=node_value_types_1.VALUE_TYPES.STRING}else if(typeof val==="number"){type=node_value_types_1.VALUE_TYPES.NUMBER}else if(typeof val==="boolean"){type=node_value_types_1.VALUE_TYPES.BOOLEAN}else if(val instanceof Array){type=node_value_types_1.VALUE_TYPES.ARRAY}else if(typeof val==="object"){if("type"in val){const serialized=val;type=serialized.type;val=serialized.value;if(type===node_value_types_1.VALUE_TYPES.DATETIME){val=new Date(val)}else if(type===node_value_types_1.VALUE_TYPES.REFERENCE){val=new acebase_core_1.PathReference(val)}}else{type=node_value_types_1.VALUE_TYPES.OBJECT}}else{throw new Error(`Unknown value type`)}return{type:type,value:val}}async _writeNode(path,value,options){if(!options.merge&&this.valueFitsInline(value)&&path!==""){throw new Error(`invalid value to store in its own node`)}else if(path===""&&(typeof value!=="object"||value instanceof Array)){throw new Error(`Invalid root node value. Must be an object`)}if(typeof options.diff==="undefined"&&typeof options.currentValue!=="undefined"){const diff=compareValues(options.currentValue,value);if(options.merge&&typeof diff==="object"){diff.removed=diff.removed.filter((key=>value[key]===null))}options.diff=diff}if(options.diff==="identical"){return}const transaction=options.transaction;const currentRow=options.currentValue===null?null:await this._readNode(path,{transaction:transaction});if(options.merge&¤tRow){if(currentRow.type===node_value_types_1.VALUE_TYPES.ARRAY&&!(value instanceof Array)&&typeof value==="object"&&Object.keys(value).some((key=>isNaN(parseInt(key))))){throw new Error(`Cannot merge existing array of path "${path}" with an object`)}if(value instanceof Array&¤tRow.type!==node_value_types_1.VALUE_TYPES.ARRAY){throw new Error(`Cannot merge existing object of path "${path}" with an array`)}}const revision=options.revision||acebase_core_1.ID.generate();const mainNode={type:currentRow&¤tRow.type===node_value_types_1.VALUE_TYPES.ARRAY?node_value_types_1.VALUE_TYPES.ARRAY:node_value_types_1.VALUE_TYPES.OBJECT,value:{}};const childNodeValues={};if(value instanceof Array){mainNode.type=node_value_types_1.VALUE_TYPES.ARRAY;const obj={};for(let i=0;i{if(!(key in value)){value[key]=null}}))}Object.keys(value).forEach((key=>{const val=value[key];delete mainNode.value[key];if(val===null){return}else if(typeof val==="undefined"){if(this.settings.removeVoidProperties===true){delete value[key];return}else{throw new Error(`Property "${key}" has invalid value. Cannot store undefined values. Set removeVoidProperties option to true to automatically remove undefined properties`)}}if(this.valueFitsInline(val)){mainNode.value[key]=val}else{childNodeValues[key]=val}}))}const isArray=mainNode.type===node_value_types_1.VALUE_TYPES.ARRAY;if(currentRow){this.debug.log(`Node "/${path}" is being ${options.merge?"updated":"overwritten"}`.colorize(acebase_core_1.ColorStyle.cyan));if(currentIsObjectOrArray||newIsObjectOrArray){const pathInfo=acebase_core_1.PathInfo.get(path);const keys=[];let checkExecuted=false;const includeChildCheck=childPath=>{checkExecuted=true;if(!transaction.production&&!pathInfo.isParentOf(childPath)){this.throwImplementationError(`"${childPath}" is not a child of "${path}" - childrenOf must only check and return paths that are children`)}return true};const addChildPath=childPath=>{if(!checkExecuted){this.throwImplementationError(`childrenOf did not call checkCallback before addCallback`)}const key=acebase_core_1.PathInfo.get(childPath).key;keys.push(key.toString());return true};await transaction.childrenOf(path,{metadata:false,value:false},includeChildCheck,addChildPath);children.current=children.current.concat(keys);if(newIsObjectOrArray){if(options&&options.merge){children.new=children.current.slice()}Object.keys(value).forEach((key=>{if(!children.new.includes(key)){children.new.push(key)}}))}const changes={insert:children.new.filter((key=>!children.current.includes(key))),update:[],delete:options&&options.merge?Object.keys(value).filter((key=>value[key]===null)):children.current.filter((key=>!children.new.includes(key)))};changes.update=children.new.filter((key=>children.current.includes(key)&&!changes.delete.includes(key)));if(isArray&&options.merge&&(changes.insert.length>0||changes.delete.length>0)){const newArrayKeys=changes.update.concat(changes.insert);const isExhaustive=newArrayKeys.every(((k,index,arr)=>arr.includes(index.toString())));if(!isExhaustive){throw new Error(`Elements cannot be inserted beyond, or removed before the end of an array. Rewrite the whole array at path "${path}" or change your schema to use an object collection instead`)}}const writePromises=Object.keys(childNodeValues).map((key=>{const keyOrIndex=isArray?parseInt(key):key;const childDiff=typeof options.diff==="object"?options.diff.forChild(keyOrIndex):undefined;if(childDiff==="identical"){return}const childPath=pathInfo.childPath(keyOrIndex);const childValue=childNodeValues[keyOrIndex];const currentChildValue=typeof options.currentValue==="undefined"?undefined:options.currentValue!==null&&typeof options.currentValue==="object"&&keyOrIndex in options.currentValue?options.currentValue[keyOrIndex]:null;return this._writeNode(childPath,childValue,{transaction:transaction,revision:revision,merge:false,currentValue:currentChildValue,diff:childDiff})}));const movingNodes=newIsObjectOrArray?keys.filter((key=>key in mainNode.value)):[];const deleteDedicatedKeys=changes.delete.concat(movingNodes);const deletePromises=deleteDedicatedKeys.map((key=>{const keyOrIndex=isArray?parseInt(key):key;const childPath=pathInfo.childPath(keyOrIndex);return this._deleteNode(childPath,{transaction:transaction})}));const promises=writePromises.concat(deletePromises);await Promise.all(promises)}const p=this._storeNode(path,{type:mainNode.type,value:mainNode.value,revision:currentRow.revision,revision_nr:currentRow.revision_nr+1,created:currentRow.created,modified:Date.now()},{transaction:transaction});if(p instanceof Promise){return await p}}else{this.debug.log(`Node "/${path}" is being created`.colorize(acebase_core_1.ColorStyle.cyan));if(isArray){const arrayKeys=Object.keys(mainNode.value).concat(Object.keys(childNodeValues));const isExhaustive=arrayKeys.every(((k,index,arr)=>arr.includes(index.toString())));if(!isExhaustive){throw new Error(`Cannot store arrays with missing entries`)}}const promises=Object.keys(childNodeValues).map((key=>{const keyOrIndex=isArray?parseInt(key):key;const childPath=acebase_core_1.PathInfo.getChildPath(path,keyOrIndex);const childValue=childNodeValues[keyOrIndex];return this._writeNode(childPath,childValue,{transaction:transaction,revision:revision,merge:false,currentValue:null})}));const p=this._storeNode(path,{type:mainNode.type,value:mainNode.value,revision:revision,revision_nr:1,created:Date.now(),modified:Date.now()},{transaction:transaction});if(p instanceof Promise){promises.push(p)}await Promise.all(promises)}}async _deleteNode(path,options){const pathInfo=acebase_core_1.PathInfo.get(path);this.debug.log(`Node "/${path}" is being deleted`.colorize(acebase_core_1.ColorStyle.cyan));const deletePaths=[path];let checkExecuted=false;const includeDescendantCheck=descPath=>{checkExecuted=true;if(!transaction.production&&!pathInfo.isAncestorOf(descPath)){this.throwImplementationError(`"${descPath}" is not a descendant of "${path}" - descendantsOf must only check and return paths that are descendants`)}return true};const addDescendant=descPath=>{if(!checkExecuted){this.throwImplementationError(`descendantsOf did not call checkCallback before addCallback`)}deletePaths.push(descPath);return true};const transaction=options.transaction;await transaction.descendantsOf(path,{metadata:false,value:false},includeDescendantCheck,addDescendant);this.debug.log(`Nodes ${deletePaths.map((p=>`"/${p}"`)).join(",")} are being deleted`.colorize(acebase_core_1.ColorStyle.cyan));return transaction.removeMultiple(deletePaths)}getChildren(path,options={}){let callback;const generator={next(valueCallback){callback=valueCallback;return start()}};const start=async()=>{const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:false});try{let canceled=false;await(async()=>{const node=await this._readNode(path,{transaction:transaction});if(!node){throw new node_errors_1.NodeNotFoundError(`Node "/${path}" does not exist`)}if(![node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(node.type)){return}const isArray=node.type===node_value_types_1.VALUE_TYPES.ARRAY;const value=node.value;let keys=Object.keys(value).map((key=>isArray?parseInt(key):key));if(options.keyFilter){keys=keys.filter((key=>options.keyFilter.includes(key)))}const pathInfo=acebase_core_1.PathInfo.get(path);keys.length>0&&keys.every((key=>{const child=this._getTypeFromStoredValue(value[key]);const info=new CustomStorageNodeInfo({path:pathInfo.childPath(key),key:isArray?null:key,index:isArray?key:null,type:child.type,address:null,exists:true,value:child.value,revision:node.revision,revision_nr:node.revision_nr,created:new Date(node.created),modified:new Date(node.modified)});canceled=callback(info)===false;return!canceled}));if(canceled){return}let checkExecuted=false;const includeChildCheck=childPath=>{checkExecuted=true;if(!transaction.production&&!pathInfo.isParentOf(childPath)){this.throwImplementationError(`"${childPath}" is not a child of "${path}" - childrenOf must only check and return paths that are children`)}if(options.keyFilter){const key=acebase_core_1.PathInfo.get(childPath).key;return options.keyFilter.includes(key)}return true};const addChildNode=(childPath,node)=>{if(!checkExecuted){this.throwImplementationError(`childrenOf did not call checkCallback before addCallback`)}const key=acebase_core_1.PathInfo.get(childPath).key;const info=new CustomStorageNodeInfo({path:childPath,type:node.type,key:isArray?null:key,index:isArray?key:null,address:new node_address_1.NodeAddress(childPath),exists:true,value:null,revision:node.revision,revision_nr:node.revision_nr,created:new Date(node.created),modified:new Date(node.modified)});canceled=callback(info)===false;return!canceled};await transaction.childrenOf(path,{metadata:true,value:false},includeChildCheck,addChildNode)})();if(!options.transaction){await transaction.commit()}return canceled}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}};return generator}async getNode(path,options){options=options||{};const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:false});try{const node=await(async()=>{const filtered=options.include&&options.include.length>0||options.exclude&&options.exclude.length>0||options.child_objects===false;const pathInfo=acebase_core_1.PathInfo.get(path);const targetNode=await this._readNode(path,{transaction:transaction});if(!targetNode){if(path===""){return{value:null}}const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);const parentNode=await this._readNode(pathInfo.parentPath,{transaction:transaction});if(parentNode&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(parentNode.type)&&pathInfo.key in parentNode.value){const childValueInfo=this._getTypeFromStoredValue(parentNode.value[pathInfo.key]);return{revision:parentNode.revision,revision_nr:parentNode.revision_nr,created:parentNode.created,modified:parentNode.modified,type:childValueInfo.type,value:childValueInfo.value}}return{value:null}}const isArray=targetNode.type===node_value_types_1.VALUE_TYPES.ARRAY;const convertFilterArray=arr=>{const isNumber=key=>/^[0-9]+$/.test(key);return arr.map((path=>acebase_core_1.PathInfo.get(isArray&&isNumber(path)?`[${path}]`:path)))};const includeFilter=options.include?convertFilterArray(options.include):[];const excludeFilter=options.exclude?convertFilterArray(options.exclude):[];const applyFiltersOnInlineData=(descPath,node)=>{if([node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(node.type)&&includeFilter.length>0){const trailKeys=acebase_core_1.PathInfo.getPathKeys(descPath).slice(pathInfo.keys.length);const checkPathInfo=new acebase_core_1.PathInfo(trailKeys);const remove=[];const includes=includeFilter.filter((info=>info.isDescendantOf(checkPathInfo)));if(includes.length>0){const isArray=node.type===node_value_types_1.VALUE_TYPES.ARRAY;remove.push(...Object.keys(node.value).map((key=>isArray?+key:key)));for(const info of includes){const targetProp=info.keys[trailKeys.length];if(typeof targetProp==="string"&&(targetProp==="*"||targetProp.startsWith("$"))){remove.splice(0);break}const index=remove.indexOf(targetProp);index>=0&&remove.splice(index,1)}}const hasIncludeOnChild=includeFilter.some((info=>info.isChildOf(checkPathInfo)));const hasExcludeOnChild=excludeFilter.some((info=>info.isChildOf(checkPathInfo)));if(hasExcludeOnChild&&!hasIncludeOnChild){const excludes=excludeFilter.filter((info=>info.isChildOf(checkPathInfo)));for(let i=0;iinfo.equals(remove[i])))){remove.splice(i,1);i--}}}for(const key of remove){delete node.value[key]}}};applyFiltersOnInlineData(path,targetNode);let checkExecuted=false;const includeDescendantCheck=(descPath,metadata)=>{checkExecuted=true;if(!transaction.production&&!pathInfo.isAncestorOf(descPath)){this.throwImplementationError(`"${descPath}" is not a descendant of "${path}" - descendantsOf must only check and return paths that are descendants`)}if(!filtered){return true}const descPathKeys=acebase_core_1.PathInfo.getPathKeys(descPath);const trailKeys=descPathKeys.slice(pathInfo.keys.length);const checkPathInfo=new acebase_core_1.PathInfo(trailKeys);let include=(includeFilter.length>0?includeFilter.some((info=>checkPathInfo.isOnTrailOf(info))):true)&&(excludeFilter.length>0?!excludeFilter.some((info=>info.equals(checkPathInfo)||info.isAncestorOf(checkPathInfo))):true);if(include&&options.child_objects===false&&(pathInfo.isParentOf(descPath)&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(metadata?metadata.type:-1)||acebase_core_1.PathInfo.getPathKeys(descPath).length>pathInfo.pathKeys.length+1)){include=false}return include};const descRows=[];const addDescendant=(descPath,node)=>{if(!checkExecuted){this.throwImplementationError("descendantsOf did not call checkCallback before addCallback")}if(options.child_objects===false&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(node.type)){return true}applyFiltersOnInlineData(descPath,node);this._processReadNodeValue(node);const row=node;row.path=descPath;descRows.push(row);return true};await transaction.descendantsOf(path,{metadata:true,value:true},includeDescendantCheck,addDescendant);this.debug.log(`Read node "/${path}" and ${filtered?"(filtered) ":""}descendants from ${descRows.length+1} records`.colorize(acebase_core_1.ColorStyle.magenta));const result=targetNode;const objectToArray=obj=>{const arr=[];Object.keys(obj).forEach((key=>{const index=parseInt(key);arr[index]=obj[index]}));return arr};if(targetNode.type===node_value_types_1.VALUE_TYPES.ARRAY){result.value=objectToArray(result.value)}if(targetNode.type===node_value_types_1.VALUE_TYPES.OBJECT||targetNode.type===node_value_types_1.VALUE_TYPES.ARRAY){const targetPathKeys=acebase_core_1.PathInfo.getPathKeys(path);const value=targetNode.value;for(let i=0;i{if(childKey in parent[key]){this.throwImplementationError(`Custom storage merge error: child key "${childKey}" is in parent value already! Make sure the get/childrenOf/descendantsOf methods of the custom storage class return values that can be modified by AceBase without affecting the stored source`)}parent[key][childKey]=nodeValue[childKey]}))}}else{parent[key]=nodeValue}parent=parent[key]}}}else if(descRows.length>0){this.throwImplementationError(`multiple records found for non-object value!`)}if(options.child_objects===false){Object.keys(result.value).forEach((key=>{if(typeof result.value[key]==="object"&&result.value[key].constructor===Object){(0,assert_1.assert)(Object.keys(result.value[key]).length===0);delete result.value[key]}}))}if(options.include){}if(options.exclude){const process=(obj,keys)=>{if(typeof obj!=="object"){return}const key=keys[0];if(key==="*"){Object.keys(obj).forEach((k=>{process(obj[k],keys.slice(1))}))}else if(keys.length>1){key in obj&&process(obj[key],keys.slice(1))}else{delete obj[key]}};options.exclude.forEach((path=>{const checkKeys=acebase_core_1.PathInfo.getPathKeys(path);process(result.value,checkKeys)}))}return result})();if(!options.transaction){await transaction.commit()}return node}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}}async getNodeInfo(path,options={}){options=options||{};const pathInfo=acebase_core_1.PathInfo.get(path);const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:false});try{const node=await this._readNode(path,{transaction:transaction});const info=new CustomStorageNodeInfo({path:path,key:typeof pathInfo.key==="string"?pathInfo.key:null,index:typeof pathInfo.key==="number"?pathInfo.key:null,type:node?node.type:0,exists:node!==null,address:node?new node_address_1.NodeAddress(path):null,created:node?new Date(node.created):null,modified:node?new Date(node.modified):null,revision:node?node.revision:null,revision_nr:node?node.revision_nr:null});if(!node&&path!==""){const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);const parent=await this._readNode(pathInfo.parentPath,{transaction:transaction});if(parent&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(parent.type)&&pathInfo.key in parent.value){info.exists=true;info.value=parent.value[pathInfo.key];info.address=null;info.type=parent.type;info.created=new Date(parent.created);info.modified=new Date(parent.modified);info.revision=parent.revision;info.revision_nr=parent.revision_nr}else{info.address=null}}if(options.include_child_count){info.childCount=0;if([node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(info.valueType)&&info.address){info.childCount=node.value?Object.keys(node.value).length:0;info.childCount+=await transaction.getChildCount(path)}}if(!options.transaction){await transaction.commit()}return info}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}}async setNode(path,value,options={suppress_events:false,context:null}){if(this.settings.readOnly){throw new Error(`Database is opened in read-only mode`)}const pathInfo=acebase_core_1.PathInfo.get(path);const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:true});try{if(path===""){if(value===null||typeof value!=="object"||value instanceof Array||value instanceof ArrayBuffer||"buffer"in value&&value.buffer instanceof ArrayBuffer){throw new Error(`Invalid value for root node: ${value}`)}await this._writeNodeWithTracking("",value,{merge:false,transaction:transaction,suppress_events:options.suppress_events,context:options.context})}else if(typeof options.assert_revision!=="undefined"){const info=await this.getNodeInfo(path,{transaction:transaction});if(info.revision!==options.assert_revision){throw new node_errors_1.NodeRevisionError(`revision '${info.revision}' does not match requested revision '${options.assert_revision}'`)}if(info.address&&info.address.path===path&&value!==null&&!this.valueFitsInline(value)){await this._writeNodeWithTracking(path,value,{merge:false,transaction:transaction,suppress_events:options.suppress_events,context:options.context})}else{const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);await this._writeNodeWithTracking(pathInfo.parentPath,{[pathInfo.key]:value},{merge:true,transaction:transaction,suppress_events:options.suppress_events,context:options.context})}}else{const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);await this.updateNode(pathInfo.parentPath,{[pathInfo.key]:value},{transaction:transaction,suppress_events:options.suppress_events,context:options.context})}if(!options.transaction){await transaction.commit()}}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}}async updateNode(path,updates,options={suppress_events:false,context:null}){if(this.settings.readOnly){throw new Error(`Database is opened in read-only mode`)}if(typeof updates!=="object"){throw new Error(`invalid updates argument`)}else if(Object.keys(updates).length===0){return}const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:true});try{const nodeInfo=await this.getNodeInfo(path,{transaction:transaction});const pathInfo=acebase_core_1.PathInfo.get(path);if(nodeInfo.exists&&nodeInfo.address&&nodeInfo.address.path===path){await this._writeNodeWithTracking(path,updates,{transaction:transaction,merge:true,suppress_events:options.suppress_events,context:options.context})}else if(nodeInfo.exists){const pathInfo=acebase_core_1.PathInfo.get(path);const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);await this._writeNodeWithTracking(pathInfo.parentPath,{[pathInfo.key]:updates},{transaction:transaction,merge:true,suppress_events:options.suppress_events,context:options.context})}else{const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);await this.updateNode(pathInfo.parentPath,{[pathInfo.key]:updates},{transaction:transaction,suppress_events:options.suppress_events,context:options.context})}if(!options.transaction){await transaction.commit()}}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}}}exports.CustomStorage=CustomStorage},{"../../assert":4,"../../node-address":10,"../../node-errors":11,"../../node-info":12,"../../node-lock":13,"../../node-value-types":14,"../index":28,"./helpers":20,"acebase-core":43}],22:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createIndexedDBInstance=void 0;const acebase_core_1=require("acebase-core");const __1=require("..");const __2=require("../../..");const settings_1=require("./settings");const transaction_1=require("./transaction");function createIndexedDBInstance(dbname,init={}){const settings=new settings_1.IndexedDBStorageSettings(init);const IndexedDB=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;const request=IndexedDB.open(`${dbname}.acebase`,1);request.onupgradeneeded=e=>{const db=request.result;db.createObjectStore("nodes",{keyPath:"path"});db.createObjectStore("content")};let idb;const readyPromise=new Promise(((resolve,reject)=>{request.onsuccess=e=>{idb=request.result;resolve()};request.onerror=e=>{reject(e)}}));const cache=new acebase_core_1.SimpleCache(typeof settings.cacheSeconds==="number"?settings.cacheSeconds:60);const storageSettings=new __1.CustomStorageSettings({name:"IndexedDB",locking:true,removeVoidProperties:settings.removeVoidProperties,maxInlineValueSize:settings.maxInlineValueSize,lockTimeout:settings.lockTimeout,ready(){return readyPromise},async getTransaction(target){await readyPromise;const context={debug:false,db:idb,cache:cache,ipc:ipc};return new transaction_1.IndexedDBStorageTransaction(context,target)}});const db=new __2.AceBase(dbname,{logLevel:settings.logLevel,storage:storageSettings,sponsor:settings.sponsor});const ipc=db.api.storage.ipc;db.settings.ipcEvents=settings.multipleTabs===true;ipc.on("notification",(async notification=>{const message=notification.data;if(typeof message!=="object"){return}if(message.action==="cache.invalidate"){for(const path of message.paths){cache.remove(path)}}}));return db}exports.createIndexedDBInstance=createIndexedDBInstance},{"..":21,"../../..":6,"./settings":23,"./transaction":24,"acebase-core":43}],23:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.IndexedDBStorageSettings=void 0;const __1=require("../..");class IndexedDBStorageSettings extends __1.StorageSettings{constructor(settings){super(settings);this.multipleTabs=false;this.cacheSeconds=60;this.sponsor=false;if(typeof settings.logLevel==="string"){this.logLevel=settings.logLevel}if(typeof settings.multipleTabs==="boolean"){this.multipleTabs=settings.multipleTabs}if(typeof settings.cacheSeconds==="number"){this.cacheSeconds=settings.cacheSeconds}if(typeof settings.sponsor==="boolean"){this.sponsor=settings.sponsor}["type","ipc","path"].forEach((prop=>{if(prop in settings){console.warn(`${prop} setting is not supported for AceBase IndexedDBStorage`)}}))}}exports.IndexedDBStorageSettings=IndexedDBStorageSettings},{"../..":28}],24:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.IndexedDBStorageTransaction=void 0;const __1=require("..");function _requestToPromise(request){return new Promise(((resolve,reject)=>{request.onsuccess=event=>resolve(request.result||null);request.onerror=reject}))}class IndexedDBStorageTransaction extends __1.CustomStorageTransaction{constructor(context,target){super(target);this.context=context;this.production=true;this._pending=[]}_createTransaction(write=false){const tx=this.context.db.transaction(["nodes","content"],write?"readwrite":"readonly");return tx}_splitMetadata(node){const value=node.value;const copy=Object.assign({},node);delete copy.value;const metadata=copy;return{metadata:metadata,value:value}}async commit(){if(this._pending.length===0){return}const batch=this._pending.splice(0);this.context.ipc.sendNotification({action:"cache.invalidate",paths:batch.map((op=>op.path))});const tx=this._createTransaction(true);try{await new Promise(((resolve,reject)=>{let stop=false,processed=0;const handleError=err=>{stop=true;reject(err)};const handleSuccess=()=>{if(++processed===batch.length){resolve()}};batch.forEach(((op,i)=>{if(stop){return}let r1,r2;const path=op.path;if(op.action==="set"){const{metadata:metadata,value:value}=this._splitMetadata(op.node);const nodeInfo={path:path,metadata:metadata};r1=tx.objectStore("nodes").put(nodeInfo);r2=tx.objectStore("content").put(value,path);this.context.cache.set(path,op.node)}else if(op.action==="remove"){r1=tx.objectStore("content").delete(path);r2=tx.objectStore("nodes").delete(path);this.context.cache.set(path,null)}else{handleError(new Error(`Unknown pending operation "${op.action}" on path "${path}" `))}let succeeded=0;r1.onsuccess=r2.onsuccess=()=>{if(++succeeded===2){handleSuccess()}};r1.onerror=r2.onerror=handleError}))}));tx.commit&&tx.commit()}catch(err){console.error(err);tx.abort&&tx.abort();throw err}}async rollback(err){this._pending=[]}async get(path){if(this.context.cache.has(path)){const cache=this.context.cache.get(path);return cache}const tx=this._createTransaction(false);const r1=_requestToPromise(tx.objectStore("nodes").get(path));const r2=_requestToPromise(tx.objectStore("content").get(path));try{const results=await Promise.all([r1,r2]);tx.commit&&tx.commit();const info=results[0];if(!info){this.context.cache.set(path,null);return null}const node=info.metadata;node.value=results[1];this.context.cache.set(path,node);return node}catch(err){console.error(`IndexedDB get error`,err);tx.abort&&tx.abort();throw err}}set(path,node){this._pending.push({action:"set",path:path,node:node})}remove(path){this._pending.push({action:"remove",path:path})}async removeMultiple(paths){paths.forEach((path=>{this._pending.push({action:"remove",path:path})}))}childrenOf(path,include,checkCallback,addCallback){return this._getChildrenOf(path,Object.assign(Object.assign({},include),{descendants:false}),checkCallback,addCallback)}descendantsOf(path,include,checkCallback,addCallback){return this._getChildrenOf(path,Object.assign(Object.assign({},include),{descendants:true}),checkCallback,addCallback)}_getChildrenOf(path,include,checkCallback,addCallback){return new Promise(((resolve,reject)=>{const pathInfo=__1.CustomStorageHelpers.PathInfo.get(path);const tx=this._createTransaction(false);const store=tx.objectStore("nodes");const query=IDBKeyRange.lowerBound(path,true);const cursor=include.metadata?store.openCursor(query):store.openKeyCursor(query);cursor.onerror=e=>{var _a;(_a=tx.abort)===null||_a===void 0?void 0:_a.call(tx);reject(e)};cursor.onsuccess=async e=>{var _a,_b,_c;const otherPath=(_b=(_a=cursor.result)===null||_a===void 0?void 0:_a.key)!==null&&_b!==void 0?_b:null;let keepGoing=true;if(otherPath===null){keepGoing=false}else if(!pathInfo.isAncestorOf(otherPath)){keepGoing=false}else if(include.descendants||pathInfo.isParentOf(otherPath)){let node;if(include.metadata){const valueCursor=cursor;const data=valueCursor.result.value;node=data.metadata}const shouldAdd=checkCallback(otherPath,node);if(shouldAdd){if(include.value){if(this.context.cache.has(otherPath)){const cache=this.context.cache.get(otherPath);node.value=cache.value}else{const req=tx.objectStore("content").get(otherPath);node.value=await new Promise(((resolve,reject)=>{req.onerror=e=>{resolve(null)};req.onsuccess=e=>{resolve(req.result)}}));this.context.cache.set(otherPath,node.value===null?null:node)}}keepGoing=addCallback(otherPath,node)}}if(keepGoing){try{cursor.result.continue()}catch(err){keepGoing=false}}if(!keepGoing){(_c=tx.commit)===null||_c===void 0?void 0:_c.call(tx);resolve()}}}))}}exports.IndexedDBStorageTransaction=IndexedDBStorageTransaction},{"..":21}],25:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createLocalStorageInstance=exports.LocalStorageTransaction=exports.LocalStorageSettings=void 0;const __1=require("..");const __2=require("../../..");const settings_1=require("./settings");Object.defineProperty(exports,"LocalStorageSettings",{enumerable:true,get:function(){return settings_1.LocalStorageSettings}});const transaction_1=require("./transaction");Object.defineProperty(exports,"LocalStorageTransaction",{enumerable:true,get:function(){return transaction_1.LocalStorageTransaction}});function createLocalStorageInstance(dbname,init={}){const settings=new settings_1.LocalStorageSettings(init);const localStorage=settings.provider?settings.provider:settings.temp?window.localStorage:window.sessionStorage;const storageSettings=new __1.CustomStorageSettings({name:"LocalStorage",locking:true,removeVoidProperties:settings.removeVoidProperties,maxInlineValueSize:settings.maxInlineValueSize,async ready(){},async getTransaction(target){const context={debug:true,dbname:dbname,localStorage:localStorage};const transaction=new transaction_1.LocalStorageTransaction(context,target);return transaction}});const db=new __2.AceBase(dbname,{logLevel:settings.logLevel,storage:storageSettings,sponsor:settings.sponsor});db.settings.ipcEvents=settings.multipleTabs===true;return db}exports.createLocalStorageInstance=createLocalStorageInstance},{"..":21,"../../..":6,"./settings":26,"./transaction":27}],26:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LocalStorageSettings=void 0;const __1=require("../..");class LocalStorageSettings extends __1.StorageSettings{constructor(settings){super(settings);this.temp=false;this.multipleTabs=false;if(typeof settings.temp==="boolean"){this.temp=settings.temp}if(typeof settings.provider==="object"){this.provider=settings.provider}if(typeof settings.multipleTabs==="boolean"){this.multipleTabs=settings.multipleTabs}if(typeof settings.logLevel==="string"){this.logLevel=settings.logLevel}if(typeof settings.sponsor==="boolean"){this.sponsor=settings.sponsor}["type","ipc","path"].forEach((prop=>{if(prop in settings){console.warn(`${prop} setting is not supported for AceBase LocalStorage`)}}))}}exports.LocalStorageSettings=LocalStorageSettings},{"../..":28}],27:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LocalStorageTransaction=void 0;const __1=require("..");class LocalStorageTransaction extends __1.CustomStorageTransaction{constructor(context,target){super(target);this.context=context;this._storageKeysPrefix=`${this.context.dbname}.acebase::`}async commit(){}async rollback(err){}async get(path){const json=this.context.localStorage.getItem(this.getStorageKeyForPath(path));const val=JSON.parse(json);return val}async set(path,val){const json=JSON.stringify(val);this.context.localStorage.setItem(this.getStorageKeyForPath(path),json)}async remove(path){this.context.localStorage.removeItem(this.getStorageKeyForPath(path))}async childrenOf(path,include,checkCallback,addCallback){const pathInfo=__1.CustomStorageHelpers.PathInfo.get(path);for(let i=0;i`notify_${event}`)));const NOOP=()=>{};class SchemaValidationError extends Error{constructor(reason){super(`Schema validation failed: ${reason}`);this.reason=reason}}exports.SchemaValidationError=SchemaValidationError;class StorageSettings{constructor(settings={}){this.maxInlineValueSize=50;this.removeVoidProperties=false;this.path=".";this.lockTimeout=120;this.type="data";this.readOnly=false;if(typeof settings.maxInlineValueSize==="number"){this.maxInlineValueSize=settings.maxInlineValueSize}if(typeof settings.removeVoidProperties==="boolean"){this.removeVoidProperties=settings.removeVoidProperties}if(typeof settings.path==="string"){this.path=settings.path}if(this.path.endsWith("/")){this.path=this.path.slice(0,-1)}if(typeof settings.lockTimeout==="number"){this.lockTimeout=settings.lockTimeout}if(typeof settings.type==="string"){this.type=settings.type}if(typeof settings.readOnly==="boolean"){this.readOnly=settings.readOnly}if(["object","string"].includes(typeof settings.ipc)){this.ipc=settings.ipc}}}exports.StorageSettings=StorageSettings;class Storage extends acebase_core_1.SimpleEventEmitter{createTid(){return DEBUG_MODE?++this._lastTid:acebase_core_1.ID.generate()}constructor(name,settings,env){super();this.name=name;this.settings=settings;this._schemas=[];this._indexes=[];this.indexes={get supported(){return promise_fs_1.pfs===null||promise_fs_1.pfs===void 0?void 0:promise_fs_1.pfs.hasFileSystem},create:(path,key,options={rebuild:false})=>{const context={storage:this,debug:this.debug,indexes:this._indexes,ipc:this.ipc};return(0,indexes_1.createIndex)(context,path,key,options)},get:(path,key=null)=>{if(path.includes("$")){const pathKeys=acebase_core_1.PathInfo.getPathKeys(path).map((key=>typeof key==="string"&&key.startsWith("$")?"*":key));path=new acebase_core_1.PathInfo(pathKeys).path}return this._indexes.filter((index=>index.path===path&&(key===null||key===index.key)))},getAll:(targetPath,options={parentPaths:true,childPaths:true})=>{const pathKeys=acebase_core_1.PathInfo.getPathKeys(targetPath);return this._indexes.filter((index=>{const indexKeys=acebase_core_1.PathInfo.getPathKeys(index.path+"/*");if(options.parentPaths&&indexKeys.every(((key,i)=>key==="*"||pathKeys[i]===key))&&[index.key].concat(...index.includeKeys).includes(pathKeys[indexKeys.length])){return true}else if(indexKeys.length[key,"*"].includes(indexKeys[i])))}))},list:()=>this._indexes.slice(),load:async()=>{this._indexes.splice(0);if(!promise_fs_1.pfs.hasFileSystem){return}let files=[];try{files=await promise_fs_1.pfs.readdir(`${this.settings.path}/${this.name}.acebase`)}catch(err){if(err.code!=="ENOENT"){this.debug.error(err)}}const promises=[];files.forEach((fileName=>{if(!fileName.endsWith(".idx")){return}const needsStoragePrefix=this.settings.type!=="data";const hasStoragePrefix=/^\[[a-z]+\]-/.test(fileName);if(!needsStoragePrefix&&!hasStoragePrefix||needsStoragePrefix&&fileName.startsWith(`[${this.settings.type}]-`)){const p=this.indexes.add(fileName);promises.push(p)}}));await Promise.all(promises)},add:async fileName=>{const existingIndex=this._indexes.find((index=>index.fileName===fileName));if(existingIndex){return existingIndex}try{const index=await data_index_1.DataIndex.readFromFile(this,fileName);this._indexes.push(index);return index}catch(err){this.debug.error(err);return null}},delete:async fileName=>{const index=await this.indexes.remove(fileName);await index.delete();this.ipc.sendNotification({type:"index.deleted",fileName:index.fileName,path:index.path,keys:index.key})},remove:async fileName=>{const index=this._indexes.find((index=>index.fileName===fileName));if(!index){throw new Error(`Index ${fileName} not found`)}this._indexes.splice(this._indexes.indexOf(index),1);return index},close:async()=>{const promises=this.indexes.list().map((index=>index.close().catch((err=>this.debug.error(err)))));await Promise.all(promises)}};this._eventSubscriptions={};this.subscriptions={add:(path,type,callback)=>{if(SUPPORTED_EVENTS.indexOf(type)<0){throw new TypeError(`Invalid event type "${type}"`)}let pathSubs=this._eventSubscriptions[path];if(!pathSubs){pathSubs=this._eventSubscriptions[path]=[]}pathSubs.push({created:Date.now(),type:type,callback:callback});this.emit("subscribe",{path:path,event:type,callback:callback})},remove:(path,type,callback)=>{const pathSubs=this._eventSubscriptions[path];if(!pathSubs){return}const next=()=>pathSubs.findIndex((ps=>(type?ps.type===type:true)&&(callback?ps.callback===callback:true)));let i;while((i=next())>=0){pathSubs.splice(i,1)}this.emit("unsubscribe",{path:path,event:type,callback:callback})},hasValueSubscribersForPath(path){const valueNeeded=this.getValueSubscribersForPath(path);return!!valueNeeded},getValueSubscribersForPath:path=>{const pathInfo=new acebase_core_1.PathInfo(path);const valueSubscribers=[];Object.keys(this._eventSubscriptions).forEach((subscriptionPath=>{if(pathInfo.equals(subscriptionPath)||pathInfo.isDescendantOf(subscriptionPath)){const pathSubs=this._eventSubscriptions[subscriptionPath];const eventPath=acebase_core_1.PathInfo.fillVariables(subscriptionPath,path);pathSubs.filter((sub=>!sub.type.startsWith("notify_"))).forEach((sub=>{let dataPath=null;if(sub.type==="value"){dataPath=eventPath}else if(["mutated","mutations"].includes(sub.type)&&pathInfo.isDescendantOf(eventPath)){dataPath=path}else if(sub.type==="child_changed"&&path!==eventPath){const childKey=acebase_core_1.PathInfo.getPathKeys(path.slice(eventPath.length).replace(/^\//,""))[0];dataPath=acebase_core_1.PathInfo.getChildPath(eventPath,childKey)}else if(["child_added","child_removed"].includes(sub.type)&&pathInfo.isChildOf(eventPath)){const childKey=acebase_core_1.PathInfo.getPathKeys(path.slice(eventPath.length).replace(/^\//,""))[0];dataPath=acebase_core_1.PathInfo.getChildPath(eventPath,childKey)}if(dataPath!==null&&!valueSubscribers.some((s=>s.type===sub.type&&s.eventPath===eventPath))){valueSubscribers.push({type:sub.type,eventPath:eventPath,dataPath:dataPath,subscriptionPath:subscriptionPath})}}))}}));return valueSubscribers},getAllSubscribersForPath:path=>{const pathInfo=acebase_core_1.PathInfo.get(path);const subscribers=[];Object.keys(this._eventSubscriptions).forEach((subscriptionPath=>{if(pathInfo.isOnTrailOf(subscriptionPath)){const pathSubs=this._eventSubscriptions[subscriptionPath];const eventPath=acebase_core_1.PathInfo.fillVariables(subscriptionPath,path);pathSubs.forEach((sub=>{let dataPath=null;if(sub.type==="value"||sub.type==="notify_value"){dataPath=eventPath}else if(["child_changed","notify_child_changed"].includes(sub.type)){const childKey=path===eventPath||pathInfo.isAncestorOf(eventPath)?"*":acebase_core_1.PathInfo.getPathKeys(path.slice(eventPath.length).replace(/^\//,""))[0];dataPath=acebase_core_1.PathInfo.getChildPath(eventPath,childKey)}else if(["mutated","mutations","notify_mutated","notify_mutations"].includes(sub.type)){dataPath=path}else if(["child_added","child_removed","notify_child_added","notify_child_removed"].includes(sub.type)&&(pathInfo.isChildOf(eventPath)||path===eventPath||pathInfo.isAncestorOf(eventPath))){const childKey=path===eventPath||pathInfo.isAncestorOf(eventPath)?"*":acebase_core_1.PathInfo.getPathKeys(path.slice(eventPath.length).replace(/^\//,""))[0];dataPath=acebase_core_1.PathInfo.getChildPath(eventPath,childKey)}if(dataPath!==null&&!subscribers.some((s=>s.type===sub.type&&s.eventPath===eventPath&&s.subscriptionPath===subscriptionPath))){subscribers.push({type:sub.type,eventPath:eventPath,dataPath:dataPath,subscriptionPath:subscriptionPath})}}))}}));return subscribers},trigger:(event,path,dataPath,oldValue,newValue,context)=>{const pathSubscriptions=this._eventSubscriptions[path]||[];pathSubscriptions.filter((sub=>sub.type===event)).forEach((sub=>{sub.callback(null,dataPath,newValue,oldValue,context)}))}};this.debug=new acebase_core_1.DebugLogger(env.logLevel,`[${name}${typeof settings.type==="string"&&settings.type!=="data"?`:${settings.type}`:""}]`);const ipcName=name+(typeof settings.type==="string"?`_${settings.type}`:"");if(settings.ipc==="socket"||settings.ipc instanceof ipc_1.NetIPCServer){const ipcSettings={ipcName:ipcName,server:settings.ipc instanceof ipc_1.NetIPCServer?settings.ipc:null};this.ipc=new ipc_1.IPCSocketPeer(this,ipcSettings)}else if(settings.ipc){if(typeof settings.ipc.port!=="number"){throw new Error("IPC port number must be a number")}if(!["master","worker"].includes(settings.ipc.role)){throw new Error(`IPC client role must be either "master" or "worker", not "${settings.ipc.role}"`)}const ipcSettings=Object.assign({dbname:ipcName},settings.ipc);this.ipc=new ipc_1.RemoteIPCPeer(this,ipcSettings)}else{this.ipc=new ipc_1.IPCPeer(this,ipcName)}this.ipc.once("exit",(code=>{if(this.indexes.supported){this.indexes.close()}}));this.nodeLocker={lock:(path,tid,write,comment)=>this.ipc.lock({path:path,tid:tid,write:write,comment:comment})};this._lastTid=0}async close(){await this.ipc.exit()}get path(){return`${this.settings.path}/${this.name}.acebase`}valueFitsInline(value){if(typeof value==="number"||typeof value==="boolean"||value instanceof Date){return true}else if(typeof value==="string"){if(value.length>this.settings.maxInlineValueSize){return false}const encoded=encodeString(value);return encoded.lengththis.settings.maxInlineValueSize){return false}const encoded=encodeString(value.path);return encoded.length0){hasValueSubscribers=true;const eventPaths=valueSubscribers.map((sub=>({path:sub.dataPath,keys:acebase_core_1.PathInfo.getPathKeys(sub.dataPath)}))).sort(((a,b)=>{if(a.keys.lengthb.keys.length){return 1}return 0}));const first=eventPaths[0];topEventPath=first.path;if(valueSubscribers.filter((sub=>sub.dataPath===topEventPath)).every((sub=>sub.type==="mutated"||sub.type.startsWith("notify_")))){hasValueSubscribers=false}topEventPath=acebase_core_1.PathInfo.fillVariables(topEventPath,path)}const indexes=this.indexes.getAll(path,{childPaths:true,parentPaths:true}).map((index=>({index:index,keys:acebase_core_1.PathInfo.getPathKeys(index.path)}))).sort(((a,b)=>{if(a.keys.lengthb.keys.length){return 1}return 0})).map((obj=>obj.index));const keysFilter=[];if(indexes.length>0){indexes.sort(((a,b)=>{if(typeof a._pathKeys==="undefined"){a._pathKeys=acebase_core_1.PathInfo.getPathKeys(a.path)}if(typeof b._pathKeys==="undefined"){b._pathKeys=acebase_core_1.PathInfo.getPathKeys(b.path)}if(a._pathKeys.lengthb._pathKeys.length){return 1}return 0}));const topIndex=indexes[0];const topIndexPath=topIndex.path===path?path:acebase_core_1.PathInfo.fillVariables(`${topIndex.path}/*`,path);if(topIndexPath.lengthindex.path===topIndex.path)).forEach((index=>{const keys=[index.key].concat(index.includeKeys);keys.forEach((key=>!keysFilter.includes(key)&&keysFilter.push(key)))}))}}return{topEventPath:topEventPath,eventSubscriptions:eventSubscriptions,valueSubscribers:valueSubscribers,hasValueSubscribers:hasValueSubscribers,indexes:indexes,keysFilter:keysFilter}}async _writeNodeWithTracking(path,value,options={merge:false,waitForIndexUpdates:true,suppress_events:false,context:null,impact:null}){options=options||{};if(!options.tid&&!options.transaction){throw new Error("_writeNodeWithTracking MUST be executed with a tid OR transaction!")}options.merge=options.merge===true;const validation=this.validateSchema(path,value,{updates:options.merge});if(!validation.ok){throw new SchemaValidationError(validation.reason)}const tid=options.tid;const transaction=options.transaction;let topEventData=null;const updateImpact=options.impact?options.impact:this.getUpdateImpact(path,options.suppress_events);const{topEventPath:topEventPath,eventSubscriptions:eventSubscriptions,hasValueSubscribers:hasValueSubscribers,indexes:indexes}=updateImpact;let{keysFilter:keysFilter}=updateImpact;const writeNode=()=>{if(typeof options._customWriteFunction==="function"){return options._customWriteFunction()}if(topEventData){const pathKeys=acebase_core_1.PathInfo.getPathKeys(path);const eventPathKeys=acebase_core_1.PathInfo.getPathKeys(topEventPath);const trailKeys=pathKeys.slice(eventPathKeys.length);let currentValue=topEventData;while(trailKeys.length>0&¤tValue!==null){const childKey=trailKeys.shift();currentValue=typeof currentValue==="object"&&childKey in currentValue?currentValue[childKey]:null}options.currentValue=currentValue}return this._writeNode(path,value,options)};const transactionLoggingEnabled=this.settings.transactions&&this.settings.transactions.log===true;if(eventSubscriptions.length===0&&indexes.length===0&&!transactionLoggingEnabled){return writeNode()}if(!hasValueSubscribers&&options.merge===true&&keysFilter.length===0){keysFilter=Object.keys(value);if(topEventPath!==path){const trailPath=path.slice(topEventPath.length);keysFilter=keysFilter.map((key=>`${trailPath}/${key}`))}}const eventNodeInfo=await this.getNodeInfo(topEventPath,{transaction:transaction,tid:tid});let currentValue=null;if(eventNodeInfo.exists){const valueOptions={transaction:transaction,tid:tid};if(keysFilter.length>0){valueOptions.include=keysFilter}if(topEventPath===""&&typeof valueOptions.include==="undefined"){this.debug.warn('WARNING: One or more value event listeners on the root node are causing the entire database value to be read to facilitate change tracking. Using "value", "notify_value", "child_changed" and "notify_child_changed" events on the root node are a bad practice because of the significant performance impact. Use "mutated" or "mutations" events instead')}const node=await this.getNode(topEventPath,valueOptions);currentValue=node.value}topEventData=currentValue;const result=await writeNode()||{};let newTopEventData,modifiedData;if(path===topEventPath){if(options.merge){if(topEventData===null){newTopEventData=value instanceof Array?[]:{}}else{newTopEventData=topEventData instanceof Array?[]:{};Object.keys(topEventData).forEach((key=>{newTopEventData[key]=topEventData[key]}))}}else{newTopEventData=value}modifiedData=newTopEventData}else{const trailPath=path.slice(topEventPath.length).replace(/^\//,"");const trailKeys=acebase_core_1.PathInfo.getPathKeys(trailPath);if(topEventData===null){newTopEventData=typeof trailKeys[0]==="number"?[]:{}}else{newTopEventData=topEventData instanceof Array?[]:{};Object.keys(topEventData).forEach((key=>{newTopEventData[key]=topEventData[key]}))}modifiedData=newTopEventData;while(trailKeys.length>0){const childKey=trailKeys.shift();if(!options.merge&&trailKeys.length===0){modifiedData[childKey]=value}else{const original=modifiedData[childKey];const shallowCopy=typeof childKey==="number"?[...original]:Object.assign({},original);modifiedData[childKey]=shallowCopy}modifiedData=modifiedData[childKey]}}if(options.merge){Object.keys(value).forEach((key=>{modifiedData[key]=value[key]}))}const dataChanges=compareValues(topEventData,newTopEventData);if(dataChanges==="identical"){result.mutations=[];return result}function removeNulls(obj){if(obj===null||typeof obj!=="object"){return obj}Object.keys(obj).forEach((prop=>{const val=obj[prop];if(val===null){delete obj[prop];if(obj instanceof Array){obj.length--}}if(typeof val==="object"){removeNulls(val)}}))}removeNulls(newTopEventData);const indexUpdates=[];indexes.map((index=>({index:index,keys:acebase_core_1.PathInfo.getPathKeys(index.path)}))).sort(((a,b)=>{if(a.keys.lengthb.keys.length){return-1}return 0})).forEach((({index:index})=>{const pathKeys=acebase_core_1.PathInfo.getPathKeys(topEventPath);const indexPathKeys=acebase_core_1.PathInfo.getPathKeys(index.path+"/*");const trailKeys=indexPathKeys.slice(pathKeys.length);const oldValue=topEventData;const newValue=newTopEventData;if(trailKeys.length===0){(0,assert_1.assert)(pathKeys.length===indexPathKeys.length,"check logic");const p=this.ipc.isMaster?index.handleRecordUpdate(topEventPath,oldValue,newValue):this.ipc.sendRequest({type:"index.update",fileName:index.fileName,path:topEventPath,oldValue:oldValue,newValue:newValue});indexUpdates.push(p);return}const getAllIndexUpdates=(path,oldValue,newValue)=>{if(oldValue===null&&newValue===null){return[]}const pathKeys=acebase_core_1.PathInfo.getPathKeys(path);const indexPathKeys=acebase_core_1.PathInfo.getPathKeys(index.path+"/*");const trailKeys=indexPathKeys.slice(pathKeys.length);if(trailKeys.length===0){(0,assert_1.assert)(pathKeys.length===indexPathKeys.length,"check logic");return[{path:path,oldValue:oldValue,newValue:newValue}]}let results=[];let trailPath="";while(trailKeys.length>0){const subKey=trailKeys.shift();if(typeof subKey==="string"&&(subKey==="*"||subKey.startsWith("$"))){const allKeys=oldValue===null?[]:Object.keys(oldValue);newValue!==null&&Object.keys(newValue).forEach((key=>{if(allKeys.indexOf(key)<0){allKeys.push(key)}}));allKeys.forEach((key=>{const childPath=acebase_core_1.PathInfo.getChildPath(trailPath,key);const childValues=getChildValues(key,oldValue,newValue);const subTrailPath=acebase_core_1.PathInfo.getChildPath(path,childPath);const childResults=getAllIndexUpdates(subTrailPath,childValues.oldValue,childValues.newValue);results=results.concat(childResults)}));break}else{const values=getChildValues(subKey,oldValue,newValue);oldValue=values.oldValue;newValue=values.newValue;if(oldValue===null&&newValue===null){break}trailPath=acebase_core_1.PathInfo.getChildPath(trailPath,subKey)}}return results};const results=getAllIndexUpdates(topEventPath,oldValue,newValue);results.forEach((result=>{const p=this.ipc.isMaster?index.handleRecordUpdate(result.path,result.oldValue,result.newValue):this.ipc.sendRequest({type:"index.update",fileName:index.fileName,path:result.path,oldValue:result.oldValue,newValue:result.newValue});indexUpdates.push(p)}))}));const callSubscriberWithValues=(sub,oldValue,newValue,variables=[])=>{let trigger=true;let type=sub.type;if(type.startsWith("notify_")){type=type.slice("notify_".length)}if(type==="mutated"){return}else if(type==="child_changed"&&(oldValue===null||newValue===null)){trigger=false}else if(type==="value"||type==="child_changed"){const changes=compareValues(oldValue,newValue);trigger=changes!=="identical"}else if(type==="child_added"){trigger=oldValue===null&&newValue!==null}else if(type==="child_removed"){trigger=oldValue!==null&&newValue===null}const pathKeys=acebase_core_1.PathInfo.getPathKeys(sub.dataPath);variables.forEach((variable=>{const index=pathKeys.indexOf(variable.name);(0,assert_1.assert)(index>=0,`Variable "${variable.name}" not found in subscription dataPath "${sub.dataPath}"`);pathKeys[index]=variable.value}));const dataPath=pathKeys.reduce(((path,key)=>acebase_core_1.PathInfo.getChildPath(path,key)),"");trigger&&this.subscriptions.trigger(sub.type,sub.subscriptionPath,dataPath,oldValue,newValue,options.context)};const prepareMutationEvents=(currentPath,oldValue,newValue,compareResult)=>{const batch=[];const result=compareResult||compareValues(oldValue,newValue);if(result==="identical"){return batch}else if(typeof result==="string"){batch.push({path:currentPath,oldValue:oldValue,newValue:newValue})}else{result.changed.forEach((info=>{const childPath=acebase_core_1.PathInfo.getChildPath(currentPath,info.key);const childValues=getChildValues(info.key,oldValue,newValue);const childBatch=prepareMutationEvents(childPath,childValues.oldValue,childValues.newValue,info.change);batch.push(...childBatch)}));result.added.forEach((key=>{const childPath=acebase_core_1.PathInfo.getChildPath(currentPath,key);batch.push({path:childPath,oldValue:null,newValue:newValue[key]})}));if(oldValue instanceof Array&&newValue instanceof Array){result.removed.sort(((a,b)=>a{const childPath=acebase_core_1.PathInfo.getChildPath(currentPath,key);batch.push({path:childPath,oldValue:oldValue[key],newValue:null})}))}return batch};if(transactionLoggingEnabled&&this.settings.type!=="transaction"){result.mutations=(()=>{const trailPath=path.slice(topEventPath.length).replace(/^\//,"");const trailKeys=acebase_core_1.PathInfo.getPathKeys(trailPath);let oldValue=topEventData,newValue=newTopEventData;while(trailKeys.length>0){const key=trailKeys.shift();({oldValue:oldValue,newValue:newValue}=getChildValues(key,oldValue,newValue))}const compareResults=compareValues(oldValue,newValue);const batch=prepareMutationEvents(path,oldValue,newValue,compareResults);const mutations=batch.map((m=>({target:acebase_core_1.PathInfo.getPathKeys(m.path.slice(path.length)),prev:m.oldValue,val:m.newValue})));return mutations})()}const triggerAllEvents=()=>{eventSubscriptions.filter((sub=>!["mutated","mutations","notify_mutated","notify_mutations"].includes(sub.type))).map((sub=>{const keys=acebase_core_1.PathInfo.getPathKeys(sub.dataPath);return{sub:sub,keys:keys}})).sort(((a,b)=>{if(a.keys.lengthb.keys.length){return-1}return 0})).forEach((({sub:sub})=>{const process=(currentPath,oldValue,newValue,variables=[])=>{const trailPath=sub.dataPath.slice(currentPath.length).replace(/^\//,"");const trailKeys=acebase_core_1.PathInfo.getPathKeys(trailPath);while(trailKeys.length>0){const subKey=trailKeys.shift();if(typeof subKey==="string"&&(subKey==="*"||subKey[0]==="$")){const allKeys=oldValue===null?[]:Object.keys(oldValue).map((key=>oldValue instanceof Array?parseInt(key):key));newValue!==null&&Object.keys(newValue).forEach((key=>{const keyOrIndex=newValue instanceof Array?parseInt(key):key;!allKeys.includes(keyOrIndex)&&allKeys.push(key)}));allKeys.forEach((key=>{const childValues=getChildValues(key,oldValue,newValue);const vars=variables.concat({name:subKey,value:key});if(trailKeys.length===0){callSubscriberWithValues(sub,childValues.oldValue,childValues.newValue,vars)}else{process(acebase_core_1.PathInfo.getChildPath(currentPath,subKey),childValues.oldValue,childValues.newValue,vars)}}));return}else{currentPath=acebase_core_1.PathInfo.getChildPath(currentPath,subKey);const childValues=getChildValues(subKey,oldValue,newValue);oldValue=childValues.oldValue;newValue=childValues.newValue}}callSubscriberWithValues(sub,oldValue,newValue,variables)};if(sub.type.startsWith("notify_")&&acebase_core_1.PathInfo.get(sub.eventPath).isAncestorOf(topEventPath)){const isOnParentPath=acebase_core_1.PathInfo.get(sub.eventPath).isParentOf(topEventPath);const trigger=sub.type==="notify_value"||sub.type==="notify_child_changed"&&(!isOnParentPath||!["added","removed"].includes(dataChanges))||sub.type==="notify_child_removed"&&dataChanges==="removed"&&isOnParentPath||sub.type==="notify_child_added"&&dataChanges==="added"&&isOnParentPath;trigger&&this.subscriptions.trigger(sub.type,sub.subscriptionPath,sub.dataPath,null,null,options.context)}else{process(topEventPath,topEventData,newTopEventData)}}));const mutationEvents=eventSubscriptions.filter((sub=>["mutated","mutations","notify_mutated","notify_mutations"].includes(sub.type)));mutationEvents.forEach((sub=>{let currentPath=topEventPath;const trailPath=sub.eventPath.slice(currentPath.length).replace(/^\//,"");const trailKeys=acebase_core_1.PathInfo.getPathKeys(trailPath);let oldValue=topEventData,newValue=newTopEventData;while(trailKeys.length>0){const subKey=trailKeys.shift();currentPath=acebase_core_1.PathInfo.getChildPath(currentPath,subKey);const childValues=getChildValues(subKey,oldValue,newValue);oldValue=childValues.oldValue;newValue=childValues.newValue}const batch=prepareMutationEvents(currentPath,oldValue,newValue);if(batch.length===0){return}const isNotifyEvent=sub.type.startsWith("notify_");if(["mutated","notify_mutated"].includes(sub.type)){batch.forEach(((mutation,index)=>{const context=options.context;const prevVal=isNotifyEvent?null:mutation.oldValue;const newVal=isNotifyEvent?null:mutation.newValue;this.subscriptions.trigger(sub.type,sub.subscriptionPath,mutation.path,prevVal,newVal,context)}))}else if(["mutations","notify_mutations"].includes(sub.type)){const values=isNotifyEvent?null:batch.map((m=>({target:acebase_core_1.PathInfo.getPathKeys(m.path.slice(sub.subscriptionPath.length)),prev:m.oldValue,val:m.newValue})));this.subscriptions.trigger(sub.type,sub.subscriptionPath,sub.subscriptionPath,null,values,options.context)}}))};if(options.waitForIndexUpdates===false){indexUpdates.splice(0)}await Promise.all(indexUpdates);defer(triggerAllEvents);return result}getChildren(path,options){throw new Error("This method must be implemented by subclass")}async getNodeValue(path,options={}){const node=await this.getNode(path,options);return node.value}getNode(path,options){throw new Error("This method must be implemented by subclass")}getNodeInfo(path,options){throw new Error("This method must be implemented by subclass")}setNode(path,value,options){throw new Error("This method must be implemented by subclass")}updateNode(path,updates,options){throw new Error("This method must be implemented by subclass")}async transactNode(path,callback,options={no_lock:false,suppress_events:false,context:null}){const useFakeLock=options&&options.no_lock===true;const tid=this.createTid();const lock=useFakeLock?{tid:tid,release:NOOP}:await this.nodeLocker.lock(path,tid,true,"transactNode");try{let changed=false;const changeCallback=()=>{changed=true};if(useFakeLock){this.subscriptions.add(path,"notify_value",changeCallback)}const node=await this.getNode(path,{tid:tid});const checkRevision=node.revision;let newValue;try{newValue=callback(node.value);if(newValue instanceof Promise){newValue=await newValue.catch((err=>{this.debug.error(`Error in transaction callback: ${err.message}`)}))}}catch(err){this.debug.error(`Error in transaction callback: ${err.message}`)}if(typeof newValue==="undefined"){return}if(useFakeLock){this.subscriptions.remove(path,"notify_value",changeCallback)}if(changed){throw new node_errors_1.NodeRevisionError("Node changed")}const cursor=await this.setNode(path,newValue,{assert_revision:checkRevision,tid:lock.tid,suppress_events:options.suppress_events,context:options.context});return cursor}catch(err){if(err instanceof node_errors_1.NodeRevisionError){console.warn(`node value changed, running again. Error: ${err.message}`);return this.transactNode(path,callback,options)}else{throw err}}finally{lock.release()}}async matchNode(path,criteria,options){var _a;const tid=(_a=options===null||options===void 0?void 0:options.tid)!==null&&_a!==void 0?_a:acebase_core_1.ID.generate();const checkNode=async(path,criteria)=>{if(criteria.length===0){return Promise.resolve(true)}const criteriaKeys=criteria.reduce(((keys,cr)=>{let key=cr.key;if(typeof key==="string"&&key.includes("/")){key=key.slice(0,key.indexOf("/"))}if(keys.indexOf(key)<0){keys.push(key)}return keys}),[]);const unseenKeys=criteriaKeys.slice();let isMatch=true;const delayedMatchPromises=[];try{await this.getChildren(path,{tid:tid,keyFilter:criteriaKeys}).next((childInfo=>{var _a;const keyOrIndex=(_a=childInfo.key)!==null&&_a!==void 0?_a:childInfo.index;unseenKeys.includes(keyOrIndex)&&unseenKeys.splice(unseenKeys.indexOf(childInfo.key),1);const keyCriteria=criteria.filter((cr=>cr.key===keyOrIndex)).map((cr=>({op:cr.op,compare:cr.compare})));const keyResult=keyCriteria.length>0?checkChild(childInfo,keyCriteria):{isMatch:true,promises:[]};isMatch=keyResult.isMatch;if(isMatch){delayedMatchPromises.push(...keyResult.promises);const childCriteria=criteria.filter((cr=>typeof cr.key==="string"&&cr.key.startsWith(`${typeof keyOrIndex==="number"?`[${keyOrIndex}]`:keyOrIndex}/`))).map((cr=>{const key=cr.key.slice(cr.key.indexOf("/")+1);return{key:key,op:cr.op,compare:cr.compare}}));if(childCriteria.length>0){const childPath=acebase_core_1.PathInfo.getChildPath(path,childInfo.key);const childPromise=checkNode(childPath,childCriteria).then((isMatch=>({isMatch:isMatch})));delayedMatchPromises.push(childPromise)}}if(!isMatch||unseenKeys.length===0){return false}}));if(isMatch){const results=await Promise.all(delayedMatchPromises);isMatch=results.every((res=>res.isMatch))}if(!isMatch){return false}isMatch=unseenKeys.every((keyOrIndex=>{const childInfo=new node_info_1.NodeInfo(Object.assign(Object.assign(Object.assign({},typeof keyOrIndex==="number"&&{index:keyOrIndex}),typeof keyOrIndex==="string"&&{key:keyOrIndex}),{exists:false}));const childCriteria=criteria.filter((cr=>typeof cr.key==="string"&&cr.key.startsWith(`${typeof keyOrIndex==="number"?`[${keyOrIndex}]`:keyOrIndex}/`))).map((cr=>({op:cr.op,compare:cr.compare})));if(childCriteria.length>0&&!checkChild(childInfo,childCriteria).isMatch){return false}const keyCriteria=criteria.filter((cr=>cr.key===keyOrIndex)).map((cr=>({op:cr.op,compare:cr.compare})));if(keyCriteria.length===0){return true}const result=checkChild(childInfo,keyCriteria);return result.isMatch}));return isMatch}catch(err){this.debug.error(`Error matching on "${path}": `,err);throw err}};const checkChild=(child,criteria)=>{const promises=[];const isMatch=criteria.every((f=>{let proceed=true;if(f.op==="!exists"||f.op==="=="&&(typeof f.compare==="undefined"||f.compare===null)){proceed=!child.exists}else if(f.op==="exists"||f.op==="!="&&(typeof f.compare==="undefined"||f.compare===null)){proceed=child.exists}else if((f.op==="contains"||f.op==="!contains")&&f.compare instanceof Array&&f.compare.length===0){proceed=true}else if(!child.exists){proceed=false}else{if(child.address){if(child.valueType===node_value_types_1.VALUE_TYPES.OBJECT&&["has","!has"].indexOf(f.op)>=0){const op=f.op==="has"?"exists":"!exists";const p=checkNode(child.path,[{key:f.compare,op:op}]).then((isMatch=>({key:child.key,isMatch:isMatch})));promises.push(p);proceed=true}else if(child.valueType===node_value_types_1.VALUE_TYPES.ARRAY&&["contains","!contains"].indexOf(f.op)>=0){const p=this.getNode(child.path,{tid:tid}).then((({value:arr})=>{const isMatch=f.op==="contains"?f.compare instanceof Array?f.compare.every((val=>arr.includes(val))):arr.includes(f.compare):f.compare instanceof Array?!f.compare.some((val=>arr.includes(val))):!arr.includes(f.compare);return{key:child.key,isMatch:isMatch}}));promises.push(p);proceed=true}else if(child.valueType===node_value_types_1.VALUE_TYPES.STRING){const p=this.getNode(child.path,{tid:tid}).then((node=>({key:child.key,isMatch:this.test(node.value,f.op,f.compare)})));promises.push(p);proceed=true}else{proceed=false}}else if(child.type===node_value_types_1.VALUE_TYPES.OBJECT&&["has","!has"].indexOf(f.op)>=0){const has=f.compare in child.value;proceed=has&&f.op==="has"||!has&&f.op==="!has"}else if(child.type===node_value_types_1.VALUE_TYPES.ARRAY&&["contains","!contains"].indexOf(f.op)>=0){const contains=child.value.indexOf(f.compare)>=0;proceed=contains&&f.op==="contains"||!contains&&f.op==="!contains"}else{let ret=this.test(child.value,f.op,f.compare);if(ret instanceof Promise){promises.push(ret);ret=true}proceed=ret}}return proceed}));return{isMatch:isMatch,promises:promises}};return checkNode(path,criteria)}test(val,op,compare){if(op==="<"){return val"){return val>compare}if(op===">="){return val>=compare}if(op==="in"){return compare.indexOf(val)>=0}if(op==="!in"){return compare.indexOf(val)<0}if(op==="like"||op==="!like"){const pattern="^"+compare.replace(/[-[\]{}()+.,\\^$|#\s]/g,"\\$&").replace(/\?/g,".").replace(/\*/g,".*?")+"$";const re=new RegExp(pattern,"i");const isMatch=re.test(val.toString());return op==="like"?isMatch:!isMatch}if(op==="matches"){return compare.test(val.toString())}if(op==="!matches"){return!compare.test(val.toString())}if(op==="between"){return val>=compare[0]&&val<=compare[1]}if(op==="!between"){return valcompare[1]}if(op==="has"||op==="!has"){const has=typeof val==="object"&&compare in val;return op==="has"?has:!has}if(op==="contains"||op==="!contains"){const includes=typeof val==="object"&&val instanceof Array&&val.includes(compare);return op==="contains"?includes:!includes}return false}async exportNode(path,writeFn,options={format:"json",type_safe:true}){if((options===null||options===void 0?void 0:options.format)!=="json"){throw new Error("Only json output is currently supported")}const write=typeof writeFn!=="function"?writeFn.write.bind(writeFn):writeFn;const stringifyValue=(type,val)=>{const escape=str=>str.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/[\u0000-\u001f]/g,(ch=>`\\u${ch.charCodeAt(0).toString(16).padStart(4,"0")}`));if(type===node_value_types_1.VALUE_TYPES.DATETIME){val=`"${val.toISOString()}"`;if(options.type_safe){val=`{".type":"date",".val":${val}}`}}else if(type===node_value_types_1.VALUE_TYPES.STRING){val=`"${escape(val)}"`}else if(type===node_value_types_1.VALUE_TYPES.ARRAY){val="[]"}else if(type===node_value_types_1.VALUE_TYPES.OBJECT){val="{}"}else if(type===node_value_types_1.VALUE_TYPES.BINARY){val=`"${escape(acebase_core_1.ascii85.encode(val))}"`;if(options.type_safe){val=`{".type":"binary",".val":${val}}`}}else if(type===node_value_types_1.VALUE_TYPES.REFERENCE){val=`"${val.path}"`;if(options.type_safe){val=`{".type":"reference",".val":${val}}`}}else if(type===node_value_types_1.VALUE_TYPES.BIGINT){val=`"${val}"`;if(options.type_safe){val=`{".type":"bigint",".val":${val}}`}}return val};let objStart="",objEnd="";const nodeInfo=await this.getNodeInfo(path);if(!nodeInfo.exists){return write("null")}else if(nodeInfo.type===node_value_types_1.VALUE_TYPES.OBJECT){objStart="{";objEnd="}"}else if(nodeInfo.type===node_value_types_1.VALUE_TYPES.ARRAY){objStart="[";objEnd="]"}else{const node=await this.getNode(path);const val=stringifyValue(nodeInfo.type,node.value);return write(val)}if(objStart){const p=write(objStart);if(p instanceof Promise){await p}}let output="",outputCount=0;const pending=[];await this.getChildren(path).next((childInfo=>{if(childInfo.address){pending.push(childInfo)}else{if(outputCount++>0){output+=","}if(typeof childInfo.key==="string"){output+=`"${childInfo.key}":`}output+=stringifyValue(childInfo.type,childInfo.value)}}));if(output){const p=write(output);if(p instanceof Promise){await p}}while(pending.length>0){const childInfo=pending.shift();let output=outputCount++>0?",":"";const key=typeof childInfo.index==="number"?childInfo.index:childInfo.key;if(typeof key==="string"){output+=`"${key}":`}if(output){const p=write(output);if(p instanceof Promise){await p}}await this.exportNode(acebase_core_1.PathInfo.getChildPath(path,key),write,options)}if(objEnd){const p=write(objEnd);if(p instanceof Promise){await p}}}async importNode(path,read,options={format:"json",method:"set"}){const chunkSize=256*1024;const maxQueueBytes=1024*1024;const state={data:"",index:0,offset:0,queue:[],queueStartByte:0,timesFlushed:0,get processedBytes(){return this.offset+this.index}};const readNextChunk=async(append=false)=>{let data=await read(chunkSize);if(data===null){if(state.data){throw new Error(`Unexpected EOF at index ${state.offset+state.data.length}`)}else{throw new Error("Unable to read data from stream")}}else if(typeof data==="object"){data=acebase_core_1.Utils.decodeString(data)}if(append){state.data+=data}else{state.offset+=state.data.length;state.data=data;state.index=0}};const readBytes=async length=>{let str="";if(state.index+length>=state.data.length){str=state.data.slice(state.index);length-=str.length;await readNextChunk()}str+=state.data.slice(state.index,state.index+length);state.index+=length;return str};const assertBytes=async length=>{if(state.index+length>state.data.length){await readNextChunk(true)}if(state.index+length>state.data.length){throw new Error("Not enough data available from stream")}};const consumeToken=async token=>{const str=await readBytes(token.length);if(str!==token){throw new Error(`Unexpected character "${str[0]}" at index ${state.offset+state.index}, expected "${token}"`)}};const consumeSpaces=async()=>{const spaces=[" ","\t","\r","\n"];while(true){if(state.index>=state.data.length){await readNextChunk()}if(spaces.includes(state.data[state.index])){state.index++}else{break}}};const peekBytes=async length=>{await assertBytes(length);const index=state.index;return state.data.slice(index,index+length)};const peekValueType=async()=>{await consumeSpaces();const ch=await peekBytes(1);switch(ch){case'"':return"string";case"{":return"object";case"[":return"array";case"n":return"null";case"u":return"undefined";case"t":case"f":return"boolean";default:{if(ch==="-"||ch>="0"&&ch<="9"){return"number"}throw new Error(`Unknown value at index ${state.offset+state.index}`)}}};const readString=async()=>{await consumeToken('"');let str="";let i=state.index;while(state.data[i]!=='"'||state.data[i-1]==="\\"){i++;if(i>=state.data.length){str+=state.data.slice(state.index);await readNextChunk();i=0}}str+=state.data.slice(state.index,i);state.index=i+1;return unescape(str)};const readBoolean=async()=>{if(state.data[state.index]==="t"){await consumeToken("true")}else if(state.data[state.index]==="f"){await consumeToken("false")}throw new Error(`Expected true or false at index ${state.offset+state.index}`)};const readNumber=async()=>{let str="";let i=state.index;const nrChars=["-","0","1","2","3","4","5","6","7","8","9",".","e","b","f","x","o","n"];while(nrChars.includes(state.data[i])){i++;if(i>=state.data.length){str+=state.data.slice(state.index);await readNextChunk();i=0}}str+=state.data.slice(state.index,i);state.index=i;const nr=str.endsWith("n")?BigInt(str.slice(0,-1)):str.includes(".")?parseFloat(str):parseInt(str);return nr};const readValue=async()=>{await consumeSpaces();const type=await peekValueType();const value=await(()=>{switch(type){case"string":return readString();case"object":return{};case"array":return[];case"number":return readNumber();case"null":return null;case"undefined":return undefined;case"boolean":return readBoolean()}})();return{type:type,value:value}};const unescape=str=>str.replace(/\\n/g,"\n").replace(/\\"/g,'"');const getTypeSafeValue=(path,obj)=>{const type=obj[".type"];let val=obj[".val"];switch(type){case"Date":case"date":{val=new Date(val);break}case"Buffer":case"binary":{val=unescape(val);if(val.startsWith("<~")){val=acebase_core_1.ascii85.decode(val)}else{throw new Error(`Import error: Unexpected encoding for value for value at path "/${path}"`)}break}case"PathReference":case"reference":{val=new acebase_core_1.PathReference(val);break}case"bigint":{val=BigInt(val);break}default:throw new Error(`Import error: Unsupported type "${type}" for value at path "/${path}"`)}return val};const context={acebase_import_id:acebase_core_1.ID.generate()};const childOptions={suppress_events:options.suppress_events,context:context};const enqueue=async(target,value)=>{state.queue.push({target:target,value:value});if(state.processedBytes>=state.queueStartByte+maxQueueBytes){const operations=state.queue.reduce(((updates,item)=>{if(item.target.path===path){updates.push(Object.assign({op:options.method==="set"&&state.timesFlushed===0?"set":"update"},item))}else{const parent=updates.find((other=>other.target.isParentOf(item.target)));if(parent){parent.value[item.target.key]=item.value}else{updates.push(Object.assign({op:options.method==="merge"?"update":"set"},item))}}return updates}),[]);state.queueStartByte=state.processedBytes;state.queue=[];state.timesFlushed++}if(target.path===path){}};const importObject=async target=>{await consumeToken("{");await consumeSpaces();const nextChar=await peekBytes(1);if(nextChar==="}"){state.index++;return this.setNode(target.path,{},childOptions)}let childCount=0;let obj={};let flushedBefore=false;const flushObject=async()=>{let p;if(!flushedBefore){flushedBefore=true;p=this.setNode(target.path,obj,childOptions)}else if(Object.keys(obj).length>0){p=this.updateNode(target.path,obj,childOptions)}obj={};if(p){await p}};const promises=[];while(true){await consumeSpaces();const property=await readString();await consumeSpaces();await consumeToken(":");await consumeSpaces();const{value:value,type:type}=await readValue();obj[property]=value;childCount++;if(["object","array"].includes(type)){promises.push(flushObject());if(type==="object"){await importObject(target.child(property))}else{await importArray(target.child(property))}}await consumeSpaces();const nextChar=await peekBytes(1);if(nextChar==="}"){state.index++;break}await consumeToken(",")}const isTypedValue=childCount===2&&".type"in obj&&".val"in obj;if(isTypedValue){const val=getTypeSafeValue(target.path,obj);return this.setNode(target.path,val,childOptions)}promises.push(flushObject());await Promise.all(promises)};const importArray=async target=>{await consumeToken("[");await consumeSpaces();const nextChar=await peekBytes(1);if(nextChar==="]"){state.index++;return this.setNode(target.path,[],childOptions)}let flushedBefore=false;let arr=[];let updates={};const flushArray=async()=>{let p;if(!flushedBefore){flushedBefore=true;p=this.setNode(target.path,arr,childOptions);arr=null}else if(Object.keys(updates).length>0){p=this.updateNode(target.path,updates,childOptions);updates={}}if(p){await p}};const pushChild=(value,index)=>{if(flushedBefore){updates[index]=value}else{arr.push(value)}};const promises=[];let index=0;while(true){await consumeSpaces();const{value:value,type:type}=await readValue();pushChild(value,index);if(["object","array"].includes(type)){promises.push(flushArray());if(type==="object"){await importObject(target.child(index))}else{await importArray(target.child(index))}}await consumeSpaces();const nextChar=await peekBytes(1);if(nextChar==="]"){state.index++;break}await consumeToken(",");index++}promises.push(flushArray());await Promise.all(promises)};const start=async()=>{const{value:value,type:type}=await readValue();if(["object","array"].includes(type)){const target=acebase_core_1.PathInfo.get(path);if(type==="object"){await importObject(target)}else{await importArray(target)}}else{await this.setNode(path,value,childOptions)}};return start()}setSchema(path,schema){if(typeof schema==="undefined"){throw new TypeError("schema argument must be given")}if(schema===null){const i=this._schemas.findIndex((s=>s.path===path));i>=0&&this._schemas.splice(i,1);return}const definition=new acebase_core_1.SchemaDefinition(schema);const item=this._schemas.find((s=>s.path===path));if(item){item.schema=definition}else{this._schemas.push({path:path,schema:definition});this._schemas.sort(((a,b)=>{const ka=acebase_core_1.PathInfo.getPathKeys(a.path),kb=acebase_core_1.PathInfo.getPathKeys(b.path);if(ka.length===kb.length){return 0}return ka.lengthitem.path===path));return item?{path:path,schema:item.schema.source,text:item.schema.text}:null}getSchemas(){return this._schemas.map((item=>({path:item.path,schema:item.schema.source,text:item.schema.text})))}validateSchema(path,value,options={updates:false}){let result={ok:true};const pathInfo=acebase_core_1.PathInfo.get(path);this._schemas.filter((s=>pathInfo.isOnTrailOf(s.path))).every((s=>{if(pathInfo.isDescendantOf(s.path)){const ancestorPath=acebase_core_1.PathInfo.fillVariables(s.path,path);const trailKeys=pathInfo.keys.slice(acebase_core_1.PathInfo.getPathKeys(s.path).length);result=s.schema.check(ancestorPath,value,options.updates,trailKeys);return result.ok}const trailKeys=acebase_core_1.PathInfo.getPathKeys(s.path).slice(pathInfo.keys.length);if(options.updates===true&&trailKeys.length>0&&!(trailKeys[0]in value)){return result.ok}const partial=options.updates===true&&trailKeys.length===0;const check=(path,value,trailKeys)=>{if(trailKeys.length===0){return s.schema.check(path,value,partial)}else if(value===null){return{ok:true}}const key=trailKeys[0];if(typeof key==="string"&&(key==="*"||key[0]==="$")){if(value===null||typeof value!=="object"){return{ok:true}}let result;Object.keys(value).every((childKey=>{const childPath=acebase_core_1.PathInfo.getChildPath(path,childKey);const childValue=value[childKey];result=check(childPath,childValue,trailKeys.slice(1));return result.ok}));return result}else{const childPath=acebase_core_1.PathInfo.getChildPath(path,key);const childValue=value[key];return check(childPath,childValue,trailKeys.slice(1))}};result=check(path,value,trailKeys);return result.ok}));return result}}exports.Storage=Storage},{"../assert":4,"../data-index":7,"../ipc":8,"../node-errors":11,"../node-info":12,"../node-value-types":14,"../promise-fs":16,"./indexes":29,"acebase-core":43}],29:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createIndex=void 0;var create_index_1=require("./create-index");Object.defineProperty(exports,"createIndex",{enumerable:true,get:function(){return create_index_1.createIndex}})},{"./create-index":19}],30:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.MSSQLStorage=exports.MSSQLStorageSettings=void 0;const not_supported_1=require("../../not-supported");class MSSQLStorageSettings extends not_supported_1.NotSupported{}exports.MSSQLStorageSettings=MSSQLStorageSettings;class MSSQLStorage extends not_supported_1.NotSupported{}exports.MSSQLStorage=MSSQLStorage},{"../../not-supported":15}],31:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SQLiteStorage=exports.SQLiteStorageSettings=void 0;const not_supported_1=require("../../not-supported");class SQLiteStorageSettings extends not_supported_1.NotSupported{}exports.SQLiteStorageSettings=SQLiteStorageSettings;class SQLiteStorage extends not_supported_1.NotSupported{}exports.SQLiteStorage=SQLiteStorage},{"../../not-supported":15}],32:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AceBaseBase=exports.AceBaseBaseSettings=void 0;const simple_event_emitter_1=require("./simple-event-emitter");const data_reference_1=require("./data-reference");const type_mappings_1=require("./type-mappings");const optional_observable_1=require("./optional-observable");const debug_1=require("./debug");const simple_colors_1=require("./simple-colors");class AceBaseBaseSettings{constructor(options){this.logLevel="log";this.logColors=true;this.info="realtime database";this.sponsor=false;if(typeof options!=="object"){options={}}if(typeof options.logLevel==="string"){this.logLevel=options.logLevel}if(typeof options.logColors==="boolean"){this.logColors=options.logColors}if(typeof options.info==="string"){this.info=options.info}if(typeof options.sponsor==="boolean"){this.sponsor=options.sponsor}}}exports.AceBaseBaseSettings=AceBaseBaseSettings;class AceBaseBase extends simple_event_emitter_1.SimpleEventEmitter{constructor(dbname,options={}){super();this._ready=false;options=new AceBaseBaseSettings(options);this.name=dbname;this.debug=new debug_1.DebugLogger(options.logLevel,`[${dbname}]`);(0,simple_colors_1.SetColorsEnabled)(options.logColors);const logoStyle=[simple_colors_1.ColorStyle.magenta,simple_colors_1.ColorStyle.bold];const logo=" ___ ______ "+"\n"+" / _ \\ | ___ \\ "+"\n"+" / /_\\ \\ ___ ___| |_/ / __ _ ___ ___ "+"\n"+" | _ |/ __/ _ \\ ___ \\/ _` / __|/ _ \\"+"\n"+" | | | | (_| __/ |_/ / (_| \\__ \\ __/"+"\n"+" \\_| |_/\\___\\___\\____/ \\__,_|___/\\___|";const info=options.info?"".padStart(40-options.info.length," ")+options.info+"\n":"";if(!options.sponsor){this.debug.write(logo.colorize(logoStyle));info&&this.debug.write(info.colorize(simple_colors_1.ColorStyle.magenta))}this.types=new type_mappings_1.TypeMappings(this);this.once("ready",(()=>{this._ready=true}))}async ready(callback){if(!this._ready){await new Promise((resolve=>this.on("ready",resolve)))}callback===null||callback===void 0?void 0:callback()}get isReady(){return this._ready}setObservable(ObservableImpl){(0,optional_observable_1.setObservable)(ObservableImpl)}ref(path){return new data_reference_1.DataReference(this,path)}get root(){return this.ref("")}query(path){const ref=new data_reference_1.DataReference(this,path);return new data_reference_1.DataReferenceQuery(ref)}get indexes(){return{get:()=>this.api.getIndexes(),create:(path,key,options)=>this.api.createIndex(path,key,options),delete:async filePath=>this.api.deleteIndex(filePath)}}get schema(){return{get:path=>this.api.getSchema(path),set:(path,schema)=>this.api.setSchema(path,schema),all:()=>this.api.getSchemas(),check:(path,value,isUpdate)=>this.api.validateSchema(path,value,isUpdate)}}}exports.AceBaseBase=AceBaseBase},{"./data-reference":39,"./debug":41,"./optional-observable":45,"./simple-colors":52,"./simple-event-emitter":53,"./type-mappings":56}],33:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Api=void 0;const simple_event_emitter_1=require("./simple-event-emitter");class NotImplementedError extends Error{constructor(name){super(`${name} is not implemented`)}}class Api extends simple_event_emitter_1.SimpleEventEmitter{constructor(){super()}stats(options){throw new NotImplementedError("stats")}subscribe(path,event,callback,settings){throw new NotImplementedError("subscribe")}unsubscribe(path,event,callback){throw new NotImplementedError("unsubscribe")}update(path,updates,options){throw new NotImplementedError("update")}set(path,value,options){throw new NotImplementedError("set")}get(path,options){throw new NotImplementedError("get")}transaction(path,callback,options){throw new NotImplementedError("transaction")}exists(path){throw new NotImplementedError("exists")}query(path,query,options){throw new NotImplementedError("query")}reflect(path,type,args){throw new NotImplementedError("reflect")}export(path,write,options){throw new NotImplementedError("export")}import(path,read,options){throw new NotImplementedError("import")}createIndex(path,key,options){throw new NotImplementedError("createIndex")}getIndexes(){throw new NotImplementedError("getIndexes")}deleteIndex(filePath){throw new NotImplementedError("deleteIndex")}setSchema(path,schema){throw new NotImplementedError("setSchema")}getSchema(path){throw new NotImplementedError("getSchema")}getSchemas(){throw new NotImplementedError("getSchemas")}validateSchema(path,value,isUpdate){throw new NotImplementedError("validateSchema")}getMutations(filter){throw new NotImplementedError("getMutations")}getChanges(filter){throw new NotImplementedError("getChanges")}}exports.Api=Api},{"./simple-event-emitter":53}],34:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ascii85=void 0;function c(input,length,result){const b=[0,0,0,0,0];for(let i=0;i";return ret}exports.ascii85={encode:function(arr){if(arr instanceof ArrayBuffer){arr=new Uint8Array(arr,0,arr.byteLength)}return encode(arr)},decode:function(input){if(!input.startsWith("<~")||!input.endsWith("~>")){throw new Error("Invalid input string")}input=input.substr(2,input.length-4);const n=input.length,r=[],b=[0,0,0,0,0];let t,x,y,d;for(let i=0;i>>=8;y=t&255;t>>>=8;r.push(t>>>8,t&255,y,x);for(let j=d;j<5;++j,r.pop()){}i+=4}const data=new Uint8Array(r);return data.buffer.slice(data.byteOffset,data.byteOffset+data.byteLength)}}},{}],35:[function(require,module,exports){"use strict";var _a,_b;Object.defineProperty(exports,"__esModule",{value:true});const pad_1=require("../pad");const env=typeof window==="object"?window:self,globalCount=Object.keys(env).length,mimeTypesLength=(_b=(_a=navigator.mimeTypes)===null||_a===void 0?void 0:_a.length)!==null&&_b!==void 0?_b:0,clientId=(0,pad_1.default)((mimeTypesLength+navigator.userAgent.length).toString(36)+globalCount.toString(36),4);function fingerprint(){return clientId}exports.default=fingerprint},{"../pad":37}],36:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});const fingerprint_1=require("./fingerprint");const pad_1=require("./pad");let c=0;const blockSize=4,base=36,discreteValues=Math.pow(base,blockSize);function randomBlock(){return(0,pad_1.default)((Math.random()*discreteValues<<0).toString(base),blockSize)}function safeCounter(){c=ct2[i]===key))}static isAncestor(ancestor,other){return ancestor.lengthother[i]===key))}static isDescendant(descendant,other){return descendant.length>other.length&&other.every(((key,i)=>descendant[i]===key))}}const isProxy=Symbol("isProxy");class LiveDataProxy{static async create(ref,options){var _a;ref=new data_reference_1.DataReference(ref.db,ref.path);let cache,loaded=false;let latestCursor=options===null||options===void 0?void 0:options.cursor;let proxy;const proxyId=id_1.ID.generate();const clientSubscriptions=[];const clientEventEmitter=new simple_event_emitter_1.SimpleEventEmitter;clientEventEmitter.on("cursor",(cursor=>latestCursor=cursor));clientEventEmitter.on("error",(err=>{console.error(err.message,err.details)}));const applyChange=(keys,newValue)=>{if(keys.length===0){cache=newValue;return true}const allowCreation=false;if(allowCreation){cache=typeof keys[0]==="number"?[]:{}}let target=cache;const trailKeys=keys.slice();while(trailKeys.length>1){const key=trailKeys.shift();if(!(key in target)){if(allowCreation){target[key]=typeof key==="number"?[]:{}}else{return false}}target=target[key]}const prop=trailKeys.shift();if(newValue===null){target instanceof Array?target.splice(prop,1):delete target[prop]}else{target[prop]=newValue}return true};const syncFallback=async()=>{if(!loaded){return}await reload()};const subscription=ref.on("mutations",{syncFallback:syncFallback}).subscribe((async snap=>{var _a;if(!loaded){return}const context=snap.context();const isRemote=((_a=context.acebase_proxy)===null||_a===void 0?void 0:_a.id)!==proxyId;if(!isRemote){return}const mutations=snap.val(false);const proceed=mutations.every((mutation=>{if(!applyChange(mutation.target,mutation.val)){return false}const changeRef=mutation.target.reduce(((ref,key)=>ref.child(key)),ref);const changeSnap=new data_snapshot_1.DataSnapshot(changeRef,mutation.val,false,mutation.prev,snap.context());clientEventEmitter.emit("mutation",{snapshot:changeSnap,isRemote:isRemote});return true}));if(proceed){clientEventEmitter.emit("cursor",context.acebase_cursor);localMutationsEmitter.emit("mutations",{origin:"remote",snap:snap})}else{console.warn(`Cached value of live data proxy on "${ref.path}" appears outdated, will be reloaded`);await reload()}}));let processPromise=Promise.resolve();const mutationQueue=[];const transactions=[];const pushLocalMutations=async()=>{const mutations=[];for(let i=0,m=mutationQueue[0];iRelativeNodeTarget.areEqual(t.target,m.target)||RelativeNodeTarget.isAncestor(t.target,m.target)))){mutationQueue.splice(i,1);i--;mutations.push(m)}}if(mutations.length===0){return}mutations.forEach((mutation=>{mutation.value=(0,utils_1.cloneObject)(getTargetValue(cache,mutation.target))}));process_1.default.nextTick((()=>{const context={acebase_proxy:{id:proxyId,source:"update"}};mutations.forEach((mutation=>{const mutationRef=mutation.target.reduce(((ref,key)=>ref.child(key)),ref);const mutationSnap=new data_snapshot_1.DataSnapshot(mutationRef,mutation.value,false,mutation.previous,context);clientEventEmitter.emit("mutation",{snapshot:mutationSnap,isRemote:false})}));const snap=new data_snapshot_1.MutationsDataSnapshot(ref,mutations.map((m=>({target:m.target,val:m.value,prev:m.previous}))),context);localMutationsEmitter.emit("mutations",{origin:"local",snap:snap})}));processPromise=mutations.reduce(((mutations,m,i,arr)=>{if(!arr.some((other=>RelativeNodeTarget.isAncestor(other.target,m.target)))){mutations.push(m)}return mutations}),[]).reduce(((updates,m)=>{const target=m.target;if(target.length===0){updates.push({ref:ref,target:target,value:cache,type:"set",previous:m.previous})}else{const parentTarget=target.slice(0,-1);const key=target.slice(-1)[0];const parentRef=parentTarget.reduce(((ref,key)=>ref.child(key)),ref);const parentUpdate=updates.find((update=>update.ref.path===parentRef.path));const cacheValue=getTargetValue(cache,target);const prevValue=m.previous;if(parentUpdate){parentUpdate.value[key]=cacheValue;parentUpdate.previous[key]=prevValue}else{updates.push({ref:parentRef,target:parentTarget,value:{[key]:cacheValue},type:"update",previous:{[key]:prevValue}})}}return updates}),[]).reduce((async(promise,update)=>{const context={acebase_proxy:{id:proxyId,source:update.type}};await promise;await update.ref.context(context)[update.type](update.value).catch((err=>{clientEventEmitter.emit("error",{source:"update",message:`Error processing update of "/${ref.path}"`,details:err});const context={acebase_proxy:{id:proxyId,source:"update-rollback"}};const mutations=[];if(update.type==="set"){setTargetValue(cache,update.target,update.previous);const mutationSnap=new data_snapshot_1.DataSnapshot(update.ref,update.previous,false,update.value,context);clientEventEmitter.emit("mutation",{snapshot:mutationSnap,isRemote:false});mutations.push({target:update.target,val:update.previous,prev:update.value})}else{Object.keys(update.previous).forEach((key=>{setTargetValue(cache,update.target.concat(key),update.previous[key]);const mutationSnap=new data_snapshot_1.DataSnapshot(update.ref.child(key),update.previous[key],false,update.value[key],context);clientEventEmitter.emit("mutation",{snapshot:mutationSnap,isRemote:false});mutations.push({target:update.target.concat(key),val:update.previous[key],prev:update.value[key]})}))}mutations.forEach((m=>{const mutationRef=m.target.reduce(((ref,key)=>ref.child(key)),ref);const mutationSnap=new data_snapshot_1.DataSnapshot(mutationRef,m.val,false,m.prev,context);clientEventEmitter.emit("mutation",{snapshot:mutationSnap,isRemote:false})}));const snap=new data_snapshot_1.MutationsDataSnapshot(update.ref,mutations,context);localMutationsEmitter.emit("mutations",{origin:"local",snap:snap})}));if(update.ref.cursor){clientEventEmitter.emit("cursor",update.ref.cursor)}}),processPromise);await processPromise};let syncInProgress=false;const syncPromises=[];const syncCompleted=()=>{let resolve;const promise=new Promise((rs=>resolve=rs));syncPromises.push({resolve:resolve});return promise};let processQueueTimeout=null;const scheduleSync=()=>{if(!processQueueTimeout){processQueueTimeout=setTimeout((async()=>{syncInProgress=true;processQueueTimeout=null;await pushLocalMutations();syncInProgress=false;syncPromises.splice(0).forEach((p=>p.resolve()))}),0)}};const flagOverwritten=target=>{if(!mutationQueue.find((m=>RelativeNodeTarget.areEqual(m.target,target)))){mutationQueue.push({target:target,previous:(0,utils_1.cloneObject)(getTargetValue(cache,target))})}scheduleSync()};const localMutationsEmitter=new simple_event_emitter_1.SimpleEventEmitter;const addOnChangeHandler=(target,callback)=>{const isObject=val=>val!==null&&typeof val==="object";const mutationsHandler=async details=>{var _a;const{snap:snap,origin:origin}=details;const context=snap.context();const causedByOurProxy=((_a=context.acebase_proxy)===null||_a===void 0?void 0:_a.id)===proxyId;if(details.origin==="remote"&&causedByOurProxy){console.error("DEV ISSUE: mutationsHandler was called from remote event originating from our own proxy");return}const mutations=snap.val(false).filter((mutation=>mutation.target.slice(0,target.length).every(((key,i)=>target[i]===key))));if(mutations.length===0){return}let newValue,previousValue;const singleMutation=mutations.find((m=>m.target.length<=target.length));if(singleMutation){const trailKeys=target.slice(singleMutation.target.length);newValue=trailKeys.reduce(((val,key)=>!isObject(val)||!(key in val)?null:val[key]),singleMutation.val);previousValue=trailKeys.reduce(((val,key)=>!isObject(val)||!(key in val)?null:val[key]),singleMutation.prev)}else{const currentValue=getTargetValue(cache,target);newValue=(0,utils_1.cloneObject)(currentValue);previousValue=(0,utils_1.cloneObject)(newValue);mutations.forEach((mutation=>{const trailKeys=mutation.target.slice(target.length);for(let i=0,val=newValue,prev=previousValue;i{let keepSubscription=true;try{keepSubscription=false!==callback(Object.freeze(newValue),Object.freeze(previousValue),!causedByOurProxy,context)}catch(err){clientEventEmitter.emit("error",{source:origin==="remote"?"remote_update":"local_update",message:"Error running subscription callback",details:err})}if(keepSubscription===false){stop()}}))};localMutationsEmitter.on("mutations",mutationsHandler);const stop=()=>{localMutationsEmitter.off("mutations",mutationsHandler);clientSubscriptions.splice(clientSubscriptions.findIndex((cs=>cs.stop===stop)),1)};clientSubscriptions.push({target:target,stop:stop});return{stop:stop}};const handleFlag=(flag,target,args)=>{if(flag==="write"){return flagOverwritten(target)}else if(flag==="onChange"){return addOnChangeHandler(target,args.callback)}else if(flag==="subscribe"||flag==="observe"){const subscribe=subscriber=>{const currentValue=getTargetValue(cache,target);subscriber.next(currentValue);const subscription=addOnChangeHandler(target,(value=>{subscriber.next(value)}));return function unsubscribe(){subscription.stop()}};if(flag==="subscribe"){return subscribe}const Observable=(0,optional_observable_1.getObservable)();return new Observable(subscribe)}else if(flag==="transaction"){const hasConflictingTransaction=transactions.some((t=>RelativeNodeTarget.areEqual(target,t.target)||RelativeNodeTarget.isAncestor(target,t.target)||RelativeNodeTarget.isDescendant(target,t.target)));if(hasConflictingTransaction){return Promise.reject(new Error("Cannot start transaction because it conflicts with another transaction"))}return new Promise((async resolve=>{const hasPendingMutations=mutationQueue.some((m=>RelativeNodeTarget.areEqual(target,m.target)||RelativeNodeTarget.isAncestor(target,m.target)));if(hasPendingMutations){if(!syncInProgress){scheduleSync()}await syncCompleted()}const tx={target:target,status:"started",transaction:null};transactions.push(tx);tx.transaction={get status(){return tx.status},get completed(){return tx.status!=="started"},get mutations(){return mutationQueue.filter((m=>RelativeNodeTarget.areEqual(tx.target,m.target)||RelativeNodeTarget.isAncestor(tx.target,m.target)))},get hasMutations(){return this.mutations.length>0},async commit(){if(this.completed){throw new Error(`Transaction has completed already (status '${tx.status}')`)}tx.status="finished";transactions.splice(transactions.indexOf(tx),1);if(syncInProgress){await syncCompleted()}scheduleSync();await syncCompleted()},rollback(){if(this.completed){throw new Error(`Transaction has completed already (status '${tx.status}')`)}tx.status="canceled";const mutations=[];for(let i=0;i{if(m.target.length===0){cache=m.previous}else{setTargetValue(cache,m.target,m.previous)}}));transactions.splice(transactions.indexOf(tx),1)}};resolve(tx.transaction)}))}};const snap=await ref.get({cache_mode:"allow",cache_cursor:options===null||options===void 0?void 0:options.cursor});if(snap.context().acebase_origin!=="cache"){clientEventEmitter.emit("cursor",(_a=ref.cursor)!==null&&_a!==void 0?_a:null)}loaded=true;cache=snap.val();if(cache===null&&typeof(options===null||options===void 0?void 0:options.defaultValue)!=="undefined"){cache=options.defaultValue;const context={acebase_proxy:{id:proxyId,source:"default"}};await ref.context(context).set(cache)}proxy=createProxy({root:{ref:ref,get cache(){return cache}},target:[],id:proxyId,flag:handleFlag});const assertProxyAvailable=()=>{if(proxy===null){throw new Error("Proxy was destroyed")}};const reload=async()=>{assertProxyAvailable();mutationQueue.splice(0);const snap=await ref.get({allow_cache:false});const oldVal=cache,newVal=snap.val();cache=newVal;const mutations=(0,utils_1.getMutations)(oldVal,newVal);if(mutations.length===0){return}const context=snap.context();context.acebase_proxy={id:proxyId,source:"reload"};mutations.forEach((m=>{const targetRef=getTargetRef(ref,m.target);const newSnap=new data_snapshot_1.DataSnapshot(targetRef,m.val,m.val===null,m.prev,context);clientEventEmitter.emit("mutation",{snapshot:newSnap,isRemote:true})}));const mutationsSnap=new data_snapshot_1.MutationsDataSnapshot(ref,mutations,context);localMutationsEmitter.emit("mutations",{origin:"local",snap:mutationsSnap})};return{async destroy(){await processPromise;const promises=[subscription.stop(),...clientSubscriptions.map((cs=>cs.stop()))];await Promise.all(promises);["cursor","mutation","error"].forEach((event=>clientEventEmitter.off(event)));cache=null;proxy=null},stop(){this.destroy()},get value(){assertProxyAvailable();return proxy},get hasValue(){assertProxyAvailable();return cache!==null},set value(val){assertProxyAvailable();if(val!==null&&typeof val==="object"&&val[isProxy]){val=val.valueOf()}flagOverwritten([]);cache=val},get ref(){return ref},get cursor(){return latestCursor},reload:reload,onMutation(callback){assertProxyAvailable();clientEventEmitter.off("mutation");clientEventEmitter.on("mutation",(({snapshot:snapshot,isRemote:isRemote})=>{try{callback(snapshot,isRemote)}catch(err){clientEventEmitter.emit("error",{source:"mutation_callback",message:"Error in dataproxy onMutation callback",details:err})}}))},onError(callback){assertProxyAvailable();clientEventEmitter.off("error");clientEventEmitter.on("error",(err=>{try{callback(err)}catch(err){console.error(`Error in dataproxy onError callback: ${err.message}`)}}))},on(event,callback){clientEventEmitter.on(event,callback)},off(event,callback){clientEventEmitter.off(event,callback)}}}}exports.LiveDataProxy=LiveDataProxy;function getTargetValue(obj,target){let val=obj;for(const key of target){val=typeof val==="object"&&val!==null&&key in val?val[key]:null}return val}function setTargetValue(obj,target,value){if(target.length===0){throw new Error("Cannot update root target, caller must do that itself!")}const targetObject=target.slice(0,-1).reduce(((obj,key)=>obj[key]),obj);const prop=target.slice(-1)[0];if(value===null||typeof value==="undefined"){targetObject instanceof Array?targetObject.splice(prop,1):delete targetObject[prop]}else{targetObject[prop]=value}}function getTargetRef(ref,target){const path=path_info_1.PathInfo.get(ref.path).childPath(target);return new data_reference_1.DataReference(ref.db,path)}function createProxy(context){const targetRef=getTargetRef(context.root.ref,context.target);const childProxies=[];const handler={get(target,prop,receiver){target=getTargetValue(context.root.cache,context.target);if(typeof prop==="symbol"){if(prop.toString()===Symbol.iterator.toString()){prop="values"}else if(prop.toString()===isProxy.toString()){return true}else{return Reflect.get(target,prop,receiver)}}if(prop==="valueOf"){return function valueOf(){return target}}if(target===null||typeof target!=="object"){throw new Error(`Cannot read property "${prop}" of ${target}. Value of path "/${targetRef.path}" is not an object (anymore)`)}if(target instanceof Array&&typeof prop==="string"&&/^[0-9]+$/.test(prop)){prop=parseInt(prop)}const value=target[prop];if(value===null){delete target[prop];return}const childProxy=childProxies.find((proxy=>proxy.prop===prop));if(childProxy){if(childProxy.typeof===typeof value){return childProxy.value}childProxies.splice(childProxies.indexOf(childProxy),1)}const proxifyChildValue=prop=>{const value=target[prop];const childProxy=childProxies.find((child=>child.prop===prop));if(childProxy){if(childProxy.typeof===typeof value){return childProxy.value}childProxies.splice(childProxies.indexOf(childProxy),1)}if(typeof value!=="object"){return value}const newChildProxy=createProxy({root:context.root,target:context.target.concat(prop),id:context.id,flag:context.flag});childProxies.push({typeof:typeof value,prop:prop,value:newChildProxy});return newChildProxy};const unproxyValue=value=>value!==null&&typeof value==="object"&&value[isProxy]?value.getTarget():value;if(["string","number","boolean"].includes(typeof value)||value instanceof Date||value instanceof path_reference_1.PathReference||value instanceof ArrayBuffer||typeof value==="object"&&"buffer"in value){return value}const isArray=target instanceof Array;if(prop==="toString"){return function toString(){return`[LiveDataProxy for "${targetRef.path}"]`}}if(typeof value==="undefined"){if(prop==="push"){return function push(item){const childRef=targetRef.push();context.flag("write",context.target.concat(childRef.key));target[childRef.key]=item;return childRef.key}}if(prop==="getTarget"){return function(warn=true){warn&&console.warn("Use getTarget with caution - any changes will not be synchronized!");return target}}if(prop==="getRef"){return function getRef(){const ref=getTargetRef(context.root.ref,context.target);return ref}}if(prop==="forEach"){return function forEach(callback){const keys=Object.keys(target);let stop=false;for(let i=0;!stop&&iproxifyChildValue(key)));if(sortFn){arr.sort(sortFn)}return arr}}if(prop==="onChanged"){return function onChanged(callback){return context.flag("onChange",context.target,{callback:callback})}}if(prop==="subscribe"){return function subscribe(){return context.flag("subscribe",context.target)}}if(prop==="getObservable"){return function getObservable(){return context.flag("observe",context.target)}}if(prop==="getOrderedCollection"){return function getOrderedCollection(orderProperty,orderIncrement){return new OrderedCollectionProxy(this,orderProperty,orderIncrement)}}if(prop==="startTransaction"){return function startTransaction(){return context.flag("transaction",context.target)}}if(prop==="remove"&&!isArray){return function remove(){if(context.target.length===0){throw new Error("Can't remove proxy root value")}const parent=getTargetValue(context.root.cache,context.target.slice(0,-1));const key=context.target.slice(-1)[0];context.flag("write",context.target);delete parent[key]}}return}else if(typeof value==="function"){if(isArray){const writeArray=action=>{context.flag("write",context.target);return action()};const cleanArrayValues=values=>values.map((value=>{value=unproxyValue(value);removeVoidProperties(value);return value}));if(prop==="push"){return function push(...items){items=cleanArrayValues(items);return writeArray((()=>target.push(...items)))}}if(prop==="pop"){return function pop(){return writeArray((()=>target.pop()))}}if(prop==="splice"){return function splice(start,deleteCount,...items){items=cleanArrayValues(items);return writeArray((()=>target.splice(start,deleteCount,...items)))}}if(prop==="shift"){return function shift(){return writeArray((()=>target.shift()))}}if(prop==="unshift"){return function unshift(...items){items=cleanArrayValues(items);return writeArray((()=>target.unshift(...items)))}}if(prop==="sort"){return function sort(compareFn){return writeArray((()=>target.sort(compareFn)))}}if(prop==="reverse"){return function reverse(){return writeArray((()=>target.reverse()))}}if(["indexOf","lastIndexOf"].includes(prop)){return function indexOf(item,start){if(item!==null&&typeof item==="object"&&item[isProxy]){item=item.getTarget(false)}return target[prop](item,start)}}if(["forEach","every","some","filter","map"].includes(prop)){return function iterate(callback){return target[prop](((value,i)=>callback(proxifyChildValue(i),i,proxy)))}}if(["reduce","reduceRight"].includes(prop)){return function reduce(callback,initialValue){return target[prop](((prev,value,i)=>callback(prev,proxifyChildValue(i),i,proxy)),initialValue)}}if(["find","findIndex"].includes(prop)){return function find(callback){let value=target[prop](((value,i)=>callback(proxifyChildValue(i),i,proxy)));if(prop==="find"&&value){const index=target.indexOf(value);value=proxifyChildValue(index)}return value}}if(["values","entries","keys"].includes(prop)){return function*generator(){for(let i=0;itypeof key==="number"))){context.flag("write",context.target.slice(0,context.target.findIndex((key=>typeof key==="number"))))}else if(target instanceof Array){context.flag("write",context.target)}else{context.flag("write",context.target.concat(prop))}if(value===null){delete target[prop]}else{removeVoidProperties(value);target[prop]=value}return true},deleteProperty(target,prop){target=getTargetValue(context.root.cache,context.target);if(target===null){throw new Error(`Cannot delete property ${prop.toString()} of null`)}if(typeof prop==="symbol"){return Reflect.deleteProperty(target,prop)}if(!(prop in target)){return true}context.flag("write",context.target.concat(prop));delete target[prop];return true},ownKeys(target){target=getTargetValue(context.root.cache,context.target);return Reflect.ownKeys(target)},has(target,prop){target=getTargetValue(context.root.cache,context.target);return Reflect.has(target,prop)},getOwnPropertyDescriptor(target,prop){target=getTargetValue(context.root.cache,context.target);const descriptor=Reflect.getOwnPropertyDescriptor(target,prop);if(descriptor){descriptor.configurable=true}return descriptor},getPrototypeOf(target){target=getTargetValue(context.root.cache,context.target);return Reflect.getPrototypeOf(target)}};const proxy=new Proxy({},handler);return proxy}function removeVoidProperties(obj){if(typeof obj!=="object"){return}Object.keys(obj).forEach((key=>{const val=obj[key];if(val===null||typeof val==="undefined"){delete obj[key]}else if(typeof val==="object"){removeVoidProperties(val)}}))}function proxyAccess(proxiedValue){if(typeof proxiedValue!=="object"||!proxiedValue[isProxy]){throw new Error("Given value is not proxied. Make sure you are referencing the value through the live data proxy.")}return proxiedValue}exports.proxyAccess=proxyAccess;class OrderedCollectionProxy{constructor(collection,orderProperty="order",orderIncrement=10){this.collection=collection;this.orderProperty=orderProperty;this.orderIncrement=orderIncrement;if(typeof collection!=="object"||!collection[isProxy]){throw new Error("Collection is not proxied")}if(collection.valueOf()instanceof Array){throw new Error("Collection is an array, not an object collection")}if(!Object.keys(collection).every((key=>typeof collection[key]==="object"))){throw new Error("Collection has non-object children")}const ok=Object.keys(collection).every((key=>typeof collection[key][orderProperty]==="number"));if(!ok){const keys=Object.keys(collection);for(let i=0;i{const subscription=this.getObservable().subscribe((()=>{const newArray=this.getArray();subscriber.next(newArray)}));return function unsubscribe(){subscription.unsubscribe()}}))}getArray(){const arr=proxyAccess(this.collection).toArray(((a,b)=>a[this.orderProperty]-b[this.orderProperty]));return arr}add(item,index,from){const arr=this.getArray();let minOrder=Number.POSITIVE_INFINITY,maxOrder=Number.NEGATIVE_INFINITY;for(let i=0;ithis.collection[key]===item));if(!fromKey){throw new Error("item not found in collection")}if(from===index){return{key:fromKey,index:index}}if(Math.abs(from-index)===1){const otherItem=arr[index];const otherOrder=otherItem[this.orderProperty];otherItem[this.orderProperty]=item[this.orderProperty];item[this.orderProperty]=otherOrder;return{key:fromKey,index:index}}else{arr.splice(from,1)}}if(typeof index!=="number"||index>=arr.length){index=arr.length;item[this.orderProperty]=arr.length==0?0:maxOrder+this.orderIncrement}else if(index===0){item[this.orderProperty]=arr.length==0?0:minOrder-this.orderIncrement}else{const orders=arr.map((item=>item[this.orderProperty]));const gap=orders[index]-orders[index-1];if(gap>1){item[this.orderProperty]=orders[index]-Math.floor(gap/2)}else{arr.splice(index,0,item);for(let i=0;ithis.collection[key]===item));if(!key){throw new Error("Cannot find target object to delete")}this.collection[key]=null;return{key:key,index:index}}move(fromIndex,toIndex){const arr=this.getArray();return this.add(arr[fromIndex],toIndex,fromIndex)}sort(sortFn){const arr=this.getArray();arr.sort(sortFn);for(let i=0;i{newContext[key]=context[key]}))}this[_private].context=newContext;return this}else if(typeof context==="undefined"){console.warn("Use snap.context() instead of snap.ref.context() to get updating context in event callbacks");return currentContext}else{throw new Error("Invalid context argument")}}get cursor(){return this[_private].cursor}set cursor(value){var _a;this[_private].cursor=value;(_a=this.onCursor)===null||_a===void 0?void 0:_a.call(this,value)}get path(){return this[_private].path}get key(){const key=this[_private].key;return typeof key==="number"?`[${key}]`:key}get index(){const key=this[_private].key;if(typeof key!=="number"){throw new Error(`"${key}" is not a number`)}return key}get parent(){const currentPath=path_info_1.PathInfo.fillVariables2(this.path,this.vars);const info=path_info_1.PathInfo.get(currentPath);if(info.parentPath===null){return null}return new DataReference(this.db,info.parentPath).context(this[_private].context)}get vars(){return this[_private].vars}child(childPath){childPath=typeof childPath==="number"?childPath:childPath.replace(/^\/|\/$/g,"");const currentPath=path_info_1.PathInfo.fillVariables2(this.path,this.vars);const targetPath=path_info_1.PathInfo.getChildPath(currentPath,childPath);return new DataReference(this.db,targetPath).context(this[_private].context)}async set(value,onComplete){try{if(this.isWildcardPath){throw new Error(`Cannot set the value of wildcard path "/${this.path}"`)}if(this.parent===null){throw new Error("Cannot set the root object. Use update, or set individual child properties")}if(typeof value==="undefined"){throw new TypeError(`Cannot store undefined value in "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}value=this.db.types.serialize(this.path,value);const{cursor:cursor}=await this.db.api.set(this.path,value,{context:this[_private].context});this.cursor=cursor;if(typeof onComplete==="function"){try{onComplete(null,this)}catch(err){console.error("Error in onComplete callback:",err)}}}catch(err){if(typeof onComplete==="function"){try{onComplete(err,this)}catch(err){console.error("Error in onComplete callback:",err)}}else{throw err}}return this}async update(updates,onComplete){try{if(this.isWildcardPath){throw new Error(`Cannot update the value of wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}if(typeof updates!=="object"||updates instanceof Array||updates instanceof ArrayBuffer||updates instanceof Date){await this.set(updates)}else if(Object.keys(updates).length===0){console.warn(`update called on path "/${this.path}", but there is nothing to update`)}else{updates=this.db.types.serialize(this.path,updates);const{cursor:cursor}=await this.db.api.update(this.path,updates,{context:this[_private].context});this.cursor=cursor}if(typeof onComplete==="function"){try{onComplete(null,this)}catch(err){console.error("Error in onComplete callback:",err)}}}catch(err){if(typeof onComplete==="function"){try{onComplete(err,this)}catch(err){console.error("Error in onComplete callback:",err)}}else{throw err}}return this}async transaction(callback){if(this.isWildcardPath){throw new Error(`Cannot start a transaction on wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}let throwError;const cb=currentValue=>{currentValue=this.db.types.deserialize(this.path,currentValue);const snap=new data_snapshot_1.DataSnapshot(this,currentValue);let newValue;try{newValue=callback(snap)}catch(err){throwError=err;return}if(newValue instanceof Promise){return newValue.then((val=>this.db.types.serialize(this.path,val))).catch((err=>{throwError=err;return}))}else{return this.db.types.serialize(this.path,newValue)}};const{cursor:cursor}=await this.db.api.transaction(this.path,cb,{context:this[_private].context});this.cursor=cursor;if(throwError){throw throwError}return this}on(event,callback,cancelCallback){if(this.path===""&&["value","child_changed"].includes(event)){console.warn("WARNING: Listening for value and child_changed events on the root node is a bad practice. These events require loading of all data (value event), or potentially lots of data (child_changed event) each time they are fired")}let eventPublisher=null;const eventStream=new subscription_1.EventStream((publisher=>{eventPublisher=publisher}));const cb={event:event,stream:eventStream,userCallback:typeof callback==="function"&&callback,ourCallback:(err,path,newValue,oldValue,eventContext)=>{if(err){this.db.debug.error(`Error getting data for event ${event} on path "${path}"`,err);return}const ref=this.db.ref(path);ref[_private].vars=path_info_1.PathInfo.extractVariables(this.path,path);let callbackObject;if(event.startsWith("notify_")){callbackObject=ref.context(eventContext||{})}else{const values={previous:this.db.types.deserialize(path,oldValue),current:this.db.types.deserialize(path,newValue)};if(event==="child_removed"){callbackObject=new data_snapshot_1.DataSnapshot(ref,values.previous,true,values.previous,eventContext)}else if(event==="mutations"){callbackObject=new data_snapshot_1.MutationsDataSnapshot(ref,values.current,eventContext)}else{const isRemoved=event==="mutated"&&values.current===null;callbackObject=new data_snapshot_1.DataSnapshot(ref,values.current,isRemoved,values.previous,eventContext)}}eventPublisher.publish(callbackObject);if(eventContext===null||eventContext===void 0?void 0:eventContext.acebase_cursor){this.cursor=eventContext.acebase_cursor}}};this[_private].callbacks.push(cb);const subscribe=()=>{if(typeof callback==="function"){eventStream.subscribe(callback,((activated,cancelReason)=>{if(!activated){cancelCallback&&cancelCallback(cancelReason)}}))}const advancedOptions=typeof callback==="object"?callback:{newOnly:!callback};if(typeof advancedOptions.newOnly!=="boolean"){advancedOptions.newOnly=false}if(this.isWildcardPath){advancedOptions.newOnly=true}const cancelSubscription=err=>{const callbacks=this[_private].callbacks;callbacks.splice(callbacks.indexOf(cb),1);this.db.api.unsubscribe(this.path,event,cb.ourCallback);this.db.debug.error(`Subscription "${event}" on path "/${this.path}" canceled because of an error: ${err.message}`);eventPublisher.cancel(err.message)};const authorized=this.db.api.subscribe(this.path,event,cb.ourCallback,{newOnly:advancedOptions.newOnly,cancelCallback:cancelSubscription,syncFallback:advancedOptions.syncFallback});const allSubscriptionsStoppedCallback=()=>{const callbacks=this[_private].callbacks;callbacks.splice(callbacks.indexOf(cb),1);return this.db.api.unsubscribe(this.path,event,cb.ourCallback)};if(authorized instanceof Promise){authorized.then((()=>{eventPublisher.start(allSubscriptionsStoppedCallback)})).catch(cancelSubscription)}else{eventPublisher.start(allSubscriptionsStoppedCallback)}if(!advancedOptions.newOnly){if(event==="value"){this.get((snap=>{eventPublisher.publish(snap)}))}else if(event==="child_added"){this.get((snap=>{const val=snap.val();if(val===null||typeof val!=="object"){return}Object.keys(val).forEach((key=>{const childSnap=new data_snapshot_1.DataSnapshot(this.child(key),val[key]);eventPublisher.publish(childSnap)}))}))}else if(event==="notify_child_added"){const step=100,limit=step;let skip=0;const more=async()=>{const children=await this.db.api.reflect(this.path,"children",{limit:limit,skip:skip});children.list.forEach((child=>{const childRef=this.child(child.key);eventPublisher.publish(childRef)}));if(children.more){skip+=step;more()}};more()}}};if(this.db.isReady){subscribe()}else{this.db.ready(subscribe)}return eventStream}off(event,callback){const subscriptions=this[_private].callbacks;const stopSubs=subscriptions.filter((sub=>(!event||sub.event===event)&&(!callback||sub.userCallback===callback)));if(stopSubs.length===0){this.db.debug.warn(`Can't find event subscriptions to stop (path: "${this.path}", event: ${event||"(any)"}, callback: ${callback})`)}stopSubs.forEach((sub=>{sub.stream.stop()}));return this}get(optionsOrCallback,callback){if(!this.db.isReady){const promise=this.db.ready().then((()=>this.get(optionsOrCallback,callback)));return typeof optionsOrCallback!=="function"&&typeof callback!=="function"?promise:undefined}callback=typeof optionsOrCallback==="function"?optionsOrCallback:typeof callback==="function"?callback:undefined;if(this.isWildcardPath){const error=new Error(`Cannot get value of wildcard path "/${this.path}". Use .query() instead`);if(typeof callback==="function"){throw error}return Promise.reject(error)}const options=new DataRetrievalOptions(typeof optionsOrCallback==="object"?optionsOrCallback:{cache_mode:"allow"});const promise=this.db.api.get(this.path,options).then((result=>{var _a;const isNewApiResult="context"in result&&"value"in result;if(!isNewApiResult){console.warn("AceBase api.get method returned an old response value. Update your acebase or acebase-client package");result={value:result,context:{}}}const value=this.db.types.deserialize(this.path,result.value);const snapshot=new data_snapshot_1.DataSnapshot(this,value,undefined,undefined,result.context);if((_a=result.context)===null||_a===void 0?void 0:_a.acebase_cursor){this.cursor=result.context.acebase_cursor}return snapshot}));if(callback){promise.then(callback).catch((err=>{console.error("Uncaught error:",err)}));return}else{return promise}}once(event,options){if(event==="value"&&!this.isWildcardPath){return this.get(options)}return new Promise((resolve=>{const callback=snap=>{this.off(event,callback);resolve(snap)};this.on(event,callback)}))}push(value,onComplete){if(this.isWildcardPath){const error=new Error(`Cannot push to wildcard path "/${this.path}"`);if(typeof value==="undefined"||typeof onComplete==="function"){throw error}return Promise.reject(error)}const id=id_1.ID.generate();const ref=this.child(id);ref[_private].pushed=true;if(typeof value!=="undefined"){return ref.set(value,onComplete).then((()=>ref))}else{return ref}}async remove(){if(this.isWildcardPath){throw new Error(`Cannot remove wildcard path "/${this.path}". Use query().remove instead`)}if(this.parent===null){throw new Error("Cannot remove the root node")}return this.set(null)}async exists(){if(this.isWildcardPath){throw new Error(`Cannot check wildcard path "/${this.path}" existence`)}if(!this.db.isReady){await this.db.ready()}return this.db.api.exists(this.path)}get isWildcardPath(){return this.path.indexOf("*")>=0||this.path.indexOf("$")>=0}query(){return new DataReferenceQuery(this)}async count(){const info=await this.reflect("info",{child_count:true});return info.children.count}async reflect(type,args){if(this.isWildcardPath){throw new Error(`Cannot reflect on wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}return this.db.api.reflect(this.path,type,args)}async export(write,options={format:"json",type_safe:true}){if(this.isWildcardPath){throw new Error(`Cannot export wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}const writeFn=typeof write==="function"?write:write.write.bind(write);return this.db.api.export(this.path,writeFn,options)}async import(read,options={format:"json",suppress_events:false}){if(this.isWildcardPath){throw new Error(`Cannot import to wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}return this.db.api.import(this.path,read,options)}proxy(options){const isOptionsArg=typeof options==="object"&&(typeof options.cursor!=="undefined"||typeof options.defaultValue!=="undefined");if(typeof options!=="undefined"&&!isOptionsArg){this.db.debug.warn("Warning: live data proxy is being initialized with a deprecated method signature. Use ref.proxy(options) instead of ref.proxy(defaultValue)");options={defaultValue:options}}return data_proxy_1.LiveDataProxy.create(this,options)}observe(options){if(options){throw new Error("observe does not support data retrieval options yet")}if(this.isWildcardPath){throw new Error(`Cannot observe wildcard path "/${this.path}"`)}const Observable=(0,optional_observable_1.getObservable)();return new Observable((observer=>{let cache,resolved=false;let promise=this.get(options).then((snap=>{resolved=true;cache=snap.val();observer.next(cache)}));const updateCache=snap=>{if(!resolved){promise=promise.then((()=>updateCache(snap)));return}const mutatedPath=snap.ref.path;if(mutatedPath===this.path){cache=snap.val();return observer.next(cache)}const trailKeys=path_info_1.PathInfo.getPathKeys(mutatedPath).slice(path_info_1.PathInfo.getPathKeys(this.path).length);let target=cache;while(trailKeys.length>1){const key=trailKeys.shift();if(!(key in target)){target[key]=typeof trailKeys[0]==="number"?[]:{}}target=target[key]}const prop=trailKeys.shift();const newValue=snap.val();if(newValue===null){target instanceof Array&&typeof prop==="number"?target.splice(prop,1):delete target[prop]}else{target[prop]=newValue}observer.next(cache)};this.on("mutated",updateCache);return()=>{this.off("mutated",updateCache)}}))}async forEach(callbackOrOptions,callback){let options;if(typeof callbackOrOptions==="function"){callback=callbackOrOptions}else{options=callbackOrOptions}if(typeof callback!=="function"){throw new TypeError("No callback function given")}const info=await this.reflect("children",{limit:0,skip:0});const summary={canceled:false,total:info.list.length,processed:0};for(let i=0;ithis.get(optionsOrCallback,callback)));return typeof optionsOrCallback!=="function"&&typeof callback!=="function"?promise:undefined}callback=typeof optionsOrCallback==="function"?optionsOrCallback:typeof callback==="function"?callback:undefined;const options=new QueryDataRetrievalOptions(typeof optionsOrCallback==="object"?optionsOrCallback:{snapshots:true,cache_mode:"allow"});options.allow_cache=options.cache_mode!=="bypass";options.eventHandler=ev=>{if(!this[_private].events[ev.name]){return false}const listeners=this[_private].events[ev.name];if(typeof listeners!=="object"||listeners.length===0){return false}if(["add","change","remove"].includes(ev.name)){const eventData={name:ev.name,ref:new DataReference(this.ref.db,ev.path)};if(options.snapshots&&ev.name!=="remove"){const val=db.types.deserialize(ev.path,ev.value);eventData.snapshot=new data_snapshot_1.DataSnapshot(eventData.ref,val,false)}ev=eventData}listeners.forEach((callback=>{try{callback(ev)}catch(e){}}))};options.monitor={add:false,change:false,remove:false};if(this[_private].events){if(this[_private].events["add"]&&this[_private].events["add"].length>0){options.monitor.add=true}if(this[_private].events["change"]&&this[_private].events["change"].length>0){options.monitor.change=true}if(this[_private].events["remove"]&&this[_private].events["remove"].length>0){options.monitor.remove=true}}this.stop();const db=this.ref.db;return db.api.query(this.ref.path,this[_private],options).catch((err=>{throw new Error(err)})).then((res=>{const{stop:stop}=res;let{results:results,context:context}=res;this.stop=async()=>{await stop()};if(!("results"in res&&"context"in res)){console.warn("Query results missing context. Update your acebase and/or acebase-client packages");results=res,context={}}if(options.snapshots){const snaps=results.map((result=>{const val=db.types.deserialize(result.path,result.val);return new data_snapshot_1.DataSnapshot(db.ref(result.path),val,false,undefined,context)}));return DataSnapshotsArray.from(snaps)}else{const refs=results.map((path=>db.ref(path)));return DataReferencesArray.from(refs)}})).then((results=>{callback&&callback(results);return results}))}async stop(){}getRefs(callback){return this.get({snapshots:false},callback)}find(){return this.get({snapshots:false})}async count(){const refs=await this.find();return refs.length}async exists(){const originalTake=this[_private].take;const p=this.take(1).find();this.take(originalTake);const refs=await p;return refs.length!==0}async remove(callback){const refs=await this.find();const parentUpdates=refs.reduce(((parents,ref)=>{const parent=parents[ref.parent.path];if(!parent){parents[ref.parent.path]=[ref]}else{parent.push(ref)}return parents}),{});const db=this.ref.db;const promises=Object.keys(parentUpdates).map((async parentPath=>{const updates=refs.reduce(((updates,ref)=>{updates[ref.key]=null;return updates}),{});const ref=db.ref(parentPath);try{await ref.update(updates);return{ref:ref,success:true}}catch(error){return{ref:ref,success:false,error:error}}}));const results=await Promise.all(promises);callback&&callback(results);return results}on(event,callback){if(!this[_private].events[event]){this[_private].events[event]=[]}this[_private].events[event].push(callback);return this}off(event,callback){if(typeof event==="undefined"){this[_private].events={};return this}if(!this[_private].events[event]){return this}if(typeof callback==="undefined"){delete this[_private].events[event];return this}const index=this[_private].events[event].indexOf(callback);if(!~index){return this}this[_private].events[event].splice(index,1);return this}async forEach(callbackOrOptions,callback){let options;if(typeof callbackOrOptions==="function"){callback=callbackOrOptions}else{options=callbackOrOptions}if(typeof callback!=="function"){throw new TypeError("No callback function given")}const refs=await this.find();const summary={canceled:false,total:refs.length,processed:0};for(let i=0;iarr[i]=snap));return arr}getValues(){return this.map((snap=>snap.val()))}}exports.DataSnapshotsArray=DataSnapshotsArray;class DataReferencesArray extends Array{static from(refs){const arr=new DataReferencesArray(refs.length);refs.forEach(((ref,i)=>arr[i]=ref));return arr}getPaths(){return this.map((ref=>ref.path))}}exports.DataReferencesArray=DataReferencesArray},{"./data-proxy":38,"./data-snapshot":40,"./id":42,"./optional-observable":45,"./path-info":47,"./subscription":54}],40:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.MutationsDataSnapshot=exports.DataSnapshot=void 0;const path_info_1=require("./path-info");function getChild(snapshot,path,previous=false){if(!snapshot.exists()){return null}let child=previous?snapshot.previous():snapshot.val();if(typeof path==="number"){return child[path]}path_info_1.PathInfo.getPathKeys(path).every((key=>{child=child[key];return typeof child!=="undefined"}));return child||null}function getChildren(snapshot){if(!snapshot.exists()){return[]}const value=snapshot.val();if(value instanceof Array){return new Array(value.length).map(((v,i)=>i))}if(typeof value==="object"){return Object.keys(value)}return[]}class DataSnapshot{exists(){return false}constructor(ref,value,isRemoved=false,prevValue,context){this.ref=ref;this.val=()=>value;this.previous=()=>prevValue;this.exists=()=>{if(isRemoved){return false}return value!==null&&typeof value!=="undefined"};this.context=()=>context||{}}static for(ref,value){return new DataSnapshot(ref,value)}child(path){const val=getChild(this,path,false);const prev=getChild(this,path,true);return new DataSnapshot(this.ref.child(path),val,false,prev)}hasChild(path){return getChild(this,path)!==null}hasChildren(){return getChildren(this).length>0}numChildren(){return getChildren(this).length}forEach(callback){const value=this.val();const prev=this.previous();return getChildren(this).every((key=>{const snap=new DataSnapshot(this.ref.child(key),value[key],false,prev[key]);return callback(snap)}))}get key(){return this.ref.key}}exports.DataSnapshot=DataSnapshot;class MutationsDataSnapshot extends DataSnapshot{constructor(ref,mutations,context){super(ref,mutations,false,undefined,context);this.previous=()=>{throw new Error("Iterate values to get previous values for each mutation")};this.val=(warn=true)=>{if(warn){console.warn("Unless you know what you are doing, it is best not to use the value of a mutations snapshot directly. Use child methods and forEach to iterate the mutations instead")}return mutations}}forEach(callback){const mutations=this.val(false);return mutations.every((mutation=>{const ref=mutation.target.reduce(((ref,key)=>ref.child(key)),this.ref);const snap=new DataSnapshot(ref,mutation.val,false,mutation.prev);return callback(snap)}))}child(index){if(typeof index!=="number"){throw new Error("child index must be a number")}const mutation=this.val(false)[index];const ref=mutation.target.reduce(((ref,key)=>ref.child(key)),this.ref);return new DataSnapshot(ref,mutation.val,false,mutation.prev)}}exports.MutationsDataSnapshot=MutationsDataSnapshot},{"./path-info":47}],41:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DebugLogger=void 0;const process_1=require("./process");const noop=()=>{};class DebugLogger{constructor(level="log",prefix=""){this.level=level;this.prefix=prefix;this.setLevel(level)}setLevel(level){const prefix=this.prefix?this.prefix+" %s":"";this.verbose=["verbose"].includes(level)?prefix?console.log.bind(console,prefix):console.log.bind(console):noop;this.log=["verbose","log"].includes(level)?prefix?console.log.bind(console,prefix):console.log.bind(console):noop;this.warn=["verbose","log","warn"].includes(level)?prefix?console.warn.bind(console,prefix):console.warn.bind(console):noop;this.error=["verbose","log","warn","error"].includes(level)?prefix?console.error.bind(console,prefix):console.error.bind(console):noop;this.write=text=>{const isRunKit=typeof process_1.default!=="undefined"&&process_1.default.env&&typeof process_1.default.env.RUNKIT_ENDPOINT_PATH==="string";if(text&&isRunKit){text.split("\n").forEach((line=>console.log(line)))}else{console.log(text)}}}}exports.DebugLogger=DebugLogger},{"./process":49}],42:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ID=void 0;const cuid_1=require("./cuid");let timeBias=0;class ID{static set timeBias(bias){if(typeof bias!=="number"){return}timeBias=bias}static generate(){return(0,cuid_1.default)(timeBias).slice(1)}}exports.ID=ID},{"./cuid":36}],43:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ObjectCollection=exports.PartialArray=exports.SimpleObservable=exports.SchemaDefinition=exports.Colorize=exports.ColorStyle=exports.SimpleEventEmitter=exports.SimpleCache=exports.ascii85=exports.PathInfo=exports.Utils=exports.TypeMappings=exports.Transport=exports.EventSubscription=exports.EventPublisher=exports.EventStream=exports.PathReference=exports.ID=exports.DebugLogger=exports.OrderedCollectionProxy=exports.proxyAccess=exports.MutationsDataSnapshot=exports.DataSnapshot=exports.DataReferencesArray=exports.DataSnapshotsArray=exports.QueryDataRetrievalOptions=exports.DataRetrievalOptions=exports.DataReferenceQuery=exports.DataReference=exports.Api=exports.AceBaseBaseSettings=exports.AceBaseBase=void 0;var acebase_base_1=require("./acebase-base");Object.defineProperty(exports,"AceBaseBase",{enumerable:true,get:function(){return acebase_base_1.AceBaseBase}});Object.defineProperty(exports,"AceBaseBaseSettings",{enumerable:true,get:function(){return acebase_base_1.AceBaseBaseSettings}});var api_1=require("./api");Object.defineProperty(exports,"Api",{enumerable:true,get:function(){return api_1.Api}});var data_reference_1=require("./data-reference");Object.defineProperty(exports,"DataReference",{enumerable:true,get:function(){return data_reference_1.DataReference}});Object.defineProperty(exports,"DataReferenceQuery",{enumerable:true,get:function(){return data_reference_1.DataReferenceQuery}});Object.defineProperty(exports,"DataRetrievalOptions",{enumerable:true,get:function(){return data_reference_1.DataRetrievalOptions}});Object.defineProperty(exports,"QueryDataRetrievalOptions",{enumerable:true,get:function(){return data_reference_1.QueryDataRetrievalOptions}});Object.defineProperty(exports,"DataSnapshotsArray",{enumerable:true,get:function(){return data_reference_1.DataSnapshotsArray}});Object.defineProperty(exports,"DataReferencesArray",{enumerable:true,get:function(){return data_reference_1.DataReferencesArray}});var data_snapshot_1=require("./data-snapshot");Object.defineProperty(exports,"DataSnapshot",{enumerable:true,get:function(){return data_snapshot_1.DataSnapshot}});Object.defineProperty(exports,"MutationsDataSnapshot",{enumerable:true,get:function(){return data_snapshot_1.MutationsDataSnapshot}});var data_proxy_1=require("./data-proxy");Object.defineProperty(exports,"proxyAccess",{enumerable:true,get:function(){return data_proxy_1.proxyAccess}});Object.defineProperty(exports,"OrderedCollectionProxy",{enumerable:true,get:function(){return data_proxy_1.OrderedCollectionProxy}});var debug_1=require("./debug");Object.defineProperty(exports,"DebugLogger",{enumerable:true,get:function(){return debug_1.DebugLogger}});var id_1=require("./id");Object.defineProperty(exports,"ID",{enumerable:true,get:function(){return id_1.ID}});var path_reference_1=require("./path-reference");Object.defineProperty(exports,"PathReference",{enumerable:true,get:function(){return path_reference_1.PathReference}});var subscription_1=require("./subscription");Object.defineProperty(exports,"EventStream",{enumerable:true,get:function(){return subscription_1.EventStream}});Object.defineProperty(exports,"EventPublisher",{enumerable:true,get:function(){return subscription_1.EventPublisher}});Object.defineProperty(exports,"EventSubscription",{enumerable:true,get:function(){return subscription_1.EventSubscription}});exports.Transport=require("./transport");var type_mappings_1=require("./type-mappings");Object.defineProperty(exports,"TypeMappings",{enumerable:true,get:function(){return type_mappings_1.TypeMappings}});exports.Utils=require("./utils");var path_info_1=require("./path-info");Object.defineProperty(exports,"PathInfo",{enumerable:true,get:function(){return path_info_1.PathInfo}});var ascii85_1=require("./ascii85");Object.defineProperty(exports,"ascii85",{enumerable:true,get:function(){return ascii85_1.ascii85}});var simple_cache_1=require("./simple-cache");Object.defineProperty(exports,"SimpleCache",{enumerable:true,get:function(){return simple_cache_1.SimpleCache}});var simple_event_emitter_1=require("./simple-event-emitter");Object.defineProperty(exports,"SimpleEventEmitter",{enumerable:true,get:function(){return simple_event_emitter_1.SimpleEventEmitter}});var simple_colors_1=require("./simple-colors");Object.defineProperty(exports,"ColorStyle",{enumerable:true,get:function(){return simple_colors_1.ColorStyle}});Object.defineProperty(exports,"Colorize",{enumerable:true,get:function(){return simple_colors_1.Colorize}});var schema_1=require("./schema");Object.defineProperty(exports,"SchemaDefinition",{enumerable:true,get:function(){return schema_1.SchemaDefinition}});var optional_observable_1=require("./optional-observable");Object.defineProperty(exports,"SimpleObservable",{enumerable:true,get:function(){return optional_observable_1.SimpleObservable}});var partial_array_1=require("./partial-array");Object.defineProperty(exports,"PartialArray",{enumerable:true,get:function(){return partial_array_1.PartialArray}});const object_collection_1=require("./object-collection");Object.defineProperty(exports,"ObjectCollection",{enumerable:true,get:function(){return object_collection_1.ObjectCollection}})},{"./acebase-base":32,"./api":33,"./ascii85":34,"./data-proxy":38,"./data-reference":39,"./data-snapshot":40,"./debug":41,"./id":42,"./object-collection":44,"./optional-observable":45,"./partial-array":46,"./path-info":47,"./path-reference":48,"./schema":50,"./simple-cache":51,"./simple-colors":52,"./simple-event-emitter":53,"./subscription":54,"./transport":55,"./type-mappings":56,"./utils":57}],44:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ObjectCollection=void 0;const id_1=require("./id");class ObjectCollection{static from(array){const collection={};array.forEach((child=>{collection[id_1.ID.generate()]=child}));return collection}}exports.ObjectCollection=ObjectCollection},{"./id":42}],45:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SimpleObservable=exports.setObservable=exports.getObservable=void 0;const utils_1=require("./utils");let _shimRequested=false;let _observable;(async()=>{const global=(0,utils_1.getGlobalObject)();if(typeof global.Observable!=="undefined"){_observable=global.Observable;return}try{const{Observable:Observable}=await Promise.resolve().then((()=>require("rxjs")));_observable=Observable}catch(_a){_observable=SimpleObservable}})();function getObservable(){if(_observable===SimpleObservable&&!_shimRequested){console.warn("Using AceBase's simple Observable implementation because rxjs is not available. "+'Add it to your project with "npm install rxjs", add it to AceBase using db.setObservable(Observable), '+'or call db.setObservable("shim") to suppress this warning')}if(_observable){return _observable}throw new Error("RxJS Observable could not be loaded. ")}exports.getObservable=getObservable;function setObservable(Observable){if(Observable==="shim"){_observable=SimpleObservable;_shimRequested=true}else{_observable=Observable}}exports.setObservable=setObservable;class SimpleObservable{constructor(create){this._active=false;this._subscribers=[];this._create=create}subscribe(subscriber){if(!this._active){const next=value=>{this._subscribers.forEach((s=>{try{s(value)}catch(err){console.error("Error in subscriber callback:",err)}}))};const observer={next:next};this._cleanup=this._create(observer);this._active=true}this._subscribers.push(subscriber);const unsubscribe=()=>{this._subscribers.splice(this._subscribers.indexOf(subscriber),1);if(this._subscribers.length===0){this._active=false;this._cleanup()}};const subscription={unsubscribe:unsubscribe};return subscription}}exports.SimpleObservable=SimpleObservable},{"./utils":57,rxjs:58}],46:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PartialArray=void 0;class PartialArray{constructor(sparseArray){if(sparseArray instanceof Array){for(let i=0;ikey.startsWith("[")?parseInt(key.slice(1,-1)):key))}class PathInfo{static get(path){return new PathInfo(path)}static getChildPath(path,childKey){return PathInfo.get(path).child(childKey).path}static getPathKeys(path){return getPathKeys(path)}constructor(path){if(typeof path==="string"){this.keys=getPathKeys(path)}else if(path instanceof Array){this.keys=path}this.path=this.keys.reduce(((path,key,i)=>i===0?`${key}`:typeof key==="string"?`${path}/${key}`:`${path}[${key}]`),"")}get key(){return this.keys.length===0?null:this.keys.slice(-1)[0]}get parent(){if(this.keys.length==0){return null}const parentKeys=this.keys.slice(0,-1);return new PathInfo(parentKeys)}get parentPath(){return this.keys.length===0?null:this.parent.path}child(childKey){if(typeof childKey==="string"){if(childKey.length===0){throw new Error(`child key for path "${this.path}" cannot be empty`)}const keys=getPathKeys(childKey);keys.forEach((key=>{if(typeof key!=="string"){return}if(/[\x00-\x08\x0b\x0c\x0e-\x1f/[\]\\]/.test(key)){throw new Error(`Invalid child key "${key}" for path "${this.path}". Keys cannot contain control characters or any of the following characters: \\ / [ ]`)}if(key.length>128){throw new Error(`child key "${key}" for path "${this.path}" is too long. Max key length is 128`)}if(key.length===0){throw new Error(`child key for path "${this.path}" cannot be empty`)}}));childKey=keys}return new PathInfo(this.keys.concat(childKey))}childPath(childKey){return this.child(childKey).path}get pathKeys(){return this.keys}static extractVariables(varPath,fullPath){if(!varPath.includes("*")&&!varPath.includes("$")){return[]}const keys=getPathKeys(varPath);const pathKeys=getPathKeys(fullPath);let count=0;const variables={get length(){return count}};keys.forEach(((key,index)=>{const pathKey=pathKeys[index];if(key==="*"){variables[count++]=pathKey}else if(typeof key==="string"&&key[0]==="$"){variables[count++]=pathKey;variables[key]=pathKey;const varName=key.slice(1);if(typeof variables[varName]==="undefined"){variables[varName]=pathKey}}}));return variables}static fillVariables(varPath,fullPath){if(varPath.indexOf("*")<0&&varPath.indexOf("$")<0){return varPath}const keys=getPathKeys(varPath);const pathKeys=getPathKeys(fullPath);const merged=keys.map(((key,index)=>{if(key===pathKeys[index]||index>=pathKeys.length){return key}else if(typeof key==="string"&&(key==="*"||key[0]==="$")){return pathKeys[index]}else{throw new Error(`Path "${fullPath}" cannot be used to fill variables of path "${varPath}" because they do not match`)}}));let mergedPath="";merged.forEach((key=>{if(typeof key==="number"){mergedPath+=`[${key}]`}else{if(mergedPath.length>0){mergedPath+="/"}mergedPath+=key}}));return mergedPath}static fillVariables2(varPath,vars){if(typeof vars!=="object"||Object.keys(vars).length===0){return varPath}const pathKeys=getPathKeys(varPath);let n=0;const targetPath=pathKeys.reduce(((path,key)=>{if(typeof key==="string"&&(key==="*"||key.startsWith("$"))){return PathInfo.getChildPath(path,vars[n++])}else{return PathInfo.getChildPath(path,key)}}),"");return targetPath}equals(otherPath){const other=otherPath instanceof PathInfo?otherPath:new PathInfo(otherPath);if(this.path===other.path){return true}if(this.keys.length!==other.keys.length){return false}return this.keys.every(((key,index)=>{const otherKey=other.keys[index];return otherKey===key||typeof otherKey==="string"&&(otherKey==="*"||otherKey[0]==="$")||typeof key==="string"&&(key==="*"||key[0]==="$")}))}isAncestorOf(descendantPath){const descendant=descendantPath instanceof PathInfo?descendantPath:new PathInfo(descendantPath);if(descendant.path===""||this.path===descendant.path){return false}if(this.path===""){return true}if(this.keys.length>=descendant.keys.length){return false}return this.keys.every(((key,index)=>{const otherKey=descendant.keys[index];return otherKey===key||typeof otherKey==="string"&&(otherKey==="*"||otherKey[0]==="$")||typeof key==="string"&&(key==="*"||key[0]==="$")}))}isDescendantOf(ancestorPath){const ancestor=ancestorPath instanceof PathInfo?ancestorPath:new PathInfo(ancestorPath);if(this.path===""||this.path===ancestor.path){return false}if(ancestorPath===""){return true}if(ancestor.keys.length>=this.keys.length){return false}return ancestor.keys.every(((key,index)=>{const otherKey=this.keys[index];return otherKey===key||typeof otherKey==="string"&&(otherKey==="*"||otherKey[0]==="$")||typeof key==="string"&&(key==="*"||key[0]==="$")}))}isOnTrailOf(otherPath){const other=otherPath instanceof PathInfo?otherPath:new PathInfo(otherPath);if(this.path.length===0||other.path.length===0){return true}if(this.path===other.path){return true}return this.pathKeys.every(((key,index)=>{if(index>=other.keys.length){return true}const otherKey=other.keys[index];return otherKey===key||typeof otherKey==="string"&&(otherKey==="*"||otherKey[0]==="$")||typeof key==="string"&&(key==="*"||key[0]==="$")}))}isChildOf(otherPath){const other=otherPath instanceof PathInfo?otherPath:new PathInfo(otherPath);if(this.path===""){return false}return this.parent.equals(other)}isParentOf(otherPath){const other=otherPath instanceof PathInfo?otherPath:new PathInfo(otherPath);if(other.path===""){return false}return this.equals(other.parent)}}exports.PathInfo=PathInfo},{}],48:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PathReference=void 0;class PathReference{constructor(path){this.path=path}}exports.PathReference=PathReference},{}],49:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default={nextTick(fn){setTimeout(fn,0)}}},{}],50:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SchemaDefinition=void 0;function parse(definition){let pos=0;function consumeSpaces(){let c;while(c=definition[pos],[" ","\r","\n","\t"].includes(c)){pos++}}function consumeCharacter(c){if(definition[pos]!==c){throw new Error(`Unexpected character at position ${pos}. Expected: '${c}', found '${definition[pos]}'`)}pos++}function readProperty(){consumeSpaces();const prop={name:"",optional:false,wildcard:false};let c;while(c=definition[pos],c==="_"||c==="$"||c>="a"&&c<="z"||c>="A"&&c<="Z"||prop.name.length>0&&c>="0"&&c<="9"||prop.name.length===0&&c==="*"){prop.name+=c;pos++}if(prop.name.length===0){throw new Error(`Property name expected at position ${pos}, found: ${definition.slice(pos,pos+10)}..`)}if(definition[pos]==="?"){prop.optional=true;pos++}if(prop.name==="*"||prop.name[0]==="$"){prop.optional=true;prop.wildcard=true}consumeSpaces();consumeCharacter(":");return prop}function readType(){consumeSpaces();let type={typeOf:"any"},c;let name="";while(c=definition[pos],c>="a"&&c<="z"||c>="A"&&c<="Z"){name+=c;pos++}if(name.length===0){if(definition[pos]==="*"){consumeCharacter("*");type.typeOf="any"}else if(["'",'"',"`"].includes(definition[pos])){type.typeOf="string";type.value="";const quote=definition[pos];consumeCharacter(quote);while(c=definition[pos],c&&c!==quote){type.value+=c;pos++}consumeCharacter(quote)}else if(definition[pos]>="0"&&definition[pos]<="9"){type.typeOf="number";let nr="";while(c=definition[pos],c==="."||c==="n"||c>="0"&&c<="9"){nr+=c;pos++}if(nr.endsWith("n")){type.value=BigInt(nr)}else if(nr.includes(".")){type.value=parseFloat(nr)}else{type.value=parseInt(nr)}}else if(definition[pos]==="{"){consumeCharacter("{");type.typeOf="object";type.instanceOf=Object;type.children=[];while(true){const prop=readProperty();const types=readTypes();type.children.push({name:prop.name,optional:prop.optional,wildcard:prop.wildcard,types:types});consumeSpaces();if(definition[pos]===";"||definition[pos]===","){consumeCharacter(definition[pos]);consumeSpaces()}if(definition[pos]==="}"){break}}consumeCharacter("}")}else if(definition[pos]==="/"){consumeCharacter("/");let pattern="",flags="";while(c=definition[pos],c!=="/"||pattern.endsWith("\\")){pattern+=c;pos++}consumeCharacter("/");while(c=definition[pos],["g","i","m","s","u","y","d"].includes(c)){flags+=c;pos++}type.typeOf="string";type.matches=new RegExp(pattern,flags)}else{throw new Error(`Expected a type definition at position ${pos}, found character '${definition[pos]}'`)}}else if(["string","number","boolean","bigint","undefined","String","Number","Boolean","BigInt"].includes(name)){type.typeOf=name.toLowerCase()}else if(name==="Object"||name==="object"){type.typeOf="object";type.instanceOf=Object}else if(name==="Date"){type.typeOf="object";type.instanceOf=Date}else if(name==="Binary"||name==="binary"){type.typeOf="object";type.instanceOf=ArrayBuffer}else if(name==="any"){type.typeOf="any"}else if(name==="null"){type.typeOf="object";type.value=null}else if(name==="Array"){consumeCharacter("<");type.typeOf="object";type.instanceOf=Array;type.genericTypes=readTypes();consumeCharacter(">")}else if(["true","false"].includes(name)){type.typeOf="boolean";type.value=name==="true"}else{throw new Error(`Unknown type at position ${pos}: "${type}"`)}consumeSpaces();while(definition[pos]==="["){consumeCharacter("[");consumeCharacter("]");type={typeOf:"object",instanceOf:Array,genericTypes:[type]}}return type}function readTypes(){consumeSpaces();const types=[readType()];while(definition[pos]==="|"){consumeCharacter("|");types.push(readType());consumeSpaces()}return types}return readType()}function checkObject(path,properties,obj,partial){const invalidProperties=properties.find((prop=>prop.name==="*"||prop.name[0]==="$"))?[]:Object.keys(obj).filter((key=>![null,undefined].includes(obj[key])&&!properties.find((prop=>prop.name===key))));if(invalidProperties.length>0){return{ok:false,reason:`Object at path "${path}" cannot have propert${invalidProperties.length===1?"y":"ies"} ${invalidProperties.map((p=>`"${p}"`)).join(", ")}`}}function checkProperty(property){const hasValue=![null,undefined].includes(obj[property.name]);if(!property.optional&&(partial?obj[property.name]===null:!hasValue)){return{ok:false,reason:`Property at path "${path}/${property.name}" is not optional`}}if(hasValue&&property.types.length===1){return checkType(`${path}/${property.name}`,property.types[0],obj[property.name],false)}if(hasValue&&!property.types.some((type=>checkType(`${path}/${property.name}`,type,obj[property.name],false).ok))){return{ok:false,reason:`Property at path "${path}/${property.name}" does not match any of ${property.types.length} allowed types`}}return{ok:true}}const namedProperties=properties.filter((prop=>!prop.wildcard));const failedProperty=namedProperties.find((prop=>!checkProperty(prop).ok));if(failedProperty){const reason=checkProperty(failedProperty).reason;return{ok:false,reason:reason}}const wildcardProperty=properties.find((prop=>prop.wildcard));if(!wildcardProperty){return{ok:true}}const wildcardChildKeys=Object.keys(obj).filter((key=>!namedProperties.find((prop=>prop.name===key))));let result={ok:true};for(let i=0;i0){if(type.typeOf!=="object"){return{ok:false,reason:`path "${path}" must be typeof ${type.typeOf}`}}if(!type.children){return ok}const childKey=trailKeys[0];let property=type.children.find((prop=>prop.name===childKey));if(!property){property=type.children.find((prop=>prop.name==="*"||prop.name[0]==="$"))}if(!property){return{ok:false,reason:`Object at path "${path}" cannot have property "${childKey}"`}}if(property.optional&&value===null&&trailKeys.length===1){return ok}let result;property.types.some((type=>{const childPath=typeof childKey==="number"?`${path}[${childKey}]`:`${path}/${childKey}`;result=checkType(childPath,type,value,partial,trailKeys.slice(1));return result.ok}));return result}if(value===null){return ok}if(type.instanceOf===Object&&(typeof value!=="object"||value instanceof Array||value instanceof Date)){return{ok:false,reason:`path "${path}" must be an object collection`}}if(type.instanceOf&&(typeof value!=="object"||value.constructor!==type.instanceOf)){return{ok:false,reason:`path "${path}" must be an instance of ${type.instanceOf.name}`}}if("value"in type&&value!==type.value){return{ok:false,reason:`path "${path}" must be value: ${type.value}`}}if(typeof value!==type.typeOf){return{ok:false,reason:`path "${path}" must be typeof ${type.typeOf}`}}if(type.instanceOf===Array&&type.genericTypes&&!value.every((v=>type.genericTypes.some((t=>checkType(path,t,v,false).ok))))){return{ok:false,reason:`every array value of path "${path}" must match one of the specified types`}}if(type.typeOf==="object"&&type.children){return checkObject(path,type.children,value,partial)}if(type.matches&&!type.matches.test(value)){return{ok:false,reason:`path "${path}" must match regular expression /${type.matches.source}/${type.matches.flags}`}}return ok}function getConstructorType(val){switch(val){case String:return"string";case Number:return"number";case Boolean:return"boolean";case Date:return"Date";case BigInt:return"bigint";case Array:throw new Error("Schema error: Array cannot be used without a type. Use string[] or Array instead");default:throw new Error(`Schema error: unknown type used: ${val.name}`)}}class SchemaDefinition{constructor(definition){this.source=definition;if(typeof definition==="object"){const toTS=obj=>"{"+Object.keys(obj).map((key=>{let val=obj[key];if(val===undefined){val="undefined"}else if(val instanceof RegExp){val=`/${val.source}/${val.flags}`}else if(typeof val==="object"){val=toTS(val)}else if(typeof val==="function"){val=getConstructorType(val)}else if(!["string","number","boolean","bigint"].includes(typeof val)){throw new Error(`Type definition for key "${key}" must be a string, number, boolean, bigint, object, regular expression, or one of these classes: String, Number, Boolean, Date, BigInt`)}return`${key}:${val}`})).join(",")+"}";this.text=toTS(definition)}else if(typeof definition==="string"){this.text=definition}else{throw new Error("Type definiton must be a string or an object")}this.type=parse(this.text)}check(path,value,partial,trailKeys){return checkType(path,this.type,value,partial,trailKeys)}}exports.SchemaDefinition=SchemaDefinition},{}],51:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SimpleCache=void 0;const utils_1=require("./utils");const calculateExpiryTime=expirySeconds=>expirySeconds>0?Date.now()+expirySeconds*1e3:Infinity;class SimpleCache{get size(){return this.cache.size}constructor(options){var _a;this.enabled=true;if(typeof options==="number"){options={expirySeconds:options}}options.cloneValues=options.cloneValues!==false;if(typeof options.expirySeconds!=="number"&&typeof options.maxEntries!=="number"){throw new Error("Either expirySeconds or maxEntries must be specified")}this.options=options;this.cache=new Map;const interval=setInterval((()=>{this.cleanUp()}),60*1e3);(_a=interval.unref)===null||_a===void 0?void 0:_a.call(interval)}has(key){if(!this.enabled){return false}return this.cache.has(key)}get(key){if(!this.enabled){return null}const entry=this.cache.get(key);if(!entry){return null}entry.expires=calculateExpiryTime(this.options.expirySeconds);entry.accessed=Date.now();return this.options.cloneValues?(0,utils_1.cloneObject)(entry.value):entry.value}set(key,value){if(this.options.maxEntries>0&&this.cache.size>=this.options.maxEntries&&!this.cache.has(key)){let oldest=null;const now=Date.now();for(const[key,entry]of this.cache.entries()){if(entry.expires<=now){this.cache.delete(key);oldest=null;break}if(!oldest||entry.accessed{if(entry.expires<=now){this.cache.delete(key)}}))}}exports.SimpleCache=SimpleCache},{"./utils":57}],52:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Colorize=exports.SetColorsEnabled=exports.ColorsSupported=exports.ColorStyle=void 0;const process_1=require("./process");const FontCode={bold:1,dim:2,italic:3,underline:4,inverse:7,hidden:8,strikethrough:94};const ColorCode={black:30,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37,grey:90,brightRed:91};const BgColorCode={bgBlack:40,bgRed:41,bgGreen:42,bgYellow:43,bgBlue:44,bgMagenta:45,bgCyan:46,bgWhite:47,bgGrey:100,bgBrightRed:101};const ResetCode={all:0,color:39,background:49,bold:22,dim:22,italic:23,underline:24,inverse:27,hidden:28,strikethrough:29};var ColorStyle;(function(ColorStyle){ColorStyle["reset"]="reset";ColorStyle["bold"]="bold";ColorStyle["dim"]="dim";ColorStyle["italic"]="italic";ColorStyle["underline"]="underline";ColorStyle["inverse"]="inverse";ColorStyle["hidden"]="hidden";ColorStyle["strikethrough"]="strikethrough";ColorStyle["black"]="black";ColorStyle["red"]="red";ColorStyle["green"]="green";ColorStyle["yellow"]="yellow";ColorStyle["blue"]="blue";ColorStyle["magenta"]="magenta";ColorStyle["cyan"]="cyan";ColorStyle["grey"]="grey";ColorStyle["bgBlack"]="bgBlack";ColorStyle["bgRed"]="bgRed";ColorStyle["bgGreen"]="bgGreen";ColorStyle["bgYellow"]="bgYellow";ColorStyle["bgBlue"]="bgBlue";ColorStyle["bgMagenta"]="bgMagenta";ColorStyle["bgCyan"]="bgCyan";ColorStyle["bgWhite"]="bgWhite";ColorStyle["bgGrey"]="bgGrey"})(ColorStyle=exports.ColorStyle||(exports.ColorStyle={}));function ColorsSupported(){if(typeof process_1.default==="undefined"||!process_1.default.stdout||!process_1.default.env||!process_1.default.platform||process_1.default.platform==="browser"){return false}if(process_1.default.platform==="win32"){return true}const env=process_1.default.env;if(env.COLORTERM){return true}if(env.TERM==="dumb"){return false}if(env.CI||env.TEAMCITY_VERSION){return!!env.TRAVIS}if(["iTerm.app","HyperTerm","Hyper","MacTerm","Apple_Terminal","vscode"].includes(env.TERM_PROGRAM)){return true}if(/^xterm-256|^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(env.TERM)){return true}return false}exports.ColorsSupported=ColorsSupported;let _enabled=ColorsSupported();function SetColorsEnabled(enabled){_enabled=ColorsSupported()&&enabled}exports.SetColorsEnabled=SetColorsEnabled;function Colorize(str,style){if(!_enabled){return str}const openCodes=[],closeCodes=[];const addStyle=style=>{if(style===ColorStyle.reset){openCodes.push(ResetCode.all)}else if(style in FontCode){openCodes.push(FontCode[style]);closeCodes.push(ResetCode[style])}else if(style in ColorCode){openCodes.push(ColorCode[style]);closeCodes.push(ResetCode.color)}else if(style in BgColorCode){openCodes.push(BgColorCode[style]);closeCodes.push(ResetCode.background)}};if(style instanceof Array){style.forEach(addStyle)}else{addStyle(style)}const open=openCodes.map((code=>"["+code+"m")).join("");const close=closeCodes.map((code=>"["+code+"m")).join("");return str.split("\n").map((line=>open+line+close)).join("\n")}exports.Colorize=Colorize;String.prototype.colorize=function(style){return Colorize(this,style)}},{"./process":49}],53:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SimpleEventEmitter=void 0;function runCallback(callback,data){try{callback(data)}catch(err){console.error("Error in subscription callback",err)}}const _subscriptions=Symbol("subscriptions");const _oneTimeEvents=Symbol("oneTimeEvents");class SimpleEventEmitter{constructor(){this[_subscriptions]=[];this[_oneTimeEvents]=new Map}on(event,callback){if(this[_oneTimeEvents].has(event)){return runCallback(callback,this[_oneTimeEvents].get(event))}this[_subscriptions].push({event:event,callback:callback,once:false});return this}off(event,callback){this[_subscriptions]=this[_subscriptions].filter((s=>s.event!==event||callback&&s.callback!==callback));return this}once(event,callback){return new Promise((resolve=>{const ourCallback=data=>{resolve(data);callback===null||callback===void 0?void 0:callback(data)};if(this[_oneTimeEvents].has(event)){runCallback(ourCallback,this[_oneTimeEvents].get(event))}else{this[_subscriptions].push({event:event,callback:ourCallback,once:true})}}))}emit(event,data){if(this[_oneTimeEvents].has(event)){throw new Error(`Event "${event}" was supposed to be emitted only once`)}for(let i=0;i{eventEmitter.emit(event,data)}))}pipeOnce(event,eventEmitter){this.once(event,(data=>{eventEmitter.emitOnce(event,data)}))}}exports.SimpleEventEmitter=SimpleEventEmitter},{}],54:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.EventStream=exports.EventPublisher=exports.EventSubscription=void 0;class EventSubscription{constructor(stop){this.stop=stop;this._internal={state:"init",activatePromises:[]}}activated(callback){if(callback){this._internal.activatePromises.push({callback:callback});if(this._internal.state==="active"){callback(true)}else if(this._internal.state==="canceled"){callback(false,this._internal.cancelReason)}}return new Promise(((resolve,reject)=>{if(this._internal.state==="active"){return resolve()}else if(this._internal.state==="canceled"&&!callback){return reject(new Error(this._internal.cancelReason))}const noop=()=>{};this._internal.activatePromises.push({resolve:resolve,reject:callback?noop:reject})}))}_setActivationState(activated,cancelReason){this._internal.cancelReason=cancelReason;this._internal.state=activated?"active":"canceled";while(this._internal.activatePromises.length>0){const p=this._internal.activatePromises.shift();if(activated){p.callback&&p.callback(true);p.resolve&&p.resolve()}else{p.callback&&p.callback(false,cancelReason);p.reject&&p.reject(cancelReason)}}}}exports.EventSubscription=EventSubscription;class EventPublisher{constructor(publish,start,cancel){this.publish=publish;this.start=start;this.cancel=cancel}}exports.EventPublisher=EventPublisher;class EventStream{constructor(eventPublisherCallback){const subscribers=[];let noMoreSubscribersCallback;let activationState;const STATE_STOPPED="stopped (no more subscribers)";this.subscribe=(callback,activationCallback)=>{if(typeof callback!=="function"){throw new TypeError("callback must be a function")}else if(activationState===STATE_STOPPED){throw new Error("stream can't be used anymore because all subscribers were stopped")}const sub={callback:callback,activationCallback:function(activated,cancelReason){activationCallback===null||activationCallback===void 0?void 0:activationCallback(activated,cancelReason);this.subscription._setActivationState(activated,cancelReason)},subscription:new EventSubscription((function stop(){subscribers.splice(subscribers.indexOf(this),1);return checkActiveSubscribers()}))};subscribers.push(sub);if(typeof activationState!=="undefined"){if(activationState===true){activationCallback===null||activationCallback===void 0?void 0:activationCallback(true);sub.subscription._setActivationState(true)}else if(typeof activationState==="string"){activationCallback===null||activationCallback===void 0?void 0:activationCallback(false,activationState);sub.subscription._setActivationState(false,activationState)}}return sub.subscription};const checkActiveSubscribers=()=>{let ret;if(subscribers.length===0){ret=noMoreSubscribersCallback===null||noMoreSubscribersCallback===void 0?void 0:noMoreSubscribersCallback();activationState=STATE_STOPPED}return Promise.resolve(ret)};this.unsubscribe=callback=>{const remove=callback?subscribers.filter((sub=>sub.callback===callback)):subscribers;remove.forEach((sub=>{const i=subscribers.indexOf(sub);subscribers.splice(i,1)}));checkActiveSubscribers()};this.stop=()=>{subscribers.splice(0);checkActiveSubscribers()};const publish=val=>{subscribers.forEach((sub=>{try{sub.callback(val)}catch(err){console.error(`Error running subscriber callback: ${err.message}`)}}));if(subscribers.length===0){checkActiveSubscribers()}return subscribers.length>0};const start=allSubscriptionsStoppedCallback=>{activationState=true;noMoreSubscribersCallback=allSubscriptionsStoppedCallback;subscribers.forEach((sub=>{var _a;(_a=sub.activationCallback)===null||_a===void 0?void 0:_a.call(sub,true)}))};const cancel=reason=>{activationState=reason;subscribers.forEach((sub=>{var _a;(_a=sub.activationCallback)===null||_a===void 0?void 0:_a.call(sub,false,reason||new Error("unknown reason"))}));subscribers.splice(0)};const publisher=new EventPublisher(publish,start,cancel);eventPublisherCallback(publisher)}}exports.EventStream=EventStream},{}],55:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.deserialize2=exports.serialize2=exports.serialize=exports.detectSerializeVersion=exports.deserialize=void 0;const path_reference_1=require("./path-reference");const utils_1=require("./utils");const ascii85_1=require("./ascii85");const path_info_1=require("./path-info");const partial_array_1=require("./partial-array");const deserialize=data=>{if(data.map===null||typeof data.map==="undefined"){if(typeof data.val==="undefined"){throw new Error("serialized value must have a val property")}return data.val}const deserializeValue=(type,val)=>{if(type==="date"){return new Date(val)}else if(type==="binary"){return ascii85_1.ascii85.decode(val)}else if(type==="reference"){return new path_reference_1.PathReference(val)}else if(type==="regexp"){return new RegExp(val.pattern,val.flags)}else if(type==="array"){return new partial_array_1.PartialArray(val)}else if(type==="bigint"){return BigInt(val)}return val};if(typeof data.map==="string"){return deserializeValue(data.map,data.val)}Object.keys(data.map).forEach((path=>{const type=data.map[path];const keys=path_info_1.PathInfo.getPathKeys(path);let parent=data;let key="val";let val=data.val;keys.forEach((k=>{key=k;parent=val;val=val[key]}));parent[key]=deserializeValue(type,val)}));return data.val};exports.deserialize=deserialize;const detectSerializeVersion=data=>{if(typeof data!=="object"||data===null){return 2}if("map"in data&&"val"in data){return 1}else if("val"in data){if(Object.keys(data).length>1){return 2}return 1}return 2};exports.detectSerializeVersion=detectSerializeVersion;const serialize=obj=>{var _a;if(obj===null||typeof obj!=="object"||obj instanceof Date||obj instanceof ArrayBuffer||obj instanceof path_reference_1.PathReference||obj instanceof RegExp){const ser=(0,exports.serialize)({value:obj});return{map:(_a=ser.map)===null||_a===void 0?void 0:_a.value,val:ser.val.value}}obj=(0,utils_1.cloneObject)(obj);const process=(obj,mappings,prefix)=>{if(obj instanceof partial_array_1.PartialArray){mappings[prefix]="array"}Object.keys(obj).forEach((key=>{const val=obj[key];const path=prefix.length===0?key:`${prefix}/${key}`;if(typeof val==="bigint"){obj[key]=val.toString();mappings[path]="bigint"}else if(val instanceof Date){obj[key]=val.toISOString();mappings[path]="date"}else if(val instanceof ArrayBuffer){obj[key]=ascii85_1.ascii85.encode(val);mappings[path]="binary"}else if(val instanceof path_reference_1.PathReference){obj[key]=val.path;mappings[path]="reference"}else if(val instanceof RegExp){obj[key]={pattern:val.source,flags:val.flags};mappings[path]="regexp"}else if(typeof val==="object"&&val!==null){process(val,mappings,path)}}))};const mappings={};process(obj,mappings,"");const serialized={val:obj};if(Object.keys(mappings).length>0){serialized.map=mappings}return serialized};exports.serialize=serialize;const serialize2=obj=>{const getSerializedValue=val=>{if(typeof val==="bigint"){return{".type":"bigint",".val":val.toString()}}else if(val instanceof Date){return{".type":"date",".val":val.toISOString()}}else if(val instanceof ArrayBuffer){return{".type":"binary",".val":ascii85_1.ascii85.encode(val)}}else if(val instanceof path_reference_1.PathReference){return{".type":"reference",".val":val.path}}else if(val instanceof RegExp){return{".type":"regexp",".val":`/${val.source}/${val.flags}`}}else if(typeof val==="object"&&val!==null){if(val instanceof Array){const copy=[];for(let i=0;i{if(typeof data!=="object"||data===null){return data}if(typeof data[".type"]==="undefined"){if(data instanceof Array){const copy=[];const arr=data;for(let i=0;i{const mkeys=path_info_1.PathInfo.getPathKeys(mpath);if(mkeys.length!==keys.length){return false}return mkeys.every(((mkey,index)=>{if(mkey==="*"||typeof mkey==="string"&&mkey[0]==="$"){return true}return mkey===keys[index]}))}));const mapping=mappings[mappedPath];return mapping}function map(mappings,path){const targetPath=path_info_1.PathInfo.get(path).parentPath;if(targetPath===null){return}return get(mappings,targetPath)}function mapDeep(mappings,entryPath){entryPath=entryPath.replace(/^\/|\/$/g,"");const pathInfo=path_info_1.PathInfo.get(entryPath);const startPath=pathInfo.parentPath;const keys=startPath?path_info_1.PathInfo.getPathKeys(startPath):[];const matches=Object.keys(mappings).reduce(((m,mpath)=>{const mkeys=path_info_1.PathInfo.getPathKeys(mpath);if(mkeys.length{if(index>=keys.length){return false}else if(mkey==="*"||typeof mkey==="string"&&mkey[0]==="$"||mkey===keys[index]){return true}else{isMatch=false;return false}}))}if(isMatch){const mapping=mappings[mpath];m.push({path:mpath,type:mapping})}return m}),[]);return matches}function process(db,mappings,path,obj,action){if(obj===null||typeof obj!=="object"){return obj}const keys=path_info_1.PathInfo.getPathKeys(path);const m=mapDeep(mappings,path);const changes=[];m.sort(((a,b)=>path_info_1.PathInfo.getPathKeys(a.path).length>path_info_1.PathInfo.getPathKeys(b.path).length?-1:1));m.forEach((mapping=>{const mkeys=path_info_1.PathInfo.getPathKeys(mapping.path);mkeys.push("*");const mTrailKeys=mkeys.slice(keys.length);if(mTrailKeys.length===0){const vars=path_info_1.PathInfo.extractVariables(mapping.path,path);const ref=new data_reference_1.DataReference(db,path,vars);if(action==="serialize"){obj=mapping.type.serialize(obj,ref)}else if(action==="deserialize"){const snap=new data_snapshot_1.DataSnapshot(ref,obj);obj=mapping.type.deserialize(snap)}return}const process=(parentPath,parent,keys)=>{if(obj===null||typeof obj!=="object"){return obj}const key=keys[0];let children=[];if(key==="*"||typeof key==="string"&&key[0]==="$"){if(parent instanceof Array){children=parent.map(((val,index)=>({key:index,val:val})))}else{children=Object.keys(parent).map((k=>({key:k,val:parent[k]})))}}else{const child=parent[key];if(typeof child==="object"){children.push({key:key,val:child})}}children.forEach((child=>{const childPath=path_info_1.PathInfo.getChildPath(parentPath,child.key);const vars=path_info_1.PathInfo.extractVariables(mapping.path,childPath);const ref=new data_reference_1.DataReference(db,childPath,vars);if(keys.length===1){if(action==="serialize"){changes.push({parent:parent,key:child.key,original:parent[child.key]});parent[child.key]=mapping.type.serialize(child.val,ref)}else if(action==="deserialize"){const snap=new data_snapshot_1.DataSnapshot(ref,child.val);parent[child.key]=mapping.type.deserialize(snap)}}else{process(childPath,child.val,keys.slice(1))}}))};process(path,obj,mTrailKeys)}));if(action==="serialize"){obj=(0,utils_1.cloneObject)(obj);if(changes.length>0){changes.forEach((change=>{change.parent[change.key]=change.original}))}}return obj}const _mappings=Symbol("mappings");class TypeMappings{constructor(db){this.db=db;this[_mappings]={}}get mappings(){return this[_mappings]}map(path){return map(this[_mappings],path)}bind(path,type,options={}){if(typeof path!=="string"){throw new TypeError("path must be a string")}if(typeof type!=="function"){throw new TypeError("constructor must be a function")}if(typeof options.serializer==="undefined"){}else if(typeof options.serializer==="string"){if(typeof type.prototype[options.serializer]==="function"){options.serializer=type.prototype[options.serializer]}else{throw new TypeError(`${type.name}.prototype.${options.serializer} is not a function, cannot use it as serializer`)}}else if(typeof options.serializer!=="function"){throw new TypeError(`serializer for class ${type.name} must be a function, or the name of a prototype method`)}if(typeof options.creator==="undefined"){if(typeof type.create==="function"){options.creator=type.create}}else if(typeof options.creator==="string"){if(typeof type[options.creator]==="function"){options.creator=type[options.creator]}else{throw new TypeError(`${type.name}.${options.creator} is not a function, cannot use it as creator`)}}else if(typeof options.creator!=="function"){throw new TypeError(`creator for class ${type.name} must be a function, or the name of a static method`)}path=path.replace(/^\/|\/$/g,"");this[_mappings][path]={db:this.db,type:type,creator:options.creator,serializer:options.serializer,deserialize(snap){let obj;if(this.creator){obj=this.creator.call(this.type,snap)}else{obj=new this.type(snap)}return obj},serialize(obj,ref){if(this.serializer){obj=this.serializer.call(obj,ref,obj)}else if(obj&&typeof obj.serialize==="function"){obj=obj.serialize(ref,obj)}return obj}}}serialize(path,obj){return process(this.db,this[_mappings],path,obj,"serialize")}deserialize(path,obj){return process(this.db,this[_mappings],path,obj,"deserialize")}}exports.TypeMappings=TypeMappings},{"./data-reference":39,"./data-snapshot":40,"./path-info":47,"./utils":57}],57:[function(require,module,exports){(function(global,Buffer){(function(){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getGlobalObject=exports.defer=exports.getChildValues=exports.getMutations=exports.compareValues=exports.ObjectDifferences=exports.valuesAreEqual=exports.cloneObject=exports.concatTypedArrays=exports.decodeString=exports.encodeString=exports.bytesToBigint=exports.bigintToBytes=exports.bytesToNumber=exports.numberToBytes=void 0;const path_reference_1=require("./path-reference");const process_1=require("./process");const partial_array_1=require("./partial-array");function numberToBytes(number){const bytes=new Uint8Array(8);const view=new DataView(bytes.buffer);view.setFloat64(0,number);return new Array(...bytes)}exports.numberToBytes=numberToBytes;function bytesToNumber(bytes){const length=Array.isArray(bytes)?bytes.length:bytes.byteLength;if(length!==8){throw new TypeError("must be 8 bytes")}const bin=new Uint8Array(bytes);const view=new DataView(bin.buffer);const nr=view.getFloat64(0);return nr}exports.bytesToNumber=bytesToNumber;const big={zero:BigInt(0),one:BigInt(1),two:BigInt(2),eight:BigInt(8),ff:BigInt(255)};function bigintToBytes(number){if(typeof number!=="bigint"){throw new Error("number must be a bigint")}const bytes=[];const negative=number>big.eight}while(number!==(negative?-big.one:big.zero));bytes.reverse();if(negative?bytes[0]<128:bytes[0]>=128){bytes.unshift(negative?255:0)}return bytes}exports.bigintToBytes=bigintToBytes;function bytesToBigint(bytes){const negative=bytes[0]>=128;let number=big.zero;for(let b of bytes){if(negative){b=~b&255}number=(number<128){if((code&55296)===55296){const nextCode=str.charCodeAt(i+1);if((nextCode&56320)!==56320){throw new Error("follow-up utf-16 character does not start with 0xDC00")}i++;const p1=code&1023;const p2=nextCode&1023;code=65536|p1<<10|p2}if(code<2048){const b1=192|code>>6&31;const b2=128|code&63;arr.push(b1,b2)}else if(code<65536){const b1=224|code>>12&15;const b2=128|code>>6&63;const b3=128|code&63;arr.push(b1,b2,b3)}else if(code<2097152){const b1=240|code>>18&7;const b2=128|code>>12&63;const b3=128|code>>6&63;const b4=128|code&63;arr.push(b1,b2,b3,b4)}else{throw new Error(`Cannot convert character ${str.charAt(i)} (code ${code}) to utf-8`)}}else{arr.push(code<128?code:63)}}return new Uint8Array(arr)}}exports.encodeString=encodeString;function decodeString(buffer){if(typeof TextDecoder!=="undefined"){const decoder=new TextDecoder;if(buffer instanceof Uint8Array){return decoder.decode(buffer)}const buf=Uint8Array.from(buffer);return decoder.decode(buf)}else if(typeof Buffer==="function"){if(buffer instanceof Array){buffer=Uint8Array.from(buffer)}if(!(buffer instanceof Buffer)&&"buffer"in buffer&&buffer.buffer instanceof ArrayBuffer){const typedArray=buffer;buffer=Buffer.from(typedArray.buffer,typedArray.byteOffset,typedArray.byteLength)}if(!(buffer instanceof Buffer)){throw new Error("Unsupported buffer argument")}return buffer.toString("utf-8")}else{if(!(buffer instanceof Uint8Array)&&"buffer"in buffer&&buffer["buffer"]instanceof ArrayBuffer){const typedArray=buffer;buffer=new Uint8Array(typedArray.buffer,typedArray.byteOffset,typedArray.byteLength)}if(buffer instanceof Buffer||buffer instanceof Array||buffer instanceof Uint8Array){let str="";for(let i=0;i128){if((code&240)===240){const b1=code,b2=buffer[i+1],b3=buffer[i+2],b4=buffer[i+3];code=(b1&7)<<18|(b2&63)<<12|(b3&63)<<6|b4&63;i+=3}else if((code&224)===224){const b1=code,b2=buffer[i+1],b3=buffer[i+2];code=(b1&15)<<12|(b2&63)<<6|b3&63;i+=2}else if((code&192)===192){const b1=code,b2=buffer[i+1];code=(b1&31)<<6|b2&63;i++}else{throw new Error("invalid utf-8 data")}}if(code>=65536){code^=65536;const p1=55296|code>>10;const p2=56320|code&1023;str+=String.fromCharCode(p1);str+=String.fromCharCode(p2)}else{str+=String.fromCharCode(code)}}return str}else{throw new Error("Unsupported buffer argument")}}}exports.decodeString=decodeString;function concatTypedArrays(a,b){const c=new a.constructor(a.length+b.length);c.set(a);c.set(b,a.length);return c}exports.concatTypedArrays=concatTypedArrays;function cloneObject(original,stack){var _a;if(((_a=original===null||original===void 0?void 0:original.constructor)===null||_a===void 0?void 0:_a.name)==="DataSnapshot"){throw new TypeError(`Object to clone is a DataSnapshot (path "${original.ref.path}")`)}const checkAndFixTypedArray=obj=>{if(obj!==null&&typeof obj==="object"&&typeof obj.constructor==="function"&&typeof obj.constructor.name==="string"&&["Buffer","Uint8Array","Int8Array","Uint16Array","Int16Array","Uint32Array","Int32Array","BigUint64Array","BigInt64Array"].includes(obj.constructor.name)){obj=obj.buffer.slice(obj.byteOffset,obj.byteOffset+obj.byteLength)}return obj};original=checkAndFixTypedArray(original);if(typeof original!=="object"||original===null||original instanceof Date||original instanceof ArrayBuffer||original instanceof path_reference_1.PathReference||original instanceof RegExp){return original}const cloneValue=val=>{if(stack.indexOf(val)>=0){throw new ReferenceError("object contains a circular reference")}val=checkAndFixTypedArray(val);if(val===null||val instanceof Date||val instanceof ArrayBuffer||val instanceof path_reference_1.PathReference||val instanceof RegExp){return val}else if(typeof val==="object"){stack.push(val);val=cloneObject(val,stack);stack.pop();return val}else{return val}};if(typeof stack==="undefined"){stack=[original]}const clone=original instanceof Array?[]:original instanceof partial_array_1.PartialArray?new partial_array_1.PartialArray:{};Object.keys(original).forEach((key=>{const val=original[key];if(typeof val==="function"){return}clone[key]=cloneValue(val)}));return clone}exports.cloneObject=cloneObject;const isTypedArray=val=>typeof val==="object"&&["ArrayBuffer","Buffer","Uint8Array","Uint16Array","Uint32Array","Int8Array","Int16Array","Int32Array"].includes(val.constructor.name);function valuesAreEqual(val1,val2){if(val1===val2){return true}if(typeof val1!==typeof val2){return false}if(typeof val1==="object"||typeof val2==="object"){if(val1===null||val2===null){return false}if(val1 instanceof path_reference_1.PathReference||val2 instanceof path_reference_1.PathReference){return val1 instanceof path_reference_1.PathReference&&val2 instanceof path_reference_1.PathReference&&val1.path===val2.path}if(val1 instanceof Date||val2 instanceof Date){return val1 instanceof Date&&val2 instanceof Date&&val1.getTime()===val2.getTime()}if(val1 instanceof Array||val2 instanceof Array){return val1 instanceof Array&&val2 instanceof Array&&val1.length===val2.length&&val1.every(((item,i)=>valuesAreEqual(val1[i],val2[i])))}if(isTypedArray(val1)||isTypedArray(val2)){if(!isTypedArray(val1)||!isTypedArray(val2)||val1.byteLength===val2.byteLength){return false}const typed1=val1 instanceof ArrayBuffer?new Uint8Array(val1):new Uint8Array(val1.buffer,val1.byteOffset,val1.byteLength),typed2=val2 instanceof ArrayBuffer?new Uint8Array(val2):new Uint8Array(val2.buffer,val2.byteOffset,val2.byteLength);return typed1.every(((val,i)=>typed2[i]===val))}const keys1=Object.keys(val1),keys2=Object.keys(val2);return keys1.length===keys2.length&&keys1.every((key=>keys2.includes(key)))&&keys1.every((key=>valuesAreEqual(val1[key],val2[key])))}return false}exports.valuesAreEqual=valuesAreEqual;class ObjectDifferences{constructor(added,removed,changed){this.added=added;this.removed=removed;this.changed=changed}forChild(key){if(this.added.includes(key)){return"added"}if(this.removed.includes(key)){return"removed"}const changed=this.changed.find((ch=>ch.key===key));return changed?changed.change:"identical"}}exports.ObjectDifferences=ObjectDifferences;function compareValues(oldVal,newVal,sortedResults=false){const voids=[undefined,null];if(oldVal===newVal){return"identical"}else if(voids.indexOf(oldVal)>=0&&voids.indexOf(newVal)<0){return"added"}else if(voids.indexOf(oldVal)<0&&voids.indexOf(newVal)>=0){return"removed"}else if(typeof oldVal!==typeof newVal){return"changed"}else if(isTypedArray(oldVal)||isTypedArray(newVal)){if(!isTypedArray(oldVal)||!isTypedArray(newVal)){return"changed"}const typed1=oldVal instanceof Uint8Array?oldVal:oldVal instanceof ArrayBuffer?new Uint8Array(oldVal):new Uint8Array(oldVal.buffer,oldVal.byteOffset,oldVal.byteLength);const typed2=newVal instanceof Uint8Array?newVal:newVal instanceof ArrayBuffer?new Uint8Array(newVal):new Uint8Array(newVal.buffer,newVal.byteOffset,newVal.byteLength);return typed1.byteLength===typed2.byteLength&&typed1.every(((val,i)=>typed2[i]===val))?"identical":"changed"}else if(oldVal instanceof Date||newVal instanceof Date){return oldVal instanceof Date&&newVal instanceof Date&&oldVal.getTime()===newVal.getTime()?"identical":"changed"}else if(oldVal instanceof path_reference_1.PathReference||newVal instanceof path_reference_1.PathReference){return oldVal instanceof path_reference_1.PathReference&&newVal instanceof path_reference_1.PathReference&&oldVal.path===newVal.path?"identical":"changed"}else if(typeof oldVal==="object"){const isArray=oldVal instanceof Array;const getKeys=obj=>{let keys=Object.keys(obj).filter((key=>!voids.includes(obj[key])));if(isArray){keys=keys.map((v=>parseInt(v)))}return keys};const oldKeys=getKeys(oldVal);const newKeys=getKeys(newVal);const removedKeys=oldKeys.filter((key=>!newKeys.includes(key)));const addedKeys=newKeys.filter((key=>!oldKeys.includes(key)));const changedKeys=newKeys.reduce(((changed,key)=>{if(oldKeys.includes(key)){const val1=oldVal[key];const val2=newVal[key];const c=compareValues(val1,val2);if(c!=="identical"){changed.push({key:key,change:c})}}return changed}),[]);if(addedKeys.length===0&&removedKeys.length===0&&changedKeys.length===0){return"identical"}else{return new ObjectDifferences(addedKeys,removedKeys,sortedResults?changedKeys.sort(((a,b)=>a.key{switch(compareResult){case"identical":return[];case"changed":return[{target:target,prev:prev,val:val}];case"added":return[{target:target,prev:null,val:val}];case"removed":return[{target:target,prev:prev,val:null}];default:{let changes=[];compareResult.added.forEach((key=>changes.push({target:target.concat(key),prev:null,val:val[key]})));compareResult.removed.forEach((key=>changes.push({target:target.concat(key),prev:prev[key],val:null})));compareResult.changed.forEach((item=>{const childChanges=process(target.concat(item.key),item.change,prev[item.key],val[item.key]);changes=changes.concat(childChanges)}));return changes}}};const compareResult=compareValues(oldVal,newVal,sortedResults);return process([],compareResult,oldVal,newVal)}exports.getMutations=getMutations;function getChildValues(childKey,oldValue,newValue){oldValue=oldValue===null?null:oldValue[childKey];if(typeof oldValue==="undefined"){oldValue=null}newValue=newValue===null?null:newValue[childKey];if(typeof newValue==="undefined"){newValue=null}return{oldValue:oldValue,newValue:newValue}}exports.getChildValues=getChildValues;function defer(fn){process_1.default.nextTick(fn)}exports.defer=defer;function getGlobalObject(){var _a;if(typeof globalThis!=="undefined"){return globalThis}if(typeof global!=="undefined"){return global}if(typeof window!=="undefined"){return window}if(typeof self!=="undefined"){return self}return(_a=function(){return this}())!==null&&_a!==void 0?_a:Function("return this")()}exports.getGlobalObject=getGlobalObject}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer)},{"./partial-array":46,"./path-reference":48,"./process":49,buffer:58}],58:[function(require,module,exports){},{}]},{},[6])(6)})); \ No newline at end of file +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.acebase=f()}})((function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,(function(r){var n=e[i][1][r];return o(n||r)}),p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i{await this.ready();if(this.api.storage instanceof binary_1.AceBaseStorage){await this.api.storage.repairNode(path,options)}else if(!this.api.storage.repairNode){throw new Error(`repairNode is not supported with chosen storage engine`)}},repairNodeTree:async path=>{await this.ready();const storage=this.api.storage;await storage.repairNodeTree(path)}};const apiSettings={db:this,settings:settings};this.api=new api_local_1.LocalApi(dbname,apiSettings,(()=>{this.emit("ready")}))}async close(){await this.api.storage.close()}get settings(){const ipc=this.api.storage.ipc,debug=this.debug;return{get logLevel(){return debug.level},set logLevel(level){debug.setLevel(level)},get ipcEvents(){return ipc.eventsEnabled},set ipcEvents(enabled){ipc.eventsEnabled=enabled}}}static WithLocalStorage(dbname,settings={}){const db=(0,local_storage_1.createLocalStorageInstance)(dbname,settings);return db}static WithIndexedDB(dbname,init={}){throw new Error(`IndexedDB storage can only be used in browser contexts`)}}exports.AceBase=AceBase},{"./api-local":3,"./storage/binary":18,"./storage/custom/indexed-db/settings":23,"./storage/custom/local-storage":25,"acebase-core":43}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LocalApi=void 0;const acebase_core_1=require("acebase-core");const binary_1=require("./storage/binary");const sqlite_1=require("./storage/sqlite");const mssql_1=require("./storage/mssql");const custom_1=require("./storage/custom");const node_value_types_1=require("./node-value-types");const query_1=require("./query");const node_errors_1=require("./node-errors");class LocalApi extends acebase_core_1.Api{constructor(dbname="default",init,readyCallback){super();this.db=init.db;const storageEnv={logLevel:init.settings.logLevel};if(typeof init.settings.storage==="object"){if(sqlite_1.SQLiteStorageSettings&&init.settings.storage instanceof sqlite_1.SQLiteStorageSettings){this.storage=new sqlite_1.SQLiteStorage(dbname,init.settings.storage,storageEnv)}else if(mssql_1.MSSQLStorageSettings&&init.settings.storage instanceof mssql_1.MSSQLStorageSettings){this.storage=new mssql_1.MSSQLStorage(dbname,init.settings.storage,storageEnv)}else if(custom_1.CustomStorageSettings&&init.settings.storage instanceof custom_1.CustomStorageSettings){this.storage=new custom_1.CustomStorage(dbname,init.settings.storage,storageEnv)}else{const storageSettings=init.settings.storage instanceof binary_1.AceBaseStorageSettings?init.settings.storage:new binary_1.AceBaseStorageSettings(init.settings.storage);this.storage=new binary_1.AceBaseStorage(dbname,storageSettings,storageEnv)}}else{this.storage=new binary_1.AceBaseStorage(dbname,new binary_1.AceBaseStorageSettings,storageEnv)}this.storage.on("ready",readyCallback)}async stats(options){return this.storage.stats}subscribe(path,event,callback){this.storage.subscriptions.add(path,event,callback)}unsubscribe(path,event,callback){this.storage.subscriptions.remove(path,event,callback)}async set(path,value,options={suppress_events:false,context:null}){const cursor=await this.storage.setNode(path,value,{suppress_events:options.suppress_events,context:options.context});return Object.assign({},cursor&&{cursor:cursor})}async update(path,updates,options={suppress_events:false,context:null}){const cursor=await this.storage.updateNode(path,updates,{suppress_events:options.suppress_events,context:options.context});return Object.assign({},cursor&&{cursor:cursor})}get transactionLoggingEnabled(){return this.storage.settings.transactions&&this.storage.settings.transactions.log===true}async get(path,options){if(!options){options={}}if(typeof options.include!=="undefined"&&!(options.include instanceof Array)){throw new TypeError(`options.include must be an array of key names`)}if(typeof options.exclude!=="undefined"&&!(options.exclude instanceof Array)){throw new TypeError(`options.exclude must be an array of key names`)}if(["undefined","boolean"].indexOf(typeof options.child_objects)<0){throw new TypeError(`options.child_objects must be a boolean`)}const node=await this.storage.getNode(path,options);return{value:node.value,context:{acebase_cursor:node.cursor},cursor:node.cursor}}async transaction(path,callback,options={suppress_events:false,context:null}){const cursor=await this.storage.transactNode(path,callback,{suppress_events:options.suppress_events,context:options.context});return Object.assign({},cursor&&{cursor:cursor})}async exists(path){const nodeInfo=await this.storage.getNodeInfo(path);return nodeInfo.exists}async query(path,query,options={snapshots:false}){const results=await(0,query_1.executeQuery)(this,path,query,options);return results}createIndex(path,key,options){return this.storage.indexes.create(path,key,options)}async getIndexes(){return this.storage.indexes.list()}async deleteIndex(filePath){return this.storage.indexes.delete(filePath)}async reflect(path,type,args){args=args||{};const getChildren=async(path,limit=50,skip=0,from=null)=>{if(typeof limit==="string"){limit=parseInt(limit)}if(typeof skip==="string"){skip=parseInt(skip)}if(["null","undefined"].includes(from)){from=null}const children=[];let n=0,stop=false,more=false;await this.storage.getChildren(path).next((childInfo=>{if(stop){more=true;return false}n++;const include=from!==null?childInfo.key>from:skip===0||n>skip;if(include){children.push(Object.assign({key:typeof childInfo.key==="string"?childInfo.key:childInfo.index,type:childInfo.valueTypeName,value:childInfo.value},typeof childInfo.address==="object"&&"pageNr"in childInfo.address&&{address:{pageNr:childInfo.address.pageNr,recordNr:childInfo.address.recordNr}}))}stop=limit>0&&children.length===limit})).catch((err=>{if(!(err instanceof node_errors_1.NodeNotFoundError)){throw err}}));return{more:more,list:children}};switch(type){case"children":{const result=await getChildren(path,args.limit,args.skip,args.from);return result}case"info":{const info={key:"",exists:false,type:"unknown",value:undefined,address:undefined,children:{count:0,more:false,list:[]}};const nodeInfo=await this.storage.getNodeInfo(path,{include_child_count:args.child_count===true});info.key=typeof nodeInfo.key!=="undefined"?nodeInfo.key:nodeInfo.index;info.exists=nodeInfo.exists;info.type=nodeInfo.exists?nodeInfo.valueTypeName:undefined;info.value=nodeInfo.value;info.address=typeof nodeInfo.address==="object"&&"pageNr"in nodeInfo.address?{pageNr:nodeInfo.address.pageNr,recordNr:nodeInfo.address.recordNr}:undefined;const isObjectOrArray=nodeInfo.exists&&nodeInfo.address&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(nodeInfo.type);if(args.child_count===true){info.children={count:isObjectOrArray?nodeInfo.childCount:0}}else if(typeof args.child_limit==="number"&&args.child_limit>0){if(isObjectOrArray){info.children=await getChildren(path,args.child_limit,args.child_skip,args.child_from)}}return info}}}export(path,stream,options={format:"json",type_safe:true}){return this.storage.exportNode(path,stream,options)}import(path,read,options={format:"json",suppress_events:false,method:"set"}){return this.storage.importNode(path,read,options)}async setSchema(path,schema){return this.storage.setSchema(path,schema)}async getSchema(path){return this.storage.getSchema(path)}async getSchemas(){return this.storage.getSchemas()}async validateSchema(path,value,isUpdate){return this.storage.validateSchema(path,value,{updates:isUpdate})}async getMutations(filter){if(typeof this.storage.getMutations!=="function"){throw new Error("Used storage type does not support getMutations")}if(typeof filter!=="object"){throw new Error("No filter specified")}if(typeof filter.cursor!=="string"&&typeof filter.timestamp!=="number"){throw new Error("No cursor or timestamp given")}return this.storage.getMutations(filter)}async getChanges(filter){if(typeof this.storage.getChanges!=="function"){throw new Error("Used storage type does not support getChanges")}if(typeof filter!=="object"){throw new Error("No filter specified")}if(typeof filter.cursor!=="string"&&typeof filter.timestamp!=="number"){throw new Error("No cursor or timestamp given")}return this.storage.getChanges(filter)}}exports.LocalApi=LocalApi},{"./node-errors":11,"./node-value-types":14,"./query":17,"./storage/binary":18,"./storage/custom":21,"./storage/mssql":30,"./storage/sqlite":31,"acebase-core":43}],4:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.assert=void 0;function assert(condition,error){if(!condition){throw new Error(`Assertion failed: ${error!==null&&error!==void 0?error:"check your code"}`)}}exports.assert=assert},{}],5:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AsyncTaskBatch=void 0;class AsyncTaskBatch{constructor(limit=1e3,options){this.limit=limit;this.options=options;this.added=0;this.scheduled=[];this.running=0;this.results=[];this.done=false}async execute(task,index){var _a,_b;try{this.running++;const result=await task();this.results[index]=result;this.running--;if(this.running===0&&this.scheduled.length===0){this.done=true;(_a=this.doneCallback)===null||_a===void 0?void 0:_a.call(this,this.results)}else if(this.scheduled.length>0){const next=this.scheduled.shift();this.execute(next.task,next.index)}}catch(err){this.done=true;(_b=this.errorCallback)===null||_b===void 0?void 0:_b.call(this,err)}}add(task){var _a;if(this.done){throw new Error(`Cannot add to a batch that has already finished. Use wait option and start batch processing manually if you are adding tasks in an async loop`)}const index=this.added++;if(((_a=this.options)===null||_a===void 0?void 0:_a.wait)!==true&&this.running{this.doneCallback=resolve;this.errorCallback=reject}));return this.results}}exports.AsyncTaskBatch=AsyncTaskBatch},{}],6:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SchemaValidationError=exports.StorageSettings=exports.ICustomStorageNodeMetaData=exports.ICustomStorageNode=exports.CustomStorageHelpers=exports.CustomStorageSettings=exports.CustomStorageTransaction=exports.MSSQLStorageSettings=exports.SQLiteStorageSettings=exports.AceBaseStorageSettings=exports.IndexedDBStorageSettings=exports.LocalStorageSettings=exports.AceBaseLocalSettings=exports.AceBase=exports.PartialArray=exports.proxyAccess=exports.ID=exports.ObjectCollection=exports.TypeMappings=exports.PathReference=exports.EventSubscription=exports.EventStream=exports.DataReferencesArray=exports.DataSnapshotsArray=exports.DataReference=exports.DataSnapshot=void 0;const acebase_core_1=require("acebase-core");Object.defineProperty(exports,"DataReference",{enumerable:true,get:function(){return acebase_core_1.DataReference}});Object.defineProperty(exports,"DataSnapshot",{enumerable:true,get:function(){return acebase_core_1.DataSnapshot}});Object.defineProperty(exports,"EventSubscription",{enumerable:true,get:function(){return acebase_core_1.EventSubscription}});Object.defineProperty(exports,"PathReference",{enumerable:true,get:function(){return acebase_core_1.PathReference}});Object.defineProperty(exports,"TypeMappings",{enumerable:true,get:function(){return acebase_core_1.TypeMappings}});Object.defineProperty(exports,"ID",{enumerable:true,get:function(){return acebase_core_1.ID}});Object.defineProperty(exports,"proxyAccess",{enumerable:true,get:function(){return acebase_core_1.proxyAccess}});Object.defineProperty(exports,"DataSnapshotsArray",{enumerable:true,get:function(){return acebase_core_1.DataSnapshotsArray}});Object.defineProperty(exports,"ObjectCollection",{enumerable:true,get:function(){return acebase_core_1.ObjectCollection}});Object.defineProperty(exports,"DataReferencesArray",{enumerable:true,get:function(){return acebase_core_1.DataReferencesArray}});Object.defineProperty(exports,"EventStream",{enumerable:true,get:function(){return acebase_core_1.EventStream}});Object.defineProperty(exports,"PartialArray",{enumerable:true,get:function(){return acebase_core_1.PartialArray}});const acebase_local_1=require("./acebase-local");const acebase_browser_1=require("./acebase-browser");Object.defineProperty(exports,"AceBase",{enumerable:true,get:function(){return acebase_browser_1.BrowserAceBase}});const custom_1=require("./storage/custom");const acebase={AceBase:acebase_browser_1.BrowserAceBase,AceBaseLocalSettings:acebase_local_1.AceBaseLocalSettings,DataReference:acebase_core_1.DataReference,DataSnapshot:acebase_core_1.DataSnapshot,EventSubscription:acebase_core_1.EventSubscription,PathReference:acebase_core_1.PathReference,TypeMappings:acebase_core_1.TypeMappings,CustomStorageSettings:custom_1.CustomStorageSettings,CustomStorageTransaction:custom_1.CustomStorageTransaction,CustomStorageHelpers:custom_1.CustomStorageHelpers,ID:acebase_core_1.ID,proxyAccess:acebase_core_1.proxyAccess,DataSnapshotsArray:acebase_core_1.DataSnapshotsArray};window.acebase=acebase;window.AceBase=acebase_browser_1.BrowserAceBase;exports.default=acebase;var acebase_local_2=require("./acebase-local");Object.defineProperty(exports,"AceBaseLocalSettings",{enumerable:true,get:function(){return acebase_local_2.AceBaseLocalSettings}});Object.defineProperty(exports,"LocalStorageSettings",{enumerable:true,get:function(){return acebase_local_2.LocalStorageSettings}});Object.defineProperty(exports,"IndexedDBStorageSettings",{enumerable:true,get:function(){return acebase_local_2.IndexedDBStorageSettings}});var binary_1=require("./storage/binary");Object.defineProperty(exports,"AceBaseStorageSettings",{enumerable:true,get:function(){return binary_1.AceBaseStorageSettings}});var sqlite_1=require("./storage/sqlite");Object.defineProperty(exports,"SQLiteStorageSettings",{enumerable:true,get:function(){return sqlite_1.SQLiteStorageSettings}});var mssql_1=require("./storage/mssql");Object.defineProperty(exports,"MSSQLStorageSettings",{enumerable:true,get:function(){return mssql_1.MSSQLStorageSettings}});var custom_2=require("./storage/custom");Object.defineProperty(exports,"CustomStorageTransaction",{enumerable:true,get:function(){return custom_2.CustomStorageTransaction}});Object.defineProperty(exports,"CustomStorageSettings",{enumerable:true,get:function(){return custom_2.CustomStorageSettings}});Object.defineProperty(exports,"CustomStorageHelpers",{enumerable:true,get:function(){return custom_2.CustomStorageHelpers}});Object.defineProperty(exports,"ICustomStorageNode",{enumerable:true,get:function(){return custom_2.ICustomStorageNode}});Object.defineProperty(exports,"ICustomStorageNodeMetaData",{enumerable:true,get:function(){return custom_2.ICustomStorageNodeMetaData}});var storage_1=require("./storage");Object.defineProperty(exports,"StorageSettings",{enumerable:true,get:function(){return storage_1.StorageSettings}});Object.defineProperty(exports,"SchemaValidationError",{enumerable:true,get:function(){return storage_1.SchemaValidationError}})},{"./acebase-browser":1,"./acebase-local":2,"./storage":28,"./storage/binary":18,"./storage/custom":21,"./storage/mssql":30,"./storage/sqlite":31,"acebase-core":43}],7:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ArrayIndex=exports.GeoIndex=exports.FullTextIndex=exports.DataIndex=void 0;const not_supported_1=require("../not-supported");class DataIndex extends not_supported_1.NotSupported{}exports.DataIndex=DataIndex;class FullTextIndex extends not_supported_1.NotSupported{}exports.FullTextIndex=FullTextIndex;class GeoIndex extends not_supported_1.NotSupported{}exports.GeoIndex=GeoIndex;class ArrayIndex extends not_supported_1.NotSupported{}exports.ArrayIndex=ArrayIndex},{"../not-supported":15}],8:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NetIPCServer=exports.IPCSocketPeer=exports.RemoteIPCPeer=exports.IPCPeer=void 0;const acebase_core_1=require("acebase-core");const ipc_1=require("./ipc");const not_supported_1=require("../not-supported");Object.defineProperty(exports,"RemoteIPCPeer",{enumerable:true,get:function(){return not_supported_1.NotSupported}});Object.defineProperty(exports,"IPCSocketPeer",{enumerable:true,get:function(){return not_supported_1.NotSupported}});Object.defineProperty(exports,"NetIPCServer",{enumerable:true,get:function(){return not_supported_1.NotSupported}});class IPCPeer extends ipc_1.AceBaseIPCPeer{constructor(storage){super(storage,acebase_core_1.ID.generate());this.masterPeerId=this.id;this.ipcType="browser.bcc";window.addEventListener("beforeunload",(()=>{this.exit()}));if(typeof window.BroadcastChannel!=="undefined"){this.channel=new BroadcastChannel(`acebase:${storage.name}`)}else{const listeners=[null];const notImplemented=()=>{throw new Error("Not implemented")};this.channel={name:`acebase:${storage.name}`,postMessage:message=>{const messageId=acebase_core_1.ID.generate(),key=`acebase:${storage.name}:${this.id}:${messageId}`,payload=JSON.stringify(acebase_core_1.Transport.serialize(message));localStorage.setItem(key,payload);setTimeout((()=>localStorage.removeItem(key)),10)},set onmessage(handler){listeners[0]=handler},set onmessageerror(handler){notImplemented()},close(){notImplemented()},addEventListener(event,callback){if(event!=="message"){notImplemented()}listeners.push(callback)},removeEventListener(event,callback){const i=listeners.indexOf(callback);i>=1&&listeners.splice(i,1)},dispatchEvent(event){listeners.forEach((callback=>{try{callback&&callback(event)}catch(err){console.error(err)}}));return true}};window.addEventListener("storage",(event=>{const[acebase,dbname,peerId,messageId]=event.key.split(":");if(acebase!=="acebase"||dbname!==storage.name||peerId===this.id||event.newValue===null){return}const message=acebase_core_1.Transport.deserialize(JSON.parse(event.newValue));this.channel.dispatchEvent({data:message})}))}this.channel.addEventListener("message",(async event=>{const message=event.data;if(message.to&&message.to!==this.id){return}storage.debug.verbose(`[BroadcastChannel] received: `,message);if(message.type==="hello"&&message.frompeer.id)).concat(this.id).filter((id=>id!==this.masterPeerId));this.masterPeerId=allPeerIds.sort()[0];storage.debug.log(`[BroadcastChannel] ${this.masterPeerId===this.id?"We are":`tab ${this.masterPeerId} is`} the new master. Requesting ${this._locks.length} locks (${this._locks.filter((r=>!r.granted)).length} pending)`);const requests=this._locks.splice(0);await Promise.all(requests.filter((req=>req.granted)).map((async req=>{let released,movedToParent;req.lock.release=()=>new Promise((resolve=>released=resolve));req.lock.moveToParent=()=>new Promise((resolve=>movedToParent=resolve));const lock=await this.lock({path:req.lock.path,write:req.lock.forWriting,tid:req.lock.tid,comment:req.lock.comment});if(movedToParent){const newLock=await lock.moveToParent();movedToParent(newLock)}if(released){await lock.release();released()}})));await Promise.all(requests.filter((req=>!req.granted)).map((async req=>{await this.lock(req.request)})))}return this.handleMessage(message)}));const helloMsg={type:"hello",from:this.id,data:undefined};this.sendMessage(helloMsg)}sendMessage(message){this.storage.debug.verbose(`[BroadcastChannel] sending: `,message);this.channel.postMessage(message)}}exports.IPCPeer=IPCPeer},{"../not-supported":15,"./ipc":9,"acebase-core":43}],9:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AceBaseIPCPeer=exports.AceBaseIPCPeerExitingError=void 0;const acebase_core_1=require("acebase-core");const node_lock_1=require("../node-lock");class AceBaseIPCPeerExitingError extends Error{constructor(message){super(`Exiting: ${message}`)}}exports.AceBaseIPCPeerExitingError=AceBaseIPCPeerExitingError;class AceBaseIPCPeer extends acebase_core_1.SimpleEventEmitter{get isMaster(){return this.masterPeerId===this.id}constructor(storage,id,dbname=storage.name){super();this.storage=storage;this.id=id;this.dbname=dbname;this.ipcType="ipc";this.ourSubscriptions=[];this.remoteSubscriptions=[];this.peers=[];this._exiting=false;this._locks=[];this._requests=new Map;this._eventsEnabled=true;this._nodeLocker=new node_lock_1.NodeLocker(storage.debug,storage.settings.lockTimeout);storage.on("subscribe",(subscription=>{storage.debug.verbose(`database subscription being added on peer ${this.id}`);const remoteSubscription=this.remoteSubscriptions.find((sub=>sub.callback===subscription.callback));if(remoteSubscription){return}const othersAlreadyNotifying=this.ourSubscriptions.some((sub=>sub.event===subscription.event&&sub.path===subscription.path));this.ourSubscriptions.push(subscription);if(othersAlreadyNotifying){return}const message={type:"subscribe",from:this.id,data:{path:subscription.path,event:subscription.event}};this.sendMessage(message)}));storage.on("unsubscribe",(subscription=>{const remoteSubscription=this.remoteSubscriptions.find((sub=>sub.callback===subscription.callback));if(remoteSubscription){this.remoteSubscriptions.splice(this.remoteSubscriptions.indexOf(remoteSubscription),1);return}this.ourSubscriptions.filter((sub=>sub.path===subscription.path&&(!subscription.event||sub.event===subscription.event)&&(!subscription.callback||sub.callback===subscription.callback))).forEach((sub=>{this.ourSubscriptions.splice(this.ourSubscriptions.indexOf(sub),1);const message={type:"unsubscribe",from:this.id,data:{path:sub.path,event:sub.event}};this.sendMessage(message)}))}))}async exit(code=0){if(this._exiting){return this.once("exit")}this._exiting=true;this.storage.debug.warn(`Received ${this.isMaster?"master":"worker "+this.id} process exit request`);if(this._locks.length>0){this.storage.debug.warn(`Waiting for ${this.isMaster?"master":"worker"} ${this.id} locks to clear`);await this.once("locks-cleared")}this.sayGoodbye(this.id);this.storage.debug.warn(`${this.isMaster?"Master":"Worker "+this.id} will now exit`);this.emitOnce("exit",code)}sayGoodbye(forPeerId){const bye={type:"bye",from:forPeerId,data:undefined};this.sendMessage(bye)}addPeer(id,sendReply=true){if(this._exiting){return}const peer=this.peers.find((w=>w.id===id));if(!peer){this.peers.push({id:id,lastSeen:Date.now()})}if(sendReply){const helloMessage={type:"hello",from:this.id,to:id,data:undefined};this.sendMessage(helloMessage);this.ourSubscriptions.forEach((sub=>{const message={type:"subscribe",from:this.id,to:id,data:{path:sub.path,event:sub.event}};this.sendMessage(message)}))}}removePeer(id,ignoreUnknown=false){if(this._exiting){return}const peer=this.peers.find((peer=>peer.id===id));if(!peer){if(!ignoreUnknown){throw new Error(`We are supposed to know this peer!`)}return}this.peers.splice(this.peers.indexOf(peer),1);const subscriptions=this.remoteSubscriptions.filter((sub=>sub.for===id));subscriptions.forEach((sub=>{this.remoteSubscriptions.splice(this.remoteSubscriptions.indexOf(sub),1);this.storage.subscriptions.remove(sub.path,sub.event,sub.callback)}))}addRemoteSubscription(peerId,details){if(this._exiting){return}if(this.remoteSubscriptions.some((sub=>sub.for===peerId&&sub.event===details.event&&sub.path===details.path))){return}const subscribeCallback=(err,path,val,previous,context)=>{const eventMessage={type:"event",from:this.id,to:peerId,path:details.path,event:details.event,data:{path:path,val:val,previous:previous,context:context}};this.sendMessage(eventMessage)};this.remoteSubscriptions.push({for:peerId,event:details.event,path:details.path,callback:subscribeCallback});this.storage.subscriptions.add(details.path,details.event,subscribeCallback)}cancelRemoteSubscription(peerId,details){const sub=this.remoteSubscriptions.find((sub=>sub.for===peerId&&sub.event===details.event&&sub.path===details.event));if(!sub){return}this.storage.subscriptions.remove(details.path,details.event,sub.callback)}async handleMessage(message){switch(message.type){case"hello":return this.addPeer(message.from,message.to!==this.id);case"bye":return this.removePeer(message.from,true);case"subscribe":return this.addRemoteSubscription(message.from,message.data);case"unsubscribe":return this.cancelRemoteSubscription(message.from,message.data);case"event":{if(!this._eventsEnabled){break}const eventMessage=message;const context=eventMessage.data.context||{};context.acebase_ipc={type:this.ipcType,origin:eventMessage.from};const subscriptions=this.ourSubscriptions.filter((sub=>sub.event===eventMessage.event&&sub.path===eventMessage.path));subscriptions.forEach((sub=>{sub.callback(null,eventMessage.data.path,eventMessage.data.val,eventMessage.data.previous,context)}));break}case"lock-request":{if(!this.isMaster){throw new Error(`Workers are not supposed to receive lock requests!`)}const request=message;const result={type:"lock-result",id:request.id,from:this.id,to:request.from,ok:true,data:undefined};try{const lock=await this.lock(request.data);result.data={id:lock.id,path:lock.path,tid:lock.tid,write:lock.forWriting,expires:lock.expires,comment:lock.comment}}catch(err){result.ok=false;result.reason=err.stack||err.message||err}return this.sendMessage(result)}case"lock-result":{if(this.isMaster){throw new Error(`Masters are not supposed to receive results for lock requests!`)}const result=message;const request=this._requests.get(result.id);if(typeof request!=="object"){throw new Error(`The request must be known to us!`)}if(result.ok){request.resolve(result.data)}else{request.reject(new Error(result.reason))}return}case"unlock-request":{if(!this.isMaster){throw new Error(`Workers are not supposed to receive unlock requests!`)}const request=message;const result={type:"unlock-result",id:request.id,from:this.id,to:request.from,ok:true,data:{id:request.data.id}};try{const lockInfo=this._locks.find((l=>{var _a;return((_a=l.lock)===null||_a===void 0?void 0:_a.id)===request.data.id}));await lockInfo.lock.release()}catch(err){result.ok=false;result.reason=err.stack||err.message||err}return this.sendMessage(result)}case"unlock-result":{if(this.isMaster){throw new Error(`Masters are not supposed to receive results for unlock requests!`)}const result=message;const request=this._requests.get(result.id);if(typeof request!=="object"){throw new Error(`The request must be known to us!`)}if(result.ok){request.resolve(result.data)}else{request.reject(new Error(result.reason))}return}case"move-lock-request":{if(!this.isMaster){throw new Error(`Workers are not supposed to receive move lock requests!`)}const request=message;const result={type:"lock-result",id:request.id,from:this.id,to:request.from,ok:true,data:undefined};try{let movedLock;const lockRequest=this._locks.find((r=>{var _a;return((_a=r.lock)===null||_a===void 0?void 0:_a.id)===request.data.id}));if(request.data.move_to==="parent"){movedLock=await lockRequest.lock.moveToParent()}else{throw new Error(`Unknown lock move_to "${request.data.move_to}"`)}lockRequest.lock=movedLock;result.data={id:movedLock.id,path:movedLock.path,tid:movedLock.tid,write:movedLock.forWriting,expires:movedLock.expires,comment:movedLock.comment}}catch(err){result.ok=false;result.reason=err.stack||err.message||err}return this.sendMessage(result)}case"notification":{return this.emit("notification",message)}case"request":{return this.emit("request",message)}case"result":{const result=message;const request=this._requests.get(result.id);if(typeof request!=="object"){throw new Error(`Result of unknown request received`)}if(result.ok){request.resolve(result.data)}else{request.reject(new Error(result.reason))}}}}async lock(details){if(this._exiting){const tidApproved=this._locks.find((l=>l.tid===details.tid&&l.granted));if(!tidApproved){throw new AceBaseIPCPeerExitingError("new transaction lock denied because the IPC peer is exiting")}}const removeLock=lockDetails=>{this._locks.splice(this._locks.indexOf(lockDetails),1);if(this._locks.length===0){this.emit("locks-cleared")}};if(this.isMaster){const lockInfo={tid:details.tid,granted:false,request:details,lock:null};this._locks.push(lockInfo);const lock=await this._nodeLocker.lock(details.path,details.tid,details.write,details.comment);lockInfo.tid=lock.tid;lockInfo.granted=true;const createIPCLock=lock=>({get id(){return lock.id},get tid(){return lock.tid},get path(){return lock.path},get forWriting(){return lock.forWriting},get expires(){return lock.expires},get comment(){return lock.comment},get state(){return lock.state},release:async()=>{await lock.release();removeLock(lockInfo)},moveToParent:async()=>{const parentLock=await lock.moveToParent();lockInfo.lock=createIPCLock(parentLock);return lockInfo.lock}});lockInfo.lock=createIPCLock(lock);return lockInfo.lock}else{const lockInfo={tid:details.tid,granted:false,request:details,lock:null};this._locks.push(lockInfo);const createIPCLock=result=>{lockInfo.granted=true;lockInfo.tid=result.tid;lockInfo.lock={id:result.id,tid:result.tid,path:result.path,forWriting:result.write,state:node_lock_1.LOCK_STATE.LOCKED,expires:result.expires,comment:result.comment,release:async()=>{const req={type:"unlock-request",id:acebase_core_1.ID.generate(),from:this.id,to:this.masterPeerId,data:{id:lockInfo.lock.id}};await this.request(req);lockInfo.lock.state=node_lock_1.LOCK_STATE.DONE;this.storage.debug.verbose(`Worker ${this.id} released lock ${lockInfo.lock.id} (tid ${lockInfo.lock.tid}, ${lockInfo.lock.comment}, "/${lockInfo.lock.path}", ${lockInfo.lock.forWriting?"write":"read"})`);removeLock(lockInfo)},moveToParent:async()=>{const req={type:"move-lock-request",id:acebase_core_1.ID.generate(),from:this.id,to:this.masterPeerId,data:{id:lockInfo.lock.id,move_to:"parent"}};let result;try{result=await this.request(req)}catch(err){lockInfo.lock.state=node_lock_1.LOCK_STATE.DONE;removeLock(lockInfo);throw err}lockInfo.lock=createIPCLock(result);return lockInfo.lock}};return lockInfo.lock};const req={type:"lock-request",id:acebase_core_1.ID.generate(),from:this.id,to:this.masterPeerId,data:details};let result,err;try{result=await this.request(req)}catch(e){err=e;result=null}if(err){removeLock(lockInfo);throw err}return createIPCLock(result)}}async request(req){let resolve,reject;const promise=new Promise(((rs,rj)=>{resolve=result=>{this._requests.delete(req.id);rs(result)};reject=err=>{this._requests.delete(req.id);rj(err)}}));this._requests.set(req.id,{resolve:resolve,reject:reject,request:req});this.sendMessage(req);return promise}sendRequest(request){const req={type:"request",from:this.id,to:this.masterPeerId,id:acebase_core_1.ID.generate(),data:request};return this.request(req).catch((err=>{this.storage.debug.error(err);throw err}))}replyRequest(requestMessage,result){const reply={type:"result",id:requestMessage.id,ok:true,from:this.id,to:requestMessage.from,data:result};this.sendMessage(reply)}sendNotification(notification){const msg={type:"notification",from:this.id,data:notification};this.sendMessage(msg)}get eventsEnabled(){return this._eventsEnabled}set eventsEnabled(enabled){this.storage.debug.log(`ipc events ${enabled?"enabled":"disabled"}`);this._eventsEnabled=enabled}}exports.AceBaseIPCPeer=AceBaseIPCPeer},{"../node-lock":13,"acebase-core":43}],10:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.RemovedNodeAddress=exports.NodeAddress=void 0;class NodeAddress{constructor(path){this.path=path}toString(){return`"/${this.path}"`}equals(address){return this.path===address.path}}exports.NodeAddress=NodeAddress;class RemovedNodeAddress extends NodeAddress{constructor(path){super(path)}toString(){return`"/${this.path}" (removed)`}equals(address){return address instanceof RemovedNodeAddress&&this.path===address.path}}exports.RemovedNodeAddress=RemovedNodeAddress},{}],11:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NodeRevisionError=exports.NodeNotFoundError=void 0;class NodeNotFoundError extends Error{}exports.NodeNotFoundError=NodeNotFoundError;class NodeRevisionError extends Error{}exports.NodeRevisionError=NodeRevisionError},{}],12:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NodeInfo=void 0;const node_value_types_1=require("./node-value-types");const acebase_core_1=require("acebase-core");class NodeInfo{constructor(info){this.path=info.path;this.type=info.type;this.index=info.index;this.key=info.key;this.exists=info.exists;this.address=info.address;this.value=info.value;this.childCount=info.childCount;if(typeof this.path==="string"&&(typeof this.key==="undefined"&&typeof this.index==="undefined")){const pathInfo=acebase_core_1.PathInfo.get(this.path);if(typeof pathInfo.key==="number"){this.index=pathInfo.key}else{this.key=pathInfo.key}}if(typeof this.exists==="undefined"){this.exists=true}}get valueType(){return this.type}get valueTypeName(){return(0,node_value_types_1.getValueTypeName)(this.valueType)}toString(){if(!this.exists){return`"${this.path}" doesn't exist`}if(this.address){return`"${this.path}" is ${this.valueTypeName} stored at ${this.address.toString()}`}else{return`"${this.path}" is ${this.valueTypeName} with value ${this.value}`}}}exports.NodeInfo=NodeInfo},{"./node-value-types":14,"acebase-core":43}],13:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NodeLock=exports.NodeLocker=exports.LOCK_STATE=void 0;const acebase_core_1=require("acebase-core");const assert_1=require("./assert");const DEBUG_MODE=false;const DEFAULT_LOCK_TIMEOUT=120;exports.LOCK_STATE={PENDING:"pending",LOCKED:"locked",EXPIRED:"expired",DONE:"done"};class NodeLocker{constructor(debug,lockTimeout=DEFAULT_LOCK_TIMEOUT){this._locks=[];this._lastTid=0;this.debug=debug;this.timeout=lockTimeout*1e3}setTimeout(timeout){this.timeout=timeout*1e3}createTid(){return DEBUG_MODE?++this._lastTid:acebase_core_1.ID.generate()}_allowLock(path,tid,forWriting){const conflict=this._locks.find((otherLock=>otherLock.tid!==tid&&otherLock.state===exports.LOCK_STATE.LOCKED&&(forWriting||otherLock.forWriting)));return{allow:!conflict,conflict:conflict}}quit(){return new Promise((resolve=>{if(this._locks.length===0){return resolve()}this._quit=resolve}))}_rejectLock(lock,err){this._locks.splice(this._locks.indexOf(lock),1);clearTimeout(lock.timeout);try{lock.reject(err)}catch(err){console.error(`Unhandled promise rejection:`,err)}}_processLockQueue(){if(this._quit){const quitError=new Error("Quitting");this._locks.filter((lock=>lock.state===exports.LOCK_STATE.PENDING)).forEach((lock=>this._rejectLock(lock,quitError)));if(this._locks.length===0){this._quit()}}const pending=this._locks.filter((lock=>lock.state===exports.LOCK_STATE.PENDING)).sort(((a,b)=>{if(a.priority&&!b.priority){return-1}else if(!a.priority&&b.priority){return 1}return a.requested-b.requested}));pending.forEach((lock=>{const check=this._allowLock(lock.path,lock.tid,lock.forWriting);lock.waitingFor=check.conflict||null;if(check.allow){this.lock(lock).then(lock.resolve).catch((err=>this._rejectLock(lock,err)))}}))}async lock(path,tid,forWriting=true,comment="",options={withPriority:false,noTimeout:false}){let lock,proceed;if(path instanceof NodeLock){lock=path;proceed=true}else if(this._locks.findIndex((l=>l.tid===tid&&l.state===exports.LOCK_STATE.EXPIRED))>=0){throw new Error(`lock on tid ${tid} has expired, not allowed to continue`)}else if(this._quit&&!options.withPriority){throw new Error(`Quitting`)}else{DEBUG_MODE&&console.error(`${forWriting?"write":"read"} lock requested on "${path}" by tid ${tid} (${comment})`);lock=new NodeLock(this,path,tid,forWriting,options.withPriority===true);lock.comment=comment;this._locks.push(lock);const check=this._allowLock(path,tid,forWriting);lock.waitingFor=check.conflict||null;proceed=check.allow}if(proceed){DEBUG_MODE&&console.error(`${lock.forWriting?"write":"read"} lock ALLOWED on "${lock.path}" by tid ${lock.tid} (${lock.comment})`);lock.state=exports.LOCK_STATE.LOCKED;if(typeof lock.granted==="number"){}else{lock.granted=Date.now();if(options.noTimeout!==true){lock.expires=Date.now()+this.timeout;let timeoutCount=0;const timeoutHandler=()=>{if(lock.state!==exports.LOCK_STATE.LOCKED){return}timeoutCount++;if(timeoutCount<=3){this.debug.warn(`${lock.forWriting?"write":"read"} lock on path "/${lock.path}" by tid ${lock.tid} (${lock.comment}) is taking a long time to complete [${timeoutCount}]`);lock.timeout=setTimeout(timeoutHandler,this.timeout/4);return}this.debug.error(`lock :: ${lock.forWriting?"write":"read"} lock on path "/${lock.path}" by tid ${lock.tid} (${lock.comment}) took too long`);lock.state=exports.LOCK_STATE.EXPIRED;this._processLockQueue()};lock.timeout=setTimeout(timeoutHandler,this.timeout/4)}}return lock}else{(0,assert_1.assert)(lock.state===exports.LOCK_STATE.PENDING);return new Promise(((resolve,reject)=>{lock.resolve=resolve;lock.reject=reject}))}}unlock(lockOrId,comment,processQueue=true){let lock,i;if(lockOrId instanceof NodeLock){lock=lockOrId;i=this._locks.indexOf(lock)}else{const id=lockOrId;i=this._locks.findIndex((l=>l.id===id));lock=this._locks[i]}if(i<0){const msg=`lock on "/${lock.path}" for tid ${lock.tid} wasn't found; ${comment}`;throw new Error(msg)}lock.state=exports.LOCK_STATE.DONE;clearTimeout(lock.timeout);this._locks.splice(i,1);DEBUG_MODE&&console.error(`${lock.forWriting?"write":"read"} lock RELEASED on "${lock.path}" by tid ${lock.tid}`);processQueue&&this._processLockQueue();return lock}list(){return this._locks||[]}isAllowed(path,tid,forWriting){return this._allowLock(path,tid,forWriting).allow}}exports.NodeLocker=NodeLocker;let lastid=0;class NodeLock{static get LOCK_STATE(){return exports.LOCK_STATE}constructor(locker,path,tid,forWriting,priority=false){this.locker=locker;this.path=path;this.tid=tid;this.forWriting=forWriting;this.priority=priority;this.state=exports.LOCK_STATE.PENDING;this.requested=Date.now();this.comment="";this.waitingFor=null;this.id=++lastid;this.history=[]}async release(comment){this.history.push({action:"release",path:this.path,forWriting:this.forWriting,comment:comment});return this.locker.unlock(this,comment||this.comment)}async moveToParent(){const parentPath=acebase_core_1.PathInfo.get(this.path).parentPath;const allowed=this.locker.isAllowed(parentPath,this.tid,this.forWriting);if(allowed){DEBUG_MODE&&console.error(`moveToParent ALLOWED for ${this.forWriting?"write":"read"} lock on "${this.path}" by tid ${this.tid} (${this.comment})`);this.history.push({path:this.path,forWriting:this.forWriting,action:"moving to parent"});this.waitingFor=null;this.path=parentPath;return this}else{DEBUG_MODE&&console.error(`moveToParent QUEUED for ${this.forWriting?"write":"read"} lock on "${this.path}" by tid ${this.tid} (${this.comment})`);this.locker.unlock(this,`moveLockToParent: ${this.comment}`,false);const newLock=await this.locker.lock(parentPath,this.tid,this.forWriting,this.comment,{withPriority:true});DEBUG_MODE&&console.error(`QUEUED moveToParent ALLOWED for ${this.forWriting?"write":"read"} lock on "${this.path}" by tid ${this.tid} (${this.comment})`);newLock.history=this.history;newLock.history.push({path:this.path,forWriting:this.forWriting,action:"moving to parent through queue (priority)"});return newLock}}}exports.NodeLock=NodeLock},{"./assert":4,"acebase-core":43}],14:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getValueType=exports.getNodeValueType=exports.getValueTypeName=exports.VALUE_TYPES=void 0;const acebase_core_1=require("acebase-core");const nodeValueTypes={OBJECT:1,ARRAY:2,NUMBER:3,BOOLEAN:4,STRING:5,BIGINT:7,DATETIME:6,BINARY:8,REFERENCE:9};exports.VALUE_TYPES=nodeValueTypes;function getValueTypeName(valueType){switch(valueType){case exports.VALUE_TYPES.ARRAY:return"array";case exports.VALUE_TYPES.BINARY:return"binary";case exports.VALUE_TYPES.BOOLEAN:return"boolean";case exports.VALUE_TYPES.DATETIME:return"date";case exports.VALUE_TYPES.NUMBER:return"number";case exports.VALUE_TYPES.OBJECT:return"object";case exports.VALUE_TYPES.REFERENCE:return"reference";case exports.VALUE_TYPES.STRING:return"string";case exports.VALUE_TYPES.BIGINT:return"bigint";default:"unknown"}}exports.getValueTypeName=getValueTypeName;function getNodeValueType(value){if(value instanceof Array){return exports.VALUE_TYPES.ARRAY}else if(value instanceof acebase_core_1.PathReference){return exports.VALUE_TYPES.REFERENCE}else if(value instanceof ArrayBuffer){return exports.VALUE_TYPES.BINARY}else if(typeof value==="string"){return exports.VALUE_TYPES.STRING}else if(typeof value==="object"){return exports.VALUE_TYPES.OBJECT}else if(typeof value==="bigint"){return exports.VALUE_TYPES.BIGINT}throw new Error(`Invalid value for standalone node: ${value}`)}exports.getNodeValueType=getNodeValueType;function getValueType(value){if(value instanceof Array){return exports.VALUE_TYPES.ARRAY}else if(value instanceof acebase_core_1.PathReference){return exports.VALUE_TYPES.REFERENCE}else if(value instanceof ArrayBuffer){return exports.VALUE_TYPES.BINARY}else if(value instanceof Date){return exports.VALUE_TYPES.DATETIME}else if(typeof value==="string"){return exports.VALUE_TYPES.STRING}else if(typeof value==="object"){return exports.VALUE_TYPES.OBJECT}else if(typeof value==="number"){return exports.VALUE_TYPES.NUMBER}else if(typeof value==="boolean"){return exports.VALUE_TYPES.BOOLEAN}else if(typeof value==="bigint"){return exports.VALUE_TYPES.BIGINT}throw new Error(`Unknown value type: ${value}`)}exports.getValueType=getValueType},{"acebase-core":43}],15:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.NotSupported=void 0;class NotSupported{constructor(context="browser"){throw new Error(`This feature is not supported in ${context} context`)}}exports.NotSupported=NotSupported},{}],16:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.pfs=void 0;class pfs{static get hasFileSystem(){return false}static get fs(){return null}}exports.pfs=pfs},{}],17:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.executeQuery=void 0;const acebase_core_1=require("acebase-core");const node_value_types_1=require("./node-value-types");const node_errors_1=require("./node-errors");const data_index_1=require("./data-index");const async_task_batch_1=require("./async-task-batch");const noop=()=>{};async function executeQuery(api,path,query,options={snapshots:false,include:undefined,exclude:undefined,child_objects:undefined,eventHandler:noop}){var _a,_b,_c,_d,_e,_f;if(typeof options!=="object"){options={}}if(typeof options.snapshots==="undefined"){options.snapshots=false}const context={};if((_a=api.storage.settings.transactions)===null||_a===void 0?void 0:_a.log){context.acebase_cursor=acebase_core_1.ID.generate()}const queryFilters=query.filters.map((f=>Object.assign({},f)));const querySort=query.order.map((s=>Object.assign({},s)));const sortMatches=matches=>{matches.sort(((a,b)=>{const compare=i=>{const o=querySort[i];const trailKeys=acebase_core_1.PathInfo.getPathKeys(typeof o.key==="number"?`[${o.key}]`:o.key);const left=trailKeys.reduce(((val,key)=>val!==null&&typeof val==="object"&&key in val?val[key]:null),a.val);const right=trailKeys.reduce(((val,key)=>val!==null&&typeof val==="object"&&key in val?val[key]:null),b.val);if(left===null){return right===null?0:o.ascending?-1:1}if(right===null){return o.ascending?1:-1}if(left==right){if(i{if(preResults.length===0){return[]}const maxBatchSize=50;const batch=new async_task_batch_1.AsyncTaskBatch(maxBatchSize);const results=[];preResults.forEach((({path:path},index)=>batch.add((async()=>{const node=await api.storage.getNode(path,options);const val=node.value;if(val===null){api.storage.debug.warn(`Indexed result "/${path}" does not have a record!`);return}const result={path:path,val:val};if(stepsExecuted.sorted){results[index]=result}else{results.push(result);if(!stepsExecuted.skipped&&results.length>query.skip+Math.abs(query.take)){sortMatches(results);results.pop()}}}))));await batch.finish();return results};const pathInfo=acebase_core_1.PathInfo.get(path);const isWildcardPath=pathInfo.keys.some((key=>key==="*"||key.toString().startsWith("$")));const availableIndexes=api.storage.indexes.get(path);const usingIndexes=[];let stop=async()=>{};if(isWildcardPath){const vars=pathInfo.keys.filter((key=>typeof key==="string"&&key.startsWith("$")));const hasExplicitFilterValues=vars.length>0&&vars.every((v=>query.filters.some((f=>f.key===v&&["==","in"].includes(f.op)))));const isRealtime=typeof options.monitor==="object"&&[(_b=options.monitor)===null||_b===void 0?void 0:_b.add,(_c=options.monitor)===null||_c===void 0?void 0:_c.change,(_d=options.monitor)===null||_d===void 0?void 0:_d.remove].some((val=>val===true));if(hasExplicitFilterValues&&!isRealtime){const combinations=[];for(const v of vars){const filters=query.filters.filter((f=>f.key===v));const filterValues=filters.reduce(((values,f)=>{if(f.op==="=="){values.push(f.compare)}if(f.op==="in"){if(!(f.compare instanceof Array)){throw new Error(`compare argument for 'in' operator must be an Array`)}values.push(...f.compare)}return values}),[]);const prevCombinations=combinations.splice(0);filterValues.forEach((fv=>{if(prevCombinations.length===0){combinations.push({[v]:fv})}else{combinations.push(...prevCombinations.map((c=>Object.assign(Object.assign({},c),{[v]:fv}))))}}))}const filters=query.filters.filter((f=>!vars.includes(f.key)));const paths=combinations.map((vars=>acebase_core_1.PathInfo.get(acebase_core_1.PathInfo.getPathKeys(path).map((key=>{var _a;return(_a=vars[key])!==null&&_a!==void 0?_a:key}))).path));const loadData=query.order.length>0;const promises=paths.map((path=>{var _a;return executeQuery(api,path,{filters:filters,take:0,skip:0,order:[]},{snapshots:loadData,cache_mode:options.cache_mode,include:[...(_a=options.include)!==null&&_a!==void 0?_a:[],...query.order.map((o=>o.key))],exclude:options.exclude})}));const resultSets=await Promise.all(promises);let results=resultSets.reduce(((results,set)=>(results.push(...set.results),results)),[]);if(loadData){sortMatches(results)}if(query.skip>0){results.splice(0,query.skip)}if(query.take>0){results.splice(query.take)}if(options.snapshots&&(!loadData||((_e=options.include)===null||_e===void 0?void 0:_e.length)>0||((_f=options.exclude)===null||_f===void 0?void 0:_f.length)>0||!options.child_objects)){const{include:include,exclude:exclude,child_objects:child_objects}=options;results=await loadResultsData(results,{include:include,exclude:exclude,child_objects:child_objects})}return{results:results,context:null,stop:stop}}else if(availableIndexes.length===0){const err=new Error(`Query on wildcard path "/${path}" requires an index`);return Promise.reject(err)}if(queryFilters.length===0){const index=availableIndexes.filter((index=>index.type==="normal"))[0];queryFilters.push({key:index.key,op:"!=",compare:null})}}queryFilters.forEach((filter=>{if(filter.index){return}const indexesOnKey=availableIndexes.filter((index=>index.key===filter.key)).filter((index=>index.validOperators.includes(filter.op)));if(indexesOnKey.length>=1){const otherFilterKeys=queryFilters.filter((f=>f!==filter)).map((f=>f.key));const sortKeys=querySort.map((o=>o.key)).filter((key=>key!==filter.key));const beneficialIndexes=indexesOnKey.map((index=>{const availableKeys=index.includeKeys.concat(index.key);const forOtherFilters=availableKeys.filter((key=>otherFilterKeys.includes(key)));const forSorting=availableKeys.filter((key=>sortKeys.includes(key)));const forBoth=forOtherFilters.concat(forSorting.filter((index=>!forOtherFilters.includes(index))));const points={filters:forOtherFilters.length,sorting:forSorting.length*(query.take!==0?forSorting.length:1),both:forBoth.length*forBoth.length,get total(){return this.filters+this.sorting+this.both}};return{index:index,points:points.total,filterKeys:forOtherFilters,sortKeys:forSorting}}));beneficialIndexes.sort(((a,b)=>a.points>b.points?-1:1));const bestBenificialIndex=beneficialIndexes[0];filter.index=bestBenificialIndex.index;bestBenificialIndex.filterKeys.forEach((key=>{queryFilters.filter((f=>f!==filter&&f.key===key)).forEach((f=>{if(!data_index_1.DataIndex.validOperators.includes(f.op)){return}f.indexUsage="filter";f.index=bestBenificialIndex.index}))}));bestBenificialIndex.sortKeys.forEach((key=>{querySort.filter((s=>s.key===key)).forEach((s=>{s.index=bestBenificialIndex.index}))}))}if(filter.index){usingIndexes.push({index:filter.index,description:filter.index.description})}}));if(querySort.length>0&&query.take!==0&&queryFilters.length===0){querySort.forEach((sort=>{if(sort.index){return}sort.index=availableIndexes.filter((index=>index.key===sort.key)).find((index=>index.type==="normal"))}))}const indexDescriptions=usingIndexes.map((index=>index.description)).join(", ");usingIndexes.length>0&&api.storage.debug.log(`Using indexes for query: ${indexDescriptions}`);const tableScanFilters=queryFilters.filter((filter=>!filter.index));const specialOpsRegex=/^[a-z]+:/i;if(tableScanFilters.some((filter=>specialOpsRegex.test(filter.op)))){const f=tableScanFilters.find((filter=>specialOpsRegex.test(filter.op)));const err=new Error(`query contains operator "${f.op}" which requires a special index that was not found on path "${path}", key "${f.key}"`);return Promise.reject(err)}const allowedTableScanOperators=["<","<=","==","!=",">=",">","like","!like","in","!in","matches","!matches","between","!between","has","!has","contains","!contains","exists","!exists"];for(let i=0;i0){const keys=tableScanFilters.reduce(((keys,f)=>{if(keys.indexOf(f.key)<0){keys.push(f.key)}return keys}),[]).map((key=>`"${key}"`));const err=new Error(`This wildcard path query on "/${path}" requires index(es) on key(s): ${keys.join(", ")}. Create the index(es) and retry`);return Promise.reject(err)}const indexScanPromises=[];queryFilters.forEach((filter=>{if(filter.index&&filter.indexUsage!=="filter"){let promise=filter.index.query(filter.op,filter.compare).then((results=>{options.eventHandler&&options.eventHandler({name:"stats",type:"index_query",source:filter.index.description,stats:results.stats});if(results.hints.length>0){options.eventHandler&&options.eventHandler({name:"hints",type:"index_query",source:filter.index.description,hints:results.hints})}return results}));const resultFilters=queryFilters.filter((f=>f.index===filter.index&&f.indexUsage==="filter"));if(resultFilters.length>0){promise=promise.then((results=>{resultFilters.forEach((filter=>{const{key:key,op:op,index:index}=filter;let{compare:compare}=filter;if(typeof compare==="string"&&!index.caseSensitive){compare=compare.toLocaleLowerCase(index.textLocale)}results=results.filterMetadata(key,op,compare)}));return results}))}indexScanPromises.push(promise)}}));const stepsExecuted={filtered:queryFilters.length===0,skipped:query.skip===0,taken:query.take===0,sorted:querySort.length===0,preDataLoaded:false,dataLoaded:false};if(queryFilters.length===0&&query.take===0){api.storage.debug.warn(`Filterless queries must use .take to limit the results. Defaulting to 100 for query on path "${path}"`);query.take=100}if(querySort.length>0&&querySort[0].index){const sortIndex=querySort[0].index;const ascending=query.take<0?!querySort[0].ascending:querySort[0].ascending;if(queryFilters.length===0&&querySort.slice(1).every((s=>sortIndex.allMetadataKeys.includes(s.key)))){api.storage.debug.log(`Using index for sorting: ${sortIndex.description}`);const metadataSort=querySort.slice(1).map((s=>{s.index=sortIndex;return{key:s.key,ascending:s.ascending}}));const promise=sortIndex.take(query.skip,Math.abs(query.take),{ascending:ascending,metadataSort:metadataSort}).then((results=>{options.eventHandler&&options.eventHandler({name:"stats",type:"sort_index_take",source:sortIndex.description,stats:results.stats});if(results.hints.length>0){options.eventHandler&&options.eventHandler({name:"hints",type:"sort_index_take",source:sortIndex.description,hints:results.hints})}return results}));indexScanPromises.push(promise);stepsExecuted.skipped=true;stepsExecuted.taken=true;stepsExecuted.sorted=true}}return Promise.all(indexScanPromises).then((async indexResultSets=>{let indexedResults=[];if(indexResultSets.length===1){const resultSet=indexResultSets[0];indexedResults=resultSet.map((match=>{const result={key:match.key,path:match.path,val:{[resultSet.filterKey]:match.value}};match.metadata&&Object.assign(result.val,match.metadata);return result}));stepsExecuted.filtered=true}else if(indexResultSets.length>1){indexResultSets.sort(((a,b)=>a.length{const result={key:match.key,path:match.path,val:{[shortestSet.filterKey]:match.value}};const matchedInAllSets=otherSets.every((set=>set.findIndex((m=>m.path===match.path))>=0));if(matchedInAllSets){match.metadata&&Object.assign(result.val,match.metadata);otherSets.forEach((set=>{const otherResult=set.find((r=>r.path===result.path));result.val[set.filterKey]=otherResult.value;otherResult.metadata&&Object.assign(result.val,otherResult.metadata)}));results.push(result)}return results}),[]);stepsExecuted.filtered=true}if(isWildcardPath||indexScanPromises.length>0&&tableScanFilters.length===0){if(querySort.length===0||querySort.every((o=>o.index))){stepsExecuted.preDataLoaded=true;if(!stepsExecuted.sorted&&querySort.length>0){sortMatches(indexedResults)}stepsExecuted.sorted=true;if(!stepsExecuted.skipped&&query.skip>0){indexedResults=query.take<0?indexedResults.slice(0,-query.skip):indexedResults.slice(query.skip)}if(!stepsExecuted.taken&&query.take!==0){indexedResults=query.take<0?indexedResults.slice(query.take):indexedResults.slice(0,query.take)}stepsExecuted.skipped=true;stepsExecuted.taken=true;if(!options.snapshots){return indexedResults}const childOptions={include:options.include,exclude:options.exclude,child_objects:options.child_objects};return loadResultsData(indexedResults,childOptions).then((results=>{stepsExecuted.dataLoaded=true;return results}))}if(options.snapshots||!stepsExecuted.sorted){const loadPartialResults=querySort.length>0;const childOptions=loadPartialResults?{include:querySort.map((order=>order.key))}:{include:options.include,exclude:options.exclude,child_objects:options.child_objects};return loadResultsData(indexedResults,childOptions).then((results=>{if(querySort.length>0){sortMatches(results)}stepsExecuted.sorted=true;if(query.skip>0){results=query.take<0?results.slice(0,-query.skip):results.slice(query.skip)}if(query.take!==0){results=query.take<0?results.slice(query.take):results.slice(0,query.take)}stepsExecuted.skipped=true;stepsExecuted.taken=true;if(options.snapshots&&loadPartialResults){return loadResultsData(results,{include:options.include,exclude:options.exclude,child_objects:options.child_objects})}return results}))}else{return indexedResults}}let indexKeyFilter;if(indexedResults.length>0){indexKeyFilter=indexedResults.map((result=>result.key))}let matches=[];let preliminaryStop=false;const loadPartialData=querySort.length>0;const childOptions=loadPartialData?{include:querySort.map((order=>order.key))}:{include:options.include,exclude:options.exclude,child_objects:options.child_objects};const batch={promises:[],add(promise){this.promises.push(promise);if(this.promises.length>=1e3){return Promise.all(this.promises.splice(0)).then((_=>undefined))}}};try{await api.storage.getChildren(path,{keyFilter:indexKeyFilter,async:true}).next((child=>{if(child.type!==node_value_types_1.VALUE_TYPES.OBJECT){return}if(!child.address){return}if(preliminaryStop){return false}const matchNode=async()=>{const isMatch=await api.storage.matchNode(child.address.path,tableScanFilters);if(!isMatch){return}const childPath=child.address.path;let result;if(options.snapshots||querySort.length>0){const node=await api.storage.getNode(childPath,childOptions);result={path:childPath,val:node.value}}else{result={path:childPath}}matches.push(result);if(query.take!==0&&matches.length>Math.abs(query.take)+query.skip){if(querySort.length>0){sortMatches(matches)}else if(query.take>0){preliminaryStop=true}matches.pop()}};const p=batch.add(matchNode());if(p instanceof Promise){return p}}))}catch(reason){if(!(reason instanceof node_errors_1.NodeNotFoundError)){api.storage.debug.warn(`Error getting child stream: ${reason}`)}return[]}await Promise.all(batch.promises);stepsExecuted.preDataLoaded=loadPartialData;stepsExecuted.dataLoaded=!loadPartialData;if(querySort.length>0){sortMatches(matches)}stepsExecuted.sorted=true;if(query.skip>0){matches=query.take<0?matches.slice(0,-query.skip):matches.slice(query.skip)}stepsExecuted.skipped=true;if(query.take!==0){matches=query.take<0?matches.slice(query.take):matches.slice(0,query.take)}stepsExecuted.taken=true;if(!stepsExecuted.dataLoaded){matches=await loadResultsData(matches,{include:options.include,exclude:options.exclude,child_objects:options.child_objects});stepsExecuted.dataLoaded=true}return matches})).then((matches=>{if(!stepsExecuted.sorted&&querySort.length>0){sortMatches(matches)}if(!options.snapshots){matches=matches.map((match=>match.path))}if(!stepsExecuted.skipped&&query.skip>0){matches=query.take<0?matches.slice(0,-query.skip):matches.slice(query.skip)}if(!stepsExecuted.taken&&query.take!==0){matches=query.take<0?matches.slice(query.take):matches.slice(0,query.take)}if(options.monitor===true){options.monitor={add:true,change:true,remove:true}}if(typeof options.monitor==="object"&&(options.monitor.add||options.monitor.change||options.monitor.remove)){const monitor=options.monitor;const matchedPaths=options.snapshots?matches.map((match=>match.path)):matches.slice();const ref=api.db.ref(path);const removeMatch=path=>{const index=matchedPaths.indexOf(path);if(index<0){return}matchedPaths.splice(index,1)};const addMatch=path=>{if(matchedPaths.includes(path)){return}matchedPaths.push(path)};const stopMonitoring=()=>{api.unsubscribe(ref.path,"child_changed",childChangedCallback);api.unsubscribe(ref.path,"child_added",childAddedCallback);api.unsubscribe(ref.path,"notify_child_removed",childRemovedCallback)};stop=async()=>{stopMonitoring()};const childChangedCallback=async(err,path,newValue,oldValue)=>{const wasMatch=matchedPaths.includes(path);let keepMonitoring=true;const checkKeys=[];queryFilters.forEach((f=>!checkKeys.includes(f.key)&&checkKeys.push(f.key)));const seenKeys=[];typeof oldValue==="object"&&Object.keys(oldValue).forEach((key=>!seenKeys.includes(key)&&seenKeys.push(key)));typeof newValue==="object"&&Object.keys(newValue).forEach((key=>!seenKeys.includes(key)&&seenKeys.push(key)));const missingKeys=[];let isMatch=seenKeys.every((key=>{if(!checkKeys.includes(key)){return true}const filters=queryFilters.filter((filter=>filter.key===key));return filters.every((filter=>{var _a;if(((_a=filter.index)===null||_a===void 0?void 0:_a.textLocaleKey)&&!seenKeys.includes(filter.index.textLocaleKey)){missingKeys.push(filter.index.textLocaleKey);return true}else if(allowedTableScanOperators.includes(filter.op)){return api.storage.test(newValue[key],filter.op,filter.compare)}else{return filter.index.test(newValue,filter.op,filter.compare)}}))}));if(isMatch){missingKeys.push(...checkKeys.filter((key=>!seenKeys.includes(key))));if(!wasMatch&&missingKeys.length>0){const filterQueue=queryFilters.filter((f=>missingKeys.includes(f.key)));const simpleFilters=filterQueue.filter((f=>allowedTableScanOperators.includes(f.op)));const indexFilters=filterQueue.filter((f=>!allowedTableScanOperators.includes(f.op)));if(simpleFilters.length>0){isMatch=await api.storage.matchNode(path,simpleFilters)}if(isMatch&&indexFilters.length>0){const keysToLoad=indexFilters.reduce(((keys,filter)=>{if(!keys.includes(filter.key)){keys.push(filter.key)}if(filter.index instanceof data_index_1.FullTextIndex&&filter.index.config.localeKey&&!keys.includes(filter.index.config.localeKey)){keys.push(filter.index.config.localeKey)}return keys}),[]);const node=await api.storage.getNode(path,{include:keysToLoad});if(node.value===null){return false}isMatch=indexFilters.every((filter=>filter.index.test(node.value,filter.op,filter.compare)))}}}if(isMatch){if(!wasMatch){addMatch(path)}if(options.snapshots){const loadOptions={include:options.include,exclude:options.exclude,child_objects:options.child_objects};const node=await api.storage.getNode(path,loadOptions);newValue=node.value}if(wasMatch&&monitor.change){keepMonitoring=options.eventHandler({name:"change",path:path,value:newValue})!==false}else if(!wasMatch&&monitor.add){keepMonitoring=options.eventHandler({name:"add",path:path,value:newValue})!==false}}else if(wasMatch){removeMatch(path);if(monitor.remove){keepMonitoring=options.eventHandler({name:"remove",path:path,value:oldValue})!==false}}if(keepMonitoring===false){stopMonitoring()}};const childAddedCallback=(err,path,newValue)=>{const isMatch=queryFilters.every((filter=>{if(allowedTableScanOperators.includes(filter.op)){return api.storage.test(newValue[filter.key],filter.op,filter.compare)}else{return filter.index.test(newValue,filter.op,filter.compare)}}));let keepMonitoring=true;if(isMatch){addMatch(path);if(monitor.add){keepMonitoring=options.eventHandler({name:"add",path:path,value:options.snapshots?newValue:null})!==false}}if(keepMonitoring===false){stopMonitoring()}};const childRemovedCallback=(err,path,newValue,oldValue)=>{let keepMonitoring=true;removeMatch(path);if(monitor.remove){keepMonitoring=options.eventHandler({name:"remove",path:path,value:options.snapshots?oldValue:null})!==false}if(keepMonitoring===false){stopMonitoring()}};if(options.monitor.add||options.monitor.change||options.monitor.remove){api.subscribe(ref.path,"child_changed",childChangedCallback)}if(options.monitor.remove){api.subscribe(ref.path,"notify_child_removed",childRemovedCallback)}if(options.monitor.add){api.subscribe(ref.path,"child_added",childAddedCallback)}}return{results:matches,context:context,stop:stop}}))}exports.executeQuery=executeQuery},{"./async-task-batch":5,"./data-index":7,"./node-errors":11,"./node-value-types":14,"acebase-core":43}],18:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AceBaseStorage=exports.AceBaseStorageSettings=void 0;const not_supported_1=require("../../not-supported");class AceBaseStorageSettings extends not_supported_1.NotSupported{}exports.AceBaseStorageSettings=AceBaseStorageSettings;class AceBaseStorage extends not_supported_1.NotSupported{}exports.AceBaseStorage=AceBaseStorage},{"../../not-supported":15}],19:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createIndex=void 0;const acebase_core_1=require("acebase-core");const data_index_1=require("../data-index");const promise_fs_1=require("../promise-fs");async function createIndex(context,path,key,options){if(!context.storage.indexes.supported){throw new Error("Indexes are not supported in current environment because it requires Node.js fs")}const{ipc:ipc,debug:debug,indexes:indexes,storage:storage}=context;const rebuild=options&&options.rebuild===true;const indexType=options&&options.type||"normal";let includeKeys=options&&options.include||[];if(typeof includeKeys==="string"){includeKeys=[includeKeys]}const existingIndex=indexes.find((index=>index.path===path&&index.key===key&&index.type===indexType&&index.includeKeys.length===includeKeys.length&&index.includeKeys.every(((key,index)=>includeKeys[index]===key))));if(existingIndex&&options.config){existingIndex.config=options.config}if(existingIndex&&rebuild!==true){debug.log(`Index on "/${path}/*/${key}" already exists`.colorize(acebase_core_1.ColorStyle.inverse));return existingIndex}if(!ipc.isMaster){const result=await ipc.sendRequest({type:"index.create",path:path,key:key,options:options});if(result.ok){return storage.indexes.add(result.fileName)}throw new Error(result.reason)}await promise_fs_1.pfs.mkdir(`${storage.settings.path}/${storage.name}.acebase`).catch((err=>{if(err.code!=="EEXIST"){throw err}}));const index=existingIndex||(()=>{const{include:include,caseSensitive:caseSensitive,textLocale:textLocale,textLocaleKey:textLocaleKey}=options;const indexOptions={include:include,caseSensitive:caseSensitive,textLocale:textLocale,textLocaleKey:textLocaleKey};switch(indexType){case"array":return new data_index_1.ArrayIndex(storage,path,key,Object.assign({},indexOptions));case"fulltext":return new data_index_1.FullTextIndex(storage,path,key,Object.assign(Object.assign({},indexOptions),{config:options.config}));case"geo":return new data_index_1.GeoIndex(storage,path,key,Object.assign({},indexOptions));default:return new data_index_1.DataIndex(storage,path,key,Object.assign({},indexOptions))}})();if(!existingIndex){indexes.push(index)}try{await index.build()}catch(err){context.debug.error(`Index build on "/${path}/*/${key}" failed: ${err.message} (code: ${err.code})`.colorize(acebase_core_1.ColorStyle.red));if(!existingIndex){indexes.splice(indexes.indexOf(index),1)}throw err}ipc.sendNotification({type:"index.created",fileName:index.fileName,path:path,key:key,options:options});return index}exports.createIndex=createIndex},{"../data-index":7,"../promise-fs":16,"acebase-core":43}],20:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.CustomStorageHelpers=void 0;const acebase_core_1=require("acebase-core");class CustomStorageHelpers{static ChildPathsSql(path,columnName="path"){const where=path===""?`${columnName} <> '' AND ${columnName} NOT LIKE '%/%'`:`(${columnName} LIKE '${path}/%' OR ${columnName} LIKE '${path}[%') AND ${columnName} NOT LIKE '${path}/%/%' AND ${columnName} NOT LIKE '${path}[%]/%' AND ${columnName} NOT LIKE '${path}[%][%'`;return where}static ChildPathsRegex(path){return new RegExp(`^${path}(?:/[^/[]+|\\[[0-9]+\\])$`)}static DescendantPathsSql(path,columnName="path"){const where=path===""?`${columnName} <> ''`:`${columnName} LIKE '${path}/%' OR ${columnName} LIKE '${path}[%'`;return where}static DescendantPathsRegex(path){return new RegExp(`^${path}(?:/[^/[]+|\\[[0-9]+\\])`)}static get PathInfo(){return acebase_core_1.PathInfo}}exports.CustomStorageHelpers=CustomStorageHelpers},{"acebase-core":43}],21:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.CustomStorage=exports.CustomStorageNodeInfo=exports.CustomStorageNodeAddress=exports.CustomStorageSettings=exports.CustomStorageTransaction=exports.ICustomStorageNode=exports.ICustomStorageNodeMetaData=exports.CustomStorageHelpers=void 0;const acebase_core_1=require("acebase-core");const{compareValues:compareValues}=acebase_core_1.Utils;const node_info_1=require("../../node-info");const node_lock_1=require("../../node-lock");const node_value_types_1=require("../../node-value-types");const node_errors_1=require("../../node-errors");const index_1=require("../index");const helpers_1=require("./helpers");const node_address_1=require("../../node-address");const assert_1=require("../../assert");var helpers_2=require("./helpers");Object.defineProperty(exports,"CustomStorageHelpers",{enumerable:true,get:function(){return helpers_2.CustomStorageHelpers}});class ICustomStorageNodeMetaData{constructor(){this.revision="";this.revision_nr=0;this.created=0;this.modified=0;this.type=0}}exports.ICustomStorageNodeMetaData=ICustomStorageNodeMetaData;class ICustomStorageNode extends ICustomStorageNodeMetaData{constructor(){super();this.value=null}}exports.ICustomStorageNode=ICustomStorageNode;class CustomStorageTransaction{constructor(target){this.production=false;this.target={get originalPath(){return target.path},path:target.path,get write(){return target.write}};this.id=acebase_core_1.ID.generate()}async getChildCount(path){let childCount=0;await this.childrenOf(path,{metadata:false,value:false},(()=>{childCount++;return false}));return childCount}async getMultiple(paths){const map=new Map;await Promise.all(paths.map((path=>this.get(path).then((val=>map.set(path,val))))));return map}async setMultiple(nodes){await Promise.all(nodes.map((({path:path,node:node})=>this.set(path,node))))}async removeMultiple(paths){await Promise.all(paths.map((path=>this.remove(path))))}async commit(){throw new Error(`CustomStorageTransaction.rollback must be overridden by subclass`)}async moveToParentPath(targetPath){const currentPath=this._lock&&this._lock.path||this.target.path;if(currentPath===targetPath){return targetPath}const pathInfo=helpers_1.CustomStorageHelpers.PathInfo.get(targetPath);if(pathInfo.isParentOf(currentPath)){if(this._lock){this._lock=await this._lock.moveToParent()}}else{throw new Error(`Locking issue. Locked path "${this._lock.path}" is not a child/descendant of "${targetPath}"`)}this.target.path=targetPath;return targetPath}}exports.CustomStorageTransaction=CustomStorageTransaction;class CustomStorageSettings extends index_1.StorageSettings{constructor(settings){super(settings);this.locking=true;if(typeof settings!=="object"){throw new Error("settings missing")}if(typeof settings.ready!=="function"){throw new Error(`ready must be a function`)}if(typeof settings.getTransaction!=="function"){throw new Error(`getTransaction must be a function`)}this.name=settings.name;this.locking=settings.locking!==false;if(this.locking){this.lockTimeout=typeof settings.lockTimeout==="number"?settings.lockTimeout:120}this.ready=settings.ready;const useLocking=this.locking;const nodeLocker=useLocking?new node_lock_1.NodeLocker(console,this.lockTimeout):null;this.getTransaction=async({path:path,write:write})=>{const transaction=await settings.getTransaction({path:path,write:write});(0,assert_1.assert)(typeof transaction.id==="string",`transaction id not set`);const rollback=transaction.rollback;const commit=transaction.commit;transaction.commit=async()=>{const ret=await commit.call(transaction);if(useLocking){await transaction._lock.release("commit")}return ret};transaction.rollback=async reason=>{const ret=await rollback.call(transaction,reason);if(useLocking){await transaction._lock.release("rollback")}return ret};if(useLocking){transaction._lock=await nodeLocker.lock(path,transaction.id,write,`${this.name}::getTransaction`)}return transaction}}}exports.CustomStorageSettings=CustomStorageSettings;class CustomStorageNodeAddress{constructor(containerPath){this.path=containerPath}}exports.CustomStorageNodeAddress=CustomStorageNodeAddress;class CustomStorageNodeInfo extends node_info_1.NodeInfo{constructor(info){super(info);this.revision=info.revision;this.revision_nr=info.revision_nr;this.created=info.created;this.modified=info.modified}}exports.CustomStorageNodeInfo=CustomStorageNodeInfo;class CustomStorage extends index_1.Storage{constructor(dbname,settings,env){super(dbname,settings,env);this._customImplementation=settings;this._init()}async _init(){this.debug.log(`Database "${this.name}" details:`.colorize(acebase_core_1.ColorStyle.dim));this.debug.log(`- Type: CustomStorage`.colorize(acebase_core_1.ColorStyle.dim));this.debug.log(`- Path: ${this.settings.path}`.colorize(acebase_core_1.ColorStyle.dim));this.debug.log(`- Max inline value size: ${this.settings.maxInlineValueSize}`.colorize(acebase_core_1.ColorStyle.dim));this.debug.log(`- Autoremove undefined props: ${this.settings.removeVoidProperties}`.colorize(acebase_core_1.ColorStyle.dim));await this._customImplementation.ready();const transaction=await this._customImplementation.getTransaction({path:"",write:true});const info=await this.getNodeInfo("",{transaction:transaction});if(!info.exists){await this._writeNode("",{},{transaction:transaction})}await transaction.commit();if(this.indexes.supported){await this.indexes.load()}this.emit("ready")}throwImplementationError(message){throw new Error(`CustomStorage "${this._customImplementation.name}" ${message}`)}_storeNode(path,node,options){const getTypedChildValue=val=>{if(val===null){throw new Error(`Not allowed to store null values. remove the property`)}else if(["string","number","boolean"].includes(typeof val)){return val}else if(val instanceof Date){return{type:node_value_types_1.VALUE_TYPES.DATETIME,value:val.getTime()}}else if(val instanceof acebase_core_1.PathReference){return{type:node_value_types_1.VALUE_TYPES.REFERENCE,value:val.path}}else if(val instanceof ArrayBuffer){return{type:node_value_types_1.VALUE_TYPES.BINARY,value:acebase_core_1.ascii85.encode(val)}}else if(typeof val==="object"){(0,assert_1.assert)(Object.keys(val).length===0,"child object stored in parent can only be empty");return val}};const unprocessed=`Caller should have pre-processed the value by converting it to a string`;if(node.type===node_value_types_1.VALUE_TYPES.ARRAY&&node.value instanceof Array){console.warn(`Unprocessed array. ${unprocessed}`);const obj={};for(let i=0;i{node.value[key]=getTypedChildValue(original[key])}))}return options.transaction.set(path,node)}_processReadNodeValue(node){const getTypedChildValue=val=>{if(val.type===node_value_types_1.VALUE_TYPES.BINARY){return acebase_core_1.ascii85.decode(val.value)}else if(val.type===node_value_types_1.VALUE_TYPES.DATETIME){return new Date(val.value)}else if(val.type===node_value_types_1.VALUE_TYPES.REFERENCE){return new acebase_core_1.PathReference(val.value)}else{throw new Error(`Unhandled child value type ${val.type}`)}};switch(node.type){case node_value_types_1.VALUE_TYPES.ARRAY:case node_value_types_1.VALUE_TYPES.OBJECT:{const obj=node.value;Object.keys(obj).forEach((key=>{const item=obj[key];if(typeof item==="object"&&"type"in item){obj[key]=getTypedChildValue(item)}}));node.value=obj;break}case node_value_types_1.VALUE_TYPES.BINARY:{node.value=acebase_core_1.ascii85.decode(node.value);break}case node_value_types_1.VALUE_TYPES.REFERENCE:{node.value=new acebase_core_1.PathReference(node.value);break}case node_value_types_1.VALUE_TYPES.STRING:{break}default:throw new Error(`Invalid standalone record value type`)}}async _readNode(path,options){const node=await options.transaction.get(path);if(node===null){return null}if(typeof node!=="object"){this.throwImplementationError(`transaction.get must return an ICustomStorageNode object. Use JSON.parse if your set function stored it as a string`)}this._processReadNodeValue(node);return node}_getTypeFromStoredValue(val){let type;if(typeof val==="string"){type=node_value_types_1.VALUE_TYPES.STRING}else if(typeof val==="number"){type=node_value_types_1.VALUE_TYPES.NUMBER}else if(typeof val==="boolean"){type=node_value_types_1.VALUE_TYPES.BOOLEAN}else if(val instanceof Array){type=node_value_types_1.VALUE_TYPES.ARRAY}else if(typeof val==="object"){if("type"in val){const serialized=val;type=serialized.type;val=serialized.value;if(type===node_value_types_1.VALUE_TYPES.DATETIME){val=new Date(val)}else if(type===node_value_types_1.VALUE_TYPES.REFERENCE){val=new acebase_core_1.PathReference(val)}}else{type=node_value_types_1.VALUE_TYPES.OBJECT}}else{throw new Error(`Unknown value type`)}return{type:type,value:val}}async _writeNode(path,value,options){if(!options.merge&&this.valueFitsInline(value)&&path!==""){throw new Error(`invalid value to store in its own node`)}else if(path===""&&(typeof value!=="object"||value instanceof Array)){throw new Error(`Invalid root node value. Must be an object`)}if(typeof options.diff==="undefined"&&typeof options.currentValue!=="undefined"){const diff=compareValues(options.currentValue,value);if(options.merge&&typeof diff==="object"){diff.removed=diff.removed.filter((key=>value[key]===null))}options.diff=diff}if(options.diff==="identical"){return}const transaction=options.transaction;const currentRow=options.currentValue===null?null:await this._readNode(path,{transaction:transaction});if(options.merge&¤tRow){if(currentRow.type===node_value_types_1.VALUE_TYPES.ARRAY&&!(value instanceof Array)&&typeof value==="object"&&Object.keys(value).some((key=>isNaN(parseInt(key))))){throw new Error(`Cannot merge existing array of path "${path}" with an object`)}if(value instanceof Array&¤tRow.type!==node_value_types_1.VALUE_TYPES.ARRAY){throw new Error(`Cannot merge existing object of path "${path}" with an array`)}}const revision=options.revision||acebase_core_1.ID.generate();const mainNode={type:currentRow&¤tRow.type===node_value_types_1.VALUE_TYPES.ARRAY?node_value_types_1.VALUE_TYPES.ARRAY:node_value_types_1.VALUE_TYPES.OBJECT,value:{}};const childNodeValues={};if(value instanceof Array){mainNode.type=node_value_types_1.VALUE_TYPES.ARRAY;const obj={};for(let i=0;i{if(!(key in value)){value[key]=null}}))}Object.keys(value).forEach((key=>{const val=value[key];delete mainNode.value[key];if(val===null){return}else if(typeof val==="undefined"){if(this.settings.removeVoidProperties===true){delete value[key];return}else{throw new Error(`Property "${key}" has invalid value. Cannot store undefined values. Set removeVoidProperties option to true to automatically remove undefined properties`)}}if(this.valueFitsInline(val)){mainNode.value[key]=val}else{childNodeValues[key]=val}}))}const isArray=mainNode.type===node_value_types_1.VALUE_TYPES.ARRAY;if(currentRow){this.debug.log(`Node "/${path}" is being ${options.merge?"updated":"overwritten"}`.colorize(acebase_core_1.ColorStyle.cyan));if(currentIsObjectOrArray||newIsObjectOrArray){const pathInfo=acebase_core_1.PathInfo.get(path);const keys=[];let checkExecuted=false;const includeChildCheck=childPath=>{checkExecuted=true;if(!transaction.production&&!pathInfo.isParentOf(childPath)){this.throwImplementationError(`"${childPath}" is not a child of "${path}" - childrenOf must only check and return paths that are children`)}return true};const addChildPath=childPath=>{if(!checkExecuted){this.throwImplementationError(`childrenOf did not call checkCallback before addCallback`)}const key=acebase_core_1.PathInfo.get(childPath).key;keys.push(key.toString());return true};await transaction.childrenOf(path,{metadata:false,value:false},includeChildCheck,addChildPath);children.current=children.current.concat(keys);if(newIsObjectOrArray){if(options&&options.merge){children.new=children.current.slice()}Object.keys(value).forEach((key=>{if(!children.new.includes(key)){children.new.push(key)}}))}const changes={insert:children.new.filter((key=>!children.current.includes(key))),update:[],delete:options&&options.merge?Object.keys(value).filter((key=>value[key]===null)):children.current.filter((key=>!children.new.includes(key)))};changes.update=children.new.filter((key=>children.current.includes(key)&&!changes.delete.includes(key)));if(isArray&&options.merge&&(changes.insert.length>0||changes.delete.length>0)){const newArrayKeys=changes.update.concat(changes.insert);const isExhaustive=newArrayKeys.every(((k,index,arr)=>arr.includes(index.toString())));if(!isExhaustive){throw new Error(`Elements cannot be inserted beyond, or removed before the end of an array. Rewrite the whole array at path "${path}" or change your schema to use an object collection instead`)}}const writePromises=Object.keys(childNodeValues).map((key=>{const keyOrIndex=isArray?parseInt(key):key;const childDiff=typeof options.diff==="object"?options.diff.forChild(keyOrIndex):undefined;if(childDiff==="identical"){return}const childPath=pathInfo.childPath(keyOrIndex);const childValue=childNodeValues[keyOrIndex];const currentChildValue=typeof options.currentValue==="undefined"?undefined:options.currentValue!==null&&typeof options.currentValue==="object"&&keyOrIndex in options.currentValue?options.currentValue[keyOrIndex]:null;return this._writeNode(childPath,childValue,{transaction:transaction,revision:revision,merge:false,currentValue:currentChildValue,diff:childDiff})}));const movingNodes=newIsObjectOrArray?keys.filter((key=>key in mainNode.value)):[];const deleteDedicatedKeys=changes.delete.concat(movingNodes);const deletePromises=deleteDedicatedKeys.map((key=>{const keyOrIndex=isArray?parseInt(key):key;const childPath=pathInfo.childPath(keyOrIndex);return this._deleteNode(childPath,{transaction:transaction})}));const promises=writePromises.concat(deletePromises);await Promise.all(promises)}const p=this._storeNode(path,{type:mainNode.type,value:mainNode.value,revision:currentRow.revision,revision_nr:currentRow.revision_nr+1,created:currentRow.created,modified:Date.now()},{transaction:transaction});if(p instanceof Promise){return await p}}else{this.debug.log(`Node "/${path}" is being created`.colorize(acebase_core_1.ColorStyle.cyan));if(isArray){const arrayKeys=Object.keys(mainNode.value).concat(Object.keys(childNodeValues));const isExhaustive=arrayKeys.every(((k,index,arr)=>arr.includes(index.toString())));if(!isExhaustive){throw new Error(`Cannot store arrays with missing entries`)}}const promises=Object.keys(childNodeValues).map((key=>{const keyOrIndex=isArray?parseInt(key):key;const childPath=acebase_core_1.PathInfo.getChildPath(path,keyOrIndex);const childValue=childNodeValues[keyOrIndex];return this._writeNode(childPath,childValue,{transaction:transaction,revision:revision,merge:false,currentValue:null})}));const p=this._storeNode(path,{type:mainNode.type,value:mainNode.value,revision:revision,revision_nr:1,created:Date.now(),modified:Date.now()},{transaction:transaction});if(p instanceof Promise){promises.push(p)}await Promise.all(promises)}}async _deleteNode(path,options){const pathInfo=acebase_core_1.PathInfo.get(path);this.debug.log(`Node "/${path}" is being deleted`.colorize(acebase_core_1.ColorStyle.cyan));const deletePaths=[path];let checkExecuted=false;const includeDescendantCheck=descPath=>{checkExecuted=true;if(!transaction.production&&!pathInfo.isAncestorOf(descPath)){this.throwImplementationError(`"${descPath}" is not a descendant of "${path}" - descendantsOf must only check and return paths that are descendants`)}return true};const addDescendant=descPath=>{if(!checkExecuted){this.throwImplementationError(`descendantsOf did not call checkCallback before addCallback`)}deletePaths.push(descPath);return true};const transaction=options.transaction;await transaction.descendantsOf(path,{metadata:false,value:false},includeDescendantCheck,addDescendant);this.debug.log(`Nodes ${deletePaths.map((p=>`"/${p}"`)).join(",")} are being deleted`.colorize(acebase_core_1.ColorStyle.cyan));return transaction.removeMultiple(deletePaths)}getChildren(path,options={}){let callback;const generator={next(valueCallback){callback=valueCallback;return start()}};const start=async()=>{const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:false});try{let canceled=false;await(async()=>{const node=await this._readNode(path,{transaction:transaction});if(!node){throw new node_errors_1.NodeNotFoundError(`Node "/${path}" does not exist`)}if(![node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(node.type)){return}const isArray=node.type===node_value_types_1.VALUE_TYPES.ARRAY;const value=node.value;let keys=Object.keys(value).map((key=>isArray?parseInt(key):key));if(options.keyFilter){keys=keys.filter((key=>options.keyFilter.includes(key)))}const pathInfo=acebase_core_1.PathInfo.get(path);keys.length>0&&keys.every((key=>{const child=this._getTypeFromStoredValue(value[key]);const info=new CustomStorageNodeInfo({path:pathInfo.childPath(key),key:isArray?null:key,index:isArray?key:null,type:child.type,address:null,exists:true,value:child.value,revision:node.revision,revision_nr:node.revision_nr,created:new Date(node.created),modified:new Date(node.modified)});canceled=callback(info)===false;return!canceled}));if(canceled){return}let checkExecuted=false;const includeChildCheck=childPath=>{checkExecuted=true;if(!transaction.production&&!pathInfo.isParentOf(childPath)){this.throwImplementationError(`"${childPath}" is not a child of "${path}" - childrenOf must only check and return paths that are children`)}if(options.keyFilter){const key=acebase_core_1.PathInfo.get(childPath).key;return options.keyFilter.includes(key)}return true};const addChildNode=(childPath,node)=>{if(!checkExecuted){this.throwImplementationError(`childrenOf did not call checkCallback before addCallback`)}const key=acebase_core_1.PathInfo.get(childPath).key;const info=new CustomStorageNodeInfo({path:childPath,type:node.type,key:isArray?null:key,index:isArray?key:null,address:new node_address_1.NodeAddress(childPath),exists:true,value:null,revision:node.revision,revision_nr:node.revision_nr,created:new Date(node.created),modified:new Date(node.modified)});canceled=callback(info)===false;return!canceled};await transaction.childrenOf(path,{metadata:true,value:false},includeChildCheck,addChildNode)})();if(!options.transaction){await transaction.commit()}return canceled}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}};return generator}async getNode(path,options){options=options||{};const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:false});try{const node=await(async()=>{const filtered=options.include&&options.include.length>0||options.exclude&&options.exclude.length>0||options.child_objects===false;const pathInfo=acebase_core_1.PathInfo.get(path);const targetNode=await this._readNode(path,{transaction:transaction});if(!targetNode){if(path===""){return{value:null}}const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);const parentNode=await this._readNode(pathInfo.parentPath,{transaction:transaction});if(parentNode&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(parentNode.type)&&pathInfo.key in parentNode.value){const childValueInfo=this._getTypeFromStoredValue(parentNode.value[pathInfo.key]);return{revision:parentNode.revision,revision_nr:parentNode.revision_nr,created:parentNode.created,modified:parentNode.modified,type:childValueInfo.type,value:childValueInfo.value}}return{value:null}}const isArray=targetNode.type===node_value_types_1.VALUE_TYPES.ARRAY;const convertFilterArray=arr=>{const isNumber=key=>/^[0-9]+$/.test(key);return arr.map((path=>acebase_core_1.PathInfo.get(isArray&&isNumber(path)?`[${path}]`:path)))};const includeFilter=options.include?convertFilterArray(options.include):[];const excludeFilter=options.exclude?convertFilterArray(options.exclude):[];const applyFiltersOnInlineData=(descPath,node)=>{if([node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(node.type)&&includeFilter.length>0){const trailKeys=acebase_core_1.PathInfo.getPathKeys(descPath).slice(pathInfo.keys.length);const checkPathInfo=new acebase_core_1.PathInfo(trailKeys);const remove=[];const includes=includeFilter.filter((info=>info.isDescendantOf(checkPathInfo)));if(includes.length>0){const isArray=node.type===node_value_types_1.VALUE_TYPES.ARRAY;remove.push(...Object.keys(node.value).map((key=>isArray?+key:key)));for(const info of includes){const targetProp=info.keys[trailKeys.length];if(typeof targetProp==="string"&&(targetProp==="*"||targetProp.startsWith("$"))){remove.splice(0);break}const index=remove.indexOf(targetProp);index>=0&&remove.splice(index,1)}}const hasIncludeOnChild=includeFilter.some((info=>info.isChildOf(checkPathInfo)));const hasExcludeOnChild=excludeFilter.some((info=>info.isChildOf(checkPathInfo)));if(hasExcludeOnChild&&!hasIncludeOnChild){const excludes=excludeFilter.filter((info=>info.isChildOf(checkPathInfo)));for(let i=0;iinfo.equals(remove[i])))){remove.splice(i,1);i--}}}for(const key of remove){delete node.value[key]}}};applyFiltersOnInlineData(path,targetNode);let checkExecuted=false;const includeDescendantCheck=(descPath,metadata)=>{checkExecuted=true;if(!transaction.production&&!pathInfo.isAncestorOf(descPath)){this.throwImplementationError(`"${descPath}" is not a descendant of "${path}" - descendantsOf must only check and return paths that are descendants`)}if(!filtered){return true}const descPathKeys=acebase_core_1.PathInfo.getPathKeys(descPath);const trailKeys=descPathKeys.slice(pathInfo.keys.length);const checkPathInfo=new acebase_core_1.PathInfo(trailKeys);let include=(includeFilter.length>0?includeFilter.some((info=>checkPathInfo.isOnTrailOf(info))):true)&&(excludeFilter.length>0?!excludeFilter.some((info=>info.equals(checkPathInfo)||info.isAncestorOf(checkPathInfo))):true);if(include&&options.child_objects===false&&(pathInfo.isParentOf(descPath)&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(metadata?metadata.type:-1)||acebase_core_1.PathInfo.getPathKeys(descPath).length>pathInfo.pathKeys.length+1)){include=false}return include};const descRows=[];const addDescendant=(descPath,node)=>{if(!checkExecuted){this.throwImplementationError("descendantsOf did not call checkCallback before addCallback")}if(options.child_objects===false&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(node.type)){return true}applyFiltersOnInlineData(descPath,node);this._processReadNodeValue(node);const row=node;row.path=descPath;descRows.push(row);return true};await transaction.descendantsOf(path,{metadata:true,value:true},includeDescendantCheck,addDescendant);this.debug.log(`Read node "/${path}" and ${filtered?"(filtered) ":""}descendants from ${descRows.length+1} records`.colorize(acebase_core_1.ColorStyle.magenta));const result=targetNode;const objectToArray=obj=>{const arr=[];Object.keys(obj).forEach((key=>{const index=parseInt(key);arr[index]=obj[index]}));return arr};if(targetNode.type===node_value_types_1.VALUE_TYPES.ARRAY){result.value=objectToArray(result.value)}if(targetNode.type===node_value_types_1.VALUE_TYPES.OBJECT||targetNode.type===node_value_types_1.VALUE_TYPES.ARRAY){const targetPathKeys=acebase_core_1.PathInfo.getPathKeys(path);const value=targetNode.value;for(let i=0;i{if(childKey in parent[key]){this.throwImplementationError(`Custom storage merge error: child key "${childKey}" is in parent value already! Make sure the get/childrenOf/descendantsOf methods of the custom storage class return values that can be modified by AceBase without affecting the stored source`)}parent[key][childKey]=nodeValue[childKey]}))}}else{parent[key]=nodeValue}parent=parent[key]}}}else if(descRows.length>0){this.throwImplementationError(`multiple records found for non-object value!`)}if(options.child_objects===false){Object.keys(result.value).forEach((key=>{if(typeof result.value[key]==="object"&&result.value[key].constructor===Object){(0,assert_1.assert)(Object.keys(result.value[key]).length===0);delete result.value[key]}}))}if(options.include){}if(options.exclude){const process=(obj,keys)=>{if(typeof obj!=="object"){return}const key=keys[0];if(key==="*"){Object.keys(obj).forEach((k=>{process(obj[k],keys.slice(1))}))}else if(keys.length>1){key in obj&&process(obj[key],keys.slice(1))}else{delete obj[key]}};options.exclude.forEach((path=>{const checkKeys=acebase_core_1.PathInfo.getPathKeys(path);process(result.value,checkKeys)}))}return result})();if(!options.transaction){await transaction.commit()}return node}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}}async getNodeInfo(path,options={}){options=options||{};const pathInfo=acebase_core_1.PathInfo.get(path);const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:false});try{const node=await this._readNode(path,{transaction:transaction});const info=new CustomStorageNodeInfo({path:path,key:typeof pathInfo.key==="string"?pathInfo.key:null,index:typeof pathInfo.key==="number"?pathInfo.key:null,type:node?node.type:0,exists:node!==null,address:node?new node_address_1.NodeAddress(path):null,created:node?new Date(node.created):null,modified:node?new Date(node.modified):null,revision:node?node.revision:null,revision_nr:node?node.revision_nr:null});if(!node&&path!==""){const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);const parent=await this._readNode(pathInfo.parentPath,{transaction:transaction});if(parent&&[node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(parent.type)&&pathInfo.key in parent.value){info.exists=true;info.value=parent.value[pathInfo.key];info.address=null;info.type=parent.type;info.created=new Date(parent.created);info.modified=new Date(parent.modified);info.revision=parent.revision;info.revision_nr=parent.revision_nr}else{info.address=null}}if(options.include_child_count){info.childCount=0;if([node_value_types_1.VALUE_TYPES.OBJECT,node_value_types_1.VALUE_TYPES.ARRAY].includes(info.valueType)&&info.address){info.childCount=node.value?Object.keys(node.value).length:0;info.childCount+=await transaction.getChildCount(path)}}if(!options.transaction){await transaction.commit()}return info}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}}async setNode(path,value,options={suppress_events:false,context:null}){if(this.settings.readOnly){throw new Error(`Database is opened in read-only mode`)}const pathInfo=acebase_core_1.PathInfo.get(path);const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:true});try{if(path===""){if(value===null||typeof value!=="object"||value instanceof Array||value instanceof ArrayBuffer||"buffer"in value&&value.buffer instanceof ArrayBuffer){throw new Error(`Invalid value for root node: ${value}`)}await this._writeNodeWithTracking("",value,{merge:false,transaction:transaction,suppress_events:options.suppress_events,context:options.context})}else if(typeof options.assert_revision!=="undefined"){const info=await this.getNodeInfo(path,{transaction:transaction});if(info.revision!==options.assert_revision){throw new node_errors_1.NodeRevisionError(`revision '${info.revision}' does not match requested revision '${options.assert_revision}'`)}if(info.address&&info.address.path===path&&value!==null&&!this.valueFitsInline(value)){await this._writeNodeWithTracking(path,value,{merge:false,transaction:transaction,suppress_events:options.suppress_events,context:options.context})}else{const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);await this._writeNodeWithTracking(pathInfo.parentPath,{[pathInfo.key]:value},{merge:true,transaction:transaction,suppress_events:options.suppress_events,context:options.context})}}else{const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);await this.updateNode(pathInfo.parentPath,{[pathInfo.key]:value},{transaction:transaction,suppress_events:options.suppress_events,context:options.context})}if(!options.transaction){await transaction.commit()}}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}}async updateNode(path,updates,options={suppress_events:false,context:null}){if(this.settings.readOnly){throw new Error(`Database is opened in read-only mode`)}if(typeof updates!=="object"){throw new Error(`invalid updates argument`)}else if(Object.keys(updates).length===0){return}const transaction=options.transaction||await this._customImplementation.getTransaction({path:path,write:true});try{const nodeInfo=await this.getNodeInfo(path,{transaction:transaction});const pathInfo=acebase_core_1.PathInfo.get(path);if(nodeInfo.exists&&nodeInfo.address&&nodeInfo.address.path===path){await this._writeNodeWithTracking(path,updates,{transaction:transaction,merge:true,suppress_events:options.suppress_events,context:options.context})}else if(nodeInfo.exists){const pathInfo=acebase_core_1.PathInfo.get(path);const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);await this._writeNodeWithTracking(pathInfo.parentPath,{[pathInfo.key]:updates},{transaction:transaction,merge:true,suppress_events:options.suppress_events,context:options.context})}else{const lockPath=await transaction.moveToParentPath(pathInfo.parentPath);(0,assert_1.assert)(lockPath===pathInfo.parentPath,`transaction.moveToParentPath() did not move to the right parent path of "${path}"`);await this.updateNode(pathInfo.parentPath,{[pathInfo.key]:updates},{transaction:transaction,suppress_events:options.suppress_events,context:options.context})}if(!options.transaction){await transaction.commit()}}catch(err){if(!options.transaction){await transaction.rollback(err)}throw err}}}exports.CustomStorage=CustomStorage},{"../../assert":4,"../../node-address":10,"../../node-errors":11,"../../node-info":12,"../../node-lock":13,"../../node-value-types":14,"../index":28,"./helpers":20,"acebase-core":43}],22:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createIndexedDBInstance=void 0;const acebase_core_1=require("acebase-core");const __1=require("..");const __2=require("../../..");const settings_1=require("./settings");const transaction_1=require("./transaction");function createIndexedDBInstance(dbname,init={}){const settings=new settings_1.IndexedDBStorageSettings(init);const IndexedDB=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;const request=IndexedDB.open(`${dbname}.acebase`,1);request.onupgradeneeded=e=>{const db=request.result;db.createObjectStore("nodes",{keyPath:"path"});db.createObjectStore("content")};let idb;const readyPromise=new Promise(((resolve,reject)=>{request.onsuccess=e=>{idb=request.result;resolve()};request.onerror=e=>{reject(e)}}));const cache=new acebase_core_1.SimpleCache(typeof settings.cacheSeconds==="number"?settings.cacheSeconds:60);const storageSettings=new __1.CustomStorageSettings({name:"IndexedDB",locking:true,removeVoidProperties:settings.removeVoidProperties,maxInlineValueSize:settings.maxInlineValueSize,lockTimeout:settings.lockTimeout,ready(){return readyPromise},async getTransaction(target){await readyPromise;const context={debug:false,db:idb,cache:cache,ipc:ipc};return new transaction_1.IndexedDBStorageTransaction(context,target)}});const db=new __2.AceBase(dbname,{logLevel:settings.logLevel,storage:storageSettings,sponsor:settings.sponsor});const ipc=db.api.storage.ipc;db.settings.ipcEvents=settings.multipleTabs===true;ipc.on("notification",(async notification=>{const message=notification.data;if(typeof message!=="object"){return}if(message.action==="cache.invalidate"){for(const path of message.paths){cache.remove(path)}}}));return db}exports.createIndexedDBInstance=createIndexedDBInstance},{"..":21,"../../..":6,"./settings":23,"./transaction":24,"acebase-core":43}],23:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.IndexedDBStorageSettings=void 0;const __1=require("../..");class IndexedDBStorageSettings extends __1.StorageSettings{constructor(settings){super(settings);this.multipleTabs=false;this.cacheSeconds=60;this.sponsor=false;if(typeof settings.logLevel==="string"){this.logLevel=settings.logLevel}if(typeof settings.multipleTabs==="boolean"){this.multipleTabs=settings.multipleTabs}if(typeof settings.cacheSeconds==="number"){this.cacheSeconds=settings.cacheSeconds}if(typeof settings.sponsor==="boolean"){this.sponsor=settings.sponsor}["type","ipc","path"].forEach((prop=>{if(prop in settings){console.warn(`${prop} setting is not supported for AceBase IndexedDBStorage`)}}))}}exports.IndexedDBStorageSettings=IndexedDBStorageSettings},{"../..":28}],24:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.IndexedDBStorageTransaction=void 0;const __1=require("..");function _requestToPromise(request){return new Promise(((resolve,reject)=>{request.onsuccess=event=>resolve(request.result||null);request.onerror=reject}))}class IndexedDBStorageTransaction extends __1.CustomStorageTransaction{constructor(context,target){super(target);this.context=context;this.production=true;this._pending=[]}_createTransaction(write=false){const tx=this.context.db.transaction(["nodes","content"],write?"readwrite":"readonly");return tx}_splitMetadata(node){const value=node.value;const copy=Object.assign({},node);delete copy.value;const metadata=copy;return{metadata:metadata,value:value}}async commit(){if(this._pending.length===0){return}const batch=this._pending.splice(0);this.context.ipc.sendNotification({action:"cache.invalidate",paths:batch.map((op=>op.path))});const tx=this._createTransaction(true);try{await new Promise(((resolve,reject)=>{let stop=false,processed=0;const handleError=err=>{stop=true;reject(err)};const handleSuccess=()=>{if(++processed===batch.length){resolve()}};batch.forEach(((op,i)=>{if(stop){return}let r1,r2;const path=op.path;if(op.action==="set"){const{metadata:metadata,value:value}=this._splitMetadata(op.node);const nodeInfo={path:path,metadata:metadata};r1=tx.objectStore("nodes").put(nodeInfo);r2=tx.objectStore("content").put(value,path);this.context.cache.set(path,op.node)}else if(op.action==="remove"){r1=tx.objectStore("content").delete(path);r2=tx.objectStore("nodes").delete(path);this.context.cache.set(path,null)}else{handleError(new Error(`Unknown pending operation "${op.action}" on path "${path}" `))}let succeeded=0;r1.onsuccess=r2.onsuccess=()=>{if(++succeeded===2){handleSuccess()}};r1.onerror=r2.onerror=handleError}))}));tx.commit&&tx.commit()}catch(err){console.error(err);tx.abort&&tx.abort();throw err}}async rollback(err){this._pending=[]}async get(path){if(this.context.cache.has(path)){const cache=this.context.cache.get(path);return cache}const tx=this._createTransaction(false);const r1=_requestToPromise(tx.objectStore("nodes").get(path));const r2=_requestToPromise(tx.objectStore("content").get(path));try{const results=await Promise.all([r1,r2]);tx.commit&&tx.commit();const info=results[0];if(!info){this.context.cache.set(path,null);return null}const node=info.metadata;node.value=results[1];this.context.cache.set(path,node);return node}catch(err){console.error(`IndexedDB get error`,err);tx.abort&&tx.abort();throw err}}set(path,node){this._pending.push({action:"set",path:path,node:node})}remove(path){this._pending.push({action:"remove",path:path})}async removeMultiple(paths){paths.forEach((path=>{this._pending.push({action:"remove",path:path})}))}childrenOf(path,include,checkCallback,addCallback){return this._getChildrenOf(path,Object.assign(Object.assign({},include),{descendants:false}),checkCallback,addCallback)}descendantsOf(path,include,checkCallback,addCallback){return this._getChildrenOf(path,Object.assign(Object.assign({},include),{descendants:true}),checkCallback,addCallback)}_getChildrenOf(path,include,checkCallback,addCallback){return new Promise(((resolve,reject)=>{const pathInfo=__1.CustomStorageHelpers.PathInfo.get(path);const tx=this._createTransaction(false);const store=tx.objectStore("nodes");const query=IDBKeyRange.lowerBound(path,true);const cursor=include.metadata?store.openCursor(query):store.openKeyCursor(query);cursor.onerror=e=>{var _a;(_a=tx.abort)===null||_a===void 0?void 0:_a.call(tx);reject(e)};cursor.onsuccess=async e=>{var _a,_b,_c;const otherPath=(_b=(_a=cursor.result)===null||_a===void 0?void 0:_a.key)!==null&&_b!==void 0?_b:null;let keepGoing=true;if(otherPath===null){keepGoing=false}else if(!pathInfo.isAncestorOf(otherPath)){keepGoing=false}else if(include.descendants||pathInfo.isParentOf(otherPath)){let node;if(include.metadata){const valueCursor=cursor;const data=valueCursor.result.value;node=data.metadata}const shouldAdd=checkCallback(otherPath,node);if(shouldAdd){if(include.value){if(this.context.cache.has(otherPath)){const cache=this.context.cache.get(otherPath);node.value=cache.value}else{const req=tx.objectStore("content").get(otherPath);node.value=await new Promise(((resolve,reject)=>{req.onerror=e=>{resolve(null)};req.onsuccess=e=>{resolve(req.result)}}));this.context.cache.set(otherPath,node.value===null?null:node)}}keepGoing=addCallback(otherPath,node)}}if(keepGoing){try{cursor.result.continue()}catch(err){keepGoing=false}}if(!keepGoing){(_c=tx.commit)===null||_c===void 0?void 0:_c.call(tx);resolve()}}}))}}exports.IndexedDBStorageTransaction=IndexedDBStorageTransaction},{"..":21}],25:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createLocalStorageInstance=exports.LocalStorageTransaction=exports.LocalStorageSettings=void 0;const __1=require("..");const __2=require("../../..");const settings_1=require("./settings");Object.defineProperty(exports,"LocalStorageSettings",{enumerable:true,get:function(){return settings_1.LocalStorageSettings}});const transaction_1=require("./transaction");Object.defineProperty(exports,"LocalStorageTransaction",{enumerable:true,get:function(){return transaction_1.LocalStorageTransaction}});function createLocalStorageInstance(dbname,init={}){const settings=new settings_1.LocalStorageSettings(init);const localStorage=settings.provider?settings.provider:settings.temp?window.localStorage:window.sessionStorage;const storageSettings=new __1.CustomStorageSettings({name:"LocalStorage",locking:true,removeVoidProperties:settings.removeVoidProperties,maxInlineValueSize:settings.maxInlineValueSize,async ready(){},async getTransaction(target){const context={debug:true,dbname:dbname,localStorage:localStorage};const transaction=new transaction_1.LocalStorageTransaction(context,target);return transaction}});const db=new __2.AceBase(dbname,{logLevel:settings.logLevel,storage:storageSettings,sponsor:settings.sponsor});db.settings.ipcEvents=settings.multipleTabs===true;return db}exports.createLocalStorageInstance=createLocalStorageInstance},{"..":21,"../../..":6,"./settings":26,"./transaction":27}],26:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LocalStorageSettings=void 0;const __1=require("../..");class LocalStorageSettings extends __1.StorageSettings{constructor(settings){super(settings);this.temp=false;this.multipleTabs=false;if(typeof settings.temp==="boolean"){this.temp=settings.temp}if(typeof settings.provider==="object"){this.provider=settings.provider}if(typeof settings.multipleTabs==="boolean"){this.multipleTabs=settings.multipleTabs}if(typeof settings.logLevel==="string"){this.logLevel=settings.logLevel}if(typeof settings.sponsor==="boolean"){this.sponsor=settings.sponsor}["type","ipc","path"].forEach((prop=>{if(prop in settings){console.warn(`${prop} setting is not supported for AceBase LocalStorage`)}}))}}exports.LocalStorageSettings=LocalStorageSettings},{"../..":28}],27:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LocalStorageTransaction=void 0;const __1=require("..");class LocalStorageTransaction extends __1.CustomStorageTransaction{constructor(context,target){super(target);this.context=context;this._storageKeysPrefix=`${this.context.dbname}.acebase::`}async commit(){}async rollback(err){}async get(path){const json=this.context.localStorage.getItem(this.getStorageKeyForPath(path));const val=JSON.parse(json);return val}async set(path,val){const json=JSON.stringify(val);this.context.localStorage.setItem(this.getStorageKeyForPath(path),json)}async remove(path){this.context.localStorage.removeItem(this.getStorageKeyForPath(path))}async childrenOf(path,include,checkCallback,addCallback){const pathInfo=__1.CustomStorageHelpers.PathInfo.get(path);for(let i=0;i`notify_${event}`)));const NOOP=()=>{};class SchemaValidationError extends Error{constructor(reason){super(`Schema validation failed: ${reason}`);this.reason=reason}}exports.SchemaValidationError=SchemaValidationError;class StorageSettings{constructor(settings={}){this.maxInlineValueSize=50;this.removeVoidProperties=false;this.path=".";this.lockTimeout=120;this.type="data";this.readOnly=false;if(typeof settings.maxInlineValueSize==="number"){this.maxInlineValueSize=settings.maxInlineValueSize}if(typeof settings.removeVoidProperties==="boolean"){this.removeVoidProperties=settings.removeVoidProperties}if(typeof settings.path==="string"){this.path=settings.path}if(this.path.endsWith("/")){this.path=this.path.slice(0,-1)}if(typeof settings.lockTimeout==="number"){this.lockTimeout=settings.lockTimeout}if(typeof settings.type==="string"){this.type=settings.type}if(typeof settings.readOnly==="boolean"){this.readOnly=settings.readOnly}if(["object","string"].includes(typeof settings.ipc)){this.ipc=settings.ipc}}}exports.StorageSettings=StorageSettings;class Storage extends acebase_core_1.SimpleEventEmitter{createTid(){return DEBUG_MODE?++this._lastTid:acebase_core_1.ID.generate()}constructor(name,settings,env){super();this.name=name;this.settings=settings;this._schemas=[];this._indexes=[];this._annoucedIndexes=new Map;this.indexes={get supported(){return promise_fs_1.pfs===null||promise_fs_1.pfs===void 0?void 0:promise_fs_1.pfs.hasFileSystem},create:(path,key,options={rebuild:false})=>{const context={storage:this,debug:this.debug,indexes:this._indexes,ipc:this.ipc};return(0,indexes_1.createIndex)(context,path,key,options)},get:(path,key=null)=>{if(path.includes("$")){const pathKeys=acebase_core_1.PathInfo.getPathKeys(path).map((key=>typeof key==="string"&&key.startsWith("$")?"*":key));path=new acebase_core_1.PathInfo(pathKeys).path}return this._indexes.filter((index=>index.path===path&&(key===null||key===index.key)))},getAll:(targetPath,options={parentPaths:true,childPaths:true})=>{const pathKeys=acebase_core_1.PathInfo.getPathKeys(targetPath);return this._indexes.filter((index=>{const indexKeys=acebase_core_1.PathInfo.getPathKeys(index.path+"/*");if(options.parentPaths&&indexKeys.every(((key,i)=>key==="*"||pathKeys[i]===key))&&[index.key].concat(...index.includeKeys).includes(pathKeys[indexKeys.length])){return true}else if(indexKeys.length[key,"*"].includes(indexKeys[i])))}))},list:()=>this._indexes.slice(),load:async()=>{this._indexes.splice(0);if(!promise_fs_1.pfs.hasFileSystem){return}let files=[];try{files=await promise_fs_1.pfs.readdir(`${this.settings.path}/${this.name}.acebase`)}catch(err){if(err.code!=="ENOENT"){this.debug.error(err)}}const promises=[];files.forEach((fileName=>{if(!fileName.endsWith(".idx")){return}const needsStoragePrefix=this.settings.type!=="data";const hasStoragePrefix=/^\[[a-z]+\]-/.test(fileName);if(!needsStoragePrefix&&!hasStoragePrefix||needsStoragePrefix&&fileName.startsWith(`[${this.settings.type}]-`)){const p=this.indexes.add(fileName);promises.push(p)}}));await Promise.all(promises)},add:async fileName=>{const existingIndex=this._indexes.find((index=>index.fileName===fileName));if(existingIndex){return existingIndex}else if(this._annoucedIndexes.has(fileName)){const index=await this._annoucedIndexes.get(fileName);return index}try{const indexPromise=data_index_1.DataIndex.readFromFile(this,fileName);this._annoucedIndexes.set(fileName,indexPromise);const index=await indexPromise;this._indexes.push(index);this._annoucedIndexes.delete(fileName);return index}catch(err){this.debug.error(err);return null}},delete:async fileName=>{const index=await this.indexes.remove(fileName);await index.delete();this.ipc.sendNotification({type:"index.deleted",fileName:index.fileName,path:index.path,keys:index.key})},remove:async fileName=>{const index=this._indexes.find((index=>index.fileName===fileName));if(!index){throw new Error(`Index ${fileName} not found`)}this._indexes.splice(this._indexes.indexOf(index),1);return index},close:async()=>{const promises=this.indexes.list().map((index=>index.close().catch((err=>this.debug.error(err)))));await Promise.all(promises)}};this._eventSubscriptions={};this.subscriptions={add:(path,type,callback)=>{if(SUPPORTED_EVENTS.indexOf(type)<0){throw new TypeError(`Invalid event type "${type}"`)}let pathSubs=this._eventSubscriptions[path];if(!pathSubs){pathSubs=this._eventSubscriptions[path]=[]}pathSubs.push({created:Date.now(),type:type,callback:callback});this.emit("subscribe",{path:path,event:type,callback:callback})},remove:(path,type,callback)=>{const pathSubs=this._eventSubscriptions[path];if(!pathSubs){return}const next=()=>pathSubs.findIndex((ps=>(type?ps.type===type:true)&&(callback?ps.callback===callback:true)));let i;while((i=next())>=0){pathSubs.splice(i,1)}this.emit("unsubscribe",{path:path,event:type,callback:callback})},hasValueSubscribersForPath(path){const valueNeeded=this.getValueSubscribersForPath(path);return!!valueNeeded},getValueSubscribersForPath:path=>{const pathInfo=new acebase_core_1.PathInfo(path);const valueSubscribers=[];Object.keys(this._eventSubscriptions).forEach((subscriptionPath=>{if(pathInfo.equals(subscriptionPath)||pathInfo.isDescendantOf(subscriptionPath)){const pathSubs=this._eventSubscriptions[subscriptionPath];const eventPath=acebase_core_1.PathInfo.fillVariables(subscriptionPath,path);pathSubs.filter((sub=>!sub.type.startsWith("notify_"))).forEach((sub=>{let dataPath=null;if(sub.type==="value"){dataPath=eventPath}else if(["mutated","mutations"].includes(sub.type)&&pathInfo.isDescendantOf(eventPath)){dataPath=path}else if(sub.type==="child_changed"&&path!==eventPath){const childKey=acebase_core_1.PathInfo.getPathKeys(path.slice(eventPath.length).replace(/^\//,""))[0];dataPath=acebase_core_1.PathInfo.getChildPath(eventPath,childKey)}else if(["child_added","child_removed"].includes(sub.type)&&pathInfo.isChildOf(eventPath)){const childKey=acebase_core_1.PathInfo.getPathKeys(path.slice(eventPath.length).replace(/^\//,""))[0];dataPath=acebase_core_1.PathInfo.getChildPath(eventPath,childKey)}if(dataPath!==null&&!valueSubscribers.some((s=>s.type===sub.type&&s.eventPath===eventPath))){valueSubscribers.push({type:sub.type,eventPath:eventPath,dataPath:dataPath,subscriptionPath:subscriptionPath})}}))}}));return valueSubscribers},getAllSubscribersForPath:path=>{const pathInfo=acebase_core_1.PathInfo.get(path);const subscribers=[];Object.keys(this._eventSubscriptions).forEach((subscriptionPath=>{if(pathInfo.isOnTrailOf(subscriptionPath)){const pathSubs=this._eventSubscriptions[subscriptionPath];const eventPath=acebase_core_1.PathInfo.fillVariables(subscriptionPath,path);pathSubs.forEach((sub=>{let dataPath=null;if(sub.type==="value"||sub.type==="notify_value"){dataPath=eventPath}else if(["child_changed","notify_child_changed"].includes(sub.type)){const childKey=path===eventPath||pathInfo.isAncestorOf(eventPath)?"*":acebase_core_1.PathInfo.getPathKeys(path.slice(eventPath.length).replace(/^\//,""))[0];dataPath=acebase_core_1.PathInfo.getChildPath(eventPath,childKey)}else if(["mutated","mutations","notify_mutated","notify_mutations"].includes(sub.type)){dataPath=path}else if(["child_added","child_removed","notify_child_added","notify_child_removed"].includes(sub.type)&&(pathInfo.isChildOf(eventPath)||path===eventPath||pathInfo.isAncestorOf(eventPath))){const childKey=path===eventPath||pathInfo.isAncestorOf(eventPath)?"*":acebase_core_1.PathInfo.getPathKeys(path.slice(eventPath.length).replace(/^\//,""))[0];dataPath=acebase_core_1.PathInfo.getChildPath(eventPath,childKey)}if(dataPath!==null&&!subscribers.some((s=>s.type===sub.type&&s.eventPath===eventPath&&s.subscriptionPath===subscriptionPath))){subscribers.push({type:sub.type,eventPath:eventPath,dataPath:dataPath,subscriptionPath:subscriptionPath})}}))}}));return subscribers},trigger:(event,path,dataPath,oldValue,newValue,context)=>{const pathSubscriptions=this._eventSubscriptions[path]||[];pathSubscriptions.filter((sub=>sub.type===event)).forEach((sub=>{sub.callback(null,dataPath,newValue,oldValue,context)}))}};this.debug=new acebase_core_1.DebugLogger(env.logLevel,`[${name}${typeof settings.type==="string"&&settings.type!=="data"?`:${settings.type}`:""}]`);const ipcName=name+(typeof settings.type==="string"?`_${settings.type}`:"");if(settings.ipc==="socket"||settings.ipc instanceof ipc_1.NetIPCServer){const ipcSettings={ipcName:ipcName,server:settings.ipc instanceof ipc_1.NetIPCServer?settings.ipc:null};this.ipc=new ipc_1.IPCSocketPeer(this,ipcSettings)}else if(settings.ipc){if(typeof settings.ipc.port!=="number"){throw new Error("IPC port number must be a number")}if(!["master","worker"].includes(settings.ipc.role)){throw new Error(`IPC client role must be either "master" or "worker", not "${settings.ipc.role}"`)}const ipcSettings=Object.assign({dbname:ipcName},settings.ipc);this.ipc=new ipc_1.RemoteIPCPeer(this,ipcSettings)}else{this.ipc=new ipc_1.IPCPeer(this,ipcName)}this.ipc.once("exit",(code=>{if(this.indexes.supported){this.indexes.close()}}));this.nodeLocker={lock:(path,tid,write,comment)=>this.ipc.lock({path:path,tid:tid,write:write,comment:comment})};this._lastTid=0}async close(){await this.ipc.exit()}get path(){return`${this.settings.path}/${this.name}.acebase`}valueFitsInline(value){if(typeof value==="number"||typeof value==="boolean"||value instanceof Date){return true}else if(typeof value==="string"){if(value.length>this.settings.maxInlineValueSize){return false}const encoded=encodeString(value);return encoded.lengththis.settings.maxInlineValueSize){return false}const encoded=encodeString(value.path);return encoded.length0){hasValueSubscribers=true;const eventPaths=valueSubscribers.map((sub=>({path:sub.dataPath,keys:acebase_core_1.PathInfo.getPathKeys(sub.dataPath)}))).sort(((a,b)=>{if(a.keys.lengthb.keys.length){return 1}return 0}));const first=eventPaths[0];topEventPath=first.path;if(valueSubscribers.filter((sub=>sub.dataPath===topEventPath)).every((sub=>sub.type==="mutated"||sub.type.startsWith("notify_")))){hasValueSubscribers=false}topEventPath=acebase_core_1.PathInfo.fillVariables(topEventPath,path)}const indexes=this.indexes.getAll(path,{childPaths:true,parentPaths:true}).map((index=>({index:index,keys:acebase_core_1.PathInfo.getPathKeys(index.path)}))).sort(((a,b)=>{if(a.keys.lengthb.keys.length){return 1}return 0})).map((obj=>obj.index));const keysFilter=[];if(indexes.length>0){indexes.sort(((a,b)=>{if(typeof a._pathKeys==="undefined"){a._pathKeys=acebase_core_1.PathInfo.getPathKeys(a.path)}if(typeof b._pathKeys==="undefined"){b._pathKeys=acebase_core_1.PathInfo.getPathKeys(b.path)}if(a._pathKeys.lengthb._pathKeys.length){return 1}return 0}));const topIndex=indexes[0];const topIndexPath=topIndex.path===path?path:acebase_core_1.PathInfo.fillVariables(`${topIndex.path}/*`,path);if(topIndexPath.lengthindex.path===topIndex.path)).forEach((index=>{const keys=[index.key].concat(index.includeKeys);keys.forEach((key=>!keysFilter.includes(key)&&keysFilter.push(key)))}))}}return{topEventPath:topEventPath,eventSubscriptions:eventSubscriptions,valueSubscribers:valueSubscribers,hasValueSubscribers:hasValueSubscribers,indexes:indexes,keysFilter:keysFilter}}async _writeNodeWithTracking(path,value,options={merge:false,waitForIndexUpdates:true,suppress_events:false,context:null,impact:null}){options=options||{};if(!options.tid&&!options.transaction){throw new Error("_writeNodeWithTracking MUST be executed with a tid OR transaction!")}options.merge=options.merge===true;const validation=this.validateSchema(path,value,{updates:options.merge});if(!validation.ok){throw new SchemaValidationError(validation.reason)}const tid=options.tid;const transaction=options.transaction;let topEventData=null;const updateImpact=options.impact?options.impact:this.getUpdateImpact(path,options.suppress_events);const{topEventPath:topEventPath,eventSubscriptions:eventSubscriptions,hasValueSubscribers:hasValueSubscribers,indexes:indexes}=updateImpact;let{keysFilter:keysFilter}=updateImpact;const writeNode=()=>{if(typeof options._customWriteFunction==="function"){return options._customWriteFunction()}if(topEventData){const pathKeys=acebase_core_1.PathInfo.getPathKeys(path);const eventPathKeys=acebase_core_1.PathInfo.getPathKeys(topEventPath);const trailKeys=pathKeys.slice(eventPathKeys.length);let currentValue=topEventData;while(trailKeys.length>0&¤tValue!==null){const childKey=trailKeys.shift();currentValue=typeof currentValue==="object"&&childKey in currentValue?currentValue[childKey]:null}options.currentValue=currentValue}return this._writeNode(path,value,options)};const transactionLoggingEnabled=this.settings.transactions&&this.settings.transactions.log===true;if(eventSubscriptions.length===0&&indexes.length===0&&!transactionLoggingEnabled){return writeNode()}if(!hasValueSubscribers&&options.merge===true&&keysFilter.length===0){keysFilter=Object.keys(value);if(topEventPath!==path){const trailPath=path.slice(topEventPath.length);keysFilter=keysFilter.map((key=>`${trailPath}/${key}`))}}const eventNodeInfo=await this.getNodeInfo(topEventPath,{transaction:transaction,tid:tid});let currentValue=null;if(eventNodeInfo.exists){const valueOptions={transaction:transaction,tid:tid};if(keysFilter.length>0){valueOptions.include=keysFilter}if(topEventPath===""&&typeof valueOptions.include==="undefined"){this.debug.warn('WARNING: One or more value event listeners on the root node are causing the entire database value to be read to facilitate change tracking. Using "value", "notify_value", "child_changed" and "notify_child_changed" events on the root node are a bad practice because of the significant performance impact. Use "mutated" or "mutations" events instead')}const node=await this.getNode(topEventPath,valueOptions);currentValue=node.value}topEventData=currentValue;const result=await writeNode()||{};let newTopEventData,modifiedData;if(path===topEventPath){if(options.merge){if(topEventData===null){newTopEventData=value instanceof Array?[]:{}}else{newTopEventData=topEventData instanceof Array?[]:{};Object.keys(topEventData).forEach((key=>{newTopEventData[key]=topEventData[key]}))}}else{newTopEventData=value}modifiedData=newTopEventData}else{const trailPath=path.slice(topEventPath.length).replace(/^\//,"");const trailKeys=acebase_core_1.PathInfo.getPathKeys(trailPath);if(topEventData===null){newTopEventData=typeof trailKeys[0]==="number"?[]:{}}else{newTopEventData=topEventData instanceof Array?[]:{};Object.keys(topEventData).forEach((key=>{newTopEventData[key]=topEventData[key]}))}modifiedData=newTopEventData;while(trailKeys.length>0){const childKey=trailKeys.shift();if(!options.merge&&trailKeys.length===0){modifiedData[childKey]=value}else{const original=modifiedData[childKey];const shallowCopy=typeof childKey==="number"?[...original]:Object.assign({},original);modifiedData[childKey]=shallowCopy}modifiedData=modifiedData[childKey]}}if(options.merge){Object.keys(value).forEach((key=>{modifiedData[key]=value[key]}))}const dataChanges=compareValues(topEventData,newTopEventData);if(dataChanges==="identical"){result.mutations=[];return result}function removeNulls(obj){if(obj===null||typeof obj!=="object"){return obj}Object.keys(obj).forEach((prop=>{const val=obj[prop];if(val===null){delete obj[prop];if(obj instanceof Array){obj.length--}}if(typeof val==="object"){removeNulls(val)}}))}removeNulls(newTopEventData);const indexUpdates=[];indexes.map((index=>({index:index,keys:acebase_core_1.PathInfo.getPathKeys(index.path)}))).sort(((a,b)=>{if(a.keys.lengthb.keys.length){return-1}return 0})).forEach((({index:index})=>{const pathKeys=acebase_core_1.PathInfo.getPathKeys(topEventPath);const indexPathKeys=acebase_core_1.PathInfo.getPathKeys(index.path+"/*");const trailKeys=indexPathKeys.slice(pathKeys.length);const oldValue=topEventData;const newValue=newTopEventData;if(trailKeys.length===0){(0,assert_1.assert)(pathKeys.length===indexPathKeys.length,"check logic");const p=this.ipc.isMaster?index.handleRecordUpdate(topEventPath,oldValue,newValue):this.ipc.sendRequest({type:"index.update",fileName:index.fileName,path:topEventPath,oldValue:oldValue,newValue:newValue});indexUpdates.push(p);return}const getAllIndexUpdates=(path,oldValue,newValue)=>{if(oldValue===null&&newValue===null){return[]}const pathKeys=acebase_core_1.PathInfo.getPathKeys(path);const indexPathKeys=acebase_core_1.PathInfo.getPathKeys(index.path+"/*");const trailKeys=indexPathKeys.slice(pathKeys.length);if(trailKeys.length===0){(0,assert_1.assert)(pathKeys.length===indexPathKeys.length,"check logic");return[{path:path,oldValue:oldValue,newValue:newValue}]}let results=[];let trailPath="";while(trailKeys.length>0){const subKey=trailKeys.shift();if(typeof subKey==="string"&&(subKey==="*"||subKey.startsWith("$"))){const allKeys=oldValue===null?[]:Object.keys(oldValue);newValue!==null&&Object.keys(newValue).forEach((key=>{if(allKeys.indexOf(key)<0){allKeys.push(key)}}));allKeys.forEach((key=>{const childPath=acebase_core_1.PathInfo.getChildPath(trailPath,key);const childValues=getChildValues(key,oldValue,newValue);const subTrailPath=acebase_core_1.PathInfo.getChildPath(path,childPath);const childResults=getAllIndexUpdates(subTrailPath,childValues.oldValue,childValues.newValue);results=results.concat(childResults)}));break}else{const values=getChildValues(subKey,oldValue,newValue);oldValue=values.oldValue;newValue=values.newValue;if(oldValue===null&&newValue===null){break}trailPath=acebase_core_1.PathInfo.getChildPath(trailPath,subKey)}}return results};const results=getAllIndexUpdates(topEventPath,oldValue,newValue);results.forEach((result=>{const p=this.ipc.isMaster?index.handleRecordUpdate(result.path,result.oldValue,result.newValue):this.ipc.sendRequest({type:"index.update",fileName:index.fileName,path:result.path,oldValue:result.oldValue,newValue:result.newValue});indexUpdates.push(p)}))}));const callSubscriberWithValues=(sub,oldValue,newValue,variables=[])=>{let trigger=true;let type=sub.type;if(type.startsWith("notify_")){type=type.slice("notify_".length)}if(type==="mutated"){return}else if(type==="child_changed"&&(oldValue===null||newValue===null)){trigger=false}else if(type==="value"||type==="child_changed"){const changes=compareValues(oldValue,newValue);trigger=changes!=="identical"}else if(type==="child_added"){trigger=oldValue===null&&newValue!==null}else if(type==="child_removed"){trigger=oldValue!==null&&newValue===null}if(!trigger){return}const pathKeys=acebase_core_1.PathInfo.getPathKeys(sub.dataPath);variables.forEach((variable=>{const index=pathKeys.indexOf(variable.name);(0,assert_1.assert)(index>=0,`Variable "${variable.name}" not found in subscription dataPath "${sub.dataPath}"`);pathKeys[index]=variable.value}));const dataPath=pathKeys.reduce(((path,key)=>acebase_core_1.PathInfo.getChildPath(path,key)),"");this.subscriptions.trigger(sub.type,sub.subscriptionPath,dataPath,oldValue,newValue,options.context)};const prepareMutationEvents=(currentPath,oldValue,newValue,compareResult)=>{const batch=[];const result=compareResult||compareValues(oldValue,newValue);if(result==="identical"){return batch}else if(typeof result==="string"){batch.push({path:currentPath,oldValue:oldValue,newValue:newValue})}else{result.changed.forEach((info=>{const childPath=acebase_core_1.PathInfo.getChildPath(currentPath,info.key);const childValues=getChildValues(info.key,oldValue,newValue);const childBatch=prepareMutationEvents(childPath,childValues.oldValue,childValues.newValue,info.change);batch.push(...childBatch)}));result.added.forEach((key=>{const childPath=acebase_core_1.PathInfo.getChildPath(currentPath,key);batch.push({path:childPath,oldValue:null,newValue:newValue[key]})}));if(oldValue instanceof Array&&newValue instanceof Array){result.removed.sort(((a,b)=>a{const childPath=acebase_core_1.PathInfo.getChildPath(currentPath,key);batch.push({path:childPath,oldValue:oldValue[key],newValue:null})}))}return batch};if(transactionLoggingEnabled&&this.settings.type!=="transaction"){result.mutations=(()=>{const trailPath=path.slice(topEventPath.length).replace(/^\//,"");const trailKeys=acebase_core_1.PathInfo.getPathKeys(trailPath);let oldValue=topEventData,newValue=newTopEventData;while(trailKeys.length>0){const key=trailKeys.shift();({oldValue:oldValue,newValue:newValue}=getChildValues(key,oldValue,newValue))}const compareResults=compareValues(oldValue,newValue);const batch=prepareMutationEvents(path,oldValue,newValue,compareResults);const mutations=batch.map((m=>({target:acebase_core_1.PathInfo.getPathKeys(m.path.slice(path.length)),prev:m.oldValue,val:m.newValue})));return mutations})()}const triggerAllEvents=()=>{eventSubscriptions.filter((sub=>!["mutated","mutations","notify_mutated","notify_mutations"].includes(sub.type))).map((sub=>{const keys=acebase_core_1.PathInfo.getPathKeys(sub.dataPath);return{sub:sub,keys:keys}})).sort(((a,b)=>{if(a.keys.lengthb.keys.length){return-1}return 0})).forEach((({sub:sub})=>{const process=(currentPath,oldValue,newValue,variables=[])=>{const trailPath=sub.dataPath.slice(currentPath.length).replace(/^\//,"");const trailKeys=acebase_core_1.PathInfo.getPathKeys(trailPath);while(trailKeys.length>0){const subKey=trailKeys.shift();if(typeof subKey==="string"&&(subKey==="*"||subKey[0]==="$")){const allKeys=oldValue===null?[]:Object.keys(oldValue).map((key=>oldValue instanceof Array?parseInt(key):key));newValue!==null&&Object.keys(newValue).forEach((key=>{const keyOrIndex=newValue instanceof Array?parseInt(key):key;!allKeys.includes(keyOrIndex)&&allKeys.push(key)}));allKeys.forEach((key=>{const childValues=getChildValues(key,oldValue,newValue);const vars=variables.concat({name:subKey,value:key});if(trailKeys.length===0){callSubscriberWithValues(sub,childValues.oldValue,childValues.newValue,vars)}else{process(acebase_core_1.PathInfo.getChildPath(currentPath,subKey),childValues.oldValue,childValues.newValue,vars)}}));return}else{currentPath=acebase_core_1.PathInfo.getChildPath(currentPath,subKey);const childValues=getChildValues(subKey,oldValue,newValue);oldValue=childValues.oldValue;newValue=childValues.newValue}}callSubscriberWithValues(sub,oldValue,newValue,variables)};if(sub.type.startsWith("notify_")&&acebase_core_1.PathInfo.get(sub.eventPath).isAncestorOf(topEventPath)){const isOnParentPath=acebase_core_1.PathInfo.get(sub.eventPath).isParentOf(topEventPath);const trigger=sub.type==="notify_value"||sub.type==="notify_child_changed"&&(!isOnParentPath||!["added","removed"].includes(dataChanges))||sub.type==="notify_child_removed"&&dataChanges==="removed"&&isOnParentPath||sub.type==="notify_child_added"&&dataChanges==="added"&&isOnParentPath;trigger&&this.subscriptions.trigger(sub.type,sub.subscriptionPath,sub.dataPath,null,null,options.context)}else{process(topEventPath,topEventData,newTopEventData)}}));const mutationEvents=eventSubscriptions.filter((sub=>["mutated","mutations","notify_mutated","notify_mutations"].includes(sub.type)));mutationEvents.forEach((sub=>{let currentPath=topEventPath;const trailPath=sub.eventPath.slice(currentPath.length).replace(/^\//,"");const trailKeys=acebase_core_1.PathInfo.getPathKeys(trailPath);let oldValue=topEventData,newValue=newTopEventData;while(trailKeys.length>0){const subKey=trailKeys.shift();currentPath=acebase_core_1.PathInfo.getChildPath(currentPath,subKey);const childValues=getChildValues(subKey,oldValue,newValue);oldValue=childValues.oldValue;newValue=childValues.newValue}const batch=prepareMutationEvents(currentPath,oldValue,newValue);if(batch.length===0){return}const isNotifyEvent=sub.type.startsWith("notify_");if(["mutated","notify_mutated"].includes(sub.type)){batch.forEach(((mutation,index)=>{const context=options.context;const prevVal=isNotifyEvent?null:mutation.oldValue;const newVal=isNotifyEvent?null:mutation.newValue;this.subscriptions.trigger(sub.type,sub.subscriptionPath,mutation.path,prevVal,newVal,context)}))}else if(["mutations","notify_mutations"].includes(sub.type)){const values=isNotifyEvent?null:batch.map((m=>({target:acebase_core_1.PathInfo.getPathKeys(m.path.slice(sub.subscriptionPath.length)),prev:m.oldValue,val:m.newValue})));this.subscriptions.trigger(sub.type,sub.subscriptionPath,sub.subscriptionPath,null,values,options.context)}}))};if(options.waitForIndexUpdates===false){indexUpdates.splice(0)}await Promise.all(indexUpdates);defer(triggerAllEvents);return result}getChildren(path,options){throw new Error("This method must be implemented by subclass")}async getNodeValue(path,options={}){const node=await this.getNode(path,options);return node.value}getNode(path,options){throw new Error("This method must be implemented by subclass")}getNodeInfo(path,options){throw new Error("This method must be implemented by subclass")}setNode(path,value,options){throw new Error("This method must be implemented by subclass")}updateNode(path,updates,options){throw new Error("This method must be implemented by subclass")}async transactNode(path,callback,options={no_lock:false,suppress_events:false,context:null}){const useFakeLock=options&&options.no_lock===true;const tid=this.createTid();const lock=useFakeLock?{tid:tid,release:NOOP}:await this.nodeLocker.lock(path,tid,true,"transactNode");try{let changed=false;const changeCallback=()=>{changed=true};if(useFakeLock){this.subscriptions.add(path,"notify_value",changeCallback)}const node=await this.getNode(path,{tid:tid});const checkRevision=node.revision;let newValue;try{newValue=callback(node.value);if(newValue instanceof Promise){newValue=await newValue.catch((err=>{this.debug.error(`Error in transaction callback: ${err.message}`)}))}}catch(err){this.debug.error(`Error in transaction callback: ${err.message}`)}if(typeof newValue==="undefined"){return}if(useFakeLock){this.subscriptions.remove(path,"notify_value",changeCallback)}if(changed){throw new node_errors_1.NodeRevisionError("Node changed")}const cursor=await this.setNode(path,newValue,{assert_revision:checkRevision,tid:lock.tid,suppress_events:options.suppress_events,context:options.context});return cursor}catch(err){if(err instanceof node_errors_1.NodeRevisionError){console.warn(`node value changed, running again. Error: ${err.message}`);return this.transactNode(path,callback,options)}else{throw err}}finally{lock.release()}}async matchNode(path,criteria,options){var _a;const tid=(_a=options===null||options===void 0?void 0:options.tid)!==null&&_a!==void 0?_a:acebase_core_1.ID.generate();const checkNode=async(path,criteria)=>{if(criteria.length===0){return Promise.resolve(true)}const criteriaKeys=criteria.reduce(((keys,cr)=>{let key=cr.key;if(typeof key==="string"&&key.includes("/")){key=key.slice(0,key.indexOf("/"))}if(keys.indexOf(key)<0){keys.push(key)}return keys}),[]);const unseenKeys=criteriaKeys.slice();let isMatch=true;const delayedMatchPromises=[];try{await this.getChildren(path,{tid:tid,keyFilter:criteriaKeys}).next((childInfo=>{var _a;const keyOrIndex=(_a=childInfo.key)!==null&&_a!==void 0?_a:childInfo.index;unseenKeys.includes(keyOrIndex)&&unseenKeys.splice(unseenKeys.indexOf(childInfo.key),1);const keyCriteria=criteria.filter((cr=>cr.key===keyOrIndex)).map((cr=>({op:cr.op,compare:cr.compare})));const keyResult=keyCriteria.length>0?checkChild(childInfo,keyCriteria):{isMatch:true,promises:[]};isMatch=keyResult.isMatch;if(isMatch){delayedMatchPromises.push(...keyResult.promises);const childCriteria=criteria.filter((cr=>typeof cr.key==="string"&&cr.key.startsWith(`${typeof keyOrIndex==="number"?`[${keyOrIndex}]`:keyOrIndex}/`))).map((cr=>{const key=cr.key.slice(cr.key.indexOf("/")+1);return{key:key,op:cr.op,compare:cr.compare}}));if(childCriteria.length>0){const childPath=acebase_core_1.PathInfo.getChildPath(path,childInfo.key);const childPromise=checkNode(childPath,childCriteria).then((isMatch=>({isMatch:isMatch})));delayedMatchPromises.push(childPromise)}}if(!isMatch||unseenKeys.length===0){return false}}));if(isMatch){const results=await Promise.all(delayedMatchPromises);isMatch=results.every((res=>res.isMatch))}if(!isMatch){return false}isMatch=unseenKeys.every((keyOrIndex=>{const childInfo=new node_info_1.NodeInfo(Object.assign(Object.assign(Object.assign({},typeof keyOrIndex==="number"&&{index:keyOrIndex}),typeof keyOrIndex==="string"&&{key:keyOrIndex}),{exists:false}));const childCriteria=criteria.filter((cr=>typeof cr.key==="string"&&cr.key.startsWith(`${typeof keyOrIndex==="number"?`[${keyOrIndex}]`:keyOrIndex}/`))).map((cr=>({op:cr.op,compare:cr.compare})));if(childCriteria.length>0&&!checkChild(childInfo,childCriteria).isMatch){return false}const keyCriteria=criteria.filter((cr=>cr.key===keyOrIndex)).map((cr=>({op:cr.op,compare:cr.compare})));if(keyCriteria.length===0){return true}const result=checkChild(childInfo,keyCriteria);return result.isMatch}));return isMatch}catch(err){this.debug.error(`Error matching on "${path}": `,err);throw err}};const checkChild=(child,criteria)=>{const promises=[];const isMatch=criteria.every((f=>{let proceed=true;if(f.op==="!exists"||f.op==="=="&&(typeof f.compare==="undefined"||f.compare===null)){proceed=!child.exists}else if(f.op==="exists"||f.op==="!="&&(typeof f.compare==="undefined"||f.compare===null)){proceed=child.exists}else if((f.op==="contains"||f.op==="!contains")&&f.compare instanceof Array&&f.compare.length===0){proceed=true}else if(!child.exists){proceed=false}else{if(child.address){if(child.valueType===node_value_types_1.VALUE_TYPES.OBJECT&&["has","!has"].indexOf(f.op)>=0){const op=f.op==="has"?"exists":"!exists";const p=checkNode(child.path,[{key:f.compare,op:op}]).then((isMatch=>({key:child.key,isMatch:isMatch})));promises.push(p);proceed=true}else if(child.valueType===node_value_types_1.VALUE_TYPES.ARRAY&&["contains","!contains"].indexOf(f.op)>=0){const p=this.getNode(child.path,{tid:tid}).then((({value:arr})=>{const isMatch=f.op==="contains"?f.compare instanceof Array?f.compare.every((val=>arr.includes(val))):arr.includes(f.compare):f.compare instanceof Array?!f.compare.some((val=>arr.includes(val))):!arr.includes(f.compare);return{key:child.key,isMatch:isMatch}}));promises.push(p);proceed=true}else if(child.valueType===node_value_types_1.VALUE_TYPES.STRING){const p=this.getNode(child.path,{tid:tid}).then((node=>({key:child.key,isMatch:this.test(node.value,f.op,f.compare)})));promises.push(p);proceed=true}else{proceed=false}}else if(child.type===node_value_types_1.VALUE_TYPES.OBJECT&&["has","!has"].indexOf(f.op)>=0){const has=f.compare in child.value;proceed=has&&f.op==="has"||!has&&f.op==="!has"}else if(child.type===node_value_types_1.VALUE_TYPES.ARRAY&&["contains","!contains"].indexOf(f.op)>=0){const contains=child.value.indexOf(f.compare)>=0;proceed=contains&&f.op==="contains"||!contains&&f.op==="!contains"}else{let ret=this.test(child.value,f.op,f.compare);if(ret instanceof Promise){promises.push(ret);ret=true}proceed=ret}}return proceed}));return{isMatch:isMatch,promises:promises}};return checkNode(path,criteria)}test(val,op,compare){if(op==="<"){return val"){return val>compare}if(op===">="){return val>=compare}if(op==="in"){return compare.indexOf(val)>=0}if(op==="!in"){return compare.indexOf(val)<0}if(op==="like"||op==="!like"){const pattern="^"+compare.replace(/[-[\]{}()+.,\\^$|#\s]/g,"\\$&").replace(/\?/g,".").replace(/\*/g,".*?")+"$";const re=new RegExp(pattern,"i");const isMatch=re.test(val.toString());return op==="like"?isMatch:!isMatch}if(op==="matches"){return compare.test(val.toString())}if(op==="!matches"){return!compare.test(val.toString())}if(op==="between"){return val>=compare[0]&&val<=compare[1]}if(op==="!between"){return valcompare[1]}if(op==="has"||op==="!has"){const has=typeof val==="object"&&compare in val;return op==="has"?has:!has}if(op==="contains"||op==="!contains"){const includes=typeof val==="object"&&val instanceof Array&&val.includes(compare);return op==="contains"?includes:!includes}return false}async exportNode(path,writeFn,options={format:"json",type_safe:true}){if((options===null||options===void 0?void 0:options.format)!=="json"){throw new Error("Only json output is currently supported")}const write=typeof writeFn!=="function"?writeFn.write.bind(writeFn):writeFn;const stringifyValue=(type,val)=>{const escape=str=>str.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/[\u0000-\u001f]/g,(ch=>`\\u${ch.charCodeAt(0).toString(16).padStart(4,"0")}`));if(type===node_value_types_1.VALUE_TYPES.DATETIME){val=`"${val.toISOString()}"`;if(options.type_safe){val=`{".type":"date",".val":${val}}`}}else if(type===node_value_types_1.VALUE_TYPES.STRING){val=`"${escape(val)}"`}else if(type===node_value_types_1.VALUE_TYPES.ARRAY){val="[]"}else if(type===node_value_types_1.VALUE_TYPES.OBJECT){val="{}"}else if(type===node_value_types_1.VALUE_TYPES.BINARY){val=`"${escape(acebase_core_1.ascii85.encode(val))}"`;if(options.type_safe){val=`{".type":"binary",".val":${val}}`}}else if(type===node_value_types_1.VALUE_TYPES.REFERENCE){val=`"${val.path}"`;if(options.type_safe){val=`{".type":"reference",".val":${val}}`}}else if(type===node_value_types_1.VALUE_TYPES.BIGINT){val=`"${val}"`;if(options.type_safe){val=`{".type":"bigint",".val":${val}}`}}return val};let objStart="",objEnd="";const nodeInfo=await this.getNodeInfo(path);if(!nodeInfo.exists){return write("null")}else if(nodeInfo.type===node_value_types_1.VALUE_TYPES.OBJECT){objStart="{";objEnd="}"}else if(nodeInfo.type===node_value_types_1.VALUE_TYPES.ARRAY){objStart="[";objEnd="]"}else{const node=await this.getNode(path);const val=stringifyValue(nodeInfo.type,node.value);return write(val)}if(objStart){const p=write(objStart);if(p instanceof Promise){await p}}let output="",outputCount=0;const pending=[];await this.getChildren(path).next((childInfo=>{if(childInfo.address){pending.push(childInfo)}else{if(outputCount++>0){output+=","}if(typeof childInfo.key==="string"){output+=`"${childInfo.key}":`}output+=stringifyValue(childInfo.type,childInfo.value)}}));if(output){const p=write(output);if(p instanceof Promise){await p}}while(pending.length>0){const childInfo=pending.shift();let output=outputCount++>0?",":"";const key=typeof childInfo.index==="number"?childInfo.index:childInfo.key;if(typeof key==="string"){output+=`"${key}":`}if(output){const p=write(output);if(p instanceof Promise){await p}}await this.exportNode(acebase_core_1.PathInfo.getChildPath(path,key),write,options)}if(objEnd){const p=write(objEnd);if(p instanceof Promise){await p}}}async importNode(path,read,options={format:"json",method:"set"}){const chunkSize=256*1024;const maxQueueBytes=1024*1024;const state={data:"",index:0,offset:0,queue:[],queueStartByte:0,timesFlushed:0,get processedBytes(){return this.offset+this.index}};const readNextChunk=async(append=false)=>{let data=await read(chunkSize);if(data===null){if(state.data){throw new Error(`Unexpected EOF at index ${state.offset+state.data.length}`)}else{throw new Error("Unable to read data from stream")}}else if(typeof data==="object"){data=acebase_core_1.Utils.decodeString(data)}if(append){state.data+=data}else{state.offset+=state.data.length;state.data=data;state.index=0}};const readBytes=async length=>{let str="";if(state.index+length>=state.data.length){str=state.data.slice(state.index);length-=str.length;await readNextChunk()}str+=state.data.slice(state.index,state.index+length);state.index+=length;return str};const assertBytes=async length=>{if(state.index+length>state.data.length){await readNextChunk(true)}if(state.index+length>state.data.length){throw new Error("Not enough data available from stream")}};const consumeToken=async token=>{const str=await readBytes(token.length);if(str!==token){throw new Error(`Unexpected character "${str[0]}" at index ${state.offset+state.index}, expected "${token}"`)}};const consumeSpaces=async()=>{const spaces=[" ","\t","\r","\n"];while(true){if(state.index>=state.data.length){await readNextChunk()}if(spaces.includes(state.data[state.index])){state.index++}else{break}}};const peekBytes=async length=>{await assertBytes(length);const index=state.index;return state.data.slice(index,index+length)};const peekValueType=async()=>{await consumeSpaces();const ch=await peekBytes(1);switch(ch){case'"':return"string";case"{":return"object";case"[":return"array";case"n":return"null";case"u":return"undefined";case"t":case"f":return"boolean";default:{if(ch==="-"||ch>="0"&&ch<="9"){return"number"}throw new Error(`Unknown value at index ${state.offset+state.index}`)}}};const readString=async()=>{await consumeToken('"');let str="";let i=state.index;while(state.data[i]!=='"'||state.data[i-1]==="\\"){i++;if(i>=state.data.length){str+=state.data.slice(state.index);await readNextChunk();i=0}}str+=state.data.slice(state.index,i);state.index=i+1;return unescape(str)};const readBoolean=async()=>{if(state.data[state.index]==="t"){await consumeToken("true")}else if(state.data[state.index]==="f"){await consumeToken("false")}throw new Error(`Expected true or false at index ${state.offset+state.index}`)};const readNumber=async()=>{let str="";let i=state.index;const nrChars=["-","0","1","2","3","4","5","6","7","8","9",".","e","b","f","x","o","n"];while(nrChars.includes(state.data[i])){i++;if(i>=state.data.length){str+=state.data.slice(state.index);await readNextChunk();i=0}}str+=state.data.slice(state.index,i);state.index=i;const nr=str.endsWith("n")?BigInt(str.slice(0,-1)):str.includes(".")?parseFloat(str):parseInt(str);return nr};const readValue=async()=>{await consumeSpaces();const type=await peekValueType();const value=await(()=>{switch(type){case"string":return readString();case"object":return{};case"array":return[];case"number":return readNumber();case"null":return null;case"undefined":return undefined;case"boolean":return readBoolean()}})();return{type:type,value:value}};const unescape=str=>str.replace(/\\n/g,"\n").replace(/\\"/g,'"');const getTypeSafeValue=(path,obj)=>{const type=obj[".type"];let val=obj[".val"];switch(type){case"Date":case"date":{val=new Date(val);break}case"Buffer":case"binary":{val=unescape(val);if(val.startsWith("<~")){val=acebase_core_1.ascii85.decode(val)}else{throw new Error(`Import error: Unexpected encoding for value for value at path "/${path}"`)}break}case"PathReference":case"reference":{val=new acebase_core_1.PathReference(val);break}case"bigint":{val=BigInt(val);break}default:throw new Error(`Import error: Unsupported type "${type}" for value at path "/${path}"`)}return val};const context={acebase_import_id:acebase_core_1.ID.generate()};const childOptions={suppress_events:options.suppress_events,context:context};const enqueue=async(target,value)=>{state.queue.push({target:target,value:value});if(state.processedBytes>=state.queueStartByte+maxQueueBytes){const operations=state.queue.reduce(((updates,item)=>{if(item.target.path===path){updates.push(Object.assign({op:options.method==="set"&&state.timesFlushed===0?"set":"update"},item))}else{const parent=updates.find((other=>other.target.isParentOf(item.target)));if(parent){parent.value[item.target.key]=item.value}else{updates.push(Object.assign({op:options.method==="merge"?"update":"set"},item))}}return updates}),[]);state.queueStartByte=state.processedBytes;state.queue=[];state.timesFlushed++}if(target.path===path){}};const importObject=async target=>{await consumeToken("{");await consumeSpaces();const nextChar=await peekBytes(1);if(nextChar==="}"){state.index++;return this.setNode(target.path,{},childOptions)}let childCount=0;let obj={};let flushedBefore=false;const flushObject=async()=>{let p;if(!flushedBefore){flushedBefore=true;p=this.setNode(target.path,obj,childOptions)}else if(Object.keys(obj).length>0){p=this.updateNode(target.path,obj,childOptions)}obj={};if(p){await p}};const promises=[];while(true){await consumeSpaces();const property=await readString();await consumeSpaces();await consumeToken(":");await consumeSpaces();const{value:value,type:type}=await readValue();obj[property]=value;childCount++;if(["object","array"].includes(type)){promises.push(flushObject());if(type==="object"){await importObject(target.child(property))}else{await importArray(target.child(property))}}await consumeSpaces();const nextChar=await peekBytes(1);if(nextChar==="}"){state.index++;break}await consumeToken(",")}const isTypedValue=childCount===2&&".type"in obj&&".val"in obj;if(isTypedValue){const val=getTypeSafeValue(target.path,obj);return this.setNode(target.path,val,childOptions)}promises.push(flushObject());await Promise.all(promises)};const importArray=async target=>{await consumeToken("[");await consumeSpaces();const nextChar=await peekBytes(1);if(nextChar==="]"){state.index++;return this.setNode(target.path,[],childOptions)}let flushedBefore=false;let arr=[];let updates={};const flushArray=async()=>{let p;if(!flushedBefore){flushedBefore=true;p=this.setNode(target.path,arr,childOptions);arr=null}else if(Object.keys(updates).length>0){p=this.updateNode(target.path,updates,childOptions);updates={}}if(p){await p}};const pushChild=(value,index)=>{if(flushedBefore){updates[index]=value}else{arr.push(value)}};const promises=[];let index=0;while(true){await consumeSpaces();const{value:value,type:type}=await readValue();pushChild(value,index);if(["object","array"].includes(type)){promises.push(flushArray());if(type==="object"){await importObject(target.child(index))}else{await importArray(target.child(index))}}await consumeSpaces();const nextChar=await peekBytes(1);if(nextChar==="]"){state.index++;break}await consumeToken(",");index++}promises.push(flushArray());await Promise.all(promises)};const start=async()=>{const{value:value,type:type}=await readValue();if(["object","array"].includes(type)){const target=acebase_core_1.PathInfo.get(path);if(type==="object"){await importObject(target)}else{await importArray(target)}}else{await this.setNode(path,value,childOptions)}};return start()}setSchema(path,schema){if(typeof schema==="undefined"){throw new TypeError("schema argument must be given")}if(schema===null){const i=this._schemas.findIndex((s=>s.path===path));i>=0&&this._schemas.splice(i,1);return}const definition=new acebase_core_1.SchemaDefinition(schema);const item=this._schemas.find((s=>s.path===path));if(item){item.schema=definition}else{this._schemas.push({path:path,schema:definition});this._schemas.sort(((a,b)=>{const ka=acebase_core_1.PathInfo.getPathKeys(a.path),kb=acebase_core_1.PathInfo.getPathKeys(b.path);if(ka.length===kb.length){return 0}return ka.lengthitem.path===path));return item?{path:path,schema:item.schema.source,text:item.schema.text}:null}getSchemas(){return this._schemas.map((item=>({path:item.path,schema:item.schema.source,text:item.schema.text})))}validateSchema(path,value,options={updates:false}){let result={ok:true};const pathInfo=acebase_core_1.PathInfo.get(path);this._schemas.filter((s=>pathInfo.isOnTrailOf(s.path))).every((s=>{if(pathInfo.isDescendantOf(s.path)){const ancestorPath=acebase_core_1.PathInfo.fillVariables(s.path,path);const trailKeys=pathInfo.keys.slice(acebase_core_1.PathInfo.getPathKeys(s.path).length);result=s.schema.check(ancestorPath,value,options.updates,trailKeys);return result.ok}const trailKeys=acebase_core_1.PathInfo.getPathKeys(s.path).slice(pathInfo.keys.length);if(options.updates===true&&trailKeys.length>0&&!(trailKeys[0]in value)){return result.ok}const partial=options.updates===true&&trailKeys.length===0;const check=(path,value,trailKeys)=>{if(trailKeys.length===0){return s.schema.check(path,value,partial)}else if(value===null){return{ok:true}}const key=trailKeys[0];if(typeof key==="string"&&(key==="*"||key[0]==="$")){if(value===null||typeof value!=="object"){return{ok:true}}let result;Object.keys(value).every((childKey=>{const childPath=acebase_core_1.PathInfo.getChildPath(path,childKey);const childValue=value[childKey];result=check(childPath,childValue,trailKeys.slice(1));return result.ok}));return result}else{const childPath=acebase_core_1.PathInfo.getChildPath(path,key);const childValue=value[key];return check(childPath,childValue,trailKeys.slice(1))}};result=check(path,value,trailKeys);return result.ok}));return result}}exports.Storage=Storage},{"../assert":4,"../data-index":7,"../ipc":8,"../node-errors":11,"../node-info":12,"../node-value-types":14,"../promise-fs":16,"./indexes":29,"acebase-core":43}],29:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createIndex=void 0;var create_index_1=require("./create-index");Object.defineProperty(exports,"createIndex",{enumerable:true,get:function(){return create_index_1.createIndex}})},{"./create-index":19}],30:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.MSSQLStorage=exports.MSSQLStorageSettings=void 0;const not_supported_1=require("../../not-supported");class MSSQLStorageSettings extends not_supported_1.NotSupported{}exports.MSSQLStorageSettings=MSSQLStorageSettings;class MSSQLStorage extends not_supported_1.NotSupported{}exports.MSSQLStorage=MSSQLStorage},{"../../not-supported":15}],31:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SQLiteStorage=exports.SQLiteStorageSettings=void 0;const not_supported_1=require("../../not-supported");class SQLiteStorageSettings extends not_supported_1.NotSupported{}exports.SQLiteStorageSettings=SQLiteStorageSettings;class SQLiteStorage extends not_supported_1.NotSupported{}exports.SQLiteStorage=SQLiteStorage},{"../../not-supported":15}],32:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.AceBaseBase=exports.AceBaseBaseSettings=void 0;const simple_event_emitter_1=require("./simple-event-emitter");const data_reference_1=require("./data-reference");const type_mappings_1=require("./type-mappings");const optional_observable_1=require("./optional-observable");const debug_1=require("./debug");const simple_colors_1=require("./simple-colors");class AceBaseBaseSettings{constructor(options){this.logLevel="log";this.logColors=true;this.info="realtime database";this.sponsor=false;if(typeof options!=="object"){options={}}if(typeof options.logLevel==="string"){this.logLevel=options.logLevel}if(typeof options.logColors==="boolean"){this.logColors=options.logColors}if(typeof options.info==="string"){this.info=options.info}if(typeof options.sponsor==="boolean"){this.sponsor=options.sponsor}}}exports.AceBaseBaseSettings=AceBaseBaseSettings;class AceBaseBase extends simple_event_emitter_1.SimpleEventEmitter{constructor(dbname,options={}){super();this._ready=false;options=new AceBaseBaseSettings(options);this.name=dbname;this.debug=new debug_1.DebugLogger(options.logLevel,`[${dbname}]`);(0,simple_colors_1.SetColorsEnabled)(options.logColors);const logoStyle=[simple_colors_1.ColorStyle.magenta,simple_colors_1.ColorStyle.bold];const logo=" ___ ______ "+"\n"+" / _ \\ | ___ \\ "+"\n"+" / /_\\ \\ ___ ___| |_/ / __ _ ___ ___ "+"\n"+" | _ |/ __/ _ \\ ___ \\/ _` / __|/ _ \\"+"\n"+" | | | | (_| __/ |_/ / (_| \\__ \\ __/"+"\n"+" \\_| |_/\\___\\___\\____/ \\__,_|___/\\___|";const info=options.info?"".padStart(40-options.info.length," ")+options.info+"\n":"";if(!options.sponsor){this.debug.write(logo.colorize(logoStyle));info&&this.debug.write(info.colorize(simple_colors_1.ColorStyle.magenta))}this.types=new type_mappings_1.TypeMappings(this);this.once("ready",(()=>{this._ready=true}))}async ready(callback){if(!this._ready){await new Promise((resolve=>this.on("ready",resolve)))}callback===null||callback===void 0?void 0:callback()}get isReady(){return this._ready}setObservable(ObservableImpl){(0,optional_observable_1.setObservable)(ObservableImpl)}ref(path){return new data_reference_1.DataReference(this,path)}get root(){return this.ref("")}query(path){const ref=new data_reference_1.DataReference(this,path);return new data_reference_1.DataReferenceQuery(ref)}get indexes(){return{get:()=>this.api.getIndexes(),create:(path,key,options)=>this.api.createIndex(path,key,options),delete:async filePath=>this.api.deleteIndex(filePath)}}get schema(){return{get:path=>this.api.getSchema(path),set:(path,schema)=>this.api.setSchema(path,schema),all:()=>this.api.getSchemas(),check:(path,value,isUpdate)=>this.api.validateSchema(path,value,isUpdate)}}}exports.AceBaseBase=AceBaseBase},{"./data-reference":39,"./debug":41,"./optional-observable":45,"./simple-colors":52,"./simple-event-emitter":53,"./type-mappings":56}],33:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Api=void 0;const simple_event_emitter_1=require("./simple-event-emitter");class NotImplementedError extends Error{constructor(name){super(`${name} is not implemented`)}}class Api extends simple_event_emitter_1.SimpleEventEmitter{constructor(){super()}stats(options){throw new NotImplementedError("stats")}subscribe(path,event,callback,settings){throw new NotImplementedError("subscribe")}unsubscribe(path,event,callback){throw new NotImplementedError("unsubscribe")}update(path,updates,options){throw new NotImplementedError("update")}set(path,value,options){throw new NotImplementedError("set")}get(path,options){throw new NotImplementedError("get")}transaction(path,callback,options){throw new NotImplementedError("transaction")}exists(path){throw new NotImplementedError("exists")}query(path,query,options){throw new NotImplementedError("query")}reflect(path,type,args){throw new NotImplementedError("reflect")}export(path,write,options){throw new NotImplementedError("export")}import(path,read,options){throw new NotImplementedError("import")}createIndex(path,key,options){throw new NotImplementedError("createIndex")}getIndexes(){throw new NotImplementedError("getIndexes")}deleteIndex(filePath){throw new NotImplementedError("deleteIndex")}setSchema(path,schema){throw new NotImplementedError("setSchema")}getSchema(path){throw new NotImplementedError("getSchema")}getSchemas(){throw new NotImplementedError("getSchemas")}validateSchema(path,value,isUpdate){throw new NotImplementedError("validateSchema")}getMutations(filter){throw new NotImplementedError("getMutations")}getChanges(filter){throw new NotImplementedError("getChanges")}}exports.Api=Api},{"./simple-event-emitter":53}],34:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ascii85=void 0;function c(input,length,result){const b=[0,0,0,0,0];for(let i=0;i";return ret}exports.ascii85={encode:function(arr){if(arr instanceof ArrayBuffer){arr=new Uint8Array(arr,0,arr.byteLength)}return encode(arr)},decode:function(input){if(!input.startsWith("<~")||!input.endsWith("~>")){throw new Error("Invalid input string")}input=input.substr(2,input.length-4);const n=input.length,r=[],b=[0,0,0,0,0];let t,x,y,d;for(let i=0;i>>=8;y=t&255;t>>>=8;r.push(t>>>8,t&255,y,x);for(let j=d;j<5;++j,r.pop()){}i+=4}const data=new Uint8Array(r);return data.buffer.slice(data.byteOffset,data.byteOffset+data.byteLength)}}},{}],35:[function(require,module,exports){"use strict";var _a,_b;Object.defineProperty(exports,"__esModule",{value:true});const pad_1=require("../pad");const env=typeof window==="object"?window:self,globalCount=Object.keys(env).length,mimeTypesLength=(_b=(_a=navigator.mimeTypes)===null||_a===void 0?void 0:_a.length)!==null&&_b!==void 0?_b:0,clientId=(0,pad_1.default)((mimeTypesLength+navigator.userAgent.length).toString(36)+globalCount.toString(36),4);function fingerprint(){return clientId}exports.default=fingerprint},{"../pad":37}],36:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});const fingerprint_1=require("./fingerprint");const pad_1=require("./pad");let c=0;const blockSize=4,base=36,discreteValues=Math.pow(base,blockSize);function randomBlock(){return(0,pad_1.default)((Math.random()*discreteValues<<0).toString(base),blockSize)}function safeCounter(){c=ct2[i]===key))}static isAncestor(ancestor,other){return ancestor.lengthother[i]===key))}static isDescendant(descendant,other){return descendant.length>other.length&&other.every(((key,i)=>descendant[i]===key))}}const isProxy=Symbol("isProxy");class LiveDataProxy{static async create(ref,options){var _a;ref=new data_reference_1.DataReference(ref.db,ref.path);let cache,loaded=false;let latestCursor=options===null||options===void 0?void 0:options.cursor;let proxy;const proxyId=id_1.ID.generate();const clientSubscriptions=[];const clientEventEmitter=new simple_event_emitter_1.SimpleEventEmitter;clientEventEmitter.on("cursor",(cursor=>latestCursor=cursor));clientEventEmitter.on("error",(err=>{console.error(err.message,err.details)}));const applyChange=(keys,newValue)=>{if(keys.length===0){cache=newValue;return true}const allowCreation=false;if(allowCreation){cache=typeof keys[0]==="number"?[]:{}}let target=cache;const trailKeys=keys.slice();while(trailKeys.length>1){const key=trailKeys.shift();if(!(key in target)){if(allowCreation){target[key]=typeof key==="number"?[]:{}}else{return false}}target=target[key]}const prop=trailKeys.shift();if(newValue===null){target instanceof Array?target.splice(prop,1):delete target[prop]}else{target[prop]=newValue}return true};const syncFallback=async()=>{if(!loaded){return}await reload()};const subscription=ref.on("mutations",{syncFallback:syncFallback}).subscribe((async snap=>{var _a;if(!loaded){return}const context=snap.context();const isRemote=((_a=context.acebase_proxy)===null||_a===void 0?void 0:_a.id)!==proxyId;if(!isRemote){return}const mutations=snap.val(false);const proceed=mutations.every((mutation=>{if(!applyChange(mutation.target,mutation.val)){return false}const changeRef=mutation.target.reduce(((ref,key)=>ref.child(key)),ref);const changeSnap=new data_snapshot_1.DataSnapshot(changeRef,mutation.val,false,mutation.prev,snap.context());clientEventEmitter.emit("mutation",{snapshot:changeSnap,isRemote:isRemote});return true}));if(proceed){clientEventEmitter.emit("cursor",context.acebase_cursor);localMutationsEmitter.emit("mutations",{origin:"remote",snap:snap})}else{console.warn(`Cached value of live data proxy on "${ref.path}" appears outdated, will be reloaded`);await reload()}}));let processPromise=Promise.resolve();const mutationQueue=[];const transactions=[];const pushLocalMutations=async()=>{const mutations=[];for(let i=0,m=mutationQueue[0];iRelativeNodeTarget.areEqual(t.target,m.target)||RelativeNodeTarget.isAncestor(t.target,m.target)))){mutationQueue.splice(i,1);i--;mutations.push(m)}}if(mutations.length===0){return}mutations.forEach((mutation=>{mutation.value=(0,utils_1.cloneObject)(getTargetValue(cache,mutation.target))}));process_1.default.nextTick((()=>{const context={acebase_proxy:{id:proxyId,source:"update"}};mutations.forEach((mutation=>{const mutationRef=mutation.target.reduce(((ref,key)=>ref.child(key)),ref);const mutationSnap=new data_snapshot_1.DataSnapshot(mutationRef,mutation.value,false,mutation.previous,context);clientEventEmitter.emit("mutation",{snapshot:mutationSnap,isRemote:false})}));const snap=new data_snapshot_1.MutationsDataSnapshot(ref,mutations.map((m=>({target:m.target,val:m.value,prev:m.previous}))),context);localMutationsEmitter.emit("mutations",{origin:"local",snap:snap})}));processPromise=mutations.reduce(((mutations,m,i,arr)=>{if(!arr.some((other=>RelativeNodeTarget.isAncestor(other.target,m.target)))){mutations.push(m)}return mutations}),[]).reduce(((updates,m)=>{const target=m.target;if(target.length===0){updates.push({ref:ref,target:target,value:cache,type:"set",previous:m.previous})}else{const parentTarget=target.slice(0,-1);const key=target.slice(-1)[0];const parentRef=parentTarget.reduce(((ref,key)=>ref.child(key)),ref);const parentUpdate=updates.find((update=>update.ref.path===parentRef.path));const cacheValue=getTargetValue(cache,target);const prevValue=m.previous;if(parentUpdate){parentUpdate.value[key]=cacheValue;parentUpdate.previous[key]=prevValue}else{updates.push({ref:parentRef,target:parentTarget,value:{[key]:cacheValue},type:"update",previous:{[key]:prevValue}})}}return updates}),[]).reduce((async(promise,update)=>{const context={acebase_proxy:{id:proxyId,source:update.type}};await promise;await update.ref.context(context)[update.type](update.value).catch((err=>{clientEventEmitter.emit("error",{source:"update",message:`Error processing update of "/${ref.path}"`,details:err});const context={acebase_proxy:{id:proxyId,source:"update-rollback"}};const mutations=[];if(update.type==="set"){setTargetValue(cache,update.target,update.previous);const mutationSnap=new data_snapshot_1.DataSnapshot(update.ref,update.previous,false,update.value,context);clientEventEmitter.emit("mutation",{snapshot:mutationSnap,isRemote:false});mutations.push({target:update.target,val:update.previous,prev:update.value})}else{Object.keys(update.previous).forEach((key=>{setTargetValue(cache,update.target.concat(key),update.previous[key]);const mutationSnap=new data_snapshot_1.DataSnapshot(update.ref.child(key),update.previous[key],false,update.value[key],context);clientEventEmitter.emit("mutation",{snapshot:mutationSnap,isRemote:false});mutations.push({target:update.target.concat(key),val:update.previous[key],prev:update.value[key]})}))}mutations.forEach((m=>{const mutationRef=m.target.reduce(((ref,key)=>ref.child(key)),ref);const mutationSnap=new data_snapshot_1.DataSnapshot(mutationRef,m.val,false,m.prev,context);clientEventEmitter.emit("mutation",{snapshot:mutationSnap,isRemote:false})}));const snap=new data_snapshot_1.MutationsDataSnapshot(update.ref,mutations,context);localMutationsEmitter.emit("mutations",{origin:"local",snap:snap})}));if(update.ref.cursor){clientEventEmitter.emit("cursor",update.ref.cursor)}}),processPromise);await processPromise};let syncInProgress=false;const syncPromises=[];const syncCompleted=()=>{let resolve;const promise=new Promise((rs=>resolve=rs));syncPromises.push({resolve:resolve});return promise};let processQueueTimeout=null;const scheduleSync=()=>{if(!processQueueTimeout){processQueueTimeout=setTimeout((async()=>{syncInProgress=true;processQueueTimeout=null;await pushLocalMutations();syncInProgress=false;syncPromises.splice(0).forEach((p=>p.resolve()))}),0)}};const flagOverwritten=target=>{if(!mutationQueue.find((m=>RelativeNodeTarget.areEqual(m.target,target)))){mutationQueue.push({target:target,previous:(0,utils_1.cloneObject)(getTargetValue(cache,target))})}scheduleSync()};const localMutationsEmitter=new simple_event_emitter_1.SimpleEventEmitter;const addOnChangeHandler=(target,callback)=>{const isObject=val=>val!==null&&typeof val==="object";const mutationsHandler=async details=>{var _a;const{snap:snap,origin:origin}=details;const context=snap.context();const causedByOurProxy=((_a=context.acebase_proxy)===null||_a===void 0?void 0:_a.id)===proxyId;if(details.origin==="remote"&&causedByOurProxy){console.error("DEV ISSUE: mutationsHandler was called from remote event originating from our own proxy");return}const mutations=snap.val(false).filter((mutation=>mutation.target.slice(0,target.length).every(((key,i)=>target[i]===key))));if(mutations.length===0){return}let newValue,previousValue;const singleMutation=mutations.find((m=>m.target.length<=target.length));if(singleMutation){const trailKeys=target.slice(singleMutation.target.length);newValue=trailKeys.reduce(((val,key)=>!isObject(val)||!(key in val)?null:val[key]),singleMutation.val);previousValue=trailKeys.reduce(((val,key)=>!isObject(val)||!(key in val)?null:val[key]),singleMutation.prev)}else{const currentValue=getTargetValue(cache,target);newValue=(0,utils_1.cloneObject)(currentValue);previousValue=(0,utils_1.cloneObject)(newValue);mutations.forEach((mutation=>{const trailKeys=mutation.target.slice(target.length);for(let i=0,val=newValue,prev=previousValue;i{let keepSubscription=true;try{keepSubscription=false!==callback(Object.freeze(newValue),Object.freeze(previousValue),!causedByOurProxy,context)}catch(err){clientEventEmitter.emit("error",{source:origin==="remote"?"remote_update":"local_update",message:"Error running subscription callback",details:err})}if(keepSubscription===false){stop()}}))};localMutationsEmitter.on("mutations",mutationsHandler);const stop=()=>{localMutationsEmitter.off("mutations",mutationsHandler);clientSubscriptions.splice(clientSubscriptions.findIndex((cs=>cs.stop===stop)),1)};clientSubscriptions.push({target:target,stop:stop});return{stop:stop}};const handleFlag=(flag,target,args)=>{if(flag==="write"){return flagOverwritten(target)}else if(flag==="onChange"){return addOnChangeHandler(target,args.callback)}else if(flag==="subscribe"||flag==="observe"){const subscribe=subscriber=>{const currentValue=getTargetValue(cache,target);subscriber.next(currentValue);const subscription=addOnChangeHandler(target,(value=>{subscriber.next(value)}));return function unsubscribe(){subscription.stop()}};if(flag==="subscribe"){return subscribe}const Observable=(0,optional_observable_1.getObservable)();return new Observable(subscribe)}else if(flag==="transaction"){const hasConflictingTransaction=transactions.some((t=>RelativeNodeTarget.areEqual(target,t.target)||RelativeNodeTarget.isAncestor(target,t.target)||RelativeNodeTarget.isDescendant(target,t.target)));if(hasConflictingTransaction){return Promise.reject(new Error("Cannot start transaction because it conflicts with another transaction"))}return new Promise((async resolve=>{const hasPendingMutations=mutationQueue.some((m=>RelativeNodeTarget.areEqual(target,m.target)||RelativeNodeTarget.isAncestor(target,m.target)));if(hasPendingMutations){if(!syncInProgress){scheduleSync()}await syncCompleted()}const tx={target:target,status:"started",transaction:null};transactions.push(tx);tx.transaction={get status(){return tx.status},get completed(){return tx.status!=="started"},get mutations(){return mutationQueue.filter((m=>RelativeNodeTarget.areEqual(tx.target,m.target)||RelativeNodeTarget.isAncestor(tx.target,m.target)))},get hasMutations(){return this.mutations.length>0},async commit(){if(this.completed){throw new Error(`Transaction has completed already (status '${tx.status}')`)}tx.status="finished";transactions.splice(transactions.indexOf(tx),1);if(syncInProgress){await syncCompleted()}scheduleSync();await syncCompleted()},rollback(){if(this.completed){throw new Error(`Transaction has completed already (status '${tx.status}')`)}tx.status="canceled";const mutations=[];for(let i=0;i{if(m.target.length===0){cache=m.previous}else{setTargetValue(cache,m.target,m.previous)}}));transactions.splice(transactions.indexOf(tx),1)}};resolve(tx.transaction)}))}};const snap=await ref.get({cache_mode:"allow",cache_cursor:options===null||options===void 0?void 0:options.cursor});if(snap.context().acebase_origin!=="cache"){clientEventEmitter.emit("cursor",(_a=ref.cursor)!==null&&_a!==void 0?_a:null)}loaded=true;cache=snap.val();if(cache===null&&typeof(options===null||options===void 0?void 0:options.defaultValue)!=="undefined"){cache=options.defaultValue;const context={acebase_proxy:{id:proxyId,source:"default"}};await ref.context(context).set(cache)}proxy=createProxy({root:{ref:ref,get cache(){return cache}},target:[],id:proxyId,flag:handleFlag});const assertProxyAvailable=()=>{if(proxy===null){throw new Error("Proxy was destroyed")}};const reload=async()=>{assertProxyAvailable();mutationQueue.splice(0);const snap=await ref.get({allow_cache:false});const oldVal=cache,newVal=snap.val();cache=newVal;const mutations=(0,utils_1.getMutations)(oldVal,newVal);if(mutations.length===0){return}const context=snap.context();context.acebase_proxy={id:proxyId,source:"reload"};mutations.forEach((m=>{const targetRef=getTargetRef(ref,m.target);const newSnap=new data_snapshot_1.DataSnapshot(targetRef,m.val,m.val===null,m.prev,context);clientEventEmitter.emit("mutation",{snapshot:newSnap,isRemote:true})}));const mutationsSnap=new data_snapshot_1.MutationsDataSnapshot(ref,mutations,context);localMutationsEmitter.emit("mutations",{origin:"local",snap:mutationsSnap})};return{async destroy(){await processPromise;const promises=[subscription.stop(),...clientSubscriptions.map((cs=>cs.stop()))];await Promise.all(promises);["cursor","mutation","error"].forEach((event=>clientEventEmitter.off(event)));cache=null;proxy=null},stop(){this.destroy()},get value(){assertProxyAvailable();return proxy},get hasValue(){assertProxyAvailable();return cache!==null},set value(val){assertProxyAvailable();if(val!==null&&typeof val==="object"&&val[isProxy]){val=val.valueOf()}flagOverwritten([]);cache=val},get ref(){return ref},get cursor(){return latestCursor},reload:reload,onMutation(callback){assertProxyAvailable();clientEventEmitter.off("mutation");clientEventEmitter.on("mutation",(({snapshot:snapshot,isRemote:isRemote})=>{try{callback(snapshot,isRemote)}catch(err){clientEventEmitter.emit("error",{source:"mutation_callback",message:"Error in dataproxy onMutation callback",details:err})}}))},onError(callback){assertProxyAvailable();clientEventEmitter.off("error");clientEventEmitter.on("error",(err=>{try{callback(err)}catch(err){console.error(`Error in dataproxy onError callback: ${err.message}`)}}))},on(event,callback){clientEventEmitter.on(event,callback)},off(event,callback){clientEventEmitter.off(event,callback)}}}}exports.LiveDataProxy=LiveDataProxy;function getTargetValue(obj,target){let val=obj;for(const key of target){val=typeof val==="object"&&val!==null&&key in val?val[key]:null}return val}function setTargetValue(obj,target,value){if(target.length===0){throw new Error("Cannot update root target, caller must do that itself!")}const targetObject=target.slice(0,-1).reduce(((obj,key)=>obj[key]),obj);const prop=target.slice(-1)[0];if(value===null||typeof value==="undefined"){targetObject instanceof Array?targetObject.splice(prop,1):delete targetObject[prop]}else{targetObject[prop]=value}}function getTargetRef(ref,target){const path=path_info_1.PathInfo.get(ref.path).childPath(target);return new data_reference_1.DataReference(ref.db,path)}function createProxy(context){const targetRef=getTargetRef(context.root.ref,context.target);const childProxies=[];const handler={get(target,prop,receiver){target=getTargetValue(context.root.cache,context.target);if(typeof prop==="symbol"){if(prop.toString()===Symbol.iterator.toString()){prop="values"}else if(prop.toString()===isProxy.toString()){return true}else{return Reflect.get(target,prop,receiver)}}if(prop==="valueOf"){return function valueOf(){return target}}if(target===null||typeof target!=="object"){throw new Error(`Cannot read property "${prop}" of ${target}. Value of path "/${targetRef.path}" is not an object (anymore)`)}if(target instanceof Array&&typeof prop==="string"&&/^[0-9]+$/.test(prop)){prop=parseInt(prop)}const value=target[prop];if(value===null){delete target[prop];return}const childProxy=childProxies.find((proxy=>proxy.prop===prop));if(childProxy){if(childProxy.typeof===typeof value){return childProxy.value}childProxies.splice(childProxies.indexOf(childProxy),1)}const proxifyChildValue=prop=>{const value=target[prop];const childProxy=childProxies.find((child=>child.prop===prop));if(childProxy){if(childProxy.typeof===typeof value){return childProxy.value}childProxies.splice(childProxies.indexOf(childProxy),1)}if(typeof value!=="object"){return value}const newChildProxy=createProxy({root:context.root,target:context.target.concat(prop),id:context.id,flag:context.flag});childProxies.push({typeof:typeof value,prop:prop,value:newChildProxy});return newChildProxy};const unproxyValue=value=>value!==null&&typeof value==="object"&&value[isProxy]?value.getTarget():value;if(["string","number","boolean"].includes(typeof value)||value instanceof Date||value instanceof path_reference_1.PathReference||value instanceof ArrayBuffer||typeof value==="object"&&"buffer"in value){return value}const isArray=target instanceof Array;if(prop==="toString"){return function toString(){return`[LiveDataProxy for "${targetRef.path}"]`}}if(typeof value==="undefined"){if(prop==="push"){return function push(item){const childRef=targetRef.push();context.flag("write",context.target.concat(childRef.key));target[childRef.key]=item;return childRef.key}}if(prop==="getTarget"){return function(warn=true){warn&&console.warn("Use getTarget with caution - any changes will not be synchronized!");return target}}if(prop==="getRef"){return function getRef(){const ref=getTargetRef(context.root.ref,context.target);return ref}}if(prop==="forEach"){return function forEach(callback){const keys=Object.keys(target);let stop=false;for(let i=0;!stop&&iproxifyChildValue(key)));if(sortFn){arr.sort(sortFn)}return arr}}if(prop==="onChanged"){return function onChanged(callback){return context.flag("onChange",context.target,{callback:callback})}}if(prop==="subscribe"){return function subscribe(){return context.flag("subscribe",context.target)}}if(prop==="getObservable"){return function getObservable(){return context.flag("observe",context.target)}}if(prop==="getOrderedCollection"){return function getOrderedCollection(orderProperty,orderIncrement){return new OrderedCollectionProxy(this,orderProperty,orderIncrement)}}if(prop==="startTransaction"){return function startTransaction(){return context.flag("transaction",context.target)}}if(prop==="remove"&&!isArray){return function remove(){if(context.target.length===0){throw new Error("Can't remove proxy root value")}const parent=getTargetValue(context.root.cache,context.target.slice(0,-1));const key=context.target.slice(-1)[0];context.flag("write",context.target);delete parent[key]}}return}else if(typeof value==="function"){if(isArray){const writeArray=action=>{context.flag("write",context.target);return action()};const cleanArrayValues=values=>values.map((value=>{value=unproxyValue(value);removeVoidProperties(value);return value}));if(prop==="push"){return function push(...items){items=cleanArrayValues(items);return writeArray((()=>target.push(...items)))}}if(prop==="pop"){return function pop(){return writeArray((()=>target.pop()))}}if(prop==="splice"){return function splice(start,deleteCount,...items){items=cleanArrayValues(items);return writeArray((()=>target.splice(start,deleteCount,...items)))}}if(prop==="shift"){return function shift(){return writeArray((()=>target.shift()))}}if(prop==="unshift"){return function unshift(...items){items=cleanArrayValues(items);return writeArray((()=>target.unshift(...items)))}}if(prop==="sort"){return function sort(compareFn){return writeArray((()=>target.sort(compareFn)))}}if(prop==="reverse"){return function reverse(){return writeArray((()=>target.reverse()))}}if(["indexOf","lastIndexOf"].includes(prop)){return function indexOf(item,start){if(item!==null&&typeof item==="object"&&item[isProxy]){item=item.getTarget(false)}return target[prop](item,start)}}if(["forEach","every","some","filter","map"].includes(prop)){return function iterate(callback){return target[prop](((value,i)=>callback(proxifyChildValue(i),i,proxy)))}}if(["reduce","reduceRight"].includes(prop)){return function reduce(callback,initialValue){return target[prop](((prev,value,i)=>callback(prev,proxifyChildValue(i),i,proxy)),initialValue)}}if(["find","findIndex"].includes(prop)){return function find(callback){let value=target[prop](((value,i)=>callback(proxifyChildValue(i),i,proxy)));if(prop==="find"&&value){const index=target.indexOf(value);value=proxifyChildValue(index)}return value}}if(["values","entries","keys"].includes(prop)){return function*generator(){for(let i=0;itypeof key==="number"))){context.flag("write",context.target.slice(0,context.target.findIndex((key=>typeof key==="number"))))}else if(target instanceof Array){context.flag("write",context.target)}else{context.flag("write",context.target.concat(prop))}if(value===null){delete target[prop]}else{removeVoidProperties(value);target[prop]=value}return true},deleteProperty(target,prop){target=getTargetValue(context.root.cache,context.target);if(target===null){throw new Error(`Cannot delete property ${prop.toString()} of null`)}if(typeof prop==="symbol"){return Reflect.deleteProperty(target,prop)}if(!(prop in target)){return true}context.flag("write",context.target.concat(prop));delete target[prop];return true},ownKeys(target){target=getTargetValue(context.root.cache,context.target);return Reflect.ownKeys(target)},has(target,prop){target=getTargetValue(context.root.cache,context.target);return Reflect.has(target,prop)},getOwnPropertyDescriptor(target,prop){target=getTargetValue(context.root.cache,context.target);const descriptor=Reflect.getOwnPropertyDescriptor(target,prop);if(descriptor){descriptor.configurable=true}return descriptor},getPrototypeOf(target){target=getTargetValue(context.root.cache,context.target);return Reflect.getPrototypeOf(target)}};const proxy=new Proxy({},handler);return proxy}function removeVoidProperties(obj){if(typeof obj!=="object"){return}Object.keys(obj).forEach((key=>{const val=obj[key];if(val===null||typeof val==="undefined"){delete obj[key]}else if(typeof val==="object"){removeVoidProperties(val)}}))}function proxyAccess(proxiedValue){if(typeof proxiedValue!=="object"||!proxiedValue[isProxy]){throw new Error("Given value is not proxied. Make sure you are referencing the value through the live data proxy.")}return proxiedValue}exports.proxyAccess=proxyAccess;class OrderedCollectionProxy{constructor(collection,orderProperty="order",orderIncrement=10){this.collection=collection;this.orderProperty=orderProperty;this.orderIncrement=orderIncrement;if(typeof collection!=="object"||!collection[isProxy]){throw new Error("Collection is not proxied")}if(collection.valueOf()instanceof Array){throw new Error("Collection is an array, not an object collection")}if(!Object.keys(collection).every((key=>typeof collection[key]==="object"))){throw new Error("Collection has non-object children")}const ok=Object.keys(collection).every((key=>typeof collection[key][orderProperty]==="number"));if(!ok){const keys=Object.keys(collection);for(let i=0;i{const subscription=this.getObservable().subscribe((()=>{const newArray=this.getArray();subscriber.next(newArray)}));return function unsubscribe(){subscription.unsubscribe()}}))}getArray(){const arr=proxyAccess(this.collection).toArray(((a,b)=>a[this.orderProperty]-b[this.orderProperty]));return arr}add(item,index,from){const arr=this.getArray();let minOrder=Number.POSITIVE_INFINITY,maxOrder=Number.NEGATIVE_INFINITY;for(let i=0;ithis.collection[key]===item));if(!fromKey){throw new Error("item not found in collection")}if(from===index){return{key:fromKey,index:index}}if(Math.abs(from-index)===1){const otherItem=arr[index];const otherOrder=otherItem[this.orderProperty];otherItem[this.orderProperty]=item[this.orderProperty];item[this.orderProperty]=otherOrder;return{key:fromKey,index:index}}else{arr.splice(from,1)}}if(typeof index!=="number"||index>=arr.length){index=arr.length;item[this.orderProperty]=arr.length==0?0:maxOrder+this.orderIncrement}else if(index===0){item[this.orderProperty]=arr.length==0?0:minOrder-this.orderIncrement}else{const orders=arr.map((item=>item[this.orderProperty]));const gap=orders[index]-orders[index-1];if(gap>1){item[this.orderProperty]=orders[index]-Math.floor(gap/2)}else{arr.splice(index,0,item);for(let i=0;ithis.collection[key]===item));if(!key){throw new Error("Cannot find target object to delete")}this.collection[key]=null;return{key:key,index:index}}move(fromIndex,toIndex){const arr=this.getArray();return this.add(arr[fromIndex],toIndex,fromIndex)}sort(sortFn){const arr=this.getArray();arr.sort(sortFn);for(let i=0;i{newContext[key]=context[key]}))}this[_private].context=newContext;return this}else if(typeof context==="undefined"){console.warn("Use snap.context() instead of snap.ref.context() to get updating context in event callbacks");return currentContext}else{throw new Error("Invalid context argument")}}get cursor(){return this[_private].cursor}set cursor(value){var _a;this[_private].cursor=value;(_a=this.onCursor)===null||_a===void 0?void 0:_a.call(this,value)}get path(){return this[_private].path}get key(){const key=this[_private].key;return typeof key==="number"?`[${key}]`:key}get index(){const key=this[_private].key;if(typeof key!=="number"){throw new Error(`"${key}" is not a number`)}return key}get parent(){const currentPath=path_info_1.PathInfo.fillVariables2(this.path,this.vars);const info=path_info_1.PathInfo.get(currentPath);if(info.parentPath===null){return null}return new DataReference(this.db,info.parentPath).context(this[_private].context)}get vars(){return this[_private].vars}child(childPath){childPath=typeof childPath==="number"?childPath:childPath.replace(/^\/|\/$/g,"");const currentPath=path_info_1.PathInfo.fillVariables2(this.path,this.vars);const targetPath=path_info_1.PathInfo.getChildPath(currentPath,childPath);return new DataReference(this.db,targetPath).context(this[_private].context)}async set(value,onComplete){try{if(this.isWildcardPath){throw new Error(`Cannot set the value of wildcard path "/${this.path}"`)}if(this.parent===null){throw new Error("Cannot set the root object. Use update, or set individual child properties")}if(typeof value==="undefined"){throw new TypeError(`Cannot store undefined value in "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}value=this.db.types.serialize(this.path,value);const{cursor:cursor}=await this.db.api.set(this.path,value,{context:this[_private].context});this.cursor=cursor;if(typeof onComplete==="function"){try{onComplete(null,this)}catch(err){console.error("Error in onComplete callback:",err)}}}catch(err){if(typeof onComplete==="function"){try{onComplete(err,this)}catch(err){console.error("Error in onComplete callback:",err)}}else{throw err}}return this}async update(updates,onComplete){try{if(this.isWildcardPath){throw new Error(`Cannot update the value of wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}if(typeof updates!=="object"||updates instanceof Array||updates instanceof ArrayBuffer||updates instanceof Date){await this.set(updates)}else if(Object.keys(updates).length===0){console.warn(`update called on path "/${this.path}", but there is nothing to update`)}else{updates=this.db.types.serialize(this.path,updates);const{cursor:cursor}=await this.db.api.update(this.path,updates,{context:this[_private].context});this.cursor=cursor}if(typeof onComplete==="function"){try{onComplete(null,this)}catch(err){console.error("Error in onComplete callback:",err)}}}catch(err){if(typeof onComplete==="function"){try{onComplete(err,this)}catch(err){console.error("Error in onComplete callback:",err)}}else{throw err}}return this}async transaction(callback){if(this.isWildcardPath){throw new Error(`Cannot start a transaction on wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}let throwError;const cb=currentValue=>{currentValue=this.db.types.deserialize(this.path,currentValue);const snap=new data_snapshot_1.DataSnapshot(this,currentValue);let newValue;try{newValue=callback(snap)}catch(err){throwError=err;return}if(newValue instanceof Promise){return newValue.then((val=>this.db.types.serialize(this.path,val))).catch((err=>{throwError=err;return}))}else{return this.db.types.serialize(this.path,newValue)}};const{cursor:cursor}=await this.db.api.transaction(this.path,cb,{context:this[_private].context});this.cursor=cursor;if(throwError){throw throwError}return this}on(event,callback,cancelCallback){if(this.path===""&&["value","child_changed"].includes(event)){console.warn("WARNING: Listening for value and child_changed events on the root node is a bad practice. These events require loading of all data (value event), or potentially lots of data (child_changed event) each time they are fired")}let eventPublisher=null;const eventStream=new subscription_1.EventStream((publisher=>{eventPublisher=publisher}));const cb={event:event,stream:eventStream,userCallback:typeof callback==="function"&&callback,ourCallback:(err,path,newValue,oldValue,eventContext)=>{if(err){this.db.debug.error(`Error getting data for event ${event} on path "${path}"`,err);return}const ref=this.db.ref(path);ref[_private].vars=path_info_1.PathInfo.extractVariables(this.path,path);let callbackObject;if(event.startsWith("notify_")){callbackObject=ref.context(eventContext||{})}else{const values={previous:this.db.types.deserialize(path,oldValue),current:this.db.types.deserialize(path,newValue)};if(event==="child_removed"){callbackObject=new data_snapshot_1.DataSnapshot(ref,values.previous,true,values.previous,eventContext)}else if(event==="mutations"){callbackObject=new data_snapshot_1.MutationsDataSnapshot(ref,values.current,eventContext)}else{const isRemoved=event==="mutated"&&values.current===null;callbackObject=new data_snapshot_1.DataSnapshot(ref,values.current,isRemoved,values.previous,eventContext)}}eventPublisher.publish(callbackObject);if(eventContext===null||eventContext===void 0?void 0:eventContext.acebase_cursor){this.cursor=eventContext.acebase_cursor}}};this[_private].callbacks.push(cb);const subscribe=()=>{if(typeof callback==="function"){eventStream.subscribe(callback,((activated,cancelReason)=>{if(!activated){cancelCallback&&cancelCallback(cancelReason)}}))}const advancedOptions=typeof callback==="object"?callback:{newOnly:!callback};if(typeof advancedOptions.newOnly!=="boolean"){advancedOptions.newOnly=false}if(this.isWildcardPath){advancedOptions.newOnly=true}const cancelSubscription=err=>{const callbacks=this[_private].callbacks;callbacks.splice(callbacks.indexOf(cb),1);this.db.api.unsubscribe(this.path,event,cb.ourCallback);this.db.debug.error(`Subscription "${event}" on path "/${this.path}" canceled because of an error: ${err.message}`);eventPublisher.cancel(err.message)};const authorized=this.db.api.subscribe(this.path,event,cb.ourCallback,{newOnly:advancedOptions.newOnly,cancelCallback:cancelSubscription,syncFallback:advancedOptions.syncFallback});const allSubscriptionsStoppedCallback=()=>{const callbacks=this[_private].callbacks;callbacks.splice(callbacks.indexOf(cb),1);return this.db.api.unsubscribe(this.path,event,cb.ourCallback)};if(authorized instanceof Promise){authorized.then((()=>{eventPublisher.start(allSubscriptionsStoppedCallback)})).catch(cancelSubscription)}else{eventPublisher.start(allSubscriptionsStoppedCallback)}if(!advancedOptions.newOnly){if(event==="value"){this.get((snap=>{eventPublisher.publish(snap)}))}else if(event==="child_added"){this.get((snap=>{const val=snap.val();if(val===null||typeof val!=="object"){return}Object.keys(val).forEach((key=>{const childSnap=new data_snapshot_1.DataSnapshot(this.child(key),val[key]);eventPublisher.publish(childSnap)}))}))}else if(event==="notify_child_added"){const step=100,limit=step;let skip=0;const more=async()=>{const children=await this.db.api.reflect(this.path,"children",{limit:limit,skip:skip});children.list.forEach((child=>{const childRef=this.child(child.key);eventPublisher.publish(childRef)}));if(children.more){skip+=step;more()}};more()}}};if(this.db.isReady){subscribe()}else{this.db.ready(subscribe)}return eventStream}off(event,callback){const subscriptions=this[_private].callbacks;const stopSubs=subscriptions.filter((sub=>(!event||sub.event===event)&&(!callback||sub.userCallback===callback)));if(stopSubs.length===0){this.db.debug.warn(`Can't find event subscriptions to stop (path: "${this.path}", event: ${event||"(any)"}, callback: ${callback})`)}stopSubs.forEach((sub=>{sub.stream.stop()}));return this}get(optionsOrCallback,callback){if(!this.db.isReady){const promise=this.db.ready().then((()=>this.get(optionsOrCallback,callback)));return typeof optionsOrCallback!=="function"&&typeof callback!=="function"?promise:undefined}callback=typeof optionsOrCallback==="function"?optionsOrCallback:typeof callback==="function"?callback:undefined;if(this.isWildcardPath){const error=new Error(`Cannot get value of wildcard path "/${this.path}". Use .query() instead`);if(typeof callback==="function"){throw error}return Promise.reject(error)}const options=new DataRetrievalOptions(typeof optionsOrCallback==="object"?optionsOrCallback:{cache_mode:"allow"});const promise=this.db.api.get(this.path,options).then((result=>{var _a;const isNewApiResult="context"in result&&"value"in result;if(!isNewApiResult){console.warn("AceBase api.get method returned an old response value. Update your acebase or acebase-client package");result={value:result,context:{}}}const value=this.db.types.deserialize(this.path,result.value);const snapshot=new data_snapshot_1.DataSnapshot(this,value,undefined,undefined,result.context);if((_a=result.context)===null||_a===void 0?void 0:_a.acebase_cursor){this.cursor=result.context.acebase_cursor}return snapshot}));if(callback){promise.then(callback).catch((err=>{console.error("Uncaught error:",err)}));return}else{return promise}}once(event,options){if(event==="value"&&!this.isWildcardPath){return this.get(options)}return new Promise((resolve=>{const callback=snap=>{this.off(event,callback);resolve(snap)};this.on(event,callback)}))}push(value,onComplete){if(this.isWildcardPath){const error=new Error(`Cannot push to wildcard path "/${this.path}"`);if(typeof value==="undefined"||typeof onComplete==="function"){throw error}return Promise.reject(error)}const id=id_1.ID.generate();const ref=this.child(id);ref[_private].pushed=true;if(typeof value!=="undefined"){return ref.set(value,onComplete).then((()=>ref))}else{return ref}}async remove(){if(this.isWildcardPath){throw new Error(`Cannot remove wildcard path "/${this.path}". Use query().remove instead`)}if(this.parent===null){throw new Error("Cannot remove the root node")}return this.set(null)}async exists(){if(this.isWildcardPath){throw new Error(`Cannot check wildcard path "/${this.path}" existence`)}if(!this.db.isReady){await this.db.ready()}return this.db.api.exists(this.path)}get isWildcardPath(){return this.path.indexOf("*")>=0||this.path.indexOf("$")>=0}query(){return new DataReferenceQuery(this)}async count(){const info=await this.reflect("info",{child_count:true});return info.children.count}async reflect(type,args){if(this.isWildcardPath){throw new Error(`Cannot reflect on wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}return this.db.api.reflect(this.path,type,args)}async export(write,options={format:"json",type_safe:true}){if(this.isWildcardPath){throw new Error(`Cannot export wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}const writeFn=typeof write==="function"?write:write.write.bind(write);return this.db.api.export(this.path,writeFn,options)}async import(read,options={format:"json",suppress_events:false}){if(this.isWildcardPath){throw new Error(`Cannot import to wildcard path "/${this.path}"`)}if(!this.db.isReady){await this.db.ready()}return this.db.api.import(this.path,read,options)}proxy(options){const isOptionsArg=typeof options==="object"&&(typeof options.cursor!=="undefined"||typeof options.defaultValue!=="undefined");if(typeof options!=="undefined"&&!isOptionsArg){this.db.debug.warn("Warning: live data proxy is being initialized with a deprecated method signature. Use ref.proxy(options) instead of ref.proxy(defaultValue)");options={defaultValue:options}}return data_proxy_1.LiveDataProxy.create(this,options)}observe(options){if(options){throw new Error("observe does not support data retrieval options yet")}if(this.isWildcardPath){throw new Error(`Cannot observe wildcard path "/${this.path}"`)}const Observable=(0,optional_observable_1.getObservable)();return new Observable((observer=>{let cache,resolved=false;let promise=this.get(options).then((snap=>{resolved=true;cache=snap.val();observer.next(cache)}));const updateCache=snap=>{if(!resolved){promise=promise.then((()=>updateCache(snap)));return}const mutatedPath=snap.ref.path;if(mutatedPath===this.path){cache=snap.val();return observer.next(cache)}const trailKeys=path_info_1.PathInfo.getPathKeys(mutatedPath).slice(path_info_1.PathInfo.getPathKeys(this.path).length);let target=cache;while(trailKeys.length>1){const key=trailKeys.shift();if(!(key in target)){target[key]=typeof trailKeys[0]==="number"?[]:{}}target=target[key]}const prop=trailKeys.shift();const newValue=snap.val();if(newValue===null){target instanceof Array&&typeof prop==="number"?target.splice(prop,1):delete target[prop]}else{target[prop]=newValue}observer.next(cache)};this.on("mutated",updateCache);return()=>{this.off("mutated",updateCache)}}))}async forEach(callbackOrOptions,callback){let options;if(typeof callbackOrOptions==="function"){callback=callbackOrOptions}else{options=callbackOrOptions}if(typeof callback!=="function"){throw new TypeError("No callback function given")}const info=await this.reflect("children",{limit:0,skip:0});const summary={canceled:false,total:info.list.length,processed:0};for(let i=0;ithis.get(optionsOrCallback,callback)));return typeof optionsOrCallback!=="function"&&typeof callback!=="function"?promise:undefined}callback=typeof optionsOrCallback==="function"?optionsOrCallback:typeof callback==="function"?callback:undefined;const options=new QueryDataRetrievalOptions(typeof optionsOrCallback==="object"?optionsOrCallback:{snapshots:true,cache_mode:"allow"});options.allow_cache=options.cache_mode!=="bypass";options.eventHandler=ev=>{if(!this[_private].events[ev.name]){return false}const listeners=this[_private].events[ev.name];if(typeof listeners!=="object"||listeners.length===0){return false}if(["add","change","remove"].includes(ev.name)){const eventData={name:ev.name,ref:new DataReference(this.ref.db,ev.path)};if(options.snapshots&&ev.name!=="remove"){const val=db.types.deserialize(ev.path,ev.value);eventData.snapshot=new data_snapshot_1.DataSnapshot(eventData.ref,val,false)}ev=eventData}listeners.forEach((callback=>{var _a,_b;try{callback(ev)}catch(err){this.ref.db.debug.error(`Error executing "${ev.name}" event handler of realtime query on path "${this.ref.path}": ${(_b=(_a=err===null||err===void 0?void 0:err.stack)!==null&&_a!==void 0?_a:err===null||err===void 0?void 0:err.message)!==null&&_b!==void 0?_b:err}`)}}))};options.monitor={add:false,change:false,remove:false};if(this[_private].events){if(this[_private].events["add"]&&this[_private].events["add"].length>0){options.monitor.add=true}if(this[_private].events["change"]&&this[_private].events["change"].length>0){options.monitor.change=true}if(this[_private].events["remove"]&&this[_private].events["remove"].length>0){options.monitor.remove=true}}this.stop();const db=this.ref.db;return db.api.query(this.ref.path,this[_private],options).catch((err=>{throw new Error(err)})).then((res=>{const{stop:stop}=res;let{results:results,context:context}=res;this.stop=async()=>{await stop()};if(!("results"in res&&"context"in res)){console.warn("Query results missing context. Update your acebase and/or acebase-client packages");results=res,context={}}if(options.snapshots){const snaps=results.map((result=>{const val=db.types.deserialize(result.path,result.val);return new data_snapshot_1.DataSnapshot(db.ref(result.path),val,false,undefined,context)}));return DataSnapshotsArray.from(snaps)}else{const refs=results.map((path=>db.ref(path)));return DataReferencesArray.from(refs)}})).then((results=>{callback&&callback(results);return results}))}async stop(){}getRefs(callback){return this.get({snapshots:false},callback)}find(){return this.get({snapshots:false})}async count(){const refs=await this.find();return refs.length}async exists(){const originalTake=this[_private].take;const p=this.take(1).find();this.take(originalTake);const refs=await p;return refs.length!==0}async remove(callback){const refs=await this.find();const parentUpdates=refs.reduce(((parents,ref)=>{const parent=parents[ref.parent.path];if(!parent){parents[ref.parent.path]=[ref]}else{parent.push(ref)}return parents}),{});const db=this.ref.db;const promises=Object.keys(parentUpdates).map((async parentPath=>{const updates=refs.reduce(((updates,ref)=>{updates[ref.key]=null;return updates}),{});const ref=db.ref(parentPath);try{await ref.update(updates);return{ref:ref,success:true}}catch(error){return{ref:ref,success:false,error:error}}}));const results=await Promise.all(promises);callback&&callback(results);return results}on(event,callback){if(!this[_private].events[event]){this[_private].events[event]=[]}this[_private].events[event].push(callback);return this}off(event,callback){if(typeof event==="undefined"){this[_private].events={};return this}if(!this[_private].events[event]){return this}if(typeof callback==="undefined"){delete this[_private].events[event];return this}const index=this[_private].events[event].indexOf(callback);if(!~index){return this}this[_private].events[event].splice(index,1);return this}async forEach(callbackOrOptions,callback){let options;if(typeof callbackOrOptions==="function"){callback=callbackOrOptions}else{options=callbackOrOptions}if(typeof callback!=="function"){throw new TypeError("No callback function given")}const refs=await this.find();const summary={canceled:false,total:refs.length,processed:0};for(let i=0;iarr[i]=snap));return arr}getValues(){return this.map((snap=>snap.val()))}}exports.DataSnapshotsArray=DataSnapshotsArray;class DataReferencesArray extends Array{static from(refs){const arr=new DataReferencesArray(refs.length);refs.forEach(((ref,i)=>arr[i]=ref));return arr}getPaths(){return this.map((ref=>ref.path))}}exports.DataReferencesArray=DataReferencesArray},{"./data-proxy":38,"./data-snapshot":40,"./id":42,"./optional-observable":45,"./path-info":47,"./subscription":54}],40:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.MutationsDataSnapshot=exports.DataSnapshot=void 0;const path_info_1=require("./path-info");function getChild(snapshot,path,previous=false){if(!snapshot.exists()){return null}let child=previous?snapshot.previous():snapshot.val();if(typeof path==="number"){return child[path]}path_info_1.PathInfo.getPathKeys(path).every((key=>{child=child[key];return typeof child!=="undefined"}));return child||null}function getChildren(snapshot){if(!snapshot.exists()){return[]}const value=snapshot.val();if(value instanceof Array){return new Array(value.length).map(((v,i)=>i))}if(typeof value==="object"){return Object.keys(value)}return[]}class DataSnapshot{exists(){return false}constructor(ref,value,isRemoved=false,prevValue,context){this.ref=ref;this.val=()=>value;this.previous=()=>prevValue;this.exists=()=>{if(isRemoved){return false}return value!==null&&typeof value!=="undefined"};this.context=()=>context||{}}static for(ref,value){return new DataSnapshot(ref,value)}child(path){const val=getChild(this,path,false);const prev=getChild(this,path,true);return new DataSnapshot(this.ref.child(path),val,false,prev)}hasChild(path){return getChild(this,path)!==null}hasChildren(){return getChildren(this).length>0}numChildren(){return getChildren(this).length}forEach(callback){const value=this.val();const prev=this.previous();return getChildren(this).every((key=>{const snap=new DataSnapshot(this.ref.child(key),value[key],false,prev[key]);return callback(snap)}))}get key(){return this.ref.key}}exports.DataSnapshot=DataSnapshot;class MutationsDataSnapshot extends DataSnapshot{constructor(ref,mutations,context){super(ref,mutations,false,undefined,context);this.previous=()=>{throw new Error("Iterate values to get previous values for each mutation")};this.val=(warn=true)=>{if(warn){console.warn("Unless you know what you are doing, it is best not to use the value of a mutations snapshot directly. Use child methods and forEach to iterate the mutations instead")}return mutations}}forEach(callback){const mutations=this.val(false);return mutations.every((mutation=>{const ref=mutation.target.reduce(((ref,key)=>ref.child(key)),this.ref);const snap=new DataSnapshot(ref,mutation.val,false,mutation.prev);return callback(snap)}))}child(index){if(typeof index!=="number"){throw new Error("child index must be a number")}const mutation=this.val(false)[index];const ref=mutation.target.reduce(((ref,key)=>ref.child(key)),this.ref);return new DataSnapshot(ref,mutation.val,false,mutation.prev)}}exports.MutationsDataSnapshot=MutationsDataSnapshot},{"./path-info":47}],41:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DebugLogger=void 0;const process_1=require("./process");const noop=()=>{};class DebugLogger{constructor(level="log",prefix=""){this.level=level;this.prefix=prefix;this.setLevel(level)}setLevel(level){const prefix=this.prefix?this.prefix+" %s":"";this.verbose=["verbose"].includes(level)?prefix?console.log.bind(console,prefix):console.log.bind(console):noop;this.log=["verbose","log"].includes(level)?prefix?console.log.bind(console,prefix):console.log.bind(console):noop;this.warn=["verbose","log","warn"].includes(level)?prefix?console.warn.bind(console,prefix):console.warn.bind(console):noop;this.error=["verbose","log","warn","error"].includes(level)?prefix?console.error.bind(console,prefix):console.error.bind(console):noop;this.write=text=>{const isRunKit=typeof process_1.default!=="undefined"&&process_1.default.env&&typeof process_1.default.env.RUNKIT_ENDPOINT_PATH==="string";if(text&&isRunKit){text.split("\n").forEach((line=>console.log(line)))}else{console.log(text)}}}}exports.DebugLogger=DebugLogger},{"./process":49}],42:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ID=void 0;const cuid_1=require("./cuid");let timeBias=0;class ID{static set timeBias(bias){if(typeof bias!=="number"){return}timeBias=bias}static generate(){return(0,cuid_1.default)(timeBias).slice(1)}}exports.ID=ID},{"./cuid":36}],43:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ObjectCollection=exports.PartialArray=exports.SimpleObservable=exports.SchemaDefinition=exports.Colorize=exports.ColorStyle=exports.SimpleEventEmitter=exports.SimpleCache=exports.ascii85=exports.PathInfo=exports.Utils=exports.TypeMappings=exports.Transport=exports.EventSubscription=exports.EventPublisher=exports.EventStream=exports.PathReference=exports.ID=exports.DebugLogger=exports.OrderedCollectionProxy=exports.proxyAccess=exports.MutationsDataSnapshot=exports.DataSnapshot=exports.DataReferencesArray=exports.DataSnapshotsArray=exports.QueryDataRetrievalOptions=exports.DataRetrievalOptions=exports.DataReferenceQuery=exports.DataReference=exports.Api=exports.AceBaseBaseSettings=exports.AceBaseBase=void 0;var acebase_base_1=require("./acebase-base");Object.defineProperty(exports,"AceBaseBase",{enumerable:true,get:function(){return acebase_base_1.AceBaseBase}});Object.defineProperty(exports,"AceBaseBaseSettings",{enumerable:true,get:function(){return acebase_base_1.AceBaseBaseSettings}});var api_1=require("./api");Object.defineProperty(exports,"Api",{enumerable:true,get:function(){return api_1.Api}});var data_reference_1=require("./data-reference");Object.defineProperty(exports,"DataReference",{enumerable:true,get:function(){return data_reference_1.DataReference}});Object.defineProperty(exports,"DataReferenceQuery",{enumerable:true,get:function(){return data_reference_1.DataReferenceQuery}});Object.defineProperty(exports,"DataRetrievalOptions",{enumerable:true,get:function(){return data_reference_1.DataRetrievalOptions}});Object.defineProperty(exports,"QueryDataRetrievalOptions",{enumerable:true,get:function(){return data_reference_1.QueryDataRetrievalOptions}});Object.defineProperty(exports,"DataSnapshotsArray",{enumerable:true,get:function(){return data_reference_1.DataSnapshotsArray}});Object.defineProperty(exports,"DataReferencesArray",{enumerable:true,get:function(){return data_reference_1.DataReferencesArray}});var data_snapshot_1=require("./data-snapshot");Object.defineProperty(exports,"DataSnapshot",{enumerable:true,get:function(){return data_snapshot_1.DataSnapshot}});Object.defineProperty(exports,"MutationsDataSnapshot",{enumerable:true,get:function(){return data_snapshot_1.MutationsDataSnapshot}});var data_proxy_1=require("./data-proxy");Object.defineProperty(exports,"proxyAccess",{enumerable:true,get:function(){return data_proxy_1.proxyAccess}});Object.defineProperty(exports,"OrderedCollectionProxy",{enumerable:true,get:function(){return data_proxy_1.OrderedCollectionProxy}});var debug_1=require("./debug");Object.defineProperty(exports,"DebugLogger",{enumerable:true,get:function(){return debug_1.DebugLogger}});var id_1=require("./id");Object.defineProperty(exports,"ID",{enumerable:true,get:function(){return id_1.ID}});var path_reference_1=require("./path-reference");Object.defineProperty(exports,"PathReference",{enumerable:true,get:function(){return path_reference_1.PathReference}});var subscription_1=require("./subscription");Object.defineProperty(exports,"EventStream",{enumerable:true,get:function(){return subscription_1.EventStream}});Object.defineProperty(exports,"EventPublisher",{enumerable:true,get:function(){return subscription_1.EventPublisher}});Object.defineProperty(exports,"EventSubscription",{enumerable:true,get:function(){return subscription_1.EventSubscription}});exports.Transport=require("./transport");var type_mappings_1=require("./type-mappings");Object.defineProperty(exports,"TypeMappings",{enumerable:true,get:function(){return type_mappings_1.TypeMappings}});exports.Utils=require("./utils");var path_info_1=require("./path-info");Object.defineProperty(exports,"PathInfo",{enumerable:true,get:function(){return path_info_1.PathInfo}});var ascii85_1=require("./ascii85");Object.defineProperty(exports,"ascii85",{enumerable:true,get:function(){return ascii85_1.ascii85}});var simple_cache_1=require("./simple-cache");Object.defineProperty(exports,"SimpleCache",{enumerable:true,get:function(){return simple_cache_1.SimpleCache}});var simple_event_emitter_1=require("./simple-event-emitter");Object.defineProperty(exports,"SimpleEventEmitter",{enumerable:true,get:function(){return simple_event_emitter_1.SimpleEventEmitter}});var simple_colors_1=require("./simple-colors");Object.defineProperty(exports,"ColorStyle",{enumerable:true,get:function(){return simple_colors_1.ColorStyle}});Object.defineProperty(exports,"Colorize",{enumerable:true,get:function(){return simple_colors_1.Colorize}});var schema_1=require("./schema");Object.defineProperty(exports,"SchemaDefinition",{enumerable:true,get:function(){return schema_1.SchemaDefinition}});var optional_observable_1=require("./optional-observable");Object.defineProperty(exports,"SimpleObservable",{enumerable:true,get:function(){return optional_observable_1.SimpleObservable}});var partial_array_1=require("./partial-array");Object.defineProperty(exports,"PartialArray",{enumerable:true,get:function(){return partial_array_1.PartialArray}});const object_collection_1=require("./object-collection");Object.defineProperty(exports,"ObjectCollection",{enumerable:true,get:function(){return object_collection_1.ObjectCollection}})},{"./acebase-base":32,"./api":33,"./ascii85":34,"./data-proxy":38,"./data-reference":39,"./data-snapshot":40,"./debug":41,"./id":42,"./object-collection":44,"./optional-observable":45,"./partial-array":46,"./path-info":47,"./path-reference":48,"./schema":50,"./simple-cache":51,"./simple-colors":52,"./simple-event-emitter":53,"./subscription":54,"./transport":55,"./type-mappings":56,"./utils":57}],44:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ObjectCollection=void 0;const id_1=require("./id");class ObjectCollection{static from(array){const collection={};array.forEach((child=>{collection[id_1.ID.generate()]=child}));return collection}}exports.ObjectCollection=ObjectCollection},{"./id":42}],45:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SimpleObservable=exports.setObservable=exports.getObservable=void 0;const utils_1=require("./utils");let _shimRequested=false;let _observable;(async()=>{const global=(0,utils_1.getGlobalObject)();if(typeof global.Observable!=="undefined"){_observable=global.Observable;return}try{const{Observable:Observable}=await Promise.resolve().then((()=>require("rxjs")));_observable=Observable}catch(_a){_observable=SimpleObservable}})();function getObservable(){if(_observable===SimpleObservable&&!_shimRequested){console.warn("Using AceBase's simple Observable implementation because rxjs is not available. "+'Add it to your project with "npm install rxjs", add it to AceBase using db.setObservable(Observable), '+'or call db.setObservable("shim") to suppress this warning')}if(_observable){return _observable}throw new Error("RxJS Observable could not be loaded. ")}exports.getObservable=getObservable;function setObservable(Observable){if(Observable==="shim"){_observable=SimpleObservable;_shimRequested=true}else{_observable=Observable}}exports.setObservable=setObservable;class SimpleObservable{constructor(create){this._active=false;this._subscribers=[];this._create=create}subscribe(subscriber){if(!this._active){const next=value=>{this._subscribers.forEach((s=>{try{s(value)}catch(err){console.error("Error in subscriber callback:",err)}}))};const observer={next:next};this._cleanup=this._create(observer);this._active=true}this._subscribers.push(subscriber);const unsubscribe=()=>{this._subscribers.splice(this._subscribers.indexOf(subscriber),1);if(this._subscribers.length===0){this._active=false;this._cleanup()}};const subscription={unsubscribe:unsubscribe};return subscription}}exports.SimpleObservable=SimpleObservable},{"./utils":57,rxjs:58}],46:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PartialArray=void 0;class PartialArray{constructor(sparseArray){if(sparseArray instanceof Array){for(let i=0;ikey.startsWith("[")?parseInt(key.slice(1,-1)):key))}class PathInfo{static get(path){return new PathInfo(path)}static getChildPath(path,childKey){return PathInfo.get(path).child(childKey).path}static getPathKeys(path){return getPathKeys(path)}constructor(path){if(typeof path==="string"){this.keys=getPathKeys(path)}else if(path instanceof Array){this.keys=path}this.path=this.keys.reduce(((path,key,i)=>i===0?`${key}`:typeof key==="string"?`${path}/${key}`:`${path}[${key}]`),"")}get key(){return this.keys.length===0?null:this.keys.slice(-1)[0]}get parent(){if(this.keys.length==0){return null}const parentKeys=this.keys.slice(0,-1);return new PathInfo(parentKeys)}get parentPath(){return this.keys.length===0?null:this.parent.path}child(childKey){if(typeof childKey==="string"){if(childKey.length===0){throw new Error(`child key for path "${this.path}" cannot be empty`)}const keys=getPathKeys(childKey);keys.forEach((key=>{if(typeof key!=="string"){return}if(/[\x00-\x08\x0b\x0c\x0e-\x1f/[\]\\]/.test(key)){throw new Error(`Invalid child key "${key}" for path "${this.path}". Keys cannot contain control characters or any of the following characters: \\ / [ ]`)}if(key.length>128){throw new Error(`child key "${key}" for path "${this.path}" is too long. Max key length is 128`)}if(key.length===0){throw new Error(`child key for path "${this.path}" cannot be empty`)}}));childKey=keys}return new PathInfo(this.keys.concat(childKey))}childPath(childKey){return this.child(childKey).path}get pathKeys(){return this.keys}static extractVariables(varPath,fullPath){if(!varPath.includes("*")&&!varPath.includes("$")){return[]}const keys=getPathKeys(varPath);const pathKeys=getPathKeys(fullPath);let count=0;const variables={get length(){return count}};keys.forEach(((key,index)=>{const pathKey=pathKeys[index];if(key==="*"){variables[count++]=pathKey}else if(typeof key==="string"&&key[0]==="$"){variables[count++]=pathKey;variables[key]=pathKey;const varName=key.slice(1);if(typeof variables[varName]==="undefined"){variables[varName]=pathKey}}}));return variables}static fillVariables(varPath,fullPath){if(varPath.indexOf("*")<0&&varPath.indexOf("$")<0){return varPath}const keys=getPathKeys(varPath);const pathKeys=getPathKeys(fullPath);const merged=keys.map(((key,index)=>{if(key===pathKeys[index]||index>=pathKeys.length){return key}else if(typeof key==="string"&&(key==="*"||key[0]==="$")){return pathKeys[index]}else{throw new Error(`Path "${fullPath}" cannot be used to fill variables of path "${varPath}" because they do not match`)}}));let mergedPath="";merged.forEach((key=>{if(typeof key==="number"){mergedPath+=`[${key}]`}else{if(mergedPath.length>0){mergedPath+="/"}mergedPath+=key}}));return mergedPath}static fillVariables2(varPath,vars){if(typeof vars!=="object"||Object.keys(vars).length===0){return varPath}const pathKeys=getPathKeys(varPath);let n=0;const targetPath=pathKeys.reduce(((path,key)=>{if(typeof key==="string"&&(key==="*"||key.startsWith("$"))){return PathInfo.getChildPath(path,vars[n++])}else{return PathInfo.getChildPath(path,key)}}),"");return targetPath}equals(otherPath){const other=otherPath instanceof PathInfo?otherPath:new PathInfo(otherPath);if(this.path===other.path){return true}if(this.keys.length!==other.keys.length){return false}return this.keys.every(((key,index)=>{const otherKey=other.keys[index];return otherKey===key||typeof otherKey==="string"&&(otherKey==="*"||otherKey[0]==="$")||typeof key==="string"&&(key==="*"||key[0]==="$")}))}isAncestorOf(descendantPath){const descendant=descendantPath instanceof PathInfo?descendantPath:new PathInfo(descendantPath);if(descendant.path===""||this.path===descendant.path){return false}if(this.path===""){return true}if(this.keys.length>=descendant.keys.length){return false}return this.keys.every(((key,index)=>{const otherKey=descendant.keys[index];return otherKey===key||typeof otherKey==="string"&&(otherKey==="*"||otherKey[0]==="$")||typeof key==="string"&&(key==="*"||key[0]==="$")}))}isDescendantOf(ancestorPath){const ancestor=ancestorPath instanceof PathInfo?ancestorPath:new PathInfo(ancestorPath);if(this.path===""||this.path===ancestor.path){return false}if(ancestorPath===""){return true}if(ancestor.keys.length>=this.keys.length){return false}return ancestor.keys.every(((key,index)=>{const otherKey=this.keys[index];return otherKey===key||typeof otherKey==="string"&&(otherKey==="*"||otherKey[0]==="$")||typeof key==="string"&&(key==="*"||key[0]==="$")}))}isOnTrailOf(otherPath){const other=otherPath instanceof PathInfo?otherPath:new PathInfo(otherPath);if(this.path.length===0||other.path.length===0){return true}if(this.path===other.path){return true}return this.pathKeys.every(((key,index)=>{if(index>=other.keys.length){return true}const otherKey=other.keys[index];return otherKey===key||typeof otherKey==="string"&&(otherKey==="*"||otherKey[0]==="$")||typeof key==="string"&&(key==="*"||key[0]==="$")}))}isChildOf(otherPath){const other=otherPath instanceof PathInfo?otherPath:new PathInfo(otherPath);if(this.path===""){return false}return this.parent.equals(other)}isParentOf(otherPath){const other=otherPath instanceof PathInfo?otherPath:new PathInfo(otherPath);if(other.path===""){return false}return this.equals(other.parent)}}exports.PathInfo=PathInfo},{}],48:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PathReference=void 0;class PathReference{constructor(path){this.path=path}}exports.PathReference=PathReference},{}],49:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default={nextTick(fn){setTimeout(fn,0)}}},{}],50:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SchemaDefinition=void 0;function parse(definition){let pos=0;function consumeSpaces(){let c;while(c=definition[pos],[" ","\r","\n","\t"].includes(c)){pos++}}function consumeCharacter(c){if(definition[pos]!==c){throw new Error(`Unexpected character at position ${pos}. Expected: '${c}', found '${definition[pos]}'`)}pos++}function readProperty(){consumeSpaces();const prop={name:"",optional:false,wildcard:false};let c;while(c=definition[pos],c==="_"||c==="$"||c>="a"&&c<="z"||c>="A"&&c<="Z"||prop.name.length>0&&c>="0"&&c<="9"||prop.name.length===0&&c==="*"){prop.name+=c;pos++}if(prop.name.length===0){throw new Error(`Property name expected at position ${pos}, found: ${definition.slice(pos,pos+10)}..`)}if(definition[pos]==="?"){prop.optional=true;pos++}if(prop.name==="*"||prop.name[0]==="$"){prop.optional=true;prop.wildcard=true}consumeSpaces();consumeCharacter(":");return prop}function readType(){consumeSpaces();let type={typeOf:"any"},c;let name="";while(c=definition[pos],c>="a"&&c<="z"||c>="A"&&c<="Z"){name+=c;pos++}if(name.length===0){if(definition[pos]==="*"){consumeCharacter("*");type.typeOf="any"}else if(["'",'"',"`"].includes(definition[pos])){type.typeOf="string";type.value="";const quote=definition[pos];consumeCharacter(quote);while(c=definition[pos],c&&c!==quote){type.value+=c;pos++}consumeCharacter(quote)}else if(definition[pos]>="0"&&definition[pos]<="9"){type.typeOf="number";let nr="";while(c=definition[pos],c==="."||c==="n"||c>="0"&&c<="9"){nr+=c;pos++}if(nr.endsWith("n")){type.value=BigInt(nr)}else if(nr.includes(".")){type.value=parseFloat(nr)}else{type.value=parseInt(nr)}}else if(definition[pos]==="{"){consumeCharacter("{");type.typeOf="object";type.instanceOf=Object;type.children=[];while(true){const prop=readProperty();const types=readTypes();type.children.push({name:prop.name,optional:prop.optional,wildcard:prop.wildcard,types:types});consumeSpaces();if(definition[pos]===";"||definition[pos]===","){consumeCharacter(definition[pos]);consumeSpaces()}if(definition[pos]==="}"){break}}consumeCharacter("}")}else if(definition[pos]==="/"){consumeCharacter("/");let pattern="",flags="";while(c=definition[pos],c!=="/"||pattern.endsWith("\\")){pattern+=c;pos++}consumeCharacter("/");while(c=definition[pos],["g","i","m","s","u","y","d"].includes(c)){flags+=c;pos++}type.typeOf="string";type.matches=new RegExp(pattern,flags)}else{throw new Error(`Expected a type definition at position ${pos}, found character '${definition[pos]}'`)}}else if(["string","number","boolean","bigint","undefined","String","Number","Boolean","BigInt"].includes(name)){type.typeOf=name.toLowerCase()}else if(name==="Object"||name==="object"){type.typeOf="object";type.instanceOf=Object}else if(name==="Date"){type.typeOf="object";type.instanceOf=Date}else if(name==="Binary"||name==="binary"){type.typeOf="object";type.instanceOf=ArrayBuffer}else if(name==="any"){type.typeOf="any"}else if(name==="null"){type.typeOf="object";type.value=null}else if(name==="Array"){consumeCharacter("<");type.typeOf="object";type.instanceOf=Array;type.genericTypes=readTypes();consumeCharacter(">")}else if(["true","false"].includes(name)){type.typeOf="boolean";type.value=name==="true"}else{throw new Error(`Unknown type at position ${pos}: "${type}"`)}consumeSpaces();while(definition[pos]==="["){consumeCharacter("[");consumeCharacter("]");type={typeOf:"object",instanceOf:Array,genericTypes:[type]}}return type}function readTypes(){consumeSpaces();const types=[readType()];while(definition[pos]==="|"){consumeCharacter("|");types.push(readType());consumeSpaces()}return types}return readType()}function checkObject(path,properties,obj,partial){const invalidProperties=properties.find((prop=>prop.name==="*"||prop.name[0]==="$"))?[]:Object.keys(obj).filter((key=>![null,undefined].includes(obj[key])&&!properties.find((prop=>prop.name===key))));if(invalidProperties.length>0){return{ok:false,reason:`Object at path "${path}" cannot have propert${invalidProperties.length===1?"y":"ies"} ${invalidProperties.map((p=>`"${p}"`)).join(", ")}`}}function checkProperty(property){const hasValue=![null,undefined].includes(obj[property.name]);if(!property.optional&&(partial?obj[property.name]===null:!hasValue)){return{ok:false,reason:`Property at path "${path}/${property.name}" is not optional`}}if(hasValue&&property.types.length===1){return checkType(`${path}/${property.name}`,property.types[0],obj[property.name],false)}if(hasValue&&!property.types.some((type=>checkType(`${path}/${property.name}`,type,obj[property.name],false).ok))){return{ok:false,reason:`Property at path "${path}/${property.name}" does not match any of ${property.types.length} allowed types`}}return{ok:true}}const namedProperties=properties.filter((prop=>!prop.wildcard));const failedProperty=namedProperties.find((prop=>!checkProperty(prop).ok));if(failedProperty){const reason=checkProperty(failedProperty).reason;return{ok:false,reason:reason}}const wildcardProperty=properties.find((prop=>prop.wildcard));if(!wildcardProperty){return{ok:true}}const wildcardChildKeys=Object.keys(obj).filter((key=>!namedProperties.find((prop=>prop.name===key))));let result={ok:true};for(let i=0;i0){if(type.typeOf!=="object"){return{ok:false,reason:`path "${path}" must be typeof ${type.typeOf}`}}if(!type.children){return ok}const childKey=trailKeys[0];let property=type.children.find((prop=>prop.name===childKey));if(!property){property=type.children.find((prop=>prop.name==="*"||prop.name[0]==="$"))}if(!property){return{ok:false,reason:`Object at path "${path}" cannot have property "${childKey}"`}}if(property.optional&&value===null&&trailKeys.length===1){return ok}let result;property.types.some((type=>{const childPath=typeof childKey==="number"?`${path}[${childKey}]`:`${path}/${childKey}`;result=checkType(childPath,type,value,partial,trailKeys.slice(1));return result.ok}));return result}if(value===null){return ok}if(type.instanceOf===Object&&(typeof value!=="object"||value instanceof Array||value instanceof Date)){return{ok:false,reason:`path "${path}" must be an object collection`}}if(type.instanceOf&&(typeof value!=="object"||value.constructor!==type.instanceOf)){return{ok:false,reason:`path "${path}" must be an instance of ${type.instanceOf.name}`}}if("value"in type&&value!==type.value){return{ok:false,reason:`path "${path}" must be value: ${type.value}`}}if(typeof value!==type.typeOf){return{ok:false,reason:`path "${path}" must be typeof ${type.typeOf}`}}if(type.instanceOf===Array&&type.genericTypes&&!value.every((v=>type.genericTypes.some((t=>checkType(path,t,v,false).ok))))){return{ok:false,reason:`every array value of path "${path}" must match one of the specified types`}}if(type.typeOf==="object"&&type.children){return checkObject(path,type.children,value,partial)}if(type.matches&&!type.matches.test(value)){return{ok:false,reason:`path "${path}" must match regular expression /${type.matches.source}/${type.matches.flags}`}}return ok}function getConstructorType(val){switch(val){case String:return"string";case Number:return"number";case Boolean:return"boolean";case Date:return"Date";case BigInt:return"bigint";case Array:throw new Error("Schema error: Array cannot be used without a type. Use string[] or Array instead");default:throw new Error(`Schema error: unknown type used: ${val.name}`)}}class SchemaDefinition{constructor(definition){this.source=definition;if(typeof definition==="object"){const toTS=obj=>"{"+Object.keys(obj).map((key=>{let val=obj[key];if(val===undefined){val="undefined"}else if(val instanceof RegExp){val=`/${val.source}/${val.flags}`}else if(typeof val==="object"){val=toTS(val)}else if(typeof val==="function"){val=getConstructorType(val)}else if(!["string","number","boolean","bigint"].includes(typeof val)){throw new Error(`Type definition for key "${key}" must be a string, number, boolean, bigint, object, regular expression, or one of these classes: String, Number, Boolean, Date, BigInt`)}return`${key}:${val}`})).join(",")+"}";this.text=toTS(definition)}else if(typeof definition==="string"){this.text=definition}else{throw new Error("Type definiton must be a string or an object")}this.type=parse(this.text)}check(path,value,partial,trailKeys){return checkType(path,this.type,value,partial,trailKeys)}}exports.SchemaDefinition=SchemaDefinition},{}],51:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SimpleCache=void 0;const utils_1=require("./utils");const calculateExpiryTime=expirySeconds=>expirySeconds>0?Date.now()+expirySeconds*1e3:Infinity;class SimpleCache{get size(){return this.cache.size}constructor(options){var _a;this.enabled=true;if(typeof options==="number"){options={expirySeconds:options}}options.cloneValues=options.cloneValues!==false;if(typeof options.expirySeconds!=="number"&&typeof options.maxEntries!=="number"){throw new Error("Either expirySeconds or maxEntries must be specified")}this.options=options;this.cache=new Map;const interval=setInterval((()=>{this.cleanUp()}),60*1e3);(_a=interval.unref)===null||_a===void 0?void 0:_a.call(interval)}has(key){if(!this.enabled){return false}return this.cache.has(key)}get(key){if(!this.enabled){return null}const entry=this.cache.get(key);if(!entry){return null}entry.expires=calculateExpiryTime(this.options.expirySeconds);entry.accessed=Date.now();return this.options.cloneValues?(0,utils_1.cloneObject)(entry.value):entry.value}set(key,value){if(this.options.maxEntries>0&&this.cache.size>=this.options.maxEntries&&!this.cache.has(key)){let oldest=null;const now=Date.now();for(const[key,entry]of this.cache.entries()){if(entry.expires<=now){this.cache.delete(key);oldest=null;break}if(!oldest||entry.accessed{if(entry.expires<=now){this.cache.delete(key)}}))}}exports.SimpleCache=SimpleCache},{"./utils":57}],52:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Colorize=exports.SetColorsEnabled=exports.ColorsSupported=exports.ColorStyle=void 0;const process_1=require("./process");const FontCode={bold:1,dim:2,italic:3,underline:4,inverse:7,hidden:8,strikethrough:94};const ColorCode={black:30,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37,grey:90,brightRed:91};const BgColorCode={bgBlack:40,bgRed:41,bgGreen:42,bgYellow:43,bgBlue:44,bgMagenta:45,bgCyan:46,bgWhite:47,bgGrey:100,bgBrightRed:101};const ResetCode={all:0,color:39,background:49,bold:22,dim:22,italic:23,underline:24,inverse:27,hidden:28,strikethrough:29};var ColorStyle;(function(ColorStyle){ColorStyle["reset"]="reset";ColorStyle["bold"]="bold";ColorStyle["dim"]="dim";ColorStyle["italic"]="italic";ColorStyle["underline"]="underline";ColorStyle["inverse"]="inverse";ColorStyle["hidden"]="hidden";ColorStyle["strikethrough"]="strikethrough";ColorStyle["black"]="black";ColorStyle["red"]="red";ColorStyle["green"]="green";ColorStyle["yellow"]="yellow";ColorStyle["blue"]="blue";ColorStyle["magenta"]="magenta";ColorStyle["cyan"]="cyan";ColorStyle["grey"]="grey";ColorStyle["bgBlack"]="bgBlack";ColorStyle["bgRed"]="bgRed";ColorStyle["bgGreen"]="bgGreen";ColorStyle["bgYellow"]="bgYellow";ColorStyle["bgBlue"]="bgBlue";ColorStyle["bgMagenta"]="bgMagenta";ColorStyle["bgCyan"]="bgCyan";ColorStyle["bgWhite"]="bgWhite";ColorStyle["bgGrey"]="bgGrey"})(ColorStyle=exports.ColorStyle||(exports.ColorStyle={}));function ColorsSupported(){if(typeof process_1.default==="undefined"||!process_1.default.stdout||!process_1.default.env||!process_1.default.platform||process_1.default.platform==="browser"){return false}if(process_1.default.platform==="win32"){return true}const env=process_1.default.env;if(env.COLORTERM){return true}if(env.TERM==="dumb"){return false}if(env.CI||env.TEAMCITY_VERSION){return!!env.TRAVIS}if(["iTerm.app","HyperTerm","Hyper","MacTerm","Apple_Terminal","vscode"].includes(env.TERM_PROGRAM)){return true}if(/^xterm-256|^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(env.TERM)){return true}return false}exports.ColorsSupported=ColorsSupported;let _enabled=ColorsSupported();function SetColorsEnabled(enabled){_enabled=ColorsSupported()&&enabled}exports.SetColorsEnabled=SetColorsEnabled;function Colorize(str,style){if(!_enabled){return str}const openCodes=[],closeCodes=[];const addStyle=style=>{if(style===ColorStyle.reset){openCodes.push(ResetCode.all)}else if(style in FontCode){openCodes.push(FontCode[style]);closeCodes.push(ResetCode[style])}else if(style in ColorCode){openCodes.push(ColorCode[style]);closeCodes.push(ResetCode.color)}else if(style in BgColorCode){openCodes.push(BgColorCode[style]);closeCodes.push(ResetCode.background)}};if(style instanceof Array){style.forEach(addStyle)}else{addStyle(style)}const open=openCodes.map((code=>"["+code+"m")).join("");const close=closeCodes.map((code=>"["+code+"m")).join("");return str.split("\n").map((line=>open+line+close)).join("\n")}exports.Colorize=Colorize;String.prototype.colorize=function(style){return Colorize(this,style)}},{"./process":49}],53:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SimpleEventEmitter=void 0;function runCallback(callback,data){try{callback(data)}catch(err){console.error("Error in subscription callback",err)}}const _subscriptions=Symbol("subscriptions");const _oneTimeEvents=Symbol("oneTimeEvents");class SimpleEventEmitter{constructor(){this[_subscriptions]=[];this[_oneTimeEvents]=new Map}on(event,callback){if(this[_oneTimeEvents].has(event)){return runCallback(callback,this[_oneTimeEvents].get(event))}this[_subscriptions].push({event:event,callback:callback,once:false});return this}off(event,callback){this[_subscriptions]=this[_subscriptions].filter((s=>s.event!==event||callback&&s.callback!==callback));return this}once(event,callback){return new Promise((resolve=>{const ourCallback=data=>{resolve(data);callback===null||callback===void 0?void 0:callback(data)};if(this[_oneTimeEvents].has(event)){runCallback(ourCallback,this[_oneTimeEvents].get(event))}else{this[_subscriptions].push({event:event,callback:ourCallback,once:true})}}))}emit(event,data){if(this[_oneTimeEvents].has(event)){throw new Error(`Event "${event}" was supposed to be emitted only once`)}for(let i=0;i{eventEmitter.emit(event,data)}))}pipeOnce(event,eventEmitter){this.once(event,(data=>{eventEmitter.emitOnce(event,data)}))}}exports.SimpleEventEmitter=SimpleEventEmitter},{}],54:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.EventStream=exports.EventPublisher=exports.EventSubscription=void 0;class EventSubscription{constructor(stop){this.stop=stop;this._internal={state:"init",activatePromises:[]}}activated(callback){if(callback){this._internal.activatePromises.push({callback:callback});if(this._internal.state==="active"){callback(true)}else if(this._internal.state==="canceled"){callback(false,this._internal.cancelReason)}}return new Promise(((resolve,reject)=>{if(this._internal.state==="active"){return resolve()}else if(this._internal.state==="canceled"&&!callback){return reject(new Error(this._internal.cancelReason))}const noop=()=>{};this._internal.activatePromises.push({resolve:resolve,reject:callback?noop:reject})}))}_setActivationState(activated,cancelReason){this._internal.cancelReason=cancelReason;this._internal.state=activated?"active":"canceled";while(this._internal.activatePromises.length>0){const p=this._internal.activatePromises.shift();if(activated){p.callback&&p.callback(true);p.resolve&&p.resolve()}else{p.callback&&p.callback(false,cancelReason);p.reject&&p.reject(cancelReason)}}}}exports.EventSubscription=EventSubscription;class EventPublisher{constructor(publish,start,cancel){this.publish=publish;this.start=start;this.cancel=cancel}}exports.EventPublisher=EventPublisher;class EventStream{constructor(eventPublisherCallback){const subscribers=[];let noMoreSubscribersCallback;let activationState;const STATE_STOPPED="stopped (no more subscribers)";this.subscribe=(callback,activationCallback)=>{if(typeof callback!=="function"){throw new TypeError("callback must be a function")}else if(activationState===STATE_STOPPED){throw new Error("stream can't be used anymore because all subscribers were stopped")}const sub={callback:callback,activationCallback:function(activated,cancelReason){activationCallback===null||activationCallback===void 0?void 0:activationCallback(activated,cancelReason);this.subscription._setActivationState(activated,cancelReason)},subscription:new EventSubscription((function stop(){subscribers.splice(subscribers.indexOf(this),1);return checkActiveSubscribers()}))};subscribers.push(sub);if(typeof activationState!=="undefined"){if(activationState===true){activationCallback===null||activationCallback===void 0?void 0:activationCallback(true);sub.subscription._setActivationState(true)}else if(typeof activationState==="string"){activationCallback===null||activationCallback===void 0?void 0:activationCallback(false,activationState);sub.subscription._setActivationState(false,activationState)}}return sub.subscription};const checkActiveSubscribers=()=>{let ret;if(subscribers.length===0){ret=noMoreSubscribersCallback===null||noMoreSubscribersCallback===void 0?void 0:noMoreSubscribersCallback();activationState=STATE_STOPPED}return Promise.resolve(ret)};this.unsubscribe=callback=>{const remove=callback?subscribers.filter((sub=>sub.callback===callback)):subscribers;remove.forEach((sub=>{const i=subscribers.indexOf(sub);subscribers.splice(i,1)}));checkActiveSubscribers()};this.stop=()=>{subscribers.splice(0);checkActiveSubscribers()};const publish=val=>{subscribers.forEach((sub=>{try{sub.callback(val)}catch(err){console.error(`Error running subscriber callback: ${err.message}`)}}));if(subscribers.length===0){checkActiveSubscribers()}return subscribers.length>0};const start=allSubscriptionsStoppedCallback=>{activationState=true;noMoreSubscribersCallback=allSubscriptionsStoppedCallback;subscribers.forEach((sub=>{var _a;(_a=sub.activationCallback)===null||_a===void 0?void 0:_a.call(sub,true)}))};const cancel=reason=>{activationState=reason;subscribers.forEach((sub=>{var _a;(_a=sub.activationCallback)===null||_a===void 0?void 0:_a.call(sub,false,reason||new Error("unknown reason"))}));subscribers.splice(0)};const publisher=new EventPublisher(publish,start,cancel);eventPublisherCallback(publisher)}}exports.EventStream=EventStream},{}],55:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.deserialize2=exports.serialize2=exports.serialize=exports.detectSerializeVersion=exports.deserialize=void 0;const path_reference_1=require("./path-reference");const utils_1=require("./utils");const ascii85_1=require("./ascii85");const path_info_1=require("./path-info");const partial_array_1=require("./partial-array");const deserialize=data=>{if(data.map===null||typeof data.map==="undefined"){if(typeof data.val==="undefined"){throw new Error("serialized value must have a val property")}return data.val}const deserializeValue=(type,val)=>{if(type==="date"){return new Date(val)}else if(type==="binary"){return ascii85_1.ascii85.decode(val)}else if(type==="reference"){return new path_reference_1.PathReference(val)}else if(type==="regexp"){return new RegExp(val.pattern,val.flags)}else if(type==="array"){return new partial_array_1.PartialArray(val)}else if(type==="bigint"){return BigInt(val)}return val};if(typeof data.map==="string"){return deserializeValue(data.map,data.val)}Object.keys(data.map).forEach((path=>{const type=data.map[path];const keys=path_info_1.PathInfo.getPathKeys(path);let parent=data;let key="val";let val=data.val;keys.forEach((k=>{key=k;parent=val;val=val[key]}));parent[key]=deserializeValue(type,val)}));return data.val};exports.deserialize=deserialize;const detectSerializeVersion=data=>{if(typeof data!=="object"||data===null){return 2}if("map"in data&&"val"in data){return 1}else if("val"in data){if(Object.keys(data).length>1){return 2}return 1}return 2};exports.detectSerializeVersion=detectSerializeVersion;const serialize=obj=>{var _a;if(obj===null||typeof obj!=="object"||obj instanceof Date||obj instanceof ArrayBuffer||obj instanceof path_reference_1.PathReference||obj instanceof RegExp){const ser=(0,exports.serialize)({value:obj});return{map:(_a=ser.map)===null||_a===void 0?void 0:_a.value,val:ser.val.value}}obj=(0,utils_1.cloneObject)(obj);const process=(obj,mappings,prefix)=>{if(obj instanceof partial_array_1.PartialArray){mappings[prefix]="array"}Object.keys(obj).forEach((key=>{const val=obj[key];const path=prefix.length===0?key:`${prefix}/${key}`;if(typeof val==="bigint"){obj[key]=val.toString();mappings[path]="bigint"}else if(val instanceof Date){obj[key]=val.toISOString();mappings[path]="date"}else if(val instanceof ArrayBuffer){obj[key]=ascii85_1.ascii85.encode(val);mappings[path]="binary"}else if(val instanceof path_reference_1.PathReference){obj[key]=val.path;mappings[path]="reference"}else if(val instanceof RegExp){obj[key]={pattern:val.source,flags:val.flags};mappings[path]="regexp"}else if(typeof val==="object"&&val!==null){process(val,mappings,path)}}))};const mappings={};process(obj,mappings,"");const serialized={val:obj};if(Object.keys(mappings).length>0){serialized.map=mappings}return serialized};exports.serialize=serialize;const serialize2=obj=>{const getSerializedValue=val=>{if(typeof val==="bigint"){return{".type":"bigint",".val":val.toString()}}else if(val instanceof Date){return{".type":"date",".val":val.toISOString()}}else if(val instanceof ArrayBuffer){return{".type":"binary",".val":ascii85_1.ascii85.encode(val)}}else if(val instanceof path_reference_1.PathReference){return{".type":"reference",".val":val.path}}else if(val instanceof RegExp){return{".type":"regexp",".val":`/${val.source}/${val.flags}`}}else if(typeof val==="object"&&val!==null){if(val instanceof Array){const copy=[];for(let i=0;i{if(typeof data!=="object"||data===null){return data}if(typeof data[".type"]==="undefined"){if(data instanceof Array){const copy=[];const arr=data;for(let i=0;i{const mkeys=path_info_1.PathInfo.getPathKeys(mpath);if(mkeys.length!==keys.length){return false}return mkeys.every(((mkey,index)=>{if(mkey==="*"||typeof mkey==="string"&&mkey[0]==="$"){return true}return mkey===keys[index]}))}));const mapping=mappings[mappedPath];return mapping}function map(mappings,path){const targetPath=path_info_1.PathInfo.get(path).parentPath;if(targetPath===null){return}return get(mappings,targetPath)}function mapDeep(mappings,entryPath){entryPath=entryPath.replace(/^\/|\/$/g,"");const pathInfo=path_info_1.PathInfo.get(entryPath);const startPath=pathInfo.parentPath;const keys=startPath?path_info_1.PathInfo.getPathKeys(startPath):[];const matches=Object.keys(mappings).reduce(((m,mpath)=>{const mkeys=path_info_1.PathInfo.getPathKeys(mpath);if(mkeys.length{if(index>=keys.length){return false}else if(mkey==="*"||typeof mkey==="string"&&mkey[0]==="$"||mkey===keys[index]){return true}else{isMatch=false;return false}}))}if(isMatch){const mapping=mappings[mpath];m.push({path:mpath,type:mapping})}return m}),[]);return matches}function process(db,mappings,path,obj,action){if(obj===null||typeof obj!=="object"){return obj}const keys=path_info_1.PathInfo.getPathKeys(path);const m=mapDeep(mappings,path);const changes=[];m.sort(((a,b)=>path_info_1.PathInfo.getPathKeys(a.path).length>path_info_1.PathInfo.getPathKeys(b.path).length?-1:1));m.forEach((mapping=>{const mkeys=path_info_1.PathInfo.getPathKeys(mapping.path);mkeys.push("*");const mTrailKeys=mkeys.slice(keys.length);if(mTrailKeys.length===0){const vars=path_info_1.PathInfo.extractVariables(mapping.path,path);const ref=new data_reference_1.DataReference(db,path,vars);if(action==="serialize"){obj=mapping.type.serialize(obj,ref)}else if(action==="deserialize"){const snap=new data_snapshot_1.DataSnapshot(ref,obj);obj=mapping.type.deserialize(snap)}return}const process=(parentPath,parent,keys)=>{if(obj===null||typeof obj!=="object"){return obj}const key=keys[0];let children=[];if(key==="*"||typeof key==="string"&&key[0]==="$"){if(parent instanceof Array){children=parent.map(((val,index)=>({key:index,val:val})))}else{children=Object.keys(parent).map((k=>({key:k,val:parent[k]})))}}else{const child=parent[key];if(typeof child==="object"){children.push({key:key,val:child})}}children.forEach((child=>{const childPath=path_info_1.PathInfo.getChildPath(parentPath,child.key);const vars=path_info_1.PathInfo.extractVariables(mapping.path,childPath);const ref=new data_reference_1.DataReference(db,childPath,vars);if(keys.length===1){if(action==="serialize"){changes.push({parent:parent,key:child.key,original:parent[child.key]});parent[child.key]=mapping.type.serialize(child.val,ref)}else if(action==="deserialize"){const snap=new data_snapshot_1.DataSnapshot(ref,child.val);parent[child.key]=mapping.type.deserialize(snap)}}else{process(childPath,child.val,keys.slice(1))}}))};process(path,obj,mTrailKeys)}));if(action==="serialize"){obj=(0,utils_1.cloneObject)(obj);if(changes.length>0){changes.forEach((change=>{change.parent[change.key]=change.original}))}}return obj}const _mappings=Symbol("mappings");class TypeMappings{constructor(db){this.db=db;this[_mappings]={}}get mappings(){return this[_mappings]}map(path){return map(this[_mappings],path)}bind(path,type,options={}){if(typeof path!=="string"){throw new TypeError("path must be a string")}if(typeof type!=="function"){throw new TypeError("constructor must be a function")}if(typeof options.serializer==="undefined"){}else if(typeof options.serializer==="string"){if(typeof type.prototype[options.serializer]==="function"){options.serializer=type.prototype[options.serializer]}else{throw new TypeError(`${type.name}.prototype.${options.serializer} is not a function, cannot use it as serializer`)}}else if(typeof options.serializer!=="function"){throw new TypeError(`serializer for class ${type.name} must be a function, or the name of a prototype method`)}if(typeof options.creator==="undefined"){if(typeof type.create==="function"){options.creator=type.create}}else if(typeof options.creator==="string"){if(typeof type[options.creator]==="function"){options.creator=type[options.creator]}else{throw new TypeError(`${type.name}.${options.creator} is not a function, cannot use it as creator`)}}else if(typeof options.creator!=="function"){throw new TypeError(`creator for class ${type.name} must be a function, or the name of a static method`)}path=path.replace(/^\/|\/$/g,"");this[_mappings][path]={db:this.db,type:type,creator:options.creator,serializer:options.serializer,deserialize(snap){let obj;if(this.creator){obj=this.creator.call(this.type,snap)}else{obj=new this.type(snap)}return obj},serialize(obj,ref){if(this.serializer){obj=this.serializer.call(obj,ref,obj)}else if(obj&&typeof obj.serialize==="function"){obj=obj.serialize(ref,obj)}return obj}}}serialize(path,obj){return process(this.db,this[_mappings],path,obj,"serialize")}deserialize(path,obj){return process(this.db,this[_mappings],path,obj,"deserialize")}}exports.TypeMappings=TypeMappings},{"./data-reference":39,"./data-snapshot":40,"./path-info":47,"./utils":57}],57:[function(require,module,exports){(function(global,Buffer){(function(){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getGlobalObject=exports.defer=exports.getChildValues=exports.getMutations=exports.compareValues=exports.ObjectDifferences=exports.valuesAreEqual=exports.cloneObject=exports.concatTypedArrays=exports.decodeString=exports.encodeString=exports.bytesToBigint=exports.bigintToBytes=exports.bytesToNumber=exports.numberToBytes=void 0;const path_reference_1=require("./path-reference");const process_1=require("./process");const partial_array_1=require("./partial-array");function numberToBytes(number){const bytes=new Uint8Array(8);const view=new DataView(bytes.buffer);view.setFloat64(0,number);return new Array(...bytes)}exports.numberToBytes=numberToBytes;function bytesToNumber(bytes){const length=Array.isArray(bytes)?bytes.length:bytes.byteLength;if(length!==8){throw new TypeError("must be 8 bytes")}const bin=new Uint8Array(bytes);const view=new DataView(bin.buffer);const nr=view.getFloat64(0);return nr}exports.bytesToNumber=bytesToNumber;const big={zero:BigInt(0),one:BigInt(1),two:BigInt(2),eight:BigInt(8),ff:BigInt(255)};function bigintToBytes(number){if(typeof number!=="bigint"){throw new Error("number must be a bigint")}const bytes=[];const negative=number>big.eight}while(number!==(negative?-big.one:big.zero));bytes.reverse();if(negative?bytes[0]<128:bytes[0]>=128){bytes.unshift(negative?255:0)}return bytes}exports.bigintToBytes=bigintToBytes;function bytesToBigint(bytes){const negative=bytes[0]>=128;let number=big.zero;for(let b of bytes){if(negative){b=~b&255}number=(number<128){if((code&55296)===55296){const nextCode=str.charCodeAt(i+1);if((nextCode&56320)!==56320){throw new Error("follow-up utf-16 character does not start with 0xDC00")}i++;const p1=code&1023;const p2=nextCode&1023;code=65536|p1<<10|p2}if(code<2048){const b1=192|code>>6&31;const b2=128|code&63;arr.push(b1,b2)}else if(code<65536){const b1=224|code>>12&15;const b2=128|code>>6&63;const b3=128|code&63;arr.push(b1,b2,b3)}else if(code<2097152){const b1=240|code>>18&7;const b2=128|code>>12&63;const b3=128|code>>6&63;const b4=128|code&63;arr.push(b1,b2,b3,b4)}else{throw new Error(`Cannot convert character ${str.charAt(i)} (code ${code}) to utf-8`)}}else{arr.push(code<128?code:63)}}return new Uint8Array(arr)}}exports.encodeString=encodeString;function decodeString(buffer){if(typeof TextDecoder!=="undefined"){const decoder=new TextDecoder;if(buffer instanceof Uint8Array){return decoder.decode(buffer)}const buf=Uint8Array.from(buffer);return decoder.decode(buf)}else if(typeof Buffer==="function"){if(buffer instanceof Array){buffer=Uint8Array.from(buffer)}if(!(buffer instanceof Buffer)&&"buffer"in buffer&&buffer.buffer instanceof ArrayBuffer){const typedArray=buffer;buffer=Buffer.from(typedArray.buffer,typedArray.byteOffset,typedArray.byteLength)}if(!(buffer instanceof Buffer)){throw new Error("Unsupported buffer argument")}return buffer.toString("utf-8")}else{if(!(buffer instanceof Uint8Array)&&"buffer"in buffer&&buffer["buffer"]instanceof ArrayBuffer){const typedArray=buffer;buffer=new Uint8Array(typedArray.buffer,typedArray.byteOffset,typedArray.byteLength)}if(buffer instanceof Buffer||buffer instanceof Array||buffer instanceof Uint8Array){let str="";for(let i=0;i128){if((code&240)===240){const b1=code,b2=buffer[i+1],b3=buffer[i+2],b4=buffer[i+3];code=(b1&7)<<18|(b2&63)<<12|(b3&63)<<6|b4&63;i+=3}else if((code&224)===224){const b1=code,b2=buffer[i+1],b3=buffer[i+2];code=(b1&15)<<12|(b2&63)<<6|b3&63;i+=2}else if((code&192)===192){const b1=code,b2=buffer[i+1];code=(b1&31)<<6|b2&63;i++}else{throw new Error("invalid utf-8 data")}}if(code>=65536){code^=65536;const p1=55296|code>>10;const p2=56320|code&1023;str+=String.fromCharCode(p1);str+=String.fromCharCode(p2)}else{str+=String.fromCharCode(code)}}return str}else{throw new Error("Unsupported buffer argument")}}}exports.decodeString=decodeString;function concatTypedArrays(a,b){const c=new a.constructor(a.length+b.length);c.set(a);c.set(b,a.length);return c}exports.concatTypedArrays=concatTypedArrays;function cloneObject(original,stack){var _a;if(((_a=original===null||original===void 0?void 0:original.constructor)===null||_a===void 0?void 0:_a.name)==="DataSnapshot"){throw new TypeError(`Object to clone is a DataSnapshot (path "${original.ref.path}")`)}const checkAndFixTypedArray=obj=>{if(obj!==null&&typeof obj==="object"&&typeof obj.constructor==="function"&&typeof obj.constructor.name==="string"&&["Buffer","Uint8Array","Int8Array","Uint16Array","Int16Array","Uint32Array","Int32Array","BigUint64Array","BigInt64Array"].includes(obj.constructor.name)){obj=obj.buffer.slice(obj.byteOffset,obj.byteOffset+obj.byteLength)}return obj};original=checkAndFixTypedArray(original);if(typeof original!=="object"||original===null||original instanceof Date||original instanceof ArrayBuffer||original instanceof path_reference_1.PathReference||original instanceof RegExp){return original}const cloneValue=val=>{if(stack.indexOf(val)>=0){throw new ReferenceError("object contains a circular reference")}val=checkAndFixTypedArray(val);if(val===null||val instanceof Date||val instanceof ArrayBuffer||val instanceof path_reference_1.PathReference||val instanceof RegExp){return val}else if(typeof val==="object"){stack.push(val);val=cloneObject(val,stack);stack.pop();return val}else{return val}};if(typeof stack==="undefined"){stack=[original]}const clone=original instanceof Array?[]:original instanceof partial_array_1.PartialArray?new partial_array_1.PartialArray:{};Object.keys(original).forEach((key=>{const val=original[key];if(typeof val==="function"){return}clone[key]=cloneValue(val)}));return clone}exports.cloneObject=cloneObject;const isTypedArray=val=>typeof val==="object"&&["ArrayBuffer","Buffer","Uint8Array","Uint16Array","Uint32Array","Int8Array","Int16Array","Int32Array"].includes(val.constructor.name);function valuesAreEqual(val1,val2){if(val1===val2){return true}if(typeof val1!==typeof val2){return false}if(typeof val1==="object"||typeof val2==="object"){if(val1===null||val2===null){return false}if(val1 instanceof path_reference_1.PathReference||val2 instanceof path_reference_1.PathReference){return val1 instanceof path_reference_1.PathReference&&val2 instanceof path_reference_1.PathReference&&val1.path===val2.path}if(val1 instanceof Date||val2 instanceof Date){return val1 instanceof Date&&val2 instanceof Date&&val1.getTime()===val2.getTime()}if(val1 instanceof Array||val2 instanceof Array){return val1 instanceof Array&&val2 instanceof Array&&val1.length===val2.length&&val1.every(((item,i)=>valuesAreEqual(val1[i],val2[i])))}if(isTypedArray(val1)||isTypedArray(val2)){if(!isTypedArray(val1)||!isTypedArray(val2)||val1.byteLength===val2.byteLength){return false}const typed1=val1 instanceof ArrayBuffer?new Uint8Array(val1):new Uint8Array(val1.buffer,val1.byteOffset,val1.byteLength),typed2=val2 instanceof ArrayBuffer?new Uint8Array(val2):new Uint8Array(val2.buffer,val2.byteOffset,val2.byteLength);return typed1.every(((val,i)=>typed2[i]===val))}const keys1=Object.keys(val1),keys2=Object.keys(val2);return keys1.length===keys2.length&&keys1.every((key=>keys2.includes(key)))&&keys1.every((key=>valuesAreEqual(val1[key],val2[key])))}return false}exports.valuesAreEqual=valuesAreEqual;class ObjectDifferences{constructor(added,removed,changed){this.added=added;this.removed=removed;this.changed=changed}forChild(key){if(this.added.includes(key)){return"added"}if(this.removed.includes(key)){return"removed"}const changed=this.changed.find((ch=>ch.key===key));return changed?changed.change:"identical"}}exports.ObjectDifferences=ObjectDifferences;function compareValues(oldVal,newVal,sortedResults=false){const voids=[undefined,null];if(oldVal===newVal){return"identical"}else if(voids.indexOf(oldVal)>=0&&voids.indexOf(newVal)<0){return"added"}else if(voids.indexOf(oldVal)<0&&voids.indexOf(newVal)>=0){return"removed"}else if(typeof oldVal!==typeof newVal){return"changed"}else if(isTypedArray(oldVal)||isTypedArray(newVal)){if(!isTypedArray(oldVal)||!isTypedArray(newVal)){return"changed"}const typed1=oldVal instanceof Uint8Array?oldVal:oldVal instanceof ArrayBuffer?new Uint8Array(oldVal):new Uint8Array(oldVal.buffer,oldVal.byteOffset,oldVal.byteLength);const typed2=newVal instanceof Uint8Array?newVal:newVal instanceof ArrayBuffer?new Uint8Array(newVal):new Uint8Array(newVal.buffer,newVal.byteOffset,newVal.byteLength);return typed1.byteLength===typed2.byteLength&&typed1.every(((val,i)=>typed2[i]===val))?"identical":"changed"}else if(oldVal instanceof Date||newVal instanceof Date){return oldVal instanceof Date&&newVal instanceof Date&&oldVal.getTime()===newVal.getTime()?"identical":"changed"}else if(oldVal instanceof path_reference_1.PathReference||newVal instanceof path_reference_1.PathReference){return oldVal instanceof path_reference_1.PathReference&&newVal instanceof path_reference_1.PathReference&&oldVal.path===newVal.path?"identical":"changed"}else if(typeof oldVal==="object"){const isArray=oldVal instanceof Array;const getKeys=obj=>{let keys=Object.keys(obj).filter((key=>!voids.includes(obj[key])));if(isArray){keys=keys.map((v=>parseInt(v)))}return keys};const oldKeys=getKeys(oldVal);const newKeys=getKeys(newVal);const removedKeys=oldKeys.filter((key=>!newKeys.includes(key)));const addedKeys=newKeys.filter((key=>!oldKeys.includes(key)));const changedKeys=newKeys.reduce(((changed,key)=>{if(oldKeys.includes(key)){const val1=oldVal[key];const val2=newVal[key];const c=compareValues(val1,val2);if(c!=="identical"){changed.push({key:key,change:c})}}return changed}),[]);if(addedKeys.length===0&&removedKeys.length===0&&changedKeys.length===0){return"identical"}else{return new ObjectDifferences(addedKeys,removedKeys,sortedResults?changedKeys.sort(((a,b)=>a.key{switch(compareResult){case"identical":return[];case"changed":return[{target:target,prev:prev,val:val}];case"added":return[{target:target,prev:null,val:val}];case"removed":return[{target:target,prev:prev,val:null}];default:{let changes=[];compareResult.added.forEach((key=>changes.push({target:target.concat(key),prev:null,val:val[key]})));compareResult.removed.forEach((key=>changes.push({target:target.concat(key),prev:prev[key],val:null})));compareResult.changed.forEach((item=>{const childChanges=process(target.concat(item.key),item.change,prev[item.key],val[item.key]);changes=changes.concat(childChanges)}));return changes}}};const compareResult=compareValues(oldVal,newVal,sortedResults);return process([],compareResult,oldVal,newVal)}exports.getMutations=getMutations;function getChildValues(childKey,oldValue,newValue){oldValue=oldValue===null?null:oldValue[childKey];if(typeof oldValue==="undefined"){oldValue=null}newValue=newValue===null?null:newValue[childKey];if(typeof newValue==="undefined"){newValue=null}return{oldValue:oldValue,newValue:newValue}}exports.getChildValues=getChildValues;function defer(fn){process_1.default.nextTick(fn)}exports.defer=defer;function getGlobalObject(){var _a;if(typeof globalThis!=="undefined"){return globalThis}if(typeof global!=="undefined"){return global}if(typeof window!=="undefined"){return window}if(typeof self!=="undefined"){return self}return(_a=function(){return this}())!==null&&_a!==void 0?_a:Function("return this")()}exports.getGlobalObject=getGlobalObject}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer)},{"./partial-array":46,"./path-reference":48,"./process":49,buffer:58}],58:[function(require,module,exports){},{}]},{},[6])(6)})); \ No newline at end of file diff --git a/dist/cjs/btree/binary-tree.js b/dist/cjs/btree/binary-tree.js index 320bc376..f3905895 100644 --- a/dist/cjs/btree/binary-tree.js +++ b/dist/cjs/btree/binary-tree.js @@ -605,7 +605,8 @@ class BinaryBPlusTree { (0, utils_1._appendToArray)(bytes, valData); }); // update ext_block_free_length: - (0, binary_1.writeByteLength)(bytes, 4, self._length - bytes.length); + const freeBytes = self._length - bytes.length + 8; // Do not count 8 header bytes + (0, binary_1.writeByteLength)(bytes, 4, freeBytes); const valueListLengthData = (0, binary_1.writeByteLength)([], 0, self.totalValues - 1); await Promise.all([ // write ext_data_block @@ -614,7 +615,7 @@ class BinaryBPlusTree { tree._writeFn(valueListLengthData, self._listLengthIndex), ]); self.totalValues--; - self._freeBytes = self._length - bytes.length; + self._freeBytes = freeBytes; }, }; entry.loadValues = async function loadValues() { @@ -794,7 +795,7 @@ class BinaryBPlusTree { throw new detailed_error_1.DetailedError('write-node-fail', `Failed to write node: ${err.message}`, err); } } - async _writeLeaf(leafInfo) { + async _writeLeaf(leafInfo, options = { addFreeSpace: true }) { (0, assert_1.assert)(leafInfo.entries.every((entry, index, arr) => index === 0 || (0, typesafe_compare_1._isMore)(entry.key, arr[index - 1].key)), 'Leaf entries are not sorted ok'); try { const builder = new binary_tree_builder_1.BinaryBPlusTreeBuilder({ @@ -814,7 +815,7 @@ class BinaryBPlusTree { rebuild: leafInfo.extData.loaded, } : null; - const addFreeSpace = true; + const addFreeSpace = options.addFreeSpace !== false; const writes = []; const bytes = builder.createLeaf({ index: leafInfo.index, @@ -1941,7 +1942,7 @@ class BinaryBPlusTree { if (options.rollbackOnFailure === false) { return; } - return this._writeLeaf(leaf); + return this._writeLeaf(leaf, { addFreeSpace: false }); } else { return this._registerFreeSpace(allocated.index, allocated.length); diff --git a/dist/cjs/btree/binary-tree.js.map b/dist/cjs/btree/binary-tree.js.map index 156af52b..b31ff1cb 100644 --- a/dist/cjs/btree/binary-tree.js.map +++ b/dist/cjs/btree/binary-tree.js.map @@ -1 +1 @@ -{"version":3,"file":"binary-tree.js","sourceRoot":"","sources":["../../../src/btree/binary-tree.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"binary-tree.js","sourceRoot":"","sources":["../../../src/btree/binary-tree.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/storage/index.js b/dist/cjs/storage/index.js index b331b853..29afd19b 100644 --- a/dist/cjs/storage/index.js +++ b/dist/cjs/storage/index.js @@ -104,6 +104,7 @@ class Storage extends acebase_core_1.SimpleEventEmitter { // private _validation = new Map boolean, schema?: SchemaDefinition }>; this._schemas = []; this._indexes = []; + this._annoucedIndexes = new Map(); this.indexes = { /** * Tests if (the default storage implementation of) indexes are supported in the environment. @@ -205,9 +206,18 @@ class Storage extends acebase_core_1.SimpleEventEmitter { if (existingIndex) { return existingIndex; } + else if (this._annoucedIndexes.has(fileName)) { + // Index is already in the process of being added, wait until it becomes availabe + const index = await this._annoucedIndexes.get(fileName); + return index; + } try { - const index = await data_index_1.DataIndex.readFromFile(this, fileName); + // Announce the index to prevent race condition in between reading and receiving the IPC index.created notification + const indexPromise = data_index_1.DataIndex.readFromFile(this, fileName); + this._annoucedIndexes.set(fileName, indexPromise); + const index = await indexPromise; this._indexes.push(index); + this._annoucedIndexes.delete(fileName); return index; } catch (err) { @@ -840,6 +850,9 @@ class Storage extends acebase_core_1.SimpleEventEmitter { else if (type === 'child_removed') { trigger = oldValue !== null && newValue === null; } + if (!trigger) { + return; + } const pathKeys = acebase_core_1.PathInfo.getPathKeys(sub.dataPath); variables.forEach(variable => { // only replaces first occurrence (so multiple *'s will be processed 1 by 1) @@ -848,7 +861,7 @@ class Storage extends acebase_core_1.SimpleEventEmitter { pathKeys[index] = variable.value; }); const dataPath = pathKeys.reduce((path, key) => acebase_core_1.PathInfo.getChildPath(path, key), ''); - trigger && this.subscriptions.trigger(sub.type, sub.subscriptionPath, dataPath, oldValue, newValue, options.context); + this.subscriptions.trigger(sub.type, sub.subscriptionPath, dataPath, oldValue, newValue, options.context); }; const prepareMutationEvents = (currentPath, oldValue, newValue, compareResult) => { const batch = []; diff --git a/dist/cjs/storage/index.js.map b/dist/cjs/storage/index.js.map index a84ee3e0..7666b3d4 100644 --- a/dist/cjs/storage/index.js.map +++ b/dist/cjs/storage/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/cjs/test/issue-225.spec.js b/dist/cjs/test/issue-225.spec.js new file mode 100644 index 00000000..3aae82ed --- /dev/null +++ b/dist/cjs/test/issue-225.spec.js @@ -0,0 +1,90 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tempdb_1 = require("./tempdb"); +describe('issue #225', () => { + let db; + let removeDB; + beforeAll(async () => { + ({ db, removeDB } = await (0, tempdb_1.createTempDB)({ logLevel: 'warn' })); + }); + afterAll(async () => { + await removeDB(); + }); + it('realtime query and indexed deletes', async () => { + // Create indexes + await db.indexes.create('items', 'location'); + await db.indexes.create('items', 'category'); + await db.indexes.create('items', 'status'); + const eventStats = { add: 0, change: 0, remove: 0 }; + // Setup realtime query + const realtimeQuery = db.query('items') + .filter('category', '==', 'main') + .filter('status', '==', 1) + .on('add', event => { + eventStats.add++; + const item = event.snapshot.val(); + console.log(`Added item ${event.ref.key}:`, item); + }) + .on('change', event => { + eventStats.change++; + const item = event.snapshot.val(); + console.log(`Changed item ${event.ref.key}:`, item); + }) + .on('remove', event => { + eventStats.remove++; + console.log(`Removed item ${event.ref.key}`); + }); + // Get initial (no) results + const results = await realtimeQuery.get(); + // Add a bunch of items, should trigger "add" events on realtime query + const TEST_SIZE = 1000; + const itemIds = []; + const locations = ['Amsterdam', 'Cape Town', 'Sydney', 'Miami', 'Toronto', 'Berlin', 'Paris']; + for (let i = 0; i < TEST_SIZE; i++) { + const ref = await db.ref('items').push({ + location: locations[Math.floor(Math.random() * locations.length)], + category: 'main', + status: 1, + }); + itemIds.push(ref.key); + } + // Update every other item to status 2, should trigger 500 "remove" events on realtime query + for (let i = 0; i < itemIds.length; i += 2) { + await db.ref('items').child(itemIds[i]).update({ + status: 2, + }); + } + // Update every 3rd item to location 'Amsterdam', should trigger "change" events on realtime query + for (let i = 0; i < itemIds.length; i += 3) { + await db.ref('items').child(itemIds[i]).update({ + location: 'Amsterdam', + }); + } + // Update every 3rd item to status 3, should trigger some more "remove" events on realtime query + for (let i = 0; i < itemIds.length; i += 3) { + await db.ref('items').child(itemIds[i]).update({ + status: 3, + }); + } + // Remove items with status 1, should trigger all remaining "remove" events on realtime query (0 results left) + await db.query('items').filter('status', '==', 1).remove(); + // Wait for all remove events to fire + console.log('Waiting for all remove events to fire'); + await new Promise(resolve => { + let eventsFired = eventStats.remove; + const check = () => { + if (eventsFired === eventStats.remove) { + // All fired + return resolve(); + } + eventsFired = eventStats.remove; + setTimeout(check, 100); // Schedule next check + }; + setTimeout(check, 1000); // Schedule first check + }); + // Stop live query + await realtimeQuery.stop(); + console.log(`${eventStats.add} added, ${eventStats.change} changed, ${eventStats.remove} removed`); + }, 600000); +}); +//# sourceMappingURL=issue-225.spec.js.map \ No newline at end of file diff --git a/dist/cjs/test/issue-225.spec.js.map b/dist/cjs/test/issue-225.spec.js.map new file mode 100644 index 00000000..d118aed1 --- /dev/null +++ b/dist/cjs/test/issue-225.spec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"issue-225.spec.js","sourceRoot":"","sources":["../../../src/test/issue-225.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/esm/btree/binary-tree.js b/dist/esm/btree/binary-tree.js index 1cefd550..9a52553a 100644 --- a/dist/esm/btree/binary-tree.js +++ b/dist/esm/btree/binary-tree.js @@ -600,7 +600,8 @@ class BinaryBPlusTree { _appendToArray(bytes, valData); }); // update ext_block_free_length: - writeByteLength(bytes, 4, self._length - bytes.length); + const freeBytes = self._length - bytes.length + 8; // Do not count 8 header bytes + writeByteLength(bytes, 4, freeBytes); const valueListLengthData = writeByteLength([], 0, self.totalValues - 1); await Promise.all([ // write ext_data_block @@ -609,7 +610,7 @@ class BinaryBPlusTree { tree._writeFn(valueListLengthData, self._listLengthIndex), ]); self.totalValues--; - self._freeBytes = self._length - bytes.length; + self._freeBytes = freeBytes; }, }; entry.loadValues = async function loadValues() { @@ -787,7 +788,7 @@ class BinaryBPlusTree { throw new DetailedError('write-node-fail', `Failed to write node: ${err.message}`, err); } } - async _writeLeaf(leafInfo) { + async _writeLeaf(leafInfo, options = { addFreeSpace: true }) { assert(leafInfo.entries.every((entry, index, arr) => index === 0 || _isMore(entry.key, arr[index - 1].key)), 'Leaf entries are not sorted ok'); try { const builder = new BinaryBPlusTreeBuilder({ @@ -807,7 +808,7 @@ class BinaryBPlusTree { rebuild: leafInfo.extData.loaded, } : null; - const addFreeSpace = true; + const addFreeSpace = options.addFreeSpace !== false; const writes = []; const bytes = builder.createLeaf({ index: leafInfo.index, @@ -1932,7 +1933,7 @@ class BinaryBPlusTree { if (options.rollbackOnFailure === false) { return; } - return this._writeLeaf(leaf); + return this._writeLeaf(leaf, { addFreeSpace: false }); } else { return this._registerFreeSpace(allocated.index, allocated.length); diff --git a/dist/esm/btree/binary-tree.js.map b/dist/esm/btree/binary-tree.js.map index d400c555..8539d34d 100644 --- a/dist/esm/btree/binary-tree.js.map +++ b/dist/esm/btree/binary-tree.js.map @@ -1 +1 @@ -{"version":3,"file":"binary-tree.js","sourceRoot":"","sources":["../../../src/btree/binary-tree.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"binary-tree.js","sourceRoot":"","sources":["../../../src/btree/binary-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mCAAmC,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAI7C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7H,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7D,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;AAIhC,MAAM,OAAO,0BAA0B;IAInC;;OAEG;IACH,YAAY,QAA6C;QACrD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC1B,CAAC;CACJ;AAED,MAAM,eAAgB,SAAQ,KAAK;IAC/B,gBAAgB,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;CAC1D;AAUD,gEAAgE;AAChE,KAAK,UAAU,IAAI,KAAI,CAAC;AAExB,MAAa,eAAe;IA+BxB;;OAEG;IACH,YAAY,IAsBX;QACG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,YAAY,KAAK,EAAE;YAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACvB,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,IAAI,CAAC,SAAS,GAAG,IAAiC,CAAC;gBACnD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACjF;YACD,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,CAAS,EAAE,MAAc,EAAE,EAAE;gBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;gBACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC;SACL;aACI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;SAC9B;aACI;YACD,MAAM,IAAI,SAAS,CAAC,uEAAuE,CAAC,CAAC;SAChG;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;SAChC;aACI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,YAAY,KAAK,EAAE;YAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;iBACnC;YACL,CAAC,CAAC;SACL;aACI;YACD,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAClE,CAAC,CAAC;SACL;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,EAAE,KAAkB;QAChD,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1D,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,OAAO,IAAI,EAAE;YACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,KAAK,KAAK,IAAI,EAAE;oBAChB,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,GAAG,qCAAqC,CAAC,CAAC;iBACjF;aACJ;YACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACrD;IACL,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAI,QAAQ,CAAC,IAAa;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;QAC/B,wBAAwB;QACxB,2DAA2D;QAC3D,IAAI;IACR,CAAC;IAEO,KAAK,CAAC,SAAS;QACnB,2EAA2E;QAC3E,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,UAAU;QACpB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kDAAkD;QAClH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,kBAAkB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;SACjD;QACD,IAAI,CAAC,IAAI,GAAG;YACR,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,kBAAkB;YAC9B,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;YAC7C,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;YACjD,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;YACpD,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;YACtD,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;YACtD,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;YACpD,SAAS,EAAE,CAAC;YACZ,IAAI,cAAc,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;YACzB,UAAU,EAAE,GAAG;YACf,YAAY,EAAE,EAAE;SACnB,CAAC;QACF,iCAAiC;QACjC,yHAAyH;QACzH,IAAI;QACJ,IAAI,qBAAqB,GAAG,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,qBAAqB,IAAI,CAAC,CAAC;SAAE;QAC5D,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE,qBAAqB,IAAI,CAAC,CAAC;SAAE;QAC3D,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,qBAAqB,IAAI,CAAC,CAAC;SAAE;QAE1D,IAAI,qBAAqB,GAAG,CAAC,EAAE;YAC3B,wEAAwE;YACxE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAAC;YAChD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAE1D,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC,EAAE,CAAC;aACP;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnH,CAAC,IAAI,CAAC,CAAC;aACV;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACvB,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5G,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC;gBAEjC,gBAAgB;gBAChB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAClC,KAAK,EAAE,CAAC;oBACR,IAAI,GAAG,GAAG,EAAE,CAAC;oBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;wBAChC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC;qBACjD;oBACD,KAAK,IAAI,SAAS,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACpC;aACJ;SACJ;QACD,sBAAsB;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAoB;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,8BAA8B;QAChE,MAAM,YAAY,GAAG,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,yCAAyC;QACxF,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;QACvG,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU;QAC1D,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe;QAC7E,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAE7F,2CAA2C;QAC3C,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,iCAAiC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC;YAC1C,IAAI,EAAE,IAAI;YACV,MAAM;YACN,UAAU;YACV,KAAK;YACL,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,KAAK,GAAG,YAAY;YAC/B,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,eAAe;SACxB,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,QAAQ,CAAC,QAAiC,EAAE,MAAoB,EAAE,OAA6B;QACnG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAAE;QACnE,MAAM,IAAI,GAAG,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,4DAA4D;QAE5D,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;QAC3F,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;QAC/F,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,IAAI,QAAQ,CAAC,UAAU,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1D,KAAK,IAAI,CAAC,CAAC;YAEX,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE;gBAC3B,qDAAqD;gBACrD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;oBACrB,OAAO;iBACV;gBAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;gBACzB,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,uBAAuB;gBAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAClB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,IAAI,KAAK,CAAC,OAAO,EAAE;wBACf,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;qBACxC;gBACL,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAC/B,CAAC,CAAC;SACL;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB;QACrD,KAAK,EAAE,CAAC;QAER,MAAM,SAAS,GAAG,GAAG,EAAE;YACnB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;YAC3B,OAAO,MAAM,CAAC,UAAU,CAAC;QAC7B,CAAC,CAAC;QACF,MAAM,cAAc,GAAG,CAAC,KAAwB,EAAE,KAAa,EAAE,EAAE;YAC/D,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC7C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;aACnC;YACD,MAAM,UAAU,GAAG,KAAK,CAAC;YACzB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe;YACjD,mEAAmE;YACnE,IAAI,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE;gBACpC,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,uEAAuE,UAAU,eAAe,CAAC,CAAC;aACrH;YACD,KAAK,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,cAAc;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;gBAClC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aAC/B;YACD,KAAK,IAAI,WAAW,CAAC;YAErB,YAAY;YACZ,MAAM,QAAQ,GAAsB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjC,kBAAkB;gBAClB,gJAAgJ;gBAChJ,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC3D,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;gBAC9B,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,OAAO;gBACH,UAAU,EAAE,IAAI,6BAA6B,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAC9D,UAAU,EAAE,KAAK,GAAG,UAAU;aACjC,CAAC;QACN,CAAC,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACxB,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;YAE5B,2BAA2B;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;gBACrC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC/B,CAAC,CAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,aAAa;YAC5G,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa;gBAC5B,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC;YACR,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;gBAC1B,qCAAqC;gBACrC,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBACpB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;iBACzB;qBACI;oBACD,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;iBACnI;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,UAAU,EAAE;oBACZ,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0DAA0D;iBAClG;qBACI;oBACD,KAAK,IAAI,SAAS,CAAC,CAAC,aAAa;iBACpC;aACJ;iBACI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACzB,oBAAoB;gBACpB,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACtE;iBACI;gBACD,yBAAyB;gBACzB,MAAM,qBAAqB,GAAG,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzD,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;gBAC/H,KAAK,IAAI,CAAC,CAAC;gBACX,IAAI,UAAU,EAAE;oBACZ,sDAAsD;oBACtD,gBAAgB;oBAChB,IAAI,aAAa,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACjD,KAAK,IAAI,CAAC,CAAC;oBACX,MAAM,iBAAiB,GAAG,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC;oBACjF,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;oBACzE,4DAA4D;oBAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;oBAClB,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;wBAC3B,MAAM,EAAE;4BACJ,GAAG;gCACC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;4BAC/B,CAAC;4BACD,GAAG,CAAC,MAAM;gCACN,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;4BACjC,CAAC;yBACJ;qBACJ,CAAC,CAAC;oBACH,KAAK,CAAC,OAAO,GAAG;wBACZ,aAAa,EAAE,KAAK;wBACpB,OAAO,EAAE,CAAC,CAAC;wBACX,UAAU,EAAE,CAAC,CAAC;wBACd,OAAO,EAAE,IAAuC;wBAChD,gBAAgB,EAAE,qBAAqB;wBACvC,IAAI,MAAM;4BACN,IAAI,IAAI,CAAC,aAAa,EAAE;gCAAE,OAAO,IAAI,CAAC,OAAO,CAAC;6BAAE;4BAChD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;wBACpD,CAAC;wBACD,IAAI,SAAS;4BACT,IAAI,IAAI,CAAC,aAAa,EAAE;gCAAE,OAAO,IAAI,CAAC,UAAU,CAAC;6BAAE;4BACnD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;wBACpD,CAAC;wBACD,IAAI,MAAM;4BACN,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;gCAAE,OAAO,IAAI,CAAC,OAAO,CAAC;6BAAE;4BACnD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;wBAC/F,CAAC;wBACD,IAAI,MAAM,CAAC,MAAM;4BACb,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;wBAC1B,CAAC;wBACD,UAAU,EAAE,aAAa;wBACzB,KAAK,EAAE,iBAAiB;wBACxB,IAAI,WAAW,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC;wBAC1C,IAAI,WAAW,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;wBACxC,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC;wBAC9C,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;wBAEjC,KAAK,CAAC,UAAU,CAAC,eAA+B,IAAI;4BAChD,kBAAkB;4BAClB,2BAA2B;4BAC3B,MAAM,IAAI,GAAI,IAAyC,CAAC;4BACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,CAAmB,CAAC;4BAC3E,MAAM,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;4BACjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;4BACjE,IAAI,CAAC,OAAO,GAAG,EAAqC,CAAC;4BACrD,IAAI,KAAK,GAAG,CAAC,CAAC;4BACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gCAClC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gCAC9C,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;gCAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;6BACxC;4BACD,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;4BAChC,IAAI,CAAC,YAAY,EAAE;gCACf,IAAI,CAAC,OAAO,EAAE,CAAC;6BAClB;4BACD,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;gCAC1C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;6BAClF;4BACD,OAAO,IAAI,CAAC,OAAO,CAAC;wBACxB,CAAC;wBAED,KAAK,CAAC,UAAU,CAAC,WAAmC;4BAChD,MAAM,IAAI,GAAI,IAAyC,CAAC;4BACxD,MAAM,QAAQ,GAAG,WAAW,KAAK,IAAI,CAAC;4BACtC,MAAM,YAAY,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;4BAE1E,4BAA4B;4BAC5B,uEAAuE;4BACvE,IAAI;4BACJ,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;4BACxB,cAAc;4BACd,MAAM,IAAI,GAAG,YAAY,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACzD,MAAM,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC5B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,0CAA0C;4BAClG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;4BAC1B,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC5C,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAE/C,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;4BAEpG,IAAI,QAAQ,IAAI,YAAY,EAAE;gCAC1B,OAAO,IAAI,CAAC;6BACf;iCACI;gCACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;6BACzB;wBACL,CAAC;wBAED,eAAe,CAAC,UAAkB;4BAC9B,MAAM,IAAI,GAAI,IAAyC,CAAC;4BACxD,IAAI,KAAK,GAAG,aAAa,CAAC;4BAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;4BAC1B,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;4BACjD,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;4BACxD,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI;4BACjC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;4BAClB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gCAClC,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gCACjD,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;gCAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;6BACxC;4BACD,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;wBACpC,CAAC;wBAED,KAAK,CAAC,QAAQ,CAAC,aAAqC,EAAE,QAA2B;4BAC7E,2CAA2C;4BAE3C,MAAM,IAAI,GAAI,IAAyC,CAAC;4BACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAmB,CAAC;4BAE3D,uDAAuD;4BAEvD,qEAAqE;4BACrE,yCAAyC;4BACzC,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;4BACrF,MAAM,YAAY,GAAG,OAAO,CAAC,sBAAsB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;4BAC7E,IAAI,aAAa,GAAG,KAAK,CAAC;4BAC1B,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;4BACvB,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;gCACvC,kFAAkF;gCAClF,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;oCACxB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;oCAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,qCAAqC;oCACjG,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oCAC/G,MAAM,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;oCAChD,MAAM,YAAY,GAAG,YAAY,GAAG,cAAc,CAAC;oCACnD,OAAO;wCACH,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC,aAAa;wCACxC,MAAM,EAAE,YAAY;wCACpB,SAAS,EAAE,YAAY;qCAC1B,CAAC;gCACN,CAAC,CAAC,EAAE,CAAC;gCACL,IAAI,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oCAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;oCACf,MAAM,IAAI,aAAa,CAAC,0BAA0B,EAAE,mDAAmD,CAAC,CAAC;iCAC5G;qCACI;oCACD,yEAAyE;oCACzE,wDAAwD;oCAExD,wDAAwD;oCACxD,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oCAErC,wCAAwC;oCACxC,MAAM,SAAS,GAAG,aAAa,CAAC;oCAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;oCAC/D,gDAAgD;oCAChD,mFAAmF;oCACnF,6BAA6B;oCAC7B,IAAI;oCACJ,aAAa,GAAG,SAAS,CAAC;oCAC1B,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;oCAC/C,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;oCAC7C,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC;oCAEnD,6FAA6F;oCAC7F,gCAAgC;oCAChC,qBAAqB;oCACrB,+EAA+E;oCAC/E,8BAA8B;oCAC9B,8DAA8D;oCAC9D,wCAAwC;oCACxC,gFAAgF;oCAEhF,sDAAsD;oCACtD,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,4DAA4D;oCAC3G,qMAAqM;oCACrM,aAAa,GAAG,IAAI,CAAC;iCACxB;6BACJ;iCACI;gCACD,2DAA2D;gCAC3D,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;gCAEjF,sCAAsC;gCACtC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,MAAM,CAAC;6BACnD;4BAED,MAAM,YAAY,GAAG;gCACjB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gCACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAG,wBAAwB;6BACxC,CAAC;4BACF,2BAA2B;4BAC3B,eAAe,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;4BACvD,gCAAgC;4BAChC,eAAe,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BAE1D,IAAI,aAAa,EAAE;gCACf,+DAA+D;gCAC/D,gCAAgC;gCAChC,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;gCACrF,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oCAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;oCAChF,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gCAC1C,CAAC,CAAC,CAAC;gCAEH,oBAAoB;gCACpB,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gCAE3C,qDAAqD;gCACrD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;oCAC5E,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;iCACpF;6BACJ;4BAED,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;4BACzC,eAAe,CAAC,mBAAmB,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;4BAE9D,2EAA2E;4BAC3E,oGAAoG;4BACpG,IAAI;gCACA,4VAA4V;gCAC5V,uMAAuM;gCACvM,MAAM,QAAQ,GAAG;oCACb,gGAAgG;oCAChG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC;oCACvC,2BAA2B;oCAC3B,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC;iCAC5D,CAAC;gCAEF,IAAI,aAAa,EAAE;oCACf,kDAAkD;oCAClD,IAAI,UAAU,GAAG,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;oCAC3B,eAAe,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;oCAC9C,6KAA6K;oCAC7K,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;oCAC7D,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oCAEjB,qCAAqC;oCACrC,MAAM,qBAAqB,GACvB,IAAI,CAAC,SAAS;0CACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,+BAA+B;0CACtE,CAAC,CAAC,CAAC,kBAAkB;oCAC3B,UAAU,GAAG,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;oCACvB,eAAe,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oCACvD,0LAA0L;oCAC1L,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;oCACrD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iCACpB;qCACI;oCACD,mBAAmB;oCACnB,4IAA4I;oCAC5I,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;oCACrD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iCACpB;gCACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gCAC5B,0CAA0C;gCAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;gCAEnB,OAAO;gCACP,QAAQ;gCACR,6FAA6F;gCAC7F,8BAA8B;gCAC9B,0EAA0E;gCAC1E,IAAI;gCACJ,gBAAgB;gCAChB,8FAA8F;gCAC9F,IAAI;6BACP;oCACO;gCACJ,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;6BACxB;4BAED,OAAO;4BACP,QAAQ;4BACR,+BAA+B;4BAC/B,IAAI;4BACJ,gBAAgB;4BAChB,iGAAiG;4BACjG,IAAI;wBACR,CAAC;wBAED,KAAK,CAAC,WAAW,CAAC,aAAqC;4BACnD,eAAe;4BACf,wCAAwC;4BAExC,MAAM,IAAI,GAAI,IAAyC,CAAC;4BACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;4BACvC,QAAQ;4BAER,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;4BACxF,IAAI,CAAC,CAAC,KAAK,EAAE;gCAAE,OAAO;6BAAE;4BACxB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;4BAExB,yBAAyB;4BACzB,MAAM,KAAK,GAAG;gCACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gCACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAG,wBAAwB;6BACxC,CAAC;4BAEF,oBAAoB;4BACpB,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;4BAExC,iBAAiB;4BACjB,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;4BACrF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gCACjB,MAAM,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gCAChF,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;4BACnC,CAAC,CAAC,CAAC;4BAEH,gCAAgC;4BAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,8BAA8B;4BACjF,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;4BAErC,MAAM,mBAAmB,GAAG,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;4BACzE,MAAM,OAAO,CAAC,GAAG,CAAC;gCACd,uBAAuB;gCACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;gCAChC,2BAA2B;gCAC3B,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC;6BAC5D,CAAC,CAAC;4BAEH,IAAI,CAAC,WAAW,EAAE,CAAC;4BACnB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;wBAChC,CAAC;qBACJ,CAAC;oBAEF,KAAK,CAAC,UAAU,GAAG,KAAK,UAAU,UAAU;wBACxC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzC,MAAM,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;wBACnC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC;wBAC/E,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;wBAC5C,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;wBAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;wBAClD,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;wBACnB,IAAI,KAAK,GAAG,CAAC,CAAC;wBACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;4BACtC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;4BAC3C,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;4BAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;yBACzC;wBACD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACf,OAAO,KAAK,CAAC,OAAO,CAAC;oBACzB,CAAC,CAAC;oBAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC5B;qBACI;oBACD,MAAM,WAAW,GAAG,EAAE,CAAC;oBACvB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;wBAClC,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;wBAC/B,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBAChC;oBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;iBACrE;aACJ;SACJ;QAED,IAAI,cAAc,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,EAAE;gBAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;gBACnC,MAAM,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBACrD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,sDAAsD,IAAI,CAAC,WAAW,uBAAuB,cAAc,mBAAmB,IAAI,CAAC,SAAS,GAAG,cAAc,EAAE,CAAC,CAAC;gBAC1L,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBACtE,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC;SACL;QACD,IAAI,cAAc,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE;gBACxC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;gBACnC,MAAM,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,IAAI,SAAS,CAAC;gBACd,IAAI;oBACA,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;iBAClD;gBACD,OAAO,GAAG,EAAE;oBACR,IAAI,UAAU,EAAE;wBACZ,sHAAsH;wBACtH,uHAAuH;wBACvH,gFAAgF;wBAChF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,OAAO,GAAG,CAAC,CAAC;wBACjE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;4BAClC,IAAI,IAAI,CAAC,UAAU,EAAE;gCAAE,OAAO,IAAI,CAAC;6BAAE;4BACrC,IAAI;gCACA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;6BACxC;4BACD,OAAO,GAAG,EAAE;gCACR,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,sEAAsE,EAAE,GAAG,CAAC,CAAC;6BACvH;wBACL,CAAC,CAAC,EAAE,CAAC;wBAEL,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;4BAClC,4BAA4B;4BAC5B,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,sDAAsD,WAAW,CAAC,KAAK,mCAAmC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;yBACvK;wBAED,uDAAuD;wBACvD,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;wBAC1F,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;4BAC1B,sEAAsE;4BACtE,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,KAAK,WAAW,CAAC,KAAK,EAAE;gCAC3D,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,4EAA4E,WAAW,CAAC,UAAU,CAAC,YAAY,oBAAoB,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;6BAClM;4BACD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE;gCACpC,0DAA0D;gCAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gCACxD,OAAO,IAAI,CAAC;6BACf;yBACJ;wBAED,MAAM,WAAW,GAAG,KAAK,EAAE,WAAgC,EAAgC,EAAE;4BACzF,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;4BACnF,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;gCACnB,wCAAwC;gCACxC,IAAI,WAAW,CAAC,UAAU,EAAE;oCACxB,4BAA4B;oCAC5B,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oCAC7D,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;oCAC9D,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;oCACvD,OAAO,QAAQ,CAAC;iCACnB;gCACD,OAAO,IAAI,CAAC;6BACf;4BACD,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;4BACjE,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;4BAC1G,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;4BACvD,OAAO,QAAQ,CAAC;wBACpB,CAAC,CAAC;wBAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,WAAgC,EAAE,YAAoB,EAAE,EAAE;4BACtF,IAAI,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE;gCAC3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gCAC3D,IAAI,CAAC,QAAQ,EAAE;oCAAE,OAAO,IAAI,CAAC;iCAAE;gCAC/B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;6BACnE;4BACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC;wBAChH,CAAC,CAAC;wBAEF,gGAAgG;wBAChG,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;wBACrJ,OAAO,WAAW,EAAE;4BAChB,iCAAiC;4BACjC,MAAM,QAAQ,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAK,KAAK,gBAAgB,EAAE,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;4BACxH,IAAI;gCACA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;gCACzG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gCACvC,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gCACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,QAAQ,aAAa,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gCAC5F,OAAO,QAAQ,CAAC;6BACnB;4BACD,OAAO,GAAG,EAAE;gCACR,IAAI,CAAC,KAAK,CAAC,IAAI,CACX,8CAA8C,QAAQ,aAAa,gBAAgB,EAAE,YAAY,IAAI,WAAW,CAAC,YAAY,KAAK,GAAG,CAAC,OAAO,IAAI;oCACjJ,kCAAkC,CACrC,CAAC;gCACF,+BAA+B;gCAC/B,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;6BAC/I;yBACJ;wBACD,gBAAgB;wBAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;wBAClE,OAAO,IAAI,CAAC;qBACf;oBACD,MAAM,GAAG,CAAC;iBACb;gBACD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,kDAAkD,IAAI,CAAC,WAAW,uBAAuB,cAAc,mBAAmB,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC;gBAC1L,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBACtE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,+CAA+C,CAAC,CAAC;gBACjM,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC;SACL;QAED,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,gDAAgD,CAAC,CAAC;QAEzJ,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,QAA6B;QAElD,oBAAoB;QACpB,2DAA2D;QAC3D,wDAAwD;QAExD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAE7I,IAAI;YACA,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC;gBACvC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC9B,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;gBAC3C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBACpC,cAAc;gBACd,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;gBAChC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;aACjC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;gBAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;gBACzF,OAAO,EAAE,QAAQ,CAAC,YAAY;aACjC,EAAE;gBACC,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,QAAQ,CAAC,MAAM;aAC7B,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;YAE7E,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;SACrD;QACD,OAAM,GAAG,EAAE;YACP,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SAC3F;IACL,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,QAA6B,EAAE,UAAsC,EAAE,YAAY,EAAE,IAAI,EAAE;QAChH,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAE7I,IAAI;YACA,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC;gBACvC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC9B,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;gBAC3C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBACpC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;gBACnC,cAAc;gBACd,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;gBAChC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;gBAC9B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;aACnC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO;gBAC5B,CAAC,CAAC;oBACE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;oBAC/B,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS;oBACrC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;iBACnC;gBACD,CAAC,CAAC,IAAI,CAAC;YACX,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC;YACpD,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;gBAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,SAAS,EAAE,QAAQ,CAAC,aAAa;gBACjC,SAAS,EAAE,QAAQ,CAAC,aAAa;gBACjC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,OAAO;aACV,EAAE;gBACC,YAAY;gBACZ,SAAS,EAAE,QAAQ,CAAC,MAAM;gBAC1B,UAAU,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE;oBAC/B,kCAAkC;oBAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;oBACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACpE,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpC,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW,EAAE;wBACjC,MAAM,IAAI,aAAa,CAAC,0BAA0B,EAAE,mCAAmC,CAAC,CAAC;qBAC5F;oBAED,uBAAuB;oBACvB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,yCAAyC;oBAC1F,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBAElC,oBAAoB;oBACpB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAE1B,yBAAyB;oBACzB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAExB,QAAQ;oBACR,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAEnB,kBAAkB;oBAClB,KAAK,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;oBAEnC,iBAAiB;oBACjB,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;oBAElC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBAC1D,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC1B,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACxB,CAAC;aACJ,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChH,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,2CAA2C,CAAC,CAAC;YAE/E,cAAc;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAErB,gCAAgC;YAChC,6BAA6B;YAC7B,sEAAsE;YACtE,4EAA4E;YAE5E,oCAAoC;YACpC,8CAA8C;YAC9C,0DAA0D;YAC1D,UAAU;YAEV,oCAAoC;YACpC,8CAA8C;YAC9C,6DAA6D;YAC7D,UAAU;YACV,IAAI;YAEJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEzC,0BAA0B;YAE1B,OAAO,MAAM,CAAC;SACjB;QACD,OAAM,GAAG,EAAE;YACP,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SAC3F;IACL,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAiC,EAAE,MAAoB;QAC5D,iBAAiB;QACjB,kBAAkB;QAClB,KAAK;QAEL,MAAM,IAAI,GAAG,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;QAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACxB,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEzB,qBAAqB;YACrB,KAAK,CAAC,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;YAC7F,MAAM,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,EAAE,4CAA4C,CAAC,CAAC;YAChF,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,+DAA+D;YACrK,KAAK,CAAC,UAAU,GAAG,KAAK,IAAI,EAAE;gBAC1B,+CAA+C;gBAC/C,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACpC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACpD,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;gBAChC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC;gBAClC,OAAO,aAAa,CAAC;YACzB,CAAC,CAAC;YACF,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C;QACD,qBAAqB;QACrB,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;QAC5F,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,4CAA4C,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,+DAA+D;QACpK,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,EAAE;YACzB,MAAM,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpD,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;YAChC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;YACjC,OAAO,aAAa,CAAC;QACzB,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAmB,IAA4B,EAAE,EAA0C;QACxG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,+DAA+D,CAAC,CAAC;SAC/G;QACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,4BAA4B;QACjI,IAAI;YACA,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;YAClB,IAAI,MAAM,YAAY,OAAO,EAAE;gBAC3B,MAAM,GAAG,MAAM,MAAM,CAAC;aACzB;YACD,OAAO,MAAM,CAAC;SACjB;gBACO;YACJ,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA6B;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAA6B;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;YAC3C,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;SAC5C;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA6B;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAA6B;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;SACtC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAA2B,EAAE,OAA6B;QACrE,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,SAA2B,EAAE,OAA6B;QAC9E,6GAA6G;QAC7G,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;aAAE;YAEhF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9E,IAAI,WAAW,EAAE;gBACb,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;aAC7C;iBACI;gBACD,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;aACtC;SACJ;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,EAAuC,EAAE,KAAqD,EAAE,UAAyH,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;QACvR,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;OAMG;IACK,OAAO,CAAC,EAAuC,EAAE,KAAqD,EAAE,UAAyH,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;QAChS,kBAAkB;QAElB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE;YACvG,yBAAyB;YACzB,MAAM,IAAI,SAAS,CAAC,8CAA8C,EAAE,EAAE,CAAC,CAAC;SAC3E;QACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YAC7D,qIAAqI;YACrI,kDAAkD;YAClD,mDAAmD;YACnD,EAAE,GAAG,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACnC,KAAK,GAAG,SAAS,CAAC;SACrB;QACD,IAAI,KAAK,KAAK,IAAI,EAAE;YAAE,KAAK,GAAG,SAAS,CAAC;SAAE;QAE1C,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,MAAM,OAAO,GAAG;YACZ,OAAO,EAAE,EAAgC;YACzC,IAAI,EAAE,EAAwB;YAC9B,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,EAAqC,EAAE,wDAAwD;SAC1G,CAAC;QAEF,IAAI,eAA0B,CAAC;QAC/B,IAAI,EAAE,YAAY,0BAA0B,EAAE;YAC1C,eAAe,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC9C;QAED,oCAAoC;QACpC,8CAA8C;QAC9C,6CAA6C;QAC7C,2CAA2C;QAC3C,0CAA0C;QAC1C,yCAAyC;QACzC,QAAQ;QACR,gBAAgB;QAChB,IAAI;QACJ,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM;YACvC,2BAA2B;YAC3B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACnC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACrF,OAAO,GAAG,CAAC;YACf,CAAC,EAAE,EAAE,CAAC;YACN,8BAA8B;YAC9B,4CAA4C;YAC5C,oEAAoE;YACpE,kBAAkB;YAClB,6BAA6B;YAC7B,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,aAAa,GAAG,EAAoB,CAAC;QAC3C,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,MAAM,GAAG,GAAG,CAAC,KAA+B,EAAsB,EAAE;YAChE,YAAY,IAAI,KAAK,CAAC,WAAW,CAAC;YAClC,MAAM,aAAa,GAAG,oBAAoB,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,YAAY,0BAA0B,CAAC;YAC5H,IAAI,aAAa,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC7E,gCAAgC;gBAChC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC3C,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;gBACnC,CAAC,CAAC,CAAC;gBACH,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,OAAO,CAAC,CAAC;aACZ;YACD,IAAI,oBAAoB,IAAI,EAAE,YAAY,0BAA0B,EAAE;gBAClE,+BAA+B;gBAC/B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACtB,GAA6C,CAAC,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;gBAClG,CAAC,CAAC,CAAC;aACN;YACD,IAAI,oBAAoB,EAAE;gBACtB,4CAA4C;gBAE5C,gFAAgF;gBAEhF,2BAA2B;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAE,GAA6C,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5H,6FAA6F;gBAC7F,qBAAqB;gBACrB,oDAAoD;gBACpD,iCAAiC;gBACjC,8CAA8C;gBAC9C,wCAAwC;gBACxC,QAAQ;gBACR,IAAI;gBAEJ,8BAA8B;gBAC9B,yFAAyF;gBACzF,qBAAqB;gBACrB,oDAAoD;gBACpD,iCAAiC;gBACjC,8DAA8D;gBAC9D,2CAA2C;gBAC3C,0CAA0C;gBAC1C,4BAA4B;gBAC5B,kFAAkF;gBAClF,gDAAgD;gBAChD,qBAAqB;gBACrB,YAAY;gBACZ,kCAAkC;gBAClC,uDAAuD;gBACvD,qBAAqB;gBACrB,YAAY;gBACZ,QAAQ;gBACR,IAAI;gBAEJ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBAAE,OAAO;iBAAE;gBACpC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACtB,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;aACrC;YACD,IAAI,EAAE,YAAY,0BAA0B,EAAE;gBAC1C,kCAAkC;gBAClC,gCAAgC;gBAChC,oEAAoE;gBACpE,MAAM;gBAEN,iDAAiD;gBACjD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;oBACrC,OAAO,eAAe,CAAC,IAAI,CAAE,GAA6C,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;gBAC5F,CAAC,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBAAE,OAAO;iBAAE;gBAE1C,2CAA2C;gBAC3C,MAAM,eAAe,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,eAAe,YAAY,KAAK,EAAE;oBAClC,wBAAwB;oBACxB,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBAC1B,eAAe,CAAC,GAAG,CAAE,GAA6C,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBACvF,CAAC,CAAC,CAAC;oBAEH,8BAA8B;oBAC9B,KAAK,CAAC,MAAM,GAAG,eAAe,KAAK,KAAK,CAAC,MAAM;wBAC3C,CAAC,CAAC,EAAE,CAAC,6CAA6C;wBAClD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBAEvE,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;oBAC1C,IAAI,OAAO,CAAC,MAAM,EAAE;wBAChB,wCAAwC;wBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;4BAC9B,uEAAuE;4BACvE,IAAI,eAAe,CAAC,IAAI,CAAE,GAA6C,CAAC,EAAE,CAAC,EAAE;gCACzE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gCAC5B,CAAC,EAAE,CAAC;gCACJ,OAAO,CAAC,MAAM,EAAE,CAAC;6BACpB;yBACJ;qBACJ;oBACD,IAAI,OAAO,CAAC,OAAO,EAAE;wBACjB,+CAA+C;wBAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gCAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gCAC5B,uEAAuE;gCACvE,IAAI,eAAe,CAAC,IAAI,CAAE,GAA6C,CAAC,EAAE,CAAC,EAAE;oCACzE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oCAC1B,CAAC,EAAE,CAAC;oCACJ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;wCAAE,OAAO,CAAC,MAAM,EAAE,CAAC;qCAAE;oCAC1C,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;wCAC3B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wCAC7B,CAAC,EAAE,CAAC;wCACJ,OAAO,CAAC,OAAO,EAAE,CAAC;wCAClB,IAAI,OAAO,CAAC,IAAI,EAAE;4CACd,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;yCAC3D;qCACJ;iCACJ;6BACJ;yBACJ;qBACJ;oBAED,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;oBACrC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;oBAEpC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;wBAAE,OAAO;qBAAE;iBAC7C;gBAED,6EAA6E;gBAC7E,6EAA6E;gBAC7E,8EAA8E;gBAC9E,qEAAqE;gBACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAA0C,CAAC;oBAC9E,IAAI,MAAM,GAAG,KAAK,CAAC;oBACnB,IAAI,OAAO,CAAC,MAAM,EAAE;wBAChB,oDAAoD;wBACpD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,GAA6C,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;wBACrH,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC;qBACvB;yBACI,IAAI,OAAO,CAAC,OAAO,EAAE;wBACtB,uBAAuB;wBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BACjC,kDAAkD;4BAClD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,GAA6C,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;4BACnH,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC;4BACpB,IAAI,MAAM,EAAE;gCAAE,MAAM;6BAAE;yBACzB;qBACJ;oBACD,IAAI,MAAM,EAAE;wBACR,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC1B,CAAC,EAAE,CAAC;qBACP;iBACJ;gBACD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBAAE,OAAO;iBAAE;aAC7C;YACD,IAAI,OAAO,CAAC,OAAO,EAAE;gBACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC/B;YACD,IAAI,OAAO,CAAC,IAAI,EAAE;gBACd,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAChC;YACD,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACzD;YACD,IAAI,OAAO,CAAC,KAAK,EAAE;gBACf,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW,CAAC;aAC3C;YACD,UAAU,IAAI,KAAK,CAAC,WAAW,CAAC;QACpC,CAAC,CAAC;QAEF,yBAAyB;QACzB,sBAAsB;QACtB,6BAA6B;QAC7B,2KAA2K;QAC3K,sBAAsB;QACtB,KAAK;QACL,MAAM,GAAG,GAAG,GAAG,EAAE;YACb,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;qBAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;aAC5B;iBACI;gBACD,OAAO,OAAO,CAAC;aAClB;QACL,CAAC,CAAC;QAEF,IAAI,EAAE,YAAY,0BAA0B,EAAE;YAC1C,8CAA8C;YAC9C,yBAAyB;YACzB,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,sFAAsF;oBACtF,+BAA+B;oBAC/B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,4BAA4B;iBAC3C;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,OAAO,IAAI,CAAC,OAAO,EAAE;yBAChB,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC1B;qBACI;oBACD,OAAO,GAAG,EAAE,CAAC,CAAC,2BAA2B;iBAC5C;YACL,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;iBACpC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;aACI,IAAI,CAAC,GAAG,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAClC,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,EAAE,KAAK,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;wBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBAAE;yBAC/D,IAAI,EAAE,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;wBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBAAE;yBAC5D;wBAAE,IAAI,GAAG,IAAI,CAAC;wBAAC,MAAM;qBAAE;iBAC/B;gBACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;oBACvB,OAAO,IAAI,CAAC,OAAO,EAAE;yBAChB,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC1B;qBACI;oBACD,OAAO,GAAG,EAAE,CAAC,CAAC,0BAA0B;iBAC3C;YACL,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;iBACpC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;aACI,IAAI,CAAC,GAAG,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAClC,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,EAAE,KAAK,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;wBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBAAE;yBAC/D,IAAI,EAAE,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;wBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBAAE;iBACpE;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,OAAO,IAAI,CAAC,OAAO,EAAE;yBAChB,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC1B;qBACI;oBACD,OAAO,GAAG,EAAE,CAAC,CAAC,0BAA0B;iBAC3C;YACL,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAyB,EAAE,cAAc,CAAC;iBAC3D,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;aACI,IAAI,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAyB,EAAE,cAAc,CAAC;iBAC3D,IAAI,CAAC,IAAI,CAAC,EAAE;gBACT,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB;gBAC3F,IAAI,KAAK,EAAE;oBACP,GAAG,CAAC,KAAK,CAAC,CAAC;iBACd;gBACD,OAAO,GAAG,EAAE,CAAC,CAAC,2BAA2B;YAC7C,CAAC,CAAC,CAAC;SACV;aACI,IAAI,EAAE,KAAK,IAAI,EAAE;YAClB,yBAAyB;YACzB,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;wBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBAAE,CAAC,qBAAqB;iBAC3E;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,OAAO,IAAI,CAAC,OAAO,EAAE;yBAChB,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC1B;qBACI;oBACD,OAAO,GAAG,EAAE,CAAC,CAAC,2BAA2B;iBAC5C;YACL,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;iBACpC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;aACI,IAAI,EAAE,KAAK,MAAM,EAAE;YACpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;aAClF;YACD,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B;YAC/F,MAAM,WAAW,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;YAC3E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE;wBAC/B,GAAG,CAAC,KAAK,CAAC,CAAC;qBACd;iBACJ;gBACD,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,IAAI,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC9C,4FAA4F;oBAC5F,iEAAiE;oBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;oBACtD,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC;iBACzE;gBACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;oBACvB,OAAO,IAAI,CAAC,OAAO,EAAE;yBAChB,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC1B;qBACI;oBACD,OAAO,GAAG,EAAE,CAAC;iBAChB;YACL,CAAC,CAAC;YACF,IAAI,aAAa,KAAK,CAAC,EAAE;gBACrB,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;qBACpC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC1B;iBACI;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC;qBAC7C,IAAI,CAAC,WAAW,CAAC,CAAC;aAC1B;SACJ;aACI,IAAI,EAAE,KAAK,OAAO,EAAE;YACrB,yBAAyB;YACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;aACnF;YACD,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;YAC3E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE;wBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBAAE;iBACtD;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,OAAO,IAAI,CAAC,OAAO,EAAE;yBAChB,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC1B;qBACI;oBACD,OAAO,GAAG,EAAE,CAAC,CAAC,2BAA2B;iBAC5C;YACL,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;iBACpC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;aACI,IAAI,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE;gBAC3B,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;aAChF;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,OAAO,IAAI,EAAE;oBACT,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,yBAAyB;oBACnG,IAAI,KAAK,EAAE;wBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBAAE;oBAC1B,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,EAAE;wBACZ,OAAO,GAAG,EAAE,CAAC,CAAC,2BAA2B;qBAC5C;yBACI,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;wBAClE,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;qBACtD;oBACD,qDAAqD;iBACxD;YACL,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC;iBAC3C,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;aACI,IAAI,EAAE,KAAK,KAAK,EAAE;YACnB,yBAAyB;YACzB,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE;gBAC3B,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;aACjF;YACD,MAAM,IAAI,GAAG,KAAK,CAAC;YACnB,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;wBAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBAAE,CAAC,kCAAkC;iBAC9G;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,OAAO,IAAI,CAAC,OAAO,EAAE;yBAChB,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC1B;qBACI;oBACD,OAAO,GAAG,EAAE,CAAC,CAAC,0BAA0B;iBAC3C;YACL,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;iBACpC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;aACI,IAAI,EAAE,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE;gBAC3B,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAC;aACrF;YACD,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,MAAM,EAAE;gBACd,MAAM,IAAI,GAAG,GAAG,CAAC;gBACjB,GAAG,GAAG,MAAM,CAAC;gBACb,MAAM,GAAG,IAAI,CAAC;aACjB;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;iBACxC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACT,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;oBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC9B,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;4BAAE,GAAG,CAAC,KAAK,CAAC,CAAC;yBAAE;wBACxF,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;4BAAE,IAAI,GAAG,IAAI,CAAC;4BAAC,MAAM;yBAAE;qBACvD;oBACD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBACvB,OAAO,GAAG,EAAE,CAAC,CAAC,2BAA2B;qBAC5C;yBACI;wBACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;qBAC3C;gBACL,CAAC,CAAC;gBACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;SACV;aACI,IAAI,EAAE,KAAK,UAAU,EAAE;YACxB,qCAAqC;YACrC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE;gBAC3B,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;aACtF;YACD,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,MAAM,EAAE;gBACd,MAAM,IAAI,GAAG,GAAG,CAAC;gBACjB,GAAG,GAAG,MAAM,CAAC;gBACb,MAAM,GAAG,IAAI,CAAC;aACjB;YACD,qDAAqD;YACrD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;iBACpC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACT,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;oBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC9B,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;4BAAE,GAAG,CAAC,KAAK,CAAC,CAAC;yBAAE;6BAC1C;4BAAE,IAAI,GAAG,IAAI,CAAC;4BAAC,MAAM;yBAAE;qBAC/B;oBACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;wBACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;qBAC3C;gBACL,CAAC,CAAC;gBACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,EAAE;gBACX,iDAAiD;gBAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC/C,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,EAAE;gBACT,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;oBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC9B,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;4BAAE,GAAG,CAAC,KAAK,CAAC,CAAC;yBAAE;qBAC/C;oBACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBACf,OAAO,GAAG,EAAE,CAAC,CAAC,2BAA2B;qBAC5C;yBACI;wBACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;qBAC3C;gBACL,CAAC,CAAC;gBACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;SACV;aACI,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,UAAU,EAAE;YAC5C,yBAAyB;YACzB,IAAI,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,EAAE;gBAC5B,MAAM,IAAI,SAAS,CAAC,2EAA2E,CAAC,CAAC;aACpG;YACD,MAAM,EAAE,GAAG,KAAK,CAAC;YACjB,MAAM,WAAW,GAAG,CAAC,IAAyB,EAA0B,EAAE;gBACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC9C,IAAI,CAAC,OAAO,IAAI,EAAE,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,KAAK,UAAU,CAAC,EAAE;wBAClE,GAAG,CAAC,KAAK,CAAC,CAAC;qBACd;iBACJ;gBACD,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,OAAO,IAAI,CAAC,OAAO,EAAE;yBAChB,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC1B;qBACI;oBACD,OAAO,GAAG,EAAE,CAAC,CAAC,2BAA2B;iBAC5C;YACL,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;iBACpC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1B;aACI;YACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;SACtD;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,SAA2B,EAAE,OAAyD;QAC7F,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,SAA2B,EAAE,OAAyD;QAC9F,4GAA4G;QAC5G,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,eAAe,EAAE,CAAC;SAAE;QAChD,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;YAC1B,OAAO,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;SAClC;aACI,IAAI,KAAK,EAAE;YACZ,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;aACpC;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;gBACrB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;SACtB;aACI;YACD,OAAO,IAAI,CAAC;SACf;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAwB,EAAE,OAAqD;QACzF,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAwB,EAAE,UAAuD,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;QAChI,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;gBAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtH,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5C,OAAO,OAAO,CAAC,YAAY;gBACvB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;gBAC3E,CAAC,CAAC,OAAO,CAAC;SACjB;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC;QAE9B,gBAAgB;QAChB,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;YAC3B,gEAAgE;YAChE,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9F;QAED,iBAAiB;QACjB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC;QAEhC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;YACtC,gEAAgE;YAChE,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9F;QAED,6DAA6D;QAC7D,MAAM,OAAO,GAAG,EAAuE,EAAE,OAAO,GAAG,EAAwB,CAAC;QAC5H,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;gBACjD,mCAAmC;gBACnC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;aAC9E;iBACI;gBACD,SAAS;gBACT,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACrB;SACJ;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG;YACjC,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;YAC/C,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5F,6FAA6F;gBAC7F,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aAC7B;YAED,MAAM,QAAQ,GAAG,EAAqB,CAAC;YACvC,GAAG;gBACC,MAAM,SAAS,GAAG,GAAG,CAAC;gBACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtH,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;oBAChE,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;wBACjC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;qBACxD;gBACL,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;aACtB,QACM,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;YACtE,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC/B;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,eAAe,EAAE,CAAC;SAAE;QAChD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC9D;QACD,MAAM,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QAC5B,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,QAAQ;IAChD,CAAC;IAED,KAAK,CAAC,oBAAoB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,qBAAqB;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,eAAe,EAAE,CAAC;SAAE;QAChD,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,eAAe;YACf,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC9D,oBAAoB;YACpB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;SACvF,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAkB,EAAE,UAAkB,EAAE,SAAiB;QAC9E,eAAe;QACf,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,oBAAoB;QACpB,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,MAAc;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,eAAe,EAAE,CAAC;SAAE;QAChD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAAE;QACnC,IAAI,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAC/D,qDAAqD;YACrD,kFAAkF;YAClF,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;YAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB;SAClH;aACI;YACD,oFAAoF;YACpF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAElC,2CAA2C;YAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;oBAC3C,YAAY;oBACZ,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,yBAAyB;oBACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc;iBAC3C;qBACI;oBAAE,CAAC,EAAE,CAAC;iBAAE;aAChB;SACJ;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,eAAe,EAAE,CAAC;SAAE;QAChD,oGAAoG;QACpG,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;SAAE;QAClI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC;QACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,aAAqB;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,eAAe,EAAE,CAAC;SAAE;QAChD,IAAI,aAAa,KAAK,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SAAE;QACnE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAAE;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC;QAC3E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;SACf;aACI;YACD,8CAA8C;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB;YAC7E,IAAI,WAAW,GAAG,QAAQ,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;aAC1E;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,aAAa,EAAE;gBACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;iBACvC;qBACI;oBACD,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,qBAAqB,aAAa,yCAAyC,CAAC,CAAC;iBACjI;aACJ;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC;YACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;SAC3C;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAAC,IAAyB,EAAE,UAO1C;QACA,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,iBAAiB,EAAE,IAAI;QACvB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACjB;QACG,mBAAmB;QAEnB,0BAA0B;QAE1B,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9G,MAAM,aAAa,GAAG,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACjE,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACpF,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;QAC1D,MAAM,WAAW,GAAG,aAAa,GAAG,oBAAoB,CAAC,CAAC,uDAAuD;QAEjH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,eAAe,EAAE,CAAC;SAAE;QAChD,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,aAAa,EAAE;YAC7G,2FAA2F;YAC3F,0EAA0E;YAC1E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACtB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aAC7B;YACD,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC;YAC7B,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,aAAa,CAAC;YACxC,qEAAqE;YACrE,2CAA2C;YAC3C,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAChC;QAED,mDAAmD;QACnD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACtB,oBAAoB;gBACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;aACnC;iBACI,IAAI,CAAC,SAAS,EAAE;gBACjB,uCAAuC;gBACvC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAChC;SACJ;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,qDAAqD;YACrD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC5B;QAED,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,IAAI;YACA,IAAI,SAA6C,CAAC;YAClD,IAAI,WAAW,EAAE;gBACb,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC1E,IAAI,WAAW,GAAG,SAAS,EAAE;oBACzB,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC5E,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,+BAA+B;iBAC1F;qBACI,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACpB,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;oBAC1C,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBAChC,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;iBAC1D;qBACI;oBACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAE,4BAA4B;iBAChG;aACJ;iBACI;gBACD,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAqB;aAC/E;YAED,kBAAkB;YAClB,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;gBACpC,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,oBAAoB;gBAC/C,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC;YACH,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAC3C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAC3C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACvC,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,OAAO,CAAC,OAAO,GAAG;oBACd,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,oBAAoB;oBAC5B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAChF,IAAI,EAAE,IAAI;iBACb,CAAC;aACL;YAED,uCAAuC;YACvC,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;aACjD;iBACI,IAAI,IAAI,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;aAChD;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAErD,0HAA0H;YAC1H,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAEtD,oBAAoB;YACpB,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;YAEpB,kBAAkB;YAClB,EAAE,CAAC,KAAK,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBAC9C,gMAAgM;oBAEhM,eAAe;oBACf,6DAA6D;oBAC7D,yGAAyG;oBACzG,+BAA+B;oBAE/B,OAAO,GAAG,MAAM,CAAC,MAAM,cAAc,CAAC;gBAC1C,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,gCAAgC;oBAChC,IAAI,WAAW,EAAE;wBACb,IAAI,OAAO,CAAC,iBAAiB,KAAK,KAAK,EAAE;4BAAE,OAAO;yBAAE;wBACpD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;qBACzD;yBACI;wBACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;qBACrE;gBACL,CAAC;aACJ,CAAC,CAAC;YAEH,wCAAwC;YACxC,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,MAAM,QAAQ,GAAG;oBACb,gBAAgB,EAAE,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,gBAAgB;oBAC3E,SAAS,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC;oBAChF,SAAS,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC;iBACtF,CAAC;gBACF,EAAE,CAAC,KAAK,CAAC;oBACL,IAAI,EAAE,yBAAyB;oBAC/B,MAAM,EAAE,KAAK,IAAI,EAAE;wBACf,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;oBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACjB,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;iBACJ,CAAC,CAAC;aACN;YAED,oCAAoC;YACpC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,MAAM,QAAQ,GAAG;oBACb,gBAAgB,EAAE,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,gBAAgB;oBAC3E,SAAS,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC;oBAChF,SAAS,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC;iBACtF,CAAC;gBACF,EAAE,CAAC,KAAK,CAAC;oBACL,IAAI,EAAE,yBAAyB;oBAC/B,MAAM,EAAE,KAAK,IAAI,EAAE;wBACf,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;oBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACjB,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;iBACJ,CAAC,CAAC;aACN;YAED,sBAAsB;YACtB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,EAAE,CAAC,KAAK,CAAC;oBACL,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,KAAK,IAAI,EAAE;wBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC5C,CAAC;oBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACjB,oDAAoD;wBACpD,IAAI,IAAI,CAAC,WAAW,EAAE;4BAClB,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;yBAC9C;6BACI;4BACD,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;yBAC7C;wBACD,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;4BACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;gCAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;6BACtE;iCACI;gCACD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;6BACrE;yBACJ;wBACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC5C,CAAC;iBACJ,CAAC,CAAC;aACN;YAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aACzD;YAED,0BAA0B;YAE1B,OAAO,OAAO,CAAC;SAClB;QACD,OAAM,GAAG,EAAE;YACP,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,2BAA2B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SACjG;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAyB,EAAE,UAAmE,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE;QACnJ,yCAAyC;QACzC,sFAAsF;QACtF,wCAAwC;QAExC,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;YAC9C,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;SAC/G;QAED,IAAI;YACA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,MAAM,IAAI,aAAa,CAAC,6BAA6B,EAAE,qDAAqD,CAAC,CAAC;aACjH;YAED,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC5D,sCAAsC;gBACtC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1F,wFAAwF;gBACxF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5E,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5E,IAAI,YAAY,EAAE;oBACd,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;iBACnC;qBACI,IAAI,YAAY,EAAE;oBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;iBACnC;qBACI,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE;oBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBAC3B;qBACI,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE;oBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBAC3B;qBACI;oBACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;iBAC7E;aACJ;YAED,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,EAAE;gBACtE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC7D;YACD,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;gBACpD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,2FAA2F;aAClJ;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,kCAAkC;YAErE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAE9D,yIAAyI;YAEzI,kBAAkB;YAClB,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;gBACpC,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,aAAa;gBACrB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC;YAEH,oDAAoD;YACpD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAEzC,eAAe;YACf,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC/D,8FAA8F;YAC9F,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC;YACnD,oCAAoC;YACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACvC,mCAAmC;YACnC,2DAA2D;YAC3D,gEAAgE;YAChE,0DAA0D;YAC1D,sCAAsC;YACtC,MAAM;YACN,2EAA2E;YAE3E,iDAAiD;YACjD,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC;gBAC1C,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;gBAC5B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;gBAC9B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;aAC7B,CAAC,CAAC;YACH,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAC1D,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACxD,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzD,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC3C,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;gBAC3B,gDAAgD;gBAChD,iGAAiG;gBACjG,oGAAoG;gBACpG,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAO,wBAAwB;gBACxE,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,oDAAoD;gBAClG,sCAAsC;gBACtC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAC,CAAC,CAAC;gBACxE,MAAM,YAAY,GAAG,IAAI,wBAAwB,CAAC,WAAW,CAAC,CAAC;gBAC/D,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,gFAAgF;gBAC3H,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;aAChE;iBACI;gBACD,wCAAwC;gBACxC,MAAM,YAAY,GAAG,IAAI,wBAAwB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,qDAAqD;gBAC/H,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;aAChD;YAED,oBAAoB;YACpB,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;YAEpB,kBAAkB;YAClB,EAAE,CAAC,KAAK,CAAC;gBACL,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACpC,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,gCAAgC;oBAChC,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtE,CAAC;gBACD,8EAA8E;aACjF,CAAC,CAAC;YAEH,qBAAqB;YACrB,EAAE,CAAC,KAAK,CAAC;gBACL,IAAI,EAAE,sBAAsB;gBAC5B,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;oBACpC,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;oBACnC,IAAI,CAAC,YAAY,OAAO,EAAE;wBACtB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBACjC,CAAC,CAAC,CAAC;qBACN;oBACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;aACJ,CAAC,CAAC;YAEH,uBAAuB;YACvB,EAAE,CAAC,KAAK,CAAC;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,0FAA0F;oBAC1F,uDAAuD;oBACvD,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC1C,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;YACvC,0BAA0B;YAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SAC1C;QACD,OAAO,GAAG,EAAE;YACR,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,yBAAyB,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SAC7F;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAyB,EAAE,UAAoG,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE;QACpM,yCAAyC;QACzC,+BAA+B;QAC/B,qFAAqF;QAErF,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;YAC9C,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;SAC/G;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC5D,4BAA4B;YAC5B,gGAAgG;YAEhG,0BAA0B;YAC1B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5H,qFAAqF;YACrF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,uIAAuI;YACpN,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,uIAAuI;YACpN,IAAI,YAAY,EAAE;gBACd,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;aACnC;iBACI,IAAI,YAAY,EAAE;gBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;aACnC;iBACI,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE;gBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aAC3B;iBACI,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE;gBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aAC3B;iBACI;gBACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;gBAC3E,0EAA0E;gBAC1E,4JAA4J;gBAC5J,IAAI;aACP;SACJ;QAED,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,EAAE;YACtE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO;gBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAG,wCAAwC;gBAChF,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAE,qCAAqC;SACpH;QAED,8DAA8D;QAC9D,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YACnC,uBAAuB;YACvB,KAAK,CAAC,IAAI,CACN,IAAI,CAAC,OAAO,EAAE;iBACT,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACb,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAChC,CAAC,CAAC,CACT,CAAC;SACL;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACzC,iDAAiD;YACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;SACnC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC5B;QAED,IAAI;YACA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9D,wIAAwI;YACxI,kFAAkF;YAClF,gGAAgG;YAChG,6DAA6D;YAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO;iBAC9B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;iBAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;YAC/I,iFAAiF;YACjF,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAExJ,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,uCAAuC;YAC5H,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,kCAAkC;YAErE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,oBAAoB,CAAC,CAAC;YAErF,yIAAyI;YAEzI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAElC,kBAAkB;YAClB,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;gBACpC,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,aAAa;gBACrB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,oBAAoB,GAAG,CAAC;aACvC,CAAC,CAAC;YACH,IAAI,oBAAoB,GAAG,CAAC,EAAE;gBAC1B,OAAO,CAAC,OAAO,GAAG;oBACd,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,oBAAoB;oBAC5B,SAAS,EAAE,oBAAoB,GAAG,mBAAmB;oBACrD,IAAI,EAAE,IAAI;iBACb,CAAC;aACL;YAED,mDAAmD;YACnD,+DAA+D;YAC/D,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;YACnC,IAAI,QAAQ,EAAE;gBACV,QAAQ,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;aAC1C;YAED,eAAe;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACvC,2EAA2E;YAE3E,iDAAiD;YACjD,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC;gBAC1C,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;gBAC5B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;gBAC9B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;aAC7B,CAAC,CAAC;YACH,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAC1D,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACxD,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzD,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC3C,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;gBAC3B,gDAAgD;gBAChD,iGAAiG;gBACjG,oGAAoG;gBACpG,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAO,wBAAwB;gBACxE,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAI,wBAAwB;gBACxE,sCAAsC;gBACtC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAC,CAAC,CAAC;gBACxE,MAAM,YAAY,GAAG,IAAI,wBAAwB,CAAC,WAAW,CAAC,CAAC;gBAC/D,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,gFAAgF;gBAC3H,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;aAChE;iBACI;gBACD,wCAAwC;gBACxC,MAAM,YAAY,GAAG,IAAI,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxE,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;aAChD;YAED,oBAAoB;YACpB,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;YAEpB,kBAAkB;YAClB,EAAE,CAAC,KAAK,CAAC;gBACL,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACpC,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,gCAAgC;oBAChC,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtE,CAAC;gBACD,8EAA8E;aACjF,CAAC,CAAC;YAEH,qBAAqB;YACrB,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC;gBACjB,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;oBACpC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;aACJ,CAAC,CAAC;YAEH,qBAAqB;YACrB,EAAE,CAAC,KAAK,CAAC;gBACL,IAAI,EAAE,sBAAsB;gBAC5B,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;oBACpC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnD,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,iDAAiD;oBACjF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;aACJ,CAAC,CAAC;YAEH,uBAAuB;YACvB,EAAE,CAAC,KAAK,CAAC;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACxC,oEAAoE;gBACxE,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,0FAA0F;oBAC1F,uDAAuD;oBACvD,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC1C,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;YACvD,0BAA0B;YAC1B,OAAO,OAAO,CAAC;SAClB;QACD,OAAM,GAAG,EAAE;YACP,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,yBAAyB,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SAC7F;IACL,CAAC;IAED,sBAAsB;IACtB,0DAA0D;IAC1D,6CAA6C;IAC7C,iDAAiD;IACjD,6BAA6B;IAC7B,uCAAuC;IACvC,sDAAsD;IACtD,QAAQ;IACR,iEAAiE;IACjE,gCAAgC;IAChC,kDAAkD;IAClD,oDAAoD;IACpD,uFAAuF;IACvF,QAAQ;IACR,8CAA8C;IAC9C,+BAA+B;IAC/B,4CAA4C;IAC5C,+DAA+D;IAC/D,yDAAyD;IACzD,QAAQ;IACR,sDAAsD;IACtD,yCAAyC;IACzC,qBAAqB;IACrB,iCAAiC;IACjC,uEAAuE;IACvE,gGAAgG;IAChG,+EAA+E;IAC/E,iDAAiD;IACjD,mDAAmD;IACnD,oDAAoD;IACpD,+EAA+E;IAC/E,uJAAuJ;IACvJ,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB;IACpB,6CAA6C;IAC7C,gBAAgB;IAChB,4BAA4B;IAC5B,kJAAkJ;IAClJ,gBAAgB;IAChB,YAAY;IACZ,6DAA6D;IAC7D,QAAQ;IACR,+CAA+C;IAC/C,IAAI;IAEJ,KAAK,CAAC,GAAG,CAAC,GAAqB,EAAE,aAAqC,EAAE,QAA4B;QAChG,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAqB,EAAE,aAAqC,EAAE,QAA4B;QACjG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;SAC1B;QACD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACrF,IAAI,GAAG,EAAE;YACL,MAAM,GAAG,CAAC;SACb;QACD,MAAM,UAAU,GAAG,IAAI,6BAA6B,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,4EAA4E,CAAC,CAAC;SAC5H;QACD,IAAI;YACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACzB,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,0DAA0D,CAAC,CAAC;aAChH;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7E,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACpB,kCAAkC;gBAClC,IAAI,UAAU,IAAI,CAAC,EAAE;oBACjB,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,6BAA6B,GAAG,6BAA6B,CAAC,CAAC;iBAClH;gBAED,MAAM,GAAG,IAAI,CAAC;aACjB;iBACI;gBACD,IAAI,UAAU,IAAI,CAAC,EAAE;oBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACvC,IAAI,KAAK,CAAC,OAAO,EAAE;wBACf,IAAI;4BACA,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;yBAChE;wBACD,OAAM,GAAG,EAAE;4BACP,yEAAyE;4BACzE,oBAAoB;4BACpB,kGAAkG;4BAElG,IAAI,GAAG,CAAC,IAAI,KAAK,0BAA0B,EAAE;gCACzC,MAAM,GAAG,CAAC;6BACb;4BAED,MAAM,cAAc,GAAG;gCACnB,QAAQ,EAAE,KAAK;gCACf,WAAW,EAAE,IAAI;gCACjB,YAAY,EAAE,CAAC,IAAyB,EAAE,EAAE;oCACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe;oCACnF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,6BAA6B,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;gCAClF,CAAC;6BACJ,CAAC;4BACF,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;yBACxD;qBACJ;oBAED,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACjC;qBACI;oBACD,MAAM,GAAG,IAAI,CAAC;iBACjB;aACJ;YAED,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI;oBACA,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACtC;gBACD,OAAO,GAAG,EAAE;oBACR,wCAAwC;oBACxC,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC,CAAC,4DAA4D;oBAC9I,IAAI;wBACA,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;4BACjC,QAAQ,EAAE,CAAC,YAAY;4BACvB,WAAW,EAAE,YAAY;4BACzB,iBAAiB,EAAE,KAAK,EAAE,6CAA6C;yBAC1E,CAAC,CAAC;qBACN;oBACD,OAAM,GAAG,EAAE;wBACP,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,2BAA2B,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;qBACvG;iBACJ;aACJ;YAED,kDAAkD;YAClD,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAE9D,YAAY;YACZ,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACnF,MAAM,WAAW,GAAG,iBAAiB,KAAK,CAAC,CAAC,CAAC;YAC7C,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;iBACI;gBACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;aACpD;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACjD,IAAI;oBACA,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACtC;gBACD,OAAO,GAAG,EAAE;oBACR,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAAE;wBAC3D,MAAM,GAAG,CAAC;qBACb;oBAED,4CAA4C;oBAC5C,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;wBACjC,QAAQ,EAAE,IAAI;wBACd,WAAW,EAAE,IAAI,CAAC,UAAU;wBAC5B,iBAAiB,EAAE,KAAK,EAAE,8CAA8C;qBAC3E,CAAC,CAAC;iBACN;aACJ;YAED,gDAAgD;YAEhD,MAAM,OAAO,GAAG,GAAG,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1C,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,wCAAwC;gBACxC,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,mBAAmB,GAAG,sCAAsC,CAAC,CAAC;aACnH;YAED,aAAa;YACb,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5H;QACD,OAAO,GAAG,EAAE;YACR,MAAM,IAAI,aAAa,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SAC5F;QACD,gBAAgB;QAChB,2EAA2E;QAC3E,2CAA2C;QAC3C,uGAAuG;QACvG,kCAAkC;QAClC,KAAK;QACL,kBAAkB;QAClB,iDAAiD;QACjD,+BAA+B;QAC/B,iDAAiD;QACjD,YAAY;QACZ,uBAAuB;QACvB,SAAS;QACT,gCAAgC;QAChC,oCAAoC;QACpC,wDAAwD;QACxD,MAAM;QACN,kBAAkB;QAClB,+DAA+D;QAC/D,uDAAuD;QACvD,8CAA8C;QAC9C,KAAK;QACL,qBAAqB;QACrB,6BAA6B;QAC7B,6BAA6B;QAC7B,6BAA6B;QAC7B,MAAM;IACV,CAAC;IAED,MAAM;IACN,gEAAgE;IAChE,MAAM;IACN,8BAA8B;IAC9B,6EAA6E;IAC7E,IAAI;IAEJ,KAAK,CAAC,QAAQ,CAAC,UAAiD;QAC5D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrB,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,2JAA2J,CAAC,CAAC;SAC3M;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO;SACV;QACD,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;YACpF,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,+CAA+C;YACrI,IAAI,GAAG,EAAE;gBAAE,MAAM,GAAG,CAAC;aAAE;QAC3B,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;YACxE,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,+CAA+C;YACvJ,IAAI,GAAG,EAAE;gBAAE,MAAM,GAAG,CAAC;aAAE;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACzB,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,0DAA0D,CAAC,CAAC;SAChH;QAED,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,2BAA2B;QAC3B,wBAAwB;QACxB,IAAI;YACA,mBAAmB;YACnB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1D,yBAAyB;YACzB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,IAAI,GAAyB,EAAE,CAAC;YAEpC,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;gBACxB,8BAA8B;gBAC9B,qDAAqD;gBACrD,oBAAoB;gBACpB,QAAQ;gBACR,MAAM;gBACN,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;oBAChD,qCAAqC;oBACrC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;oBAChE,yCAAyC;oBACzC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;iBAChE;qBACI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClD,4CAA4C;oBAC5C,IAAI;wBACA,yCAAyC;wBACzC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;qBAC/B;oBACD,OAAO,GAAG,EAAE;wBACR,4DAA4D;wBAC5D,2CAA2C;wBAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;4BAC1B,QAAQ,EAAE,IAAI;4BACd,WAAW,EAAE,IAAI;4BACjB,iBAAiB,EAAE,KAAK,EAAE,8CAA8C;yBAC3E,CAAC,CAAC;qBACN;iBACJ;qBACI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzC,cAAc;oBACd,0CAA0C;oBAC1C,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBAChC;qBACI;oBACD,iFAAiF;oBACjF,6HAA6H;oBAC7H,yFAAyF;oBACzF,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBAC/B;YACL,CAAC,CAAC;YAEF,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC9B,aAAa;gBACb,qBAAqB;gBACrB,wCAAwC;gBACxC,4CAA4C;gBAC5C,KAAK;gBACL,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;gBAE1E,2CAA2C;gBAC3C,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;oBAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;wBAChD,OAAO,KAAK,CAAC;qBAChB;oBACD,mFAAmF;oBACnF,MAAM,mBAAmB,GAAG,CAAC,IAA+C,EAAW,EAAE;wBACrF,IAAI,IAAI,CAAC,WAAW,EAAE;4BAClB,mEAAmE;4BACnE,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;yBAC7C;6BACI,IAAI,IAAI,CAAC,UAAU,EAAE;4BACtB,+DAA+D;4BAC/D,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gCAChE,OAAO,KAAK,CAAC,CAAC,yBAAyB;6BAC1C;4BACD,oBAAoB;4BACpB,OAAO,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;yBAC/C;6BACI;4BACD,0CAA0C;4BAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gCACrD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;6BAC1D;4BACD,OAAO,IAAI,CAAC;yBACf;oBACL,CAAC,CAAC;oBACF,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC,CAAC,EAAE,CAAC;gBACL,IAAI,CAAC,eAAe,EAAE;oBAClB,yCAAyC;oBAEzC,QAAQ;oBACR,MAAM,QAAQ,EAAE,CAAC;oBACjB,IAAI;oBACJ,gBAAgB;oBAChB,qCAAqC;oBACrC,IAAI;oBAEJ,gBAAgB;oBAChB,UAAU,GAAG,EAAE,CAAC;oBAChB,IAAI,GAAG,EAAE,CAAC;oBACV,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBACpC;gBACD,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEpB,0BAA0B;gBAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAEvC,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACnB,kBAAkB;oBAElB,IAAI,CAAC,KAAK,EAAE;wBACR,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,sBAAsB,GAAG,yCAAyC,CAAC,CAAC;wBAC7G,kDAAkD;qBACrD;yBACI;wBACD,4BAA4B;wBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;wBACnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;4BACX,8CAA8C;4BAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;wBAC9C,CAAC,CAAC,CAAC;wBACH,+CAA+C;wBAC/C,+DAA+D;wBAC/D,uEAAuE;wBACvE,gBAAgB;wBAChB,IAAI;qBACP;iBACJ;qBACI,IAAI,IAAI,KAAK,KAAK,EAAE;oBACrB,IAAI,KAAK,EAAE;wBACP,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,6BAA6B,GAAG,6BAA6B,CAAC,CAAC;qBAClH;yBACI;wBACD,gBAAgB;wBAChB,MAAM,KAAK,GAAG,IAAI,6BAA6B,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;wBACzE,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;wBAEzD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;wBACnF,MAAM,WAAW,GAAG,iBAAiB,KAAK,CAAC,CAAC,CAAC;wBAC7C,IAAI,WAAW,EAAE;4BACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBAC5B;6BACI;4BACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;yBACpD;wBACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;qBACxE;iBACJ;qBACI,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACxB,IAAI,CAAC,KAAK,EAAE;wBACR,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,sBAAsB,GAAG,yCAAyC,CAAC,CAAC;qBAChH;yBACI;wBACD,wCAAwC;wBACxC,+EAA+E;wBAC/E,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;wBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;qBACnD;iBACJ;aACJ;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,MAAM,QAAQ,EAAE,CAAC;aACpB;YACD,mBAAmB;SACtB;QACD,OAAO,GAAG,EAAE;YACR,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;YAC/B,0BAA0B;YAC1B,MAAM,GAAG,CAAC,CAAC,wFAAwF;SACtG;QACD,YAAY;QACZ,iCAAiC;QACjC,+CAA+C;QAC/C,+DAA+D;QAC/D,2EAA2E;QAC3E,gDAAgD;QAChD,wBAAwB;QACxB,YAAY;QACZ,QAAQ;QACR,IAAI;IACR,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAqB,EAAE,aAAsC;QACtE,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAqB,EAAE,aAAsC;QACvE,8EAA8E;QAC9E,IAAI;YACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAEvC,wCAAwC;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACzB,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,0DAA0D,CAAC,CAAC;aAChH;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,CAAC,UAAU,EAAE;gBAAE,OAAO;aAAE;YAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,KAAK,CAAC,EAAE;gBAC1G,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aACtC;iBACI,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;gBACvC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aACtE;iBACI;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;gBACtH,IAAI,CAAC,CAAC,UAAU,EAAE;oBAAE,OAAO;iBAAE;gBAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aACzD;YACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9C,uEAAuE;gBAEvE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtC,iFAAiF;oBACjF,MAAM,IAAI,aAAa,CAAC,YAAY,EAAE,kFAAkF,CAAC,CAAC;iBAC7H;gBAED,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACvC;YACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACtC;QACD,OAAO,GAAG,EAAE;YACR,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,qBAAqB,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SAClG;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAyB;QACvC,IAAI;YACA,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,gEAAgE,CAAC,CAAC,CAAC,8BAA8B;YAChK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,8BAA8B,CAAC,CAAC;YAElE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAErD,oBAAoB;YACpB,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;YAEpB,uEAAuE;YACvE,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,MAAM,QAAQ,GAAG;oBACb,gBAAgB,EAAE,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,gBAAgB;oBAC3E,SAAS,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC;oBAChF,SAAS,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;iBAC3F,CAAC;gBACF,EAAE,CAAC,KAAK,CAAC;oBACL,IAAI,EAAE,yBAAyB;oBAC/B,MAAM,EAAE,KAAK,IAAI,EAAE;wBACf,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;oBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACjB,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;iBACJ,CAAC,CAAC;aACN;YAED,uEAAuE;YACvE,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,MAAM,QAAQ,GAAG;oBACb,gBAAgB,EAAE,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,gBAAgB;oBAC3E,SAAS,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC;oBAChF,SAAS,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;iBAC3F,CAAC;gBACF,EAAE,CAAC,KAAK,CAAC;oBACL,IAAI,EAAE,yBAAyB;oBAC/B,MAAM,EAAE,KAAK,IAAI,EAAE;wBACf,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;oBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACjB,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,CAAC;iBACJ,CAAC,CAAC;aACN;YAED,sBAAsB;YACtB,MAAM,cAAc,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;gBACxC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY;aAC7C,CAAC;YACF,mDAAmD;YACnD,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC3E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;aACvD;iBACI;gBACD,8CAA8C;gBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;aACzD;YAED,EAAE,CAAC,KAAK,CAAC;gBACL,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,KAAK,IAAI,EAAE;oBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC;gBACD,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACjB,oDAAoD;oBACpD,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;oBAC3D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACtD,0BAA0B;SAC7B;QACD,OAAO,GAAG,EAAE;YACR,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,0BAA0B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SAC/F;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAqB,EAAE,gBAAwC,EAAE,oBAA6C,EAAE,WAA+B;QACxJ,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAqB,EAAE,gBAAwC,EAAE,oBAA6C,EAAE,WAA+B;QACzJ,IAAI;YACA,+EAA+E;YAC/E,IAAI,oBAAoB,KAAK,IAAI,EAAE;gBAAE,oBAAoB,GAAG,SAAS,CAAC;aAAE;YACxE,MAAM,aAAa,GAAG,IAAI,uBAAuB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YACjF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACvC,wCAAwC;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,CAAC,UAAU,EAAE;gBACd,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,mBAAmB,GAAG,cAAc,CAAC,CAAC;aAClF;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACpB,KAAK,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,CAAC;aAClC;iBACI,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;gBAClD,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,2EAA2E,CAAC,CAAC;aACnI;iBACI;gBACD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,CAAC;gBAC1G,IAAI,CAAC,CAAC,UAAU,EAAE;oBACd,MAAM,IAAI,aAAa,CAAC,0BAA0B,EAAE,oDAAoD,GAAG,KAAK,CAAC,CAAC;iBACrH;gBACD,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC;aAC5C;YACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACtC;QACD,OAAO,GAAG,EAAE;YACR,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,mCAAmC,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;SAClH;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,UAAiD;QAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAiD;QAChE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,8BAA8B;YAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE;gBACpC,MAAM,CAAC,KAAK,EAAE,CAAC;aAClB;SACJ;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACpC;QAED,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI;gBACA,QAAO,EAAE,CAAC,IAAI,EAAE;oBACZ,KAAK,KAAK,CAAC,CAAC;wBACR,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;wBACvD,MAAM;qBACT;oBACD,KAAK,QAAQ,CAAC,CAAC;wBACX,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;wBAC7C,MAAM;qBACT;oBACD,KAAK,QAAQ,CAAC,CAAC;wBACX,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAC3G,MAAM;qBACT;iBACJ;aACJ;YACD,OAAO,GAAG,EAAE;gBACR,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;aACb;SACJ;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,UAAkB;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB;QACnC,MAAM,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjG,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,OAAO,IAAI,EAAE;YACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1G,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACrD;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAoB,EAAE,OAcnC;QACG,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAoB,EAAE,UAQjC;QACA,cAAc,EAAE,CAAC;QACjB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,IAAI;QACnB,kBAAkB,EAAE,IAAI;QACxB,yBAAyB,EAAE,CAAC;QAC5B,UAAU,EAAE,KAAK;KACpB;QACG,MAAM,IAAI,GAA6B,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAA6B,CAAC;YAC5G,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B;QACxD,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAA6B,CAAC;gBAC5G,OAAO,MAAM,CAAC,GAAG,CAAW,CAAC;YACjC,CAAC,CAAC;YACF,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,CAAC;QAEd,IAAI,CAAC,CAAC,MAAM,YAAY,YAAY,CAAC,EAAE;YACnC,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,qDAAqD,CAAC,CAAC;SACtG;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,+BAA+B;YAC/B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,gCAAgC;SAC5D;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1C,sEAAsE;QAEtE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QACtE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC;QACxD,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC;QAClE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QAClJ,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,EAAE;YAC5C,OAAO,CAAC,cAAc,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;SAC9D;QAED,IAAI,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACjD,IAAI,OAAO,CAAC,kBAAkB,IAAI,iBAAiB,GAAG,GAAG,EAAE;YACvD,2CAA2C;YAC3C,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC;SAC1E;QACD,OAAO,CAAC,cAAc,CAAC,cAAc,GAAG,iBAAiB,CAAC;QAC1D,mFAAmF;QACnF,uCAAuC;QAEvC,gDAAgD;QAChD,kEAAkE;QAClE,MAAM,SAAS,GAAG;YACd,oBAAoB;YACpB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;YACjB,IAAI,kBAAkB;gBAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,gBAAgB;gBAChB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7D,CAAC;SACJ,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,GAAqB,EAAE,EAAE;YACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC;aAAE;YACjE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC;aAAE;YACnD,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;gBAAE,OAAO,CAAC,CAAC;aAAE;YAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBACzB,6BAA6B;gBAC7B,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;aACpC;QACL,CAAC,CAAC;QACF,qBAAqB;QACrB,gEAAgE;QAChE,IAAI;YACA,MAAM,gBAAgB,GAAG,KAAK,EAAE,cAAsB,EAAE,EAAE;gBACtD,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAE/B,MAAM,aAAa,GAAG,EAAE,CAAC;gBACzB,IAAI,wBAAwB,GAAG,CAAC,CAAC;gBAEjC,wCAAwC;gBACxC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtC,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,OAAO,IAAI,EAAE;oBACT,IAAI,CAAC,wBAAwB,IAAI,EAAE,EAAE,CAAC,CAAC;oBACvC,eAAe;oBACf,gGAAgG;oBAChG,gDAAgD;oBAEhD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC3B,4EAA4E;wBAC5E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACpE,SAAS;qBACZ;oBAED,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC9C,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;oBAC7F,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC;oBACzC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEnG,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,wBAAwB,KAAK,cAAc,EAAE;wBAC3E,qFAAqF;wBACrF,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACxC,wBAAwB,GAAG,CAAC,CAAC;qBAChC;oBAED,IAAI,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE;wBAClE,oCAAoC;wBACpC,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;qBACnD;yBACI;wBACD,0CAA0C;wBAC1C,IAAI,QAAQ,GAAG,cAAc,GAAG,wBAAwB,CAAC;wBACzD,8BAA8B;wBAC9B,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAC5C,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;wBACvC,wDAAwD;wBACxD,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;wBAC1D,OAAO,wBAAwB,GAAG,cAAc,EAAE;4BAC9C,sBAAsB;4BACtB,QAAQ,IAAI,cAAc,CAAC;4BAC3B,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BACxC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;4BACvC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;yBAC7D;qBACJ;oBAED,iEAAiE;oBACjE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;iBACvE;gBACD,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAC7B,OAAO,aAAa,CAAC;YACzB,CAAC,CAAC;YAEF,IAAI,QAAQ,GAAwB,IAAI,CAAC;YACzC,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB;;;eAGG;YACH,MAAM,UAAU,GAAG,KAAK,EAAE,CAAS,EAAuC,EAAE;gBACxE,0DAA0D;gBAC1D,IAAI,aAAa,KAAK,CAAC,EAAE;oBACrB,IAAI,CAAC,kBAAkB,CAAC,CAAC;iBAC5B;gBACD,IAAI,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;gBACzC,IAAI;oBACA,MAAM,IAAI,GAAG,QAAQ;wBACjB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;wBACtE,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;oBAEjC,IAAI,IAAI,EAAE;wBACN,qCAAqC;wBACrC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;4BACzC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;yBAC7B;wBACD,QAAQ,GAAG,IAAI,CAAC;wBAChB,SAAS,CAAC,SAAS,EAAE,CAAC;wBACtB,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;wBAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;4BAC3C,4EAA4E;4BAC5E,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;yBAC/C;wBACD,OAAO,IAAI,CAAC,OAAO,CAAC;qBACvB;yBACI;wBACD,OAAO,EAAE,CAAC;qBACb;iBACJ;wBACO;oBACJ,IAAI,CAAC,iBAAiB,aAAa,EAAE,EAAE,CAAC,CAAC;oBACzC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,8BAA8B;iBAC1D;YACL,CAAC,CAAC;YAEF,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACzB,MAAM,eAAe,CAAC,MAAM,CAAC;gBACzB,gBAAgB;gBAChB,UAAU;gBACV,MAAM;gBACN,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,iBAAiB;gBACjB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC5B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBACpC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,yBAAyB,EAAE,OAAO,CAAC,yBAAyB;gBAC5D,KAAK,EAAE,IAAI,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEvB,OAAO,CAAC,cAAc,CAAC,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC;YAC3D,OAAO,CAAC,cAAc,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;YAC7D,OAAO,CAAC,cAAc,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;YAE3D,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAC,+BAA+B;YAEpE,0BAA0B;SAC7B;QACD,OAAO,GAAG,EAAE;YACR,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;SAChF;gBACO;YACJ,IAAI,CAAC,KAAK,CAAC,CAAC;YACZ,cAAc;YACd,2BAA2B;YAC3B,+EAA+E;YAC/E,iHAAiH;YACjH,gGAAgG;YAChG,gGAAgG;YAChG,IAAI;SACP;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAwBnB;QACG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAElC,IAAI,OAAO,OAAO,CAAC,iBAAiB,KAAK,QAAQ,EAAE;YAAE,OAAO,CAAC,iBAAiB,GAAG,GAAG,CAAC;SAAE;QACvF,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;YAAE,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC;SAAE;QACzE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;QAC1F,MAAM,cAAc,GAAG,cAAc,CAAC;QAEtC,IAAI;YACA,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YACrE,qFAAqF;YACrF,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;YACzC,OAAO,CAAC,cAAc,CAAC,UAAU,GAAG,WAAW,CAAC;YA+BhD,IAAI,eAAe,GAAkD,aAAa,CAAC;YACnF,MAAM,MAAM,GAAiC,EAAE,CAAC;YAChD,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,uBAAuB;gBACvB,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAA6C,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;oBAC1G,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;oBACvC,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;oBACxC,MAAM,MAAM,GACR,KAAK,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,2BAA2B;2BACjD,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,cAAc,CAAC,6BAA6B;2BAC3E,CAAC,WAAW,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,6DAA6D;oBAEtJ,IAAI,MAAM,EAAE;wBACR,gBAAgB;wBAChB,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK;4BACxD,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB;4BACjC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;wBAC9C,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC;wBAC3B,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC;wBACjC,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;4BACxB,iBAAiB;4BACjB,WAAW,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;4BAChE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;yBAC3B;wBACD,mBAAmB;qBACtB;yBACI;wBACD,gBAAgB;wBAChB,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK;4BACxD,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB;4BACjC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;wBAC9C,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;wBACvD,iBAAiB;qBACpB;oBACD,OAAO,KAAK,CAAC;gBACjB,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxD,MAAM,CAAC,IAAI,CAAC,eAAwC,CAAC,CAAC;aACzD;YAED,OAAO,CAAC,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7C,OAAO,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,cAAc,CAAC,cAAc,GAAG,CAAC,CAAC;YAE1C,uFAAuF;YACvF,sFAAsF;YAEtF,uBAAuB;YACvB,YAAY;YACZ,gBAAgB;YAChB,gBAAgB;YAChB,2EAA2E;YAC3E,qCAAqC;YAErC,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC;gBACvC,UAAU,EAAE,OAAO,CAAC,QAAQ;gBAC5B,UAAU,EAAE,OAAO,CAAC,cAAc;gBAClC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,UAAU,EAAE,iBAAiB;gBAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;aACjC,CAAC,CAAC;YAEH,gBAAgB;YAChB,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,+BAA+B;YAC/B,MAAM,WAAW,GAAG,EAAc,CAAC;YACnC,IAAI,iBAAiB,GAAG,CAAC,CAAC;YAE1B,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE5B,2CAA2C;YAC3C,oDAAoD;YACpD,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,EAAE;gBACV,CAAC,EAAE,CAAC;gBACJ,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,MAAM,GAAuB,EAAE,CAAC;gBACtC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,gBAAgB;oBACpC,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAC5B;wBACI,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;wBACpE,OAAO,EAAE,CAAC;qBACb,EACD,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAC1E,CAAC;oBACF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;oBAC/B,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;oBACtB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC7B;YAED,kBAAkB;YAClB,MAAM,cAAc,GAA+B,EAAE,CAAC;YACtD,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,gBAAgB,GAAG,CAAC,CAAC;YACzB,IAAI,mBAAmB,GAAG,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,KAAK,EAAE,OAAmC,EAAE,EAAE;gBAC5D,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;oBACpD,sBAAsB;oBACtB,SAAS,GAAG,IAAI,CAAC;iBACpB;gBAED,oJAAoJ;gBACpJ,8IAA8I;gBAC9I,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC7B,uIAAuI;gBAEvI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM,UAAU,GAAG,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC;gBAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,EACrE,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,CAC1C,CAAC;gBACF,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChE,SAAS,GAAG,KAAK,CAAC;gBAClB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;gBACxB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;gBACtC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE;gBACrC,MAAM,WAAW,GAAG,aAAa,CAAC,gBAAgB,GAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC;gBACZ,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;oBACpC,aAAa;oBACb,IAAI,QAAQ,EAAE;wBACV,kEAAkE;wBAClE,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;qBACtC;yBACI;wBACD,OAAO,CAAC,6BAA6B;qBACxC;iBACJ;qBACI;oBACD,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;oBAC1F,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;wBACtB,yBAAyB;wBACzB,oCAAoC;wBACpC,mEAAmE;wBACnE,OAAO;qBACV;oBACD,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;iBACrD;gBAED,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;gBACtC,OAAO,CAAC,cAAc,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;gBAExD,gBAAgB,EAAE,CAAC;gBACnB,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;gBAEzB,cAAc;gBACd,IAAI,cAAc,CAAC,MAAM,IAAI,cAAc,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBACpF,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;iBACzB;YACL,CAAC,CAAC;YAEF,MAAM,cAAc,GAAG,KAAK,EAAE,OAAmC,EAAE,EAAE;gBACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;iBAC/B;gBACD,wDAAwD;gBAExD,8IAA8I;gBAC9I,yJAAyJ;gBACzJ,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;gBAEhC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACtE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;gBACzE,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACpE,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAE9B,gBAAgB;YAChB,+BAA+B;YAC/B,qEAAqE;YACrE,oDAAoD;YACpD,yDAAyD;YACzD,0BAA0B;YAC1B,2BAA2B;YAC3B,+CAA+C;YAC/C,4DAA4D;YAC5D,uEAAuE;YACvE,0DAA0D;YAC1D,kCAAkC;YAClC,6CAA6C;YAC7C,uDAAuD;YACvD,qEAAqE;YACrE,+EAA+E;YAC/E,4BAA4B;YAC5B,wBAAwB;YACxB,oBAAoB;YACpB,iBAAiB;YACjB,aAAa;YACb,8CAA8C;YAC9C,iCAAiC;YACjC,oDAAoD;YACpD,mHAAmH;YACnH,qEAAqE;YACrE,aAAa;YACb,mEAAmE;YACnE,KAAK;YAEL,gDAAgD;YAChD,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;gBAC5B,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC;gBAChD,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;aACvC;iBACI;gBACD,+GAA+G;gBAC/G,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,yBAAyB,IAAI,CAAC,CAAC,GAAG,cAAc,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC;gBACjM,sDAAsD;gBACtD,UAAU,IAAI,SAAS,CAAC;aAC3B;YAED,iBAAiB;YACjB,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,mBAAmB;YACpD,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YAC9B,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAE7B,OAAO,CAAC,cAAc,CAAC,UAAU,GAAG,UAAU,CAAC;YAC/C,OAAO,CAAC,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;YAE7C,0BAA0B;YAC1B,MAAM,aAAa,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,8BAA8B;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC;YAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY;oBAC/B,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC/B;YAED,oCAAoC;YACpC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YAEnB,mBAAmB;YACnB,MAAM,aAAa,GAAG;gBAClB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;aAC1B,CAAC;YAEF,2DAA2D;YAC3D,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC5B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACjB,IAAI,KAAK,KAAK,CAAC,EAAE;wBACb,+BAA+B;wBAC/B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACnD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BACzB,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;wBACzD,CAAC,CAAC,CAAC;qBACN;yBACI;wBACD,uCAAuC;wBACvC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;wBAC7D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BACzB,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;wBACnE,CAAC,CAAC,CAAC;qBACN;oBACD,mBAAmB;oBACnB,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAC5B;wBACI,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;wBACrF,OAAO,EAAE,IAAI,CAAC,YAAY;qBAC7B,EACD,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CACtE,CAAC;oBACF,iCAAiC;oBACjC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SACpC;QACD,OAAO,GAAG,EAAE;YACR,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;SACxF;IACL,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAoBxE;QACG,SAAS;QACT,4DAA4D;QAC5D,mBAAmB;QACnB,mBAAmB;QACnB,6FAA6F;QAE7F,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC1B,MAAM,gBAAgB,GAAG,KAAK,EAAE,cAAsB,EAAE,EAAE;YACtD,OAAO,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;YAExC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,aAAa,GAAG,EAAE,CAAC;YACzB,OAAO,IAAI,EAAE;gBACT,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;gBACtC,IAAI;oBACA,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC7C,IAAI,OAAO,CAAC,cAAc,CAAC,YAAY,GAAG,cAAc,KAAK,CAAC,EAAE;wBAC5D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACpC,kBAAkB;wBAClB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACxB,MAAM,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;qBAC7C;yBACI;wBACD,gCAAgC;wBAChC,MAAM,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;qBAC7C;iBACJ;gBACD,OAAO,GAAG,EAAE;oBACR,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;wBAAE,MAAM;qBAAE;oBAClC,MAAM,GAAG,CAAC;iBACb;aACJ;YACD,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;YAC5B,OAAO,aAAa,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE;YACnC,iBAAiB;YACjB,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,aAAa;YAC7C,OAAO,IAAI,EAAE;gBACT,IAAI;oBACA,qBAAqB;oBACrB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,qCAAqC;oBAEvF,YAAY;oBACZ,MAAM,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAC5C,MAAM,KAAK,GAAG,IAAI,wBAAwB,CACtC,CAAC,CAAC,KAAK,EACP,EAAE,CACL,CAAC;oBACF,IAAI,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC;oBACzB,qBAAqB;oBACrB,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3D,KAAK,IAAI,CAAC,CAAC;oBACX,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;wBACjC,oBAAoB;wBACpB,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBAC3D,KAAK,IAAI,CAAC,CAAC;wBACX,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;wBACrD,KAAK,IAAI,WAAW,CAAC;wBACrB,4CAA4C;wBAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;wBACrC,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU;wBAC5D,YAAY;wBACZ,IAAI,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC;wBAC5B,MAAM,QAAQ,GAAsB,EAAE,CAAC;wBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAClD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;4BACtC,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;4BACtD,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;4BAChC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;yBAClC;wBACD,MAAM,KAAK,GAAG,IAAI,6BAA6B,CAC3C,aAAa,EACb,QAAQ,CACX,CAAC;wBACF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC5B;oBACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;wBACrB,MAAM;qBACT;iBACJ;gBACD,OAAM,GAAG,EAAE;oBACP,OAAO;oBACP,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;wBAAE,MAAM;qBAAE;oBAClC,MAAM,GAAG,CAAC;iBACb;aACJ;YACD,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;QAEF,OAAO,eAAe,CAAC,MAAM,CAAC;YAC1B,gBAAgB;YAChB,UAAU;YACV,MAAM;YACN,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK;SACR,CAAC,CAAC;IACP,CAAC;;AA/0HM,0BAAU,GAAG,6BAA6B,CAAC;AAC3C,oCAAoB,GAAG,mCAAmC,CAAC;SAFzD,eAAe"} \ No newline at end of file diff --git a/dist/esm/ipc/socket.js b/dist/esm/ipc/socket.js index 8b6b2feb..4dad0e54 100644 --- a/dist/esm/ipc/socket.js +++ b/dist/esm/ipc/socket.js @@ -37,7 +37,7 @@ export class IPCSocketPeer extends AceBaseIPCPeer { if (!isMaster) { // Try starting IPC service if it is not running yet. // Use maxIdleTime 0 to allow tests to remove database files when done, make this configurable! - const service = spawn('node', [/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1] + '/service/start.js', dbFile, '--loglevel', storage.debug.level, '--maxidletime', '0'], { detached: true, stdio: 'ignore' }); + const service = spawn('node', [`${process.platform === 'win32' ? '' : '/'}${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}` + '/service/start.js', dbFile, '--loglevel', storage.debug.level, '--maxidletime', '0'], { detached: true, stdio: 'ignore' }); service.unref(); // Process is detached and allowed to keep running after we exit. Do not keep a reference to it, possibly preventing app exit. // For testing: // startServer(dbFile, { diff --git a/dist/esm/storage/index.js b/dist/esm/storage/index.js index ac6f392c..c4ea7507 100644 --- a/dist/esm/storage/index.js +++ b/dist/esm/storage/index.js @@ -99,6 +99,7 @@ export class Storage extends SimpleEventEmitter { // private _validation = new Map boolean, schema?: SchemaDefinition }>; this._schemas = []; this._indexes = []; + this._annoucedIndexes = new Map(); this.indexes = { /** * Tests if (the default storage implementation of) indexes are supported in the environment. @@ -200,9 +201,18 @@ export class Storage extends SimpleEventEmitter { if (existingIndex) { return existingIndex; } + else if (this._annoucedIndexes.has(fileName)) { + // Index is already in the process of being added, wait until it becomes availabe + const index = await this._annoucedIndexes.get(fileName); + return index; + } try { - const index = await DataIndex.readFromFile(this, fileName); + // Announce the index to prevent race condition in between reading and receiving the IPC index.created notification + const indexPromise = DataIndex.readFromFile(this, fileName); + this._annoucedIndexes.set(fileName, indexPromise); + const index = await indexPromise; this._indexes.push(index); + this._annoucedIndexes.delete(fileName); return index; } catch (err) { @@ -835,6 +845,9 @@ export class Storage extends SimpleEventEmitter { else if (type === 'child_removed') { trigger = oldValue !== null && newValue === null; } + if (!trigger) { + return; + } const pathKeys = PathInfo.getPathKeys(sub.dataPath); variables.forEach(variable => { // only replaces first occurrence (so multiple *'s will be processed 1 by 1) @@ -843,7 +856,7 @@ export class Storage extends SimpleEventEmitter { pathKeys[index] = variable.value; }); const dataPath = pathKeys.reduce((path, key) => PathInfo.getChildPath(path, key), ''); - trigger && this.subscriptions.trigger(sub.type, sub.subscriptionPath, dataPath, oldValue, newValue, options.context); + this.subscriptions.trigger(sub.type, sub.subscriptionPath, dataPath, oldValue, newValue, options.context); }; const prepareMutationEvents = (currentPath, oldValue, newValue, compareResult) => { const batch = []; diff --git a/dist/esm/storage/index.js.map b/dist/esm/storage/index.js.map index 59322c5f..1d8e07d4 100644 --- a/dist/esm/storage/index.js.map +++ b/dist/esm/storage/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/esm/test/dataset.js b/dist/esm/test/dataset.js index 11d094e6..12da190f 100644 --- a/dist/esm/test/dataset.js +++ b/dist/esm/test/dataset.js @@ -6,7 +6,7 @@ export async function readDataSet(name) { return JSON.parse(file); } export function getDataSetPath(name) { - const path = resolve(/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1], '../../../spec/dataset'); // dir relative to dist/[cjs|esm]/test + const path = resolve(`${process.platform === 'win32' ? '' : '/'}${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}`, '../../../spec/dataset'); // dir relative to dist/[cjs|esm]/test return `${path}/${name}.json`; } //# sourceMappingURL=dataset.js.map \ No newline at end of file diff --git a/dist/esm/test/issue-225.spec.js b/dist/esm/test/issue-225.spec.js new file mode 100644 index 00000000..6ddefd67 --- /dev/null +++ b/dist/esm/test/issue-225.spec.js @@ -0,0 +1,88 @@ +import { createTempDB } from './tempdb.js'; +describe('issue #225', () => { + let db; + let removeDB; + beforeAll(async () => { + ({ db, removeDB } = await createTempDB({ logLevel: 'warn' })); + }); + afterAll(async () => { + await removeDB(); + }); + it('realtime query and indexed deletes', async () => { + // Create indexes + await db.indexes.create('items', 'location'); + await db.indexes.create('items', 'category'); + await db.indexes.create('items', 'status'); + const eventStats = { add: 0, change: 0, remove: 0 }; + // Setup realtime query + const realtimeQuery = db.query('items') + .filter('category', '==', 'main') + .filter('status', '==', 1) + .on('add', event => { + eventStats.add++; + const item = event.snapshot.val(); + console.log(`Added item ${event.ref.key}:`, item); + }) + .on('change', event => { + eventStats.change++; + const item = event.snapshot.val(); + console.log(`Changed item ${event.ref.key}:`, item); + }) + .on('remove', event => { + eventStats.remove++; + console.log(`Removed item ${event.ref.key}`); + }); + // Get initial (no) results + const results = await realtimeQuery.get(); + // Add a bunch of items, should trigger "add" events on realtime query + const TEST_SIZE = 1000; + const itemIds = []; + const locations = ['Amsterdam', 'Cape Town', 'Sydney', 'Miami', 'Toronto', 'Berlin', 'Paris']; + for (let i = 0; i < TEST_SIZE; i++) { + const ref = await db.ref('items').push({ + location: locations[Math.floor(Math.random() * locations.length)], + category: 'main', + status: 1, + }); + itemIds.push(ref.key); + } + // Update every other item to status 2, should trigger 500 "remove" events on realtime query + for (let i = 0; i < itemIds.length; i += 2) { + await db.ref('items').child(itemIds[i]).update({ + status: 2, + }); + } + // Update every 3rd item to location 'Amsterdam', should trigger "change" events on realtime query + for (let i = 0; i < itemIds.length; i += 3) { + await db.ref('items').child(itemIds[i]).update({ + location: 'Amsterdam', + }); + } + // Update every 3rd item to status 3, should trigger some more "remove" events on realtime query + for (let i = 0; i < itemIds.length; i += 3) { + await db.ref('items').child(itemIds[i]).update({ + status: 3, + }); + } + // Remove items with status 1, should trigger all remaining "remove" events on realtime query (0 results left) + await db.query('items').filter('status', '==', 1).remove(); + // Wait for all remove events to fire + console.log('Waiting for all remove events to fire'); + await new Promise(resolve => { + let eventsFired = eventStats.remove; + const check = () => { + if (eventsFired === eventStats.remove) { + // All fired + return resolve(); + } + eventsFired = eventStats.remove; + setTimeout(check, 100); // Schedule next check + }; + setTimeout(check, 1000); // Schedule first check + }); + // Stop live query + await realtimeQuery.stop(); + console.log(`${eventStats.add} added, ${eventStats.change} changed, ${eventStats.remove} removed`); + }, 600000); +}); +//# sourceMappingURL=issue-225.spec.js.map \ No newline at end of file diff --git a/dist/esm/test/issue-225.spec.js.map b/dist/esm/test/issue-225.spec.js.map new file mode 100644 index 00000000..28d6ee8e --- /dev/null +++ b/dist/esm/test/issue-225.spec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"issue-225.spec.js","sourceRoot":"","sources":["../../../src/test/issue-225.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/esm/test/readonly.spec.js b/dist/esm/test/readonly.spec.js index bb4790c2..47c406e9 100644 --- a/dist/esm/test/readonly.spec.js +++ b/dist/esm/test/readonly.spec.js @@ -17,7 +17,7 @@ describe('readonly databases', () => { await db.ref('test').set({ text: 'This is a test' }); await db.close(); // Open it readonly - db = new AceBase(db.name, { logLevel: 'verbose', storage: { path: /file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1], readOnly: true } }); + db = new AceBase(db.name, { logLevel: 'verbose', storage: { path: `${process.platform === 'win32' ? '' : '/'}${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}`, readOnly: true } }); try { // Try writing to it await db.ref('test').update({ test: 'Not allowed' }); @@ -35,7 +35,7 @@ describe('readonly databases', () => { await db.ref('test').set({ text: 'This is a test' }); await db.close(); // Open it readonly - db = new AceBase(db.name, { logLevel: 'verbose', storage: { path: /file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1], readOnly: true } }); + db = new AceBase(db.name, { logLevel: 'verbose', storage: { path: `${process.platform === 'win32' ? '' : '/'}${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}`, readOnly: true } }); // Try reading from it const snap = await db.ref('test').get(); const val = snap.val(); diff --git a/dist/esm/test/tempdb.js b/dist/esm/test/tempdb.js index e8da87fd..6b609b38 100644 --- a/dist/esm/test/tempdb.js +++ b/dist/esm/test/tempdb.js @@ -3,7 +3,7 @@ import { readdir, rm, rmdir } from 'fs/promises'; export async function createTempDB(enable = {}) { // Create temp db const dbname = 'test-' + ID.generate(); - const options = { storage: { path: /file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1] }, logLevel: enable.logLevel || 'log' }; + const options = { storage: { path: `${process.platform === 'win32' ? '' : '/'}${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}` }, logLevel: enable.logLevel || 'log' }; if (enable.transactionLogging === true) { options.transactions = { log: true }; } @@ -18,7 +18,7 @@ export async function createTempDB(enable = {}) { // Close database await db.close(); // Remove database - const dbdir = `${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}/${dbname}.acebase`; + const dbdir = `${`${process.platform === 'win32' ? '' : '/'}${/file:\/{2,3}(.+)\/[^/]/.exec(import.meta.url)[1]}`}/${dbname}.acebase`; if (nodeVersion.major < 12) { // console.error(`Node ${process.version} cannot remove temp database directory ${dbdir}. Remove it manually!`); const files = await readdir(dbdir); diff --git a/dist/types/btree/binary-tree.d.ts.map b/dist/types/btree/binary-tree.d.ts.map index 80ae36a0..1a85ba9f 100644 --- a/dist/types/btree/binary-tree.d.ts.map +++ b/dist/types/btree/binary-tree.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"binary-tree.d.ts","sourceRoot":"","sources":["../../../src/btree/binary-tree.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"binary-tree.d.ts","sourceRoot":"","sources":["../../../src/btree/binary-tree.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/types/node-info.d.ts b/dist/types/node-info.d.ts index 0524f67b..15c517d3 100644 --- a/dist/types/node-info.d.ts +++ b/dist/types/node-info.d.ts @@ -12,7 +12,7 @@ export declare class NodeInfo { childCount?: number; constructor(info: Partial); get valueType(): NodeValueType; - get valueTypeName(): "object" | "string" | "number" | "binary" | "bigint" | "boolean" | "date" | "array" | "reference"; + get valueTypeName(): "object" | "string" | "number" | "array" | "boolean" | "date" | "bigint" | "binary" | "reference"; toString(): string; } //# sourceMappingURL=node-info.d.ts.map \ No newline at end of file diff --git a/dist/types/node-value-types.d.ts b/dist/types/node-value-types.d.ts index e768938b..a68f6395 100644 --- a/dist/types/node-value-types.d.ts +++ b/dist/types/node-value-types.d.ts @@ -11,7 +11,7 @@ declare const nodeValueTypes: { }; export type NodeValueType = typeof nodeValueTypes[keyof typeof nodeValueTypes]; export declare const VALUE_TYPES: Record<"OBJECT" | "ARRAY" | "NUMBER" | "BOOLEAN" | "STRING" | "BIGINT" | "DATETIME" | "BINARY" | "REFERENCE", NodeValueType>; -export declare function getValueTypeName(valueType: number): "object" | "string" | "number" | "binary" | "bigint" | "boolean" | "date" | "array" | "reference"; +export declare function getValueTypeName(valueType: number): "object" | "string" | "number" | "array" | "boolean" | "date" | "bigint" | "binary" | "reference"; export declare function getNodeValueType(value: unknown): NodeValueType; export declare function getValueType(value: unknown): NodeValueType; export {}; diff --git a/dist/types/storage/index.d.ts b/dist/types/storage/index.d.ts index 38a96e7d..7500f7b4 100644 --- a/dist/types/storage/index.d.ts +++ b/dist/types/storage/index.d.ts @@ -119,6 +119,7 @@ export declare class Storage extends SimpleEventEmitter { */ constructor(name: string, settings: StorageSettings, env: StorageEnv); private _indexes; + private _annoucedIndexes; indexes: { /** * Tests if (the default storage implementation of) indexes are supported in the environment. diff --git a/dist/types/storage/index.d.ts.map b/dist/types/storage/index.d.ts.map index fc3615cb..e5722733 100644 --- a/dist/types/storage/index.d.ts.map +++ b/dist/types/storage/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAwC,kBAAkB,EAAoB,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGtL,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAe,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAa5D,qBAAa,qBAAsB,SAAQ,KAAK;IACzB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAGpC;AAED,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,GAAG,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACnC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAe;IAExB;;;OAGG;IACH,kBAAkB,SAAM;IAExB;;;OAGG;IACH,oBAAoB,UAAS;IAE7B;;;OAGG;IACH,IAAI,SAAO;IAEX;;;OAGG;IACH,WAAW,SAAO;IAElB;;;OAGG;IACH,IAAI,SAAU;IAEd;;;OAGG;IACH,QAAQ,UAAS;IAEjB;;;OAGG;IACH,GAAG,CAAC,EAAE,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;IAElD;;OAEG;IACH,YAAY,CAAC,EAAE,sBAAsB,CAAC;gBAE1B,QAAQ,GAAE,OAAO,CAAC,eAAe,CAAM;CAUtD;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;AAElH,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,GAAI;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAE7F,qBAAa,OAAQ,SAAQ,kBAAkB;IAwBxB,IAAI,EAAE,MAAM;IAAS,QAAQ,EAAE,eAAe;IAtB1D,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,GAAG,CAAC;IAEX,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,aAAa,CAAC;IAC7C,UAAU,EAAE;QACf,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;KAClG,CAAC;IAEF,OAAO,CAAC,QAAQ,CAAS;IACzB,SAAS;IAKT,OAAO,CAAC,QAAQ,CAAyD;IAEzE;;;;;OAKG;gBACgB,IAAI,EAAE,MAAM,EAAS,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,UAAU;IA2ClF,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,gBAAgB,CAAyC;IAC1D,OAAO;QACV;;;;WAIG;;uBAMO,MAAM,OACP,MAAM,YACF,kBAAkB;QAQ/B;;WAEG;oBACS,MAAM,QAAO,MAAM;QAY/B;;WAEG;6BACkB,MAAM;;;;QA2B3B;;WAEG;;QAKH;;WAEG;;wBA+BmB,MAAM;QAyB5B;;WAEG;2BACsB,MAAM;QAM/B;;;WAGG;2BACsB,MAAM;;MAajC;IAGF,OAAO,CAAC,mBAAmB,CAAsG;IAC1H,aAAa;QAChB;;;;;WAKG;oBACS,MAAM,QAAQ,MAAM,YAAY,oBAAoB;QAahE;;;;;WAKG;uBACY,MAAM,SAAS,MAAM,aAAa,oBAAoB;QAarE;;;WAGG;yCAC8B,MAAM;QAKvC;;;WAGG;2CACgC,MAAM;kBAOQ,MAAM;uBAAa,MAAM;sBAAY,MAAM;8BAAoB,MAAM;;QAoCtH;;WAEG;yCAC8B,MAAM;kBAEK,MAAM;uBAAa,MAAM;sBAAY,MAAM;8BAAoB,MAAM;;QA8CjH;;;;;;;;WAQG;yBACc,MAAM,QAAQ,MAAM,YAAY,MAAM,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG;MAgBrG;IAGF;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG;IAEnF,KAAK;IAKX,IAAI,IAAI,WAEP;IAED;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,GAAG;IA8B1B;;OAEG;IAEH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5F,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;;;;;;;;;;;;;;;;uBAkCY,MAAM,MAAM,GAAG,MAAM,CAAC;;;;IAgCvF;;;;OAIG;IACG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,OAAO,CAAC;QACpE,KAAK,EAAE,OAAO,CAAC;QACf,WAAW,EAAE,OAAO,CAAC;QACrB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB,oBAAoB,EAAE,MAAM,GAAG,CAAC;QAChC,mBAAmB,EAAE,OAAO,CAAC;QAC7B,eAAe,EAAE,OAAO,CAAC;QACzB,OAAO,EAAE,GAAG,CAAC;QACb,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC/C,YAAY,EAAE,GAAG,CAAA;KACpB,CAMA,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAye7B;;;;;OAKG;IAEH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAChC;;WAEG;QACH,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QAChC;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,GAAC,MAAM,CAAC;QACpB;;WAEG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG;QAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,GAAC,IAAI,GAAC,OAAO,CAAC,OAAO,GAAC,IAAI,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAC;IAIpG;;;;;OAKG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,4BAAiC,GAAG,OAAO,CAAC,GAAG,CAAC;IAK1F;;;;OAIG;IAEH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1H;;;;OAIG;IAEH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QACxC;;WAEG;QACH,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB;;WAEG;QACH,WAAW,EAAE,OAAO,CAAC;QACrB;;;WAGG;QACH,mBAAmB,EAAE,OAAO,CAAC;KAChC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItB;;;;;;;OAOG;IAEH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/C;;WAEG;QACH,GAAG,EAAE,MAAM,CAAC;QACZ;;WAEG;QACH,OAAO,EAAE,MAAM,CAAC;QAChB;;WAEG;QACH,eAAe,EAAE,MAAM,CAAC;QACxB;;WAEG;QACH,eAAe,EAAE,OAAO,CAAC;KAC5B,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI3B;;;;;;OAMG;IAEH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;QACvD;;WAEG;QACF,GAAG,EAAE,MAAM,CAAC;QACZ;;WAEG;QACH,OAAO,EAAE,MAAM,CAAC;QACjB;;WAEG;QACF,eAAe,EAAE,MAAM,CAAC;QACzB;;WAEG;QACF,eAAe,EAAE,OAAO,CAAC;KAC7B,CAAC,GAAG,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC;IAIzB;;;;;;;;OAQG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,EAAE,OAAO,GAAE,OAAO,CAAC;QAC7E;;WAEG;QACF,GAAG,EAAE,MAAM,CAAC;QACZ;;;WAGG;QACJ,eAAe,EAAE,OAAO,CAAC;QACxB;;WAEG;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;KACrB,CAA6D,GAAG,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC;IAyDrF;;;;;;OAMG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,EAAE,OAAO,CAAC,EAAE;QACzG;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,OAAO,CAAC;IAiMpB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAuCvC;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;QAAE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAC,OAAO,CAAC,IAAI,CAAC,CAAA;KAAC,EAAE,OAAO;;;KAAsC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgHxL;;;;;OAKG;IACG,UAAU,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,EAC/F,OAAO,GAAE,OAAO,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf;;;;;;;UAOE;QACF,MAAM,EAAE,KAAK,GAAC,QAAQ,GAAC,OAAO,CAAC;QAC/B,eAAe,EAAE,OAAO,CAAC;KAC5B,CAAqC,GACvC,OAAO,CAAC,IAAI,CAAC;IA0ahB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAC,MAAM;IA0B7C;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKvF;;OAEG;IACH,UAAU;;;;;IAIV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE;QAC9C;;WAEG;QACH,OAAO,EAAE,OAAO,CAAC;KACK,GACvB,kBAAkB;CA4DxB"} \ No newline at end of file diff --git a/dist/types/test/issue-225.spec.d.ts b/dist/types/test/issue-225.spec.d.ts new file mode 100644 index 00000000..2574069b --- /dev/null +++ b/dist/types/test/issue-225.spec.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=issue-225.spec.d.ts.map \ No newline at end of file diff --git a/dist/types/test/issue-225.spec.d.ts.map b/dist/types/test/issue-225.spec.d.ts.map new file mode 100644 index 00000000..ce467a75 --- /dev/null +++ b/dist/types/test/issue-225.spec.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"issue-225.spec.d.ts","sourceRoot":"","sources":["../../../src/test/issue-225.spec.ts"],"names":[],"mappings":""} \ No newline at end of file