mobileapplicationPassvault/node_modules/firebase/firebase-compat.js

11 lines
762 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).firebase=t()}(this,function(){"use strict";const t={NODE_CLIENT:!1,NODE_ADMIN:!1,SDK_VERSION:"${JSCORE_VERSION}"},f=function(e,t){if(!e)throw u(t)},u=function(e){return new Error("Firebase Database ("+t.SDK_VERSION+") INTERNAL ASSERT FAILED: "+e)},n=function(t){const n=[];let r=0;for(let i=0;i<t.length;i++){let e=t.charCodeAt(i);e<128?n[r++]=e:(e<2048?n[r++]=e>>6|192:(55296==(64512&e)&&i+1<t.length&&56320==(64512&t.charCodeAt(i+1))?(e=65536+((1023&e)<<10)+(1023&t.charCodeAt(++i)),n[r++]=e>>18|240,n[r++]=e>>12&63|128):n[r++]=e>>12|224,n[r++]=e>>6&63|128),n[r++]=63&e|128)}return n},r={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(n,e){if(!Array.isArray(n))throw Error("encodeByteArray takes an array as a parameter");this.init_();var r=e?this.byteToCharMapWebSafe_:this.byteToCharMap_;const i=[];for(let u=0;u<n.length;u+=3){var s=n[u],a=u+1<n.length,o=a?n[u+1]:0,c=u+2<n.length,l=c?n[u+2]:0;let e=(15&o)<<2|l>>6,t=63&l;c||(t=64,a||(e=64)),i.push(r[s>>2],r[(3&s)<<4|o>>4],r[e],r[t])}return i.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(n(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,r=0;for(;n<e.length;){var i,s,a=e[n++];a<128?t[r++]=String.fromCharCode(a):191<a&&a<224?(i=e[n++],t[r++]=String.fromCharCode((31&a)<<6|63&i)):239<a&&a<365?(s=((7&a)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,t[r++]=String.fromCharCode(55296+(s>>10)),t[r++]=String.fromCharCode(56320+(1023&s))):(i=e[n++],s=e[n++],t[r++]=String.fromCharCode((15&a)<<12|(63&i)<<6|63&s))}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();var n=t?this.charToByteMapWebSafe_:this.charToByteMap_;const r=[];for(let c=0;c<e.length;){var i=n[e.charAt(c++)],s=c<e.length?n[e.charAt(c)]:0;++c;var a=c<e.length?n[e.charAt(c)]:64;++c;var o=c<e.length?n[e.charAt(c)]:64;if(++c,null==i||null==s||null==a||null==o)throw new l;r.push(i<<2|s>>4),64!==a&&(r.push(s<<4&240|a>>2),64!==o&&r.push(a<<6&192|o))}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e<this.ENCODED_VALS.length;e++)this.byteToCharMap_[e]=this.ENCODED_VALS.charAt(e),this.charToByteMap_[this.byteToCharMap_[e]]=e,this.byteToCharMapWebSafe_[e]=this.ENCODED_VALS_WEBSAFE.charAt(e),this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[e]]=e,e>=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class l extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}function i(e){var t=n(e);return r.encodeByteArray(t,!0)}const s=function(e){return i(e).replace(/\./g,"")},a=function(e){try{return r.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};function c(e,t){if(!(t instanceof Object))return t;switch(t.constructor){case Date:const n=t;return new Date(n.getTime());case Object:void 0===e&&(e={});break;case Array:e=[];break;default:return t}for(const r in t)t.hasOwnProperty(r)&&"__proto__"!==r&&(e[r]=c(e[r],t[r]));return e}function o(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("Unable to locate global object.")}const e=()=>o().__FIREBASE_DEFAULTS__,h=()=>{if("undefined"!=typeof process&&void 0!==process.env){var e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0}},d=()=>{if("undefined"!=typeof document){let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}var t=e&&a(e[1]);return t&&JSON.parse(t)}},p=()=>{try{return e()||h()||d()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},g=()=>{var e;return null===(e=p())||void 0===e?void 0:e.config};var m,v,_;class y{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}wrapCallback(n){return(e,t)=>{e?this.reject(e):this.resolve(t),"function"==typeof n&&(this.promise.catch(()=>{}),1===n.length?n(e):n(e,t))}}}function w(e,t){if(e.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');var n=t||"demo-project",r=e.iat||0,i=e.sub||e.user_id;if(!i)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");i=Object.assign({iss:`https://securetoken.google.com/${n}`,aud:n,iat:r,exp:r+3600,auth_time:r,sub:i,user_id:i,firebase:{sign_in_provider:"custom",identities:{}}},e);return[s(JSON.stringify({alg:"none",type:"JWT"})),s(JSON.stringify(i)),""].join(".")}function b(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function I(){return"undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(b())}function T(){var e=null===(e=p())||void 0===e?void 0:e.forceEnvironment;if("node"===e)return!0;if("browser"===e)return!1;try{return"[object process]"===Object.prototype.toString.call(global.process)}catch(e){return!1}}function E(){var e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}function C(){return"object"==typeof navigator&&"ReactNative"===navigator.product}function S(){const e=b();return 0<=e.indexOf("MSIE ")||0<=e.indexOf("Trident/")}function k(){return!0===t.NODE_ADMIN}function A(){return!T()&&navigator.userAgent&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")}function N(){try{return"object"==typeof indexedDB}catch(e){return!1}}function R(){return new Promise((t,n)=>{try{let e=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),e||self.indexedDB.deleteDatabase(r),t(!0)},i.onupgradeneeded=()=>{e=!1},i.onerror=()=>{var e;n((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){n(e)}})}function P(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}class D extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,D.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,x.prototype.create)}}class x{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){var r,n=t[0]||{},i=`${this.service}/${e}`,s=this.errors[e],s=s?(r=n,s.replace(O,(e,t)=>{var n=r[t];return null!=n?String(n):`<${t}?>`})):"Error",s=`${this.serviceName}: ${s} (${i}).`;return new D(i,s,n)}}const O=/\{\$([^}]+)}/g;function M(e){return JSON.parse(e)}function L(e){return JSON.stringify(e)}function F(e){let t={},n={},r={},i="";try{var s=e.split(".");t=M(a(s[0])||""),n=M(a(s[1])||""),i=s[2],r=n.d||{},delete n.d}catch(e){}return{header:t,claims:n,data:r,signature:i}}function U(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function V(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]}function q(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function B(e,t,n){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=t.call(n,e[i],i,e));return r}function j(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t);for(const a of n){if(!r.includes(a))return!1;var i=e[a],s=t[a];if(z(i)&&z(s)){if(!j(i,s))return!1}else if(i!==s)return!1}for(const o of r)if(!n.includes(o))return!1;return!0}function z(e){return null!==e&&"object"==typeof e}function $(e){const t=[];for(const[n,r]of Object.entries(e))Array.isArray(r)?r.forEach(e=>{t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))}):t.push(encodeURIComponent(n)+"="+encodeURIComponent(r));return t.length?"&"+t.join("&"):""}function K(e){const r={},t=e.replace(/^\?/,"").split("&");return t.forEach(e=>{var t,n;e&&([t,n]=e.split("="),r[decodeURIComponent(t)]=decodeURIComponent(n))}),r}function W(e){var t=e.indexOf("?");if(!t)return"";var n=e.indexOf("#",t);return e.substring(t,0<n?n:void 0)}class G{constructor(){this.chain_=[],this.buf_=[],this.W_=[],this.pad_=[],this.inbuf_=0,this.total_=0,this.blockSize=64,this.pad_[0]=128;for(let e=1;e<this.blockSize;++e)this.pad_[e]=0;this.reset()}reset(){this.chain_[0]=1732584193,this.chain_[1]=4023233417,this.chain_[2]=2562383102,this.chain_[3]=271733878,this.chain_[4]=3285377520,this.inbuf_=0,this.total_=0}compress_(n,r){r=r||0;const i=this.W_;if("string"==typeof n)for(let e=0;e<16;e++)i[e]=n.charCodeAt(r)<<24|n.charCodeAt(r+1)<<16|n.charCodeAt(r+2)<<8|n.charCodeAt(r+3),r+=4;else for(let t=0;t<16;t++)i[t]=n[r]<<24|n[r+1]<<16|n[r+2]<<8|n[r+3],r+=4;for(let d=16;d<80;d++){var e=i[d-3]^i[d-8]^i[d-14]^i[d-16];i[d]=4294967295&(e<<1|e>>>31)}let t=this.chain_[0],s=this.chain_[1],a=this.chain_[2],o=this.chain_[3],c=this.chain_[4],l,u;for(let p=0;p<80;p++){u=p<40?p<20?(l=o^s&(a^o),1518500249):(l=s^a^o,1859775393):p<60?(l=s&a|o&(s|a),2400959708):(l=s^a^o,3395469782);var h=(t<<5|t>>>27)+l+c+u+i[p]&4294967295;c=o,o=a,a=4294967295&(s<<30|s>>>2),s=t,t=h}this.chain_[0]=this.chain_[0]+t&4294967295,this.chain_[1]=this.chain_[1]+s&4294967295,this.chain_[2]=this.chain_[2]+a&4294967295,this.chain_[3]=this.chain_[3]+o&4294967295,this.chain_[4]=this.chain_[4]+c&4294967295}update(n,r){if(null!=n){var i=(r=void 0===r?n.length:r)-this.blockSize;let e=0;const s=this.buf_;let t=this.inbuf_;for(;e<r;){if(0===t)for(;e<=i;)this.compress_(n,e),e+=this.blockSize;if("string"==typeof n){for(;e<r;)if(s[t]=n.charCodeAt(e),++t,++e,t===this.blockSize){this.compress_(s),t=0;break}}else for(;e<r;)if(s[t]=n[e],++t,++e,t===this.blockSize){this.compress_(s),t=0;break}}this.inbuf_=t,this.total_+=r}}digest(){const t=[];let e=8*this.total_;this.inbuf_<56?this.update(this.pad_,56-this.inbuf_):this.update(this.pad_,this.blockSize-(this.inbuf_-56));for(let r=this.blockSize-1;56<=r;r--)this.buf_[r]=255&e,e/=256;this.compress_(this.buf_);let n=0;for(let i=0;i<5;i++)for(let e=24;0<=e;e-=8)t[n]=this.chain_[i]>>e&255,++n;return t}}function H(e,t){const n=new Q(e,t);return n.subscribe.bind(n)}class Q{constructor(e,t){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=t,this.task.then(()=>{e(this)}).catch(e=>{this.error(e)})}next(t){this.forEachObserver(e=>{e.next(t)})}error(t){this.forEachObserver(e=>{e.error(t)}),this.close(t)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,t,n){let r;if(void 0===e&&void 0===t&&void 0===n)throw new Error("Missing Observer.");r=function(e,t){if("object"!=typeof e||null===e)return!1;for(const n of t)if(n in e&&"function"==typeof e[n])return!0;return!1}(e,["next","error","complete"])?e:{next:e,error:t,complete:n},void 0===r.next&&(r.next=Y),void 0===r.error&&(r.error=Y),void 0===r.complete&&(r.complete=Y);var i=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?r.error(this.finalError):r.complete()}catch(e){}}),this.observers.push(r),i}unsubscribeOne(e){void 0!==this.observers&&void 0!==this.observers[e]&&(delete this.observers[e],--this.observerCount,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(t){if(!this.finalized)for(let e=0;e<this.observers.length;e++)this.sendOne(e,t)}sendOne(e,t){this.task.then(()=>{if(void 0!==this.observers&&void 0!==this.observers[e])try{t(this.observers[e])}catch(e){"undefined"!=typeof console&&console.error&&console.error(e)}})}close(e){this.finalized||(this.finalized=!0,void 0!==e&&(this.finalError=e),this.task.then(()=>{this.observers=void 0,this.onNoObservers=void 0}))}}function Y(){}function J(e,t,n,r){let i;if(r<t?i="at least "+t:n<r&&(i=0===n?"none":"no more than "+n),i){var s=e+" failed: Was called with "+r+(1===r?" argument.":" arguments.")+" Expects "+i+".";throw new Error(s)}}function X(e,t){return`${e} failed: ${t} argument `}function Z(e,t,n,r){if((!r||n)&&"function"!=typeof n)throw new Error(X(e,t)+"must be a valid function.")}function ee(e,t,n,r){if((!r||n)&&("object"!=typeof n||null===n))throw new Error(X(e,t)+"must be a valid context object.")}function te(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0,n="x"===e?t:3&t|8;return n.toString(16)})}const ne=function(e){let t=0;for(let r=0;r<e.length;r++){var n=e.charCodeAt(r);n<128?t++:n<2048?t+=2:55296<=n&&n<=56319?(t+=4,r++):t+=3}return t},re=1e3,ie=2,se=144e5,ae=.5;function oe(e,t=re,n=ie){var r=t*Math.pow(n,e),i=Math.round(ae*r*(Math.random()-.5)*2);return Math.min(se,r+i)}function ce(e){return e&&e._delegate?e._delegate:e}class le{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const ue="[DEFAULT]";class he{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){var t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const r=new y;if(this.instancesDeferred.set(t,r),this.isInitialized(t)||this.shouldAutoInitialize())try{var n=this.getOrInitializeService({instanceIdentifier:t});n&&r.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),n=null!==(n=null==e?void 0:e.optional)&&void 0!==n&&n;if(!this.isInitialized(t)&&!this.shouldAutoInitialize()){if(n)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:t})}catch(e){if(n)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if("EAGER"===e.instantiationMode)try{this.getOrInitializeService({instanceIdentifier:ue})}catch(e){}for(var[t,n]of this.instancesDeferred.entries()){t=this.normalizeInstanceIdentifier(t);try{var r=this.getOrInitializeService({instanceIdentifier:t});n.resolve(r)}catch(e){}}}}clearInstance(e=ue){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter(e=>"INTERNAL"in e).map(e=>e.INTERNAL.delete()),...e.filter(e=>"_delete"in e).map(e=>e._delete())])}isComponentSet(){return null!=this.component}isInitialized(e=ue){return this.instances.has(e)}getOptions(e=ue){return this.instancesOptions.get(e)||{}}initialize(e={}){var{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);var r,i,s=this.getOrInitializeService({instanceIdentifier:n,options:t});for([r,i]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(r)&&i.resolve(s);return s}onInit(e,t){var n=this.normalizeInstanceIdentifier(t);const r=null!==(i=this.onInitCallbacks.get(n))&&void 0!==i?i:new Set;r.add(e),this.onInitCallbacks.set(n,r);var i=this.instances.get(n);return i&&e(i,n),()=>{r.delete(e)}}invokeOnInitCallbacks(e,t){var n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(r=e)===ue?void 0:r,options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var r;return n||null}normalizeInstanceIdentifier(e=ue){return!this.component||this.component.multipleInstances?e:ue}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class de{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){const t=this.getProvider(e.name);t.isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);var t=new he(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const pe=[];(v=m=m||{})[v.DEBUG=0]="DEBUG",v[v.VERBOSE=1]="VERBOSE",v[v.INFO=2]="INFO",v[v.WARN=3]="WARN",v[v.ERROR=4]="ERROR",v[v.SILENT=5]="SILENT";const fe={debug:m.DEBUG,verbose:m.VERBOSE,info:m.INFO,warn:m.WARN,error:m.ERROR,silent:m.SILENT},ge=m.INFO,me={[m.DEBUG]:"log",[m.VERBOSE]:"log",[m.INFO]:"info",[m.WARN]:"warn",[m.ERROR]:"error"},ve=(e,t,...n)=>{if(!(t<e.logLevel)){var r=(new Date).toISOString(),i=me[t];if(!i)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[i](`[${r}] ${e.name}:`,...n)}};class _e{constructor(e){this.name=e,this._logLevel=ge,this._logHandler=ve,this._userLogHandler=null,pe.push(this)}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in m))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?fe[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=e}get userLogHandler(){return this._userLogHandler}set userLogHandler(e){this._userLogHandler=e}debug(...e){this._userLogHandler&&this._userLogHandler(this,m.DEBUG,...e),this._logHandler(this,m.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,m.VERBOSE,...e),this._logHandler(this,m.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,m.INFO,...e),this._logHandler(this,m.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,m.WARN,...e),this._logHandler(this,m.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,m.ERROR,...e),this._logHandler(this,m.ERROR,...e)}}const ye=(t,e)=>e.some(e=>t instanceof e);let we,be;const Ie=new WeakMap,Te=new WeakMap,Ee=new WeakMap,Ce=new WeakMap,Se=new WeakMap;let ke={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return Te.get(e);if("objectStoreNames"===t)return e.objectStoreNames||Ee.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return Re(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e}};function Ae(r){return r!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(be=be||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]).includes(r)?function(...e){return r.apply(Pe(this),e),Re(Ie.get(this))}:function(...e){return Re(r.apply(Pe(this),e))}:function(e,...t){var n=r.call(Pe(this),e,...t);return Ee.set(n,e.sort?e.sort():[e]),Re(n)}}function Ne(e){return"function"==typeof e?Ae(e):(e instanceof IDBTransaction&&(s=e,Te.has(s)||(t=new Promise((e,t)=>{const n=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",i),s.removeEventListener("abort",i)},r=()=>{e(),n()},i=()=>{t(s.error||new DOMException("AbortError","AbortError")),n()};s.addEventListener("complete",r),s.addEventListener("error",i),s.addEventListener("abort",i)}),Te.set(s,t))),ye(e,we=we||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])?new Proxy(e,ke):e);var s,t}function Re(e){if(e instanceof IDBRequest)return function(s){const e=new Promise((e,t)=>{const n=()=>{s.removeEventListener("success",r),s.removeEventListener("error",i)},r=()=>{e(Re(s.result)),n()},i=()=>{t(s.error),n()};s.addEventListener("success",r),s.addEventListener("error",i)});return e.then(e=>{e instanceof IDBCursor&&Ie.set(e,s)}).catch(()=>{}),Se.set(e,s),e}(e);if(Ce.has(e))return Ce.get(e);var t=Ne(e);return t!==e&&(Ce.set(e,t),Se.set(t,e)),t}const Pe=e=>Se.get(e);function De(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const a=indexedDB.open(e,t),o=Re(a);return r&&a.addEventListener("upgradeneeded",e=>{r(Re(a.result),e.oldVersion,e.newVersion,Re(a.transaction),e)}),n&&a.addEventListener("blocked",e=>n(e.oldVersion,e.newVersion,e)),o.then(e=>{s&&e.addEventListener("close",()=>s()),i&&e.addEventListener("versionchange",e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),o}function xe(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",e=>t(e.oldVersion,e)),Re(n).then(()=>{})}const Oe=["get","getKey","getAll","getAllKeys","count"],Me=["put","add","delete","clear"],Le=new Map;function Fe(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(Le.get(t))return Le.get(t);const i=t.replace(/FromIndex$/,""),s=t!==i,a=Me.includes(i);if(i in(s?IDBIndex:IDBObjectStore).prototype&&(a||Oe.includes(i))){var n=async function(e,...t){var n=this.transaction(e,a?"readwrite":"readonly");let r=n.store;return s&&(r=r.index(t.shift())),(await Promise.all([r[i](...t),a&&n.done]))[0]};return Le.set(t,n),n}}}ke={..._=ke,get:(e,t,n)=>Fe(e,t)||_.get(e,t,n),has:(e,t)=>!!Fe(e,t)||_.has(e,t)};class Ue{constructor(e){this.container=e}getPlatformInfoString(){const e=this.container.getProviders();return e.map(e=>{if("VERSION"!==(null==(t=e.getComponent())?void 0:t.type))return null;var t,t=e.getImmediate();return`${t.library}/${t.version}`}).filter(e=>e).join(" ")}}const Ve="@firebase/app",qe=new _e("@firebase/app");var Be;const je="[DEFAULT]",ze={"@firebase/app":"fire-core","@firebase/app-compat":"fire-core-compat","@firebase/analytics":"fire-analytics","@firebase/analytics-compat":"fire-analytics-compat","@firebase/app-check":"fire-app-check","@firebase/app-check-compat":"fire-app-check-compat","@firebase/auth":"fire-auth","@firebase/auth-compat":"fire-auth-compat","@firebase/database":"fire-rtdb","@firebase/database-compat":"fire-rtdb-compat","@firebase/functions":"fire-fn","@firebase/functions-compat":"fire-fn-compat","@firebase/installations":"fire-iid","@firebase/installations-compat":"fire-iid-compat","@firebase/messaging":"fire-fcm","@firebase/messaging-compat":"fire-fcm-compat","@firebase/performance":"fire-perf","@firebase/performance-compat":"fire-perf-compat","@firebase/remote-config":"fire-rc","@firebase/remote-config-compat":"fire-rc-compat","@firebase/storage":"fire-gcs","@firebase/storage-compat":"fire-gcs-compat","@firebase/firestore":"fire-fst","@firebase/firestore-compat":"fire-fst-compat","fire-js":"fire-js",firebase:"fire-js-all"},$e=new Map,Ke=new Map;function We(t,n){try{t.container.addComponent(n)}catch(e){qe.debug(`Component ${n.name} failed to register with FirebaseApp ${t.name}`,e)}}function Ge(e,t){e.container.addOrOverwriteComponent(t)}function He(e){var t=e.name;if(Ke.has(t))return qe.debug(`There were multiple attempts to register component ${t}.`),!1;Ke.set(t,e);for(const n of $e.values())We(n,e);return!0}function Qe(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const Ye=new x("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."});class Je{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new le("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw Ye.create("app-deleted",{appName:this._name})}}const Xe="10.8.0";function Ze(e,t={}){let n=e;if("object"!=typeof t){const i=t;t={name:i}}var r=Object.assign({name:je,automaticDataCollectionEnabled:!1},t);const i=r.name;if("string"!=typeof i||!i)throw Ye.create("bad-app-name",{appName:String(i)});if(n=n||g(),!n)throw Ye.create("no-options");var s=$e.get(i);if(s){if(j(n,s.options)&&j(r,s.config))return s;throw Ye.create("duplicate-app",{appName:i})}const a=new de(i);for(const o of Ke.values())a.addComponent(o);r=new Je(n,r,a);return $e.set(i,r),r}function et(e=je){var t=$e.get(e);if(!t&&e===je&&g())return Ze();if(!t)throw Ye.create("no-app",{appName:e});return t}async function tt(e){var t=e.name;$e.has(t)&&($e.delete(t),await Promise.all(e.container.getProviders().map(e=>e.delete())),e.isDeleted=!0)}function nt(e,t,n){let r=null!==(s=ze[e])&&void 0!==s?s:e;n&&(r+=`-${n}`);var i=r.match(/\s|\//),s=t.match(/\s|\//);if(i||s){const a=[`Unable to register library "${r}" with version "${t}":`];return i&&a.push(`library name "${r}" contains illegal characters (whitespace or "/")`),i&&s&&a.push("and"),s&&a.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void qe.warn(a.join(" "))}He(new le(`${r}-version`,()=>({library:r,version:t}),"VERSION"))}function rt(e,t){if(null!==e&&"function"!=typeof e)throw Ye.create("invalid-log-argument");!function(s,e){for(const t of pe){let i=null;e&&e.level&&(i=fe[e.level]),t.userLogHandler=null===s?null:(e,t,...n)=>{var r=n.map(e=>{if(null==e)return null;if("string"==typeof e)return e;if("number"==typeof e||"boolean"==typeof e)return e.toString();if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch(e){return null}}).filter(e=>e).join(" ");t>=(null!==i&&void 0!==i?i:e.logLevel)&&s({level:m[t].toLowerCase(),message:r,args:n,type:e.name})}}}(e,t)}function it(e){var t;t=e,pe.forEach(e=>{e.setLogLevel(t)})}const st="firebase-heartbeat-database",at=1,ot="firebase-heartbeat-store";let ct=null;function lt(){return ct=ct||De(st,at,{upgrade:(e,t)=>{if(0===t)try{e.createObjectStore(ot)}catch(e){console.warn(e)}}}).catch(e=>{throw Ye.create("idb-open",{originalErrorMessage:e.message})}),ct}async function ut(e,t){try{const r=await lt(),i=r.transaction(ot,"readwrite"),s=i.objectStore(ot);await s.put(t,ht(e)),await i.done}catch(e){var n;e instanceof D?qe.warn(e.message):(n=Ye.create("idb-set",{originalErrorMessage:null==e?void 0:e.message}),qe.warn(n.message))}}function ht(e){return`${e.name}!${e.options.appId}`}class dt{constructor(e){this.container=e,this._heartbeatsCache=null;var t=this.container.getProvider("app").getImmediate();this._storage=new ft(t),this._heartbeatsCachePromise=this._storage.read().then(e=>this._heartbeatsCache=e)}async triggerHeartbeat(){var e;const t=this.container.getProvider("platform-logger").getImmediate();var n=t.getPlatformInfoString();const r=pt();if((null!=(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||(this._heartbeatsCache=await this._heartbeatsCachePromise,null!=(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)))&&this._heartbeatsCache.lastSentHeartbeatDate!==r&&!this._heartbeatsCache.heartbeats.some(e=>e.date===r))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(e=>{var t=new Date(e.date).valueOf();return Date.now()-t<=2592e6}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(n=this._heartbeatsCache)||void 0===n?void 0:n.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";var e=pt(),{heartbeatsToSend:t,unsentEntries:n}=function(e,t=1024){const n=[];let r=e.slice();for(const i of e){const s=n.find(e=>e.agent===i.agent);if(s){if(s.dates.push(i.date),gt(n)>t){s.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),gt(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}(this._heartbeatsCache.heartbeats),t=s(JSON.stringify({version:2,heartbeats:t}));return this._heartbeatsCache.lastSentHeartbeatDate=e,0<n.length?(this._heartbeatsCache.heartbeats=n,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),t}}function pt(){const e=new Date;return e.toISOString().substring(0,10)}class ft{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!N()&&R().then(()=>!0).catch(()=>!1)}async read(){if(await this._canUseIndexedDBPromise){var e=await async function(e){try{const n=await lt(),r=n.transaction(ot);var t=await r.objectStore(ot).get(ht(e));return await r.done,t}catch(e){e instanceof D?qe.warn(e.message):(t=Ye.create("idb-get",{originalErrorMessage:null==e?void 0:e.message}),qe.warn(t.message))}}(this.app);return null!=e&&e.heartbeats?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){var n=await this.read();return ut(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){var n=await this.read();return ut(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function gt(e){return s(JSON.stringify({version:2,heartbeats:e})).length}Be="",He(new le("platform-logger",e=>new Ue(e),"PRIVATE")),He(new le("heartbeat",e=>new dt(e),"PRIVATE")),nt(Ve,"0.9.27",Be),nt(Ve,"0.9.27","esm2017"),nt("fire-js","");var mt=Object.freeze({__proto__:null,SDK_VERSION:Xe,_DEFAULT_ENTRY_NAME:je,_addComponent:We,_addOrOverwriteComponent:Ge,_apps:$e,_clearComponents:function(){Ke.clear()},_components:Ke,_getProvider:Qe,_registerComponent:He,_removeServiceInstance:function(e,t,n=je){Qe(e,t).clearInstance(n)},deleteApp:tt,getApp:et,getApps:function(){return Array.from($e.values())},initializeApp:Ze,onLog:rt,registerVersion:nt,setLogLevel:it,FirebaseError:D});class vt{constructor(e,t){this._delegate=e,this.firebase=t,We(e,new le("app-compat",()=>this,"PUBLIC")),this.container=e.container}get automaticDataCollectionEnabled(){return this._delegate.automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this._delegate.automaticDataCollectionEnabled=e}get name(){return this._delegate.name}get options(){return this._delegate.options}delete(){return new Promise(e=>{this._delegate.checkDestroyed(),e()}).then(()=>(this.firebase.INTERNAL.removeApp(this.name),tt(this._delegate)))}_getService(e,t=je){var n;this._delegate.checkDestroyed();const r=this._delegate.container.getProvider(e);return r.isInitialized()||"EXPLICIT"!==(null===(n=r.getComponent())||void 0===n?void 0:n.instantiationMode)||r.initialize(),r.getImmediate({identifier:t})}_removeServiceInstance(e,t=je){this._delegate.container.getProvider(e).clearInstance(t)}_addComponent(e){We(this._delegate,e)}_addOrOverwriteComponent(e){Ge(this._delegate,e)}toJSON(){return{name:this.name,automaticDataCollectionEnabled:this.automaticDataCollectionEnabled,options:this.options}}}const _t=new x("app-compat","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance."});function yt(i){const s={},a={__esModule:!0,initializeApp:function(e,t={}){var n=Ze(e,t);if(U(s,n.name))return s[n.name];var r=new i(n,a);return s[n.name]=r},app:o,registerVersion:nt,setLogLevel:it,onLog:rt,apps:null,SDK_VERSION:Xe,INTERNAL:{registerComponent:function(n){const r=n.name,t=r.replace("-compat","");{var e;He(n)&&"PUBLIC"===n.type&&(e=(e=o())=>{if("function"!=typeof e[t])throw _t.create("invalid-app-argument",{appName:r});return e[t]()},void 0!==n.serviceProps&&c(e,n.serviceProps),a[t]=e,i.prototype[t]=function(...e){const t=this._getService.bind(this,r);return t.apply(this,n.multipleInstances?e:[])})}return"PUBLIC"===n.type?a[t]:null},removeApp:function(e){delete s[e]},useAsService:function(e,t){if("serverAuth"===t)return null;var n=t;return n},modularAPIs:mt}};function o(e){if(e=e||je,!U(s,e))throw _t.create("no-app",{appName:e});return s[e]}return a.default=a,Object.defineProperty(a,"apps",{get:function(){return Object.keys(s).map(e=>s[e])}}),o.App=i,a}var wt=function e(){const t=yt(vt);return t.INTERNAL=Object.assign(Object.assign({},t.INTERNAL),{createFirebaseNamespace:e,extendNamespace:function(e){c(t,e)},createSubscribe:H,ErrorFactory:x,deepExtend:c}),t}();const bt=new _e("@firebase/app-compat");if("object"==typeof self&&self.self===self&&void 0!==self.firebase){bt.warn(`
Warning: Firebase is already defined in the global scope. Please make sure
Firebase library is only loaded once.
`);const Z1=self.firebase.SDK_VERSION;Z1&&0<=Z1.indexOf("LITE")&&bt.warn(`
Warning: You are trying to load Firebase while using Firebase Performance standalone script.
You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code.
`)}const It=wt;nt("@firebase/app-compat","0.2.27",void 0);It.registerVersion("firebase","10.8.0","app-compat");var Tt="@firebase/installations",Et="0.6.5";const Ct=1e4,St="w:0.6.5",kt="FIS_v2",At="https://firebaseinstallations.googleapis.com/v1",Nt=36e5;const Rt=new x("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Pt(e){return e instanceof D&&e.code.includes("request-failed")}function Dt({projectId:e}){return`${At}/projects/${e}/installations`}function xt(e){return{token:e.token,requestStatus:2,expiresIn:(e=e.expiresIn,Number(e.replace("s","000"))),creationTime:Date.now()}}async function Ot(e,t){var n=(await t.json()).error;return Rt.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function Mt({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function Lt(e,{refreshToken:t}){const n=Mt(e);return n.append("Authorization",(t=t,`${kt} ${t}`)),n}async function Ft(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function Ut(t){return new Promise(e=>{setTimeout(e,t)})}const Vt=/^[cdef][\w-]{21}$/,qt="";function Bt(){try{const t=new Uint8Array(17),n=self.crypto||self.msCrypto;n.getRandomValues(t),t[0]=112+t[0]%16;var e=function(e){const t=function(e){const t=btoa(String.fromCharCode(...e));return t.replace(/\+/g,"-").replace(/\//g,"_")}(e);return t.substr(0,22)}(t);return Vt.test(e)?e:qt}catch(e){return qt}}function jt(e){return`${e.appName}!${e.appId}`}const zt=new Map;function $t(e,t){var n=jt(e);Kt(n,t),function(e,t){const n=function(){!Wt&&"BroadcastChannel"in self&&(Wt=new BroadcastChannel("[Firebase] FID Change"),Wt.onmessage=e=>{Kt(e.data.key,e.data.fid)});return Wt}();n&&n.postMessage({key:e,fid:t});0===zt.size&&Wt&&(Wt.close(),Wt=null)}(n,t)}function Kt(e,t){var n=zt.get(e);if(n)for(const r of n)r(t)}let Wt=null;const Gt="firebase-installations-store";let Ht=null;function Qt(){return Ht=Ht||De("firebase-installations-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(Gt)}}),Ht}async function Yt(e,t){var n=jt(e);const r=await Qt(),i=r.transaction(Gt,"readwrite"),s=i.objectStore(Gt);var a=await s.get(n);return await s.put(t,n),await i.done,a&&a.fid===t.fid||$t(e,t.fid),t}async function Jt(e){var t=jt(e);const n=await Qt(),r=n.transaction(Gt,"readwrite");await r.objectStore(Gt).delete(t),await r.done}async function Xt(e,t){var n=jt(e);const r=await Qt(),i=r.transaction(Gt,"readwrite"),s=i.objectStore(Gt);var a=await s.get(n),o=t(a);return void 0===o?await s.delete(n):await s.put(o,n),await i.done,!o||a&&a.fid===o.fid||$t(e,o.fid),o}async function Zt(n){let r;var e=await Xt(n.appConfig,e=>{var t=tn(e||{fid:Bt(),registrationStatus:0}),t=function(e,t){{if(0!==t.registrationStatus)return 1===t.registrationStatus?{installationEntry:t,registrationPromise:async function(e){let t=await en(e.appConfig);for(;1===t.registrationStatus;)await Ut(100),t=await en(e.appConfig);if(0!==t.registrationStatus)return t;{var{installationEntry:n,registrationPromise:r}=await Zt(e);return r||n}}(e)}:{installationEntry:t};if(!navigator.onLine){var n=Promise.reject(Rt.create("app-offline"));return{installationEntry:t,registrationPromise:n}}var r={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},n=async function(t,n){try{var e=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Dt(e),i=Mt(e),s=t.getImmediate({optional:!0});!s||(a=await s.getHeartbeatsHeader())&&i.append("x-firebase-client",a);var a={fid:n,authVersion:kt,appId:e.appId,sdkVersion:St};const o={method:"POST",headers:i,body:JSON.stringify(a)},c=await Ft(()=>fetch(r,o));if(c.ok){a=await c.json();return{fid:a.fid||n,registrationStatus:2,refreshToken:a.refreshToken,authToken:xt(a.authToken)}}throw await Ot("Create Installation",c)}(t,n);return Yt(t.appConfig,e)}catch(e){throw Pt(e)&&409===e.customData.serverCode?await Jt(t.appConfig):await Yt(t.appConfig,{fid:n.fid,registrationStatus:0}),e}}(e,r);return{installationEntry:r,registrationPromise:n}}}(n,t);return r=t.registrationPromise,t.installationEntry});return e.fid===qt?{installationEntry:await r}:{installationEntry:e,registrationPromise:r}}function en(e){return Xt(e,e=>{if(!e)throw Rt.create("installation-not-found");return tn(e)})}function tn(e){return 1===(t=e).registrationStatus&&t.registrationTime+Ct<Date.now()?{fid:e.fid,registrationStatus:0}:e;var t}async function nn({appConfig:e,heartbeatServiceProvider:t},n){const r=([i,s]=[e,n["fid"]],`${Dt(i)}/${s}/authTokens:generate`);var i,s;const a=Lt(e,n),o=t.getImmediate({optional:!0});!o||(c=await o.getHeartbeatsHeader())&&a.append("x-firebase-client",c);var c={installation:{sdkVersion:St,appId:e.appId}};const l={method:"POST",headers:a,body:JSON.stringify(c)},u=await Ft(()=>fetch(r,l));if(u.ok)return xt(await u.json());throw await Ot("Generate Auth Token",u)}async function rn(r,i=!1){let s;var e=await Xt(r.appConfig,e=>{if(!an(e))throw Rt.create("not-registered");var t,n=e.authToken;if(i||2!==(t=n).requestStatus||function(e){var t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+Nt}(t)){if(1===n.requestStatus)return s=async function(e,t){let n=await sn(e.appConfig);for(;1===n.authToken.requestStatus;)await Ut(100),n=await sn(e.appConfig);var r=n.authToken;return 0===r.requestStatus?rn(e,t):r}(r,i),e;if(!navigator.onLine)throw Rt.create("app-offline");n=(t=e,n={requestStatus:1,requestTime:Date.now()},Object.assign(Object.assign({},t),{authToken:n}));return s=async function(t,n){try{var r=await nn(t,n),e=Object.assign(Object.assign({},n),{authToken:r});return await Yt(t.appConfig,e),r}catch(e){throw!Pt(e)||401!==e.customData.serverCode&&404!==e.customData.serverCode?(r=Object.assign(Object.assign({},n),{authToken:{requestStatus:0}}),await Yt(t.appConfig,r)):await Jt(t.appConfig),e}}(r,n),n}return e});return s?await s:e.authToken}function sn(e){return Xt(e,e=>{if(!an(e))throw Rt.create("not-registered");var t,n=e.authToken;return 1===(t=n).requestStatus&&t.requestTime+Ct<Date.now()?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e})}function an(e){return void 0!==e&&2===e.registrationStatus}async function on(e,t=!1){var n,r=e;return await((n=(await Zt(r)).registrationPromise)&&await n),(await rn(r,t)).token}function cn(e){return Rt.create("missing-app-config-values",{valueName:e})}const ln="installations",un=e=>{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:function(e){if(!e||!e.options)throw cn("App Configuration");if(!e.name)throw cn("App Name");for(const t of["projectId","apiKey","appId"])if(!e.options[t])throw cn(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t),heartbeatServiceProvider:Qe(t,"heartbeat"),_delete:()=>Promise.resolve()}},hn=e=>{const t=Qe(e.getProvider("app").getImmediate(),ln).getImmediate();return{getId:()=>async function(e){var t=e;const{installationEntry:n,registrationPromise:r}=await Zt(t);return(r||rn(t)).catch(console.error),n.fid}(t),getToken:e=>on(t,e)}};He(new le(ln,un,"PUBLIC")),He(new le("installations-internal",hn,"PRIVATE")),nt(Tt,Et),nt(Tt,Et,"esm2017");const dn="analytics",pn="firebase_id",fn="origin",gn="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",mn="https://www.googletagmanager.com/gtag/js",vn=new _e("@firebase/analytics"),_n=new x("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function yn(e){if(e.startsWith(mn))return e;var t=_n.create("invalid-gtag-resource",{gtagURL:e});return vn.warn(t.message),""}function wn(e){return Promise.all(e.map(e=>e.catch(e=>e)))}function bn(e,t){const n=function(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy(e,t)),n}("firebase-js-sdk-policy",{createScriptURL:yn}),r=document.createElement("script");var i=`${mn}?l=${e}&id=${t}`;r.src=n?null===n||void 0===n?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}function In(h,d,p,f){return async function(e,...t){try{var n,r,i,s,a,o,c,l,u;"event"===e?([n,r]=t,await async function(e,n,r,i,s){try{let t=[];if(s&&s.send_to){let e=s.send_to;Array.isArray(e)||(e=[e]);const c=await wn(r);for(const l of e){var a=c.find(e=>e.measurementId===l),o=a&&n[a.appId];if(!o){t=[];break}t.push(o)}}0===t.length&&(t=Object.values(n)),await Promise.all(t),e("event",i,s||{})}catch(e){vn.error(e)}}(h,d,p,n,r)):"config"===e?([i,s]=t,await async function(e,t,n,r,i,s){var a=r[i];try{if(a)await t[a];else{const c=await wn(n);var o=c.find(e=>e.measurementId===i);o&&await t[o.appId]}}catch(e){vn.error(e)}e("config",i,s)}(h,d,p,f,i,s)):"consent"===e?([a]=t,h("consent","update",a)):"get"===e?([o,c,l]=t,h("get",o,c,l)):"set"===e?([u]=t,h("set",u)):h(e,...t)}catch(e){vn.error(e)}}}const Tn=30;const En=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};async function Cn(e){var t,{appId:n,apiKey:r}=e,r={method:"GET",headers:new Headers({Accept:"application/json","x-goog-api-key":r})},n=gn.replace("{app-id}",n);const i=await fetch(n,r);if(200===i.status||304===i.status)return i.json();{let e="";try{var s=await i.json();null!==(t=s.error)&&void 0!==t&&t.message&&(e=s.error.message)}catch(e){}throw _n.create("config-fetch-failed",{httpStatus:i.status,responseMessage:e})}}async function Sn(e,t=En,n){var{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw _n.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw _n.create("no-api-key")}var a=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()};const o=new Nn;return setTimeout(async()=>{o.abort()},void 0!==n?n:6e4),async function t(n,{throttleEndTimeMillis:e,backoffCount:r},i,s=En){var a;const{appId:o,measurementId:c}=n;try{await kn(i,e)}catch(e){if(c)return vn.warn("Timed out fetching this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${c}`+` provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:o,measurementId:c};throw e}try{const l=await Cn(n);return s.deleteThrottleMetadata(o),l}catch(e){const u=e;if(!An(u)){if(s.deleteThrottleMetadata(o),c)return vn.warn("Failed to fetch this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${c}`+` provided in the "measurementId" field in the local Firebase config. [${null===u||void 0===u?void 0:u.message}]`),{appId:o,measurementId:c};throw e}const h=503===Number(null===(a=null===u||void 0===u?void 0:u.customData)||void 0===a?void 0:a.httpStatus)?oe(r,s.intervalMillis,Tn):oe(r,s.intervalMillis),d={throttleEndTimeMillis:Date.now()+h,backoffCount:r+1};return s.setThrottleMetadata(o,d),vn.debug(`Calling attemptFetch again in ${h} millis`),t(n,d,i,s)}}({appId:r,apiKey:i,measurementId:s},a,o,t)}function kn(i,s){return new Promise((e,t)=>{var n=Math.max(s-Date.now(),0);const r=setTimeout(e,n);i.addEventListener(()=>{clearTimeout(r),t(_n.create("fetch-throttle",{throttleEndTimeMillis:s}))})})}function An(e){if(!(e instanceof D&&e.customData))return!1;var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}class Nn{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function Rn(t,e,n,r,i,s,a){const o=Sn(t);o.then(e=>{n[e.measurementId]=e.appId,t.options.measurementId&&e.measurementId!==t.options.measurementId&&vn.warn(`The measurement ID in the local Firebase config (${t.options.measurementId})`+` does not match the measurement ID fetched from the server (${e.measurementId}).`+" To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.")}).catch(e=>vn.error(e)),e.push(o);var c=async function(){if(!N())return vn.warn(_n.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await R()}catch(e){return vn.warn(_n.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}().then(e=>{if(e)return r.getId()}),[l,u]=await Promise.all([o,c]);!function(e){var t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(mn)&&n.src.includes(e))return n}(s)&&bn(s,l.measurementId),i("js",new Date);const h=null!==(c=null==a?void 0:a.config)&&void 0!==c?c:{};return h[fn]="firebase",h.update=!0,null!=u&&(h[pn]=u),i("config",l.measurementId,h),l.measurementId}class Pn{constructor(e){this.app=e}_delete(){return delete Dn[this.app.options.appId],Promise.resolve()}}let Dn={},xn=[];const On={};let Mn="dataLayer",Ln="gtag",Fn,Un,Vn=!1;function qn(e){if(Vn)throw _n.create("already-initialized");e.dataLayerName&&(Mn=e.dataLayerName),e.gtagName&&(Ln=e.gtagName)}function Bn(e,t,n){!function(){const e=[];var t;E()&&e.push("This is a browser extension environment."),P()||e.push("Cookies are not available."),0<e.length&&(t=e.map((e,t)=>`(${t+1}) ${e}`).join(" "),t=_n.create("invalid-analytics-context",{errorInfo:t}),vn.warn(t.message))}();var r,i,s=e.options.appId;if(!s)throw _n.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw _n.create("no-api-key");vn.warn('The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest'+` measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId}`+' provided in the "measurementId" field in the local Firebase config.')}if(null!=Dn[s])throw _n.create("already-exists",{id:s});return Vn||(function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t,t}(Mn),{wrappedGtag:r,gtagCore:i}=function(e,t,n,r,i){let s=function(){window[r].push(arguments)};return window[i]&&"function"==typeof window[i]&&(s=window[i]),window[i]=In(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(Dn,xn,On,Mn,Ln),Un=r,Fn=i,Vn=!0),Dn[s]=Rn(e,xn,On,t,Fn,Mn,n),new Pn(e)}async function jn(){if(E())return!1;if(!P())return!1;if(!N())return!1;try{return await R()}catch(e){return!1}}function zn(e,t,n){e=ce(e),async function(e,t,n,r){if(r&&r.global)return e("set",{screen_name:n}),Promise.resolve();e("config",await t,{update:!0,screen_name:n})}(Un,Dn[e.app.options.appId],t,n).catch(e=>vn.error(e))}function $n(e,t,n){e=ce(e),async function(e,t,n,r){if(r&&r.global)return e("set",{user_id:n}),Promise.resolve();e("config",await t,{update:!0,user_id:n})}(Un,Dn[e.app.options.appId],t,n).catch(e=>vn.error(e))}function Kn(e,t,n){e=ce(e),async function(e,t,n,r){if(r&&r.global){const i={};for(const s of Object.keys(n))i[`user_properties.${s}`]=n[s];return e("set",i),Promise.resolve()}e("config",await t,{update:!0,user_properties:n})}(Un,Dn[e.app.options.appId],t,n).catch(e=>vn.error(e))}function Wn(e,t){e=ce(e),async function(e,t){var n=await e;window[`ga-disable-${n}`]=!t}(Dn[e.app.options.appId],t).catch(e=>vn.error(e))}function Gn(e,t,n,r){e=ce(e),async function(e,t,n,r,i){var s;i&&i.global?e("event",n,r):(s=await t,e("event",n,Object.assign(Object.assign({},r),{send_to:s})))}(Un,Dn[e.app.options.appId],t,n,r).catch(e=>vn.error(e))}const Hn="@firebase/analytics";He(new le(dn,(e,{options:t})=>{return Bn(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)},"PUBLIC")),He(new le("analytics-internal",function(e){try{const r=e.getProvider(dn).getImmediate();return{logEvent:(e,t,n)=>Gn(r,e,t,n)}}catch(e){throw _n.create("interop-component-reg-failed",{reason:e})}},"PRIVATE")),nt(Hn,"0.10.1"),nt(Hn,"0.10.1","esm2017");var Qn,Yn;class Jn{constructor(e,t){this.app=e,this._delegate=t}logEvent(e,t,n){Gn(this._delegate,e,t,n)}setCurrentScreen(e,t){zn(this._delegate,e,t)}setUserId(e,t){$n(this._delegate,e,t)}setUserProperties(e,t){Kn(this._delegate,e,t)}setAnalyticsCollectionEnabled(e){Wn(this._delegate,e)}}(Hk=Qn=Qn||{}).ADD_SHIPPING_INFO="add_shipping_info",Hk.ADD_PAYMENT_INFO="add_payment_info",Hk.ADD_TO_CART="add_to_cart",Hk.ADD_TO_WISHLIST="add_to_wishlist",Hk.BEGIN_CHECKOUT="begin_checkout",Hk.CHECKOUT_PROGRESS="checkout_progress",Hk.EXCEPTION="exception",Hk.GENERATE_LEAD="generate_lead",Hk.LOGIN="login",Hk.PAGE_VIEW="page_view",Hk.PURCHASE="purchase",Hk.REFUND="refund",Hk.REMOVE_FROM_CART="remove_from_cart",Hk.SCREEN_VIEW="screen_view",Hk.SEARCH="search",Hk.SELECT_CONTENT="select_content",Hk.SELECT_ITEM="select_item",Hk.SELECT_PROMOTION="select_promotion",Hk.SET_CHECKOUT_OPTION="set_checkout_option",Hk.SHARE="share",Hk.SIGN_UP="sign_up",Hk.TIMING_COMPLETE="timing_complete",Hk.VIEW_CART="view_cart",Hk.VIEW_ITEM="view_item",Hk.VIEW_ITEM_LIST="view_item_list",Hk.VIEW_PROMOTION="view_promotion",Hk.VIEW_SEARCH_RESULTS="view_search_results";const Xn=e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("analytics").getImmediate();return new Jn(t,n)};Yn={Analytics:Jn,settings:qn,isSupported:jn,EventName:Qn},It.INTERNAL.registerComponent(new le("analytics-compat",Xn,"PUBLIC").setServiceProps(Yn).setMultipleInstances(!0)),It.registerVersion("@firebase/analytics-compat","0.2.7");const Zn=new Map,er={activated:!1,tokenObservers:[]},tr={initialized:!1,enabled:!1};function nr(e){return Zn.get(e)||Object.assign({},er)}const rr="https://content-firebaseappcheck.googleapis.com/v1",ir="exchangeDebugToken",sr={OFFSET_DURATION:3e5,RETRIAL_MIN_WAIT:3e4,RETRIAL_MAX_WAIT:96e4};class ar{constructor(e,t,n,r,i){if(this.operation=e,this.retryPolicy=t,this.getWaitDuration=n,this.lowerBound=r,this.upperBound=i,this.pending=null,i<(this.nextErrorWaitInterval=r))throw new Error("Proactive refresh lower bound greater than upper bound!")}start(){this.nextErrorWaitInterval=this.lowerBound,this.process(!0).catch(()=>{})}stop(){this.pending&&(this.pending.reject("cancelled"),this.pending=null)}isRunning(){return!!this.pending}async process(e){this.stop();try{this.pending=new y,this.pending.promise.catch(e=>{}),t=this.getNextRun(e),await new Promise(e=>{setTimeout(e,t)}),this.pending.resolve(),await this.pending.promise,this.pending=new y,this.pending.promise.catch(e=>{}),await this.operation(),this.pending.resolve(),await this.pending.promise,this.process(!0).catch(()=>{})}catch(e){this.retryPolicy(e)?this.process(!1).catch(()=>{}):this.stop()}var t}getNextRun(e){if(e)return this.nextErrorWaitInterval=this.lowerBound,this.getWaitDuration();var t=this.nextErrorWaitInterval;return this.nextErrorWaitInterval*=2,this.nextErrorWaitInterval>this.upperBound&&(this.nextErrorWaitInterval=this.upperBound),t}}const or=new x("appCheck","AppCheck",{"already-initialized":"You have already called initializeAppCheck() for FirebaseApp {$appName} with different options. To avoid this error, call initializeAppCheck() with the same options as when it was originally called. This will return the already initialized instance.","use-before-activation":"App Check is being used before initializeAppCheck() is called for FirebaseApp {$appName}. Call initializeAppCheck() before instantiating other Firebase services.","fetch-network-error":"Fetch failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-parse-error":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status-error":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","recaptcha-error":"ReCAPTCHA error.",throttled:"Requests throttled due to {$httpStatus} error. Attempts allowed again after {$time}"});function cr(e=!1){var t;return e?null===(t=self.grecaptcha)||void 0===t?void 0:t.enterprise:self.grecaptcha}function lr(e){if(!nr(e).activated)throw or.create("use-before-activation",{appName:e.name})}function ur(e){var t=Math.round(e/1e3),n=Math.floor(t/86400),r=Math.floor((t-3600*n*24)/3600),i=Math.floor((t-3600*n*24-3600*r)/60),t=t-3600*n*24-3600*r-60*i;let s="";return n&&(s+=hr(n)+"d:"),r&&(s+=hr(r)+"h:"),s+=hr(i)+"m:"+hr(t)+"s",s}function hr(e){return 0===e?"00":10<=e?e.toString():"0"+e}async function dr({url:e,body:t},n){const r={"Content-Type":"application/json"},i=n.getImmediate({optional:!0});!i||(c=await i.getHeartbeatsHeader())&&(r["X-Firebase-Client"]=c);var s={method:"POST",body:JSON.stringify(t),headers:r};let a;try{a=await fetch(e,s)}catch(e){throw or.create("fetch-network-error",{originalErrorMessage:null==e?void 0:e.message})}if(200!==a.status)throw or.create("fetch-status-error",{httpStatus:a.status});let o;try{o=await a.json()}catch(e){throw or.create("fetch-parse-error",{originalErrorMessage:null==e?void 0:e.message})}var c=o.ttl.match(/^([\d.]+)(s)$/);if(!c||!c[2]||isNaN(Number(c[1])))throw or.create("fetch-parse-error",{originalErrorMessage:"ttl field (timeToLive) is not in standard Protobuf Duration "+`format: ${o.ttl}`});s=1e3*Number(c[1]),c=Date.now();return{token:o.token,expireTimeMillis:c+s,issuedAtTimeMillis:c}}function pr(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${rr}/projects/${n}/apps/${r}:${ir}?key=${i}`,body:{debug_token:t}}}const fr="firebase-app-check-database",gr=1,mr="firebase-app-check-store",vr="debug-token";let _r=null;function yr(){return _r||(_r=new Promise((t,n)=>{try{const e=indexedDB.open(fr,gr);e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{var t;n(or.create("storage-open",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(mr,{keyPath:"compositeKey"})}}catch(e){n(or.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}}),_r)}async function wr(e,t){const n=await yr(),r=n.transaction(mr,"readwrite"),i=r.objectStore(mr),s=i.put({compositeKey:e,value:t});return new Promise((t,n)=>{s.onsuccess=e=>{t()},r.onerror=e=>{var t;n(or.create("storage-set",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}async function br(e){const t=await yr(),i=t.transaction(mr,"readonly"),n=i.objectStore(mr),s=n.get(e);return new Promise((n,r)=>{s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)},i.onerror=e=>{var t;r(or.create("storage-get",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}function Ir(e){return`${e.options.appId}-${e.name}`}const Tr=new _e("@firebase/app-check");async function Er(t){if(N()){let e=void 0;try{e=await br(Ir(t))}catch(e){Tr.warn(`Failed to read token from IndexedDB. Error: ${e}`)}return e}}function Cr(e,t){return N()?wr(Ir(e),t).catch(e=>{Tr.warn(`Failed to write token to IndexedDB. Error: ${e}`)}):Promise.resolve()}async function Sr(){let e=void 0;try{e=await br(vr)}catch(e){}if(e)return e;var t,n=te();return t=n,wr(vr,t).catch(e=>Tr.warn(`Failed to persist debug token to IndexedDB. Error: ${e}`)),n}function kr(){return tr.enabled}async function Ar(){var e=tr;if(e.enabled&&e.token)return e.token.promise;throw Error(`
Can't get debug token in production mode.
`)}const Nr={error:"UNKNOWN_ERROR"};async function Rr(e,t=!1){var n=e.app;lr(n);const r=nr(n);let i=r.token,s=void 0;if(i&&!Mr(i)&&(r.token=void 0,i=void 0),i||(o=await r.cachedTokenPromise)&&(Mr(o)?i=o:await Cr(n,void 0)),!t&&i&&Mr(i))return{token:i.token};let a=!1;if(kr()){r.exchangeTokenPromise||(r.exchangeTokenPromise=dr(pr(n,await Ar()),e.heartbeatServiceProvider).finally(()=>{r.exchangeTokenPromise=void 0}),a=!0);var o=await r.exchangeTokenPromise;return await Cr(n,o),{token:(r.token=o).token}}try{r.exchangeTokenPromise||(r.exchangeTokenPromise=r.provider.getToken().finally(()=>{r.exchangeTokenPromise=void 0}),a=!0),i=await nr(n).exchangeTokenPromise}catch(e){"appCheck/throttled"===e.code?Tr.warn(e.message):Tr.error(e),s=e}let c;return i?s?c=Mr(i)?{token:i.token,internalError:s}:Lr(s):(c={token:i.token},r.token=i,await Cr(n,i)):c=Lr(s),a&&Or(n,c),c}function Pr(e,t,n,r){var i=e["app"];const s=nr(i);i={next:n,error:r,type:t};if(s.tokenObservers=[...s.tokenObservers,i],s.token&&Mr(s.token)){const a=s.token;Promise.resolve().then(()=>{n({token:a.token}),xr(e)}).catch(()=>{})}s.cachedTokenPromise.then(()=>xr(e))}function Dr(e,t){const n=nr(e);var r=n.tokenObservers.filter(e=>e.next!==t);0===r.length&&n.tokenRefresher&&n.tokenRefresher.isRunning()&&n.tokenRefresher.stop(),n.tokenObservers=r}function xr(e){var t=e["app"];const n=nr(t);let r=n.tokenRefresher;r||(r=function(n){const r=n["app"];return new ar(async()=>{var e=nr(r);let t;if(t=e.token?await Rr(n,!0):await Rr(n),t.error)throw t.error;if(t.internalError)throw t.internalError},()=>!0,()=>{var e=nr(r);if(e.token){var t=e.token.issuedAtTimeMillis+.5*(e.token.expireTimeMillis-e.token.issuedAtTimeMillis)+3e5,e=e.token.expireTimeMillis-3e5,t=Math.min(t,e);return Math.max(0,t-Date.now())}return 0},sr.RETRIAL_MIN_WAIT,sr.RETRIAL_MAX_WAIT)}(e),n.tokenRefresher=r),!r.isRunning()&&n.isTokenAutoRefreshEnabled&&r.start()}function Or(e,t){for(const n of nr(e).tokenObservers)try{"EXTERNAL"===n.type&&null!=t.error?n.error(t.error):n.next(t)}catch(e){}}function Mr(e){return 0<e.expireTimeMillis-Date.now()}function Lr(e){return{token:(t=Nr,r.encodeString(JSON.stringify(t),!1)),error:e};var t}class Fr{constructor(e,t){this.app=e,this.heartbeatServiceProvider=t}_delete(){var e=nr(this.app)["tokenObservers"];for(const t of e)Dr(this.app,t.next);return Promise.resolve()}}function Ur(t){return{getToken:e=>Rr(t,e),getLimitedUseToken:()=>async function(e){var t=e.app;lr(t);const n=nr(t)["provider"];if(kr()){var r=(await dr(pr(t,await Ar()),e.heartbeatServiceProvider))["token"];return{token:r}}return{token:r=(await n.getToken())["token"]}}(t),addTokenListener:e=>Pr(t,"INTERNAL",e),removeTokenListener:e=>Dr(t.app,e)}}const Vr="https://www.google.com/recaptcha/api.js",qr="https://www.google.com/recaptcha/enterprise.js";function Br(t,n){const r=new y,e=nr(t);e.reCAPTCHAState={initialized:r};const i=$r(t);var s=cr(!1);return s?zr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=Vr,t.onload=e,document.head.appendChild(t)}(()=>{var e=cr(!1);if(!e)throw new Error("no recaptcha");zr(t,n,e,i,r)}),r.promise}function jr(t,n){const r=new y,e=nr(t);e.reCAPTCHAState={initialized:r};const i=$r(t);var s=cr(!0);return s?zr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=qr,t.onload=e,document.head.appendChild(t)}(()=>{var e=cr(!0);if(!e)throw new Error("no recaptcha");zr(t,n,e,i,r)}),r.promise}function zr(e,t,n,r,i){n.ready(()=>{!function(e,t,n,r){const i=n.render(r,{sitekey:t,size:"invisible",callback:()=>{nr(e).reCAPTCHAState.succeeded=!0},"error-callback":()=>{nr(e).reCAPTCHAState.succeeded=!1}}),s=nr(e);s.reCAPTCHAState=Object.assign(Object.assign({},s.reCAPTCHAState),{widgetId:i})}(e,t,n,r),i.resolve(n)})}function $r(e){var t=`fire_app_check_${e.name}`;const n=document.createElement("div");return n.id=t,n.style.display="none",document.body.appendChild(n),t}async function Kr(r){lr(r);const i=await nr(r).reCAPTCHAState.initialized.promise;return new Promise((e,t)=>{const n=nr(r).reCAPTCHAState;i.ready(()=>{e(i.execute(n.widgetId,{action:"fire_app_check"}))})})}class Wr{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){var e;Yr(this._throttleData);var t=await Kr(this._app).catch(e=>{throw or.create("recaptcha-error")});if(null===(e=nr(this._app).reCAPTCHAState)||void 0===e||!e.succeeded)throw or.create("recaptcha-error");let n;try{n=await dr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${rr}/projects/${n}/apps/${r}:exchangeRecaptchaV3Token?key=${i}`,body:{recaptcha_v3_token:t}}}(this._app,t),this._heartbeatServiceProvider)}catch(e){throw null!==(t=e.code)&&void 0!==t&&t.includes("fetch-status-error")?(this._throttleData=Qr(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),or.create("throttled",{time:ur(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,n}initialize(e){this._app=e,this._heartbeatServiceProvider=Qe(e,"heartbeat"),Br(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof Wr&&this._siteKey===e._siteKey}}class Gr{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){var e;Yr(this._throttleData);var t=await Kr(this._app).catch(e=>{throw or.create("recaptcha-error")});if(null===(e=nr(this._app).reCAPTCHAState)||void 0===e||!e.succeeded)throw or.create("recaptcha-error");let n;try{n=await dr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${rr}/projects/${n}/apps/${r}:exchangeRecaptchaEnterpriseToken?key=${i}`,body:{recaptcha_enterprise_token:t}}}(this._app,t),this._heartbeatServiceProvider)}catch(e){throw null!==(t=e.code)&&void 0!==t&&t.includes("fetch-status-error")?(this._throttleData=Qr(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),or.create("throttled",{time:ur(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,n}initialize(e){this._app=e,this._heartbeatServiceProvider=Qe(e,"heartbeat"),jr(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof Gr&&this._siteKey===e._siteKey}}class Hr{constructor(e){this._customProviderOptions=e}async getToken(){var e=await this._customProviderOptions.getToken(),t=function(e){const t=F(e).claims;return"object"==typeof t&&t.hasOwnProperty("iat")?t.iat:null}(e.token),t=null!==t&&t<Date.now()&&0<t?1e3*t:Date.now();return Object.assign(Object.assign({},e),{issuedAtTimeMillis:t})}initialize(e){this._app=e}isEqual(e){return e instanceof Hr&&this._customProviderOptions.getToken.toString()===e._customProviderOptions.getToken.toString()}}function Qr(e,t){if(404===e||403===e)return{backoffCount:1,allowRequestsAfter:Date.now()+864e5,httpStatus:e};var n=t?t.backoffCount:0,r=oe(n,1e3,2);return{backoffCount:n+1,allowRequestsAfter:Date.now()+r,httpStatus:e}}function Yr(e){if(e&&Date.now()-e.allowRequestsAfter<=0)throw or.create("throttled",{time:ur(e.allowRequestsAfter-Date.now()),httpStatus:e.httpStatus})}function Jr(e=et(),t){const n=Qe(e=ce(e),"app-check");if(tr.initialized||function(){var e=o();const t=tr;if(t.initialized=!0,"string"==typeof e.FIREBASE_APPCHECK_DEBUG_TOKEN||!0===e.FIREBASE_APPCHECK_DEBUG_TOKEN){t.enabled=!0;const n=new y;t.token=n,"string"==typeof e.FIREBASE_APPCHECK_DEBUG_TOKEN?n.resolve(e.FIREBASE_APPCHECK_DEBUG_TOKEN):n.resolve(Sr())}}(),kr()&&Ar().then(e=>console.log(`App Check debug token: ${e}. You will need to add it to your app's App Check settings in the Firebase console for it to work.`)),n.isInitialized()){var r=n.getImmediate();const i=n.getOptions();if(i.isTokenAutoRefreshEnabled===t.isTokenAutoRefreshEnabled&&i.provider.isEqual(t.provider))return r;throw or.create("already-initialized",{appName:e.name})}r=n.initialize({options:t});return function(t,e,n){const r=function(e,t){return Zn.set(e,t),Zn.get(e)}(t,Object.assign({},er));r.activated=!0,r.provider=e,r.cachedTokenPromise=Er(t).then(e=>(e&&Mr(e)&&(r.token=e,Or(t,{token:e.token})),e)),r.isTokenAutoRefreshEnabled=void 0===n?t.automaticDataCollectionEnabled:n,r.provider.initialize(t)}(e,t.provider,t.isTokenAutoRefreshEnabled),nr(e).isTokenAutoRefreshEnabled&&Pr(r,"INTERNAL",()=>{}),r}const Xr="app-check-internal";He(new le("app-check",e=>{var t,n=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat");return t=n,e=r,new Fr(t,e)},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{e.getProvider(Xr).initialize()})),He(new le(Xr,e=>{return Ur(e.getProvider("app-check").getImmediate())},"PUBLIC").setInstantiationMode("EXPLICIT")),nt("@firebase/app-check","0.8.2");const Zr=new x("appCheck","AppCheck",{"use-before-activation":"App Check is being used before activate() is called for FirebaseApp {$appName}. Call activate() before instantiating other Firebase services."});class ei{constructor(e){this.app=e}activate(e,t){let n;n="string"==typeof e?new Wr(e):e instanceof Gr||e instanceof Wr||e instanceof Hr?e:new Hr({getToken:e.getToken}),this._delegate=Jr(this.app,{provider:n,isTokenAutoRefreshEnabled:t})}setTokenAutoRefreshEnabled(e){if(!this._delegate)throw Zr.create("use-before-activation",{appName:this.app.name});!function(e,t){const n=nr(e.app);n.tokenRefresher&&(!0===t?n.tokenRefresher.start():n.tokenRefresher.stop()),n.isTokenAutoRefreshEnabled=t}(this._delegate,e)}getToken(e){if(!this._delegate)throw Zr.create("use-before-activation",{appName:this.app.name});return async function(e,t){var n=await Rr(e,t);if(n.error)throw n.error;return{token:n.token}}(this._delegate,e)}onTokenChanged(e,t,n){if(!this._delegate)throw Zr.create("use-before-activation",{appName:this.app.name});return function(e,t,n){let r=()=>{},i=()=>{};return r=null!=t.next?t.next.bind(t):t,null!=t.error?i=t.error.bind(t):n&&(i=n),Pr(e,"EXTERNAL",r,i),()=>Dr(e.app,r)}(this._delegate,e,t)}}const ti=e=>{var t=e.getProvider("app-compat").getImmediate();return new ei(t)};function ni(e,t){var n={};for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]]);return n}It.INTERNAL.registerComponent(new le("appCheck-compat",ti,"PUBLIC").setServiceProps({ReCaptchaEnterpriseProvider:Gr,ReCaptchaV3Provider:Wr,CustomProvider:Hr})),It.registerVersion("@firebase/app-check-compat","0.3.9");const ri={FACEBOOK:"facebook.com",GITHUB:"github.com",GOOGLE:"google.com",PASSWORD:"password",PHONE:"phone",TWITTER:"twitter.com"},ii={EMAIL_SIGNIN:"EMAIL_SIGNIN",PASSWORD_RESET:"PASSWORD_RESET",RECOVER_EMAIL:"RECOVER_EMAIL",REVERT_SECOND_FACTOR_ADDITION:"REVERT_SECOND_FACTOR_ADDITION",VERIFY_AND_CHANGE_EMAIL:"VERIFY_AND_CHANGE_EMAIL",VERIFY_EMAIL:"VERIFY_EMAIL"};function si(){return{"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."}}function ai(){return{"admin-restricted-operation":"This operation is restricted to administrators only.","argument-error":"","app-not-authorized":"This app, identified by the domain where it's hosted, is not authorized to use Firebase Authentication with the provided API key. Review your key configuration in the Google API console.","app-not-installed":"The requested mobile application corresponding to the identifier (Android package name or iOS bundle ID) provided is not installed on this device.","captcha-check-failed":"The reCAPTCHA response token provided is either invalid, expired, already used or the domain associated with it does not match the list of whitelisted domains.","code-expired":"The SMS code has expired. Please re-send the verification code to try again.","cordova-not-ready":"Cordova framework is not ready.","cors-unsupported":"This browser is not supported.","credential-already-in-use":"This credential is already associated with a different user account.","custom-token-mismatch":"The custom token corresponds to a different audience.","requires-recent-login":"This operation is sensitive and requires recent authentication. Log in again before retrying this request.","dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK.","dynamic-link-not-activated":"Please activate Dynamic Links in the Firebase Console and agree to the terms and conditions.","email-change-needs-verification":"Multi-factor users must always have a verified email.","email-already-in-use":"The email address is already in use by another account.","emulator-config-failed":'Auth instance has already been used to make a network call. Auth can no longer be configured to use the emulator. Try calling "connectAuthEmulator()" sooner.',"expired-action-code":"The action code has expired.","cancelled-popup-request":"This operation has been cancelled due to another conflicting popup being opened.","internal-error":"An internal AuthError has occurred.","invalid-app-credential":"The phone verification request contains an invalid application verifier. The reCAPTCHA token response is either invalid or expired.","invalid-app-id":"The mobile app identifier is not registed for the current project.","invalid-user-token":"This user's credential isn't valid for this project. This can happen if the user's token has been tampered with, or if the user isn't for the project associated with this API key.","invalid-auth-event":"An internal AuthError has occurred.","invalid-verification-code":"The SMS verification code used to create the phone auth credential is invalid. Please resend the verification code sms and be sure to use the verification code provided by the user.","invalid-continue-uri":"The continue URL provided in the request is invalid.","invalid-cordova-configuration":"The following Cordova plugins must be installed to enable OAuth sign-in: cordova-plugin-buildinfo, cordova-universal-links-plugin, cordova-plugin-browsertab, cordova-plugin-inappbrowser and cordova-plugin-customurlscheme.","invalid-custom-token":"The custom token format is incorrect. Please check the documentation.","invalid-dynamic-link-domain":"The provided dynamic link domain is not configured or authorized for the current project.","invalid-email":"The email address is badly formatted.","invalid-emulator-scheme":"Emulator URL must start with a valid scheme (http:// or https://).","invalid-api-key":"Your API key is invalid, please check you have copied it correctly.","invalid-cert-hash":"The SHA-1 certificate hash provided is invalid.","invalid-credential":"The supplied auth credential is incorrect, malformed or has expired.","invalid-message-payload":"The email template corresponding to this action contains invalid characters in its message. Please fix by going to the Auth email templates section in the Firebase Console.","invalid-multi-factor-session":"The request does not contain a valid proof of first factor successful sign-in.","invalid-oauth-provider":"EmailAuthProvider is not supported for this operation. This operation only supports OAuth providers.","invalid-oauth-client-id":"The OAuth client ID provided is either invalid or does not match the specified API key.","unauthorized-domain":"This domain is not authorized for OAuth operations for your Firebase project. Edit the list of authorized domains from the Firebase console.","invalid-action-code":"The action code is invalid. This can happen if the code is malformed, expired, or has already been used.","wrong-password":"The password is invalid or the user does not have a password.","invalid-persistence-type":"The specified persistence type is invalid. It can only be local, session or none.","invalid-phone-number":"The format of the phone number provided is incorrect. Please enter the phone number in a format that can be parsed into E.164 format. E.164 phone numbers are written in the format [+][country code][subscriber number including area code].","invalid-provider-id":"The specified provider ID is invalid.","invalid-recipient-email":"The email corresponding to this action failed to send as the provided recipient email address is invalid.","invalid-sender":"The email template corresponding to this action contains an invalid sender email or name. Please fix by going to the Auth email templates section in the Firebase Console.","invalid-verification-id":"The verification ID used to create the phone auth credential is invalid.","invalid-tenant-id":"The Auth instance's tenant ID is invalid.","login-blocked":"Login blocked by user-provided method: {$originalMessage}","missing-android-pkg-name":"An Android Package Name must be provided if the Android App is required to be installed.","auth-domain-config-required":"Be sure to include authDomain when calling firebase.initializeApp(), by following the instructions in the Firebase console.","missing-app-credential":"The phone verification request is missing an application verifier assertion. A reCAPTCHA response token needs to be provided.","missing-verification-code":"The phone auth credential was created with an empty SMS verification code.","missing-continue-uri":"A continue URL must be provided in the request.","missing-iframe-start":"An internal AuthError has occurred.","missing-ios-bundle-id":"An iOS Bundle ID must be provided if an App Store ID is provided.","missing-or-invalid-nonce":"The request does not contain a valid nonce. This can occur if the SHA-256 hash of the provided raw nonce does not match the hashed nonce in the ID token payload.","missing-password":"A non-empty password must be provided","missing-multi-factor-info":"No second factor identifier is provided.","missing-multi-factor-session":"The request is missing proof of first factor successful sign-in.","missing-phone-number":"To send verification codes, provide a phone number for the recipient.","missing-verification-id":"The phone auth credential was created with an empty verification ID.","app-deleted":"This instance of FirebaseApp has been deleted.","multi-factor-info-not-found":"The user does not have a second factor matching the identifier provided.","multi-factor-auth-required":"Proof of ownership of a second factor is required to complete sign-in.","account-exists-with-different-credential":"An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address.","network-request-failed":"A network AuthError (such as timeout, interrupted connection or unreachable host) has occurred.","no-auth-event":"An internal AuthError has occurred.","no-such-provider":"User was not linked to an account with the given provider.","null-user":"A null user object was provided as the argument for an operation which requires a non-null user object.","operation-not-allowed":"The given sign-in provider is disabled for this Firebase project. Enable it in the Firebase console, under the sign-in method tab of the Auth section.","operation-not-supported-in-this-environment":'This operation is not supported in the environment this application is running on. "location.protocol" must be http, https or chrome-extension and web storage must be enabled.',"popup-blocked":"Unable to establish a connection with the popup. It may have been blocked by the browser.","popup-closed-by-user":"The popup has been closed by the user before finalizing the operation.","provider-already-linked":"User can only be linked to one identity for the given provider.","quota-exceeded":"The project's quota for this operation has been exceeded.","redirect-cancelled-by-user":"The redirect operation has been cancelled by the user before finalizing.","redirect-operation-pending":"A redirect sign-in operation is already pending.","rejected-credential":"The request contains malformed or mismatching credentials.","second-factor-already-in-use":"The second factor is already enrolled on this account.","maximum-second-factor-count-exceeded":"The maximum allowed number of second factors on a user has been exceeded.","tenant-id-mismatch":"The provided tenant ID does not match the Auth instance's tenant ID",timeout:"The operation has timed out.","user-token-expired":"The user's credential is no longer valid. The user must sign in again.","too-many-requests":"We have blocked all requests from this device due to unusual activity. Try again later.","unauthorized-continue-uri":"The domain of the continue URL is not whitelisted. Please whitelist the domain in the Firebase console.","unsupported-first-factor":"Enrolling a second factor or signing in with a multi-factor account requires sign-in with a supported first factor.","unsupported-persistence-type":"The current environment does not support the specified persistence type.","unsupported-tenant-operation":"This operation is not supported in a multi-tenant context.","unverified-email":"The operation requires a verified email.","user-cancelled":"The user did not grant your application the permissions it requested.","user-not-found":"There is no user record corresponding to this identifier. The user may have been deleted.","user-disabled":"The user account has been disabled by an administrator.","user-mismatch":"The supplied credentials do not correspond to the previously signed in user.","user-signed-out":"","weak-password":"The password must be 6 characters long or more.","web-storage-unsupported":"This browser is not supported or 3rd party cookies and data may be disabled.","already-initialized":"initializeAuth() has already been called with different options. To avoid this error, call initializeAuth() with the same options as when it was originally called, or call getAuth() to return the already initialized instance.","missing-recaptcha-token":"The reCAPTCHA token is missing when sending request to the backend.","invalid-recaptcha-token":"The reCAPTCHA token is invalid when sending request to the backend.","invalid-recaptcha-action":"The reCAPTCHA action is invalid when sending request to the backend.","recaptcha-not-enabled":"reCAPTCHA Enterprise integration is not enabled for this project.","missing-client-type":"The reCAPTCHA client type is missing when sending request to the backend.","missing-recaptcha-version":"The reCAPTCHA version is missing when sending request to the backend.","invalid-req-type":"Invalid request parameters.","invalid-recaptcha-version":"The reCAPTCHA version is invalid when sending request to the backend.","unsupported-password-policy-schema-version":"The password policy received from the backend uses a schema version that is not supported by this version of the Firebase SDK.","password-does-not-meet-requirements":"The password does not meet the requirements."}}const oi=si,ci=new x("auth","Firebase",si()),li=new _e("@firebase/auth");function ui(e,...t){li.logLevel<=m.ERROR&&li.error(`Auth (${Xe}): ${e}`,...t)}function hi(e,...t){throw gi(e,...t)}function di(e,...t){return gi(e,...t)}function pi(e,t,n){var r=Object.assign(Object.assign({},oi()),{[t]:n});const i=new x("auth","Firebase",r);return i.create(t,{appName:e.name})}function fi(e,t,n){if(!(t instanceof n))throw n.name!==t.constructor.name&&hi(e,"argument-error"),pi(e,"argument-error",`Type of ${t.constructor.name} does not match expected instance.`+"Did you pass a reference from a different Auth SDK?")}function gi(e,...t){if("string"==typeof e)return ci.create(e,...t);{var n=t[0];const r=[...t.slice(1)];return r[0]&&(r[0].appName=e.name),e._errorFactory.create(n,...r)}}function mi(e,t,...n){if(!e)throw gi(t,...n)}function vi(e){var t="INTERNAL ASSERTION FAILED: "+e;throw ui(t),new Error(t)}function _i(e,t){e||vi(t)}function yi(){var e;return"undefined"!=typeof self&&(null===(e=self.location)||void 0===e?void 0:e.href)||""}function wi(){return"http:"===bi()||"https:"===bi()}function bi(){var e;return"undefined"!=typeof self&&(null===(e=self.location)||void 0===e?void 0:e.protocol)||null}class Ii{constructor(e,t){_i((this.shortDelay=e)<(this.longDelay=t),"Short delay should be less than long delay!"),this.isMobile=I()||C()}get(){return"undefined"!=typeof navigator&&navigator&&"onLine"in navigator&&"boolean"==typeof navigator.onLine&&(wi()||E()||"connection"in navigator)&&!navigator.onLine?Math.min(5e3,this.shortDelay):this.isMobile?this.longDelay:this.shortDelay}}function Ti(e,t){_i(e.emulator,"Emulator should always be set here");var n=e.emulator["url"];return t?`${n}${t.startsWith("/")?t.slice(1):t}`:n}class Ei{static initialize(e,t,n){this.fetchImpl=e,t&&(this.headersImpl=t),n&&(this.responseImpl=n)}static fetch(){return this.fetchImpl||("undefined"!=typeof self&&"fetch"in self?self.fetch:"undefined"!=typeof globalThis&&globalThis.fetch?globalThis.fetch:"undefined"!=typeof fetch?fetch:void vi("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill"))}static headers(){return this.headersImpl||("undefined"!=typeof self&&"Headers"in self?self.Headers:"undefined"!=typeof globalThis&&globalThis.Headers?globalThis.Headers:"undefined"!=typeof Headers?Headers:void vi("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill"))}static response(){return this.responseImpl||("undefined"!=typeof self&&"Response"in self?self.Response:"undefined"!=typeof globalThis&&globalThis.Response?globalThis.Response:"undefined"!=typeof Response?Response:void vi("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill"))}}const Ci={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",INVALID_LOGIN_CREDENTIALS:"invalid-credential",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"},Si=new Ii(3e4,6e4);function ki(e,t){return e.tenantId&&!t.tenantId?Object.assign(Object.assign({},t),{tenantId:e.tenantId}):t}async function Ai(i,s,a,o,e={}){return Ni(i,e,async()=>{let e={},t={};o&&("GET"===s?t=o:e={body:JSON.stringify(o)});var n=$(Object.assign({key:i.config.apiKey},t)).slice(1);const r=await i._getAdditionalHeaders();return r["Content-Type"]="application/json",i.languageCode&&(r["X-Firebase-Locale"]=i.languageCode),Ei.fetch()(Pi(i,i.config.apiHost,a,n),Object.assign({method:s,headers:r,referrerPolicy:"no-referrer"},e))})}async function Ni(t,e,n){t._canInitEmulator=!1;var r=Object.assign(Object.assign({},Ci),e);try{const a=new Di(t),o=await Promise.race([n(),a.promise]);a.clearNetworkTimeout();var i=await o.json();if("needConfirmation"in i)throw xi(t,"account-exists-with-different-credential",i);if(o.ok&&!("errorMessage"in i))return i;{const c=o.ok?i.errorMessage:i.error.message,[l,u]=c.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===l)throw xi(t,"credential-already-in-use",i);if("EMAIL_EXISTS"===l)throw xi(t,"email-already-in-use",i);if("USER_DISABLED"===l)throw xi(t,"user-disabled",i);var s=r[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(u)throw pi(t,s,u);hi(t,s)}}catch(e){if(e instanceof D)throw e;hi(t,"network-request-failed",{message:String(e)})}}async function Ri(e,t,n,r,i={}){var s=await Ai(e,t,n,r,i);return"mfaPendingCredential"in s&&hi(e,"multi-factor-auth-required",{_serverResponse:s}),s}function Pi(e,t,n,r){var i=`${t}${n}?${r}`;return e.config.emulator?Ti(e.config,i):`${e.config.apiScheme}://${i}`}class Di{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((e,t)=>{this.timer=setTimeout(()=>t(di(this.auth,"network-request-failed")),Si.get())})}clearNetworkTimeout(){clearTimeout(this.timer)}}function xi(e,t,n){const r={appName:e.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);const i=di(e,t,r);return i.customData._tokenResponse=n,i}function Oi(e){return void 0!==e&&void 0!==e.getResponse}function Mi(e){return void 0!==e&&void 0!==e.enterprise}class Li{constructor(e){if(this.siteKey="",this.recaptchaEnforcementState=[],void 0===e.recaptchaKey)throw new Error("recaptchaKey undefined");this.siteKey=e.recaptchaKey.split("/")[3],this.recaptchaEnforcementState=e.recaptchaEnforcementState}getProviderEnforcementState(e){if(!this.recaptchaEnforcementState||0===this.recaptchaEnforcementState.length)return null;for(const t of this.recaptchaEnforcementState)if(t.provider&&t.provider===e)return function(e){switch(e){case"ENFORCE":return"ENFORCE";case"AUDIT":return"AUDIT";case"OFF":return"OFF";default:return"ENFORCEMENT_STATE_UNSPECIFIED"}}(t.enforcementState);return null}isProviderEnabled(e){return"ENFORCE"===this.getProviderEnforcementState(e)||"AUDIT"===this.getProviderEnforcementState(e)}}function Fi(e){if(e)try{const t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}function Ui(e){return 1e3*Number(e)}function Vi(e){var[t,n,r]=e.split(".");if(void 0===t||void 0===n||void 0===r)return ui("JWT malformed, contained fewer than 3 sections"),null;try{var i=a(n);return i?JSON.parse(i):(ui("Failed to decode base64 JWT payload"),null)}catch(e){return ui("Caught error parsing JWT payload as JSON",null==e?void 0:e.toString()),null}}async function qi(t,n,e=!1){if(e)return n;try{return n}catch(e){throw e instanceof D&&(n=[e["code"]][0],"auth/user-disabled"===n||"auth/user-token-expired"===n)&&t.auth.currentUser===t&&await t.auth.signOut(),e}}class Bi{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,null!==this.timerId&&clearTimeout(this.timerId))}getInterval(e){if(e){var t=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),t}this.errorBackoff=3e4;t=(null!==(t=this.user.stsTokenManager.expirationTime)&&void 0!==t?t:0)-Date.now()-3e5;return Math.max(0,t)}schedule(e=!1){var t;this.isRunning&&(t=this.getInterval(e),this.timerId=setTimeout(async()=>{await this.iteration()},t))}async iteration(){try{await this.user.getIdToken(!0)}catch(e){return void("auth/network-request-failed"===(null==e?void 0:e.code)&&this.schedule(!0))}this.schedule()}}class ji{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=Fi(this.lastLoginAt),this.creationTime=Fi(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function zi(e){var t=e.auth,n=await e.getIdToken(),r=await qi(e,async function(e,t){return Ai(e,"POST","/v1/accounts:lookup",t)}(t,{idToken:n}));mi(null==r?void 0:r.users.length,t,"internal-error");var i=r.users[0];e._notifyReloadListener(i);var s,a,t=null!==(n=i.providerUserInfo)&&void 0!==n&&n.length?i.providerUserInfo.map(e=>{var t=e["providerId"],n=ni(e,["providerId"]);return{providerId:t,uid:n.rawId||"",displayName:n.displayName||null,email:n.email||null,phoneNumber:n.phoneNumber||null,photoURL:n.photoUrl||null}}):[],r=(s=e.providerData,a=t,[...s.filter(t=>!a.some(e=>e.providerId===t.providerId)),...a]),n=e.isAnonymous,t=!(e.email&&i.passwordHash||null!==r&&r.length),t=!!n&&t,t={uid:i.localId,displayName:i.displayName||null,photoURL:i.photoUrl||null,email:i.email||null,emailVerified:i.emailVerified||!1,phoneNumber:i.phoneNumber||null,tenantId:i.tenantId||null,providerData:r,metadata:new ji(i.createdAt,i.lastLoginAt),isAnonymous:t};Object.assign(e,t)}class $i{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){mi(e.idToken,"internal-error"),mi(void 0!==e.idToken,"internal-error"),mi(void 0!==e.refreshToken,"internal-error");var t,n,n="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):(t=e.idToken,mi(n=Vi(t),"internal-error"),mi(void 0!==n.exp,"internal-error"),mi(void 0!==n.iat,"internal-error"),Number(n.exp)-Number(n.iat));this.updateTokensAndExpiration(e.idToken,e.refreshToken,n)}async getToken(e,t=!1){return mi(!this.accessToken||this.refreshToken,e,"user-token-expired"),t||!this.accessToken||this.isExpired?this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null:this.accessToken}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){var i,s,{accessToken:n,refreshToken:r,expiresIn:a}=(s=t,await{accessToken:(a=await Ni(i=e,{},async()=>{var e=$({grant_type:"refresh_token",refresh_token:s}).slice(1),{tokenApiHost:t,apiKey:n}=i.config,n=Pi(i,t,"/v1/token",`key=${n}`);const r=await i._getAdditionalHeaders();return r["Content-Type"]="application/x-www-form-urlencoded",Ei.fetch()(n,{method:"POST",headers:r,body:e})})).access_token,expiresIn:a.expires_in,refreshToken:a.refresh_token});this.updateTokensAndExpiration(n,r,Number(a))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+1e3*n}static fromJSON(e,t){var{refreshToken:n,accessToken:r,expirationTime:i}=t;const s=new $i;return n&&(mi("string"==typeof n,"internal-error",{appName:e}),s.refreshToken=n),r&&(mi("string"==typeof r,"internal-error",{appName:e}),s.accessToken=r),i&&(mi("number"==typeof i,"internal-error",{appName:e}),s.expirationTime=i),s}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new $i,this.toJSON())}_performRefresh(){return vi("not implemented")}}function Ki(e,t){mi("string"==typeof e||void 0===e,"internal-error",{appName:t})}class Wi{constructor(e){var{uid:t,auth:n,stsTokenManager:r}=e,i=ni(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new Bi(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=t,this.auth=n,this.stsTokenManager=r,this.accessToken=r.accessToken,this.displayName=i.displayName||null,this.email=i.email||null,this.emailVerified=i.emailVerified||!1,this.phoneNumber=i.phoneNumber||null,this.photoURL=i.photoURL||null,this.isAnonymous=i.isAnonymous||!1,this.tenantId=i.tenantId||null,this.providerData=i.providerData?[...i.providerData]:[],this.metadata=new ji(i.createdAt||void 0,i.lastLoginAt||void 0)}async getIdToken(e){var t=await qi(this,this.stsTokenManager.getToken(this.auth,e));return mi(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return async function(e,t=!1){const n=ce(e);var r=await n.getIdToken(t),i=Vi(r);mi(i&&i.exp&&i.auth_time&&i.iat,n.auth,"internal-error");var s="object"==typeof i.firebase?i.firebase:void 0,a=null==s?void 0:s.sign_in_provider;return{claims:i,token:r,authTime:Fi(Ui(i.auth_time)),issuedAtTime:Fi(Ui(i.iat)),expirationTime:Fi(Ui(i.exp)),signInProvider:a||null,signInSecondFactor:(null==s?void 0:s.sign_in_second_factor)||null}}(this,e)}reload(){return async function(e){const t=ce(e);await zi(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}(this)}_assign(e){this!==e&&(mi(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map(e=>Object.assign({},e)),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){const t=new Wi(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}));return t.metadata._copy(this.metadata),t}_onReload(e){mi(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let n=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),n=!0),t&&await zi(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){var e=await this.getIdToken();return await qi(this,async function(e,t){return Ai(e,"POST","/v1/accounts:delete",t)}(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>Object.assign({},e)),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){var n=null!==(a=t.displayName)&&void 0!==a?a:void 0,r=null!==(g=t.email)&&void 0!==g?g:void 0,i=null!==(o=t.phoneNumber)&&void 0!==o?o:void 0,s=null!==(l=t.photoURL)&&void 0!==l?l:void 0,a=null!==(c=t.tenantId)&&void 0!==c?c:void 0,o=null!==(g=t._redirectEventId)&&void 0!==g?g:void 0,c=null!==(l=t.createdAt)&&void 0!==l?l:void 0,l=null!==(g=t.lastLoginAt)&&void 0!==g?g:void 0;const{uid:u,emailVerified:h,isAnonymous:d,providerData:p,stsTokenManager:f}=t;mi(u&&f,e,"internal-error");var g=$i.fromJSON(this.name,f);mi("string"==typeof u,e,"internal-error"),Ki(n,e.name),Ki(r,e.name),mi("boolean"==typeof h,e,"internal-error"),mi("boolean"==typeof d,e,"internal-error"),Ki(i,e.name),Ki(s,e.name),Ki(a,e.name),Ki(o,e.name),Ki(c,e.name),Ki(l,e.name);const m=new Wi({uid:u,auth:e,email:r,emailVerified:h,displayName:n,isAnonymous:d,photoURL:s,phoneNumber:i,tenantId:a,stsTokenManager:g,createdAt:c,lastLoginAt:l});return p&&Array.isArray(p)&&(m.providerData=p.map(e=>Object.assign({},e))),o&&(m._redirectEventId=o),m}static async _fromIdTokenResponse(e,t,n=!1){const r=new $i;r.updateFromServerResponse(t);var i=new Wi({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:n});return await zi(i),i}}const Gi=new Map;function Hi(e){_i(e instanceof Function,"Expected a class definition");let t=Gi.get(e);return t?_i(t instanceof e,"Instance stored in cache mismatched with class"):(t=new e,Gi.set(e,t)),t}class Qi{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){var t=this.storage[e];return void 0===t?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}Qi.type="NONE";const Yi=Qi;function Ji(e,t,n){return`firebase:${e}:${t}:${n}`}class Xi{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;var{config:r,name:i}=this.auth;this.fullUserKey=Ji(this.userKey,r.apiKey,i),this.fullPersistenceKey=Ji("persistence",r.apiKey,i),this.boundEventHandler=t._onStorageEvent.bind(t),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){var e=await this.persistence._get(this.fullUserKey);return e?Wi._fromJSON(this.auth,e):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence!==e){var t=await this.getCurrentUser();return await this.removeCurrentUser(),this.persistence=e,t?this.setCurrentUser(t):void 0}}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,n="authUser"){if(!t.length)return new Xi(Hi(Yi),e,n);const r=(await Promise.all(t.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e);let i=r[0]||Hi(Yi);const s=Ji(n,e.config.apiKey,e.name);let a=null;for(const u of t)try{var o=await u._get(s);if(o){var c=Wi._fromJSON(e,o);u!==i&&(a=c),i=u;break}}catch(e){}var l=r.filter(e=>e._shouldAllowMigration);return i._shouldAllowMigration&&l.length&&(i=l[0],a&&await i._set(s,a.toJSON()),await Promise.all(t.map(async e=>{if(e!==i)try{await e._remove(s)}catch(e){}}))),new Xi(i,e,n)}}function Zi(e){const t=e.toLowerCase();if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(rs(t))return"IEMobile";if(t.includes("msie")||t.includes("trident/"))return"IE";if(t.includes("edge/"))return"Edge";if(es(t))return"Firefox";if(t.includes("silk/"))return"Silk";if(ss(t))return"Blackberry";if(as(t))return"Webos";if(ts(t))return"Safari";if((t.includes("chrome/")||ns(t))&&!t.includes("edge/"))return"Chrome";if(is(t))return"Android";var n=e.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/);return 2===(null==n?void 0:n.length)?n[1]:"Other"}function es(e=b()){return/firefox\//i.test(e)}function ts(e=b()){const t=e.toLowerCase();return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function ns(e=b()){return/crios\//i.test(e)}function rs(e=b()){return/iemobile/i.test(e)}function is(e=b()){return/android/i.test(e)}function ss(e=b()){return/blackberry/i.test(e)}function as(e=b()){return/webos/i.test(e)}function os(e=b()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function cs(e=b()){return os(e)||is(e)||as(e)||ss(e)||/windows phone/i.test(e)||rs(e)}function ls(e,t=[]){let n;switch(e){case"Browser":n=Zi(b());break;case"Worker":n=`${Zi(b())}-${e}`;break;default:n=e}var r=t.length?t.join(","):"FirebaseCore-web";return`${n}/JsCore/${Xe}/${r}`}class us{constructor(e){this.auth=e,this.queue=[]}pushCallback(r,e){var t=n=>new Promise((e,t)=>{try{e(r(n))}catch(e){t(e)}});t.onAbort=e,this.queue.push(t);const n=this.queue.length-1;return()=>{this.queue[n]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser!==e){const t=[];try{for(const n of this.queue)await n(e),n.onAbort&&t.push(n.onAbort)}catch(e){t.reverse();for(const r of t)try{r()}catch(e){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null==e?void 0:e.message})}}}}class hs{constructor(e){var t,n=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=null!==(t=n.minPasswordLength)&&void 0!==t?t:6,n.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=n.maxPasswordLength),void 0!==n.containsLowercaseCharacter&&(this.customStrengthOptions.containsLowercaseLetter=n.containsLowercaseCharacter),void 0!==n.containsUppercaseCharacter&&(this.customStrengthOptions.containsUppercaseLetter=n.containsUppercaseCharacter),void 0!==n.containsNumericCharacter&&(this.customStrengthOptions.containsNumericCharacter=n.containsNumericCharacter),void 0!==n.containsNonAlphanumericCharacter&&(this.customStrengthOptions.containsNonAlphanumericCharacter=n.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,"ENFORCEMENT_STATE_UNSPECIFIED"===this.enforcementState&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=null!==(n=null===(n=e.allowedNonAlphanumericCharacters)||void 0===n?void 0:n.join(""))&&void 0!==n?n:"",this.forceUpgradeOnSignin=null!==(n=e.forceUpgradeOnSignin)&&void 0!==n&&n,this.schemaVersion=e.schemaVersion}validatePassword(e){var t,n,r;const i={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,i),this.validatePasswordCharacterOptions(e,i),i.isValid&&(i.isValid=null===(t=i.meetsMinPasswordLength)||void 0===t||t),i.isValid&&(i.isValid=null===(t=i.meetsMaxPasswordLength)||void 0===t||t),i.isValid&&(i.isValid=null===(n=i.containsLowercaseLetter)||void 0===n||n),i.isValid&&(i.isValid=null===(n=i.containsUppercaseLetter)||void 0===n||n),i.isValid&&(i.isValid=null===(r=i.containsNumericCharacter)||void 0===r||r),i.isValid&&(i.isValid=null===(r=i.containsNonAlphanumericCharacter)||void 0===r||r),i}validatePasswordLengthOptions(e,t){var n=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;n&&(t.meetsMinPasswordLength=e.length>=n),r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){var n;this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);for(let r=0;r<e.length;r++)n=e.charAt(r),this.updatePasswordCharacterOptionsStatuses(t,"a"<=n&&n<="z","A"<=n&&n<="Z","0"<=n&&n<="9",this.allowedNonAlphanumericCharacters.includes(n))}updatePasswordCharacterOptionsStatuses(e,t,n,r,i){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=t)),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=n)),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=r)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=i))}}class ds{constructor(e,t,n,r){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=n,this.config=r,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new fs(this),this.idTokenSubscription=new fs(this),this.beforeStateQueue=new us(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=ci,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=r.sdkClientVersion}_initializeWithPersistence(t,n){return n&&(this._popupRedirectResolver=Hi(n)),this._initializationPromise=this.queue(async()=>{var e;if(!this._deleted&&(this.persistenceManager=await Xi.create(this,t),!this._deleted)){if(null!==(e=this._popupRedirectResolver)&&void 0!==e&&e._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(e){}await this.initializeCurrentUser(n),this.lastNotifiedUid=(null===(e=this.currentUser)||void 0===e?void 0:e.uid)||null,this._deleted||(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(!this._deleted){var e=await this.assertedPersistence.getCurrentUser();if(this.currentUser||e)return this.currentUser&&e&&this.currentUser.uid===e.uid?(this._currentUser._assign(e),void await this.currentUser.getIdToken()):void await this._updateCurrentUser(e,!0)}}async initializeCurrentUser(e){var t,n,r,i=await this.assertedPersistence.getCurrentUser();let s=i,a=!1;if(e&&this.config.authDomain&&(await this.getOrInitRedirectPersistenceManager(),t=null===(r=this.redirectUser)||void 0===r?void 0:r._redirectEventId,n=null===s||void 0===s?void 0:s._redirectEventId,r=await this.tryRedirectSignIn(e),t&&t!==n||null==r||!r.user||(s=r.user,a=!0)),!s)return this.directlySetCurrentUser(null);if(s._redirectEventId)return mi(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===s._redirectEventId?this.directlySetCurrentUser(s):this.reloadAndSetCurrentUserOrClear(s);if(a)try{await this.beforeStateQueue.runMiddleware(s)}catch(e){s=i,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}return s?this.reloadAndSetCurrentUserOrClear(s):this.directlySetCurrentUser(null)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch(e){await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){try{await zi(e)}catch(e){if("auth/network-request-failed"!==(null==e?void 0:e.code))return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;var e=navigator;return e.languages&&e.languages[0]||e.language||null}()}async _delete(){this._deleted=!0}async updateCurrentUser(e){const t=e?ce(e):null;return t&&mi(t.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted)return e&&mi(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),t||await this.beforeStateQueue.runMiddleware(e),this.queue(async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()})}async signOut(){return await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0)}setPersistence(e){return this.queue(async()=>{await this.assertedPersistence.setPersistence(Hi(e))})}_getRecaptchaConfig(){return null==this.tenantId?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();const t=this._getPasswordPolicyInternal();return t.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):t.validatePassword(e)}_getPasswordPolicyInternal(){return null===this.tenantId?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){var e,t=await Ai(e=this,"GET","/v2/passwordPolicy",ki(e,{})),t=new hs(t);null===this.tenantId?this._projectPasswordPolicy=t:this._tenantPasswordPolicies[this.tenantId]=t}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new x("auth","Firebase",e())}onAuthStateChanged(e,t,n){return this.registerStateListener(this.authStateSubscription,e,t,n)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,n){return this.registerStateListener(this.idTokenSubscription,e,t,n)}authStateReady(){return new Promise((e,t)=>{if(this.currentUser)e();else{const n=this.onAuthStateChanged(()=>{n(),e()},t)}})}async revokeAccessToken(e){if(this.currentUser){const n={providerId:"apple.com",tokenType:"ACCESS_TOKEN",token:e,idToken:await this.currentUser.getIdToken()};null!=this.tenantId&&(n.tenantId=this.tenantId),t=this,e=n,await Ai(t,"POST","/v2/accounts:revokeToken",ki(t,e))}var t}toJSON(){var e;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:null===(e=this._currentUser)||void 0===e?void 0:e.toJSON()}}async _setRedirectUser(e,t){const n=await this.getOrInitRedirectPersistenceManager(t);return null===e?n.removeCurrentUser():n.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){var t;return this.redirectPersistenceManager||(mi(t=e&&Hi(e)||this._popupRedirectResolver,this,"argument-error"),this.redirectPersistenceManager=await Xi.create(this,[Hi(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()),this.redirectPersistenceManager}async _redirectUserForId(e){var t;return this._isInitialized&&await this.queue(async()=>{}),(null===(t=this._currentUser)||void 0===t?void 0:t._redirectEventId)===e?this._currentUser:(null===(t=this.redirectUser)||void 0===t?void 0:t._redirectEventId)===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var e;this._isInitialized&&(this.idTokenSubscription.next(this.currentUser),e=null!==(e=null===(e=this.currentUser)||void 0===e?void 0:e.uid)&&void 0!==e?e:null,this.lastNotifiedUid!==e&&(this.lastNotifiedUid=e,this.authStateSubscription.next(this.currentUser)))}registerStateListener(e,t,n,r){if(this._deleted)return()=>{};const i="function"==typeof t?t:t.next.bind(t);let s=!1;const a=this._isInitialized?Promise.resolve():this._initializationPromise;if(mi(a,this,"internal-error"),a.then(()=>{s||i(this.currentUser)}),"function"==typeof t){const o=e.addObserver(t,n,r);return()=>{s=!0,o()}}{const c=e.addObserver(t);return()=>{s=!0,c()}}}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),(this.currentUser=e)?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return mi(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){e&&!this.frameworks.includes(e)&&(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=ls(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){const e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId);var t=await(null===(t=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===t?void 0:t.getHeartbeatsHeader());t&&(e["X-Firebase-Client"]=t);t=await this._getAppCheckToken();return t&&(e["X-Firebase-AppCheck"]=t),e}async _getAppCheckToken(){var e,t,n=await(null===(n=this.appCheckServiceProvider.getImmediate({optional:!0}))||void 0===n?void 0:n.getToken());return null!=n&&n.error&&(e=`Error while retrieving App Check token: ${n.error}`,t=[],li.logLevel<=m.WARN&&li.warn(`Auth (${Xe}): ${e}`,...t)),null==n?void 0:n.token}}function ps(e){return ce(e)}class fs{constructor(e){this.auth=e,this.observer=null,this.addObserver=H(e=>this.observer=e)}get next(){return mi(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}let gs={async loadJS(){throw new Error("Unable to load external scripts")},recaptchaV2Script:"",recaptchaEnterpriseScript:"",gapiScript:""};function ms(e){return gs.loadJS(e)}function vs(e){return`__${e}${Math.floor(1e6*Math.random())}`}class _s{constructor(e){this.type="recaptcha-enterprise",this.auth=ps(e)}async verify(i="verify",e=!1){async function t(i){if(!e){if(null==i.tenantId&&null!=i._agentRecaptchaConfig)return i._agentRecaptchaConfig.siteKey;if(null!=i.tenantId&&void 0!==i._tenantRecaptchaConfigs[i.tenantId])return i._tenantRecaptchaConfigs[i.tenantId].siteKey}return new Promise(async(n,r)=>{!async function(e,t){return Ai(e,"GET","/v2/recaptchaConfig",ki(e,t))}(i,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(e=>{if(void 0!==e.recaptchaKey){var t=new Li(e);return null==i.tenantId?i._agentRecaptchaConfig=t:i._tenantRecaptchaConfigs[i.tenantId]=t,n(t.siteKey)}r(new Error("recaptcha Enterprise site key undefined"))}).catch(e=>{r(e)})})}function s(e,t,n){const r=window.grecaptcha;Mi(r)?r.enterprise.ready(()=>{r.enterprise.execute(e,{action:i}).then(e=>{t(e)}).catch(()=>{t("NO_RECAPTCHA")})}):n(Error("No reCAPTCHA enterprise script loaded."))}return new Promise((n,r)=>{t(this.auth).then(t=>{if(!e&&Mi(window.grecaptcha))s(t,n,r);else if("undefined"!=typeof window){let e=gs.recaptchaEnterpriseScript;0!==e.length&&(e+=t),ms(e).then(()=>{s(t,n,r)}).catch(e=>{r(e)})}else r(new Error("RecaptchaVerifier is only supported in browser"))}).catch(e=>{r(e)})})}}async function ys(e,t,n,r=!1){const i=new _s(e);let s;try{s=await i.verify(n)}catch(e){s=await i.verify(n,!0)}var a=Object.assign({},t);return r?Object.assign(a,{captchaResp:s}):Object.assign(a,{captchaResponse:s}),Object.assign(a,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(a,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"}),a}async function ws(n,r,i,s){if(null!==(e=n._getRecaptchaConfig())&&void 0!==e&&e.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")){var e=await ys(n,r,i,"getOobCode"===i);return s(n,e)}return s(n,r).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log(`${i} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);var t=await ys(n,r,i,"getOobCode"===i);return s(n,t)})}function bs(e,t,n){const r=ps(e);mi(r._canInitEmulator,r,"emulator-config-failed"),mi(/^https?:\/\//.test(t),r,"invalid-emulator-scheme");var i=!(null==n||!n.disableWarnings);const s=Is(t);var{host:a,port:o}=function(e){const t=Is(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:"",port:null};const r=n[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(r);{if(i){var s=i[1];return{host:s,port:Ts(r.substr(s.length+1))}}var[a,s]=r.split(":");return{host:a,port:Ts(s)}}}(t);r.config.emulator={url:`${s}//${a}${null===o?"":`:${o}`}/`},r.settings.appVerificationDisabledForTesting=!0,r.emulatorConfig=Object.freeze({host:a,port:o,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:i})}),i||function(){function e(){const e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",t.position="fixed",t.width="100%",t.backgroundColor="#ffffff",t.border=".1em solid #000000",t.color="#b50000",t.bottom="0px",t.left="0px",t.margin="0px",t.zIndex="10000",t.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}"undefined"!=typeof console&&"function"==typeof console.info&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials.");"undefined"!=typeof window&&"undefined"!=typeof document&&("loading"===document.readyState?window.addEventListener("DOMContentLoaded",e):e())}()}function Is(e){var t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function Ts(e){if(!e)return null;var t=Number(e);return isNaN(t)?null:t}class Es{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return vi("not implemented")}_getIdTokenResponse(e){return vi("not implemented")}_linkToIdToken(e,t){return vi("not implemented")}_getReauthenticationResolver(e){return vi("not implemented")}}async function Cs(e,t){return Ai(e,"POST","/v1/accounts:resetPassword",ki(e,t))}async function Ss(e,t){return Ai(e,"POST","/v1/accounts:signUp",t)}async function ks(e,t){return Ri(e,"POST","/v1/accounts:signInWithPassword",ki(e,t))}async function As(e,t){return Ai(e,"POST","/v1/accounts:sendOobCode",ki(e,t))}async function Ns(e,t){return As(e,t)}async function Rs(e,t){return As(e,t)}class Ps extends Es{constructor(e,t,n,r=null){super("password",n),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(e,t){return new Ps(e,t,"password")}static _fromEmailAndCode(e,t,n=null){return new Ps(e,t,"emailLink",n)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){var t="string"==typeof e?JSON.parse(e):e;if(null!=t&&t.email&&null!=t&&t.password){if("password"===t.signInMethod)return this._fromEmailAndPassword(t.email,t.password);if("emailLink"===t.signInMethod)return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){switch(this.signInMethod){case"password":return ws(e,{returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signInWithPassword",ks);case"emailLink":return async function(e,t){return Ri(e,"POST","/v1/accounts:signInWithEmailLink",ki(e,t))}(e,{email:this._email,oobCode:this._password});default:hi(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return ws(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signUpPassword",Ss);case"emailLink":return async function(e,t){return Ri(e,"POST","/v1/accounts:signInWithEmailLink",ki(e,t))}(e,{idToken:t,email:this._email,oobCode:this._password});default:hi(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}async function Ds(e,t){return Ri(e,"POST","/v1/accounts:signInWithIdp",ki(e,t))}class xs extends Es{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const t=new xs(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(t.idToken=e.idToken),e.accessToken&&(t.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):hi("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){var t="string"==typeof e?JSON.parse(e):e,{providerId:n,signInMethod:r}=t,t=ni(t,["providerId","signInMethod"]);if(!n||!r)return null;const i=new xs(n,r);return i.idToken=t.idToken||void 0,i.accessToken=t.accessToken||void 0,i.secret=t.secret,i.nonce=t.nonce,i.pendingToken=t.pendingToken||null,i}_getIdTokenResponse(e){return Ds(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,Ds(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Ds(e,t)}buildRequest(){const e={requestUri:"http://localhost",returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{const t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=$(t)}return e}}const Os={USER_NOT_FOUND:"user-not-found"};class Ms extends Es{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new Ms({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new Ms({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return async function(e,t){return Ri(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,t))}(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return async function(e,t){var n=await Ri(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,t));if(n.temporaryProof)throw xi(e,"account-exists-with-different-credential",n);return n}(e,Object.assign({idToken:t},this._makeVerificationRequest()))}_getReauthenticationResolver(e){return async function(e,t){return Ri(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,Object.assign(Object.assign({},t),{operation:"REAUTH"})),Os)}(e,this._makeVerificationRequest())}_makeVerificationRequest(){var{temporaryProof:e,phoneNumber:t,verificationId:n,verificationCode:r}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:n,code:r}}toJSON(){const e={providerId:this.providerId};return this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(e.verificationCode=this.params.verificationCode),this.params.verificationId&&(e.verificationId=this.params.verificationId),e}static fromJSON(e){var{verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}=e="string"==typeof e?JSON.parse(e):e;return n||t||r||i?new Ms({verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}):null}}class Ls{constructor(e){var t=K(W(e)),n=null!==(r=t.apiKey)&&void 0!==r?r:null,r=null!==(i=t.oobCode)&&void 0!==i?i:null,i=function(e){switch(e){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}(null!==(i=t.mode)&&void 0!==i?i:null);mi(n&&r&&i,"argument-error"),this.apiKey=n,this.operation=i,this.code=r,this.continueUrl=null!==(r=t.continueUrl)&&void 0!==r?r:null,this.languageCode=null!==(r=t.languageCode)&&void 0!==r?r:null,this.tenantId=null!==(t=t.tenantId)&&void 0!==t?t:null}static parseLink(e){var t,n,r,t=(t=K(W(e=e)).link,n=t?K(W(t)).deep_link_id:null,((r=K(W(e)).deep_link_id)?K(W(r)).link:null)||r||n||t||e);try{return new Ls(t)}catch(e){return null}}}class Fs{constructor(){this.providerId=Fs.PROVIDER_ID}static credential(e,t){return Ps._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){var n=Ls.parseLink(t);return mi(n,"argument-error"),Ps._fromEmailAndCode(e,n.code,n.tenantId)}}Fs.PROVIDER_ID="password",Fs.EMAIL_PASSWORD_SIGN_IN_METHOD="password",Fs.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class Us{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}}class Vs extends Us{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}class qs extends Vs{static credentialFromJSON(e){var t="string"==typeof e?JSON.parse(e):e;return mi("providerId"in t&&"signInMethod"in t,"argument-error"),xs._fromParams(t)}credential(e){return this._credential(Object.assign(Object.assign({},e),{nonce:e.rawNonce}))}_credential(e){return mi(e.idToken||e.accessToken,"argument-error"),xs._fromParams(Object.assign(Object.assign({},e),{providerId:this.providerId,signInMethod:this.providerId}))}static credentialFromResult(e){return qs.oauthCredentialFromTaggedObject(e)}static credentialFromError(e){return qs.oauthCredentialFromTaggedObject(e.customData||{})}static oauthCredentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n,oauthTokenSecret:r,pendingToken:i,nonce:s,providerId:a}=e;if(!(n||r||t||i))return null;if(!a)return null;try{return new qs(a)._credential({idToken:t,accessToken:n,nonce:s,pendingToken:i})}catch(e){return null}}}class Bs extends Vs{constructor(){super("facebook.com")}static credential(e){return xs._fromParams({providerId:Bs.PROVIDER_ID,signInMethod:Bs.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Bs.credentialFromTaggedObject(e)}static credentialFromError(e){return Bs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Bs.credential(e.oauthAccessToken)}catch(e){return null}}}Bs.FACEBOOK_SIGN_IN_METHOD="facebook.com",Bs.PROVIDER_ID="facebook.com";class js extends Vs{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return xs._fromParams({providerId:js.PROVIDER_ID,signInMethod:js.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return js.credentialFromTaggedObject(e)}static credentialFromError(e){return js.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n}=e;if(!t&&!n)return null;try{return js.credential(t,n)}catch(e){return null}}}js.GOOGLE_SIGN_IN_METHOD="google.com",js.PROVIDER_ID="google.com";class zs extends Vs{constructor(){super("github.com")}static credential(e){return xs._fromParams({providerId:zs.PROVIDER_ID,signInMethod:zs.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return zs.credentialFromTaggedObject(e)}static credentialFromError(e){return zs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return zs.credential(e.oauthAccessToken)}catch(e){return null}}}zs.GITHUB_SIGN_IN_METHOD="github.com",zs.PROVIDER_ID="github.com";class $s extends Es{constructor(e,t){super(e,e),this.pendingToken=t}_getIdTokenResponse(e){return Ds(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,Ds(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Ds(e,t)}toJSON(){return{signInMethod:this.signInMethod,providerId:this.providerId,pendingToken:this.pendingToken}}static fromJSON(e){var{providerId:t,signInMethod:n,pendingToken:r}="string"==typeof e?JSON.parse(e):e;return t&&n&&r&&t===n?new $s(t,r):null}static _create(e,t){return new $s(e,t)}buildRequest(){return{requestUri:"http://localhost",returnSecureToken:!0,pendingToken:this.pendingToken}}}class Ks extends Us{constructor(e){mi(e.startsWith("saml."),"argument-error"),super(e)}static credentialFromResult(e){return Ks.samlCredentialFromTaggedObject(e)}static credentialFromError(e){return Ks.samlCredentialFromTaggedObject(e.customData||{})}static credentialFromJSON(e){var t=$s.fromJSON(e);return mi(t,"argument-error"),t}static samlCredentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{pendingToken:t,providerId:n}=e;if(!t||!n)return null;try{return $s._create(n,t)}catch(e){return null}}}class Ws extends Vs{constructor(){super("twitter.com")}static credential(e,t){return xs._fromParams({providerId:Ws.PROVIDER_ID,signInMethod:Ws.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return Ws.credentialFromTaggedObject(e)}static credentialFromError(e){return Ws.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthAccessToken:t,oauthTokenSecret:n}=e;if(!t||!n)return null;try{return Ws.credential(t,n)}catch(e){return null}}}async function Gs(e,t){return Ri(e,"POST","/v1/accounts:signUp",ki(e,t))}Ws.TWITTER_SIGN_IN_METHOD="twitter.com",Ws.PROVIDER_ID="twitter.com";class Hs{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,n,r=!1){var i=await Wi._fromIdTokenResponse(e,n,r),s=Qs(n);return new Hs({user:i,providerId:s,_tokenResponse:n,operationType:t})}static async _forOperation(e,t,n){await e._updateTokensIfNecessary(n,!0);var r=Qs(n);return new Hs({user:e,providerId:r,_tokenResponse:n,operationType:t})}}function Qs(e){return e.providerId||("phoneNumber"in e?"phone":null)}class Ys extends D{constructor(e,t,n,r){var i;super(t.code,t.message),this.operationType=n,this.user=r,Object.setPrototypeOf(this,Ys.prototype),this.customData={appName:e.name,tenantId:null!==(i=e.tenantId)&&void 0!==i?i:void 0,_serverResponse:t.customData._serverResponse,operationType:n}}static _fromErrorAndOperation(e,t,n,r){return new Ys(e,t,n,r)}}function Js(t,n,e,r){const i="reauthenticate"===n?e._getReauthenticationResolver(t):e._getIdTokenResponse(t);return i.catch(e=>{if("auth/multi-factor-auth-required"===e.code)throw Ys._fromErrorAndOperation(t,e,n,r);throw e})}function Xs(e){return new Set(e.map(({providerId:e})=>e).filter(e=>!!e))}async function Zs(e,t){const n=ce(e);await ta(!0,n,t);var r=(e=n.auth,t={idToken:await n.getIdToken(),deleteProvider:[t]},await Ai(e,"POST","/v1/accounts:update",t))["providerUserInfo"];const i=Xs(r||[]);return n.providerData=n.providerData.filter(e=>i.has(e.providerId)),i.has("phone")||(n.phoneNumber=null),await n.auth._persistUserIfCurrent(n),n}async function ea(e,t,n=!1){var r=await qi(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Hs._forOperation(e,"link",r)}async function ta(e,t,n){await zi(t);const r=Xs(t.providerData);var i=!1===e?"provider-already-linked":"no-such-provider";mi(r.has(n)===e,t.auth,i)}async function na(e,t,n=!1){var r=e["auth"],i="reauthenticate";try{var s=await qi(e,Js(r,i,t,e),n);mi(s.idToken,r,"internal-error");var a=Vi(s.idToken);mi(a,r,"internal-error");var o=a["sub"];return mi(e.uid===o,r,"user-mismatch"),Hs._forOperation(e,i,s)}catch(e){throw"auth/user-not-found"===(null==e?void 0:e.code)&&hi(r,"user-mismatch"),e}}async function ra(e,t,n=!1){var r=await Js(e,"signIn",t),r=await Hs._fromIdTokenResponse(e,"signIn",r);return n||await e._updateCurrentUser(r.user),r}async function ia(e,t){return ra(ps(e),t)}async function sa(e,t){var n=ce(e);return await ta(!1,n,t.providerId),ea(n,t)}async function aa(e,t){return na(ce(e),t)}async function oa(e,t){const n=ps(e);var r=await Ri(n,"POST","/v1/accounts:signInWithCustomToken",ki(n,{token:t,returnSecureToken:!0})),r=await Hs._fromIdTokenResponse(n,"signIn",r);return await n._updateCurrentUser(r.user),r}class ca{constructor(e,t){this.factorId=e,this.uid=t.mfaEnrollmentId,this.enrollmentTime=new Date(t.enrolledAt).toUTCString(),this.displayName=t.displayName}static _fromServerResponse(e,t){return"phoneInfo"in t?la._fromServerResponse(e,t):"totpInfo"in t?ua._fromServerResponse(e,t):hi(e,"internal-error")}}class la extends ca{constructor(e){super("phone",e),this.phoneNumber=e.phoneInfo}static _fromServerResponse(e,t){return new la(t)}}class ua extends ca{constructor(e){super("totp",e)}static _fromServerResponse(e,t){return new ua(t)}}function ha(e,t,n){var r;mi(0<(null===(r=n.url)||void 0===r?void 0:r.length),e,"invalid-continue-uri"),mi(void 0===n.dynamicLinkDomain||0<n.dynamicLinkDomain.length,e,"invalid-dynamic-link-domain"),t.continueUrl=n.url,t.dynamicLinkDomain=n.dynamicLinkDomain,t.canHandleCodeInApp=n.handleCodeInApp,n.iOS&&(mi(0<n.iOS.bundleId.length,e,"missing-ios-bundle-id"),t.iOSBundleId=n.iOS.bundleId),n.android&&(mi(0<n.android.packageName.length,e,"missing-android-pkg-name"),t.androidInstallApp=n.android.installApp,t.androidMinimumVersionCode=n.android.minimumVersion,t.androidPackageName=n.android.packageName)}async function da(e){const t=ps(e);t._getPasswordPolicyInternal()&&await t._updatePasswordPolicy()}async function pa(e,t){await Ai(e=ce(e),"POST","/v1/accounts:update",ki(e,{oobCode:t}))}async function fa(e,t){var n=ce(e),r=await Cs(n,{oobCode:t}),i=r.requestType;switch(mi(i,n,"internal-error"),i){case"EMAIL_SIGNIN":break;case"VERIFY_AND_CHANGE_EMAIL":mi(r.newEmail,n,"internal-error");break;case"REVERT_SECOND_FACTOR_ADDITION":mi(r.mfaInfo,n,"internal-error");default:mi(r.email,n,"internal-error")}let s=null;return r.mfaInfo&&(s=ca._fromServerResponse(ps(n),r.mfaInfo)),{data:{email:("VERIFY_AND_CHANGE_EMAIL"===r.requestType?r.newEmail:r.email)||null,previousEmail:("VERIFY_AND_CHANGE_EMAIL"===r.requestType?r.email:r.newEmail)||null,multiFactorInfo:s},operation:i}}async function ga(e,t){var n=wi()?yi():"http://localhost",n=(await Ai(e=ce(e),"POST","/v1/accounts:createAuthUri",ki(e,{identifier:t,continueUri:n})))["signinMethods"];return n||[]}async function ma(e,t){var n=ce(e),r={requestType:"VERIFY_EMAIL",idToken:await e.getIdToken()};t&&ha(n.auth,r,t);var r=(await As(n.auth,r))["email"];r!==e.email&&await e.reload()}async function va(e,t,n){var r=ce(e),i={requestType:"VERIFY_AND_CHANGE_EMAIL",idToken:await e.getIdToken(),newEmail:t};n&&ha(r.auth,i,n);var i=(await As(r.auth,i))["email"];i!==e.email&&await e.reload()}async function _a(e,{displayName:t,photoURL:n}){if(void 0!==t||void 0!==n){const i=ce(e);var r=await i.getIdToken(),r=await qi(i,async function(e,t){return Ai(e,"POST","/v1/accounts:update",t)}(i.auth,{idToken:r,displayName:t,photoUrl:n,returnSecureToken:!0}));i.displayName=r.displayName||null,i.photoURL=r.photoUrl||null;const s=i.providerData.find(({providerId:e})=>"password"===e);s&&(s.displayName=i.displayName,s.photoURL=i.photoURL),await i._updateTokensIfNecessary(r)}}async function ya(e,t,n){var r=e["auth"];const i={idToken:await e.getIdToken(),returnSecureToken:!0};t&&(i.email=t),n&&(i.password=n);r=await qi(e,async function(e,t){return Ai(e,"POST","/v1/accounts:update",t)}(r,i));await e._updateTokensIfNecessary(r,!0)}class wa{constructor(e,t,n={}){this.isNewUser=e,this.providerId=t,this.profile=n}}class ba extends wa{constructor(e,t,n,r){super(e,t,n),this.username=r}}class Ia extends wa{constructor(e,t){super(e,"facebook.com",t)}}class Ta extends ba{constructor(e,t){super(e,"github.com",t,"string"==typeof(null==t?void 0:t.login)?null==t?void 0:t.login:null)}}class Ea extends wa{constructor(e,t){super(e,"google.com",t)}}class Ca extends ba{constructor(e,t,n){super(e,"twitter.com",t,n)}}function Sa(e){var{user:t,_tokenResponse:n}=e;return t.isAnonymous&&!n?{providerId:null,isNewUser:!1,profile:null}:function(e){if(!e)return null;var t=e["providerId"],n=e.rawUserInfo?JSON.parse(e.rawUserInfo):{},r=e.isNewUser||"identitytoolkit#SignupNewUserResponse"===e.kind;if(!t&&null!=e&&e.idToken){var i=null===(i=null===(i=Vi(e.idToken))||void 0===i?void 0:i.firebase)||void 0===i?void 0:i.sign_in_provider;if(i){i="anonymous"!==i&&"custom"!==i?i:null;return new wa(r,i)}}if(!t)return null;switch(t){case"facebook.com":return new Ia(r,n);case"github.com":return new Ta(r,n);case"google.com":return new Ea(r,n);case"twitter.com":return new Ca(r,n,e.screenName||null);case"custom":case"anonymous":return new wa(r,null);default:return new wa(r,t,n)}}(n)}class ka{constructor(e,t,n){this.type=e,this.credential=t,this.user=n}static _fromIdtoken(e,t){return new ka("enroll",e,t)}static _fromMfaPendingCredential(e){return new ka("signin",e)}toJSON(){return{multiFactorSession:{["enroll"===this.type?"idToken":"pendingCredential"]:this.credential}}}static fromJSON(e){var t;if(null!=e&&e.multiFactorSession){if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.pendingCredential)return ka._fromMfaPendingCredential(e.multiFactorSession.pendingCredential);if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.idToken)return ka._fromIdtoken(e.multiFactorSession.idToken)}return null}}class Aa{constructor(e,t,n){this.session=e,this.hints=t,this.signInResolver=n}static _fromError(e,i){const s=ps(e),a=i.customData._serverResponse;var t=(a.mfaInfo||[]).map(e=>ca._fromServerResponse(s,e));mi(a.mfaPendingCredential,s,"internal-error");const o=ka._fromMfaPendingCredential(a.mfaPendingCredential);return new Aa(o,t,async e=>{var t=await e._process(s,o);delete a.mfaInfo,delete a.mfaPendingCredential;var n=Object.assign(Object.assign({},a),{idToken:t.idToken,refreshToken:t.refreshToken});switch(i.operationType){case"signIn":var r=await Hs._fromIdTokenResponse(s,i.operationType,n);return await s._updateCurrentUser(r.user),r;case"reauthenticate":return mi(i.user,s,"internal-error"),Hs._forOperation(i.user,i.operationType,n);default:hi(s,"internal-error")}})}async resolveSignIn(e){return this.signInResolver(e)}}class Na{constructor(t){this.user=t,this.enrolledFactors=[],t._onReload(e=>{e.mfaInfo&&(this.enrolledFactors=e.mfaInfo.map(e=>ca._fromServerResponse(t.auth,e)))})}static _fromUser(e){return new Na(e)}async getSession(){return ka._fromIdtoken(await this.user.getIdToken(),this.user)}async enroll(e,t){const n=e;var r=await this.getSession(),r=await qi(this.user,n._process(this.user.auth,r,t));return await this.user._updateTokensIfNecessary(r),this.user.reload()}async unenroll(e){const t="string"==typeof e?e:e.uid;var n,r,i=await this.user.getIdToken();try{var s=await qi(this.user,(n=this.user.auth,r={idToken:i,mfaEnrollmentId:t},Ai(n,"POST","/v2/accounts/mfaEnrollment:withdraw",ki(n,r))));this.enrolledFactors=this.enrolledFactors.filter(({uid:e})=>e!==t),await this.user._updateTokensIfNecessary(s),await this.user.reload()}catch(e){throw e}}}const Ra=new WeakMap;const Pa="__sak";class Da{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Pa,"1"),this.storage.removeItem(Pa),Promise.resolve(!0)):Promise.resolve(!1)}catch(e){return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){var t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}}class xa extends Da{constructor(){var e;super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.safariLocalStorageNotSynced=(ts(e=b())||os(e))&&function(){try{return!(!window||window===window.top)}catch(e){return!1}}(),this.fallbackToPolling=cs(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const r of Object.keys(this.listeners)){var t=this.storage.getItem(r),n=this.localCache[r];t!==n&&e(r,n,t)}}onStorageEvent(e,t=!1){if(e.key){const r=e.key;if(t?this.detachListener():this.stopPolling(),this.safariLocalStorageNotSynced){const i=this.storage.getItem(r);if(e.newValue!==i)null!==e.newValue?this.storage.setItem(r,e.newValue):this.storage.removeItem(r);else if(this.localCache[r]===e.newValue&&!t)return}var n=()=>{var e=this.storage.getItem(r);!t&&this.localCache[r]===e||this.notifyListeners(r,e)};const i=this.storage.getItem(r);S()&&10===document.documentMode&&i!==e.newValue&&e.newValue!==e.oldValue?setTimeout(n,10):n()}else this.forAllChangedKeys((e,t,n)=>{this.notifyListeners(e,n)})}notifyListeners(e,t){this.localCache[e]=t;var n=this.listeners[e];if(n)for(const r of Array.from(n))r(t&&JSON.parse(t))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,n)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:n}),!0)})},1e3)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){0===Object.keys(this.listeners).length&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){var t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}}xa.type="LOCAL";const Oa=xa;class Ma extends Da{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}}Ma.type="SESSION";const La=Ma;class Fa{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(t){var e=this.receivers.find(e=>e.isListeningto(t));if(e)return e;e=new Fa(t);return this.receivers.push(e),e}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const t=e,{eventId:n,eventType:r,data:i}=t.data;var s=this.handlersMap[r];null!=s&&s.size&&(t.ports[0].postMessage({status:"ack",eventId:n,eventType:r}),s=Array.from(s).map(async e=>e(t.origin,i)),s=await Promise.all(s.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}})),t.ports[0].postMessage({status:"done",eventId:n,eventType:r,response:s}))}_subscribe(e,t){0===Object.keys(this.handlersMap).length&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t),t&&0!==this.handlersMap[e].size||delete this.handlersMap[e],0===Object.keys(this.handlersMap).length&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}function Ua(e="",t=10){let n="";for(let r=0;r<t;r++)n+=Math.floor(10*Math.random());return e+n}Fa.receivers=[];class Va{constructor(e){this.target=e,this.handlers=new Set}removeMessageHandler(e){e.messageChannel&&(e.messageChannel.port1.removeEventListener("message",e.onMessage),e.messageChannel.port1.close()),this.handlers.delete(e)}async _send(e,t,a=50){const o="undefined"!=typeof MessageChannel?new MessageChannel:null;if(!o)throw new Error("connection_unavailable");let c,l;return new Promise((n,r)=>{const i=Ua("",20);o.port1.start();const s=setTimeout(()=>{r(new Error("unsupported_event"))},a);l={messageChannel:o,onMessage(e){var t=e;if(t.data.eventId===i)switch(t.data.status){case"ack":clearTimeout(s),c=setTimeout(()=>{r(new Error("timeout"))},3e3);break;case"done":clearTimeout(c),n(t.data.response);break;default:clearTimeout(s),clearTimeout(c),r(new Error("invalid_response"))}}},this.handlers.add(l),o.port1.addEventListener("message",l.onMessage),this.target.postMessage({eventType:e,eventId:i,data:t},[o.port2])}).finally(()=>{l&&this.removeMessageHandler(l)})}}function qa(){return window}function Ba(){return void 0!==qa().WorkerGlobalScope&&"function"==typeof qa().importScripts}const ja="firebaseLocalStorageDb",za="firebaseLocalStorage",$a="fbase_key";class Ka{constructor(e){this.request=e}toPromise(){return new Promise((e,t)=>{this.request.addEventListener("success",()=>{e(this.request.result)}),this.request.addEventListener("error",()=>{t(this.request.error)})})}}function Wa(e,t){return e.transaction([za],t?"readwrite":"readonly").objectStore(za)}function Ga(){const r=indexedDB.open(ja,1);return new Promise((n,t)=>{r.addEventListener("error",()=>{t(r.error)}),r.addEventListener("upgradeneeded",()=>{const e=r.result;try{e.createObjectStore(za,{keyPath:$a})}catch(e){t(e)}}),r.addEventListener("success",async()=>{const e=r.result;var t;e.objectStoreNames.contains(za)?n(e):(e.close(),t=indexedDB.deleteDatabase(ja),await new Ka(t).toPromise(),n(await Ga()))})})}async function Ha(e,t,n){var r=Wa(e,!0).put({fbase_key:t,value:n});return new Ka(r).toPromise()}function Qa(e,t){var n=Wa(e,!0).delete(t);return new Ka(n).toPromise()}class Ya{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.db||(this.db=await Ga(),this.db)}async _withRetries(e){let t=0;for(;;)try{return e(await this._openDb())}catch(e){if(3<t++)throw e;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return Ba()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Fa._getInstance(Ba()?self:null),this.receiver._subscribe("keyChanged",async(e,t)=>{const n=await this._poll();return{keyProcessed:n.includes(t.key)}}),this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){var e,t,n;this.activeServiceWorker=await async function(){if(null===navigator||void 0===navigator||!navigator.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch(e){return null}}(),this.activeServiceWorker&&(this.sender=new Va(this.activeServiceWorker),(n=await this.sender._send("ping",{},800))&&null!==(e=n[0])&&void 0!==e&&e.fulfilled&&null!==(t=n[0])&&void 0!==t&&t.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0))}async notifyServiceWorker(e){var t;if(this.sender&&this.activeServiceWorker&&((null===(t=null===navigator||void 0===navigator?void 0:navigator.serviceWorker)||void 0===t?void 0:t.controller)||null)===this.activeServiceWorker)try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch(e){}}async _isAvailable(){try{if(!indexedDB)return!1;var e=await Ga();return await Ha(e,Pa,"1"),await Qa(e,Pa),!0}catch(e){}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(t,n){return this._withPendingWrite(async()=>(await this._withRetries(e=>Ha(e,t,n)),this.localCache[t]=n,this.notifyServiceWorker(t)))}async _get(t){var e=await this._withRetries(e=>async function(e,t){var n=Wa(e,!1).get(t);return void 0===(n=await new Ka(n).toPromise())?null:n.value}(e,t));return this.localCache[t]=e}async _remove(t){return this._withPendingWrite(async()=>(await this._withRetries(e=>Qa(e,t)),delete this.localCache[t],this.notifyServiceWorker(t)))}async _poll(){var e=await this._withRetries(e=>{var t=Wa(e,!1).getAll();return new Ka(t).toPromise()});if(!e)return[];if(0!==this.pendingWrites)return[];const t=[],n=new Set;if(0!==e.length)for(var{fbase_key:r,value:i}of e)n.add(r),JSON.stringify(this.localCache[r])!==JSON.stringify(i)&&(this.notifyListeners(r,i),t.push(r));for(const s of Object.keys(this.localCache))this.localCache[s]&&!n.has(s)&&(this.notifyListeners(s,null),t.push(s));return t}notifyListeners(e,t){this.localCache[e]=t;var n=this.listeners[e];if(n)for(const r of Array.from(n))r(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),800)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,t){0===Object.keys(this.listeners).length&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&this.stopPolling()}}Ya.type="LOCAL";const Ja=Ya;class Xa{constructor(e){this.auth=e,this.counter=1e12,this._widgets=new Map}render(e,t){var n=this.counter;return this._widgets.set(n,new Za(e,this.auth.name,t||{})),this.counter++,n}reset(e){var t,n=e||1e12;null===(t=this._widgets.get(n))||void 0===t||t.delete(),this._widgets.delete(n)}getResponse(e){var t;return(null===(t=this._widgets.get(e||1e12))||void 0===t?void 0:t.getResponse())||""}async execute(e){var t;return null===(t=this._widgets.get(e||1e12))||void 0===t||t.execute(),""}}class Za{constructor(e,t,n){this.params=n,this.timerId=null,this.deleted=!1,this.responseToken=null,this.clickHandler=()=>{this.execute()};var r="string"==typeof e?document.getElementById(e):e;mi(r,"argument-error",{appName:t}),this.container=r,this.isVisible="invisible"!==this.params.size,this.isVisible?this.execute():this.container.addEventListener("click",this.clickHandler)}getResponse(){return this.checkIfDeleted(),this.responseToken}delete(){this.checkIfDeleted(),this.deleted=!0,this.timerId&&(clearTimeout(this.timerId),this.timerId=null),this.container.removeEventListener("click",this.clickHandler)}execute(){this.checkIfDeleted(),this.timerId||(this.timerId=window.setTimeout(()=>{this.responseToken=function(e){const t=[],n="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r<e;r++)t.push(n.charAt(Math.floor(Math.random()*n.length)));return t.join("")}(50);const{callback:e,"expired-callback":t}=this.params;if(e)try{e(this.responseToken)}catch(e){}this.timerId=window.setTimeout(()=>{if(this.timerId=null,this.responseToken=null,t)try{t()}catch(e){}this.isVisible&&this.execute()},6e4)},500))}checkIfDeleted(){if(this.deleted)throw new Error("reCAPTCHA mock was already deleted!")}}const eo=vs("rcb"),to=new Ii(3e4,6e4);class no{constructor(){var e;this.hostLanguage="",this.counter=0,this.librarySeparatelyLoaded=!(null===(e=qa().grecaptcha)||void 0===e||!e.render)}load(s,a=""){var e;return mi((e=a).length<=6&&/^\s*[a-zA-Z0-9\-]*\s*$/.test(e),s,"argument-error"),this.shouldResolveImmediately(a)&&Oi(qa().grecaptcha)?Promise.resolve(qa().grecaptcha):new Promise((t,n)=>{const i=qa().setTimeout(()=>{n(di(s,"network-request-failed"))},to.get());qa()[eo]=()=>{qa().clearTimeout(i),delete qa()[eo];const e=qa().grecaptcha;if(e&&Oi(e)){const r=e.render;e.render=(e,t)=>{var n=r(e,t);return this.counter++,n},this.hostLanguage=a,t(e)}else n(di(s,"internal-error"))},ms(`${gs.recaptchaV2Script}?${$({onload:eo,render:"explicit",hl:a})}`).catch(()=>{clearTimeout(i),n(di(s,"internal-error"))})})}clearedOneInstance(){this.counter--}shouldResolveImmediately(e){var t;return!(null===(t=qa().grecaptcha)||void 0===t||!t.render)&&(e===this.hostLanguage||0<this.counter||this.librarySeparatelyLoaded)}}class ro{async load(e){return new Xa(e)}clearedOneInstance(){}}const io="recaptcha",so={theme:"light",type:"image"};class ao{constructor(e,t,n=Object.assign({},so)){this.parameters=n,this.type=io,this.destroyed=!1,this.widgetId=null,this.tokenChangeListeners=new Set,this.renderPromise=null,this.recaptcha=null,this.auth=ps(e),this.isInvisible="invisible"===this.parameters.size,mi("undefined"!=typeof document,this.auth,"operation-not-supported-in-this-environment");var r="string"==typeof t?document.getElementById(t):t;mi(r,this.auth,"argument-error"),this.container=r,this.parameters.callback=this.makeTokenCallback(this.parameters.callback),this._recaptchaLoader=new(this.auth.settings.appVerificationDisabledForTesting?ro:no),this.validateStartingState()}async verify(){this.assertNotDestroyed();const e=await this.render(),r=this.getAssertedRecaptcha();var t=r.getResponse(e);return t||new Promise(t=>{const n=e=>{e&&(this.tokenChangeListeners.delete(n),t(e))};this.tokenChangeListeners.add(n),this.isInvisible&&r.execute(e)})}render(){try{this.assertNotDestroyed()}catch(e){return Promise.reject(e)}return this.renderPromise||(this.renderPromise=this.makeRenderPromise().catch(e=>{throw this.renderPromise=null,e}),this.renderPromise)}_reset(){this.assertNotDestroyed(),null!==this.widgetId&&this.getAssertedRecaptcha().reset(this.widgetId)}clear(){this.assertNotDestroyed(),this.destroyed=!0,this._recaptchaLoader.clearedOneInstance(),this.isInvisible||this.container.childNodes.forEach(e=>{this.container.removeChild(e)})}validateStartingState(){mi(!this.parameters.sitekey,this.auth,"argument-error"),mi(this.isInvisible||!this.container.hasChildNodes(),this.auth,"argument-error"),mi("undefined"!=typeof document,this.auth,"operation-not-supported-in-this-environment")}makeTokenCallback(n){return t=>{if(this.tokenChangeListeners.forEach(e=>e(t)),"function"==typeof n)n(t);else if("string"==typeof n){const e=qa()[n];"function"==typeof e&&e(t)}}}assertNotDestroyed(){mi(!this.destroyed,this.auth,"internal-error")}async makeRenderPromise(){if(await this.init(),!this.widgetId){let e=this.container;var t;this.isInvisible||(t=document.createElement("div"),e.appendChild(t),e=t),this.widgetId=this.getAssertedRecaptcha().render(e,this.parameters)}return this.widgetId}async init(){mi(wi()&&!Ba(),this.auth,"internal-error"),await function(){let t=null;return new Promise(e=>{"complete"!==document.readyState?(t=()=>e(),window.addEventListener("load",t)):e()}).catch(e=>{throw t&&window.removeEventListener("load",t),e})}(),this.recaptcha=await this._recaptchaLoader.load(this.auth,this.auth.languageCode||void 0);var e=await((await Ai(this.auth,"GET","/v1/recaptchaParams")).recaptchaSiteKey||"");mi(e,this.auth,"internal-error"),this.parameters.sitekey=e}getAssertedRecaptcha(){return mi(this.recaptcha,this.auth,"internal-error"),this.recaptcha}}class oo{constructor(e,t){this.verificationId=e,this.onConfirmation=t}confirm(e){var t=Ms._fromVerification(this.verificationId,e);return this.onConfirmation(t)}}async function co(t,n,r){var i,s,a,o,c,l,u=await r.verify();try{mi("string"==typeof u,t,"argument-error"),mi(r.type===io,t,"argument-error");let e;if(e="string"==typeof n?{phoneNumber:n}:n,"session"in e){var h=e.session;if("phoneNumber"in e)return mi("enroll"===h.type,t,"internal-error"),(c=t,l={idToken:h.credential,phoneEnrollmentInfo:{phoneNumber:e.phoneNumber,recaptchaToken:u}},await Ai(c,"POST","/v2/accounts/mfaEnrollment:start",ki(c,l))).phoneSessionInfo.sessionInfo;mi("signin"===h.type,t,"internal-error");var d=(null===(i=e.multiFactorHint)||void 0===i?void 0:i.uid)||e.multiFactorUid;return mi(d,t,"missing-multi-factor-info"),(o={mfaPendingCredential:h.credential,mfaEnrollmentId:d,phoneSignInInfo:{recaptchaToken:u}},await Ai(t,"POST","/v2/accounts/mfaSignIn:start",ki(t,o))).phoneResponseInfo.sessionInfo}var p=(s=t,a={phoneNumber:e.phoneNumber,recaptchaToken:u},await Ai(s,"POST","/v1/accounts:sendVerificationCode",ki(s,a)))["sessionInfo"];return p}finally{r._reset()}}class lo{constructor(e){this.providerId=lo.PROVIDER_ID,this.auth=ps(e)}verifyPhoneNumber(e,t){return co(this.auth,e,ce(t))}static credential(e,t){return Ms._fromVerification(e,t)}static credentialFromResult(e){var t=e;return lo.credentialFromTaggedObject(t)}static credentialFromError(e){return lo.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{phoneNumber:t,temporaryProof:n}=e;return t&&n?Ms._fromTokenResponse(t,n):null}}function uo(e,t){return t?Hi(t):(mi(e._popupRedirectResolver,e,"argument-error"),e._popupRedirectResolver)}lo.PROVIDER_ID="phone",lo.PHONE_SIGN_IN_METHOD="phone";class ho extends Es{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return Ds(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Ds(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Ds(e,this._buildIdpRequest())}_buildIdpRequest(e){const t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}}function po(e){return ra(e.auth,new ho(e),e.bypassAuthState)}function fo(e){var{auth:t,user:n}=e;return mi(n,t,"internal-error"),na(n,new ho(e),e.bypassAuthState)}async function go(e){var{auth:t,user:n}=e;return mi(n,t,"internal-error"),ea(n,new ho(e),e.bypassAuthState)}class mo{constructor(e,t,n,r,i=!1){this.auth=e,this.resolver=n,this.user=r,this.bypassAuthState=i,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise(async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(e){this.reject(e)}})}async onAuthEvent(e){var{urlResponse:t,sessionId:n,postBody:r,tenantId:i,error:s,type:a}=e;if(s)this.reject(s);else{r={auth:this.auth,requestUri:t,sessionId:n,tenantId:i||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(a)(r))}catch(e){this.reject(e)}}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return po;case"linkViaPopup":case"linkViaRedirect":return go;case"reauthViaPopup":case"reauthViaRedirect":return fo;default:hi(this.auth,"internal-error")}}resolve(e){_i(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){_i(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}const vo=new Ii(2e3,1e4);class _o extends mo{constructor(e,t,n,r,i){super(e,t,r,i),this.provider=n,this.authWindow=null,this.pollId=null,_o.currentPopupAction&&_o.currentPopupAction.cancel(),_o.currentPopupAction=this}async executeNotNull(){var e=await this.execute();return mi(e,this.auth,"internal-error"),e}async onExecution(){_i(1===this.filter.length,"Popup operations only handle one event");var e=Ua();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(e=>{this.reject(e)}),this.resolver._isIframeWebStorageSupported(this.auth,e=>{e||this.reject(di(this.auth,"web-storage-unsupported"))}),this.pollUserCancellation()}get eventId(){var e;return(null===(e=this.authWindow)||void 0===e?void 0:e.associatedEvent)||null}cancel(){this.reject(di(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,_o.currentPopupAction=null}pollUserCancellation(){const t=()=>{var e;null!==(e=null===(e=this.authWindow)||void 0===e?void 0:e.window)&&void 0!==e&&e.closed?this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(di(this.auth,"popup-closed-by-user"))},8e3):this.pollId=window.setTimeout(t,vo.get())};t()}}_o.currentPopupAction=null;const yo="pendingRedirect",wo=new Map;class bo extends mo{constructor(e,t,n=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,n),this.eventId=null}async execute(){let t=wo.get(this.auth._key());if(!t){try{const e=await async function(e,t){const n=Co(t),r=Eo(e);if(!await r._isAvailable())return!1;var i="true"===await r._get(n);return await r._remove(n),i}(this.resolver,this.auth)?await super.execute():null;t=()=>Promise.resolve(e)}catch(e){t=()=>Promise.reject(e)}wo.set(this.auth._key(),t)}return this.bypassAuthState||wo.set(this.auth._key(),()=>Promise.resolve(null)),t()}async onAuthEvent(e){if("signInViaRedirect"===e.type)return super.onAuthEvent(e);if("unknown"!==e.type){if(e.eventId){var t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}else this.resolve(null)}async onExecution(){}cleanUp(){}}async function Io(e,t){return Eo(e)._set(Co(t),"true")}function To(e,t){wo.set(e._key(),t)}function Eo(e){return Hi(e._redirectPersistence)}function Co(e){return Ji(yo,e.config.apiKey,e.name)}function So(e,t,n){return async function(e,t,n){var r=ps(e);fi(e,t,Us),await r._initializationPromise;const i=uo(r,n);return await Io(i,r),i._openRedirect(r,t,"signInViaRedirect")}(e,t,n)}function ko(e,t,n){return async function(e,t,n){var r=ce(e);fi(r.auth,t,Us),await r.auth._initializationPromise;const i=uo(r.auth,n);await Io(i,r.auth);var s=await Ro(r);return i._openRedirect(r.auth,t,"reauthViaRedirect",s)}(e,t,n)}function Ao(e,t,n){return async function(e,t,n){var r=ce(e);fi(r.auth,t,Us),await r.auth._initializationPromise;const i=uo(r.auth,n);await ta(!1,r,t.providerId),await Io(i,r.auth);var s=await Ro(r);return i._openRedirect(r.auth,t,"linkViaRedirect",s)}(e,t,n)}async function No(e,t,n=!1){const r=ps(e);var i=uo(r,t);const s=new bo(r,i,n),a=await s.execute();return a&&!n&&(delete a.user._redirectEventId,await r._persistUserIfCurrent(a.user),await r._setRedirectUser(null,t)),a}async function Ro(e){var t=Ua(`${e.uid}:::`);return e._redirectEventId=t,await e.auth._setRedirectUser(e),await e.auth._persistUserIfCurrent(e),t}class Po{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(t){if(this.hasEventBeenHandled(t))return!1;let n=!1;return this.consumers.forEach(e=>{this.isEventForConsumer(t,e)&&(n=!0,this.sendToConsumer(t,e),this.saveEventToCache(t))}),this.hasHandledPotentialRedirect||!function(e){switch(e.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return xo(e);default:return!1}}(t)||(this.hasHandledPotentialRedirect=!0,n||(this.queuedRedirectEvent=t,n=!0)),n}sendToConsumer(e,t){var n;e.error&&!xo(e)?(n=(null===(n=e.error.code)||void 0===n?void 0:n.split("auth/")[1])||"internal-error",t.onError(di(this.auth,n))):t.onAuthEvent(e)}isEventForConsumer(e,t){var n=null===t.eventId||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return 6e5<=Date.now()-this.lastProcessedEventTime&&this.cachedEventUids.clear(),this.cachedEventUids.has(Do(e))}saveEventToCache(e){this.cachedEventUids.add(Do(e)),this.lastProcessedEventTime=Date.now()}}function Do(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join("-")}function xo({type:e,error:t}){return"unknown"===e&&"auth/no-auth-event"===(null==t?void 0:t.code)}async function Oo(e,t={}){return Ai(e,"GET","/v1/projects",t)}const Mo=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Lo=/^https?/;async function Fo(e){if(!e.config.emulator){var t=(await Oo(e))["authorizedDomains"];for(const n of t)try{if(function(e){const t=yi(),{protocol:n,hostname:r}=new URL(t);if(e.startsWith("chrome-extension://")){var i=new URL(e);return""===i.hostname&&""===r?"chrome-extension:"===n&&e.replace("chrome-extension://","")===t.replace("chrome-extension://",""):"chrome-extension:"===n&&i.hostname===r}if(!Lo.test(n))return!1;if(Mo.test(e))return r===e;const s=e.replace(/\./g,"\\."),a=new RegExp("^(.+\\."+s+"|"+s+")$","i");return a.test(r)}(n))return}catch(e){}hi(e,"unauthorized-domain")}}const Uo=new Ii(3e4,6e4);function Vo(){const t=qa().___jsl;if(null!==t&&void 0!==t&&t.H)for(const n of Object.keys(t.H))if(t.H[n].r=t.H[n].r||[],t.H[n].L=t.H[n].L||[],t.H[n].r=[...t.H[n].L],t.CP)for(let e=0;e<t.CP.length;e++)t.CP[e]=null}function qo(i){return new Promise((e,t)=>{function n(){Vo(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{Vo(),t(di(i,"network-request-failed"))},timeout:Uo.get()})}if(null!==(r=null===(r=qa().gapi)||void 0===r?void 0:r.iframes)&&void 0!==r&&r.Iframe)e(gapi.iframes.getContext());else{if(null===(r=qa().gapi)||void 0===r||!r.load){var r=vs("iframefcb");return qa()[r]=()=>{gapi.load?n():t(di(i,"network-request-failed"))},ms(`${gs.gapiScript}?onload=${r}`).catch(e=>t(e))}n()}}).catch(e=>{throw Bo=null,e})}let Bo=null;const jo=new Ii(5e3,15e3),zo="__/auth/iframe",$o="emulator/auth/iframe",Ko={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},Wo=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);async function Go(a){const e=(t=a,Bo=Bo||qo(t),await Bo);var t,n=qa().gapi;return mi(n,a,"internal-error"),e.open({where:document.body,url:function(e){var t=e.config;mi(t.authDomain,e,"auth-domain-config-required");var n=t.emulator?Ti(t,$o):`https://${e.config.authDomain}/${zo}`;const r={apiKey:t.apiKey,appName:e.name,v:Xe};(t=Wo.get(e.config.apiHost))&&(r.eid=t);const i=e._getFrameworks();return i.length&&(r.fw=i.join(",")),`${n}?${$(r).slice(1)}`}(a),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Ko,dontclear:!0},s=>new Promise(async(e,t)=>{await s.restyle({setHideOnLeave:!1});const n=di(a,"network-request-failed"),r=qa().setTimeout(()=>{t(n)},jo.get());function i(){qa().clearTimeout(r),e(s)}s.ping(i).then(i,()=>{t(n)})}))}const Ho={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class Qo{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}function Yo(e,t,n,r=500,i=600){var s=Math.max((window.screen.availHeight-i)/2,0).toString(),a=Math.max((window.screen.availWidth-r)/2,0).toString();let o="";const c=Object.assign(Object.assign({},Ho),{width:r.toString(),height:i.toString(),top:s,left:a});s=b().toLowerCase();n&&(o=ns(s)?"_blank":n),es(s)&&(t=t||"http://localhost",c.scrollbars="yes");var l,a=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,"");if([n=b()]=[s],os(n)&&null!==(l=window.navigator)&&void 0!==l&&l.standalone&&"_self"!==o)return function(e,t){const n=document.createElement("a");n.href=e,n.target=t;const r=document.createEvent("MouseEvent");r.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}(t||"",o),new Qo(null);const u=window.open(t||"",o,a);mi(u,e,"popup-blocked");try{u.focus()}catch(e){}return new Qo(u)}const Jo="__/auth/handler",Xo="emulator/auth/handler",Zo=encodeURIComponent("fac");async function ec(e,t,n,r,i,s){mi(e.config.authDomain,e,"auth-domain-config-required"),mi(e.config.apiKey,e,"invalid-api-key");const a={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:r,v:Xe,eventId:i};if(t instanceof Us){t.setDefaultLanguage(e.languageCode),a.providerId=t.providerId||"",q(t.getCustomParameters())||(a.customParameters=JSON.stringify(t.getCustomParameters()));for(var[o,c]of Object.entries(s||{}))a[o]=c}if(t instanceof Vs){const h=t.getScopes().filter(e=>""!==e);0<h.length&&(a.scopes=h.join(","))}e.tenantId&&(a.tid=e.tenantId);const l=a;for(const d of Object.keys(l))void 0===l[d]&&delete l[d];var u=await e._getAppCheckToken(),u=u?`#${Zo}=${encodeURIComponent(u)}`:"";return`${e=[e["config"]][0],e.emulator?Ti(e,Xo):`https://${e.authDomain}/${Jo}`}?${$(l).slice(1)}${u}`}const tc="webStorageSupport";const nc=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=La,this._completeRedirectFn=No,this._overrideRedirectResult=To}async _openPopup(e,t,n,r){var i;return _i(null===(i=this.eventManagers[e._key()])||void 0===i?void 0:i.manager,"_initialize() not called before _openPopup()"),Yo(e,await ec(e,t,n,yi(),r),Ua())}async _openRedirect(e,t,n,r){await this._originValidation(e);var i=await ec(e,t,n,yi(),r);return qa().location.href=i,new Promise(()=>{})}_initialize(e){const t=e._key();if(this.eventManagers[t]){const{manager:r,promise:n}=this.eventManagers[t];return r?Promise.resolve(r):(_i(n,"If manager is not set, promise should be"),n)}const n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch(()=>{delete this.eventManagers[t]}),n}async initAndGetManager(t){const e=await Go(t),n=new Po(t);return e.register("authEvent",e=>{return mi(null==e?void 0:e.authEvent,t,"invalid-auth-event"),{status:n.onEvent(e.authEvent)?"ACK":"ERROR"}},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[t._key()]={manager:n},this.iframes[t._key()]=e,n}_isIframeWebStorageSupported(n,r){const e=this.iframes[n._key()];e.send(tc,{type:tc},e=>{var t=null===(t=null==e?void 0:e[0])||void 0===t?void 0:t[tc];void 0!==t&&r(!!t),hi(n,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=Fo(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return cs()||ts()||os()}};class rc extends class{constructor(e){this.factorId=e}_process(e,t,n){switch(t.type){case"enroll":return this._finalizeEnroll(e,t.credential,n);case"signin":return this._finalizeSignIn(e,t.credential);default:return vi("unexpected MultiFactorSessionType")}}}{constructor(e){super("phone"),this.credential=e}static _fromCredential(e){return new rc(e)}_finalizeEnroll(e,t,n){return e=e,n={idToken:t,displayName:n,phoneVerificationInfo:this.credential._makeVerificationRequest()},Ai(e,"POST","/v2/accounts/mfaEnrollment:finalize",ki(e,n))}_finalizeSignIn(e,t){return e=e,t={mfaPendingCredential:t,phoneVerificationInfo:this.credential._makeVerificationRequest()},Ai(e,"POST","/v2/accounts/mfaSignIn:finalize",ki(e,t))}}class ic{constructor(){}static assertion(e){return rc._fromCredential(e)}}ic.FACTOR_ID="phone";var sc="@firebase/auth";class ac{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){var e;return this.assertAuthConfigured(),(null===(e=this.auth.currentUser)||void 0===e?void 0:e.uid)||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(t){var e;this.assertAuthConfigured(),this.internalListeners.has(t)||(e=this.auth.onIdTokenChanged(e=>{t((null==e?void 0:e.stsTokenManager.accessToken)||null)}),this.internalListeners.set(t,e),this.updateProactiveRefresh())}removeAuthTokenListener(e){this.assertAuthConfigured();const t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){mi(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){0<this.internalListeners.size?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}var oc,cc,lc;function uc(){return window}oc="authIdTokenMaxAge",null===(cc=p())||void 0===cc||cc[`_${oc}`],gs={loadJS(i){return new Promise((e,n)=>{const t=document.createElement("script");var r;t.setAttribute("src",i),t.onload=e,t.onerror=e=>{const t=di("internal-error");t.customData=e,n(t)},t.type="text/javascript",t.charset="UTF-8",(null!==(r=null===(r=document.getElementsByTagName("head"))||void 0===r?void 0:r[0])&&void 0!==r?r:document).appendChild(t)})},gapiScript:"https://apis.google.com/js/api.js",recaptchaV2Script:"https://www.google.com/recaptcha/api.js",recaptchaEnterpriseScript:"https://www.google.com/recaptcha/enterprise.js?render="},lc="Browser",He(new le("auth",(e,{options:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat"),i=e.getProvider("app-check-internal");const{apiKey:s,authDomain:a}=n.options;mi(s&&!s.includes(":"),"invalid-api-key",{appName:n.name});var o={apiKey:s,authDomain:a,clientPlatform:lc,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:ls(lc)},o=new ds(n,r,i,o);return function(e,t){const n=(null==t?void 0:t.persistence)||[];var r=(Array.isArray(n)?n:[n]).map(Hi);null!=t&&t.errorMap&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(r,null==t?void 0:t.popupRedirectResolver)}(o,t),o},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{const r=e.getProvider("auth-internal");r.initialize()})),He(new le("auth-internal",e=>{var t=ps(e.getProvider("auth").getImmediate());return e=t,new ac(e)},"PRIVATE").setInstantiationMode("EXPLICIT")),nt(sc,"1.6.0",function(e){switch(e){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";case"WebExtension":return"web-extension";default:return}}(lc)),nt(sc,"1.6.0","esm2017");async function hc(e,t,n){var r=uc()["BuildInfo"];_i(t.sessionId,"AuthEvent did not contain a session ID");var i=await async function(e){const t=function(e){if(_i(/[0-9a-zA-Z]+/.test(e),"Can only convert alpha-numeric strings"),"undefined"!=typeof TextEncoder)return(new TextEncoder).encode(e);const t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}(e),n=await crypto.subtle.digest("SHA-256",t),r=Array.from(new Uint8Array(n));return r.map(e=>e.toString(16).padStart(2,"0")).join("")}(t.sessionId);const s={};return os()?s.ibi=r.packageName:is()?s.apn=r.packageName:hi(e,"operation-not-supported-in-this-environment"),r.displayName&&(s.appDisplayName=r.displayName),s.sessionId=i,ec(e,n,t.type,void 0,null!==(i=t.eventId)&&void 0!==i?i:void 0,s)}function dc(r){const i=uc()["cordova"];return new Promise(n=>{i.plugins.browsertab.isAvailable(e=>{let t=null;e?i.plugins.browsertab.openUrl(r):t=i.InAppBrowser.open(r,(e=b(),/(iPad|iPhone|iPod).*OS 7_\d/i.test(e)||/(iPad|iPhone|iPod).*OS 8_\d/i.test(e)?"_blank":"_system"),"location=yes"),n(t)})})}const pc=20;class fc extends Po{constructor(){super(...arguments),this.passiveListeners=new Set,this.initPromise=new Promise(e=>{this.resolveInialized=e})}addPassiveListener(e){this.passiveListeners.add(e)}removePassiveListener(e){this.passiveListeners.delete(e)}resetRedirect(){this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1}onEvent(t){return this.resolveInialized(),this.passiveListeners.forEach(e=>e(t)),super.onEvent(t)}async initialized(){await this.initPromise}}function gc(e,t,n=null){return{type:t,eventId:n,urlResponse:null,sessionId:function(){const e=[],t="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r<pc;r++){var n=Math.floor(Math.random()*t.length);e.push(t.charAt(n))}return e.join("")}(),postBody:null,tenantId:e.tenantId,error:di(e,"no-auth-event")}}async function mc(e){var t=await _c()._get(yc(e));return t&&await _c()._remove(yc(e)),t}function vc(e,t){var n,r,i;const s=(n=wc(t=t),a=n.link?decodeURIComponent(n.link):void 0,r=wc(a).link,i=n.deep_link_id?decodeURIComponent(n.deep_link_id):void 0,(n=wc(i).link)||i||r||a||t);if(s.includes("/__/auth/callback")){var a=wc(s),a=a.firebaseError?function(e){try{return JSON.parse(e)}catch(e){return null}}(decodeURIComponent(a.firebaseError)):null,a=null===(a=null===(a=null==a?void 0:a.code)||void 0===a?void 0:a.split("auth/"))||void 0===a?void 0:a[1],a=a?di(a):null;return a?{type:e.type,eventId:e.eventId,tenantId:e.tenantId,error:a,urlResponse:null,sessionId:null,postBody:null}:{type:e.type,eventId:e.eventId,tenantId:e.tenantId,sessionId:e.sessionId,urlResponse:s,postBody:null}}return null}function _c(){return Hi(Oa)}function yc(e){return Ji("authEvent",e.config.apiKey,e.name)}function wc(e){if(null==e||!e.includes("?"))return{};const[,...t]=e.split("?");return K(t.join("?"))}const bc=class{constructor(){this._redirectPersistence=La,this._shouldInitProactively=!0,this.eventManagers=new Map,this.originValidationPromises={},this._completeRedirectFn=No,this._overrideRedirectResult=To}async _initialize(e){var t=e._key();let n=this.eventManagers.get(t);return n||(n=new fc(e),this.eventManagers.set(t,n),this.attachCallbackListeners(e,n)),n}_openPopup(e){hi(e,"operation-not-supported-in-this-environment")}async _openRedirect(e,t,n,r){var i,s;i=e,o=uc(),mi("function"==typeof(null===(s=null==o?void 0:o.universalLinks)||void 0===s?void 0:s.subscribe),i,"invalid-cordova-configuration",{missingPlugin:"cordova-universal-links-plugin-fix"}),mi(void 0!==(null===(s=null==o?void 0:o.BuildInfo)||void 0===s?void 0:s.packageName),i,"invalid-cordova-configuration",{missingPlugin:"cordova-plugin-buildInfo"}),mi("function"==typeof(null===(s=null===(s=null===(s=null==o?void 0:o.cordova)||void 0===s?void 0:s.plugins)||void 0===s?void 0:s.browsertab)||void 0===s?void 0:s.openUrl),i,"invalid-cordova-configuration",{missingPlugin:"cordova-plugin-browsertab"}),mi("function"==typeof(null===(s=null===(s=null===(s=null==o?void 0:o.cordova)||void 0===s?void 0:s.plugins)||void 0===s?void 0:s.browsertab)||void 0===s?void 0:s.isAvailable),i,"invalid-cordova-configuration",{missingPlugin:"cordova-plugin-browsertab"}),mi("function"==typeof(null===(o=null===(o=null==o?void 0:o.cordova)||void 0===o?void 0:o.InAppBrowser)||void 0===o?void 0:o.open),i,"invalid-cordova-configuration",{missingPlugin:"cordova-plugin-inappbrowser"});const a=await this._initialize(e);await a.initialized(),a.resetRedirect(),wo.clear(),await this._originValidation(e);var o=gc(e,n,r);n=e,r=o,await _c()._set(yc(n),r);o=await dc(await hc(e,o,t));return async function(a,o,c){const l=uc()["cordova"];let u=()=>{};try{await new Promise((n,e)=>{let t=null;function r(){var e;n();const t=null===(e=l.plugins.browsertab)||void 0===e?void 0:e.close;"function"==typeof t&&t(),"function"==typeof(null==c?void 0:c.close)&&c.close()}function i(){t=t||window.setTimeout(()=>{e(di(a,"redirect-cancelled-by-user"))},2e3)}function s(){"visible"===(null===document||void 0===document?void 0:document.visibilityState)&&i()}o.addPassiveListener(r),document.addEventListener("resume",i,!1),is()&&document.addEventListener("visibilitychange",s,!1),u=()=>{o.removePassiveListener(r),document.removeEventListener("resume",i,!1),document.removeEventListener("visibilitychange",s,!1),t&&window.clearTimeout(t)}})}finally{u()}}(e,a,o)}_isIframeWebStorageSupported(e,t){throw new Error("Method not implemented.")}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=async function(e){var t=uc()["BuildInfo"];const n={};os()?n.iosBundleId=t.packageName:is()?n.androidPackageName=t.packageName:hi(e,"operation-not-supported-in-this-environment"),await Oo(e,n)}(e)),this.originValidationPromises[t]}attachCallbackListeners(r,i){const{universalLinks:e,handleOpenURL:t,BuildInfo:n}=uc(),s=setTimeout(async()=>{await mc(r),i.onEvent(Ic())},500),a=async e=>{clearTimeout(s);var t=await mc(r);let n=null;t&&null!=e&&e.url&&(n=vc(t,e.url)),i.onEvent(n||Ic())};void 0!==e&&"function"==typeof e.subscribe&&e.subscribe(null,a);const o=t,c=`${n.packageName.toLowerCase()}://`;uc().handleOpenURL=async e=>{if(e.toLowerCase().startsWith(c)&&a({url:e}),"function"==typeof o)try{o(e)}catch(e){console.error(e)}}}};function Ic(){return{type:"unknown",eventId:null,sessionId:null,urlResponse:null,postBody:null,tenantId:null,error:di("no-auth-event")}}var Tc;function Ec(){var e;return(null===(e=null===self||void 0===self?void 0:self.location)||void 0===e?void 0:e.protocol)||null}function Cc(e=b()){return!("file:"!==Ec()&&"ionic:"!==Ec()&&"capacitor:"!==Ec()||!e.toLowerCase().match(/iphone|ipad|ipod|android/))}function Sc(e=b()){return S()&&11===(null===document||void 0===document?void 0:document.documentMode)||([e=b()]=[e],/Edge\/\d+/.test(e))}function kc(){try{const t=self.localStorage;var e=Ua();if(t)return t.setItem(e,"1"),t.removeItem(e),!Sc()||N()}catch(e){return Ac()&&N()}return!1}function Ac(){return"undefined"!=typeof global&&"WorkerGlobalScope"in global&&"importScripts"in global}function Nc(){return("http:"===Ec()||"https:"===Ec()||E()||Cc())&&!(C()||T())&&kc()&&!Ac()}function Rc(){return Cc()&&"undefined"!=typeof document}const Pc={LOCAL:"local",NONE:"none",SESSION:"session"},Dc=mi,xc="persistence";async function Oc(e){await e._initializationPromise;const t=Mc();var n=Ji(xc,e.config.apiKey,e.name);t&&t.setItem(n,e._getPersistence())}function Mc(){var e;try{return(null===(e="undefined"!=typeof window?window:null)?void 0:e.sessionStorage)||null}catch(e){return null}}const Lc=mi;class Fc{constructor(){this.browserResolver=Hi(nc),this.cordovaResolver=Hi(bc),this.underlyingResolver=null,this._redirectPersistence=La,this._completeRedirectFn=No,this._overrideRedirectResult=To}async _initialize(e){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._initialize(e)}async _openPopup(e,t,n,r){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._openPopup(e,t,n,r)}async _openRedirect(e,t,n,r){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._openRedirect(e,t,n,r)}_isIframeWebStorageSupported(e,t){this.assertedUnderlyingResolver._isIframeWebStorageSupported(e,t)}_originValidation(e){return this.assertedUnderlyingResolver._originValidation(e)}get _shouldInitProactively(){return Rc()||this.browserResolver._shouldInitProactively}get assertedUnderlyingResolver(){return Lc(this.underlyingResolver,"internal-error"),this.underlyingResolver}async selectUnderlyingResolver(){var e;this.underlyingResolver||(e=await(!!Rc()&&new Promise(e=>{const t=setTimeout(()=>{e(!1)},1e3);document.addEventListener("deviceready",()=>{clearTimeout(t),e(!0)})})),this.underlyingResolver=e?this.cordovaResolver:this.browserResolver)}}function Uc(e){return e.unwrap()}function Vc(e,t){var n,r,i,s=null===(r=t.customData)||void 0===r?void 0:r._tokenResponse;if("auth/multi-factor-auth-required"===(null==t?void 0:t.code)){const o=t;o.resolver=new zc(e,(n=t,i=ce(e),mi((a=n).customData.operationType,i,"argument-error"),mi(null===(r=a.customData._serverResponse)||void 0===r?void 0:r.mfaPendingCredential,i,"argument-error"),Aa._fromError(i,a)))}else if(s){var a=qc(t);const c=t;a&&(c.credential=a,c.tenantId=s.tenantId||void 0,c.email=s.email||void 0,c.phoneNumber=s.phoneNumber||void 0)}}function qc(e){var t=(e instanceof D?e.customData:e)["_tokenResponse"];if(!t)return null;if(!(e instanceof D)&&"temporaryProof"in t&&"phoneNumber"in t)return lo.credentialFromResult(e);const n=t.providerId;if(!n||n===ri.PASSWORD)return null;let r;switch(n){case ri.GOOGLE:r=js;break;case ri.FACEBOOK:r=Bs;break;case ri.GITHUB:r=zs;break;case ri.TWITTER:r=Ws;break;default:var{oauthIdToken:i,oauthAccessToken:s,oauthTokenSecret:a,pendingToken:o,nonce:c}=t;return s||a||i||o?o?n.startsWith("saml.")?$s._create(n,o):xs._fromParams({providerId:n,signInMethod:n,pendingToken:o,idToken:i,accessToken:s}):new qs(n).credential({idToken:i,accessToken:s,rawNonce:c}):null}return e instanceof D?r.credentialFromError(e):r.credentialFromResult(e)}function Bc(t,e){return e.catch(e=>{throw e instanceof D&&Vc(t,e),e}).then(e=>{var t=e.operationType,n=e.user;return{operationType:t,credential:qc(e),additionalUserInfo:Sa(e),user:$c.getOrCreate(n)}})}async function jc(t,e){const n=await e;return{verificationId:n.verificationId,confirm:e=>Bc(t,n.confirm(e))}}class zc{constructor(e,t){this.resolver=t,this.auth=e.wrapped()}get session(){return this.resolver.session}get hints(){return this.resolver.hints}resolveSignIn(e){return Bc(Uc(this.auth),this.resolver.resolveSignIn(e))}}class $c{constructor(e){var t;this._delegate=e,this.multiFactor=(t=ce(e),Ra.has(t)||Ra.set(t,Na._fromUser(t)),Ra.get(t))}static getOrCreate(e){return $c.USER_MAP.has(e)||$c.USER_MAP.set(e,new $c(e)),$c.USER_MAP.get(e)}delete(){return this._delegate.delete()}reload(){return this._delegate.reload()}toJSON(){return this._delegate.toJSON()}getIdTokenResult(e){return this._delegate.getIdTokenResult(e)}getIdToken(e){return this._delegate.getIdToken(e)}linkAndRetrieveDataWithCredential(e){return this.linkWithCredential(e)}async linkWithCredential(e){return Bc(this.auth,sa(this._delegate,e))}async linkWithPhoneNumber(e,t){return jc(this.auth,async function(e,t,n){const r=ce(e);await ta(!1,r,"phone");var i=await co(r.auth,t,ce(n));return new oo(i,e=>sa(r,e))}(this._delegate,e,t))}async linkWithPopup(e){return Bc(this.auth,async function(e,t,n){var r=ce(e);fi(r.auth,t,Us);var i=uo(r.auth,n);const s=new _o(r.auth,"linkViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,Fc))}async linkWithRedirect(e){return await Oc(ps(this.auth)),Ao(this._delegate,e,Fc)}reauthenticateAndRetrieveDataWithCredential(e){return this.reauthenticateWithCredential(e)}async reauthenticateWithCredential(e){return Bc(this.auth,aa(this._delegate,e))}reauthenticateWithPhoneNumber(e,t){return jc(this.auth,async function(e,t,n){const r=ce(e);var i=await co(r.auth,t,ce(n));return new oo(i,e=>aa(r,e))}(this._delegate,e,t))}reauthenticateWithPopup(e){return Bc(this.auth,async function(e,t,n){var r=ce(e);fi(r.auth,t,Us);var i=uo(r.auth,n);const s=new _o(r.auth,"reauthViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,Fc))}async reauthenticateWithRedirect(e){return await Oc(ps(this.auth)),ko(this._delegate,e,Fc)}sendEmailVerification(e){return ma(this._delegate,e)}async unlink(e){return await Zs(this._delegate,e),this}updateEmail(e){return ya(ce(this._delegate),e,null)}updatePassword(e){return ya(ce(this._delegate),null,e)}updatePhoneNumber(e){return async function(e,t){await ea(ce(e),t)}(this._delegate,e)}updateProfile(e){return _a(this._delegate,e)}verifyBeforeUpdateEmail(e,t){return va(this._delegate,e,t)}get emailVerified(){return this._delegate.emailVerified}get isAnonymous(){return this._delegate.isAnonymous}get metadata(){return this._delegate.metadata}get phoneNumber(){return this._delegate.phoneNumber}get providerData(){return this._delegate.providerData}get refreshToken(){return this._delegate.refreshToken}get tenantId(){return this._delegate.tenantId}get displayName(){return this._delegate.displayName}get email(){return this._delegate.email}get photoURL(){return this._delegate.photoURL}get providerId(){return this._delegate.providerId}get uid(){return this._delegate.uid}get auth(){return this._delegate.auth}}$c.USER_MAP=new WeakMap;const Kc=mi;class Wc{constructor(e,t){if(this.app=e,t.isInitialized())return this._delegate=t.getImmediate(),void this.linkUnderlyingAuth();var n=e.options["apiKey"];Kc(n,"invalid-api-key",{appName:e.name}),Kc(n,"invalid-api-key",{appName:e.name});var r="undefined"!=typeof window?Fc:void 0;this._delegate=t.initialize({options:{persistence:function(e,t){const n=function(e,t){const n=Mc();if(!n)return[];var r=Ji(xc,e,t);switch(n.getItem(r)){case Pc.NONE:return[Yi];case Pc.LOCAL:return[Ja,La];case Pc.SESSION:return[La];default:return[]}}(e,t);"undefined"==typeof self||n.includes(Ja)||n.push(Ja);if("undefined"!=typeof window)for(const r of[Oa,La])n.includes(r)||n.push(r);n.includes(Yi)||n.push(Yi);return n}(n,e.name),popupRedirectResolver:r}}),this._delegate._updateErrorMap(ai),this.linkUnderlyingAuth()}get emulatorConfig(){return this._delegate.emulatorConfig}get currentUser(){return this._delegate.currentUser?$c.getOrCreate(this._delegate.currentUser):null}get languageCode(){return this._delegate.languageCode}set languageCode(e){this._delegate.languageCode=e}get settings(){return this._delegate.settings}get tenantId(){return this._delegate.tenantId}set tenantId(e){this._delegate.tenantId=e}useDeviceLanguage(){this._delegate.useDeviceLanguage()}signOut(){return this._delegate.signOut()}useEmulator(e,t){bs(this._delegate,e,t)}applyActionCode(e){return pa(this._delegate,e)}checkActionCode(e){return fa(this._delegate,e)}confirmPasswordReset(e,t){return async function(t,e,n){await Cs(ce(t),{oobCode:e,newPassword:n}).catch(async e=>{throw"auth/password-does-not-meet-requirements"===e.code&&da(t),e})}(this._delegate,e,t)}async createUserWithEmailAndPassword(e,t){return Bc(this._delegate,async function(t,e,n){const r=ps(t),i=ws(r,{returnSecureToken:!0,email:e,password:n,clientType:"CLIENT_TYPE_WEB"},"signUpPassword",Gs);var s=await i.catch(e=>{throw"auth/password-does-not-meet-requirements"===e.code&&da(t),e}),s=await Hs._fromIdTokenResponse(r,"signIn",s);return await r._updateCurrentUser(s.user),s}(this._delegate,e,t))}fetchProvidersForEmail(e){return this.fetchSignInMethodsForEmail(e)}fetchSignInMethodsForEmail(e){return ga(this._delegate,e)}isSignInWithEmailLink(e){return this._delegate,e=e,"EMAIL_SIGNIN"===(null==(t=Ls.parseLink(e))?void 0:t.operation);var t}async getRedirectResult(){Kc(Nc(),this._delegate,"operation-not-supported-in-this-environment");var e,t,n=(e=this._delegate,t=Fc,await ps(e)._initializationPromise,await No(e,t,!1));return n?Bc(this._delegate,Promise.resolve(n)):{credential:null,user:null}}addFrameworkForLogging(e){ps(this._delegate)._logFramework(e)}onAuthStateChanged(e,t,n){var{next:r,error:i,complete:s}=Gc(e,t,n);return this._delegate.onAuthStateChanged(r,i,s)}onIdTokenChanged(e,t,n){var{next:r,error:i,complete:s}=Gc(e,t,n);return this._delegate.onIdTokenChanged(r,i,s)}sendSignInLinkToEmail(e,t){return async function(e,t,n){const r=ps(e);var i={requestType:"EMAIL_SIGNIN",email:t,clientType:"CLIENT_TYPE_WEB"};t=i,mi((n=n).handleCodeInApp,r,"argument-error"),n&&ha(r,t,n),await ws(r,i,"getOobCode",Rs)}(this._delegate,e,t)}sendPasswordResetEmail(e,t){return async function(e,t,n){var r=ps(e),i={requestType:"PASSWORD_RESET",email:t,clientType:"CLIENT_TYPE_WEB"};n&&ha(r,i,n),await ws(r,i,"getOobCode",Ns)}(this._delegate,e,t||void 0)}async setPersistence(e){var t,n;t=this._delegate,n=e,Dc(Object.values(Pc).includes(n),t,"invalid-persistence-type"),C()?Dc(n!==Pc.SESSION,t,"unsupported-persistence-type"):T()?Dc(n===Pc.NONE,t,"unsupported-persistence-type"):Ac()?Dc(n===Pc.NONE||n===Pc.LOCAL&&N(),t,"unsupported-persistence-type"):Dc(n===Pc.NONE||kc(),t,"unsupported-persistence-type");let r;switch(e){case Pc.SESSION:r=La;break;case Pc.LOCAL:var i=await Hi(Ja)._isAvailable();r=i?Ja:Oa;break;case Pc.NONE:r=Yi;break;default:return hi("argument-error",{appName:this._delegate.name})}return this._delegate.setPersistence(r)}signInAndRetrieveDataWithCredential(e){return this.signInWithCredential(e)}signInAnonymously(){return Bc(this._delegate,async function(e){const t=ps(e);if(await t._initializationPromise,null!==(n=t.currentUser)&&void 0!==n&&n.isAnonymous)return new Hs({user:t.currentUser,providerId:null,operationType:"signIn"});var n=await Gs(t,{returnSecureToken:!0}),n=await Hs._fromIdTokenResponse(t,"signIn",n,!0);return await t._updateCurrentUser(n.user),n}(this._delegate))}signInWithCredential(e){return Bc(this._delegate,ia(this._delegate,e))}signInWithCustomToken(e){return Bc(this._delegate,oa(this._delegate,e))}signInWithEmailAndPassword(e,t){return Bc(this._delegate,(n=this._delegate,e=e,t=t,ia(ce(n),Fs.credential(e,t)).catch(async e=>{throw"auth/password-does-not-meet-requirements"===e.code&&da(n),e})));var n}signInWithEmailLink(e,t){return Bc(this._delegate,async function(e,t,n){var r=ce(e),i=Fs.credentialWithLink(t,n||yi());return mi(i._tenantId===(r.tenantId||null),r,"tenant-id-mismatch"),ia(r,i)}(this._delegate,e,t))}signInWithPhoneNumber(e,t){return jc(this._delegate,async function(e,t,n){const r=ps(e);var i=await co(r,t,ce(n));return new oo(i,e=>ia(r,e))}(this._delegate,e,t))}async signInWithPopup(e){return Kc(Nc(),this._delegate,"operation-not-supported-in-this-environment"),Bc(this._delegate,async function(e,t,n){var r=ps(e);fi(e,t,Us);var i=uo(r,n);const s=new _o(r,"signInViaPopup",t,i);return s.executeNotNull()}(this._delegate,e,Fc))}async signInWithRedirect(e){return Kc(Nc(),this._delegate,"operation-not-supported-in-this-environment"),await Oc(this._delegate),So(this._delegate,e,Fc)}updateCurrentUser(e){return this._delegate.updateCurrentUser(e)}verifyPasswordResetCode(e){return async function(e,t){var n=(await fa(ce(e),t))["data"];return n.email}(this._delegate,e)}unwrap(){return this._delegate}_delete(){return this._delegate._delete()}linkUnderlyingAuth(){this._delegate.wrapped=()=>this}}function Gc(e,t,n){let r=e;"function"!=typeof e&&({next:r,error:t,complete:n}=e);const i=r;return{next:e=>i(e&&$c.getOrCreate(e)),error:t,complete:n}}Wc.Persistence=Pc;class Hc{constructor(){this.providerId="phone",this._delegate=new lo(Uc(It.auth()))}static credential(e,t){return lo.credential(e,t)}verifyPhoneNumber(e,t){return this._delegate.verifyPhoneNumber(e,t)}unwrap(){return this._delegate}}Hc.PHONE_SIGN_IN_METHOD=lo.PHONE_SIGN_IN_METHOD,Hc.PROVIDER_ID=lo.PROVIDER_ID;const Qc=mi;class Yc{constructor(e,t,n=It.app()){var r;Qc(null===(r=n.options)||void 0===r?void 0:r.apiKey,"invalid-api-key",{appName:n.name}),this._delegate=new ao(n.auth(),e,t),this.type=this._delegate.type}clear(){this._delegate.clear()}render(){return this._delegate.render()}verify(){return this._delegate.verify()}}(Tc=It).INTERNAL.registerComponent(new le("auth-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("auth");return new Wc(t,n)},"PUBLIC").setServiceProps({ActionCodeInfo:{Operation:{EMAIL_SIGNIN:ii.EMAIL_SIGNIN,PASSWORD_RESET:ii.PASSWORD_RESET,RECOVER_EMAIL:ii.RECOVER_EMAIL,REVERT_SECOND_FACTOR_ADDITION:ii.REVERT_SECOND_FACTOR_ADDITION,VERIFY_AND_CHANGE_EMAIL:ii.VERIFY_AND_CHANGE_EMAIL,VERIFY_EMAIL:ii.VERIFY_EMAIL}},EmailAuthProvider:Fs,FacebookAuthProvider:Bs,GithubAuthProvider:zs,GoogleAuthProvider:js,OAuthProvider:qs,SAMLAuthProvider:Ks,PhoneAuthProvider:Hc,PhoneMultiFactorGenerator:ic,RecaptchaVerifier:Yc,TwitterAuthProvider:Ws,Auth:Wc,AuthCredential:Es,Error:D}).setInstantiationMode("LAZY").setMultipleInstances(!1)),Tc.registerVersion("@firebase/auth-compat","0.5.2");const Jc="@firebase/database";let Xc="";function Zc(e){Xc=e}class el{constructor(e){this.domStorage_=e,this.prefix_="firebase:"}set(e,t){null==t?this.domStorage_.removeItem(this.prefixedName_(e)):this.domStorage_.setItem(this.prefixedName_(e),L(t))}get(e){var t=this.domStorage_.getItem(this.prefixedName_(e));return null==t?null:M(t)}remove(e){this.domStorage_.removeItem(this.prefixedName_(e))}prefixedName_(e){return this.prefix_+e}toString(){return this.domStorage_.toString()}}class tl{constructor(){this.cache_={},this.isInMemoryStorage=!0}set(e,t){null==t?delete this.cache_[e]:this.cache_[e]=t}get(e){return U(this.cache_,e)?this.cache_[e]:null}remove(e){delete this.cache_[e]}}var nl,rl,il,sl,al,ol,cl=function(e){try{if("undefined"!=typeof window&&void 0!==window[e]){const t=window[e];return t.setItem("firebase:sentinel","cache"),t.removeItem("firebase:sentinel"),new el(t)}}catch(e){}return new tl};function ll(e){var t=function(t){const n=[];let r=0;for(let a=0;a<t.length;a++){let e=t.charCodeAt(a);var i,s;55296<=e&&e<=56319&&(i=e-55296,a++,f(a<t.length,"Surrogate pair missing trail surrogate."),s=t.charCodeAt(a)-56320,e=65536+(i<<10)+s),e<128?n[r++]=e:(e<2048?n[r++]=e>>6|192:(e<65536?n[r++]=e>>12|224:(n[r++]=e>>18|240,n[r++]=e>>12&63|128),n[r++]=e>>6&63|128),n[r++]=63&e|128)}return n}(e);const n=new G;return n.update(t),t=n.digest(),r.encodeByteArray(t)}const ul=cl("localStorage"),hl=cl("sessionStorage"),dl=new _e("@firebase/database"),pl=function(){let e=1;return function(){return e++}}(),fl=function(...e){let t="";for(let r=0;r<e.length;r++){var n=e[r];Array.isArray(n)||n&&"object"==typeof n&&"number"==typeof n.length?t+=fl.apply(null,n):t+="object"==typeof n?L(n):n,t+=" "}return t};let gl=null,ml=!0;function vl(t){return function(...e){El(t,...e)}}function _l(...e){var t="FIREBASE INTERNAL ERROR: "+fl(...e);dl.error(t)}function yl(e,t){return e===t?0:e<t?-1:1}function wl(e,t){if(t&&e in t)return t[e];throw new Error("Missing required key ("+e+") in object: "+L(t))}function bl(e){if("object"!=typeof e||null===e)return L(e);const t=[];for(const r in e)t.push(r);t.sort();let n="{";for(let i=0;i<t.length;i++)0!==i&&(n+=","),n+=L(t[i]),n+=":",n+=bl(e[t[i]]);return n+="}",n}function Il(e,t){var n=e.length;if(n<=t)return[e];const r=[];for(let i=0;i<n;i+=t)i+t>n?r.push(e.substring(i,n)):r.push(e.substring(i,i+t));return r}const Tl=function(e,t){f(!t||!0===e||!1===e,"Can't turn on custom loggers persistently."),!0===e?(dl.logLevel=m.VERBOSE,gl=dl.log.bind(dl),t&&hl.set("logging_enabled",!0)):"function"==typeof e?gl=e:(gl=null,hl.remove("logging_enabled"))},El=function(...e){var t;!0===ml&&(ml=!1,null===gl&&!0===hl.get("logging_enabled")&&Tl(!0)),gl&&(t=fl.apply(null,e),gl(t))},Cl=function(...e){var t=`FIREBASE FATAL ERROR: ${fl(...e)}`;throw dl.error(t),new Error(t)},Sl=function(...e){var t="FIREBASE WARNING: "+fl(...e);dl.warn(t)},kl=function(){"undefined"!=typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&Sl("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().")},Al=function(e){return"number"==typeof e&&(e!=e||e===Number.POSITIVE_INFINITY||e===Number.NEGATIVE_INFINITY)},Nl="[MIN_NAME]",Rl="[MAX_NAME]",Pl=function(e,t){if(e===t)return 0;if(e===Nl||t===Rl)return-1;if(t===Nl||e===Rl)return 1;var n=Ol(e),r=Ol(t);return null!==n?null!==r?n-r==0?e.length-t.length:n-r:-1:null===r&&e<t?-1:1};function Dl(e,t){for(const n in e)e.hasOwnProperty(n)&&t(n,e[n])}function xl(e){f(!Al(e),"Invalid JSON number");let t,n,r,i,s;0===e?(n=0,r=0,t=1/e==-1/0?1:0):(t=e<0,e=Math.abs(e),r=e>=Math.pow(2,-1022)?(i=Math.min(Math.floor(Math.log(e)/Math.LN2),1023),n=i+1023,Math.round(e*Math.pow(2,52-i)-Math.pow(2,52))):(n=0,Math.round(e/Math.pow(2,-1074))));const a=[];for(s=52;s;--s)a.push(r%2?1:0),r=Math.floor(r/2);for(s=11;s;--s)a.push(n%2?1:0),n=Math.floor(n/2);a.push(t?1:0),a.reverse();const o=a.join("");let c="";for(s=0;s<64;s+=8){let e=parseInt(o.substr(s,8),2).toString(16);1===e.length&&(e="0"+e),c+=e}return c.toLowerCase()}function Ol(e){if(Ll.test(e)){var t=Number(e);if(t>=Fl&&t<=Ul)return t}return null}function Ml(e,t){const n=setTimeout(e,t);return"number"==typeof n&&"undefined"!=typeof Deno&&Deno.unrefTimer?Deno.unrefTimer(n):"object"==typeof n&&n.unref&&n.unref(),n}const Ll=new RegExp("^-?(0*)\\d{1,10}$"),Fl=-2147483648,Ul=2147483647,Vl=function(e){try{e()}catch(t){setTimeout(()=>{var e=t.stack||"";throw Sl("Exception was thrown by user callback.",e),t},Math.floor(0))}};class ql{constructor(e,t){this.appName_=e,this.appCheckProvider=t,this.appCheck=null==t?void 0:t.getImmediate({optional:!0}),this.appCheck||null!=t&&t.get().then(e=>this.appCheck=e)}getToken(n){return this.appCheck?this.appCheck.getToken(n):new Promise((e,t)=>{setTimeout(()=>{this.appCheck?this.getToken(n).then(e,t):e(null)},0)})}addTokenChangeListener(t){var e;null!==(e=this.appCheckProvider)&&void 0!==e&&e.get().then(e=>e.addTokenListener(t))}notifyForInvalidToken(){Sl(`Provided AppCheck credentials for the app named "${this.appName_}" `+"are invalid. This usually indicates your app was not initialized correctly.")}}class Bl{constructor(e,t,n){this.appName_=e,this.firebaseOptions_=t,this.authProvider_=n,this.auth_=null,this.auth_=n.getImmediate({optional:!0}),this.auth_||n.onInit(e=>this.auth_=e)}getToken(n){return this.auth_?this.auth_.getToken(n).catch(e=>e&&"auth/token-not-initialized"===e.code?(El("Got auth/token-not-initialized error. Treating as null token."),null):Promise.reject(e)):new Promise((e,t)=>{setTimeout(()=>{this.auth_?this.getToken(n).then(e,t):e(null)},0)})}addTokenChangeListener(t){this.auth_?this.auth_.addAuthTokenListener(t):this.authProvider_.get().then(e=>e.addAuthTokenListener(t))}removeTokenChangeListener(t){this.authProvider_.get().then(e=>e.removeAuthTokenListener(t))}notifyForInvalidToken(){let e='Provided authentication credentials for the app named "'+this.appName_+'" are invalid. This usually indicates your app was not initialized correctly. ';"credential"in this.firebaseOptions_?e+='Make sure the "credential" property provided to initializeApp() is authorized to access the specified "databaseURL" and is from the correct project.':"serviceAccount"in this.firebaseOptions_?e+='Make sure the "serviceAccount" property provided to initializeApp() is authorized to access the specified "databaseURL" and is from the correct project.':e+='Make sure the "apiKey" and "databaseURL" properties provided to initializeApp() match the values provided for your app at https://console.firebase.google.com/.',Sl(e)}}class jl{constructor(e){this.accessToken=e}getToken(e){return Promise.resolve({accessToken:this.accessToken})}addTokenChangeListener(e){e(this.accessToken)}removeTokenChangeListener(e){}notifyForInvalidToken(){}}jl.OWNER="owner";const zl=/(console\.firebase|firebase-console-\w+\.corp|firebase\.corp)\.google\.com/,$l="websocket",Kl="long_polling";class Wl{constructor(e,t,n,r,i=!1,s="",a=!1,o=!1){this.secure=t,this.namespace=n,this.webSocketOnly=r,this.nodeAdmin=i,this.persistenceKey=s,this.includeNamespaceInQueryParams=a,this.isUsingEmulator=o,this._host=e.toLowerCase(),this._domain=this._host.substr(this._host.indexOf(".")+1),this.internalHost=ul.get("host:"+e)||this._host}isCacheableHost(){return"s-"===this.internalHost.substr(0,2)}isCustomHost(){return"firebaseio.com"!==this._domain&&"firebaseio-demo.com"!==this._domain}get host(){return this._host}set host(e){e!==this.internalHost&&(this.internalHost=e,this.isCacheableHost()&&ul.set("host:"+this._host,this.internalHost))}toString(){let e=this.toURLString();return this.persistenceKey&&(e+="<"+this.persistenceKey+">"),e}toURLString(){var e=this.secure?"https://":"http://",t=this.includeNamespaceInQueryParams?`?ns=${this.namespace}`:"";return`${e}${this.host}/${t}`}}function Gl(e,t,n){f("string"==typeof t,"typeof type must == string"),f("object"==typeof n,"typeof params must == object");let r;if(t===$l)r=(e.secure?"wss://":"ws://")+e.internalHost+"/.ws?";else{if(t!==Kl)throw new Error("Unknown connection type: "+t);r=(e.secure?"https://":"http://")+e.internalHost+"/.lp?"}((t=e).host!==t.internalHost||t.isCustomHost()||t.includeNamespaceInQueryParams)&&(n.ns=e.namespace);const i=[];return Dl(n,(e,t)=>{i.push(e+"="+t)}),r+i.join("&")}class Hl{constructor(){this.counters_={}}incrementCounter(e,t=1){U(this.counters_,e)||(this.counters_[e]=0),this.counters_[e]+=t}get(){return c(void 0,this.counters_)}}const Ql={},Yl={};function Jl(e){var t=e.toString();return Ql[t]||(Ql[t]=new Hl),Ql[t]}class Xl{constructor(e){this.onMessage_=e,this.pendingResponses=[],this.currentResponseNum=0,this.closeAfterResponse=-1,this.onClose=null}closeAfter(e,t){this.closeAfterResponse=e,this.onClose=t,this.closeAfterResponse<this.currentResponseNum&&(this.onClose(),this.onClose=null)}handleResponse(e,t){for(this.pendingResponses[e]=t;this.pendingResponses[this.currentResponseNum];){const n=this.pendingResponses[this.currentResponseNum];delete this.pendingResponses[this.currentResponseNum];for(let e=0;e<n.length;++e)n[e]&&Vl(()=>{this.onMessage_(n[e])});if(this.currentResponseNum===this.closeAfterResponse){this.onClose&&(this.onClose(),this.onClose=null);break}this.currentResponseNum++}}}class Zl{constructor(e,t,n,r,i,s,a){this.connId=e,this.repoInfo=t,this.applicationId=n,this.appCheckToken=r,this.authToken=i,this.transportSessionId=s,this.lastSessionId=a,this.bytesSent=0,this.bytesReceived=0,this.everConnected_=!1,this.log_=vl(e),this.stats_=Jl(t),this.urlFn=e=>(this.appCheckToken&&(e.ac=this.appCheckToken),Gl(t,Kl,e))}open(e,t){this.curSegmentNum=0,this.onDisconnect_=t,this.myPacketOrderer=new Xl(e),this.isClosed_=!1,this.connectTimeoutTimer_=setTimeout(()=>{this.log_("Timed out trying to connect."),this.onClosed_(),this.connectTimeoutTimer_=null},Math.floor(3e4)),function(t){if("complete"===document.readyState)t();else{let e=!1;const n=function(){document.body?e||(e=!0,t()):setTimeout(n,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",n,!1),window.addEventListener("load",n,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",()=>{"complete"===document.readyState&&n()}),window.attachEvent("onload",n))}}(()=>{if(!this.isClosed_){this.scriptTagHolder=new eu((...e)=>{var[t,n,r]=e;if(this.incrementIncomingBytes_(e),this.scriptTagHolder)if(this.connectTimeoutTimer_&&(clearTimeout(this.connectTimeoutTimer_),this.connectTimeoutTimer_=null),this.everConnected_=!0,"start"===t)this.id=n,this.password=r;else{if("close"!==t)throw new Error("Unrecognized command received: "+t);n?(this.scriptTagHolder.sendNewPolls=!1,this.myPacketOrderer.closeAfter(n,()=>{this.onClosed_()})):this.onClosed_()}},(...e)=>{var[t,n]=e;this.incrementIncomingBytes_(e),this.myPacketOrderer.handleResponse(t,n)},()=>{this.onClosed_()},this.urlFn);const t={start:"t"};t.ser=Math.floor(1e8*Math.random()),this.scriptTagHolder.uniqueCallbackIdentifier&&(t.cb=this.scriptTagHolder.uniqueCallbackIdentifier),t.v="5",this.transportSessionId&&(t.s=this.transportSessionId),this.lastSessionId&&(t.ls=this.lastSessionId),this.applicationId&&(t.p=this.applicationId),this.appCheckToken&&(t.ac=this.appCheckToken),"undefined"!=typeof location&&location.hostname&&zl.test(location.hostname)&&(t.r="f");var e=this.urlFn(t);this.log_("Connecting via long-poll to "+e),this.scriptTagHolder.addTag(e,()=>{})}})}start(){this.scriptTagHolder.startLongPoll(this.id,this.password),this.addDisconnectPingFrame(this.id,this.password)}static forceAllow(){Zl.forceAllow_=!0}static forceDisallow(){Zl.forceDisallow_=!0}static isAvailable(){return!!Zl.forceAllow_||!(Zl.forceDisallow_||"undefined"==typeof document||null==document.createElement||"object"==typeof window&&window.chrome&&window.chrome.extension&&!/^chrome/.test(window.location.href)||"object"==typeof Windows&&"object"==typeof Windows.UI)}markConnectionHealthy(){}shutdown_(){this.isClosed_=!0,this.scriptTagHolder&&(this.scriptTagHolder.close(),this.scriptTagHolder=null),this.myDisconnFrame&&(document.body.removeChild(this.myDisconnFrame),this.myDisconnFrame=null),this.connectTimeoutTimer_&&(clearTimeout(this.connectTimeoutTimer_),this.connectTimeoutTimer_=null)}onClosed_(){this.isClosed_||(this.log_("Longpoll is closing itself"),this.shutdown_(),this.onDisconnect_&&(this.onDisconnect_(this.everConnected_),this.onDisconnect_=null))}close(){this.isClosed_||(this.log_("Longpoll is being closed."),this.shutdown_())}send(e){var t=L(e);this.bytesSent+=t.length,this.stats_.incrementCounter("bytes_sent",t.length);var t=i(t),n=Il(t,1840);for(let r=0;r<n.length;r++)this.scriptTagHolder.enqueueSegment(this.curSegmentNum,n.length,n[r]),this.curSegmentNum++}addDisconnectPingFrame(e,t){this.myDisconnFrame=document.createElement("iframe");const n={dframe:"t"};n.id=e,n.pw=t,this.myDisconnFrame.src=this.urlFn(n),this.myDisconnFrame.style.display="none",document.body.appendChild(this.myDisconnFrame)}incrementIncomingBytes_(e){var t=L(e).length;this.bytesReceived+=t,this.stats_.incrementCounter("bytes_received",t)}}class eu{constructor(t,n,e,r){this.onDisconnect=e,this.urlFn=r,this.outstandingRequests=new Set,this.pendingSegs=[],this.currentSerial=Math.floor(1e8*Math.random()),this.sendNewPolls=!0;{this.uniqueCallbackIdentifier=pl(),window["pLPCommand"+this.uniqueCallbackIdentifier]=t,window["pRTLPCB"+this.uniqueCallbackIdentifier]=n,this.myIFrame=eu.createIFrame_();let e="";this.myIFrame.src&&"javascript:"===this.myIFrame.src.substr(0,"javascript:".length)&&(i=document.domain,e='<script>document.domain="'+i+'";<\/script>');var i="<html><body>"+e+"</body></html>";try{this.myIFrame.doc.open(),this.myIFrame.doc.write(i),this.myIFrame.doc.close()}catch(e){El("frame writing exception"),e.stack&&El(e.stack),El(e)}}}static createIFrame_(){const t=document.createElement("iframe");if(t.style.display="none",!document.body)throw"Document body has not initialized. Wait to initialize Firebase until after the document is ready.";document.body.appendChild(t);try{t.contentWindow.document||El("No IE domain setting required")}catch(e){var n=document.domain;t.src="javascript:void((function(){document.open();document.domain='"+n+"';document.close();})())"}return t.contentDocument?t.doc=t.contentDocument:t.contentWindow?t.doc=t.contentWindow.document:t.document&&(t.doc=t.document),t}close(){this.alive=!1,this.myIFrame&&(this.myIFrame.doc.body.textContent="",setTimeout(()=>{null!==this.myIFrame&&(document.body.removeChild(this.myIFrame),this.myIFrame=null)},Math.floor(0)));const e=this.onDisconnect;e&&(this.onDisconnect=null,e())}startLongPoll(e,t){for(this.myID=e,this.myPW=t,this.alive=!0;this.newRequest_(););}newRequest_(){if(this.alive&&this.sendNewPolls&&this.outstandingRequests.size<(0<this.pendingSegs.length?2:1)){this.currentSerial++;const i={};i.id=this.myID,i.pw=this.myPW,i.ser=this.currentSerial;var n=this.urlFn(i);let e="",t=0;for(;0<this.pendingSegs.length;){if(!(this.pendingSegs[0].d.length+30+e.length<=1870))break;var r=this.pendingSegs.shift();e=e+"&seg"+t+"="+r.seg+"&ts"+t+"="+r.ts+"&d"+t+"="+r.d,t++}return n+=e,this.addLongPollTag_(n,this.currentSerial),!0}return!1}enqueueSegment(e,t,n){this.pendingSegs.push({seg:e,ts:t,d:n}),this.alive&&this.newRequest_()}addLongPollTag_(e,t){this.outstandingRequests.add(t);const n=()=>{this.outstandingRequests.delete(t),this.newRequest_()},r=setTimeout(n,Math.floor(25e3));this.addTag(e,()=>{clearTimeout(r),n()})}addTag(e,n){setTimeout(()=>{try{if(!this.sendNewPolls)return;const t=this.myIFrame.doc.createElement("script");t.type="text/javascript",t.async=!0,t.src=e,t.onload=t.onreadystatechange=function(){var e=t.readyState;e&&"loaded"!==e&&"complete"!==e||(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),n())},t.onerror=()=>{El("Long-poll script failed to load: "+e),this.sendNewPolls=!1,this.close()},this.myIFrame.doc.body.appendChild(t)}catch(e){}},Math.floor(1))}}let tu=null;"undefined"!=typeof MozWebSocket?tu=MozWebSocket:"undefined"!=typeof WebSocket&&(tu=WebSocket);class nu{constructor(e,t,n,r,i,s,a){this.connId=e,this.applicationId=n,this.appCheckToken=r,this.authToken=i,this.keepaliveTimer=null,this.frames=null,this.totalFrames=0,this.bytesSent=0,this.bytesReceived=0,this.log_=vl(this.connId),this.stats_=Jl(t),this.connURL=nu.connectionURL_(t,s,a,r,n),this.nodeAdmin=t.nodeAdmin}static connectionURL_(e,t,n,r,i){const s={v:"5"};return"undefined"!=typeof location&&location.hostname&&zl.test(location.hostname)&&(s.r="f"),t&&(s.s=t),n&&(s.ls=n),r&&(s.ac=r),i&&(s.p=i),Gl(e,$l,s)}open(e,t){this.onDisconnect=t,this.onMessage=e,this.log_("Websocket connecting to "+this.connURL),this.everConnected_=!1,ul.set("previous_websocket_failure",!0);try{k(),this.mySock=new tu(this.connURL,[],void 0)}catch(e){this.log_("Error instantiating WebSocket.");var n=e.message||e.data;return n&&this.log_(n),void this.onClosed_()}this.mySock.onopen=()=>{this.log_("Websocket connected."),this.everConnected_=!0},this.mySock.onclose=()=>{this.log_("Websocket connection was disconnected."),this.mySock=null,this.onClosed_()},this.mySock.onmessage=e=>{this.handleIncomingFrame(e)},this.mySock.onerror=e=>{this.log_("WebSocket error. Closing connection.");var t=e.message||e.data;t&&this.log_(t),this.onClosed_()}}start(){}static forceDisallow(){nu.forceDisallow_=!0}static isAvailable(){let e=!1;var t;return"undefined"==typeof navigator||!navigator.userAgent||(t=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/))&&1<t.length&&parseFloat(t[1])<4.4&&(e=!0),!e&&null!==tu&&!nu.forceDisallow_}static previouslyFailed(){return ul.isInMemoryStorage||!0===ul.get("previous_websocket_failure")}markConnectionHealthy(){ul.remove("previous_websocket_failure")}appendFrame_(e){var t;this.frames.push(e),this.frames.length===this.totalFrames&&(t=this.frames.join(""),this.frames=null,t=M(t),this.onMessage(t))}handleNewFrameCount_(e){this.totalFrames=e,this.frames=[]}extractFrameCount_(e){if(f(null===this.frames,"We already have a frame buffer"),e.length<=6){var t=Number(e);if(!isNaN(t))return this.handleNewFrameCount_(t),null}return this.handleNewFrameCount_(1),e}handleIncomingFrame(e){var t;null!==this.mySock&&(t=e.data,this.bytesReceived+=t.length,this.stats_.incrementCounter("bytes_received",t.length),this.resetKeepAlive(),null!==this.frames?this.appendFrame_(t):null!==(t=this.extractFrameCount_(t))&&this.appendFrame_(t))}send(e){this.resetKeepAlive();var t=L(e);this.bytesSent+=t.length,this.stats_.incrementCounter("bytes_sent",t.length);var n=Il(t,16384);1<n.length&&this.sendString_(String(n.length));for(let r=0;r<n.length;r++)this.sendString_(n[r])}shutdown_(){this.isClosed_=!0,this.keepaliveTimer&&(clearInterval(this.keepaliveTimer),this.keepaliveTimer=null),this.mySock&&(this.mySock.close(),this.mySock=null)}onClosed_(){this.isClosed_||(this.log_("WebSocket is closing itself"),this.shutdown_(),this.onDisconnect&&(this.onDisconnect(this.everConnected_),this.onDisconnect=null))}close(){this.isClosed_||(this.log_("WebSocket is being closed"),this.shutdown_())}resetKeepAlive(){clearInterval(this.keepaliveTimer),this.keepaliveTimer=setInterval(()=>{this.mySock&&this.sendString_("0"),this.resetKeepAlive()},Math.floor(45e3))}sendString_(e){try{this.mySock.send(e)}catch(e){this.log_("Exception thrown from WebSocket.send():",e.message||e.data,"Closing connection."),setTimeout(this.onClosed_.bind(this),0)}}}nu.responsesRequiredToBeHealthy=2,nu.healthyTimeout=3e4;class ru{constructor(e){this.initTransports_(e)}static get ALL_TRANSPORTS(){return[Zl,nu]}static get IS_TRANSPORT_INITIALIZED(){return this.globalTransportInitialized_}initTransports_(e){var t=nu&&nu.isAvailable();let n=t&&!nu.previouslyFailed();if(e.webSocketOnly&&(t||Sl("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),n=!0),n)this.transports_=[nu];else{const r=this.transports_=[];for(const i of ru.ALL_TRANSPORTS)i&&i.isAvailable()&&r.push(i);ru.globalTransportInitialized_=!0}}initialTransport(){if(0<this.transports_.length)return this.transports_[0];throw new Error("No transports available")}upgradeTransport(){return 1<this.transports_.length?this.transports_[1]:null}}ru.globalTransportInitialized_=!1;class iu{constructor(e,t,n,r,i,s,a,o,c,l){this.id=e,this.repoInfo_=t,this.applicationId_=n,this.appCheckToken_=r,this.authToken_=i,this.onMessage_=s,this.onReady_=a,this.onDisconnect_=o,this.onKill_=c,this.lastSessionId=l,this.connectionCount=0,this.pendingDataMessages=[],this.state_=0,this.log_=vl("c:"+this.id+":"),this.transportManager_=new ru(t),this.log_("Connection created"),this.start_()}start_(){const e=this.transportManager_.initialTransport();this.conn_=new e(this.nextTransportId_(),this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,null,this.lastSessionId),this.primaryResponsesRequired_=e.responsesRequiredToBeHealthy||0;const t=this.connReceiver_(this.conn_),n=this.disconnReceiver_(this.conn_);this.tx_=this.conn_,this.rx_=this.conn_,this.secondaryConn_=null,this.isHealthy_=!1,setTimeout(()=>{this.conn_&&this.conn_.open(t,n)},Math.floor(0));var r=e.healthyTimeout||0;0<r&&(this.healthyTimeout_=Ml(()=>{this.healthyTimeout_=null,this.isHealthy_||(this.conn_&&102400<this.conn_.bytesReceived?(this.log_("Connection exceeded healthy timeout but has received "+this.conn_.bytesReceived+" bytes. Marking connection healthy."),this.isHealthy_=!0,this.conn_.markConnectionHealthy()):this.conn_&&10240<this.conn_.bytesSent?this.log_("Connection exceeded healthy timeout but has sent "+this.conn_.bytesSent+" bytes. Leaving connection alive."):(this.log_("Closing unhealthy connection after timeout."),this.close()))},Math.floor(r)))}nextTransportId_(){return"c:"+this.id+":"+this.connectionCount++}disconnReceiver_(t){return e=>{t===this.conn_?this.onConnectionLost_(e):t===this.secondaryConn_?(this.log_("Secondary connection lost."),this.onSecondaryConnectionLost_()):this.log_("closing an old connection")}}connReceiver_(t){return e=>{2!==this.state_&&(t===this.rx_?this.onPrimaryMessageReceived_(e):t===this.secondaryConn_?this.onSecondaryMessageReceived_(e):this.log_("message on old connection"))}}sendRequest(e){this.sendData_({t:"d",d:e})}tryCleanupConnection(){this.tx_===this.secondaryConn_&&this.rx_===this.secondaryConn_&&(this.log_("cleaning up and promoting a connection: "+this.secondaryConn_.connId),this.conn_=this.secondaryConn_,this.secondaryConn_=null)}onSecondaryControl_(e){var t;"t"in e&&("a"===(t=e.t)?this.upgradeIfSecondaryHealthy_():"r"===t?(this.log_("Got a reset on secondary, closing it"),this.secondaryConn_.close(),this.tx_!==this.secondaryConn_&&this.rx_!==this.secondaryConn_||this.close()):"o"===t&&(this.log_("got pong on secondary."),this.secondaryResponsesRequired_--,this.upgradeIfSecondaryHealthy_()))}onSecondaryMessageReceived_(e){var t=wl("t",e),n=wl("d",e);if("c"===t)this.onSecondaryControl_(n);else{if("d"!==t)throw new Error("Unknown protocol layer: "+t);this.pendingDataMessages.push(n)}}upgradeIfSecondaryHealthy_(){this.secondaryResponsesRequired_<=0?(this.log_("Secondary connection is healthy."),this.isHealthy_=!0,this.secondaryConn_.markConnectionHealthy(),this.proceedWithUpgrade_()):(this.log_("sending ping on secondary."),this.secondaryConn_.send({t:"c",d:{t:"p",d:{}}}))}proceedWithUpgrade_(){this.secondaryConn_.start(),this.log_("sending client ack on secondary"),this.secondaryConn_.send({t:"c",d:{t:"a",d:{}}}),this.log_("Ending transmission on primary"),this.conn_.send({t:"c",d:{t:"n",d:{}}}),this.tx_=this.secondaryConn_,this.tryCleanupConnection()}onPrimaryMessageReceived_(e){var t=wl("t",e),n=wl("d",e);"c"===t?this.onControl_(n):"d"===t&&this.onDataMessage_(n)}onDataMessage_(e){this.onPrimaryResponse_(),this.onMessage_(e)}onPrimaryResponse_(){this.isHealthy_||(this.primaryResponsesRequired_--,this.primaryResponsesRequired_<=0&&(this.log_("Primary connection is healthy."),this.isHealthy_=!0,this.conn_.markConnectionHealthy()))}onControl_(e){var t=wl("t",e);if("d"in e){var n=e.d;if("h"===t){const r=Object.assign({},n);this.repoInfo_.isUsingEmulator&&(r.h=this.repoInfo_.host),this.onHandshake_(r)}else if("n"===t){this.log_("recvd end transmission on primary"),this.rx_=this.secondaryConn_;for(let e=0;e<this.pendingDataMessages.length;++e)this.onDataMessage_(this.pendingDataMessages[e]);this.pendingDataMessages=[],this.tryCleanupConnection()}else"s"===t?this.onConnectionShutdown_(n):"r"===t?this.onReset_(n):"e"===t?_l("Server Error: "+n):"o"===t?(this.log_("got pong on primary."),this.onPrimaryResponse_(),this.sendPingOnPrimaryIfNecessary_()):_l("Unknown control packet command: "+t)}}onHandshake_(e){var t=e.ts,n=e.v,r=e.h;this.sessionId=e.s,this.repoInfo_.host=r,0===this.state_&&(this.conn_.start(),this.onConnectionEstablished_(this.conn_,t),"5"!==n&&Sl("Protocol version mismatch detected"),this.tryStartUpgrade_())}tryStartUpgrade_(){var e=this.transportManager_.upgradeTransport();e&&this.startUpgrade_(e)}startUpgrade_(e){this.secondaryConn_=new e(this.nextTransportId_(),this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,this.sessionId),this.secondaryResponsesRequired_=e.responsesRequiredToBeHealthy||0;var t=this.connReceiver_(this.secondaryConn_),n=this.disconnReceiver_(this.secondaryConn_);this.secondaryConn_.open(t,n),Ml(()=>{this.secondaryConn_&&(this.log_("Timed out trying to upgrade."),this.secondaryConn_.close())},Math.floor(6e4))}onReset_(e){this.log_("Reset packet received. New host: "+e),this.repoInfo_.host=e,1===this.state_?this.close():(this.closeConnections_(),this.start_())}onConnectionEstablished_(e,t){this.log_("Realtime connection established."),this.conn_=e,this.state_=1,this.onReady_&&(this.onReady_(t,this.sessionId),this.onReady_=null),0===this.primaryResponsesRequired_?(this.log_("Primary connection is healthy."),this.isHealthy_=!0):Ml(()=>{this.sendPingOnPrimaryIfNecessary_()},Math.floor(5e3))}sendPingOnPrimaryIfNecessary_(){this.isHealthy_||1!==this.state_||(this.log_("sending ping on primary."),this.sendData_({t:"c",d:{t:"p",d:{}}}))}onSecondaryConnectionLost_(){var e=this.secondaryConn_;this.secondaryConn_=null,this.tx_!==e&&this.rx_!==e||this.close()}onConnectionLost_(e){this.conn_=null,e||0!==this.state_?1===this.state_&&this.log_("Realtime connection lost."):(this.log_("Realtime connection failed."),this.repoInfo_.isCacheableHost()&&(ul.remove("host:"+this.repoInfo_.host),this.repoInfo_.internalHost=this.repoInfo_.host)),this.close()}onConnectionShutdown_(e){this.log_("Connection shutdown command received. Shutting down..."),this.onKill_&&(this.onKill_(e),this.onKill_=null),this.onDisconnect_=null,this.close()}sendData_(e){if(1!==this.state_)throw"Connection is not connected";this.tx_.send(e)}close(){2!==this.state_&&(this.log_("Closing realtime connection."),this.state_=2,this.closeConnections_(),this.onDisconnect_&&(this.onDisconnect_(),this.onDisconnect_=null))}closeConnections_(){this.log_("Shutting down all connections"),this.conn_&&(this.conn_.close(),this.conn_=null),this.secondaryConn_&&(this.secondaryConn_.close(),this.secondaryConn_=null),this.healthyTimeout_&&(clearTimeout(this.healthyTimeout_),this.healthyTimeout_=null)}}class su{put(e,t,n,r){}merge(e,t,n,r){}refreshAuthToken(e){}refreshAppCheckToken(e){}onDisconnectPut(e,t,n){}onDisconnectMerge(e,t,n){}onDisconnectCancel(e,t){}reportStats(e){}}class au{constructor(e){this.allowedEvents_=e,this.listeners_={},f(Array.isArray(e)&&0<e.length,"Requires a non-empty array")}trigger(t,...n){if(Array.isArray(this.listeners_[t])){const r=[...this.listeners_[t]];for(let e=0;e<r.length;e++)r[e].callback.apply(r[e].context,n)}}on(e,t,n){this.validateEventType_(e),this.listeners_[e]=this.listeners_[e]||[],this.listeners_[e].push({callback:t,context:n});var r=this.getInitialEvent(e);r&&t.apply(n,r)}off(e,t,n){this.validateEventType_(e);const r=this.listeners_[e]||[];for(let i=0;i<r.length;i++)if(r[i].callback===t&&(!n||n===r[i].context))return void r.splice(i,1)}validateEventType_(t){f(this.allowedEvents_.find(e=>e===t),"Unknown event: "+t)}}class ou extends au{constructor(){super(["online"]),this.online_=!0,"undefined"==typeof window||void 0===window.addEventListener||I()||(window.addEventListener("online",()=>{this.online_||(this.online_=!0,this.trigger("online",!0))},!1),window.addEventListener("offline",()=>{this.online_&&(this.online_=!1,this.trigger("online",!1))},!1))}static getInstance(){return new ou}getInitialEvent(e){return f("online"===e,"Unknown event type: "+e),[this.online_]}currentlyOnline(){return this.online_}}class cu{constructor(n,e){if(void 0===e){this.pieces_=n.split("/");let e=0;for(let t=0;t<this.pieces_.length;t++)0<this.pieces_[t].length&&(this.pieces_[e]=this.pieces_[t],e++);this.pieces_.length=e,this.pieceNum_=0}else this.pieces_=n,this.pieceNum_=e}toString(){let e="";for(let t=this.pieceNum_;t<this.pieces_.length;t++)""!==this.pieces_[t]&&(e+="/"+this.pieces_[t]);return e||"/"}}function lu(){return new cu("")}function uu(e){return e.pieceNum_>=e.pieces_.length?null:e.pieces_[e.pieceNum_]}function hu(e){return e.pieces_.length-e.pieceNum_}function du(e){let t=e.pieceNum_;return t<e.pieces_.length&&t++,new cu(e.pieces_,t)}function pu(e){return e.pieceNum_<e.pieces_.length?e.pieces_[e.pieces_.length-1]:null}function fu(e,t=0){return e.pieces_.slice(e.pieceNum_+t)}function gu(e){if(e.pieceNum_>=e.pieces_.length)return null;const t=[];for(let n=e.pieceNum_;n<e.pieces_.length-1;n++)t.push(e.pieces_[n]);return new cu(t,0)}function mu(e,t){const n=[];for(let i=e.pieceNum_;i<e.pieces_.length;i++)n.push(e.pieces_[i]);if(t instanceof cu)for(let e=t.pieceNum_;e<t.pieces_.length;e++)n.push(t.pieces_[e]);else{var r=t.split("/");for(let e=0;e<r.length;e++)0<r[e].length&&n.push(r[e])}return new cu(n,0)}function vu(e){return e.pieceNum_>=e.pieces_.length}function _u(e,t){var n=uu(e),r=uu(t);if(null===n)return t;if(n===r)return _u(du(e),du(t));throw new Error("INTERNAL ERROR: innerPath ("+t+") is not within outerPath ("+e+")")}function yu(e,t){var n=fu(e,0),r=fu(t,0);for(let s=0;s<n.length&&s<r.length;s++){var i=Pl(n[s],r[s]);if(0!==i)return i}return n.length===r.length?0:n.length<r.length?-1:1}function wu(e,t){if(hu(e)!==hu(t))return!1;for(let n=e.pieceNum_,r=t.pieceNum_;n<=e.pieces_.length;n++,r++)if(e.pieces_[n]!==t.pieces_[r])return!1;return!0}function bu(e,t){let n=e.pieceNum_,r=t.pieceNum_;if(hu(e)>hu(t))return!1;for(;n<e.pieces_.length;){if(e.pieces_[n]!==t.pieces_[r])return!1;++n,++r}return!0}class Iu{constructor(e,t){this.errorPrefix_=t,this.parts_=fu(e,0),this.byteLength_=Math.max(1,this.parts_.length);for(let n=0;n<this.parts_.length;n++)this.byteLength_+=ne(this.parts_[n]);Tu(this)}}function Tu(e){if(768<e.byteLength_)throw new Error(e.errorPrefix_+"has a key path longer than 768 bytes ("+e.byteLength_+").");if(32<e.parts_.length)throw new Error(e.errorPrefix_+"path specified exceeds the maximum depth that can be written (32) or object contains a cycle "+Eu(e))}function Eu(e){return 0===e.parts_.length?"":"in property '"+e.parts_.join(".")+"'"}class Cu extends au{constructor(){super(["visible"]);let t,e;"undefined"!=typeof document&&void 0!==document.addEventListener&&(void 0!==document.hidden?(e="visibilitychange",t="hidden"):void 0!==document.mozHidden?(e="mozvisibilitychange",t="mozHidden"):void 0!==document.msHidden?(e="msvisibilitychange",t="msHidden"):void 0!==document.webkitHidden&&(e="webkitvisibilitychange",t="webkitHidden")),this.visible_=!0,e&&document.addEventListener(e,()=>{var e=!document[t];e!==this.visible_&&(this.visible_=e,this.trigger("visible",e))},!1)}static getInstance(){return new Cu}getInitialEvent(e){return f("visible"===e,"Unknown event type: "+e),[this.visible_]}}class Su extends su{constructor(e,t,n,r,i,s,a,o){if(super(),this.repoInfo_=e,this.applicationId_=t,this.onDataUpdate_=n,this.onConnectStatus_=r,this.onServerInfoUpdate_=i,this.authTokenProvider_=s,this.appCheckTokenProvider_=a,this.authOverride_=o,this.id=Su.nextPersistentConnectionId_++,this.log_=vl("p:"+this.id+":"),this.interruptReasons_={},this.listens=new Map,this.outstandingPuts_=[],this.outstandingGets_=[],this.outstandingPutCount_=0,this.outstandingGetCount_=0,this.onDisconnectRequestQueue_=[],this.connected_=!1,this.reconnectDelay_=1e3,this.maxReconnectDelay_=3e5,this.securityDebugCallback_=null,this.lastSessionId=null,this.establishConnectionTimer_=null,this.visible_=!1,this.requestCBHash_={},this.requestNumber_=0,this.realtime_=null,this.authToken_=null,this.appCheckToken_=null,this.forceTokenRefresh_=!1,this.invalidAuthTokenCount_=0,this.invalidAppCheckTokenCount_=0,this.firstConnection_=!0,this.lastConnectionAttemptTime_=null,this.lastConnectionEstablishedTime_=null,o&&!k())throw new Error("Auth override specified in options, but not supported on non Node.js platforms");Cu.getInstance().on("visible",this.onVisible_,this),-1===e.host.indexOf("fblocal")&&ou.getInstance().on("online",this.onOnline_,this)}sendRequest(e,t,n){var r=++this.requestNumber_,i={r:r,a:e,b:t};this.log_(L(i)),f(this.connected_,"sendRequest call when we're not connected not allowed."),this.realtime_.sendRequest(i),n&&(this.requestCBHash_[r]=n)}get(e){this.initConnection_();const n=new y;var t={p:e._path.toString(),q:e._queryObject};this.outstandingGets_.push({action:"g",request:t,onComplete:e=>{var t=e.d;"ok"===e.s?n.resolve(t):n.reject(t)}}),this.outstandingGetCount_++;t=this.outstandingGets_.length-1;return this.connected_&&this.sendGet_(t),n.promise}listen(e,t,n,r){this.initConnection_();var i=e._queryIdentifier,s=e._path.toString();this.log_("Listen called for "+s+" "+i),this.listens.has(s)||this.listens.set(s,new Map),f(e._queryParams.isDefault()||!e._queryParams.loadsAllData(),"listen() called for non-default but complete query"),f(!this.listens.get(s).has(i),"listen() called twice for same path/queryId.");var a={onComplete:r,hashFn:t,query:e,tag:n};this.listens.get(s).set(i,a),this.connected_&&this.sendListen_(a)}sendGet_(t){const n=this.outstandingGets_[t];this.sendRequest("g",n.request,e=>{delete this.outstandingGets_[t],this.outstandingGetCount_--,0===this.outstandingGetCount_&&(this.outstandingGets_=[]),n.onComplete&&n.onComplete(e)})}sendListen_(r){const i=r.query,s=i._path.toString(),a=i._queryIdentifier;this.log_("Listen on "+s+" for "+a);const e={p:s};r.tag&&(e.q=i._queryObject,e.t=r.tag),e.h=r.hashFn(),this.sendRequest("q",e,e=>{var t=e.d,n=e.s;Su.warnOnListenWarnings_(t,i),(this.listens.get(s)&&this.listens.get(s).get(a))===r&&(this.log_("listen response",e),"ok"!==n&&this.removeListen_(s,a),r.onComplete&&r.onComplete(n,t))})}static warnOnListenWarnings_(e,t){if(e&&"object"==typeof e&&U(e,"w")){const i=V(e,"w");var n,r;Array.isArray(i)&&~i.indexOf("no_index")&&(n='".indexOn": "'+t._queryParams.getIndex().toString()+'"',r=t._path.toString(),Sl("Using an unspecified index. Your data will be downloaded and "+`filtered on the client. Consider adding ${n} at `+`${r} to your security rules for better performance.`))}}refreshAuthToken(e){this.authToken_=e,this.log_("Auth token refreshed"),this.authToken_?this.tryAuth():this.connected_&&this.sendRequest("unauth",{},()=>{}),this.reduceReconnectDelayIfAdminCredential_(e)}reduceReconnectDelayIfAdminCredential_(e){var t;(e&&40===e.length||(e=e,"object"==typeof(t=F(e).claims)&&!0===t.admin))&&(this.log_("Admin auth credential detected. Reducing max reconnect time."),this.maxReconnectDelay_=3e4)}refreshAppCheckToken(e){this.appCheckToken_=e,this.log_("App check token refreshed"),this.appCheckToken_?this.tryAppCheck():this.connected_&&this.sendRequest("unappeck",{},()=>{})}tryAuth(){if(this.connected_&&this.authToken_){const r=this.authToken_;var e=function(e){const t=F(e),n=t.claims;return!!n&&"object"==typeof n&&n.hasOwnProperty("iat")}(r)?"auth":"gauth";const t={cred:r};null===this.authOverride_?t.noauth=!0:"object"==typeof this.authOverride_&&(t.authvar=this.authOverride_),this.sendRequest(e,t,e=>{var t=e.s,n=e.d||"error";this.authToken_===r&&("ok"===t?this.invalidAuthTokenCount_=0:this.onAuthRevoked_(t,n))})}}tryAppCheck(){this.connected_&&this.appCheckToken_&&this.sendRequest("appcheck",{token:this.appCheckToken_},e=>{var t=e.s,n=e.d||"error";"ok"===t?this.invalidAppCheckTokenCount_=0:this.onAppCheckRevoked_(t,n)})}unlisten(e,t){var n=e._path.toString(),r=e._queryIdentifier;this.log_("Unlisten called for "+n+" "+r),f(e._queryParams.isDefault()||!e._queryParams.loadsAllData(),"unlisten() called for non-default but complete query"),this.removeListen_(n,r)&&this.connected_&&this.sendUnlisten_(n,r,e._queryObject,t)}sendUnlisten_(e,t,n,r){this.log_("Unlisten on "+e+" for "+t);const i={p:e};r&&(i.q=n,i.t=r),this.sendRequest("n",i)}onDisconnectPut(e,t,n){this.initConnection_(),this.connected_?this.sendOnDisconnect_("o",e,t,n):this.onDisconnectRequestQueue_.push({pathString:e,action:"o",data:t,onComplete:n})}onDisconnectMerge(e,t,n){this.initConnection_(),this.connected_?this.sendOnDisconnect_("om",e,t,n):this.onDisconnectRequestQueue_.push({pathString:e,action:"om",data:t,onComplete:n})}onDisconnectCancel(e,t){this.initConnection_(),this.connected_?this.sendOnDisconnect_("oc",e,null,t):this.onDisconnectRequestQueue_.push({pathString:e,action:"oc",data:null,onComplete:t})}sendOnDisconnect_(e,t,n,r){var i={p:t,d:n};this.log_("onDisconnect "+e,i),this.sendRequest(e,i,e=>{r&&setTimeout(()=>{r(e.s,e.d)},Math.floor(0))})}put(e,t,n,r){this.putInternal("p",e,t,n,r)}merge(e,t,n,r){this.putInternal("m",e,t,n,r)}putInternal(e,t,n,r,i){this.initConnection_();const s={p:t,d:n};void 0!==i&&(s.h=i),this.outstandingPuts_.push({action:e,request:s,onComplete:r}),this.outstandingPutCount_++;var a=this.outstandingPuts_.length-1;this.connected_?this.sendPut_(a):this.log_("Buffering put: "+t)}sendPut_(t){const n=this.outstandingPuts_[t].action;var e=this.outstandingPuts_[t].request;const r=this.outstandingPuts_[t].onComplete;this.outstandingPuts_[t].queued=this.connected_,this.sendRequest(n,e,e=>{this.log_(n+" response",e),delete this.outstandingPuts_[t],this.outstandingPutCount_--,0===this.outstandingPutCount_&&(this.outstandingPuts_=[]),r&&r(e.s,e.d)})}reportStats(e){var t;this.connected_&&(this.log_("reportStats",t={c:e}),this.sendRequest("s",t,e=>{var t;"ok"!==e.s&&(t=e.d,this.log_("reportStats","Error sending stats: "+t))}))}onDataMessage_(e){if("r"in e){this.log_("from server: "+L(e));var t=e.r;const n=this.requestCBHash_[t];n&&(delete this.requestCBHash_[t],n(e.b))}else{if("error"in e)throw"A server-side error has occurred: "+e.error;"a"in e&&this.onDataPush_(e.a,e.b)}}onDataPush_(e,t){this.log_("handleServerMessage",e,t),"d"===e?this.onDataUpdate_(t.p,t.d,!1,t.t):"m"===e?this.onDataUpdate_(t.p,t.d,!0,t.t):"c"===e?this.onListenRevoked_(t.p,t.q):"ac"===e?this.onAuthRevoked_(t.s,t.d):"apc"===e?this.onAppCheckRevoked_(t.s,t.d):"sd"===e?this.onSecurityDebugPacket_(t):_l("Unrecognized action received from server: "+L(e)+"\nAre you using the latest client?")}onReady_(e,t){this.log_("connection ready"),this.connected_=!0,this.lastConnectionEstablishedTime_=(new Date).getTime(),this.handleTimestamp_(e),this.lastSessionId=t,this.firstConnection_&&this.sendConnectStats_(),this.restoreState_(),this.firstConnection_=!1,this.onConnectStatus_(!0)}scheduleConnect_(e){f(!this.realtime_,"Scheduling a connect when we're already connected/ing?"),this.establishConnectionTimer_&&clearTimeout(this.establishConnectionTimer_),this.establishConnectionTimer_=setTimeout(()=>{this.establishConnectionTimer_=null,this.establishConnection_()},Math.floor(e))}initConnection_(){!this.realtime_&&this.firstConnection_&&this.scheduleConnect_(0)}onVisible_(e){e&&!this.visible_&&this.reconnectDelay_===this.maxReconnectDelay_&&(this.log_("Window became visible. Reducing delay."),this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0)),this.visible_=e}onOnline_(e){e?(this.log_("Browser went online."),this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0)):(this.log_("Browser went offline. Killing connection."),this.realtime_&&this.realtime_.close())}onRealtimeDisconnect_(){var e;this.log_("data client disconnected"),this.connected_=!1,this.realtime_=null,this.cancelSentTransactions_(),this.requestCBHash_={},this.shouldReconnect_()&&(this.visible_?this.lastConnectionEstablishedTime_&&(3e4<(new Date).getTime()-this.lastConnectionEstablishedTime_&&(this.reconnectDelay_=1e3),this.lastConnectionEstablishedTime_=null):(this.log_("Window isn't visible. Delaying reconnect."),this.reconnectDelay_=this.maxReconnectDelay_,this.lastConnectionAttemptTime_=(new Date).getTime()),e=(new Date).getTime()-this.lastConnectionAttemptTime_,e=Math.max(0,this.reconnectDelay_-e),e=Math.random()*e,this.log_("Trying to reconnect in "+e+"ms"),this.scheduleConnect_(e),this.reconnectDelay_=Math.min(this.maxReconnectDelay_,1.3*this.reconnectDelay_)),this.onConnectStatus_(!1)}async establishConnection_(){if(this.shouldReconnect_()){this.log_("Making a connection attempt"),this.lastConnectionAttemptTime_=(new Date).getTime(),this.lastConnectionEstablishedTime_=null;var e=this.onDataMessage_.bind(this),r=this.onReady_.bind(this);const u=this.onRealtimeDisconnect_.bind(this);var i=this.id+":"+Su.nextConnectionId_++,s=this.lastSessionId;let t=!1,n=null;var a=function(){n?n.close():(t=!0,u())};this.realtime_={close:a,sendRequest:function(e){f(n,"sendRequest call when we're not connected not allowed."),n.sendRequest(e)}};var o=this.forceTokenRefresh_;this.forceTokenRefresh_=!1;try{var[c,l]=await Promise.all([this.authTokenProvider_.getToken(o),this.appCheckTokenProvider_.getToken(o)]);t?El("getToken() completed but was canceled"):(El("getToken() completed. Creating connection."),this.authToken_=c&&c.accessToken,this.appCheckToken_=l&&l.token,n=new iu(i,this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,e,r,u,e=>{Sl(e+" ("+this.repoInfo_.toString()+")"),this.interrupt("server_kill")},s))}catch(e){this.log_("Failed to get token: "+e),t||(this.repoInfo_.nodeAdmin&&Sl(e),a())}}}interrupt(e){El("Interrupting connection for reason: "+e),this.interruptReasons_[e]=!0,this.realtime_?this.realtime_.close():(this.establishConnectionTimer_&&(clearTimeout(this.establishConnectionTimer_),this.establishConnectionTimer_=null),this.connected_&&this.onRealtimeDisconnect_())}resume(e){El("Resuming connection for reason: "+e),delete this.interruptReasons_[e],q(this.interruptReasons_)&&(this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0))}handleTimestamp_(e){var t=e-(new Date).getTime();this.onServerInfoUpdate_({serverTimeOffset:t})}cancelSentTransactions_(){for(let e=0;e<this.outstandingPuts_.length;e++){const t=this.outstandingPuts_[e];t&&"h"in t.request&&t.queued&&(t.onComplete&&t.onComplete("disconnect"),delete this.outstandingPuts_[e],this.outstandingPutCount_--)}0===this.outstandingPutCount_&&(this.outstandingPuts_=[])}onListenRevoked_(e,t){let n;n=t?t.map(e=>bl(e)).join("$"):"default";const r=this.removeListen_(e,n);r&&r.onComplete&&r.onComplete("permission_denied")}removeListen_(e,t){var n=new cu(e).toString();let r;if(this.listens.has(n)){const i=this.listens.get(n);r=i.get(t),i.delete(t),0===i.size&&this.listens.delete(n)}else r=void 0;return r}onAuthRevoked_(e,t){El("Auth token revoked: "+e+"/"+t),this.authToken_=null,this.forceTokenRefresh_=!0,this.realtime_.close(),"invalid_token"!==e&&"permission_denied"!==e||(this.invalidAuthTokenCount_++,3<=this.invalidAuthTokenCount_&&(this.reconnectDelay_=3e4,this.authTokenProvider_.notifyForInvalidToken()))}onAppCheckRevoked_(e,t){El("App check token revoked: "+e+"/"+t),this.appCheckToken_=null,this.forceTokenRefresh_=!0,"invalid_token"!==e&&"permission_denied"!==e||(this.invalidAppCheckTokenCount_++,3<=this.invalidAppCheckTokenCount_&&this.appCheckTokenProvider_.notifyForInvalidToken())}onSecurityDebugPacket_(e){this.securityDebugCallback_?this.securityDebugCallback_(e):"msg"in e&&console.log("FIREBASE: "+e.msg.replace("\n","\nFIREBASE: "))}restoreState_(){this.tryAuth(),this.tryAppCheck();for(const t of this.listens.values())for(const n of t.values())this.sendListen_(n);for(let r=0;r<this.outstandingPuts_.length;r++)this.outstandingPuts_[r]&&this.sendPut_(r);for(;this.onDisconnectRequestQueue_.length;){var e=this.onDisconnectRequestQueue_.shift();this.sendOnDisconnect_(e.action,e.pathString,e.data,e.onComplete)}for(let i=0;i<this.outstandingGets_.length;i++)this.outstandingGets_[i]&&this.sendGet_(i)}sendConnectStats_(){const e={};e["sdk.js."+Xc.replace(/\./g,"-")]=1,I()?e["framework.cordova"]=1:C()&&(e["framework.reactnative"]=1),this.reportStats(e)}shouldReconnect_(){var e=ou.getInstance().currentlyOnline();return q(this.interruptReasons_)&&e}}Su.nextPersistentConnectionId_=0,Su.nextConnectionId_=0;class ku{constructor(e,t){this.name=e,this.node=t}static Wrap(e,t){return new ku(e,t)}}class Au{getCompare(){return this.compare.bind(this)}indexedValueChanged(e,t){var n=new ku(Nl,e),r=new ku(Nl,t);return 0!==this.compare(n,r)}minPost(){return ku.MIN}}let Nu;class Ru extends Au{static get __EMPTY_NODE(){return Nu}static set __EMPTY_NODE(e){Nu=e}compare(e,t){return Pl(e.name,t.name)}isDefinedOn(e){throw u("KeyIndex.isDefinedOn not expected to be called.")}indexedValueChanged(e,t){return!1}minPost(){return ku.MIN}maxPost(){return new ku(Rl,Nu)}makePost(e,t){return f("string"==typeof e,"KeyIndex indexValue must always be a string."),new ku(e,Nu)}toString(){return".key"}}const Pu=new Ru;class Du{constructor(e,t,n,r,i=null){this.isReverse_=r,this.resultGenerator_=i,this.nodeStack_=[];let s=1;for(;!e.isEmpty();)if(s=t?n(e.key,t):1,r&&(s*=-1),s<0)e=this.isReverse_?e.left:e.right;else{if(0===s){this.nodeStack_.push(e);break}this.nodeStack_.push(e),e=this.isReverse_?e.right:e.left}}getNext(){if(0===this.nodeStack_.length)return null;let e=this.nodeStack_.pop(),t;if(t=this.resultGenerator_?this.resultGenerator_(e.key,e.value):{key:e.key,value:e.value},this.isReverse_)for(e=e.left;!e.isEmpty();)this.nodeStack_.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack_.push(e),e=e.left;return t}hasNext(){return 0<this.nodeStack_.length}peek(){if(0===this.nodeStack_.length)return null;var e=this.nodeStack_[this.nodeStack_.length-1];return this.resultGenerator_?this.resultGenerator_(e.key,e.value):{key:e.key,value:e.value}}}class xu{constructor(e,t,n,r,i){this.key=e,this.value=t,this.color=null!=n?n:xu.RED,this.left=null!=r?r:Mu.EMPTY_NODE,this.right=null!=i?i:Mu.EMPTY_NODE}copy(e,t,n,r,i){return new xu(null!=e?e:this.key,null!=t?t:this.value,null!=n?n:this.color,null!=r?r:this.left,null!=i?i:this.right)}count(){return this.left.count()+1+this.right.count()}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||!!e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min_(){return this.left.isEmpty()?this:this.left.min_()}minKey(){return this.min_().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,n){let r=this;var i=n(e,r.key);return r=i<0?r.copy(null,null,null,r.left.insert(e,t,n),null):0===i?r.copy(null,t,null,null,null):r.copy(null,null,null,null,r.right.insert(e,t,n)),r.fixUp_()}removeMin_(){if(this.left.isEmpty())return Mu.EMPTY_NODE;let e=this;return e.left.isRed_()||e.left.left.isRed_()||(e=e.moveRedLeft_()),e=e.copy(null,null,null,e.left.removeMin_(),null),e.fixUp_()}remove(e,t){let n,r;if(n=this,t(e,n.key)<0)n.left.isEmpty()||n.left.isRed_()||n.left.left.isRed_()||(n=n.moveRedLeft_()),n=n.copy(null,null,null,n.left.remove(e,t),null);else{if(n.left.isRed_()&&(n=n.rotateRight_()),n.right.isEmpty()||n.right.isRed_()||n.right.left.isRed_()||(n=n.moveRedRight_()),0===t(e,n.key)){if(n.right.isEmpty())return Mu.EMPTY_NODE;r=n.right.min_(),n=n.copy(r.key,r.value,null,null,n.right.removeMin_())}n=n.copy(null,null,null,null,n.right.remove(e,t))}return n.fixUp_()}isRed_(){return this.color}fixUp_(){let e=this;return e.right.isRed_()&&!e.left.isRed_()&&(e=e.rotateLeft_()),e.left.isRed_()&&e.left.left.isRed_()&&(e=e.rotateRight_()),e.left.isRed_()&&e.right.isRed_()&&(e=e.colorFlip_()),e}moveRedLeft_(){let e=this.colorFlip_();return e.right.left.isRed_()&&(e=e.copy(null,null,null,null,e.right.rotateRight_()),e=e.rotateLeft_(),e=e.colorFlip_()),e}moveRedRight_(){let e=this.colorFlip_();return e.left.left.isRed_()&&(e=e.rotateRight_(),e=e.colorFlip_()),e}rotateLeft_(){var e=this.copy(null,null,xu.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight_(){var e=this.copy(null,null,xu.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip_(){var e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth_(){var e=this.check_();return Math.pow(2,e)<=this.count()+1}check_(){if(this.isRed_()&&this.left.isRed_())throw new Error("Red node has red child("+this.key+","+this.value+")");if(this.right.isRed_())throw new Error("Right child of ("+this.key+","+this.value+") is red");var e=this.left.check_();if(e!==this.right.check_())throw new Error("Black depths differ");return e+(this.isRed_()?0:1)}}xu.RED=!0,xu.BLACK=!1;class Ou{copy(e,t,n,r,i){return this}insert(e,t,n){return new xu(e,t,null)}remove(e,t){return this}count(){return 0}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}check_(){return 0}isRed_(){return!1}}class Mu{constructor(e,t=Mu.EMPTY_NODE){this.comparator_=e,this.root_=t}insert(e,t){return new Mu(this.comparator_,this.root_.insert(e,t,this.comparator_).copy(null,null,xu.BLACK,null,null))}remove(e){return new Mu(this.comparator_,this.root_.remove(e,this.comparator_).copy(null,null,xu.BLACK,null,null))}get(e){var t;let n=this.root_;for(;!n.isEmpty();){if(0===(t=this.comparator_(e,n.key)))return n.value;t<0?n=n.left:0<t&&(n=n.right)}return null}getPredecessorKey(e){let t,n=this.root_,r=null;for(;!n.isEmpty();){if(0===(t=this.comparator_(e,n.key))){if(n.left.isEmpty())return r?r.key:null;for(n=n.left;!n.right.isEmpty();)n=n.right;return n.key}t<0?n=n.left:0<t&&(r=n,n=n.right)}throw new Error("Attempted to find predecessor key for a nonexistent key. What gives?")}isEmpty(){return this.root_.isEmpty()}count(){return this.root_.count()}minKey(){return this.root_.minKey()}maxKey(){return this.root_.maxKey()}inorderTraversal(e){return this.root_.inorderTraversal(e)}reverseTraversal(e){return this.root_.reverseTraversal(e)}getIterator(e){return new Du(this.root_,null,this.comparator_,!1,e)}getIteratorFrom(e,t){return new Du(this.root_,e,this.comparator_,!1,t)}getReverseIteratorFrom(e,t){return new Du(this.root_,e,this.comparator_,!0,t)}getReverseIterator(e){return new Du(this.root_,null,this.comparator_,!0,e)}}function Lu(e,t){return Pl(e.name,t.name)}function Fu(e,t){return Pl(e,t)}Mu.EMPTY_NODE=new Ou;let Uu;function Vu(e){return"number"==typeof e?"number:"+xl(e):"string:"+e}function qu(e){var t;e.isLeafNode()?(t=e.val(),f("string"==typeof t||"number"==typeof t||"object"==typeof t&&U(t,".sv"),"Priority must be a string or number.")):f(e===Uu||e.isEmpty(),"priority of unexpected type."),f(e===Uu||e.getPriority().isEmpty(),"Priority nodes can't have a priority of their own.")}let Bu;class ju{constructor(e,t=ju.__childrenNodeConstructor.EMPTY_NODE){this.value_=e,this.priorityNode_=t,this.lazyHash_=null,f(void 0!==this.value_&&null!==this.value_,"LeafNode shouldn't be created with null/undefined value."),qu(this.priorityNode_)}static set __childrenNodeConstructor(e){Bu=e}static get __childrenNodeConstructor(){return Bu}isLeafNode(){return!0}getPriority(){return this.priorityNode_}updatePriority(e){return new ju(this.value_,e)}getImmediateChild(e){return".priority"===e?this.priorityNode_:ju.__childrenNodeConstructor.EMPTY_NODE}getChild(e){return vu(e)?this:".priority"===uu(e)?this.priorityNode_:ju.__childrenNodeConstructor.EMPTY_NODE}hasChild(){return!1}getPredecessorChildName(e,t){return null}updateImmediateChild(e,t){return".priority"===e?this.updatePriority(t):t.isEmpty()&&".priority"!==e?this:ju.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(e,t).updatePriority(this.priorityNode_)}updateChild(e,t){var n=uu(e);return null===n?t:t.isEmpty()&&".priority"!==n?this:(f(".priority"!==n||1===hu(e),".priority must be the last token in a path"),this.updateImmediateChild(n,ju.__childrenNodeConstructor.EMPTY_NODE.updateChild(du(e),t)))}isEmpty(){return!1}numChildren(){return 0}forEachChild(e,t){return!1}val(e){return e&&!this.getPriority().isEmpty()?{".value":this.getValue(),".priority":this.getPriority().val()}:this.getValue()}hash(){if(null===this.lazyHash_){let e="";this.priorityNode_.isEmpty()||(e+="priority:"+Vu(this.priorityNode_.val())+":");var t=typeof this.value_;e+=t+":",e+="number"==t?xl(this.value_):this.value_,this.lazyHash_=ll(e)}return this.lazyHash_}getValue(){return this.value_}compareTo(e){return e===ju.__childrenNodeConstructor.EMPTY_NODE?1:e instanceof ju.__childrenNodeConstructor?-1:(f(e.isLeafNode(),"Unknown node type"),this.compareToLeafNode_(e))}compareToLeafNode_(e){var t=typeof e.value_,n=typeof this.value_,r=ju.VALUE_TYPE_ORDER.indexOf(t),i=ju.VALUE_TYPE_ORDER.indexOf(n);return f(0<=r,"Unknown leaf type: "+t),f(0<=i,"Unknown leaf type: "+n),r===i?"object"==n?0:this.value_<e.value_?-1:this.value_===e.value_?0:1:i-r}withIndex(){return this}isIndexed(){return!0}equals(e){return e===this||!!e.isLeafNode()&&(this.value_===e.value_&&this.priorityNode_.equals(e.priorityNode_))}}ju.VALUE_TYPE_ORDER=["object","boolean","number","string"];let zu,$u;const Ku=new class extends Au{compare(e,t){const n=e.node.getPriority();var r=t.node.getPriority(),r=n.compareTo(r);return 0===r?Pl(e.name,t.name):r}isDefinedOn(e){return!e.getPriority().isEmpty()}indexedValueChanged(e,t){return!e.getPriority().equals(t.getPriority())}minPost(){return ku.MIN}maxPost(){return new ku(Rl,new ju("[PRIORITY-POST]",$u))}makePost(e,t){var n=zu(e);return new ku(t,new ju("[PRIORITY-POST]",n))}toString(){return".priority"}},Wu=Math.log(2);class Gu{constructor(e){var t;this.count=(t=e+1,parseInt(Math.log(t)/Wu,10)),this.current_=this.count-1;var n,r=(n=this.count,parseInt(Array(n+1).join("1"),2));this.bits_=e+1&r}nextBitIsOne(){var e=!(this.bits_&1<<this.current_);return this.current_--,e}}function Hu(c,e,l,t){c.sort(e);const u=function(e,t){var n=t-e;let r,i;if(0==n)return null;if(1==n)return r=c[e],i=l?l(r):r,new xu(i,r.node,xu.BLACK,null,null);var s=parseInt(n/2,10)+e,a=u(e,s),n=u(s+1,t);return r=c[s],i=l?l(r):r,new xu(i,r.node,xu.BLACK,a,n)};var n=function(e){let s=null,a=null,o=c.length;function t(e,t){var n=o-e,r=o;o-=e;var i=u(1+n,r),r=c[n],n=l?l(r):r;!function(e){if(s){s.left=e;s=e}else{a=e;s=e}}(new xu(n,r.node,t,null,i))}for(let i=0;i<e.count;++i){var n=e.nextBitIsOne(),r=Math.pow(2,e.count-(i+1));n?t(r,xu.BLACK):(t(r,xu.BLACK),t(r,xu.RED))}return a}(new Gu(c.length));return new Mu(t||e,n)}let Qu;const Yu={};class Ju{constructor(e,t){this.indexes_=e,this.indexSet_=t}static get Default(){return f((Yu,Ku),"ChildrenNode.ts has not been loaded"),Qu=Qu||new Ju({".priority":Yu},{".priority":Ku}),Qu}get(e){var t=V(this.indexes_,e);if(!t)throw new Error("No index defined for "+e);return t instanceof Mu?t:null}hasIndex(e){return U(this.indexSet_,e.toString())}addIndex(e,t){f(e!==Pu,"KeyIndex always exists and isn't meant to be added to the IndexMap.");const n=[];let r=!1;const i=t.getIterator(ku.Wrap);let s=i.getNext();for(;s;)r=r||e.isDefinedOn(s.node),n.push(s),s=i.getNext();let a;a=r?Hu(n,e.getCompare()):Yu;var o=e.toString();const c=Object.assign({},this.indexSet_);c[o]=e;const l=Object.assign({},this.indexes_);return l[o]=a,new Ju(l,c)}addToIndexes(a,o){var e=B(this.indexes_,(t,e)=>{const n=V(this.indexSet_,e);if(f(n,"Missing index implementation for "+e),t===Yu){if(n.isDefinedOn(a.node)){const i=[],s=o.getIterator(ku.Wrap);let e=s.getNext();for(;e;)e.name!==a.name&&i.push(e),e=s.getNext();return i.push(a),Hu(i,n.getCompare())}return Yu}{var r=o.get(a.name);let e=t;return r&&(e=e.remove(new ku(a.name,r))),e.insert(a,a.node)}});return new Ju(e,this.indexSet_)}removeFromIndexes(n,r){var e=B(this.indexes_,e=>{if(e===Yu)return e;var t=r.get(n.name);return t?e.remove(new ku(n.name,t)):e});return new Ju(e,this.indexSet_)}}let Xu;class Zu{constructor(e,t,n){this.children_=e,this.priorityNode_=t,this.indexMap_=n,this.lazyHash_=null,this.priorityNode_&&qu(this.priorityNode_),this.children_.isEmpty()&&f(!this.priorityNode_||this.priorityNode_.isEmpty(),"An empty node cannot have a priority")}static get EMPTY_NODE(){return Xu=Xu||new Zu(new Mu(Fu),null,Ju.Default)}isLeafNode(){return!1}getPriority(){return this.priorityNode_||Xu}updatePriority(e){return this.children_.isEmpty()?this:new Zu(this.children_,e,this.indexMap_)}getImmediateChild(e){if(".priority"===e)return this.getPriority();var t=this.children_.get(e);return null===t?Xu:t}getChild(e){var t=uu(e);return null===t?this:this.getImmediateChild(t).getChild(du(e))}hasChild(e){return null!==this.children_.get(e)}updateImmediateChild(n,r){if(f(r,"We should always be passing snapshot nodes"),".priority"===n)return this.updatePriority(r);{var i=new ku(n,r);let e,t;t=r.isEmpty()?(e=this.children_.remove(n),this.indexMap_.removeFromIndexes(i,this.children_)):(e=this.children_.insert(n,r),this.indexMap_.addToIndexes(i,this.children_));i=e.isEmpty()?Xu:this.priorityNode_;return new Zu(e,i,t)}}updateChild(e,t){var n=uu(e);if(null===n)return t;f(".priority"!==uu(e)||1===hu(e),".priority must be the last token in a path");var r=this.getImmediateChild(n).updateChild(du(e),t);return this.updateImmediateChild(n,r)}isEmpty(){return this.children_.isEmpty()}numChildren(){return this.children_.count()}val(n){if(this.isEmpty())return null;const r={};let i=0,s=0,a=!0;if(this.forEachChild(Ku,(e,t)=>{r[e]=t.val(n),i++,a&&Zu.INTEGER_REGEXP_.test(e)?s=Math.max(s,Number(e)):a=!1}),!n&&a&&s<2*i){const e=[];for(const t in r)e[t]=r[t];return e}return n&&!this.getPriority().isEmpty()&&(r[".priority"]=this.getPriority().val()),r}hash(){if(null===this.lazyHash_){let r="";this.getPriority().isEmpty()||(r+="priority:"+Vu(this.getPriority().val())+":"),this.forEachChild(Ku,(e,t)=>{var n=t.hash();""!==n&&(r+=":"+e+":"+n)}),this.lazyHash_=""===r?"":ll(r)}return this.lazyHash_}getPredecessorChildName(e,t,n){const r=this.resolveIndex_(n);if(r){var i=r.getPredecessorKey(new ku(e,t));return i?i.name:null}return this.children_.getPredecessorKey(e)}getFirstChildName(e){const t=this.resolveIndex_(e);if(t){var n=t.minKey();return n&&n.name}return this.children_.minKey()}getFirstChild(e){var t=this.getFirstChildName(e);return t?new ku(t,this.children_.get(t)):null}getLastChildName(e){const t=this.resolveIndex_(e);if(t){var n=t.maxKey();return n&&n.name}return this.children_.maxKey()}getLastChild(e){var t=this.getLastChildName(e);return t?new ku(t,this.children_.get(t)):null}forEachChild(e,t){const n=this.resolveIndex_(e);return n?n.inorderTraversal(e=>t(e.name,e.node)):this.children_.inorderTraversal(t)}getIterator(e){return this.getIteratorFrom(e.minPost(),e)}getIteratorFrom(t,n){const e=this.resolveIndex_(n);if(e)return e.getIteratorFrom(t,e=>e);{const r=this.children_.getIteratorFrom(t.name,ku.Wrap);let e=r.peek();for(;null!=e&&n.compare(e,t)<0;)r.getNext(),e=r.peek();return r}}getReverseIterator(e){return this.getReverseIteratorFrom(e.maxPost(),e)}getReverseIteratorFrom(t,n){const e=this.resolveIndex_(n);if(e)return e.getReverseIteratorFrom(t,e=>e);{const r=this.children_.getReverseIteratorFrom(t.name,ku.Wrap);let e=r.peek();for(;null!=e&&0<n.compare(e,t);)r.getNext(),e=r.peek();return r}}compareTo(e){return this.isEmpty()?e.isEmpty()?0:-1:e.isLeafNode()||e.isEmpty()?1:e===th?-1:0}withIndex(e){if(e===Pu||this.indexMap_.hasIndex(e))return this;var t=this.indexMap_.addIndex(e,this.children_);return new Zu(this.children_,this.priorityNode_,t)}isIndexed(e){return e===Pu||this.indexMap_.hasIndex(e)}equals(e){if(e===this)return!0;if(e.isLeafNode())return!1;{const n=e;if(this.getPriority().equals(n.getPriority())){if(this.children_.count()!==n.children_.count())return!1;{const r=this.getIterator(Ku),i=n.getIterator(Ku);let e=r.getNext(),t=i.getNext();for(;e&&t;){if(e.name!==t.name||!e.node.equals(t.node))return!1;e=r.getNext(),t=i.getNext()}return null===e&&null===t}}return!1}}resolveIndex_(e){return e===Pu?null:this.indexMap_.get(e.toString())}}Zu.INTEGER_REGEXP_=/^(0|[1-9]\d*)$/;class eh extends Zu{constructor(){super(new Mu(Fu),Zu.EMPTY_NODE,Ju.Default)}compareTo(e){return e===this?0:1}equals(e){return e===this}getPriority(){return this}getImmediateChild(e){return Zu.EMPTY_NODE}isEmpty(){return!1}}const th=new eh;Object.defineProperties(ku,{MIN:{value:new ku(Nl,Zu.EMPTY_NODE)},MAX:{value:new ku(Rl,th)}}),Ru.__EMPTY_NODE=Zu.EMPTY_NODE,ju.__childrenNodeConstructor=Zu,nl=th,Uu=nl,rl=th,$u=rl;const nh=!0;function rh(i,e=null){if(null===i)return Zu.EMPTY_NODE;if("object"==typeof i&&".priority"in i&&(e=i[".priority"]),f(null===e||"string"==typeof e||"number"==typeof e||"object"==typeof e&&".sv"in e,"Invalid priority type found: "+typeof e),"object"!=typeof(i="object"==typeof i&&".value"in i&&null!==i[".value"]?i[".value"]:i)||".sv"in i){var t=i;return new ju(t,rh(e))}if(i instanceof Array||!nh){let r=Zu.EMPTY_NODE;return Dl(i,(e,t)=>{if(U(i,e)&&"."!==e.substring(0,1)){const n=rh(t);!n.isLeafNode()&&n.isEmpty()||(r=r.updateImmediateChild(e,n))}}),r.updatePriority(rh(e))}{const s=[];let r=!1;if(Dl(i,(e,t)=>{if("."!==e.substring(0,1)){const n=rh(t);n.isEmpty()||(r=r||!n.getPriority().isEmpty(),s.push(new ku(e,n)))}}),0===s.length)return Zu.EMPTY_NODE;var n=Hu(s,Lu,e=>e.name,Fu);if(r){t=Hu(s,Ku.getCompare());return new Zu(n,rh(e),new Ju({".priority":t},{".priority":Ku}))}return new Zu(n,rh(e),Ju.Default)}}zu=rh;class ih extends Au{constructor(e){super(),this.indexPath_=e,f(!vu(e)&&".priority"!==uu(e),"Can't create PathIndex with empty path or .priority key")}extractChild(e){return e.getChild(this.indexPath_)}isDefinedOn(e){return!e.getChild(this.indexPath_).isEmpty()}compare(e,t){const n=this.extractChild(e.node);var r=this.extractChild(t.node),r=n.compareTo(r);return 0===r?Pl(e.name,t.name):r}makePost(e,t){var n=rh(e),n=Zu.EMPTY_NODE.updateChild(this.indexPath_,n);return new ku(t,n)}maxPost(){var e=Zu.EMPTY_NODE.updateChild(this.indexPath_,th);return new ku(Rl,e)}toString(){return fu(this.indexPath_,0).join("/")}}const sh=new class extends Au{compare(e,t){var n=e.node.compareTo(t.node);return 0===n?Pl(e.name,t.name):n}isDefinedOn(e){return!0}indexedValueChanged(e,t){return!e.equals(t)}minPost(){return ku.MIN}maxPost(){return ku.MAX}makePost(e,t){var n=rh(e);return new ku(t,n)}toString(){return".value"}};function ah(e){return{type:"value",snapshotNode:e}}function oh(e,t){return{type:"child_added",snapshotNode:t,childName:e}}function ch(e,t){return{type:"child_removed",snapshotNode:t,childName:e}}function lh(e,t,n){return{type:"child_changed",snapshotNode:t,childName:e,oldSnap:n}}class uh{constructor(e){this.index_=e}updateChild(e,t,n,r,i,s){f(e.isIndexed(this.index_),"A node must be indexed if only a child is updated");const a=e.getImmediateChild(t);return a.getChild(r).equals(n.getChild(r))&&a.isEmpty()===n.isEmpty()?e:(null!=s&&(n.isEmpty()?e.hasChild(t)?s.trackChildChange(ch(t,a)):f(e.isLeafNode(),"A child remove without an old child only makes sense on a leaf node"):a.isEmpty()?s.trackChildChange(oh(t,n)):s.trackChildChange(lh(t,n,a))),e.isLeafNode()&&n.isEmpty()?e:e.updateImmediateChild(t,n).withIndex(this.index_))}updateFullNode(r,n,i){return null!=i&&(r.isLeafNode()||r.forEachChild(Ku,(e,t)=>{n.hasChild(e)||i.trackChildChange(ch(e,t))}),n.isLeafNode()||n.forEachChild(Ku,(e,t)=>{if(r.hasChild(e)){const n=r.getImmediateChild(e);n.equals(t)||i.trackChildChange(lh(e,t,n))}else i.trackChildChange(oh(e,t))})),n.withIndex(this.index_)}updatePriority(e,t){return e.isEmpty()?Zu.EMPTY_NODE:e.updatePriority(t)}filtersNodes(){return!1}getIndexedFilter(){return this}getIndex(){return this.index_}}class hh{constructor(e){this.indexedFilter_=new uh(e.getIndex()),this.index_=e.getIndex(),this.startPost_=hh.getStartPost_(e),this.endPost_=hh.getEndPost_(e),this.startIsInclusive_=!e.startAfterSet_,this.endIsInclusive_=!e.endBeforeSet_}getStartPost(){return this.startPost_}getEndPost(){return this.endPost_}matches(e){var t=this.startIsInclusive_?this.index_.compare(this.getStartPost(),e)<=0:this.index_.compare(this.getStartPost(),e)<0,n=this.endIsInclusive_?this.index_.compare(e,this.getEndPost())<=0:this.index_.compare(e,this.getEndPost())<0;return t&&n}updateChild(e,t,n,r,i,s){return this.matches(new ku(t,n))||(n=Zu.EMPTY_NODE),this.indexedFilter_.updateChild(e,t,n,r,i,s)}updateFullNode(e,t,n){let r=(t=t.isLeafNode()?Zu.EMPTY_NODE:t).withIndex(this.index_);r=r.updatePriority(Zu.EMPTY_NODE);const i=this;return t.forEachChild(Ku,(e,t)=>{i.matches(new ku(e,t))||(r=r.updateImmediateChild(e,Zu.EMPTY_NODE))}),this.indexedFilter_.updateFullNode(e,r,n)}updatePriority(e,t){return e}filtersNodes(){return!0}getIndexedFilter(){return this.indexedFilter_}getIndex(){return this.index_}static getStartPost_(e){if(e.hasStart()){var t=e.getIndexStartName();return e.getIndex().makePost(e.getIndexStartValue(),t)}return e.getIndex().minPost()}static getEndPost_(e){if(e.hasEnd()){var t=e.getIndexEndName();return e.getIndex().makePost(e.getIndexEndValue(),t)}return e.getIndex().maxPost()}}class dh{constructor(e){this.withinDirectionalStart=e=>this.reverse_?this.withinEndPost(e):this.withinStartPost(e),this.withinDirectionalEnd=e=>this.reverse_?this.withinStartPost(e):this.withinEndPost(e),this.withinStartPost=e=>{var t=this.index_.compare(this.rangedFilter_.getStartPost(),e);return this.startIsInclusive_?t<=0:t<0},this.withinEndPost=e=>{var t=this.index_.compare(e,this.rangedFilter_.getEndPost());return this.endIsInclusive_?t<=0:t<0},this.rangedFilter_=new hh(e),this.index_=e.getIndex(),this.limit_=e.getLimit(),this.reverse_=!e.isViewFromLeft(),this.startIsInclusive_=!e.startAfterSet_,this.endIsInclusive_=!e.endBeforeSet_}updateChild(e,t,n,r,i,s){return this.rangedFilter_.matches(new ku(t,n))||(n=Zu.EMPTY_NODE),e.getImmediateChild(t).equals(n)?e:e.numChildren()<this.limit_?this.rangedFilter_.getIndexedFilter().updateChild(e,t,n,r,i,s):this.fullLimitUpdateChild_(e,t,n,i,s)}updateFullNode(e,n,t){let r;if(n.isLeafNode()||n.isEmpty())r=Zu.EMPTY_NODE.withIndex(this.index_);else if(2*this.limit_<n.numChildren()&&n.isIndexed(this.index_)){r=Zu.EMPTY_NODE.withIndex(this.index_);let e;e=this.reverse_?n.getReverseIteratorFrom(this.rangedFilter_.getEndPost(),this.index_):n.getIteratorFrom(this.rangedFilter_.getStartPost(),this.index_);let t=0;for(;e.hasNext()&&t<this.limit_;){var i=e.getNext();if(this.withinDirectionalStart(i)){if(!this.withinDirectionalEnd(i))break;r=r.updateImmediateChild(i.name,i.node),t++}}}else{r=n.withIndex(this.index_),r=r.updatePriority(Zu.EMPTY_NODE);let e;e=this.reverse_?r.getReverseIterator(this.index_):r.getIterator(this.index_);let t=0;for(;e.hasNext();){var s=e.getNext();t<this.limit_&&this.withinDirectionalStart(s)&&this.withinDirectionalEnd(s)?t++:r=r.updateImmediateChild(s.name,Zu.EMPTY_NODE)}}return this.rangedFilter_.getIndexedFilter().updateFullNode(e,r,t)}updatePriority(e,t){return e}filtersNodes(){return!0}getIndexedFilter(){return this.rangedFilter_.getIndexedFilter()}getIndex(){return this.index_}fullLimitUpdateChild_(e,t,n,r,i){let s;if(this.reverse_){const d=this.index_.getCompare();s=(e,t)=>d(t,e)}else s=this.index_.getCompare();const a=e;f(a.numChildren()===this.limit_,"");var o=new ku(t,n),c=this.reverse_?a.getFirstChild(this.index_):a.getLastChild(this.index_),l=this.rangedFilter_.matches(o);if(a.hasChild(t)){var u=a.getImmediateChild(t);let e=r.getChildAfterChild(this.index_,c,this.reverse_);for(;null!=e&&(e.name===t||a.hasChild(e.name));)e=r.getChildAfterChild(this.index_,e,this.reverse_);var h=null==e?1:s(e,o);if(l&&!n.isEmpty()&&0<=h)return null!=i&&i.trackChildChange(lh(t,n,u)),a.updateImmediateChild(t,n);{null!=i&&i.trackChildChange(ch(t,u));const p=a.updateImmediateChild(t,Zu.EMPTY_NODE);return null!=e&&this.rangedFilter_.matches(e)?(null!=i&&i.trackChildChange(oh(e.name,e.node)),p.updateImmediateChild(e.name,e.node)):p}}return!n.isEmpty()&&l&&0<=s(c,o)?(null!=i&&(i.trackChildChange(ch(c.name,c.node)),i.trackChildChange(oh(t,n))),a.updateImmediateChild(t,n).updateImmediateChild(c.name,Zu.EMPTY_NODE)):e}}class ph{constructor(){this.limitSet_=!1,this.startSet_=!1,this.startNameSet_=!1,this.startAfterSet_=!1,this.endSet_=!1,this.endNameSet_=!1,this.endBeforeSet_=!1,this.limit_=0,this.viewFrom_="",this.indexStartValue_=null,this.indexStartName_="",this.indexEndValue_=null,this.indexEndName_="",this.index_=Ku}hasStart(){return this.startSet_}isViewFromLeft(){return""===this.viewFrom_?this.startSet_:"l"===this.viewFrom_}getIndexStartValue(){return f(this.startSet_,"Only valid if start has been set"),this.indexStartValue_}getIndexStartName(){return f(this.startSet_,"Only valid if start has been set"),this.startNameSet_?this.indexStartName_:Nl}hasEnd(){return this.endSet_}getIndexEndValue(){return f(this.endSet_,"Only valid if end has been set"),this.indexEndValue_}getIndexEndName(){return f(this.endSet_,"Only valid if end has been set"),this.endNameSet_?this.indexEndName_:Rl}hasLimit(){return this.limitSet_}hasAnchoredLimit(){return this.limitSet_&&""!==this.viewFrom_}getLimit(){return f(this.limitSet_,"Only valid if limit has been set"),this.limit_}getIndex(){return this.index_}loadsAllData(){return!(this.startSet_||this.endSet_||this.limitSet_)}isDefault(){return this.loadsAllData()&&this.index_===Ku}copy(){const e=new ph;return e.limitSet_=this.limitSet_,e.limit_=this.limit_,e.startSet_=this.startSet_,e.startAfterSet_=this.startAfterSet_,e.indexStartValue_=this.indexStartValue_,e.startNameSet_=this.startNameSet_,e.indexStartName_=this.indexStartName_,e.endSet_=this.endSet_,e.endBeforeSet_=this.endBeforeSet_,e.indexEndValue_=this.indexEndValue_,e.endNameSet_=this.endNameSet_,e.indexEndName_=this.indexEndName_,e.index_=this.index_,e.viewFrom_=this.viewFrom_,e}}function fh(e,t,n){const r=e.copy();return r.startSet_=!0,void 0===t&&(t=null),r.indexStartValue_=t,null!=n?(r.startNameSet_=!0,r.indexStartName_=n):(r.startNameSet_=!1,r.indexStartName_=""),r}function gh(e,t,n){const r=e.copy();return r.endSet_=!0,void 0===t&&(t=null),r.indexEndValue_=t,void 0!==n?(r.endNameSet_=!0,r.indexEndName_=n):(r.endNameSet_=!1,r.indexEndName_=""),r}function mh(e,t){const n=e.copy();return n.index_=t,n}function vh(e){const t={};if(e.isDefault())return t;let n;var r;return n=e.index_===Ku?"$priority":e.index_===sh?"$value":e.index_===Pu?"$key":(f(e.index_ instanceof ih,"Unrecognized index type!"),e.index_.toString()),t.orderBy=L(n),e.startSet_&&(r=e.startAfterSet_?"startAfter":"startAt",t[r]=L(e.indexStartValue_),e.startNameSet_&&(t[r]+=","+L(e.indexStartName_))),e.endSet_&&(r=e.endBeforeSet_?"endBefore":"endAt",t[r]=L(e.indexEndValue_),e.endNameSet_&&(t[r]+=","+L(e.indexEndName_))),e.limitSet_&&(e.isViewFromLeft()?t.limitToFirst=e.limit_:t.limitToLast=e.limit_),t}function _h(t){const n={};if(t.startSet_&&(n.sp=t.indexStartValue_,t.startNameSet_&&(n.sn=t.indexStartName_),n.sin=!t.startAfterSet_),t.endSet_&&(n.ep=t.indexEndValue_,t.endNameSet_&&(n.en=t.indexEndName_),n.ein=!t.endBeforeSet_),t.limitSet_){n.l=t.limit_;let e=t.viewFrom_;""===e&&(e=t.isViewFromLeft()?"l":"r"),n.vf=e}return t.index_!==Ku&&(n.i=t.index_.toString()),n}class yh extends su{constructor(e,t,n,r){super(),this.repoInfo_=e,this.onDataUpdate_=t,this.authTokenProvider_=n,this.appCheckTokenProvider_=r,this.log_=vl("p:rest:"),this.listens_={}}reportStats(e){throw new Error("Method not implemented.")}static getListenId_(e,t){return void 0!==t?"tag$"+t:(f(e._queryParams.isDefault(),"should have a tag if it's not a default query."),e._path.toString())}listen(e,t,r,i){const s=e._path.toString();this.log_("Listen called for "+s+" "+e._queryIdentifier);const a=yh.getListenId_(e,r),o={};this.listens_[a]=o;var n=vh(e._queryParams);this.restRequest_(s+".json",n,(t,e)=>{let n=e;if(null===(t=404===t?n=null:t)&&this.onDataUpdate_(s,n,!1,r),V(this.listens_,a)===o){let e;e=t?401===t?"permission_denied":"rest_error:"+t:"ok",i(e,null)}})}unlisten(e,t){var n=yh.getListenId_(e,t);delete this.listens_[n]}get(e){var t=vh(e._queryParams);const r=e._path.toString(),i=new y;return this.restRequest_(r+".json",t,(e,t)=>{let n=t;null===(e=404===e?n=null:e)?(this.onDataUpdate_(r,n,!1,null),i.resolve(n)):i.reject(new Error(n))}),i.promise}refreshAuthToken(e){}restRequest_(i,s={},a){return s.format="export",Promise.all([this.authTokenProvider_.getToken(!1),this.appCheckTokenProvider_.getToken(!1)]).then(([e,t])=>{e&&e.accessToken&&(s.auth=e.accessToken),t&&t.token&&(s.ac=t.token);const n=(this.repoInfo_.secure?"https://":"http://")+this.repoInfo_.host+i+"?ns="+this.repoInfo_.namespace+$(s);this.log_("Sending REST request for "+n);const r=new XMLHttpRequest;r.onreadystatechange=()=>{if(a&&4===r.readyState){this.log_("REST Response for "+n+" received. status:",r.status,"response:",r.responseText);let e=null;if(200<=r.status&&r.status<300){try{e=M(r.responseText)}catch(e){Sl("Failed to parse JSON response for "+n+": "+r.responseText)}a(null,e)}else 401!==r.status&&404!==r.status&&Sl("Got unsuccessful REST response for "+n+" Status: "+r.status),a(r.status);a=null}},r.open("GET",n,!0),r.send()})}}class wh{constructor(){this.rootNode_=Zu.EMPTY_NODE}getNode(e){return this.rootNode_.getChild(e)}updateSnapshot(e,t){this.rootNode_=this.rootNode_.updateChild(e,t)}}function bh(){return{value:null,children:new Map}}function Ih(e,t,n){var r;vu(t)?(e.value=n,e.children.clear()):null!==e.value?e.value=e.value.updateChild(t,n):(r=uu(t),e.children.has(r)||e.children.set(r,bh()),Ih(e.children.get(r),t=du(t),n))}function Th(e,n,r){var i;null!==e.value?r(n,e.value):(i=(e,t)=>{Th(t,new cu(n.toString()+"/"+e),r)},e.children.forEach((e,t)=>{i(t,e)}))}class Eh{constructor(e){this.collection_=e,this.last_=null}get(){var e=this.collection_.get();const n=Object.assign({},e);return this.last_&&Dl(this.last_,(e,t)=>{n[e]=n[e]-t}),this.last_=e,n}}class Ch{constructor(e,t){this.server_=t,this.statsToReport_={},this.statsListener_=new Eh(e);var n=1e4+2e4*Math.random();Ml(this.reportStats_.bind(this),Math.floor(n))}reportStats_(){var e=this.statsListener_.get();const n={};let r=!1;Dl(e,(e,t)=>{0<t&&U(this.statsToReport_,e)&&(n[e]=t,r=!0)}),r&&this.server_.reportStats(n),Ml(this.reportStats_.bind(this),Math.floor(2*Math.random()*3e5))}}function Sh(){return{fromUser:!0,fromServer:!1,queryId:null,tagged:!1}}function kh(){return{fromUser:!1,fromServer:!0,queryId:null,tagged:!1}}function Ah(e){return{fromUser:!1,fromServer:!0,queryId:e,tagged:!0}}(Hk=il=il||{})[Hk.OVERWRITE=0]="OVERWRITE",Hk[Hk.MERGE=1]="MERGE",Hk[Hk.ACK_USER_WRITE=2]="ACK_USER_WRITE",Hk[Hk.LISTEN_COMPLETE=3]="LISTEN_COMPLETE";class Nh{constructor(e,t,n){this.path=e,this.affectedTree=t,this.revert=n,this.type=il.ACK_USER_WRITE,this.source=Sh()}operationForChild(e){if(vu(this.path)){if(null!=this.affectedTree.value)return f(this.affectedTree.children.isEmpty(),"affectedTree should not have overlapping affected paths."),this;var t=this.affectedTree.subtree(new cu(e));return new Nh(lu(),t,this.revert)}return f(uu(this.path)===e,"operationForChild called for unrelated child."),new Nh(du(this.path),this.affectedTree,this.revert)}}class Rh{constructor(e,t){this.source=e,this.path=t,this.type=il.LISTEN_COMPLETE}operationForChild(e){return vu(this.path)?new Rh(this.source,lu()):new Rh(this.source,du(this.path))}}class Ph{constructor(e,t,n){this.source=e,this.path=t,this.snap=n,this.type=il.OVERWRITE}operationForChild(e){return vu(this.path)?new Ph(this.source,lu(),this.snap.getImmediateChild(e)):new Ph(this.source,du(this.path),this.snap)}}class Dh{constructor(e,t,n){this.source=e,this.path=t,this.children=n,this.type=il.MERGE}operationForChild(e){if(vu(this.path)){const t=this.children.subtree(new cu(e));return t.isEmpty()?null:t.value?new Ph(this.source,lu(),t.value):new Dh(this.source,lu(),t)}return f(uu(this.path)===e,"Can't get a merge for a child not on the path of the operation"),new Dh(this.source,du(this.path),this.children)}toString(){return"Operation("+this.path+": "+this.source.toString()+" merge: "+this.children.toString()+")"}}class xh{constructor(e,t,n){this.node_=e,this.fullyInitialized_=t,this.filtered_=n}isFullyInitialized(){return this.fullyInitialized_}isFiltered(){return this.filtered_}isCompleteForPath(e){if(vu(e))return this.isFullyInitialized()&&!this.filtered_;var t=uu(e);return this.isCompleteForChild(t)}isCompleteForChild(e){return this.isFullyInitialized()&&!this.filtered_||this.node_.hasChild(e)}getNode(){return this.node_}}class Oh{constructor(e){this.query_=e,this.index_=this.query_._queryParams.getIndex()}}function Mh(n,e,t,r){var i=[];const s=[];return e.forEach(e=>{var t;"child_changed"===e.type&&n.index_.indexedValueChanged(e.oldSnap,e.snapshotNode)&&s.push((t=e.childName,{type:"child_moved",snapshotNode:e.snapshotNode,childName:t}))}),Lh(n,i,"child_removed",e,r,t),Lh(n,i,"child_added",e,r,t),Lh(n,i,"child_moved",s,r,t),Lh(n,i,"child_changed",e,r,t),Lh(n,i,"value",e,r,t),i}function Lh(s,a,t,e,o,c){const n=e.filter(e=>e.type===t);n.sort((e,t)=>function(e,t,n){if(null==t.childName||null==n.childName)throw u("Should only compare child_ events.");var r=new ku(t.childName,t.snapshotNode),i=new ku(n.childName,n.snapshotNode);return e.index_.compare(r,i)}(s,e,t)),n.forEach(t=>{const n=(e=s,i=c,"value"===(r=t).type||"child_removed"===r.type||(r.prevName=i.getPredecessorChildName(r.childName,r.snapshotNode,e.index_)),r);var e,r,i;o.forEach(e=>{e.respondsTo(t.type)&&a.push(e.createEvent(n,s.query_))})})}function Fh(e,t){return{eventCache:e,serverCache:t}}function Uh(e,t,n,r){return Fh(new xh(t,n,r),e.serverCache)}function Vh(e,t,n,r){return Fh(e.eventCache,new xh(t,n,r))}function qh(e){return e.eventCache.isFullyInitialized()?e.eventCache.getNode():null}function Bh(e){return e.serverCache.isFullyInitialized()?e.serverCache.getNode():null}let jh;class zh{constructor(e,t=(jh=jh||new Mu(yl),jh)){this.value=e,this.children=t}static fromObject(e){let n=new zh(null);return Dl(e,(e,t)=>{n=n.set(new cu(e),t)}),n}isEmpty(){return null===this.value&&this.children.isEmpty()}findRootMostMatchingPathAndValue(e,t){if(null!=this.value&&t(this.value))return{path:lu(),value:this.value};if(vu(e))return null;{var n=uu(e);const i=this.children.get(n);if(null===i)return null;var r=i.findRootMostMatchingPathAndValue(du(e),t);return null==r?null:{path:mu(new cu(n),r.path),value:r.value}}}findRootMostValueAndPath(e){return this.findRootMostMatchingPathAndValue(e,()=>!0)}subtree(e){if(vu(e))return this;{var t=uu(e);const n=this.children.get(t);return null!==n?n.subtree(du(e)):new zh(null)}}set(e,t){if(vu(e))return new zh(t,this.children);{var n=uu(e);const i=this.children.get(n)||new zh(null);var r=i.set(du(e),t),r=this.children.insert(n,r);return new zh(this.value,r)}}remove(t){if(vu(t))return this.children.isEmpty()?new zh(null):new zh(null,this.children);{var n=uu(t);const r=this.children.get(n);if(r){const i=r.remove(du(t));let e;return e=i.isEmpty()?this.children.remove(n):this.children.insert(n,i),null===this.value&&e.isEmpty()?new zh(null):new zh(this.value,e)}return this}}get(e){if(vu(e))return this.value;{var t=uu(e);const n=this.children.get(t);return n?n.get(du(e)):null}}setTree(t,n){if(vu(t))return n;{var r=uu(t);const i=this.children.get(r)||new zh(null),s=i.setTree(du(t),n);let e;return e=s.isEmpty()?this.children.remove(r):this.children.insert(r,s),new zh(this.value,e)}}fold(e){return this.fold_(lu(),e)}fold_(n,r){const i={};return this.children.inorderTraversal((e,t)=>{i[e]=t.fold_(mu(n,e),r)}),r(n,this.value,i)}findOnPath(e,t){return this.findOnPath_(e,lu(),t)}findOnPath_(e,t,n){var r=!!this.value&&n(t,this.value);if(r)return r;if(vu(e))return null;{r=uu(e);const i=this.children.get(r);return i?i.findOnPath_(du(e),mu(t,r),n):null}}foreachOnPath(e,t){return this.foreachOnPath_(e,lu(),t)}foreachOnPath_(e,t,n){if(vu(e))return this;{this.value&&n(t,this.value);var r=uu(e);const i=this.children.get(r);return i?i.foreachOnPath_(du(e),mu(t,r),n):new zh(null)}}foreach(e){this.foreach_(lu(),e)}foreach_(n,r){this.children.inorderTraversal((e,t)=>{t.foreach_(mu(n,e),r)}),this.value&&r(n,this.value)}foreachChild(n){this.children.inorderTraversal((e,t)=>{t.value&&n(e,t.value)})}}class $h{constructor(e){this.writeTree_=e}static empty(){return new $h(new zh(null))}}function Kh(t,n,r){if(vu(n))return new $h(new zh(r));var i=t.writeTree_.findRootMostValueAndPath(n);if(null!=i){var s=i.path;let e=i.value;i=_u(s,n);return e=e.updateChild(i,r),new $h(t.writeTree_.set(s,e))}s=new zh(r),s=t.writeTree_.setTree(n,s);return new $h(s)}function Wh(e,n,t){let r=e;return Dl(t,(e,t)=>{r=Kh(r,mu(n,e),t)}),r}function Gh(e,t){if(vu(t))return $h.empty();var n=e.writeTree_.setTree(t,new zh(null));return new $h(n)}function Hh(e,t){return null!=Qh(e,t)}function Qh(e,t){var n=e.writeTree_.findRootMostValueAndPath(t);return null!=n?e.writeTree_.get(n.path).getChild(_u(n.path,t)):null}function Yh(e){const n=[],t=e.writeTree_.value;return null!=t?t.isLeafNode()||t.forEachChild(Ku,(e,t)=>{n.push(new ku(e,t))}):e.writeTree_.children.inorderTraversal((e,t)=>{null!=t.value&&n.push(new ku(e,t.value))}),n}function Jh(e,t){if(vu(t))return e;var n=Qh(e,t);return null!=n?new $h(new zh(n)):new $h(e.writeTree_.subtree(t))}function Xh(e){return e.writeTree_.isEmpty()}function Zh(e,t){return function r(i,e,s){{if(null!=e.value)return s.updateChild(i,e.value);{let n=null;return e.children.inorderTraversal((e,t)=>{".priority"===e?(f(null!==t.value,"Priority writes must always be leaf nodes"),n=t.value):s=r(mu(i,e),t,s)}),s=!s.getChild(i).isEmpty()&&null!==n?s.updateChild(mu(i,".priority"),n):s}}}(lu(),e.writeTree_,t)}function ed(e,t){return dd(t,e)}function td(t,n){var e,r=t.allWrites.findIndex(e=>e.writeId===n);f(0<=r,"removeWrite called with nonexistent writeId.");const i=t.allWrites[r];t.allWrites.splice(r,1);let s=i.visible,a=!1,o=t.allWrites.length-1;for(;s&&0<=o;){var c=t.allWrites[o];c.visible&&(o>=r&&function(e,t){{if(e.snap)return bu(e.path,t);for(const n in e.children)if(e.children.hasOwnProperty(n)&&bu(mu(e.path,n),t))return!0;return!1}}(c,i.path)?s=!1:bu(i.path,c.path)&&(a=!0)),o--}return!!s&&(a?((e=t).visibleWrites=rd(e.allWrites,nd,lu()),0<e.allWrites.length?e.lastWriteId=e.allWrites[e.allWrites.length-1].writeId:e.lastWriteId=-1):i.snap?t.visibleWrites=Gh(t.visibleWrites,i.path):Dl(i.children,e=>{t.visibleWrites=Gh(t.visibleWrites,mu(i.path,e))}),!0)}function nd(e){return e.visible}function rd(e,t,n){let r=$h.empty();for(let s=0;s<e.length;++s){const a=e[s];if(t(a)){var i=a.path;let e;if(a.snap)bu(n,i)?(e=_u(n,i),r=Kh(r,e,a.snap)):bu(i,n)&&(e=_u(i,n),r=Kh(r,lu(),a.snap.getChild(e)));else{if(!a.children)throw u("WriteRecord should have .snap or .children");if(bu(n,i))e=_u(n,i),r=Wh(r,e,a.children);else if(bu(i,n))if(e=_u(i,n),vu(e))r=Wh(r,lu(),a.children);else{const o=V(a.children,uu(e));o&&(i=o.getChild(du(e)),r=Kh(r,lu(),i))}}}}return r}function id(e,t,n,r,i){if(r||i){var s=Jh(e.visibleWrites,t);if(!i&&Xh(s))return n;if(i||null!=n||Hh(s,lu()))return Zh(rd(e.allWrites,function(e){return(e.visible||i)&&(!r||!~r.indexOf(e.writeId))&&(bu(e.path,t)||bu(t,e.path))},t),n||Zu.EMPTY_NODE);return null}s=Qh(e.visibleWrites,t);if(null!=s)return s;s=Jh(e.visibleWrites,t);return Xh(s)?n:null!=n||Hh(s,lu())?Zh(s,n||Zu.EMPTY_NODE):null}function sd(e,t,n,r){return id(e.writeTree,e.treePath,t,n,r)}function ad(e,t){return function(e,t,n){let r=Zu.EMPTY_NODE;const i=Qh(e.visibleWrites,t);if(i)return i.isLeafNode()||i.forEachChild(Ku,(e,t)=>{r=r.updateImmediateChild(e,t)}),r;if(n){const s=Jh(e.visibleWrites,t);return n.forEachChild(Ku,(e,t)=>{var n=Zh(Jh(s,new cu(e)),t);r=r.updateImmediateChild(e,n)}),Yh(s).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}return Yh(Jh(e.visibleWrites,t)).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}(e.writeTree,e.treePath,t)}function od(e,t,n,r){return function(e,t,n,r,i){f(r||i,"Either existingEventSnap or existingServerSnap must exist");var s=mu(t,n);return Hh(e.visibleWrites,s)?null:Xh(s=Jh(e.visibleWrites,s))?i.getChild(n):Zh(s,i.getChild(n))}(e.writeTree,e.treePath,t,n,r)}function cd(e,t){return n=e.writeTree,t=mu(e.treePath,t),Qh(n.visibleWrites,t);var n}function ld(e,t,n,r,i,s){return function(e,t,n,r,i,s,a){let o;var c=Jh(e.visibleWrites,t),l=Qh(c,lu());if(null!=l)o=l;else{if(null==n)return[];o=Zh(c,n)}if(o=o.withIndex(a),o.isEmpty()||o.isLeafNode())return[];{const u=[],h=a.getCompare(),d=s?o.getReverseIteratorFrom(r,a):o.getIteratorFrom(r,a);let e=d.getNext();for(;e&&u.length<i;)0!==h(e,r)&&u.push(e),e=d.getNext();return u}}(e.writeTree,e.treePath,t,n,r,i,s)}function ud(e,t,n){return r=e.writeTree,e=e.treePath,n=n,i=mu(e,t=t),null!=(s=Qh(r.visibleWrites,i))?s:n.isCompleteForChild(t)?Zh(Jh(r.visibleWrites,i),n.getNode().getImmediateChild(t)):null;var r,i,s}function hd(e,t){return dd(mu(e.treePath,t),e.writeTree)}function dd(e,t){return{treePath:e,writeTree:t}}class pd{constructor(){this.changeMap=new Map}trackChildChange(e){var t=e.type,n=e.childName;f("child_added"===t||"child_changed"===t||"child_removed"===t,"Only child changes supported for tracking"),f(".priority"!==n,"Only non-priority child changes can be tracked.");var r=this.changeMap.get(n);if(r){var i=r.type;if("child_added"===t&&"child_removed"===i)this.changeMap.set(n,lh(n,e.snapshotNode,r.snapshotNode));else if("child_removed"===t&&"child_added"===i)this.changeMap.delete(n);else if("child_removed"===t&&"child_changed"===i)this.changeMap.set(n,ch(n,r.oldSnap));else if("child_changed"===t&&"child_added"===i)this.changeMap.set(n,oh(n,e.snapshotNode));else{if("child_changed"!==t||"child_changed"!==i)throw u("Illegal combination of changes: "+e+" occurred after "+r);this.changeMap.set(n,lh(n,e.snapshotNode,r.oldSnap))}}else this.changeMap.set(n,e)}getChanges(){return Array.from(this.changeMap.values())}}const fd=new class{getCompleteChild(e){return null}getChildAfterChild(e,t,n){return null}};class gd{constructor(e,t,n=null){this.writes_=e,this.viewCache_=t,this.optCompleteServerCache_=n}getCompleteChild(e){const t=this.viewCache_.eventCache;if(t.isCompleteForChild(e))return t.getNode().getImmediateChild(e);var n=null!=this.optCompleteServerCache_?new xh(this.optCompleteServerCache_,!0,!1):this.viewCache_.serverCache;return ud(this.writes_,e,n)}getChildAfterChild(e,t,n){var r=null!=this.optCompleteServerCache_?this.optCompleteServerCache_:Bh(this.viewCache_),r=ld(this.writes_,r,t,1,n,e);return 0===r.length?null:r[0]}}function md(e,t,n,r,i){const s=new pd;let a,o;if(n.type===il.OVERWRITE){var c=n;a=c.source.fromUser?yd(e,t,c.path,c.snap,r,i,s):(f(c.source.fromServer,"Unknown source."),o=c.source.tagged||t.serverCache.isFiltered()&&!vu(c.path),_d(e,t,c.path,c.snap,r,i,o,s))}else if(n.type===il.MERGE){c=n;a=c.source.fromUser?function(r,i,s,e,a,o,c){let l=i;return e.foreach((e,t)=>{var n=mu(s,e);wd(i,uu(n))&&(l=yd(r,l,n,t,a,o,c))}),e.foreach((e,t)=>{var n=mu(s,e);wd(i,uu(n))||(l=yd(r,l,n,t,a,o,c))}),l}(e,t,c.path,c.children,r,i,s):(f(c.source.fromServer,"Unknown source."),o=c.source.tagged||t.serverCache.isFiltered(),Id(e,t,c.path,c.children,r,i,o,s))}else if(n.type===il.ACK_USER_WRITE){var l=n;a=l.revert?function(n,r,i,s,e,a){let o;{if(null!=cd(s,i))return r;{var c=new gd(s,r,e);const u=r.eventCache.getNode();let t;if(vu(i)||".priority"===uu(i)){let e;e=r.serverCache.isFullyInitialized()?sd(s,Bh(r)):(l=r.serverCache.getNode(),f(l instanceof Zu,"serverChildren would be complete if leaf node"),ad(s,l)),e=e,t=n.filter.updateFullNode(u,e,a)}else{var l=uu(i);let e=ud(s,l,r.serverCache);null==e&&r.serverCache.isCompleteForChild(l)&&(e=u.getImmediateChild(l)),t=null!=e?n.filter.updateChild(u,l,e,du(i),c,a):r.eventCache.getNode().hasChild(l)?n.filter.updateChild(u,l,Zu.EMPTY_NODE,du(i),c,a):u,t.isEmpty()&&r.serverCache.isFullyInitialized()&&(o=sd(s,Bh(r)),o.isLeafNode()&&(t=n.filter.updateFullNode(t,o,a)))}return o=r.serverCache.isFullyInitialized()||null!=cd(s,lu()),Uh(r,t,o,n.filter.filtersNodes())}}}(e,t,l.path,r,i,s):function(e,t,i,n,s,a,o){if(null!=cd(s,i))return t;const c=t.serverCache.isFiltered(),l=t.serverCache;{if(null!=n.value){if(vu(i)&&l.isFullyInitialized()||l.isCompleteForPath(i))return _d(e,t,i,l.getNode().getChild(i),s,a,c,o);if(vu(i)){let n=new zh(null);return l.getNode().forEachChild(Pu,(e,t)=>{n=n.set(new cu(e),t)}),Id(e,t,i,n,s,a,c,o)}return t}{let r=new zh(null);return n.foreach((e,t)=>{var n=mu(i,e);l.isCompleteForPath(n)&&(r=r.set(e,l.getNode().getChild(n)))}),Id(e,t,i,r,s,a,c,o)}}}(e,t,l.path,l.affectedTree,r,i,s)}else{if(n.type!==il.LISTEN_COMPLETE)throw u("Unknown operation type: "+n.type);a=function(e,t,n,r,i){const s=t.serverCache,a=Vh(t,s.getNode(),s.isFullyInitialized()||vu(n),s.isFiltered());return vd(e,a,n,r,fd,i)}(e,t,n.path,r,s)}l=s.getChanges();return function(e,t,n){const r=t.eventCache;if(r.isFullyInitialized()){var i=r.getNode().isLeafNode()||r.getNode().isEmpty();const s=qh(e);(0<n.length||!e.eventCache.isFullyInitialized()||i&&!r.getNode().equals(s)||!r.getNode().getPriority().equals(s.getPriority()))&&n.push(ah(qh(t)))}}(t,a,l),{viewCache:a,changes:l}}function vd(r,i,s,a,o,c){const l=i.eventCache;if(null!=cd(a,s))return i;{let t,n;if(vu(s)){var e;f(i.serverCache.isFullyInitialized(),"If change path is empty, we must have complete server data"),t=i.serverCache.isFiltered()?(e=ad(a,(e=Bh(i))instanceof Zu?e:Zu.EMPTY_NODE),r.filter.updateFullNode(i.eventCache.getNode(),e,c)):(u=sd(a,Bh(i)),r.filter.updateFullNode(i.eventCache.getNode(),u,c))}else{var u=uu(s);if(".priority"===u){f(1===hu(s),"Can't have a priority with additional path components");var h=l.getNode();n=i.serverCache.getNode();var d=od(a,s,h,n);t=null!=d?r.filter.updatePriority(h,d):l.getNode()}else{h=du(s);let e;e=l.isCompleteForChild(u)?(n=i.serverCache.getNode(),null!=(d=od(a,s,l.getNode(),n))?l.getNode().getImmediateChild(u).updateChild(h,d):l.getNode().getImmediateChild(u)):ud(a,u,i.serverCache),t=null!=e?r.filter.updateChild(l.getNode(),u,e,h,o,c):l.getNode()}}return Uh(i,t,l.isFullyInitialized()||vu(s),r.filter.filtersNodes())}}function _d(e,t,n,r,i,s,a,o){const c=t.serverCache;let l;const u=a?e.filter:e.filter.getIndexedFilter();if(vu(n))l=u.updateFullNode(c.getNode(),r,null);else if(u.filtersNodes()&&!c.isFiltered()){var h=c.getNode().updateChild(n,r);l=u.updateFullNode(c.getNode(),h,null)}else{var d=uu(n);if(!c.isCompleteForPath(n)&&1<hu(n))return t;var p=du(n);const f=c.getNode().getImmediateChild(d);h=f.updateChild(p,r);l=".priority"===d?u.updatePriority(c.getNode(),h):u.updateChild(c.getNode(),d,h,p,fd,null)}p=Vh(t,l,c.isFullyInitialized()||vu(n),u.filtersNodes());return vd(e,p,n,i,new gd(i,p,s),o)}function yd(t,n,r,i,e,s,a){const o=n.eventCache;let c,l;const u=new gd(e,n,s);if(vu(r))l=t.filter.updateFullNode(n.eventCache.getNode(),i,a),c=Uh(n,l,!0,t.filter.filtersNodes());else{var h=uu(r);if(".priority"===h)l=t.filter.updatePriority(n.eventCache.getNode(),i),c=Uh(n,l,o.isFullyInitialized(),o.isFiltered());else{var d=du(r);const p=o.getNode().getImmediateChild(h);let e;if(vu(d))e=i;else{const f=u.getCompleteChild(h);e=null!=f?".priority"===pu(d)&&f.getChild(gu(d)).isEmpty()?f:f.updateChild(d,i):Zu.EMPTY_NODE}c=p.equals(e)?n:Uh(n,t.filter.updateChild(o.getNode(),h,e,d,u,a),o.isFullyInitialized(),t.filter.filtersNodes())}}return c}function wd(e,t){return e.eventCache.isCompleteForChild(t)}function bd(e,n,t){return t.foreach((e,t)=>{n=n.updateChild(e,t)}),n}function Id(r,i,e,t,s,a,o,c){if(i.serverCache.getNode().isEmpty()&&!i.serverCache.isFullyInitialized())return i;let l=i,n;n=vu(e)?t:new zh(null).setTree(e,t);const u=i.serverCache.getNode();return n.children.inorderTraversal((e,t)=>{var n;u.hasChild(e)&&(n=bd(0,i.serverCache.getNode().getImmediateChild(e),t),l=_d(r,l,new cu(e),n,s,a,o,c))}),n.children.inorderTraversal((e,t)=>{var n=!i.serverCache.isCompleteForChild(e)&&null===t.value;u.hasChild(e)||n||(n=bd(0,i.serverCache.getNode().getImmediateChild(e),t),l=_d(r,l,new cu(e),n,s,a,o,c))}),l}class Td{constructor(e,t){this.query_=e,this.eventRegistrations_=[];const n=this.query_._queryParams,r=new uh(n.getIndex()),i=(e=n).loadsAllData()?new uh(e.getIndex()):new(e.hasLimit()?dh:hh)(e);this.processor_={filter:i};const s=t.serverCache,a=t.eventCache;var o=r.updateFullNode(Zu.EMPTY_NODE,s.getNode(),null),c=i.updateFullNode(Zu.EMPTY_NODE,a.getNode(),null),o=new xh(o,s.isFullyInitialized(),r.filtersNodes()),c=new xh(c,a.isFullyInitialized(),i.filtersNodes());this.viewCache_=Fh(c,o),this.eventGenerator_=new Oh(this.query_)}get query(){return this.query_}}function Ed(e){return 0===e.eventRegistrations_.length}function Cd(n,r,i){const s=[];if(i){f(null==r,"A cancel should cancel all event registrations.");const a=n.query._path;n.eventRegistrations_.forEach(e=>{var t=e.createCancelEvent(i,a);t&&s.push(t)})}if(r){let e=[];for(let t=0;t<n.eventRegistrations_.length;++t){const o=n.eventRegistrations_[t];if(o.matches(r)){if(r.hasAnyCallback()){e=e.concat(n.eventRegistrations_.slice(t+1));break}}else e.push(o)}n.eventRegistrations_=e}else n.eventRegistrations_=[];return s}function Sd(e,t,n,r){t.type===il.MERGE&&null!==t.source.queryId&&(f(Bh(e.viewCache_),"We should always have a full cache before handling merges"),f(qh(e.viewCache_),"Missing event cache, even though we have a server cache"));const i=e.viewCache_,s=md(e.processor_,i,t,n,r);return n=e.processor_,r=s.viewCache,f(r.eventCache.getNode().isIndexed(n.filter.getIndex()),"Event snap not indexed"),f(r.serverCache.getNode().isIndexed(n.filter.getIndex()),"Server snap not indexed"),f(s.viewCache.serverCache.isFullyInitialized()||!i.serverCache.isFullyInitialized(),"Once a server snap is complete, it should never go back"),e.viewCache_=s.viewCache,kd(e,s.changes,s.viewCache.eventCache.getNode(),null)}function kd(e,t,n,r){var i=r?[r]:e.eventRegistrations_;return Mh(e.eventGenerator_,t,n,i)}let Ad;class Nd{constructor(){this.views=new Map}}function Rd(t,n,r,i){var e=n.source.queryId;if(null!==e){e=t.views.get(e);return f(null!=e,"SyncTree gave us an op for an invalid query."),Sd(e,n,r,i)}{let e=[];for(const s of t.views.values())e=e.concat(Sd(s,n,r,i));return e}}function Pd(e,n,r,i,s){var a=n._queryIdentifier,a=e.views.get(a);if(a)return a;{let e=sd(r,s?i:null),t=!1;t=!!e||(e=i instanceof Zu?ad(r,i):Zu.EMPTY_NODE,!1);a=Fh(new xh(e,t,!1),new xh(i,s,!1));return new Td(n,a)}}function Dd(e,t,n,r,i,s){var a=Pd(e,t,r,i,s);return e.views.has(t._queryIdentifier)||e.views.set(t._queryIdentifier,a),a.eventRegistrations_.push(n),function(e,t){const n=e.viewCache_.eventCache,r=[];if(!n.getNode().isLeafNode()){const i=n.getNode();i.forEachChild(Ku,(e,t)=>{r.push(oh(e,t))})}return n.isFullyInitialized()&&r.push(ah(n.getNode())),kd(e,r,n.getNode(),t)}(a,n)}function xd(e,t,n,r){var i=t._queryIdentifier;const s=[];let a=[];var o=Ud(e);if("default"===i)for(var[c,l]of e.views.entries())a=a.concat(Cd(l,n,r)),Ed(l)&&(e.views.delete(c),l.query._queryParams.loadsAllData()||s.push(l.query));else{const u=e.views.get(i);u&&(a=a.concat(Cd(u,n,r)),Ed(u)&&(e.views.delete(i),u.query._queryParams.loadsAllData()||s.push(u.query)))}return o&&!Ud(e)&&s.push((f(Ad,"Reference.ts has not been loaded"),new Ad(t._repo,t._path))),{removed:s,events:a}}function Od(e){const t=[];for(const n of e.views.values())n.query._queryParams.loadsAllData()||t.push(n);return t}function Md(e,t){let n=null;for(const r of e.views.values())n=n||function(e,t){const n=Bh(e.viewCache_);return n&&(e.query._queryParams.loadsAllData()||!vu(t)&&!n.getImmediateChild(uu(t)).isEmpty())?n.getChild(t):null}(r,t);return n}function Ld(e,t){const n=t._queryParams;if(n.loadsAllData())return Vd(e);var r=t._queryIdentifier;return e.views.get(r)}function Fd(e,t){return null!=Ld(e,t)}function Ud(e){return null!=Vd(e)}function Vd(e){for(const t of e.views.values())if(t.query._queryParams.loadsAllData())return t;return null}let qd;let Bd=1;class jd{constructor(e){this.listenProvider_=e,this.syncPointTree_=new zh(null),this.pendingWriteTree_={visibleWrites:$h.empty(),allWrites:[],lastWriteId:-1},this.tagToQueryMap=new Map,this.queryToTagMap=new Map}}function zd(e,t,n,r,i){var s,a,o,c;return s=e.pendingWriteTree_,a=t,o=n,c=r,r=i,f(c>s.lastWriteId,"Stacking an older write on top of newer ones"),s.allWrites.push({path:a,snap:o,writeId:c,visible:r=void 0===r?!0:r}),r&&(s.visibleWrites=Kh(s.visibleWrites,a,o)),s.lastWriteId=c,i?Xd(e,new Ph(Sh(),t,n)):[]}function $d(e,t,n,r){var i,s,a;i=e.pendingWriteTree_,s=t,a=n,r=r,f(r>i.lastWriteId,"Stacking an older merge on top of newer ones"),i.allWrites.push({path:s,children:a,writeId:r,visible:!0}),i.visibleWrites=Wh(i.visibleWrites,s,a),i.lastWriteId=r;var o=zh.fromObject(n);return Xd(e,new Dh(Sh(),t,o))}function Kd(e,t,n=!1){var r=function(e,t){for(let r=0;r<e.allWrites.length;r++){var n=e.allWrites[r];if(n.writeId===t)return n}return null}(e.pendingWriteTree_,t);if(td(e.pendingWriteTree_,t)){let t=new zh(null);return null!=r.snap?t=t.set(lu(),!0):Dl(r.children,e=>{t=t.set(new cu(e),!0)}),Xd(e,new Nh(r.path,t,n))}return[]}function Wd(e,t,n){return Xd(e,new Ph(kh(),t,n))}function Gd(n,e,t,r,i=!1){var s=e._path,a=n.syncPointTree_.get(s);let o=[];if(a&&("default"===e._queryIdentifier||Fd(a,e))){var c=xd(a,e,t,r);0===a.views.size&&(n.syncPointTree_=n.syncPointTree_.remove(s));const d=c.removed;if(o=c.events,!i){a=-1!==d.findIndex(e=>e._queryParams.loadsAllData()),c=n.syncPointTree_.findOnPath(s,(e,t)=>Ud(t));if(a&&!c){const p=n.syncPointTree_.subtree(s);if(!p.isEmpty()){var l=p.fold((e,t,r)=>{if(t&&Ud(t))return[Vd(t)];{let n=[];return t&&(n=Od(t)),Dl(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e<l.length;++e){var u=l[e],h=u.query,u=ep(n,u);n.listenProvider_.startListening(ap(h),tp(n,h),u.hashFn,u.onComplete)}}}!c&&0<d.length&&!r&&(a?n.listenProvider_.stopListening(ap(e),null):d.forEach(e=>{var t=n.queryToTagMap.get(np(e));n.listenProvider_.stopListening(ap(e),t)}))}!function(e,t){for(let i=0;i<t.length;++i){const s=t[i];var n,r;s._queryParams.loadsAllData()||(n=np(s),r=e.queryToTagMap.get(n),e.queryToTagMap.delete(n),e.tagToQueryMap.delete(r))}}(n,d)}return o}function Hd(e,t,n,r){var i=rp(e,r);if(null==i)return[];var s=ip(i),a=s.path,i=s.queryId,s=_u(a,t);return sp(e,a,new Ph(Ah(i),s,n))}function Qd(e,t,n,r=!1){const i=t._path;let s=null,a=!1;e.syncPointTree_.foreachOnPath(i,(e,t)=>{var n=_u(e,i);s=s||Md(t,n),a=a||Ud(t)});let o=e.syncPointTree_.get(i);o?(a=a||Ud(o),s=s||Md(o,lu())):(o=new Nd,e.syncPointTree_=e.syncPointTree_.set(i,o));let c;if(null!=s)c=!0;else{c=!1,s=Zu.EMPTY_NODE;const p=e.syncPointTree_.subtree(i);p.foreachChild((e,t)=>{var n=Md(t,lu());n&&(s=s.updateImmediateChild(e,n))})}var l,u=Fd(o,t);u||t._queryParams.loadsAllData()||(h=np(t),f(!e.queryToTagMap.has(h),"View does not exist, but we have a tag"),l=Bd++,e.queryToTagMap.set(h,l),e.tagToQueryMap.set(l,h));var h=ed(e.pendingWriteTree_,i);let d=Dd(o,t,n,h,s,c);return u||a||r||(u=Ld(o,t),d=d.concat(function(t,e,n){const r=e._path,i=tp(t,e),s=ep(t,n),a=t.listenProvider_.startListening(ap(e),i,s.hashFn,s.onComplete),o=t.syncPointTree_.subtree(r);if(i)f(!Ud(o.value),"If we're adding a query, it shouldn't be shadowed");else{var c=o.fold((e,t,r)=>{if(!vu(e)&&t&&Ud(t))return[Vd(t).query];{let n=[];return t&&(n=n.concat(Od(t).map(e=>e.query))),Dl(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e<c.length;++e){var l=c[e];t.listenProvider_.stopListening(ap(l),tp(t,l))}}return a}(e,t,u))),d}function Yd(e,r,t){var n=e.pendingWriteTree_,i=e.syncPointTree_.findOnPath(r,(e,t)=>{var n=Md(t,_u(e,r));if(n)return n});return id(n,r,i,t,!0)}function Jd(e,t){const r=t._path;let i=null;e.syncPointTree_.foreachOnPath(r,(e,t)=>{var n=_u(e,r);i=i||Md(t,n)});let n=e.syncPointTree_.get(r);n?i=i||Md(n,lu()):(n=new Nd,e.syncPointTree_=e.syncPointTree_.set(r,n));var s=null!=i;const a=s?new xh(i,!0,!1):null;var o=ed(e.pendingWriteTree_,t._path);return qh(Pd(n,t,o,s?a.getNode():Zu.EMPTY_NODE,s).viewCache_)}function Xd(e,t){return function t(n,r,i,s){{if(vu(n.path))return Zd(n,r,i,s);{const a=r.get(lu());null==i&&null!=a&&(i=Md(a,lu()));let e=[];const o=uu(n.path),c=n.operationForChild(o),l=r.children.get(o);if(l&&c){const u=i?i.getImmediateChild(o):null,h=hd(s,o);e=e.concat(t(c,l,u,h))}return a&&(e=e.concat(Rd(a,n,s,i))),e}}}(t,e.syncPointTree_,null,ed(e.pendingWriteTree_,lu()))}function Zd(s,e,a,o){var t=e.get(lu());null==a&&null!=t&&(a=Md(t,lu()));let c=[];return e.children.inorderTraversal((e,t)=>{var n=a?a.getImmediateChild(e):null,r=hd(o,e),i=s.operationForChild(e);i&&(c=c.concat(Zd(i,t,n,r)))}),t&&(c=c.concat(Rd(t,s,o,a))),c}function ep(i,t){const s=t.query,a=tp(i,s);return{hashFn:()=>{const e=t.viewCache_.serverCache.getNode()||Zu.EMPTY_NODE;return e.hash()},onComplete:e=>{if("ok"===e)return a?function(e,t,n){if(s=rp(e,n)){var r=ip(s),i=r.path,s=r.queryId,r=_u(i,t);return sp(e,i,new Rh(Ah(s),r))}return[]}(i,s._path,a):(t=i,n=s._path,Xd(t,new Rh(kh(),n)));var t,n,r=function(e,t){let n="Unknown Error";"too_big"===e?n="The data requested exceeds the maximum size that can be accessed with a single request.":"permission_denied"===e?n="Client doesn't have permission to access the desired data.":"unavailable"===e&&(n="The service is unavailable");const r=new Error(e+" at "+t._path.toString()+": "+n);return r.code=e.toUpperCase(),r}(e,s);return Gd(i,s,null,r)}}}function tp(e,t){var n=np(t);return e.queryToTagMap.get(n)}function np(e){return e._path.toString()+"$"+e._queryIdentifier}function rp(e,t){return e.tagToQueryMap.get(t)}function ip(e){var t=e.indexOf("$");return f(-1!==t&&t<e.length-1,"Bad queryKey."),{queryId:e.substr(t+1),path:new cu(e.substr(0,t))}}function sp(e,t,n){var r=e.syncPointTree_.get(t);return f(r,"Missing sync point for query tag that we're tracking"),Rd(r,n,ed(e.pendingWriteTree_,t),null)}function ap(e){return e._queryParams.loadsAllData()&&!e._queryParams.isDefault()?(f(qd,"Reference.ts has not been loaded"),new qd(e._repo,e._path)):e}class op{constructor(e){this.node_=e}getImmediateChild(e){var t=this.node_.getImmediateChild(e);return new op(t)}node(){return this.node_}}class cp{constructor(e,t){this.syncTree_=e,this.path_=t}getImmediateChild(e){var t=mu(this.path_,e);return new cp(this.syncTree_,t)}node(){return Yd(this.syncTree_,this.path_)}}function lp(e){return(e=e||{}).timestamp=e.timestamp||(new Date).getTime(),e}function up(e,t,n){return e&&"object"==typeof e?(f(".sv"in e,"Unexpected leaf node or priority contents"),"string"==typeof e[".sv"]?hp(e[".sv"],t,n):"object"==typeof e[".sv"]?dp(e[".sv"],t):void f(!1,"Unexpected server value: "+JSON.stringify(e,null,2))):e}const hp=function(e,t,n){if("timestamp"===e)return n.timestamp;f(!1,"Unexpected server value: "+e)},dp=function(e,t,n){e.hasOwnProperty("increment")||f(!1,"Unexpected server value: "+JSON.stringify(e,null,2));var r=e.increment;"number"!=typeof r&&f(!1,"Unexpected increment value: "+r);const i=t.node();if(f(null!==i&&void 0!==i,"Expected ChildrenNode.EMPTY_NODE for nulls"),!i.isLeafNode())return r;const s=i;var a=s.getValue();return"number"!=typeof a?r:a+r},pp=function(e,t,n,r){return gp(t,new cp(n,e),r)},fp=function(e,t,n){return gp(e,new op(t),n)};function gp(e,r,i){var t=e.getPriority().val(),n=up(t,r.getImmediateChild(".priority"),i);let s;if(e.isLeafNode()){const a=e;t=up(a.getValue(),r,i);return t!==a.getValue()||n!==a.getPriority().val()?new ju(t,rh(n)):e}{const o=e;return s=o,n!==o.getPriority().val()&&(s=s.updatePriority(new ju(n))),o.forEachChild(Ku,(e,t)=>{var n=gp(t,r.getImmediateChild(e),i);n!==t&&(s=s.updateImmediateChild(e,n))}),s}}class mp{constructor(e="",t=null,n={children:{},childCount:0}){this.name=e,this.parent=t,this.node=n}}function vp(e,t){let n=t instanceof cu?t:new cu(t),r=e,i=uu(n);for(;null!==i;){var s=V(r.node.children,i)||{children:{},childCount:0};r=new mp(i,r,s),n=du(n),i=uu(n)}return r}function _p(e){return e.node.value}function yp(e,t){e.node.value=t,Tp(e)}function wp(e){return 0<e.node.childCount}function bp(n,r){Dl(n.node.children,(e,t)=>{r(new mp(e,n,t))})}function Ip(e){return new cu(null===e.parent?e.name:Ip(e.parent)+"/"+e.name)}function Tp(e){var t,n,r,i;null!==e.parent&&(t=e.parent,n=e.name,r=function(e){return void 0===_p(e)&&!wp(e)}(e=e),i=U(t.node.children,n),r&&i?(delete t.node.children[n],t.node.childCount--,Tp(t)):r||i||(t.node.children[n]=e.node,t.node.childCount++,Tp(t)))}function Ep(e,t,n,r){r&&void 0===t||Fp(X(e,"value"),t,n)}function Cp(e,t,r,n){if(!n||void 0!==t){const i=X(e,"values");if(!t||"object"!=typeof t||Array.isArray(t))throw new Error(i+" must be an object containing the children to replace.");const s=[];Dl(t,(e,t)=>{const n=new cu(e);if(Fp(i,t,mu(r,n)),".priority"===pu(n)&&!Lp(t))throw new Error(i+"contains an invalid value for '"+n.toString()+"', which must be a valid Firebase priority (a string, finite number, server value, or null).");s.push(n)}),function(t,n){let r,i;for(r=0;r<n.length;r++){i=n[r];var s=fu(i);for(let e=0;e<s.length;e++)if((".priority"!==s[e]||e!==s.length-1)&&!xp(s[e]))throw new Error(t+"contains an invalid key ("+s[e]+") in path "+i.toString()+'. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"')}n.sort(yu);let e=null;for(r=0;r<n.length;r++){if(i=n[r],null!==e&&bu(e,i))throw new Error(t+"contains a path "+e.toString()+" that is ancestor of another path "+i.toString());e=i}}(i,s)}}function Sp(e,t,n){if(!n||void 0!==t){if(Al(t))throw new Error(X(e,"priority")+"is "+t.toString()+", but must be a valid Firebase priority (a string, finite number, server value, or null).");if(!Lp(t))throw new Error(X(e,"priority")+"must be a valid Firebase priority (a string, finite number, server value, or null).")}}function kp(e,t,n,r){if(!(r&&void 0===n||xp(n)))throw new Error(X(e,t)+'was an invalid key = "'+n+'". Firebase keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]").')}function Ap(e,t,n,r){n=n&&n.replace(/^\/*\.info(\/|$)/,"/"),Up(e,t,n,r)}function Np(e,t){if(".info"===uu(t))throw new Error(e+" failed = Can't modify data under /.info/")}const Rp=/[\[\].#$\/\u0000-\u001F\u007F]/,Pp=/[\[\].#$\u0000-\u001F\u007F]/,Dp=10485760,xp=function(e){return"string"==typeof e&&0!==e.length&&!Rp.test(e)},Op=function(e){return"string"==typeof e&&0!==e.length&&!Pp.test(e)},Mp=function(e){return e=e&&e.replace(/^\/*\.info(\/|$)/,"/"),Op(e)},Lp=function(e){return null===e||"string"==typeof e||"number"==typeof e&&!Al(e)||e&&"object"==typeof e&&U(e,".sv")},Fp=function(a,e,t){const o=t instanceof cu?new Iu(t,a):t;if(void 0===e)throw new Error(a+"contains undefined "+Eu(o));if("function"==typeof e)throw new Error(a+"contains a function "+Eu(o)+" with contents = "+e.toString());if(Al(e))throw new Error(a+"contains "+e.toString()+" "+Eu(o));if("string"==typeof e&&e.length>Dp/3&&ne(e)>Dp)throw new Error(a+"contains a string greater than "+Dp+" utf8 bytes "+Eu(o)+" ('"+e.substring(0,50)+"...')");if(e&&"object"==typeof e){let i=!1,s=!1;if(Dl(e,(e,t)=>{if(".value"===e)i=!0;else if(".priority"!==e&&".sv"!==e&&(s=!0,!xp(e)))throw new Error(a+" contains an invalid key ("+e+") "+Eu(o)+'. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"');var n,r;n=o,e=e,0<n.parts_.length&&(n.byteLength_+=1),n.parts_.push(e),n.byteLength_+=ne(e),Tu(n),Fp(a,t,o),t=o,r=t.parts_.pop(),t.byteLength_-=ne(r),0<t.parts_.length&&--t.byteLength_}),i&&s)throw new Error(a+' contains ".value" child '+Eu(o)+" in addition to actual children.")}},Up=function(e,t,n,r){if(!(r&&void 0===n||Op(n)))throw new Error(X(e,t)+'was an invalid path = "'+n+'". Paths must be non-empty strings and can\'t contain ".", "#", "$", "[", or "]"')},Vp=function(e,t){var n=t.path.toString();if("string"!=typeof t.repoInfo.host||0===t.repoInfo.host.length||!xp(t.repoInfo.namespace)&&"localhost"!==t.repoInfo.host.split(":")[0]||0!==n.length&&!Mp(n))throw new Error(X(e,"url")+'must be a valid firebase URL and the path can\'t contain ".", "#", "$", "[", or "]".')};class qp{constructor(){this.eventLists_=[],this.recursionDepth_=0}}function Bp(e,t){let n=null;for(let i=0;i<t.length;i++){const s=t[i];var r=s.getPath();null===n||wu(r,n.path)||(e.eventLists_.push(n),n=null),null===n&&(n={events:[],path:r}),n.events.push(s)}n&&e.eventLists_.push(n)}function jp(e,t,n){Bp(e,n),$p(e,e=>wu(e,t))}function zp(e,t,n){Bp(e,n),$p(e,e=>bu(e,t)||bu(t,e))}function $p(e,t){e.recursionDepth_++;let n=!0;for(let i=0;i<e.eventLists_.length;i++){var r=e.eventLists_[i];r&&(t(r.path)?(function(e){for(let n=0;n<e.events.length;n++){const r=e.events[n];var t;null!==r&&(e.events[n]=null,t=r.getEventRunner(),gl&&El("event: "+r.toString()),Vl(t))}}(e.eventLists_[i]),e.eventLists_[i]=null):n=!1)}n&&(e.eventLists_=[]),e.recursionDepth_--}const Kp="repo_interrupt",Wp=25;class Gp{constructor(e,t,n,r){this.repoInfo_=e,this.forceRestClient_=t,this.authTokenProvider_=n,this.appCheckProvider_=r,this.dataUpdateCount=0,this.statsListener_=null,this.eventQueue_=new qp,this.nextWriteId_=1,this.interceptServerDataCallback_=null,this.onDisconnect_=bh(),this.transactionQueueTree_=new mp,this.persistentConnection_=null,this.key=this.repoInfo_.toURLString()}toString(){return(this.repoInfo_.secure?"https://":"http://")+this.repoInfo_.host}}function Hp(a,e,t){if(a.stats_=Jl(a.repoInfo_),a.forceRestClient_||function(){const e="object"==typeof window&&window.navigator&&window.navigator.userAgent||"";return 0<=e.search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i)}())a.server_=new yh(a.repoInfo_,(e,t,n,r)=>{Jp(a,e,t,n,r)},a.authTokenProvider_,a.appCheckProvider_),setTimeout(()=>Xp(a,!0),0);else{if(null!=t){if("object"!=typeof t)throw new Error("Only objects are supported for option databaseAuthVariableOverride");try{L(t)}catch(e){throw new Error("Invalid authOverride provided: "+e)}}a.persistentConnection_=new Su(a.repoInfo_,e,(e,t,n,r)=>{Jp(a,e,t,n,r)},e=>{Xp(a,e)},e=>{var n;n=a,Dl(e,(e,t)=>{Zp(n,e,t)})},a.authTokenProvider_,a.appCheckProvider_,t),a.server_=a.persistentConnection_}var n;a.authTokenProvider_.addTokenChangeListener(e=>{a.server_.refreshAuthToken(e)}),a.appCheckProvider_.addTokenChangeListener(e=>{a.server_.refreshAppCheckToken(e.token)}),a.statsReporter_=(e=a.repoInfo_,t=()=>new Ch(a.stats_,a.server_),n=e.toString(),Yl[n]||(Yl[n]=t()),Yl[n]),a.infoData_=new wh,a.infoSyncTree_=new jd({startListening:(e,t,n,r)=>{let i=[];const s=a.infoData_.getNode(e._path);return s.isEmpty()||(i=Wd(a.infoSyncTree_,e._path,s),setTimeout(()=>{r("ok")},0)),i},stopListening:()=>{}}),Zp(a,"connected",!1),a.serverSyncTree_=new jd({startListening:(r,e,t,i)=>(a.server_.listen(r,t,e,(e,t)=>{var n=i(e,t);zp(a.eventQueue_,r._path,n)}),[]),stopListening:(e,t)=>{a.server_.unlisten(e,t)}})}function Qp(e){const t=e.infoData_.getNode(new cu(".info/serverTimeOffset"));var n=t.val()||0;return(new Date).getTime()+n}function Yp(e){return lp({timestamp:Qp(e)})}function Jp(e,t,n,r,i){e.dataUpdateCount++;var s,a,o=new cu(t);n=e.interceptServerDataCallback_?e.interceptServerDataCallback_(t,n):n;let c=[];c=i?r?(s=B(n,e=>rh(e)),function(e,t,n,r){if(o=rp(e,r)){var i=ip(o),s=i.path,a=i.queryId,o=_u(s,t),i=zh.fromObject(n);return sp(e,s,new Dh(Ah(a),o,i))}return[]}(e.serverSyncTree_,o,s,i)):(s=rh(n),Hd(e.serverSyncTree_,o,s,i)):r?(a=B(n,e=>rh(e)),t=e.serverSyncTree_,i=o,r=a,a=zh.fromObject(r),Xd(t,new Dh(kh(),i,a))):(a=rh(n),Wd(e.serverSyncTree_,o,a));let l=o;0<c.length&&(l=hf(e,o)),zp(e.eventQueue_,l,c)}function Xp(e,t){Zp(e,"connected",t),!1===t&&function(r){of(r,"onDisconnectEvents");const i=Yp(r),s=bh();Th(r.onDisconnect_,lu(),(e,t)=>{var n=pp(e,t,r.serverSyncTree_,i);Ih(s,e,n)});let a=[];Th(s,lu(),(e,t)=>{a=a.concat(Wd(r.serverSyncTree_,e,t));var n=gf(r,e);hf(r,n)}),r.onDisconnect_=bh(),zp(r.eventQueue_,lu(),a)}(e)}function Zp(e,t,n){var r=new cu("/.info/"+t),i=rh(n);e.infoData_.updateSnapshot(r,i);i=Wd(e.infoSyncTree_,r,i);zp(e.eventQueue_,r,i)}function ef(e){return e.nextWriteId_++}function tf(r,i,e,t,s){of(r,"set",{path:i.toString(),value:e,priority:t});var n=Yp(r);const a=rh(e,t);var o=Yd(r.serverSyncTree_,i),n=fp(a,o,n);const c=ef(r);n=zd(r.serverSyncTree_,i,n,c,!0);Bp(r.eventQueue_,n),r.server_.put(i.toString(),a.val(!0),(e,t)=>{var n="ok"===e;n||Sl("set at "+i+" failed: "+e);n=Kd(r.serverSyncTree_,c,!n);zp(r.eventQueue_,i,n),cf(0,s,e,t)});n=gf(r,i);hf(r,n),zp(r.eventQueue_,n,[])}function nf(n,r,i){n.server_.onDisconnectCancel(r.toString(),(e,t)=>{"ok"===e&&!function e(n,t){if(vu(t))return n.value=null,n.children.clear(),!0;if(null!==n.value){if(n.value.isLeafNode())return!1;{const i=n.value;return n.value=null,i.forEachChild(Ku,(e,t)=>{Ih(n,new cu(e),t)}),e(n,t)}}if(0<n.children.size){var r=uu(t);return t=du(t),n.children.has(r)&&e(n.children.get(r),t)&&n.children.delete(r),0===n.children.size}return!0}(n.onDisconnect_,r),cf(0,i,e,t)})}function rf(n,r,e,i){const s=rh(e);n.server_.onDisconnectPut(r.toString(),s.val(!0),(e,t)=>{"ok"===e&&Ih(n.onDisconnect_,r,s),cf(0,i,e,t)})}function sf(e,t,n){let r;r=".info"===uu(t._path)?Gd(e.infoSyncTree_,t,n):Gd(e.serverSyncTree_,t,n),jp(e.eventQueue_,t._path,r)}function af(e){e.persistentConnection_&&e.persistentConnection_.interrupt(Kp)}function of(e,...t){let n="";e.persistentConnection_&&(n=e.persistentConnection_.id+":"),El(n,...t)}function cf(e,r,i,s){r&&Vl(()=>{if("ok"===i)r(null);else{var t=(i||"error").toUpperCase();let e=t;s&&(e+=": "+s);const n=new Error(e);n.code=t,r(n)}})}function lf(e,t,n){return Yd(e.serverSyncTree_,t,n)||Zu.EMPTY_NODE}function uf(t,e=t.transactionQueueTree_){if(e||ff(t,e),_p(e)){const n=pf(t,e);f(0<n.length,"Sending zero length transaction queue"),n.every(e=>0===e.status)&&function(i,s,a){const e=a.map(e=>e.currentWriteId),t=lf(i,s,e);let n=t;var r=t.hash();for(let u=0;u<a.length;u++){const h=a[u];f(0===h.status,"tryToSendTransactionQueue_: items in queue should all be run."),h.status=1,h.retryCount++;var o=_u(s,h.path);n=n.updateChild(o,h.currentOutputSnapshotRaw)}const c=n.val(!0),l=s;i.server_.put(l.toString(),c,t=>{of(i,"transaction put response",{path:l.toString(),status:t});let n=[];if("ok"===t){const r=[];for(let e=0;e<a.length;e++)a[e].status=2,n=n.concat(Kd(i.serverSyncTree_,a[e].currentWriteId)),a[e].onComplete&&r.push(()=>a[e].onComplete(null,!0,a[e].currentOutputSnapshotResolved)),a[e].unwatcher();ff(i,vp(i.transactionQueueTree_,s)),uf(i,i.transactionQueueTree_),zp(i.eventQueue_,s,n);for(let t=0;t<r.length;t++)Vl(r[t])}else{if("datastale"===t)for(let e=0;e<a.length;e++)3===a[e].status?a[e].status=4:a[e].status=0;else{Sl("transaction at "+l.toString()+" failed: "+t);for(let e=0;e<a.length;e++)a[e].status=4,a[e].abortReason=t}hf(i,s)}},r)}(t,Ip(e),n)}else wp(e)&&bp(e,e=>{uf(t,e)})}function hf(e,t){var n=df(e,t),r=Ip(n);return function(i,s,a){if(0!==s.length){const l=[];let n=[];const t=s.filter(e=>0===e.status),u=t.map(e=>e.currentWriteId);for(let r=0;r<s.length;r++){const h=s[r];var o=_u(a,h.path);let e=!1,t;if(f(null!==o,"rerunTransactionsUnderNode_: relativePath should not be null."),4===h.status)e=!0,t=h.abortReason,n=n.concat(Kd(i.serverSyncTree_,h.currentWriteId,!0));else if(0===h.status)if(h.retryCount>=Wp)e=!0,t="maxretry",n=n.concat(Kd(i.serverSyncTree_,h.currentWriteId,!0));else{const d=lf(i,h.path,u);h.currentInputSnapshot=d;var c=s[r].update(d.val());if(void 0!==c){Fp("transaction failed: Data returned ",c,h.path);let e=rh(c);"object"==typeof c&&null!=c&&U(c,".priority")||(e=e.updatePriority(d.getPriority()));o=h.currentWriteId,c=Yp(i),c=fp(e,d,c);h.currentOutputSnapshotRaw=e,h.currentOutputSnapshotResolved=c,h.currentWriteId=ef(i),u.splice(u.indexOf(o),1),n=n.concat(zd(i.serverSyncTree_,h.path,c,h.currentWriteId,h.applyLocally)),n=n.concat(Kd(i.serverSyncTree_,o,!0))}else e=!0,t="nodata",n=n.concat(Kd(i.serverSyncTree_,h.currentWriteId,!0))}zp(i.eventQueue_,a,n),n=[],e&&(s[r].status=2,function(e){setTimeout(e,Math.floor(0))}(s[r].unwatcher),s[r].onComplete&&("nodata"===t?l.push(()=>s[r].onComplete(null,!1,s[r].currentInputSnapshot)):l.push(()=>s[r].onComplete(new Error(t),!1,null))))}ff(i,i.transactionQueueTree_);for(let e=0;e<l.length;e++)Vl(l[e]);uf(i,i.transactionQueueTree_)}}(e,pf(e,n),r),r}function df(e,t){let n,r=e.transactionQueueTree_;for(n=uu(t);null!==n&&void 0===_p(r);)r=vp(r,n),t=du(t),n=uu(t);return r}function pf(e,t){const n=[];return function t(n,e,r){const i=_p(e);if(i)for(let e=0;e<i.length;e++)r.push(i[e]);bp(e,e=>{t(n,e,r)})}(e,t,n),n.sort((e,t)=>e.order-t.order),n}function ff(t,n){const r=_p(n);if(r){let e=0;for(let t=0;t<r.length;t++)2!==r[t].status&&(r[e]=r[t],e++);r.length=e,yp(n,0<r.length?r:void 0)}bp(n,e=>{ff(t,e)})}function gf(t,e){var n=Ip(df(t,e)),r=vp(t.transactionQueueTree_,e);return function(e,t,n){let r=n?e:e.parent;for(;null!==r;){if(t(r))return;r=r.parent}}(r,e=>{mf(t,e)}),mf(t,r),function t(e,n,r,i){r&&!i&&n(e),bp(e,e=>{t(e,n,!0,i)}),r&&i&&n(e)}(r,e=>{mf(t,e)}),n}function mf(i,s){const a=_p(s);if(a){const o=[];let e=[],t=-1;for(let n=0;n<a.length;n++)3===a[n].status||(1===a[n].status?(f(t===n-1,"All SENT items should be at beginning of queue."),t=n,a[n].status=3,a[n].abortReason="set"):(f(0===a[n].status,"Unexpected transaction status in abort"),a[n].unwatcher(),e=e.concat(Kd(i.serverSyncTree_,a[n].currentWriteId,!0)),a[n].onComplete&&o.push(a[n].onComplete.bind(null,new Error("set"),!1,null))));-1===t?yp(s,void 0):a.length=t+1,zp(i.eventQueue_,Ip(s),e);for(let r=0;r<o.length;r++)Vl(o[r])}}const vf=function(e,t){var n=_f(e),r=n.namespace;"firebase.com"===n.domain&&Cl(n.host+" is no longer supported. Please use <YOUR FIREBASE>.firebaseio.com instead"),r&&"undefined"!==r||"localhost"===n.domain||Cl("Cannot parse Firebase url. Please use https://<YOUR FIREBASE>.firebaseio.com"),n.secure||kl();var i="ws"===n.scheme||"wss"===n.scheme;return{repoInfo:new Wl(n.host,n.secure,r,i,t,"",r!==n.subdomain),path:new cu(n.pathString)}},_f=function(r){let i="",s="",a="",o="",c="",l=!0,u="https",h=443;if("string"==typeof r){let e=r.indexOf("//");0<=e&&(u=r.substring(0,e-1),r=r.substring(e+2));let t=r.indexOf("/");-1===t&&(t=r.length);let n=r.indexOf("?");-1===n&&(n=r.length),i=r.substring(0,Math.min(t,n)),t<n&&(o=function(e){let t="";var n=e.split("/");for(let r=0;r<n.length;r++)if(0<n[r].length){let e=n[r];try{e=decodeURIComponent(e.replace(/\+/g," "))}catch(e){}t+="/"+e}return t}(r.substring(t,n)));var d,p=function(e){const t={};for(const r of(e="?"===e.charAt(0)?e.substring(1):e).split("&")){var n;0!==r.length&&(2===(n=r.split("=")).length?t[decodeURIComponent(n[0])]=decodeURIComponent(n[1]):Sl(`Invalid query segment '${r}' in query '${e}'`))}return t}(r.substring(Math.min(r.length,n)));e=i.indexOf(":"),0<=e?(l="https"===u||"wss"===u,h=parseInt(i.substring(e+1),10)):e=i.length;const f=i.slice(0,e);"localhost"===f.toLowerCase()?s="localhost":f.split(".").length<=2?s=f:(d=i.indexOf("."),a=i.substring(0,d).toLowerCase(),s=i.substring(d+1),c=a),"ns"in p&&(c=p.ns)}return{host:i,port:h,domain:s,subdomain:a,secure:l,scheme:u,pathString:o,namespace:c}},yf="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz",wf=function(){let s=0;const a=[];return function(e){var t=e===s;s=e;let n;const r=new Array(8);for(n=7;0<=n;n--)r[n]=yf.charAt(e%64),e=Math.floor(e/64);f(0===e,"Cannot push at time == 0");let i=r.join("");if(t){for(n=11;0<=n&&63===a[n];n--)a[n]=0;a[n]++}else for(n=0;n<12;n++)a[n]=Math.floor(64*Math.random());for(n=0;n<12;n++)i+=yf.charAt(a[n]);return f(20===i.length,"nextPushId: Length should be 20."),i}}();class bf{constructor(e,t,n,r){this.eventType=e,this.eventRegistration=t,this.snapshot=n,this.prevName=r}getPath(){var e=this.snapshot.ref;return("value"===this.eventType?e:e.parent)._path}getEventType(){return this.eventType}getEventRunner(){return this.eventRegistration.getEventRunner(this)}toString(){return this.getPath().toString()+":"+this.eventType+":"+L(this.snapshot.exportVal())}}class If{constructor(e,t,n){this.eventRegistration=e,this.error=t,this.path=n}getPath(){return this.path}getEventType(){return"cancel"}getEventRunner(){return this.eventRegistration.getEventRunner(this)}toString(){return this.path.toString()+":cancel"}}class Tf{constructor(e,t){this.snapshotCallback=e,this.cancelCallback=t}onValue(e,t){this.snapshotCallback.call(null,e,t)}onCancel(e){return f(this.hasCancelCallback,"Raising a cancel event on a listener with no cancel callback"),this.cancelCallback.call(null,e)}get hasCancelCallback(){return!!this.cancelCallback}matches(e){return this.snapshotCallback===e.snapshotCallback||void 0!==this.snapshotCallback.userCallback&&this.snapshotCallback.userCallback===e.snapshotCallback.userCallback&&this.snapshotCallback.context===e.snapshotCallback.context}}class Ef{constructor(e,t){this._repo=e,this._path=t}cancel(){const e=new y;return nf(this._repo,this._path,e.wrapCallback(()=>{})),e.promise}remove(){Np("OnDisconnect.remove",this._path);const e=new y;return rf(this._repo,this._path,null,e.wrapCallback(()=>{})),e.promise}set(e){Np("OnDisconnect.set",this._path),Ep("OnDisconnect.set",e,this._path,!1);const t=new y;return rf(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}setWithPriority(e,t){Np("OnDisconnect.setWithPriority",this._path),Ep("OnDisconnect.setWithPriority",e,this._path,!1),Sp("OnDisconnect.setWithPriority",t,!1);const n=new y;return function(n,r,e,t,i){const s=rh(e,t);n.server_.onDisconnectPut(r.toString(),s.val(!0),(e,t)=>{"ok"===e&&Ih(n.onDisconnect_,r,s),cf(0,i,e,t)})}(this._repo,this._path,e,t,n.wrapCallback(()=>{})),n.promise}update(e){Np("OnDisconnect.update",this._path),Cp("OnDisconnect.update",e,this._path,!1);const t=new y;return function(r,i,n,s){if(q(n))return El("onDisconnect().update() called with empty data. Don't do anything."),cf(0,s,"ok",void 0);r.server_.onDisconnectMerge(i.toString(),n,(e,t)=>{"ok"===e&&Dl(n,(e,t)=>{var n=rh(t);Ih(r.onDisconnect_,mu(i,e),n)}),cf(0,s,e,t)})}(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}}class Cf{constructor(e,t,n,r){this._repo=e,this._path=t,this._queryParams=n,this._orderByCalled=r}get key(){return vu(this._path)?null:pu(this._path)}get ref(){return new Nf(this._repo,this._path)}get _queryIdentifier(){var e=_h(this._queryParams),e=bl(e);return"{}"===e?"default":e}get _queryObject(){return _h(this._queryParams)}isEqual(e){if(!((e=ce(e))instanceof Cf))return!1;var t=this._repo===e._repo,n=wu(this._path,e._path),r=this._queryIdentifier===e._queryIdentifier;return t&&n&&r}toJSON(){return this.toString()}toString(){return this._repo.toString()+function(e){let t="";for(let n=e.pieceNum_;n<e.pieces_.length;n++)""!==e.pieces_[n]&&(t+="/"+encodeURIComponent(String(e.pieces_[n])));return t||"/"}(this._path)}}function Sf(e,t){if(!0===e._orderByCalled)throw new Error(t+": You can't combine multiple orderBy calls.")}function kf(e){let t=null,n=null;if(e.hasStart()&&(t=e.getIndexStartValue()),e.hasEnd()&&(n=e.getIndexEndValue()),e.getIndex()===Pu){var r="Query: When ordering by key, you may only pass one argument to startAt(), endAt(), or equalTo().",i="Query: When ordering by key, the argument passed to startAt(), startAfter(), endAt(), endBefore(), or equalTo() must be a string.";if(e.hasStart()){if(e.getIndexStartName()!==Nl)throw new Error(r);if("string"!=typeof t)throw new Error(i)}if(e.hasEnd()){if(e.getIndexEndName()!==Rl)throw new Error(r);if("string"!=typeof n)throw new Error(i)}}else if(e.getIndex()===Ku){if(null!=t&&!Lp(t)||null!=n&&!Lp(n))throw new Error("Query: When ordering by priority, the first argument passed to startAt(), startAfter() endAt(), endBefore(), or equalTo() must be a valid priority value (null, a number, or a string).")}else if(f(e.getIndex()instanceof ih||e.getIndex()===sh,"unknown index type."),null!=t&&"object"==typeof t||null!=n&&"object"==typeof n)throw new Error("Query: First argument passed to startAt(), startAfter(), endAt(), endBefore(), or equalTo() cannot be an object.")}function Af(e){if(e.hasStart()&&e.hasEnd()&&e.hasLimit()&&!e.hasAnchoredLimit())throw new Error("Query: Can't combine startAt(), startAfter(), endAt(), endBefore(), and limit(). Use limitToFirst() or limitToLast() instead.")}class Nf extends Cf{constructor(e,t){super(e,t,new ph,!1)}get parent(){var e=gu(this._path);return null===e?null:new Nf(this._repo,e)}get root(){let e=this;for(;null!==e.parent;)e=e.parent;return e}}class Rf{constructor(e,t,n){this._node=e,this.ref=t,this._index=n}get priority(){return this._node.getPriority().val()}get key(){return this.ref.key}get size(){return this._node.numChildren()}child(e){var t=new cu(e),n=xf(this.ref,e);return new Rf(this._node.getChild(t),n,Ku)}exists(){return!this._node.isEmpty()}exportVal(){return this._node.val(!0)}forEach(n){if(this._node.isLeafNode())return!1;const e=this._node;return!!e.forEachChild(this._index,(e,t)=>n(new Rf(t,xf(this.ref,e),Ku)))}hasChild(e){var t=new cu(e);return!this._node.getChild(t).isEmpty()}hasChildren(){return!this._node.isLeafNode()&&!this._node.isEmpty()}toJSON(){return this.exportVal()}val(){return this._node.val()}}function Pf(e,t){return(e=ce(e))._checkNotDeleted("ref"),void 0!==t?xf(e._root,t):e._root}function Df(e,t){(e=ce(e))._checkNotDeleted("refFromURL");const n=vf(t,e._repo.repoInfo_.nodeAdmin);Vp("refFromURL",n);var r=n.repoInfo;return e._repo.repoInfo_.isCustomHost()||r.host===e._repo.repoInfo_.host||Cl("refFromURL: Host name does not match the current database: (found "+r.host+" but expected "+e._repo.repoInfo_.host+")"),Pf(e,n.path.toString())}function xf(e,t){return(null===uu((e=ce(e))._path)?Ap:Up)("child","path",t,!1),new Nf(e._repo,mu(e._path,t))}function Of(e,t){e=ce(e),Np("set",e._path),Ep("set",t,e._path,!1);const n=new y;return tf(e._repo,e._path,t,null,n.wrapCallback(()=>{})),n.promise}function Mf(e,t){Cp("update",t,e._path,!1);const n=new y;return function(i,s,e,a){of(i,"update",{path:s.toString(),value:e});let n=!0;const r=Yp(i),o={};if(Dl(e,(e,t)=>{n=!1,o[e]=pp(mu(s,e),rh(t),i.serverSyncTree_,r)}),n)El("update() called with empty data. Don't do anything."),cf(0,a,"ok",void 0);else{const c=ef(i);var t=$d(i.serverSyncTree_,s,o,c);Bp(i.eventQueue_,t),i.server_.merge(s.toString(),e,(e,t)=>{var n="ok"===e;n||Sl("update at "+s+" failed: "+e);var r=Kd(i.serverSyncTree_,c,!n),n=0<r.length?hf(i,s):s;zp(i.eventQueue_,n,r),cf(0,a,e,t)}),Dl(e,e=>{var t=gf(i,mu(s,e));hf(i,t)}),zp(i.eventQueue_,s,[])}}(e._repo,e._path,t,n.wrapCallback(()=>{})),n.promise}function Lf(t){t=ce(t);var i,s,a,e=new Tf(()=>{}),e=new Ff(e);return i=t._repo,s=t,a=e,(null!=(e=Jd(i.serverSyncTree_,s))?Promise.resolve(e):i.server_.get(s).then(e=>{var t,n=rh(e).withIndex(s._queryParams.getIndex());Qd(i.serverSyncTree_,s,a,!0);let r;return r=s._queryParams.loadsAllData()?Wd(i.serverSyncTree_,s._path,n):(t=tp(i.serverSyncTree_,s),Hd(i.serverSyncTree_,s._path,n,t)),zp(i.eventQueue_,s._path,r),Gd(i.serverSyncTree_,s,a,null,!0),n},e=>(of(i,"get for query "+L(s)+" failed: "+e),Promise.reject(new Error(e))))).then(e=>new Rf(e,new Nf(t._repo,t._path),t._queryParams.getIndex()))}class Ff{constructor(e){this.callbackContext=e}respondsTo(e){return"value"===e}createEvent(e,t){var n=t._queryParams.getIndex();return new bf("value",this,new Rf(e.snapshotNode,new Nf(t._repo,t._path),n))}getEventRunner(e){return"cancel"===e.getEventType()?()=>this.callbackContext.onCancel(e.error):()=>this.callbackContext.onValue(e.snapshot,null)}createCancelEvent(e,t){return this.callbackContext.hasCancelCallback?new If(this,e,t):null}matches(e){return e instanceof Ff&&(!e.callbackContext||!this.callbackContext||e.callbackContext.matches(this.callbackContext))}hasAnyCallback(){return null!==this.callbackContext}}class Uf{constructor(e,t){this.eventType=e,this.callbackContext=t}respondsTo(e){let t="children_added"===e?"child_added":e;return t="children_removed"===t?"child_removed":t,this.eventType===t}createCancelEvent(e,t){return this.callbackContext.hasCancelCallback?new If(this,e,t):null}createEvent(e,t){f(null!=e.childName,"Child events should have a childName.");var n=xf(new Nf(t._repo,t._path),e.childName),r=t._queryParams.getIndex();return new bf(e.type,this,new Rf(e.snapshotNode,n,r),e.prevName)}getEventRunner(e){return"cancel"===e.getEventType()?()=>this.callbackContext.onCancel(e.error):()=>this.callbackContext.onValue(e.snapshot,e.prevName)}matches(e){return e instanceof Uf&&(this.eventType===e.eventType&&(!this.callbackContext||!e.callbackContext||this.callbackContext.matches(e.callbackContext)))}hasAnyCallback(){return!!this.callbackContext}}function Vf(n,e,t,r,i){let s;if("object"==typeof r&&(s=void 0,i=r),"function"==typeof r&&(s=r),i&&i.onlyOnce){const c=t;var a=(e,t)=>{sf(n._repo,n,o),c(e,t)};a.userCallback=t.userCallback,a.context=t.context,t=a}a=new Tf(t,s||void 0);const o="value"===e?new Ff(a):new Uf(e,a);return function(e,t,n){let r;r=".info"===uu(t._path)?Qd(e.infoSyncTree_,t,n):Qd(e.serverSyncTree_,t,n),jp(e.eventQueue_,t._path,r)}(n._repo,n,o),()=>sf(n._repo,n,o)}function qf(e,t,n,r){return Vf(e,"value",t,n,r)}function Bf(e,t,n,r){return Vf(e,"child_added",t,n,r)}function jf(e,t,n,r){return Vf(e,"child_changed",t,n,r)}function zf(e,t,n,r){return Vf(e,"child_moved",t,n,r)}function $f(e,t,n,r){return Vf(e,"child_removed",t,n,r)}function Kf(e,t,n){let r=null;var i=n?new Tf(n):null;"value"===t?r=new Ff(i):t&&(r=new Uf(t,i)),sf(e._repo,e,r)}class Wf{}class Gf extends Wf{constructor(e,t){super(),this._value=e,this._key=t,this.type="endAt"}_apply(e){Ep("endAt",this._value,e._path,!0);var t=gh(e._queryParams,this._value,this._key);if(Af(t),kf(t),e._queryParams.hasEnd())throw new Error("endAt: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new Cf(e._repo,e._path,t,e._orderByCalled)}}class Hf extends Wf{constructor(e,t){super(),this._value=e,this._key=t,this.type="endBefore"}_apply(e){Ep("endBefore",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===Pu||n?gh(e,t,n):gh(e,t,Nl),r.endBeforeSet_=!0,r}(e._queryParams,this._value,this._key);if(Af(t),kf(t),e._queryParams.hasEnd())throw new Error("endBefore: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new Cf(e._repo,e._path,t,e._orderByCalled)}}class Qf extends Wf{constructor(e,t){super(),this._value=e,this._key=t,this.type="startAt"}_apply(e){Ep("startAt",this._value,e._path,!0);var t=fh(e._queryParams,this._value,this._key);if(Af(t),kf(t),e._queryParams.hasStart())throw new Error("startAt: Starting point was already set (by another call to startAt, startBefore or equalTo).");return new Cf(e._repo,e._path,t,e._orderByCalled)}}class Yf extends Wf{constructor(e,t){super(),this._value=e,this._key=t,this.type="startAfter"}_apply(e){Ep("startAfter",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===Pu||n?fh(e,t,n):fh(e,t,Rl),r.startAfterSet_=!0,r}(e._queryParams,this._value,this._key);if(Af(t),kf(t),e._queryParams.hasStart())throw new Error("startAfter: Starting point was already set (by another call to startAt, startAfter, or equalTo).");return new Cf(e._repo,e._path,t,e._orderByCalled)}}class Jf extends Wf{constructor(e){super(),this._limit=e,this.type="limitToFirst"}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToFirst: Limit was already set (by another call to limitToFirst or limitToLast).");return new Cf(e._repo,e._path,function(e,t){const n=e.copy();return n.limitSet_=!0,n.limit_=t,n.viewFrom_="l",n}(e._queryParams,this._limit),e._orderByCalled)}}class Xf extends Wf{constructor(e){super(),this._limit=e,this.type="limitToLast"}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToLast: Limit was already set (by another call to limitToFirst or limitToLast).");return new Cf(e._repo,e._path,function(e,t){const n=e.copy();return n.limitSet_=!0,n.limit_=t,n.viewFrom_="r",n}(e._queryParams,this._limit),e._orderByCalled)}}class Zf extends Wf{constructor(e){super(),this._path=e,this.type="orderByChild"}_apply(e){Sf(e,"orderByChild");var t=new cu(this._path);if(vu(t))throw new Error("orderByChild: cannot pass in empty path. Use orderByValue() instead.");t=new ih(t),t=mh(e._queryParams,t);return kf(t),new Cf(e._repo,e._path,t,!0)}}class eg extends Wf{constructor(){super(...arguments),this.type="orderByKey"}_apply(e){Sf(e,"orderByKey");var t=mh(e._queryParams,Pu);return kf(t),new Cf(e._repo,e._path,t,!0)}}class tg extends Wf{constructor(){super(...arguments),this.type="orderByPriority"}_apply(e){Sf(e,"orderByPriority");var t=mh(e._queryParams,Ku);return kf(t),new Cf(e._repo,e._path,t,!0)}}class ng extends Wf{constructor(){super(...arguments),this.type="orderByValue"}_apply(e){Sf(e,"orderByValue");var t=mh(e._queryParams,sh);return kf(t),new Cf(e._repo,e._path,t,!0)}}class rg extends Wf{constructor(e,t){super(),this._value=e,this._key=t,this.type="equalTo"}_apply(e){if(Ep("equalTo",this._value,e._path,!1),e._queryParams.hasStart())throw new Error("equalTo: Starting point was already set (by another call to startAt/startAfter or equalTo).");if(e._queryParams.hasEnd())throw new Error("equalTo: Ending point was already set (by another call to endAt/endBefore or equalTo).");return new Gf(this._value,this._key)._apply(new Qf(this._value,this._key)._apply(e))}}function ig(e,...t){let n=ce(e);for(const r of t)n=r._apply(n);return n}sl=Nf,f(!Ad,"__referenceConstructor has already been defined"),Ad=sl,al=Nf,f(!qd,"__referenceConstructor has already been defined"),qd=al;const sg="FIREBASE_DATABASE_EMULATOR_HOST",ag={};let og=!1;function cg(e,t,n,r,i){let s=r||e.options.databaseURL;void 0===s&&(e.options.projectId||Cl("Can't determine Firebase Database URL. Be sure to include a Project ID when calling firebase.initializeApp()."),El("Using default host for project ",e.options.projectId),s=`${e.options.projectId}-default-rtdb.firebaseio.com`);let a=vf(s,i),o=a.repoInfo,c,l=void 0;"undefined"!=typeof process&&process.env&&(l=process.env[sg]),l?(c=!0,s=`http://${l}?ns=${o.namespace}`,a=vf(s,i),o=a.repoInfo):c=!a.repoInfo.secure;var u=i&&c?new jl(jl.OWNER):new Bl(e.name,e.options,t);Vp("Invalid Firebase Database URL",a),vu(a.path)||Cl("Database URL must point to the root of a Firebase Database (not including a child path).");u=function(e,t,n,r){let i=ag[t.name];i||(i={},ag[t.name]=i);var s=i[e.toURLString()];s&&Cl("Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.");return s=new Gp(e,og,n,r),i[e.toURLString()]=s}(o,e,u,new ql(e.name,n));return new lg(u,e)}class lg{constructor(e,t){this._repoInternal=e,this.app=t,this.type="database",this._instanceStarted=!1}get _repo(){return this._instanceStarted||(Hp(this._repoInternal,this.app.options.appId,this.app.options.databaseAuthVariableOverride),this._instanceStarted=!0),this._repoInternal}get _root(){return this._rootInternal||(this._rootInternal=new Nf(this._repo,lu())),this._rootInternal}_delete(){return null!==this._rootInternal&&(function(e,t){const n=ag[t];n&&n[e.key]===e||Cl(`Database ${t}(${e.repoInfo_}) has already been deleted.`),af(e),delete n[e.key]}(this._repo,this.app.name),this._repoInternal=null,this._rootInternal=null),Promise.resolve()}_checkNotDeleted(e){null===this._rootInternal&&Cl("Cannot call "+e+" on a deleted database.")}}function ug(){ru.IS_TRANSPORT_INITIALIZED&&Sl("Transport has already been initialized. Please call this function before calling ref or setting up a listener")}function hg(){ug(),Zl.forceDisallow()}function dg(){ug(),nu.forceDisallow(),Zl.forceAllow()}function pg(e,t,n,r={}){(e=ce(e))._checkNotDeleted("useEmulator"),e._instanceStarted&&Cl("Cannot call useEmulator() after instance has already been initialized.");var i,s=e._repoInternal;let a=void 0;s.repoInfo_.nodeAdmin?(r.mockUserToken&&Cl('mockUserToken is not supported by the Admin SDK. For client access with mock users, please use the "firebase" package instead of "firebase-admin".'),a=new jl(jl.OWNER)):r.mockUserToken&&(i="string"==typeof r.mockUserToken?r.mockUserToken:w(r.mockUserToken,e.app.options.projectId),a=new jl(i)),r=s,e=t,t=n,n=a,r.repoInfo_=new Wl(`${e}:${t}`,!1,r.repoInfo_.namespace,r.repoInfo_.webSocketOnly,r.repoInfo_.nodeAdmin,r.repoInfo_.persistenceKey,r.repoInfo_.includeNamespaceInQueryParams,!0),n&&(r.authTokenProvider_=n)}function fg(e){(e=ce(e))._checkNotDeleted("goOnline"),(e=e._repo).persistentConnection_&&e.persistentConnection_.resume(Kp)}function gg(e,t){Tl(e,t)}const mg={".sv":"timestamp"};class vg{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return{committed:this.committed,snapshot:this.snapshot.toJSON()}}}function _g(i,e,t){if(i=ce(i),Np("Reference.transaction",i._path),".length"===i.key||".keys"===i.key)throw"Reference.transaction failed: "+i.key+" is a read-only object.";var n=null===(r=null==t?void 0:t.applyLocally)||void 0===r||r;const s=new y;var r=qf(i,()=>{});return function(t,n,e,r,i,s){of(t,"transaction on "+n);const a={path:n,update:e,onComplete:r,status:null,order:pl(),applyLocally:s,retryCount:0,unwatcher:i,abortReason:null,currentWriteId:null,currentInputSnapshot:null,currentOutputSnapshotRaw:null,currentOutputSnapshotResolved:null},o=lf(t,n,void 0);a.currentInputSnapshot=o;var c=a.update(o.val());if(void 0===c)a.unwatcher(),a.currentOutputSnapshotRaw=null,a.currentOutputSnapshotResolved=null,a.onComplete&&a.onComplete(null,!1,a.currentInputSnapshot);else{Fp("transaction failed: Data returned ",c,a.path),a.status=0;var l=vp(t.transactionQueueTree_,n);const u=_p(l)||[];u.push(a),yp(l,u);let e;if("object"==typeof c&&null!==c&&U(c,".priority"))e=V(c,".priority"),f(Lp(e),"Invalid priority returned by transaction. Priority must be a valid string, finite number, server value, or null.");else{const h=Yd(t.serverSyncTree_,n)||Zu.EMPTY_NODE;e=h.getPriority().val()}l=Yp(t),c=rh(c,e),l=fp(c,o,l);a.currentOutputSnapshotRaw=c,a.currentOutputSnapshotResolved=l,a.currentWriteId=ef(t);l=zd(t.serverSyncTree_,n,l,a.currentWriteId,a.applyLocally);zp(t.eventQueue_,n,l),uf(t,t.transactionQueueTree_)}}(i._repo,i._path,e,(e,t,n)=>{var r;e?s.reject(e):(r=new Rf(n,new Nf(i._repo,i._path),Ku),s.resolve(new vg(t,r)))},r,n),s.promise}Su.prototype.simpleListen=function(e,t){this.sendRequest("q",{p:e},t)},Su.prototype.echo=function(e,t){this.sendRequest("echo",{d:e},t)},Zc(Xe),He(new le("database",(e,{instanceIdentifier:t})=>{return cg(e.getProvider("app").getImmediate(),e.getProvider("auth-internal"),e.getProvider("app-check-internal"),t)},"PUBLIC").setMultipleInstances(!0)),nt(Jc,"1.0.3",ol),nt(Jc,"1.0.3","esm2017");function yg(e){var t="FIREBASE WARNING: "+e;wg.warn(t)}const wg=new _e("@firebase/database-compat");class bg{constructor(e){this._delegate=e}cancel(t){J("OnDisconnect.cancel",0,1,arguments.length),Z("OnDisconnect.cancel","onComplete",t,!0);const e=this._delegate.cancel();return t&&e.then(()=>t(null),e=>t(e)),e}remove(t){J("OnDisconnect.remove",0,1,arguments.length),Z("OnDisconnect.remove","onComplete",t,!0);const e=this._delegate.remove();return t&&e.then(()=>t(null),e=>t(e)),e}set(e,t){J("OnDisconnect.set",1,2,arguments.length),Z("OnDisconnect.set","onComplete",t,!0);const n=this._delegate.set(e);return t&&n.then(()=>t(null),e=>t(e)),n}setWithPriority(e,t,n){J("OnDisconnect.setWithPriority",2,3,arguments.length),Z("OnDisconnect.setWithPriority","onComplete",n,!0);const r=this._delegate.setWithPriority(e,t);return n&&r.then(()=>n(null),e=>n(e)),r}update(t,n){if(J("OnDisconnect.update",1,2,arguments.length),Array.isArray(t)){const r={};for(let e=0;e<t.length;++e)r[""+e]=t[e];t=r,yg("Passing an Array to firebase.database.onDisconnect().update() is deprecated. Use set() if you want to overwrite the existing data, or an Object with integer keys if you really do want to only update some of the children.")}Z("OnDisconnect.update","onComplete",n,!0);const e=this._delegate.update(t);return n&&e.then(()=>n(null),e=>n(e)),e}}class Ig{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return J("TransactionResult.toJSON",0,1,arguments.length),{committed:this.committed,snapshot:this.snapshot.toJSON()}}}class Tg{constructor(e,t){this._database=e,this._delegate=t}val(){return J("DataSnapshot.val",0,0,arguments.length),this._delegate.val()}exportVal(){return J("DataSnapshot.exportVal",0,0,arguments.length),this._delegate.exportVal()}toJSON(){return J("DataSnapshot.toJSON",0,1,arguments.length),this._delegate.toJSON()}exists(){return J("DataSnapshot.exists",0,0,arguments.length),this._delegate.exists()}child(e){return J("DataSnapshot.child",0,1,arguments.length),e=String(e),Up("DataSnapshot.child","path",e,!1),new Tg(this._database,this._delegate.child(e))}hasChild(e){return J("DataSnapshot.hasChild",1,1,arguments.length),Up("DataSnapshot.hasChild","path",e,!1),this._delegate.hasChild(e)}getPriority(){return J("DataSnapshot.getPriority",0,0,arguments.length),this._delegate.priority}forEach(t){return J("DataSnapshot.forEach",1,1,arguments.length),Z("DataSnapshot.forEach","action",t,!1),this._delegate.forEach(e=>t(new Tg(this._database,e)))}hasChildren(){return J("DataSnapshot.hasChildren",0,0,arguments.length),this._delegate.hasChildren()}get key(){return this._delegate.key}numChildren(){return J("DataSnapshot.numChildren",0,0,arguments.length),this._delegate.size}getRef(){return J("DataSnapshot.ref",0,0,arguments.length),new Cg(this._database,this._delegate.ref)}get ref(){return this.getRef()}}class Eg{constructor(e,t){this.database=e,this._delegate=t}on(e,n,t,r){var i;J("Query.on",2,4,arguments.length),Z("Query.on","callback",n,!1);const s=Eg.getCancelAndContextArgs_("Query.on",t,r);var a=(e,t)=>{n.call(s.context,new Tg(this.database,e),t)};a.userCallback=n,a.context=s.context;var o=null===(i=s.cancel)||void 0===i?void 0:i.bind(s.context);switch(e){case"value":return qf(this._delegate,a,o),n;case"child_added":return Bf(this._delegate,a,o),n;case"child_removed":return $f(this._delegate,a,o),n;case"child_changed":return jf(this._delegate,a,o),n;case"child_moved":return zf(this._delegate,a,o),n;default:throw new Error(X("Query.on","eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}off(e,t,n){var r;J("Query.off",0,3,arguments.length),function(e,t,n){if(!n||void 0!==t)switch(t){case"value":case"child_added":case"child_removed":case"child_changed":case"child_moved":break;default:throw new Error(X(e,"eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}("Query.off",e,!0),Z("Query.off","callback",t,!0),ee("Query.off","context",n,!0),t?((r=()=>{}).userCallback=t,r.context=n,Kf(this._delegate,e,r)):Kf(this._delegate,e)}get(){return Lf(this._delegate).then(e=>new Tg(this.database,e))}once(e,r,t,n){J("Query.once",1,4,arguments.length),Z("Query.once","callback",r,!0);const i=Eg.getCancelAndContextArgs_("Query.once",t,n),s=new y;var a=(e,t)=>{var n=new Tg(this.database,e);r&&r.call(i.context,n,t),s.resolve(n)};a.userCallback=r,a.context=i.context;var o=e=>{i.cancel&&i.cancel.call(i.context,e),s.reject(e)};switch(e){case"value":qf(this._delegate,a,o,{onlyOnce:!0});break;case"child_added":Bf(this._delegate,a,o,{onlyOnce:!0});break;case"child_removed":$f(this._delegate,a,o,{onlyOnce:!0});break;case"child_changed":jf(this._delegate,a,o,{onlyOnce:!0});break;case"child_moved":zf(this._delegate,a,o,{onlyOnce:!0});break;default:throw new Error(X("Query.once","eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}return s.promise}limitToFirst(e){return J("Query.limitToFirst",1,1,arguments.length),new Eg(this.database,ig(this._delegate,function(e){if("number"!=typeof e||Math.floor(e)!==e||e<=0)throw new Error("limitToFirst: First argument must be a positive integer.");return new Jf(e)}(e)))}limitToLast(e){return J("Query.limitToLast",1,1,arguments.length),new Eg(this.database,ig(this._delegate,function(e){if("number"!=typeof e||Math.floor(e)!==e||e<=0)throw new Error("limitToLast: First argument must be a positive integer.");return new Xf(e)}(e)))}orderByChild(e){return J("Query.orderByChild",1,1,arguments.length),new Eg(this.database,ig(this._delegate,function(e){if("$key"===e)throw new Error('orderByChild: "$key" is invalid. Use orderByKey() instead.');if("$priority"===e)throw new Error('orderByChild: "$priority" is invalid. Use orderByPriority() instead.');if("$value"===e)throw new Error('orderByChild: "$value" is invalid. Use orderByValue() instead.');return Up("orderByChild","path",e,!1),new Zf(e)}(e)))}orderByKey(){return J("Query.orderByKey",0,0,arguments.length),new Eg(this.database,ig(this._delegate,new eg))}orderByPriority(){return J("Query.orderByPriority",0,0,arguments.length),new Eg(this.database,ig(this._delegate,new tg))}orderByValue(){return J("Query.orderByValue",0,0,arguments.length),new Eg(this.database,ig(this._delegate,new ng))}startAt(e=null,t){return J("Query.startAt",0,2,arguments.length),new Eg(this.database,ig(this._delegate,([e=null,t]=[e,t],kp("startAt","key",t,!0),new Qf(e,t))))}startAfter(e=null,t){return J("Query.startAfter",0,2,arguments.length),new Eg(this.database,ig(this._delegate,(e=e,t=t,kp("startAfter","key",t,!0),new Yf(e,t))))}endAt(e=null,t){return J("Query.endAt",0,2,arguments.length),new Eg(this.database,ig(this._delegate,(e=e,t=t,kp("endAt","key",t,!0),new Gf(e,t))))}endBefore(e=null,t){return J("Query.endBefore",0,2,arguments.length),new Eg(this.database,ig(this._delegate,(e=e,t=t,kp("endBefore","key",t,!0),new Hf(e,t))))}equalTo(e,t){return J("Query.equalTo",1,2,arguments.length),new Eg(this.database,ig(this._delegate,(e=e,t=t,kp("equalTo","key",t,!0),new rg(e,t))))}toString(){return J("Query.toString",0,0,arguments.length),this._delegate.toString()}toJSON(){return J("Query.toJSON",0,1,arguments.length),this._delegate.toJSON()}isEqual(e){if(J("Query.isEqual",1,1,arguments.length),e instanceof Eg)return this._delegate.isEqual(e._delegate);throw new Error("Query.isEqual failed: First argument must be an instance of firebase.database.Query.")}static getCancelAndContextArgs_(e,t,n){const r={cancel:void 0,context:void 0};if(t&&n)r.cancel=t,Z(e,"cancel",r.cancel,!0),r.context=n,ee(e,"context",r.context,!0);else if(t)if("object"==typeof t&&null!==t)r.context=t;else{if("function"!=typeof t)throw new Error(X(e,"cancelOrContext")+" must either be a cancel callback or a context object.");r.cancel=t}return r}get ref(){return new Cg(this.database,new Nf(this._delegate._repo,this._delegate._path))}}class Cg extends Eg{constructor(e,t){super(e,new Cf(t._repo,t._path,new ph,!1)),this.database=e,this._delegate=t}getKey(){return J("Reference.key",0,0,arguments.length),this._delegate.key}child(e){return J("Reference.child",1,1,arguments.length),"number"==typeof e&&(e=String(e)),new Cg(this.database,xf(this._delegate,e))}getParent(){J("Reference.parent",0,0,arguments.length);var e=this._delegate.parent;return e?new Cg(this.database,e):null}getRoot(){return J("Reference.root",0,0,arguments.length),new Cg(this.database,this._delegate.root)}set(e,t){J("Reference.set",1,2,arguments.length),Z("Reference.set","onComplete",t,!0);const n=Of(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}update(t,n){if(J("Reference.update",1,2,arguments.length),Array.isArray(t)){const r={};for(let e=0;e<t.length;++e)r[""+e]=t[e];t=r,yg("Passing an Array to Firebase.update() is deprecated. Use set() if you want to overwrite the existing data, or an Object with integer keys if you really do want to only update some of the children.")}Np("Reference.update",this._delegate._path),Z("Reference.update","onComplete",n,!0);const e=Mf(this._delegate,t);return n&&e.then(()=>n(null),e=>n(e)),e}setWithPriority(e,t,n){J("Reference.setWithPriority",2,3,arguments.length),Z("Reference.setWithPriority","onComplete",n,!0);const r=function(e,t,n){if(Np("setWithPriority",e._path),Ep("setWithPriority",t,e._path,!1),Sp("setWithPriority",n,!1),".length"===e.key||".keys"===e.key)throw"setWithPriority failed: "+e.key+" is a read-only object.";const r=new y;return tf(e._repo,e._path,t,n,r.wrapCallback(()=>{})),r.promise}(this._delegate,e,t);return n&&r.then(()=>n(null),e=>n(e)),r}remove(t){J("Reference.remove",0,1,arguments.length),Z("Reference.remove","onComplete",t,!0);const e=(n=this._delegate,Np("remove",n._path),Of(n,null));var n;return t&&e.then(()=>t(null),e=>t(e)),e}transaction(e,t,n){J("Reference.transaction",1,3,arguments.length),Z("Reference.transaction","transactionUpdate",e,!1),Z("Reference.transaction","onComplete",t,!0),function(e,t,n,r){if((!r||void 0!==n)&&"boolean"!=typeof n)throw new Error(X(e,t)+"must be a boolean.")}("Reference.transaction","applyLocally",n,!0);const r=_g(this._delegate,e,{applyLocally:n}).then(e=>new Ig(e.committed,new Tg(this.database,e.snapshot)));return t&&r.then(e=>t(null,e.committed,e.snapshot),e=>t(e,!1,null)),r}setPriority(e,t){J("Reference.setPriority",1,2,arguments.length),Z("Reference.setPriority","onComplete",t,!0);const n=function(e,t){e=ce(e),Np("setPriority",e._path),Sp("setPriority",t,!1);const n=new y;return tf(e._repo,mu(e._path,".priority"),t,null,n.wrapCallback(()=>{})),n.promise}(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}push(e,t){J("Reference.push",0,2,arguments.length),Z("Reference.push","onComplete",t,!0);const n=function(e,t){e=ce(e),Np("push",e._path),Ep("push",t,e._path,!0);var n=Qp(e._repo),n=wf(n);const r=xf(e,n),i=xf(e,n);let s;return s=null!=t?Of(i,t).then(()=>i):Promise.resolve(i),r.then=s.then.bind(s),r.catch=s.then.bind(s,void 0),r}(this._delegate,e),r=n.then(e=>new Cg(this.database,e));t&&r.then(()=>t(null),e=>t(e));const i=new Cg(this.database,n);return i.then=r.then.bind(r),i.catch=r.catch.bind(r,void 0),i}onDisconnect(){return Np("Reference.onDisconnect",this._delegate._path),new bg(new Ef(this._delegate._repo,this._delegate._path))}get key(){return this.getKey()}get parent(){return this.getParent()}get root(){return this.getRoot()}}class Sg{constructor(e,t){this._delegate=e,this.app=t,this.INTERNAL={delete:()=>this._delegate._delete(),forceWebSockets:hg,forceLongPolling:dg}}useEmulator(e,t,n={}){pg(this._delegate,e,t,n)}ref(e){if(J("database.ref",0,1,arguments.length),e instanceof Cg){var t=Df(this._delegate,e.toString());return new Cg(this,t)}t=Pf(this._delegate,e);return new Cg(this,t)}refFromURL(e){J("database.refFromURL",1,1,arguments.length);var t=Df(this._delegate,e);return new Cg(this,t)}goOffline(){var e;J("database.goOffline",0,0,arguments.length),(e=ce(e=this._delegate))._checkNotDeleted("goOffline"),af(e._repo)}goOnline(){return J("database.goOnline",0,0,arguments.length),fg(this._delegate)}}Sg.ServerValue={TIMESTAMP:mg,increment:e=>({".sv":{increment:e}})};var kg,Ag=Object.freeze({__proto__:null,initStandalone:function({app:e,url:t,version:n,customAuthImpl:r,customAppCheckImpl:i,namespace:s,nodeAdmin:a=!1}){Zc(n);var o=new de("database-standalone");const c=new he("auth-internal",o);c.setComponent(new le("auth-internal",()=>r,"PRIVATE"));let l=void 0;return i&&(l=new he("app-check-internal",o),l.setComponent(new le("app-check-internal",()=>i,"PRIVATE"))),{instance:new Sg(cg(e,c,l,t,a),e),namespace:s}}});const Ng=Sg.ServerValue;(kg=It).INTERNAL.registerComponent(new le("database-compat",(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("database").getImmediate({identifier:t});return new Sg(r,n)},"PUBLIC").setServiceProps({Reference:Cg,Query:Eg,Database:Sg,DataSnapshot:Tg,enableLogging:gg,INTERNAL:Ag,ServerValue:Ng}).setMultipleInstances(!0)),kg.registerVersion("@firebase/database-compat","1.0.3");var wt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Rg={},Pg=wt||self;function Dg(e){var t=typeof e;return"array"==(t="object"!=t?t:e?Array.isArray(e)?"array":t:"null")||"object"==t&&"number"==typeof e.length}function xg(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var Og="closure_uid_"+(1e9*Math.random()>>>0),Mg=0;function Lg(e,t,n){return e.call.apply(e.bind,arguments)}function Fg(t,n,e){if(!t)throw Error();if(2<arguments.length){var r=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(e,r),t.apply(n,e)}}return function(){return t.apply(n,arguments)}}function Ug(e,t,n){return(Ug=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?Lg:Fg).apply(null,arguments)}function Vg(t){var n=Array.prototype.slice.call(arguments,1);return function(){var e=n.slice();return e.push.apply(e,arguments),t.apply(this,e)}}function qg(e,s){function t(){}t.prototype=s.prototype,e.$=s.prototype,e.prototype=new t,(e.prototype.constructor=e).ac=function(e,t,n){for(var r=Array(arguments.length-2),i=2;i<arguments.length;i++)r[i-2]=arguments[i];return s.prototype[t].apply(e,r)}}function Bg(){this.s=this.s,this.o=this.o}Bg.prototype.s=!1,Bg.prototype.sa=function(){var e;!this.s&&(this.s=!0,this.N(),0)&&(e=this,Object.prototype.hasOwnProperty.call(e,Og)&&e[Og]||(e[Og]=++Mg))},Bg.prototype.N=function(){if(this.o)for(;this.o.length;)this.o.shift()()};const jg=Array.prototype.indexOf?function(e,t){return Array.prototype.indexOf.call(e,t,void 0)}:function(e,t){if("string"==typeof e)return"string"!=typeof t||1!=t.length?-1:e.indexOf(t,0);for(let n=0;n<e.length;n++)if(n in e&&e[n]===t)return n;return-1};function zg(t){var n=t.length;if(0<n){const r=Array(n);for(let e=0;e<n;e++)r[e]=t[e];return r}return[]}function $g(t){for(let e=1;e<arguments.length;e++){var n=arguments[e];if(Dg(n)){var r=t.length||0,i=n.length||0;t.length=r+i;for(let e=0;e<i;e++)t[r+e]=n[e]}else t.push(n)}}function Kg(e,t){this.type=e,this.g=this.target=t,this.defaultPrevented=!1}Kg.prototype.h=function(){this.defaultPrevented=!0};var Wg=function(){if(!Pg.addEventListener||!Object.defineProperty)return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}});try{var n=()=>{};Pg.addEventListener("test",n,t),Pg.removeEventListener("test",n,t)}catch(e){}return e}();function Gg(e){return/^[\s\xa0]*$/.test(e)}function Hg(){var e=Pg.navigator;return(e=e&&e.userAgent)?e:""}function Qg(e){return-1!=Hg().indexOf(e)}function Yg(e){return Yg[" "](e),e}Yg[" "]=function(){};var Jg,Xg=Qg("Opera"),Zg=Qg("Trident")||Qg("MSIE"),em=Qg("Edge"),tm=em||Zg,nm=Qg("Gecko")&&!(-1!=Hg().toLowerCase().indexOf("webkit")&&!Qg("Edge"))&&!(Qg("Trident")||Qg("MSIE"))&&!Qg("Edge"),rm=-1!=Hg().toLowerCase().indexOf("webkit")&&!Qg("Edge");function im(){var e=Pg.document;return e?e.documentMode:void 0}e:{var sm="",am=(am=Hg(),nm?/rv:([^\);]+)(\)|;)/.exec(am):em?/Edge\/([\d\.]+)/.exec(am):Zg?/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(am):rm?/WebKit\/(\S+)/.exec(am):Xg?/(?:Version)[ \/]?(\S+)/.exec(am):void 0);if(am&&(sm=am?am[1]:""),Zg){am=im();if(null!=am&&am>parseFloat(sm)){Jg=String(am);break e}}Jg=sm}var om=Pg.document&&Zg&&(im()||parseInt(Jg,10))||void 0;function cm(e,t){if(Kg.call(this,e?e.type:""),this.relatedTarget=this.g=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.pointerId=0,this.pointerType="",this.i=null,e){var n=this.type=e.type,r=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:null;if(this.target=e.target||e.srcElement,this.g=t,t=e.relatedTarget){if(nm){e:{try{Yg(t.nodeName);var i=!0;break e}catch(e){}i=!1}i||(t=null)}}else"mouseover"==n?t=e.fromElement:"mouseout"==n&&(t=e.toElement);this.relatedTarget=t,r?(this.clientX=void 0!==r.clientX?r.clientX:r.pageX,this.clientY=void 0!==r.clientY?r.clientY:r.pageY,this.screenX=r.screenX||0,this.screenY=r.screenY||0):(this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0),this.button=e.button,this.key=e.key||"",this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.pointerId=e.pointerId||0,this.pointerType="string"==typeof e.pointerType?e.pointerType:lm[e.pointerType]||"",this.state=e.state,(this.i=e).defaultPrevented&&cm.$.h.call(this)}}qg(cm,Kg);var lm={2:"touch",3:"pen",4:"mouse"};cm.prototype.h=function(){cm.$.h.call(this);var e=this.i;e.preventDefault?e.preventDefault():e.returnValue=!1};var um="closure_listenable_"+(1e6*Math.random()|0),hm=0;function dm(e,t,n,r,i){this.listener=e,this.proxy=null,this.src=t,this.type=n,this.capture=!!r,this.la=i,this.key=++hm,this.fa=this.ia=!1}function pm(e){e.fa=!0,e.listener=null,e.proxy=null,e.src=null,e.la=null}function fm(e,t,n){for(const r in e)t.call(n,e[r],r,e)}function gm(e){const t={};for(const n in e)t[n]=e[n];return t}const mm="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function vm(t){let n,r;for(let i=1;i<arguments.length;i++){for(n in r=arguments[i])t[n]=r[n];for(let e=0;e<mm.length;e++)n=mm[e],Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}}function _m(e){this.src=e,this.g={},this.h=0}function ym(e,t){var n,r,i,s=t.type;s in e.g&&(n=e.g[s],(i=0<=(r=jg(n,t)))&&Array.prototype.splice.call(n,r,1),i&&(pm(t),0==e.g[s].length&&(delete e.g[s],e.h--)))}function wm(e,t,n,r){for(var i=0;i<e.length;++i){var s=e[i];if(!s.fa&&s.listener==t&&s.capture==!!n&&s.la==r)return i}return-1}_m.prototype.add=function(e,t,n,r,i){var s=e.toString();(e=this.g[s])||(e=this.g[s]=[],this.h++);var a=wm(e,t,r,i);return-1<a?(t=e[a],n||(t.ia=!1)):((t=new dm(t,this.src,s,!!r,i)).ia=n,e.push(t)),t};var bm="closure_lm_"+(1e6*Math.random()|0),Im={};function Tm(e,t,n,r,i){if(r&&r.once)return function e(t,n,r,i,s){if(Array.isArray(n)){for(var a=0;a<n.length;a++)e(t,n[a],r,i,s);return null}r=Rm(r);return t&&t[um]?t.P(n,r,xg(i)?!!i.capture:!!i,s):Em(t,n,r,!0,i,s)}(e,t,n,r,i);if(Array.isArray(t)){for(var s=0;s<t.length;s++)Tm(e,t[s],n,r,i);return null}return n=Rm(n),e&&e[um]?e.O(t,n,xg(r)?!!r.capture:!!r,i):Em(e,t,n,!1,r,i)}function Em(e,t,n,r,i,s){if(!t)throw Error("Invalid event type");var a=xg(i)?!!i.capture:!!i,o=Am(e);if(o||(e[bm]=o=new _m(e)),(n=o.add(t,n,r,a,s)).proxy)return n;if(r=function(){const n=km;return function e(t){return n.call(e.src,e.listener,t)}}(),(n.proxy=r).src=e,r.listener=n,e.addEventListener)void 0===(i=!Wg?a:i)&&(i=!1),e.addEventListener(t.toString(),r,i);else if(e.attachEvent)e.attachEvent(Sm(t.toString()),r);else{if(!e.addListener||!e.removeListener)throw Error("addEventListener and attachEvent are unavailable.");e.addListener(r)}return n}function Cm(e){var t,n,r;"number"!=typeof e&&e&&!e.fa&&((t=e.src)&&t[um]?ym(t.i,e):(n=e.type,r=e.proxy,t.removeEventListener?t.removeEventListener(n,r,e.capture):t.detachEvent?t.detachEvent(Sm(n),r):t.addListener&&t.removeListener&&t.removeListener(r),(n=Am(t))?(ym(n,e),0==n.h&&(n.src=null,t[bm]=null)):pm(e)))}function Sm(e){return e in Im?Im[e]:Im[e]="on"+e}function km(e,t){var n,r;return e=!!e.fa||(t=new cm(t,this),n=e.listener,r=e.la||e.src,e.ia&&Cm(e),n.call(r,t))}function Am(e){return(e=e[bm])instanceof _m?e:null}var Nm="__closure_events_fn_"+(1e9*Math.random()>>>0);function Rm(t){return"function"==typeof t?t:(t[Nm]||(t[Nm]=function(e){return t.handleEvent(e)}),t[Nm])}function Pm(){Bg.call(this),this.i=new _m(this),(this.S=this).J=null}function Dm(e,t){var n,r=e.J;if(r)for(n=[];r;r=r.J)n.push(r);if(e=e.S,r=t.type||t,"string"==typeof t?t=new Kg(t,e):t instanceof Kg?t.target=t.target||e:(a=t,vm(t=new Kg(r,e),a)),a=!0,n)for(var i=n.length-1;0<=i;i--)var s=t.g=n[i],a=xm(s,r,!0,t)&&a;if(a=xm(s=t.g=e,r,!0,t)&&a,a=xm(s,r,!1,t)&&a,n)for(i=0;i<n.length;i++)a=xm(s=t.g=n[i],r,!1,t)&&a}function xm(e,t,n,r){if(!(t=e.i.g[String(t)]))return!0;t=t.concat();for(var i=!0,s=0;s<t.length;++s){var a,o,c=t[s];c&&!c.fa&&c.capture==n&&(a=c.listener,o=c.la||c.src,c.ia&&ym(e.i,c),i=!1!==a.call(o,r)&&i)}return i&&!r.defaultPrevented}qg(Pm,Bg),Pm.prototype[um]=!0,Pm.prototype.removeEventListener=function(e,t,n,r){!function e(t,n,r,i,s){if(Array.isArray(n))for(var a=0;a<n.length;a++)e(t,n[a],r,i,s);else i=xg(i)?!!i.capture:!!i,r=Rm(r),t&&t[um]?(t=t.i,(n=String(n).toString())in t.g&&-1<(r=wm(a=t.g[n],r,i,s))&&(pm(a[r]),Array.prototype.splice.call(a,r,1),0==a.length&&(delete t.g[n],t.h--))):(t=t&&Am(t))&&(n=t.g[n.toString()],(r=(t=-1)<(t=n?wm(n,r,i,s):t)?n[t]:null)&&Cm(r))}(this,e,t,n,r)},Pm.prototype.N=function(){if(Pm.$.N.call(this),this.i){var e,t=this.i;for(e in t.g){for(var n=t.g[e],r=0;r<n.length;r++)pm(n[r]);delete t.g[e],t.h--}}this.J=null},Pm.prototype.O=function(e,t,n,r){return this.i.add(String(e),t,!1,n,r)},Pm.prototype.P=function(e,t,n,r){return this.i.add(String(e),t,!0,n,r)};var Om=Pg.JSON.stringify;var Mm=new class{constructor(e,t){this.i=e,this.j=t,this.h=0,this.g=null}get(){let e;return 0<this.h?(this.h--,e=this.g,this.g=e.next,e.next=null):e=this.i(),e}}(()=>new Lm,e=>e.reset());class Lm{constructor(){this.next=this.g=this.h=null}set(e,t){this.h=e,this.g=t,this.next=null}reset(){this.next=this.g=this.h=null}}let Fm,Um=!1,Vm=new class{constructor(){this.h=this.g=null}add(e,t){const n=Mm.get();n.set(e,t),this.h?this.h.next=n:this.g=n,this.h=n}},qm=()=>{const e=Pg.Promise.resolve(void 0);Fm=()=>{e.then(Bm)}};var Bm=()=>{for(var e;e=function(){var e=Vm;let t=null;return e.g&&(t=e.g,e.g=e.g.next,e.g||(e.h=null),t.next=null),t}();){try{e.h.call(e.g)}catch(e){!function(e){Pg.setTimeout(()=>{throw e},0)}(e)}var t=Mm;t.j(e),t.h<100&&(t.h++,e.next=t.g,t.g=e)}Um=!1};function jm(e,t){Pm.call(this),this.h=e||1,this.g=t||Pg,this.j=Ug(this.qb,this),this.l=Date.now()}function zm(e){e.ga=!1,e.T&&(e.g.clearTimeout(e.T),e.T=null)}function $m(e,t,n){if("function"==typeof e)n&&(e=Ug(e,n));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=Ug(e.handleEvent,e)}return 2147483647<Number(t)?-1:Pg.setTimeout(e,t||0)}qg(jm,Pm),(Tt=jm.prototype).ga=!1,Tt.T=null,Tt.qb=function(){var e;this.ga&&(0<(e=Date.now()-this.l)&&e<.8*this.h?this.T=this.g.setTimeout(this.j,this.h-e):(this.T&&(this.g.clearTimeout(this.T),this.T=null),Dm(this,"tick"),this.ga&&(zm(this),this.start())))},Tt.start=function(){this.ga=!0,this.T||(this.T=this.g.setTimeout(this.j,this.h),this.l=Date.now())},Tt.N=function(){jm.$.N.call(this),zm(this),delete this.g};class Km extends Bg{constructor(e,t){super(),this.m=e,this.j=t,this.h=null,this.i=!1,this.g=null}l(e){this.h=arguments,this.g?this.i=!0:function e(t){t.g=$m(()=>{t.g=null,t.i&&(t.i=!1,e(t))},t.j);var n=t.h;t.h=null,t.m.apply(null,n)}(this)}N(){super.N(),this.g&&(Pg.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function Wm(e){Bg.call(this),this.h=e,this.g={}}qg(Wm,Bg);var Gm=[];function Hm(e,t,n,r){Array.isArray(n)||(n&&(Gm[0]=n.toString()),n=Gm);for(var i=0;i<n.length;i++){var s=Tm(t,n[i],r||e.handleEvent,!1,e.h||e);if(!s)break;e.g[s.key]=s}}function Qm(e){fm(e.g,function(e,t){this.g.hasOwnProperty(t)&&Cm(e)},e),e.g={}}function Ym(){this.g=!0}function Jm(e,t,n,r){e.info(function(){return"XMLHTTP TEXT ("+t+"): "+function(e,t){if(!e.g)return t;if(!t)return null;try{var n=JSON.parse(t);if(n)for(e=0;e<n.length;e++)if(Array.isArray(n[e])){var r=n[e];if(!(r.length<2)){var i=r[1];if(Array.isArray(i)&&!(i.length<1)){var s=i[0];if("noop"!=s&&"stop"!=s&&"close"!=s)for(var a=1;a<i.length;a++)i[a]=""}}}return Om(n)}catch(e){return t}}(e,n)+(r?" "+r:"")})}Wm.prototype.N=function(){Wm.$.N.call(this),Qm(this)},Wm.prototype.handleEvent=function(){throw Error("EventHandler.handleEvent not implemented")},Ym.prototype.Ea=function(){this.g=!1},Ym.prototype.info=function(){};var Xm={},Zm=null;function ev(){return Zm=Zm||new Pm}function tv(e){Kg.call(this,Xm.Ta,e)}function nv(){var e=ev();Dm(e,new tv(e))}function rv(e,t){Kg.call(this,Xm.STAT_EVENT,e),this.stat=t}function iv(e){var t=ev();Dm(t,new rv(t,e))}function sv(e,t){Kg.call(this,Xm.Ua,e),this.size=t}function av(e,t){if("function"!=typeof e)throw Error("Fn must not be null and must be a function");return Pg.setTimeout(function(){e()},t)}Xm.Ta="serverreachability",qg(tv,Kg),Xm.STAT_EVENT="statevent",qg(rv,Kg),Xm.Ua="timingevent",qg(sv,Kg);Et={NO_ERROR:0,rb:1,Eb:2,Db:3,yb:4,Cb:5,Fb:6,Qa:7,TIMEOUT:8,Ib:9},cl={wb:"complete",Sb:"success",Ra:"error",Qa:"abort",Kb:"ready",Lb:"readystatechange",TIMEOUT:"timeout",Gb:"incrementaldata",Jb:"progress",zb:"downloadprogress",$b:"uploadprogress"};function ov(){}function cv(e){return e.h||(e.h=e.i())}function lv(){}ov.prototype.h=null;wt={OPEN:"a",vb:"b",Ra:"c",Hb:"d"};function uv(){Kg.call(this,"d")}function hv(){Kg.call(this,"c")}function dv(){}function pv(e,t,n,r){this.l=e,this.j=t,this.m=n,this.W=r||1,this.U=new Wm(this),this.P=mv,this.V=new jm(e=tm?125:void 0),this.I=null,this.i=!1,this.u=this.B=this.A=this.L=this.G=this.Y=this.C=null,this.F=[],this.g=null,this.o=0,this.s=this.v=null,this.ca=-1,this.J=!1,this.O=0,this.M=null,this.ba=this.K=this.aa=this.S=!1,this.h=new fv}function fv(){this.i=null,this.g="",this.h=!1}qg(uv,Kg),qg(hv,Kg),qg(dv,ov),dv.prototype.g=function(){return new XMLHttpRequest},dv.prototype.i=function(){return{}};var gv=new dv,mv=45e3,vv={},_v={};function yv(e,t,n){e.L=1,e.A=Fv(Dv(t)),e.u=n,e.S=!0,wv(e,null)}function wv(e,t){e.G=Date.now(),Tv(e),e.B=Dv(e.A);var a,o,c,l,u,h,n=e.B,r=e.W;Array.isArray(r)||(r=[String(r)]),Yv(n.i,"t",r),e.o=0,n=e.l.J,e.h=new fv,e.g=Q_(e.l,n?t:null,!e.u),0<e.O&&(e.M=new Km(Ug(e.Pa,e,e.g),e.O)),Hm(e.U,e.g,"readystatechange",e.nb),t=e.I?gm(e.I):{},e.u?(e.v||(e.v="POST"),t["Content-Type"]="application/x-www-form-urlencoded",e.g.ha(e.B,e.v,e.u,t)):(e.v="GET",e.g.ha(e.B,e.v,null,t)),nv(),a=e.j,o=e.v,c=e.B,l=e.m,u=e.W,h=e.u,a.info(function(){if(a.g)if(h)for(var e="",t=h.split("&"),n=0;n<t.length;n++){var r,i,s=t[n].split("=");1<s.length&&(r=s[0],s=s[1],e=2<=(i=r.split("_")).length&&"type"==i[1]?e+(r+"=")+s+"&":e+(r+"=redacted&"))}else e=null;else e=h;return"XMLHTTP REQ ("+l+") [attempt "+u+"]: "+o+"\n"+c+"\n"+e})}function bv(e){return e.g&&("GET"==e.v&&2!=e.L&&e.l.Ha)}function Iv(e,t,n){let r=!0,i;for(;!e.J&&e.o<n.length;){if(a=n,c=o=void 0,o=(s=e).o,(i=-1==(c=a.indexOf("\n",o))?_v:(o=Number(a.substring(o,c)),isNaN(o)?vv:(c+=1)+o>a.length?_v:(a=a.slice(c,c+o),s.o=c+o,a)))==_v){4==t&&(e.s=4,iv(14),r=!1),Jm(e.j,e.m,null,"[Incomplete Response]");break}if(i==vv){e.s=4,iv(15),Jm(e.j,e.m,n,"[Invalid Chunk]"),r=!1;break}Jm(e.j,e.m,i,null),Av(e,i)}var s,a,o,c;bv(e)&&0!=e.o&&(e.h.g=e.h.g.slice(e.o),e.o=0),4!=t||0!=n.length||e.h.h||(e.s=1,iv(16),r=!1),e.i=e.i&&r,r?0<n.length&&!e.ba&&(e.ba=!0,(t=e.l).g==e&&t.ca&&!t.M&&(t.l.info("Great, no buffering proxy detected. Bytes received: "+n.length),B_(t),t.M=!0,iv(11))):(Jm(e.j,e.m,n,"[Invalid Chunked Response]"),kv(e),Sv(e))}function Tv(e){e.Y=Date.now()+e.P,Ev(e,e.P)}function Ev(e,t){if(null!=e.C)throw Error("WatchDog timer not null");e.C=av(Ug(e.lb,e),t)}function Cv(e){e.C&&(Pg.clearTimeout(e.C),e.C=null)}function Sv(e){0==e.l.H||e.J||$_(e.l,e)}function kv(e){Cv(e);var t=e.M;t&&"function"==typeof t.sa&&t.sa(),e.M=null,zm(e.V),Qm(e.U),e.g&&(t=e.g,e.g=null,t.abort(),t.sa())}function Av(e,t){try{var n=e.l;if(0!=n.H&&(n.g==e||n_(n.i,e)))if(!e.K&&n_(n.i,e)&&3==n.H){try{var r=n.Ja.g.parse(t)}catch(e){r=null}if(Array.isArray(r)&&3==r.length){var i=r;if(0==i[0]){e:if(!n.u){if(n.g){if(!(n.g.G+3e3<e.G))break e;z_(n),x_(n)}q_(n),iv(18)}}else n.Fa=i[1],0<n.Fa-n.V&&i[2]<37500&&n.G&&0==n.A&&!n.v&&(n.v=av(Ug(n.ib,n),6e3));if(t_(n.i)<=1&&n.oa){try{n.oa()}catch(e){}n.oa=void 0}}else W_(n,11)}else if(!e.K&&n.g!=e||z_(n),!Gg(t))for(i=n.Ja.g.parse(t),t=0;t<i.length;t++){var s=i[t];if(n.V=s[0],s=s[1],2==n.H)if("c"==s[0]){n.K=s[1],n.pa=s[2];var a=s[3];null!=a&&(n.ra=a,n.l.info("VER="+n.ra));var o=s[4];null!=o&&(n.Ga=o,n.l.info("SVER="+n.Ga));var c,l,u=s[5];null!=u&&"number"==typeof u&&0<u&&(r=1.5*u,n.L=r,n.l.info("backChannelRequestTimeoutMs_="+r)),r=n;const f=e.g;if(f){const g=f.g?f.g.getResponseHeader("X-Client-Wire-Protocol"):null;g&&((c=r.i).g||-1==g.indexOf("spdy")&&-1==g.indexOf("quic")&&-1==g.indexOf("h2")||(c.j=c.l,c.g=new Set,c.h&&(r_(c,c.h),c.h=null))),!r.F||(l=f.g?f.g.getResponseHeader("X-HTTP-Session-Id"):null)&&(r.Da=l,Lv(r.I,r.F,l))}n.H=3,n.h&&n.h.Ba(),n.ca&&(n.S=Date.now()-e.G,n.l.info("Handshake RTT: "+n.S+"ms"));var h,d,p=e;(r=n).wa=H_(r,r.J?r.pa:null,r.Y),p.K?(i_(r.i,p),h=p,(d=r.L)&&h.setTimeout(d),h.C&&(Cv(h),Tv(h)),r.g=p):V_(r),0<n.j.length&&M_(n)}else"stop"!=s[0]&&"close"!=s[0]||W_(n,7);else 3==n.H&&("stop"==s[0]||"close"==s[0]?"stop"==s[0]?W_(n,7):D_(n):"noop"!=s[0]&&n.h&&n.h.Aa(s),n.A=0)}nv()}catch(e){}}function Nv(e,t){if(e.forEach&&"function"==typeof e.forEach)e.forEach(t,void 0);else if(Dg(e)||"string"==typeof e)Array.prototype.forEach.call(e,t,void 0);else for(var n=function(e){if(e.ta&&"function"==typeof e.ta)return e.ta();if(!e.Z||"function"!=typeof e.Z){if("undefined"!=typeof Map&&e instanceof Map)return Array.from(e.keys());if(!("undefined"!=typeof Set&&e instanceof Set)){if(Dg(e)||"string"==typeof e){var t=[];e=e.length;for(var n=0;n<e;n++)t.push(n);return t}t=[],n=0;for(const r in e)t[n++]=r;return t}}}(e),r=function(e){if(e.Z&&"function"==typeof e.Z)return e.Z();if("undefined"!=typeof Map&&e instanceof Map||"undefined"!=typeof Set&&e instanceof Set)return Array.from(e.values());if("string"==typeof e)return e.split("");if(Dg(e)){for(var t=[],n=e.length,r=0;r<n;r++)t.push(e[r]);return t}for(r in t=[],n=0,e)t[n++]=e[r];return t}(e),i=r.length,s=0;s<i;s++)t.call(void 0,r[s],n&&n[s],e)}(Tt=pv.prototype).setTimeout=function(e){this.P=e},Tt.nb=function(e){e=e.target;const t=this.M;t&&3==S_(e)?t.l():this.Pa(e)},Tt.Pa=function(e){try{if(e==this.g)e:{var t=S_(this.g),n=this.g.Ia();this.g.da();if(!(t<3)&&(3!=t||tm||this.g&&(this.h.h||this.g.ja()||k_(this.g)))){this.J||4!=t||7==n||nv(),Cv(this);var r=this.g.da();this.ca=r;t:if(bv(this)){var i=k_(this.g);e="";var s=i.length,a=4==S_(this.g);if(!this.h.i){if("undefined"==typeof TextDecoder){kv(this),Sv(this);var o="";break t}this.h.i=new Pg.TextDecoder}for(n=0;n<s;n++)this.h.h=!0,e+=this.h.i.decode(i[n],{stream:a&&n==s-1});i.length=0,this.h.g+=e,this.o=0,o=this.h.g}else o=this.g.ja();if(this.i=200==r,h=this.j,d=this.v,p=this.B,f=this.m,g=this.W,m=t,v=r,h.info(function(){return"XMLHTTP RESP ("+f+") [ attempt "+g+"]: "+d+"\n"+p+"\n"+m+" "+v}),this.i){if(this.aa&&!this.K){t:{if(this.g){var c,l=this.g;if((c=l.g?l.g.getResponseHeader("X-HTTP-Initial-Response"):null)&&!Gg(c)){var u=c;break t}}u=null}if(!(r=u)){this.i=!1,this.s=3,iv(12),kv(this),Sv(this);break e}Jm(this.j,this.m,r,"Initial handshake response via X-HTTP-Initial-Response"),this.K=!0,Av(this,r)}this.S?(Iv(this,t,o),tm&&this.i&&3==t&&(Hm(this.U,this.V,"tick",this.mb),this.V.start())):(Jm(this.j,this.m,o,null),Av(this,o)),4==t&&kv(this),this.i&&!this.J&&(4==t?$_(this.l,this):(this.i=!1,Tv(this)))}else(function(e){const t={};e=(e.g&&2<=S_(e)&&e.g.getAllResponseHeaders()||"").split("\r\n");for(let i=0;i<e.length;i++)if(!Gg(e[i])){var n=function(e){var t=1;e=e.split(":");const n=[];for(;0<t&&e.length;)n.push(e.shift()),t--;return e.length&&n.push(e.join(":")),n}(e[i]),r=n[0];if("string"==typeof(n=n[1])){n=n.trim();const s=t[r]||[];t[r]=s,s.push(n)}}!function(e,t){for(const n in e)t.call(void 0,e[n],n,e)}(t,function(e){return e.join(", ")})})(this.g),400==r&&0<o.indexOf("Unknown SID")?(this.s=3,iv(12)):(this.s=0,iv(13)),kv(this),Sv(this)}}}catch(e){}var h,d,p,f,g,m,v},Tt.mb=function(){var e,t;this.g&&(e=S_(this.g),t=this.g.ja(),this.o<t.length&&(Cv(this),Iv(this,e,t),this.i&&4!=e&&Tv(this)))},Tt.cancel=function(){this.J=!0,kv(this)},Tt.lb=function(){this.C=null;var e,t,n=Date.now();0<=n-this.Y?(e=this.j,t=this.B,e.info(function(){return"TIMEOUT: "+t}),2!=this.L&&(nv(),iv(17)),kv(this),this.s=2,Sv(this)):Ev(this,this.Y-n)};var Rv=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$");function Pv(e){var t,n;this.g=this.s=this.j="",this.m=null,this.o=this.l="",this.h=!1,e instanceof Pv?(this.h=e.h,xv(this,e.j),this.s=e.s,this.g=e.g,Ov(this,e.m),this.l=e.l,t=e.i,(n=new Wv).i=t.i,t.g&&(n.g=new Map(t.g),n.h=t.h),Mv(this,n),this.o=e.o):e&&(t=String(e).match(Rv))?(this.h=!1,xv(this,t[1]||"",!0),this.s=Uv(t[2]||""),this.g=Uv(t[3]||"",!0),Ov(this,t[4]),this.l=Uv(t[5]||"",!0),Mv(this,t[6]||"",!0),this.o=Uv(t[7]||"")):(this.h=!1,this.i=new Wv(null,this.h))}function Dv(e){return new Pv(e)}function xv(e,t,n){e.j=n?Uv(t,!0):t,e.j&&(e.j=e.j.replace(/:$/,""))}function Ov(e,t){if(t){if(t=Number(t),isNaN(t)||t<0)throw Error("Bad port number "+t);e.m=t}else e.m=null}function Mv(e,t,n){var r,i;t instanceof Wv?(e.i=t,r=e.i,(i=e.h)&&!r.j&&(Gv(r),r.i=null,r.g.forEach(function(e,t){var n=t.toLowerCase();t!=n&&(Hv(this,t),Yv(this,n,e))},r)),r.j=i):(n||(t=Vv(t,$v)),e.i=new Wv(t,e.h))}function Lv(e,t,n){e.i.set(t,n)}function Fv(e){return Lv(e,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),e}function Uv(e,t){return e?t?decodeURI(e.replace(/%25/g,"%2525")):decodeURIComponent(e):""}function Vv(e,t,n){return"string"==typeof e?(e=encodeURI(e).replace(t,qv),e=n?e.replace(/%25([0-9a-fA-F]{2})/g,"%$1"):e):null}function qv(e){return"%"+((e=e.charCodeAt(0))>>4&15).toString(16)+(15&e).toString(16)}Pv.prototype.toString=function(){var e=[],t=this.j;t&&e.push(Vv(t,Bv,!0),":");var n=this.g;return!n&&"file"!=t||(e.push("//"),(t=this.s)&&e.push(Vv(t,Bv,!0),"@"),e.push(encodeURIComponent(String(n)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(n=this.m)&&e.push(":",String(n))),(n=this.l)&&(this.g&&"/"!=n.charAt(0)&&e.push("/"),e.push(Vv(n,"/"==n.charAt(0)?zv:jv,!0))),(n=this.i.toString())&&e.push("?",n),(n=this.o)&&e.push("#",Vv(n,Kv)),e.join("")};var Bv=/[#\/\?@]/g,jv=/[#\?:]/g,zv=/[#\?]/g,$v=/[#\?@]/g,Kv=/#/g;function Wv(e,t){this.h=this.g=null,this.i=e||null,this.j=!!t}function Gv(n){n.g||(n.g=new Map,n.h=0,n.i&&function(e,t){if(e){e=e.split("&");for(var n=0;n<e.length;n++){var r,i=e[n].indexOf("="),s=null;0<=i?(r=e[n].substring(0,i),s=e[n].substring(i+1)):r=e[n],t(r,s?decodeURIComponent(s.replace(/\+/g," ")):"")}}}(n.i,function(e,t){n.add(decodeURIComponent(e.replace(/\+/g," ")),t)}))}function Hv(e,t){Gv(e),t=Jv(e,t),e.g.has(t)&&(e.i=null,e.h-=e.g.get(t).length,e.g.delete(t))}function Qv(e,t){return Gv(e),t=Jv(e,t),e.g.has(t)}function Yv(e,t,n){Hv(e,t),0<n.length&&(e.i=null,e.g.set(Jv(e,t),zg(n)),e.h+=n.length)}function Jv(e,t){return t=String(t),t=e.j?t.toLowerCase():t}(Tt=Wv.prototype).add=function(e,t){Gv(this),this.i=null,e=Jv(this,e);var n=this.g.get(e);return n||this.g.set(e,n=[]),n.push(t),this.h+=1,this},Tt.forEach=function(n,r){Gv(this),this.g.forEach(function(e,t){e.forEach(function(e){n.call(r,e,t,this)},this)},this)},Tt.ta=function(){Gv(this);const t=Array.from(this.g.values()),n=Array.from(this.g.keys()),r=[];for(let s=0;s<n.length;s++){var i=t[s];for(let e=0;e<i.length;e++)r.push(n[s])}return r},Tt.Z=function(t){Gv(this);let n=[];if("string"==typeof t)Qv(this,t)&&(n=n.concat(this.g.get(Jv(this,t))));else{t=Array.from(this.g.values());for(let e=0;e<t.length;e++)n=n.concat(t[e])}return n},Tt.set=function(e,t){return Gv(this),this.i=null,Qv(this,e=Jv(this,e))&&(this.h-=this.g.get(e).length),this.g.set(e,[t]),this.h+=1,this},Tt.get=function(e,t){return e&&0<(e=this.Z(e)).length?String(e[0]):t},Tt.toString=function(){if(this.i)return this.i;if(!this.g)return"";const e=[],t=Array.from(this.g.keys());for(var n=0;n<t.length;n++)for(var r=t[n],i=encodeURIComponent(String(r)),s=this.Z(r),r=0;r<s.length;r++){var a=i;""!==s[r]&&(a+="="+encodeURIComponent(String(s[r]))),e.push(a)}return this.i=e.join("&")};var Xv=class{constructor(e,t){this.g=e,this.map=t}};function Zv(e){this.l=e||10,e=Pg.PerformanceNavigationTiming?0<(e=Pg.performance.getEntriesByType("navigation")).length&&("hq"==e[0].nextHopProtocol||"h2"==e[0].nextHopProtocol):!!(Pg.g&&Pg.g.Ka&&Pg.g.Ka()&&Pg.g.Ka().dc),this.j=e?this.l:1,this.g=null,1<this.j&&(this.g=new Set),this.h=null,this.i=[]}function e_(e){return e.h||e.g&&e.g.size>=e.j}function t_(e){return e.h?1:e.g?e.g.size:0}function n_(e,t){return e.h?e.h==t:e.g&&e.g.has(t)}function r_(e,t){e.g?e.g.add(t):e.h=t}function i_(e,t){e.h&&e.h==t?e.h=null:e.g&&e.g.has(t)&&e.g.delete(t)}function s_(t){if(null!=t.h)return t.i.concat(t.h.F);if(null==t.g||0===t.g.size)return zg(t.i);{let e=t.i;for(const n of t.g.values())e=e.concat(n.F);return e}}Zv.prototype.cancel=function(){if(this.i=s_(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&0!==this.g.size){for(const e of this.g.values())e.cancel();this.g.clear()}};var a_,o_=class{stringify(e){return Pg.JSON.stringify(e,void 0)}parse(e){return Pg.JSON.parse(e,void 0)}};function c_(){this.g=new o_}function l_(e,t,n,r,i){try{t.onload=null,t.onerror=null,t.onabort=null,t.ontimeout=null,i(r)}catch(e){}}function u_(e){this.l=e.ec||null,this.j=e.ob||!1}function h_(e,t){Pm.call(this),this.F=e,this.u=t,this.m=void 0,this.readyState=d_,this.status=0,this.responseType=this.responseText=this.response=this.statusText="",this.onreadystatechange=null,this.v=new Headers,this.h=null,this.C="GET",this.B="",this.g=!1,this.A=this.j=this.l=null}qg(u_,ov),u_.prototype.g=function(){return new h_(this.l,this.j)},u_.prototype.i=(a_={},function(){return a_}),qg(h_,Pm);var d_=0;function p_(e){e.j.read().then(e.Xa.bind(e)).catch(e.ka.bind(e))}function f_(e){e.readyState=4,e.l=null,e.j=null,e.A=null,g_(e)}function g_(e){e.onreadystatechange&&e.onreadystatechange.call(e)}(Tt=h_.prototype).open=function(e,t){if(this.readyState!=d_)throw this.abort(),Error("Error reopening a connection");this.C=e,this.B=t,this.readyState=1,g_(this)},Tt.send=function(e){if(1!=this.readyState)throw this.abort(),Error("need to call open() first. ");this.g=!0;const t={headers:this.v,method:this.C,credentials:this.m,cache:void 0};e&&(t.body=e),(this.F||Pg).fetch(new Request(this.B,t)).then(this.$a.bind(this),this.ka.bind(this))},Tt.abort=function(){this.response=this.responseText="",this.v=new Headers,this.status=0,this.j&&this.j.cancel("Request was aborted.").catch(()=>{}),1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,f_(this)),this.readyState=d_},Tt.$a=function(e){if(this.g&&(this.l=e,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=e.headers,this.readyState=2,g_(this)),this.g&&(this.readyState=3,g_(this),this.g)))if("arraybuffer"===this.responseType)e.arrayBuffer().then(this.Ya.bind(this),this.ka.bind(this));else if(void 0!==Pg.ReadableStream&&"body"in e){if(this.j=e.body.getReader(),this.u){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.A=new TextDecoder;p_(this)}else e.text().then(this.Za.bind(this),this.ka.bind(this))},Tt.Xa=function(e){var t;this.g&&(this.u&&e.value?this.response.push(e.value):this.u||(t=e.value||new Uint8Array(0),(t=this.A.decode(t,{stream:!e.done}))&&(this.response=this.responseText+=t)),(e.done?f_:g_)(this),3==this.readyState&&p_(this))},Tt.Za=function(e){this.g&&(this.response=this.responseText=e,f_(this))},Tt.Ya=function(e){this.g&&(this.response=e,f_(this))},Tt.ka=function(){this.g&&f_(this)},Tt.setRequestHeader=function(e,t){this.v.append(e,t)},Tt.getResponseHeader=function(e){return this.h&&this.h.get(e.toLowerCase())||""},Tt.getAllResponseHeaders=function(){if(!this.h)return"";const e=[],t=this.h.entries();for(var n=t.next();!n.done;)n=n.value,e.push(n[0]+": "+n[1]),n=t.next();return e.join("\r\n")},Object.defineProperty(h_.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(e){this.m=e?"include":"same-origin"}});var m_=Pg.JSON.parse;function v_(e){Pm.call(this),this.headers=new Map,this.u=e||null,this.h=!1,this.C=this.g=null,this.I="",this.m=0,this.j="",this.l=this.G=this.v=this.F=!1,this.B=0,this.A=null,this.K=__,this.L=this.M=!1}qg(v_,Pm);var __="",y_=/^https?$/i,w_=["POST","PUT"];function b_(e,t){e.h=!1,e.g&&(e.l=!0,e.g.abort(),e.l=!1),e.j=t,e.m=5,I_(e),E_(e)}function I_(e){e.F||(e.F=!0,Dm(e,"complete"),Dm(e,"error"))}function T_(e){if(e.h&&void 0!==Rg&&(!e.C[1]||4!=S_(e)||2!=e.da()))if(e.v&&4==S_(e))$m(e.La,0,e);else if(Dm(e,"readystatechange"),4==S_(e)){e.h=!1;try{var t,n,r,i=e.da();e:switch(i){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var s=!0;break e;default:s=!1}if((t=s)||((n=0===i)&&(!(r=String(e.I).match(Rv)[1]||null)&&Pg.self&&Pg.self.location&&(r=Pg.self.location.protocol.slice(0,-1)),n=!y_.test(r?r.toLowerCase():"")),t=n),t)Dm(e,"complete"),Dm(e,"success");else{e.m=6;try{var a=2<S_(e)?e.g.statusText:""}catch(e){a=""}e.j=a+" ["+e.da()+"]",I_(e)}}finally{E_(e)}}}function E_(e,t){if(e.g){C_(e);const n=e.g,r=e.C[0]?()=>{}:null;e.g=null,e.C=null,t||Dm(e,"ready");try{n.onreadystatechange=r}catch(e){}}}function C_(e){e.g&&e.L&&(e.g.ontimeout=null),e.A&&(Pg.clearTimeout(e.A),e.A=null)}function S_(e){return e.g?e.g.readyState:0}function k_(e){try{if(!e.g)return null;if("response"in e.g)return e.g.response;switch(e.K){case __:case"text":return e.g.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in e.g)return e.g.mozResponseArrayBuffer}return null}catch(e){return null}}function A_(e){let n="";return fm(e,function(e,t){n+=t,n+=":",n+=e,n+="\r\n"}),n}function N_(e,t,n){e:{for(r in n){var r=!1;break e}r=!0}r||(n=A_(n),"string"==typeof e?null!=n&&encodeURIComponent(String(n)):Lv(e,t,n))}function R_(e,t,n){return n&&n.internalChannelParams&&n.internalChannelParams[e]||t}function P_(e){this.Ga=0,this.j=[],this.l=new Ym,this.pa=this.wa=this.I=this.Y=this.g=this.Da=this.F=this.na=this.o=this.U=this.s=null,this.fb=this.W=0,this.cb=R_("failFast",!1,e),this.G=this.v=this.u=this.m=this.h=null,this.aa=!0,this.Fa=this.V=-1,this.ba=this.A=this.C=0,this.ab=R_("baseRetryDelayMs",5e3,e),this.hb=R_("retryDelaySeedMs",1e4,e),this.eb=R_("forwardChannelMaxRetries",2,e),this.xa=R_("forwardChannelRequestTimeoutMs",2e4,e),this.va=e&&e.xmlHttpFactory||void 0,this.Ha=e&&e.useFetchStreams||!1,this.L=void 0,this.J=e&&e.supportsCrossDomainXhr||!1,this.K="",this.i=new Zv(e&&e.concurrentRequestLimit),this.Ja=new c_,this.P=e&&e.fastHandshake||!1,this.O=e&&e.encodeInitMessageHeaders||!1,this.P&&this.O&&(this.O=!1),this.bb=e&&e.bc||!1,e&&e.Ea&&this.l.Ea(),e&&e.forceLongPolling&&(this.aa=!1),this.ca=!this.P&&this.aa&&e&&e.detectBufferingProxy||!1,this.qa=void 0,e&&e.longPollingTimeout&&0<e.longPollingTimeout&&(this.qa=e.longPollingTimeout),this.oa=void 0,this.S=0,this.M=!1,this.ma=this.B=null}function D_(e){if(O_(e),3==e.H){var t=e.W++,n=Dv(e.I);if(Lv(n,"SID",e.K),Lv(n,"RID",t),Lv(n,"TYPE","terminate"),F_(e,n),(t=new pv(e,e.l,t)).L=2,t.A=Fv(Dv(n)),n=!1,Pg.navigator&&Pg.navigator.sendBeacon)try{n=Pg.navigator.sendBeacon(t.A.toString(),"")}catch(e){}!n&&Pg.Image&&((new Image).src=t.A,n=!0),n||(t.g=Q_(t.l,null),t.g.ha(t.A)),t.G=Date.now(),Tv(t)}G_(e)}function x_(e){e.g&&(B_(e),e.g.cancel(),e.g=null)}function O_(e){x_(e),e.u&&(Pg.clearTimeout(e.u),e.u=null),z_(e),e.i.cancel(),e.m&&("number"==typeof e.m&&Pg.clearTimeout(e.m),e.m=null)}function M_(e){var t;e_(e.i)||e.m||(e.m=!0,t=e.Na,Fm||qm(),Um||(Fm(),Um=!0),Vm.add(t,e),e.C=0)}function L_(e,t){var n=t?t.m:e.W++,r=Dv(e.I);Lv(r,"SID",e.K),Lv(r,"RID",n),Lv(r,"AID",e.V),F_(e,r),e.o&&e.s&&N_(r,e.o,e.s),n=new pv(e,e.l,n,e.C+1),null===e.o&&(n.I=e.s),t&&(e.j=t.F.concat(e.j)),t=U_(e,n,1e3),n.setTimeout(Math.round(.5*e.xa)+Math.round(.5*e.xa*Math.random())),r_(e.i,n),yv(n,r,t)}function F_(e,n){e.na&&fm(e.na,function(e,t){Lv(n,t,e)}),e.h&&Nv({},function(e,t){Lv(n,t,e)})}function U_(e,t,r){r=Math.min(e.j.length,r);var i=e.h?Ug(e.h.Va,e.h,e):null;e:{var s=e.j;let n=-1;for(;;){const c=["count="+r];-1==n?0<r?(n=s[0].g,c.push("ofs="+n)):n=0:c.push("ofs="+n);let e=!0;for(let t=0;t<r;t++){var a=s[t].g,o=s[t].map;if((a-=n)<0)n=Math.max(0,s[t].g-100),e=!1;else try{!function(e,r,t){const i=t||"";try{Nv(e,function(e,t){let n=e;xg(e)&&(n=Om(e)),r.push(i+t+"="+encodeURIComponent(n))})}catch(e){throw r.push(i+"type="+encodeURIComponent("_badmap")),e}}(o,c,"req"+a+"_")}catch(e){i&&i(o)}}if(e){i=c.join("&");break e}}}return e=e.j.splice(0,r),t.F=e,i}function V_(e){var t;e.g||e.u||(e.ba=1,t=e.Ma,Fm||qm(),Um||(Fm(),Um=!0),Vm.add(t,e),e.A=0)}function q_(e){return!(e.g||e.u||3<=e.A)&&(e.ba++,e.u=av(Ug(e.Ma,e),K_(e,e.A)),e.A++,1)}function B_(e){null!=e.B&&(Pg.clearTimeout(e.B),e.B=null)}function j_(e){e.g=new pv(e,e.l,"rpc",e.ba),null===e.o&&(e.g.I=e.s),e.g.O=0;var t=Dv(e.wa);Lv(t,"RID","rpc"),Lv(t,"SID",e.K),Lv(t,"AID",e.V),Lv(t,"CI",e.G?"0":"1"),!e.G&&e.qa&&Lv(t,"TO",e.qa),Lv(t,"TYPE","xmlhttp"),F_(e,t),e.o&&e.s&&N_(t,e.o,e.s),e.L&&e.g.setTimeout(e.L);var n=e.g;e=e.pa,n.L=1,n.A=Fv(Dv(t)),n.u=null,n.S=!0,wv(n,e)}function z_(e){null!=e.v&&(Pg.clearTimeout(e.v),e.v=null)}function $_(e,t){var n,r,i,s=null;if(e.g==t){z_(e),B_(e),e.g=null;var a=2}else{if(!n_(e.i,t))return;s=t.F,i_(e.i,t),a=1}if(0!=e.H)if(t.i)1==a?(s=t.u?t.u.length:0,t=Date.now()-t.G,n=e.C,Dm(a=ev(),new sv(a,s)),M_(e)):V_(e);else if(3==(n=t.s)||0==n&&0<t.ca||(1!=a||(i=t,t_((r=e).i)>=r.i.j-(r.m?1:0)||(r.m?(r.j=i.F.concat(r.j),0):1==r.H||2==r.H||r.C>=(r.cb?0:r.eb)||(r.m=av(Ug(r.Na,r,i),K_(r,r.C)),r.C++,0))))&&(2!=a||!q_(e)))switch(s&&0<s.length&&(t=e.i,t.i=t.i.concat(s)),n){case 1:W_(e,5);break;case 4:W_(e,10);break;case 3:W_(e,6);break;default:W_(e,2)}}function K_(e,t){let n=e.ab+Math.floor(Math.random()*e.hb);return e.isActive()||(n*=2),n*t}function W_(e,t){var n,r;e.l.info("Error code "+t),2==t?(n=null,e.h&&(n=null),r=Ug(e.pb,e),n||(n=new Pv("//www.google.com/images/cleardot.gif"),Pg.location&&"http"==Pg.location.protocol||xv(n,"https"),Fv(n)),function(e,t){var n=new Ym;if(Pg.Image){const r=new Image;r.onload=Vg(l_,n,r,"TestLoadImage: loaded",!0,t),r.onerror=Vg(l_,n,r,"TestLoadImage: error",!1,t),r.onabort=Vg(l_,n,r,"TestLoadImage: abort",!1,t),r.ontimeout=Vg(l_,n,r,"TestLoadImage: timeout",!1,t),Pg.setTimeout(function(){r.ontimeout&&r.ontimeout()},1e4),r.src=e}else t(!1)}(n.toString(),r)):iv(2),e.H=0,e.h&&e.h.za(t),G_(e),O_(e)}function G_(e){var t;e.H=0,e.ma=[],e.h&&(0==(t=s_(e.i)).length&&0==e.j.length||($g(e.ma,t),$g(e.ma,e.j),e.i.i.length=0,zg(e.j),e.j.length=0),e.h.ya())}function H_(e,t,n){var r,i,s=n instanceof Pv?Dv(n):new Pv(n);return""!=s.g?(t&&(s.g=t+"."+s.g),Ov(s,s.m)):(s=(r=Pg.location).protocol,t=t?t+"."+r.hostname:r.hostname,r=+r.port,i=new Pv(null),s&&xv(i,s),t&&(i.g=t),r&&Ov(i,r),n&&(i.l=n),s=i),n=e.F,t=e.Da,n&&t&&Lv(s,n,t),Lv(s,"VER",e.ra),F_(e,s),s}function Q_(e,t,n){if(t&&!e.J)throw Error("Can't create secondary domain capable XhrIo object.");return(t=e.Ha&&!e.va?new v_(new u_({ob:n})):new v_(e.va)).Oa(e.J),t}function Y_(){}function J_(){if(Zg&&!(10<=Number(om)))throw Error("Environmental error: no available transport.")}function X_(e,t){Pm.call(this),this.g=new P_(t),this.l=e,this.h=t&&t.messageUrlParams||null,e=t&&t.messageHeaders||null,t&&t.clientProtocolHeaderRequired&&(e?e["X-Client-Protocol"]="webchannel":e={"X-Client-Protocol":"webchannel"}),this.g.s=e,e=t&&t.initMessageHeaders||null,t&&t.messageContentType&&(e?e["X-WebChannel-Content-Type"]=t.messageContentType:e={"X-WebChannel-Content-Type":t.messageContentType}),t&&t.Ca&&(e?e["X-WebChannel-Client-Profile"]=t.Ca:e={"X-WebChannel-Client-Profile":t.Ca}),this.g.U=e,(e=t&&t.cc)&&!Gg(e)&&(this.g.o=e),this.A=t&&t.supportsCrossDomainXhr||!1,this.v=t&&t.sendRawJson||!1,(t=t&&t.httpSessionIdParam)&&!Gg(t)&&(this.g.F=t,null!==(e=this.h)&&t in e&&(t in(e=this.h)&&delete e[t])),this.j=new ty(this)}function Z_(e){uv.call(this),e.__headers__&&(this.headers=e.__headers__,this.statusCode=e.__status__,delete e.__headers__,delete e.__status__);var t=e.__sm__;if(t){e:{for(const n in t){e=n;break e}e=void 0}(this.i=e)&&(e=this.i,t=null!==t&&e in t?t[e]:void 0),this.data=t}else this.data=e}function ey(){hv.call(this),this.status=1}function ty(e){this.g=e}function ny(){this.blockSize=-1,this.blockSize=64,this.g=Array(4),this.m=Array(this.blockSize),this.i=this.h=0,this.reset()}function ry(e,t,n){n=n||0;var r=Array(16);if("string"==typeof t)for(var i=0;i<16;++i)r[i]=t.charCodeAt(n++)|t.charCodeAt(n++)<<8|t.charCodeAt(n++)<<16|t.charCodeAt(n++)<<24;else for(i=0;i<16;++i)r[i]=t[n++]|t[n++]<<8|t[n++]<<16|t[n++]<<24;t=e.g[0],n=e.g[1];var i=e.g[2],s=e.g[3],a=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=(n=(i=(s=(t=n+((a=t+(s^n&(i^s))+r[0]+3614090360&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[1]+3905402710&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[2]+606105819&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[3]+3250441966&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[4]+4118548399&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[5]+1200080426&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[6]+2821735955&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[7]+4249261313&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[8]+1770035416&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[9]+2336552879&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[10]+4294925233&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[11]+2304563134&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[12]+1804603682&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[13]+4254626195&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[14]+2792965006&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[15]+1236535329&4294967295)<<22&4294967295|a>>>10))+((a=t+(i^s&(n^i))+r[1]+4129170786&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[6]+3225465664&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[11]+643717713&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[0]+3921069994&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[5]+3593408605&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[10]+38016083&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[15]+3634488961&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[4]+3889429448&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[9]+568446438&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[14]+3275163606&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[3]+4107603335&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[8]+1163531501&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[13]+2850285829&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[2]+4243563512&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[7]+1735328473&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[12]+2368359562&4294967295)<<20&4294967295|a>>>12))+((a=t+(n^i^s)+r[5]+4294588738&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[8]+2272392833&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[11]+1839030562&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[14]+4259657740&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[1]+2763975236&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[4]+1272893353&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[7]+4139469664&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[10]+3200236656&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[13]+681279174&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[0]+3936430074&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[3]+3572445317&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[6]+76029189&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[9]+3654602809&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[12]+3873151461&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[15]+530742520&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[2]+3299628645&4294967295)<<23&4294967295|a>>>9))+((a=t+(i^(n|~s))+r[0]+4096336452&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[7]+1126891415&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[14]+2878612391&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[5]+4237533241&4294967295)<<21&4294967295|a>>>11))+((a=t+(i^(n|~s))+r[12]+1700485571&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[3]+2399980690&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[10]+4293915773&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[1]+2240044497&4294967295)<<21&4294967295|a>>>11))+((a=t+(i^(n|~s))+r[8]+1873313359&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[15]+4264355552&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[6]+2734768916&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[13]+1309151649&4294967295)<<21&4294967295|a>>>11))+((s=(t=n+((a=t+(i^(n|~s))+r[4]+4149444226&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[11]+3174756917&4294967295)<<10&4294967295|a>>>22))^((i=s+((a=i+(t^(s|~n))+r[2]+718787259&4294967295)<<15&4294967295|a>>>17))|~t))+r[9]+3951481745&4294967295;e.g[0]=e.g[0]+t&4294967295,e.g[1]=e.g[1]+(i+(a<<21&4294967295|a>>>11))&4294967295,e.g[2]=e.g[2]+i&4294967295,e.g[3]=e.g[3]+s&4294967295}function iy(e,t){this.h=t;for(var n=[],r=!0,i=e.length-1;0<=i;i--){var s=0|e[i];r&&s==t||(n[i]=s,r=!1)}this.g=n}(Tt=v_.prototype).Oa=function(e){this.M=e},Tt.ha=function(e,t,n,r){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.I+"; newUri="+e);t=t?t.toUpperCase():"GET",this.I=e,this.j="",this.m=0,this.F=!1,this.h=!0,this.g=(this.u||gv).g(),this.C=this.u?cv(this.u):cv(gv),this.g.onreadystatechange=Ug(this.La,this);try{this.G=!0,this.g.open(t,String(e),!0),this.G=!1}catch(e){return void b_(this,e)}if(e=n||"",n=new Map(this.headers),r)if(Object.getPrototypeOf(r)===Object.prototype)for(var i in r)n.set(i,r[i]);else{if("function"!=typeof r.keys||"function"!=typeof r.get)throw Error("Unknown input type for opt_headers: "+String(r));for(const c of r.keys())n.set(c,r.get(c))}r=Array.from(n.keys()).find(e=>"content-type"==e.toLowerCase()),i=Pg.FormData&&e instanceof Pg.FormData,0<=jg(w_,t)&&!r&&!i&&n.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(var[s,a]of n)this.g.setRequestHeader(s,a);this.K&&(this.g.responseType=this.K),"withCredentials"in this.g&&this.g.withCredentials!==this.M&&(this.g.withCredentials=this.M);try{C_(this),0<this.B&&((this.L=(o=this.g,Zg&&"number"==typeof o.timeout&&void 0!==o.ontimeout))?(this.g.timeout=this.B,this.g.ontimeout=Ug(this.ua,this)):this.A=$m(this.ua,this.B,this)),this.v=!0,this.g.send(e),this.v=!1}catch(e){b_(this,e)}var o},Tt.ua=function(){void 0!==Rg&&this.g&&(this.j="Timed out after "+this.B+"ms, aborting",this.m=8,Dm(this,"timeout"),this.abort(8))},Tt.abort=function(e){this.g&&this.h&&(this.h=!1,this.l=!0,this.g.abort(),this.l=!1,this.m=e||7,Dm(this,"complete"),Dm(this,"abort"),E_(this))},Tt.N=function(){this.g&&(this.h&&(this.h=!1,this.l=!0,this.g.abort(),this.l=!1),E_(this,!0)),v_.$.N.call(this)},Tt.La=function(){this.s||(this.G||this.v||this.l?T_(this):this.kb())},Tt.kb=function(){T_(this)},Tt.isActive=function(){return!!this.g},Tt.da=function(){try{return 2<S_(this)?this.g.status:-1}catch(e){return-1}},Tt.ja=function(){try{return this.g?this.g.responseText:""}catch(e){return""}},Tt.Wa=function(e){if(this.g){var t=this.g.responseText;return e&&0==t.indexOf(e)&&(t=t.substring(e.length)),m_(t)}},Tt.Ia=function(){return this.m},Tt.Sa=function(){return"string"==typeof this.j?this.j:String(this.j)},(Tt=P_.prototype).ra=8,Tt.H=1,Tt.Na=function(t){if(this.m)if(this.m=null,1==this.H){if(!t){this.W=Math.floor(1e5*Math.random()),t=this.W++;const s=new pv(this,this.l,t);let e=this.s;if(this.U&&(e?(e=gm(e),vm(e,this.U)):e=this.U),null!==this.o||this.O||(s.I=e,e=null),this.P)e:{for(var n=0,r=0;r<this.j.length;r++){var i=this.j[r];if("__data__"in i.map&&"string"==typeof(i=i.map.__data__)?i=i.length:i=void 0,void 0===i)break;if(4096<(n+=i)){n=r;break e}if(4096===n||r===this.j.length-1){n=r+1;break e}}n=1e3}else n=1e3;n=U_(this,s,n),Lv(r=Dv(this.I),"RID",t),Lv(r,"CVER",22),this.F&&Lv(r,"X-HTTP-Session-Id",this.F),F_(this,r),e&&(this.O?n="headers="+encodeURIComponent(String(A_(e)))+"&"+n:this.o&&N_(r,this.o,e)),r_(this.i,s),this.bb&&Lv(r,"TYPE","init"),this.P?(Lv(r,"$req",n),Lv(r,"SID","null"),s.aa=!0,yv(s,r,null)):yv(s,r,n),this.H=2}}else 3==this.H&&(t?L_(this,t):0==this.j.length||e_(this.i)||L_(this))},Tt.Ma=function(){var e;this.u=null,j_(this),this.ca&&!(this.M||null==this.g||this.S<=0)&&(e=2*this.S,this.l.info("BP detection timer enabled: "+e),this.B=av(Ug(this.jb,this),e))},Tt.jb=function(){this.B&&(this.B=null,this.l.info("BP detection timeout reached."),this.l.info("Buffering proxy detected and switch to long-polling!"),this.G=!1,this.M=!0,iv(10),x_(this),j_(this))},Tt.ib=function(){null!=this.v&&(this.v=null,x_(this),q_(this),iv(19))},Tt.pb=function(e){e?(this.l.info("Successfully pinged google.com"),iv(2)):(this.l.info("Failed to ping google.com"),iv(1))},Tt.isActive=function(){return!!this.h&&this.h.isActive(this)},(Tt=Y_.prototype).Ba=function(){},Tt.Aa=function(){},Tt.za=function(){},Tt.ya=function(){},Tt.isActive=function(){return!0},Tt.Va=function(){},J_.prototype.g=function(e,t){return new X_(e,t)},qg(X_,Pm),X_.prototype.m=function(){this.g.h=this.j,this.A&&(this.g.J=!0);var e=this.g,t=this.l,n=this.h||void 0;iv(0),e.Y=t,e.na=n||{},e.G=e.aa,e.I=H_(e,null,e.Y),M_(e)},X_.prototype.close=function(){D_(this.g)},X_.prototype.u=function(e){var t,n=this.g;"string"==typeof e?((t={}).__data__=e,e=t):this.v&&((t={}).__data__=Om(e),e=t),n.j.push(new Xv(n.fb++,e)),3==n.H&&M_(n)},X_.prototype.N=function(){this.g.h=null,delete this.j,D_(this.g),delete this.g,X_.$.N.call(this)},qg(Z_,uv),qg(ey,hv),qg(ty,Y_),ty.prototype.Ba=function(){Dm(this.g,"a")},ty.prototype.Aa=function(e){Dm(this.g,new Z_(e))},ty.prototype.za=function(e){Dm(this.g,new ey)},ty.prototype.ya=function(){Dm(this.g,"b")},qg(ny,function(){this.blockSize=-1}),ny.prototype.reset=function(){this.g[0]=1732584193,this.g[1]=4023233417,this.g[2]=2562383102,this.g[3]=271733878,this.i=this.h=0},ny.prototype.j=function(e,t){for(var n=(t=void 0===t?e.length:t)-this.blockSize,r=this.m,i=this.h,s=0;s<t;){if(0==i)for(;s<=n;)ry(this,e,s),s+=this.blockSize;if("string"==typeof e){for(;s<t;)if(r[i++]=e.charCodeAt(s++),i==this.blockSize){ry(this,r),i=0;break}}else for(;s<t;)if(r[i++]=e[s++],i==this.blockSize){ry(this,r),i=0;break}}this.h=i,this.i+=t},ny.prototype.l=function(){var e=Array((this.h<56?this.blockSize:2*this.blockSize)-this.h);e[0]=128;for(var t=1;t<e.length-8;++t)e[t]=0;for(var n=8*this.i,t=e.length-8;t<e.length;++t)e[t]=255&n,n/=256;for(this.j(e),e=Array(16),t=n=0;t<4;++t)for(var r=0;r<32;r+=8)e[n++]=this.g[t]>>>r&255;return e};var sy={};function ay(e){return-128<=e&&e<128?(t=e,n=function(e){return new iy([0|e],e<0?-1:0)},r=sy,Object.prototype.hasOwnProperty.call(r,t)?r[t]:r[t]=n(t)):new iy([0|e],e<0?-1:0);var t,n,r}function oy(e){if(isNaN(e)||!isFinite(e))return ly;if(e<0)return fy(oy(-e));for(var t=[],n=1,r=0;n<=e;r++)t[r]=e/n|0,n*=cy;return new iy(t,0)}var cy=4294967296,ly=ay(0),uy=ay(1),hy=ay(16777216);function dy(e){if(0==e.h){for(var t=0;t<e.g.length;t++)if(0!=e.g[t])return;return 1}}function py(e){return-1==e.h}function fy(e){for(var t=e.g.length,n=[],r=0;r<t;r++)n[r]=~e.g[r];return new iy(n,~e.h).add(uy)}function gy(e,t){return e.add(fy(t))}function my(e,t){for(;(65535&e[t])!=e[t];)e[t+1]+=e[t]>>>16,e[t]&=65535,t++}function vy(e,t){this.g=e,this.h=t}function _y(e,t){if(dy(t))throw Error("division by zero");if(dy(e))return new vy(ly,ly);if(py(e))return t=_y(fy(e),t),new vy(fy(t.g),fy(t.h));if(py(t))return t=_y(e,fy(t)),new vy(fy(t.g),t.h);if(30<e.g.length){if(py(e)||py(t))throw Error("slowDivide_ only works with positive integers.");for(var n=uy,r=t;r.X(e)<=0;)n=yy(n),r=yy(r);for(var i=wy(n,1),s=wy(r,1),r=wy(r,2),n=wy(n,2);!dy(r);){var a=s.add(r);a.X(e)<=0&&(i=i.add(n),s=a),r=wy(r,1),n=wy(n,1)}return t=gy(e,i.R(t)),new vy(i,t)}for(i=ly;0<=e.X(t);){for(n=Math.max(1,Math.floor(e.ea()/t.ea())),r=(r=Math.ceil(Math.log(n)/Math.LN2))<=48?1:Math.pow(2,r-48),a=(s=oy(n)).R(t);py(a)||0<a.X(e);)a=(s=oy(n-=r)).R(t);dy(s)&&(s=uy),i=i.add(s),e=gy(e,a)}return new vy(i,e)}function yy(e){for(var t=e.g.length+1,n=[],r=0;r<t;r++)n[r]=e.D(r)<<1|e.D(r-1)>>>31;return new iy(n,e.h)}function wy(e,t){var n=t>>5;t%=32;for(var r=e.g.length-n,i=[],s=0;s<r;s++)i[s]=0<t?e.D(s+n)>>>t|e.D(s+n+1)<<32-t:e.D(s+n);return new iy(i,e.h)}(Tt=iy.prototype).ea=function(){if(py(this))return-fy(this).ea();for(var e=0,t=1,n=0;n<this.g.length;n++){var r=this.D(n);e+=(0<=r?r:cy+r)*t,t*=cy}return e},Tt.toString=function(e){if((e=e||10)<2||36<e)throw Error("radix out of range: "+e);if(dy(this))return"0";if(py(this))return"-"+fy(this).toString(e);for(var t=oy(Math.pow(e,6)),n=this,r="";;){var i=_y(n,t).g,s=((0<(n=gy(n,i.R(t))).g.length?n.g[0]:n.h)>>>0).toString(e);if(dy(n=i))return s+r;for(;s.length<6;)s="0"+s;r=s+r}},Tt.D=function(e){return e<0?0:e<this.g.length?this.g[e]:this.h},Tt.X=function(e){return py(e=gy(this,e))?-1:dy(e)?0:1},Tt.abs=function(){return py(this)?fy(this):this},Tt.add=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],r=0,i=0;i<=t;i++){var s=r+(65535&this.D(i))+(65535&e.D(i)),a=(s>>>16)+(this.D(i)>>>16)+(e.D(i)>>>16),r=a>>>16;s&=65535,a&=65535,n[i]=a<<16|s}return new iy(n,-2147483648&n[n.length-1]?-1:0)},Tt.R=function(e){if(dy(this)||dy(e))return ly;if(py(this))return py(e)?fy(this).R(fy(e)):fy(fy(this).R(e));if(py(e))return fy(this.R(fy(e)));if(this.X(hy)<0&&e.X(hy)<0)return oy(this.ea()*e.ea());for(var t=this.g.length+e.g.length,n=[],r=0;r<2*t;r++)n[r]=0;for(r=0;r<this.g.length;r++)for(var i=0;i<e.g.length;i++){var s=this.D(r)>>>16,a=65535&this.D(r),o=e.D(i)>>>16,c=65535&e.D(i);n[2*r+2*i]+=a*c,my(n,2*r+2*i),n[2*r+2*i+1]+=s*c,my(n,2*r+2*i+1),n[2*r+2*i+1]+=a*o,my(n,2*r+2*i+1),n[2*r+2*i+2]+=s*o,my(n,2*r+2*i+2)}for(r=0;r<t;r++)n[r]=n[2*r+1]<<16|n[2*r];for(r=t;r<2*t;r++)n[r]=0;return new iy(n,0)},Tt.gb=function(e){return _y(this,e).h},Tt.and=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],r=0;r<t;r++)n[r]=this.D(r)&e.D(r);return new iy(n,this.h&e.h)},Tt.or=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],r=0;r<t;r++)n[r]=this.D(r)|e.D(r);return new iy(n,this.h|e.h)},Tt.xor=function(e){for(var t=Math.max(this.g.length,e.g.length),n=[],r=0;r<t;r++)n[r]=this.D(r)^e.D(r);return new iy(n,this.h^e.h)},J_.prototype.createWebChannel=J_.prototype.g,X_.prototype.send=X_.prototype.u,X_.prototype.open=X_.prototype.m,Et.NO_ERROR=0,Et.TIMEOUT=8,Et.HTTP_ERROR=6,cl.COMPLETE="complete",(lv.EventType=wt).OPEN="a",wt.CLOSE="b",wt.ERROR="c",wt.MESSAGE="d",Pm.prototype.listen=Pm.prototype.O,v_.prototype.listenOnce=v_.prototype.P,v_.prototype.getLastError=v_.prototype.Sa,v_.prototype.getLastErrorCode=v_.prototype.Ia,v_.prototype.getStatus=v_.prototype.da,v_.prototype.getResponseJson=v_.prototype.Wa,v_.prototype.getResponseText=v_.prototype.ja,v_.prototype.send=v_.prototype.ha,v_.prototype.setWithCredentials=v_.prototype.Oa,ny.prototype.digest=ny.prototype.l,ny.prototype.update=ny.prototype.j,iy.prototype.multiply=iy.prototype.R,iy.prototype.modulo=iy.prototype.gb,iy.prototype.compare=iy.prototype.X,iy.prototype.toNumber=iy.prototype.ea,iy.prototype.getBits=iy.prototype.D,iy.fromNumber=oy,iy.fromString=function e(t,n){if(0==t.length)throw Error("number format error: empty string");if((n=n||10)<2||36<n)throw Error("radix out of range: "+n);if("-"==t.charAt(0))return fy(e(t.substring(1),n));if(0<=t.indexOf("-"))throw Error('number format error: interior "-" character');for(var r=oy(Math.pow(n,8)),i=ly,s=0;s<t.length;s+=8)var a=Math.min(8,t.length-s),o=parseInt(t.substring(s,s+a),n),i=a<8?(a=oy(Math.pow(n,a)),i.R(a).add(oy(o))):(i=i.R(r)).add(oy(o));return i};var by,Iy=ev,Ty=Et,Ey=cl,Cy=Xm,Sy=10,ky=11,Ay=lv,Ny=v_,Ry=ny,Py=iy;const Dy="@firebase/firestore";class xy{constructor(e){this.uid=e}isAuthenticated(){return null!=this.uid}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(e){return e.uid===this.uid}}xy.UNAUTHENTICATED=new xy(null),xy.GOOGLE_CREDENTIALS=new xy("google-credentials-uid"),xy.FIRST_PARTY=new xy("first-party-uid"),xy.MOCK_USER=new xy("mock-user");let Oy="10.8.0";const My=new _e("@firebase/firestore");function Ly(){return My.logLevel}function Fy(e,...t){var n;My.logLevel<=m.DEBUG&&(n=t.map(qy),My.debug(`Firestore (${Oy}): ${e}`,...n))}function Uy(e,...t){var n;My.logLevel<=m.ERROR&&(n=t.map(qy),My.error(`Firestore (${Oy}): ${e}`,...n))}function Vy(e,...t){var n;My.logLevel<=m.WARN&&(n=t.map(qy),My.warn(`Firestore (${Oy}): ${e}`,...n))}function qy(t){if("string"==typeof t)return t;try{return JSON.stringify(t)}catch(e){return t}}function By(e="Unexpected state"){var t=`FIRESTORE (${Oy}) INTERNAL ASSERTION FAILED: `+e;throw Uy(t),new Error(t)}function jy(e){e||By()}const zy={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class $y extends D{constructor(e,t){super(e,t),this.code=e,this.message=t,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class Ky{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}class Wy{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class Gy{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable(()=>t(xy.UNAUTHENTICATED))}shutdown(){}}class Hy{constructor(e){this.token=e,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(e,t){this.changeListener=t,e.enqueueRetryable(()=>t(this.token.user))}shutdown(){this.changeListener=null}}class Qy{constructor(e){this.t=e,this.currentUser=xy.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(t,n){let r=this.i;const i=e=>this.i!==r?(r=this.i,n(e)):Promise.resolve();let s=new Ky;this.o=()=>{this.i++,this.currentUser=this.u(),s.resolve(),s=new Ky,t.enqueueRetryable(()=>i(this.currentUser))};const a=()=>{const e=s;t.enqueueRetryable(async()=>{await e.promise,await i(this.currentUser)})},o=e=>{Fy("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=e,this.auth.addAuthTokenListener(this.o),a()};this.t.onInit(e=>o(e)),setTimeout(()=>{var e;this.auth||((e=this.t.getImmediate({optional:!0}))?o(e):(Fy("FirebaseAuthCredentialsProvider","Auth not yet detected"),s.resolve(),s=new Ky))},0),a()}getToken(){const t=this.i,e=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(e).then(e=>this.i!==t?(Fy("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):e?(jy("string"==typeof e.accessToken),new Wy(e.accessToken,this.currentUser)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.auth.removeAuthTokenListener(this.o)}u(){var e=this.auth&&this.auth.getUid();return jy(null===e||"string"==typeof e),new xy(e)}}class Yy{constructor(e,t,n){this.l=e,this.h=t,this.P=n,this.type="FirstParty",this.user=xy.FIRST_PARTY,this.I=new Map}T(){return this.P?this.P():null}get headers(){this.I.set("X-Goog-AuthUser",this.l);var e=this.T();return e&&this.I.set("Authorization",e),this.h&&this.I.set("X-Goog-Iam-Authorization-Token",this.h),this.I}}class Jy{constructor(e,t,n){this.l=e,this.h=t,this.P=n}getToken(){return Promise.resolve(new Yy(this.l,this.h,this.P))}start(e,t){e.enqueueRetryable(()=>t(xy.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class Xy{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&0<e.length&&this.headers.set("x-firebase-appcheck",this.value)}}class Zy{constructor(e){this.A=e,this.forceRefresh=!1,this.appCheck=null,this.R=null}start(t,n){const r=e=>{null!=e.error&&Fy("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);var t=e.token!==this.R;return this.R=e.token,Fy("FirebaseAppCheckTokenProvider",`Received ${t?"new":"existing"} token.`),t?n(e.token):Promise.resolve()};this.o=e=>{t.enqueueRetryable(()=>r(e))};const i=e=>{Fy("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.appCheck.addTokenListener(this.o)};this.A.onInit(e=>i(e)),setTimeout(()=>{var e;this.appCheck||((e=this.A.getImmediate({optional:!0}))?i(e):Fy("FirebaseAppCheckTokenProvider","AppCheck not yet detected"))},0)}getToken(){var e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(e=>e?(jy("string"==typeof e.token),this.R=e.token,new Xy(e.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}class ew{static newId(){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=Math.floor(256/t.length)*t.length;let r="";for(;r.length<20;){var i=function(t){const n="undefined"!=typeof self&&(self.crypto||self.msCrypto),r=new Uint8Array(t);if(n&&"function"==typeof n.getRandomValues)n.getRandomValues(r);else for(let e=0;e<t;e++)r[e]=Math.floor(256*Math.random());return r}(40);for(let e=0;e<i.length;++e)r.length<20&&i[e]<n&&(r+=t.charAt(i[e]%t.length))}return r}}function tw(e,t){return e<t?-1:t<e?1:0}function nw(e,n,r){return e.length===n.length&&e.every((e,t)=>r(e,n[t]))}function rw(e){return e+"\0"}class iw{constructor(e,t){if(this.seconds=e,(this.nanoseconds=t)<0)throw new $y(zy.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(1e9<=t)throw new $y(zy.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800)throw new $y(zy.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(253402300800<=e)throw new $y(zy.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return iw.fromMillis(Date.now())}static fromDate(e){return iw.fromMillis(e.getTime())}static fromMillis(e){var t=Math.floor(e/1e3),n=Math.floor(1e6*(e-1e3*t));return new iw(t,n)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?tw(this.nanoseconds,e.nanoseconds):tw(this.seconds,e.seconds)}isEqual(e){return e.seconds===this.seconds&&e.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){var e=this.seconds- -62135596800;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}class sw{constructor(e){this.timestamp=e}static fromTimestamp(e){return new sw(e)}static min(){return new sw(new iw(0,0))}static max(){return new sw(new iw(253402300799,999999999))}compareTo(e){return this.timestamp._compareTo(e.timestamp)}isEqual(e){return this.timestamp.isEqual(e.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}class aw{constructor(e,t,n){void 0===t?t=0:t>e.length&&By(),void 0===n?n=e.length-t:n>e.length-t&&By(),this.segments=e,this.offset=t,this.len=n}get length(){return this.len}isEqual(e){return 0===aw.comparator(this,e)}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof aw?e.forEach(e=>{t.push(e)}):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return this.construct(this.segments,this.offset+(e=void 0===e?1:e),this.length-e)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(e){return this.segments[this.offset+e]}isEmpty(){return 0===this.length}isPrefixOf(e){if(e.length<this.length)return!1;for(let t=0;t<this.length;t++)if(this.get(t)!==e.get(t))return!1;return!0}isImmediateParentOf(e){if(this.length+1!==e.length)return!1;for(let t=0;t<this.length;t++)if(this.get(t)!==e.get(t))return!1;return!0}forEach(e){for(let t=this.offset,n=this.limit();t<n;t++)e(this.segments[t])}toArray(){return this.segments.slice(this.offset,this.limit())}static comparator(e,t){const n=Math.min(e.length,t.length);for(let r=0;r<n;r++){const n=e.get(r),i=t.get(r);if(n<i)return-1;if(n>i)return 1}return e.length<t.length?-1:e.length>t.length?1:0}}class ow extends aw{construct(e,t,n){return new ow(e,t,n)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}toUriEncodedString(){return this.toArray().map(encodeURIComponent).join("/")}static fromString(...e){const t=[];for(const n of e){if(0<=n.indexOf("//"))throw new $y(zy.INVALID_ARGUMENT,`Invalid segment (${n}). Paths must not contain // in them.`);t.push(...n.split("/").filter(e=>0<e.length))}return new ow(t)}static emptyPath(){return new ow([])}}const cw=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class lw extends aw{construct(e,t,n){return new lw(e,t,n)}static isValidIdentifier(e){return cw.test(e)}canonicalString(){return this.toArray().map(e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),e=!lw.isValidIdentifier(e)?"`"+e+"`":e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new lw(["__name__"])}static fromServerFormat(e){const t=[];let n="",r=0;var i=()=>{if(0===n.length)throw new $y(zy.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(n),n=""};let s=!1;for(;r<e.length;){const t=e[r];if("\\"===t){if(r+1===e.length)throw new $y(zy.INVALID_ARGUMENT,"Path has trailing escape character: "+e);const t=e[r+1];if("\\"!==t&&"."!==t&&"`"!==t)throw new $y(zy.INVALID_ARGUMENT,"Path has invalid escape sequence: "+e);n+=t,r+=2}else"`"===t?s=!s:"."!==t||s?n+=t:i(),r++}if(i(),s)throw new $y(zy.INVALID_ARGUMENT,"Unterminated ` in path: "+e);return new lw(t)}static emptyPath(){return new lw([])}}class uw{constructor(e){this.path=e}static fromPath(e){return new uw(ow.fromString(e))}static fromName(e){return new uw(ow.fromString(e).popFirst(5))}static empty(){return new uw(ow.emptyPath())}get collectionGroup(){return this.path.popLast().lastSegment()}hasCollectionId(e){return 2<=this.path.length&&this.path.get(this.path.length-2)===e}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(e){return null!==e&&0===ow.comparator(this.path,e.path)}toString(){return this.path.toString()}static comparator(e,t){return ow.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new uw(new ow(e.slice()))}}class hw{constructor(e,t,n,r){this.indexId=e,this.collectionGroup=t,this.fields=n,this.indexState=r}}function dw(e){return e.fields.find(e=>2===e.kind)}function pw(e){return e.fields.filter(e=>2!==e.kind)}hw.UNKNOWN_ID=-1;class fw{constructor(e,t){this.fieldPath=e,this.kind=t}}class gw{constructor(e,t){this.sequenceNumber=e,this.offset=t}static empty(){return new gw(0,_w.min())}}function mw(e,t){var n=e.toTimestamp().seconds,r=e.toTimestamp().nanoseconds+1,r=sw.fromTimestamp(1e9===r?new iw(n+1,0):new iw(n,r));return new _w(r,uw.empty(),t)}function vw(e){return new _w(e.readTime,e.key,-1)}class _w{constructor(e,t,n){this.readTime=e,this.documentKey=t,this.largestBatchId=n}static min(){return new _w(sw.min(),uw.empty(),-1)}static max(){return new _w(sw.max(),uw.empty(),-1)}}function yw(e,t){let n=e.readTime.compareTo(t.readTime);return 0!==n?n:(n=uw.comparator(e.documentKey,t.documentKey),0!==n?n:tw(e.largestBatchId,t.largestBatchId))}const ww="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class bw{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}async function Iw(e){if(e.code!==zy.FAILED_PRECONDITION||e.message!==ww)throw e;Fy("LocalStore","Unexpectedly lost primary lease")}class Tw{constructor(e){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,e(e=>{this.isDone=!0,this.result=e,this.nextCallback&&this.nextCallback(e)},e=>{this.isDone=!0,this.error=e,this.catchCallback&&this.catchCallback(e)})}catch(e){return this.next(void 0,e)}next(r,i){return this.callbackAttached&&By(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(i,this.error):this.wrapSuccess(r,this.result):new Tw((t,n)=>{this.nextCallback=e=>{this.wrapSuccess(r,e).next(t,n)},this.catchCallback=e=>{this.wrapFailure(i,e).next(t,n)}})}toPromise(){return new Promise((e,t)=>{this.next(e,t)})}wrapUserFunction(e){try{var t=e();return t instanceof Tw?t:Tw.resolve(t)}catch(e){return Tw.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction(()=>e(t)):Tw.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction(()=>e(t)):Tw.reject(t)}static resolve(n){return new Tw((e,t)=>{e(n)})}static reject(n){return new Tw((e,t)=>{t(n)})}static waitFor(e){return new Tw((t,n)=>{let r=0,i=0,s=!1;e.forEach(e=>{++r,e.next(()=>{++i,s&&i===r&&t()},e=>n(e))}),s=!0,i===r&&t()})}static or(e){let t=Tw.resolve(!1);for(const n of e)t=t.next(e=>e?Tw.resolve(e):n());return t}static forEach(e,n){const r=[];return e.forEach((e,t)=>{r.push(n.call(this,e,t))}),this.waitFor(r)}static mapArray(o,c){return new Tw((t,n)=>{const r=o.length,i=new Array(r);let s=0;for(let e=0;e<r;e++){const a=e;c(o[a]).next(e=>{i[a]=e,++s,s===r&&t(i)},e=>n(e))}})}static doWhile(r,i){return new Tw((e,t)=>{const n=()=>{!0===r()?i().next(()=>{n()},t):e()};n()})}}class Ew{constructor(n,e){this.action=n,this.transaction=e,this.aborted=!1,this.V=new Ky,this.transaction.oncomplete=()=>{this.V.resolve()},this.transaction.onabort=()=>{e.error?this.V.reject(new kw(n,e.error)):this.V.resolve()},this.transaction.onerror=e=>{var t=Dw(e.target.error);this.V.reject(new kw(n,t))}}static open(e,t,n,r){try{return new Ew(t,e.transaction(r,n))}catch(e){throw new kw(t,e)}}get m(){return this.V.promise}abort(e){e&&this.V.reject(e),this.aborted||(Fy("SimpleDb","Aborting transaction:",e?e.message:"Client-initiated abort"),this.aborted=!0,this.transaction.abort())}g(){const e=this.transaction;this.aborted||"function"!=typeof e.commit||e.commit()}store(e){var t=this.transaction.objectStore(e);return new Nw(t)}}class Cw{constructor(e,t,n){this.name=e,this.version=t,this.p=n,12.2===Cw.S(b())&&Uy("Firestore persistence suffers from a bug in iOS 12.2 Safari that may cause your app to stop working. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.")}static delete(e){return Fy("SimpleDb","Removing database:",e),Rw(window.indexedDB.deleteDatabase(e)).toPromise()}static D(){if(!N())return!1;if(Cw.C())return!0;const e=b(),t=Cw.S(e),n=0<t&&t<10,r=Cw.v(e),i=0<r&&r<4.5;return!(0<e.indexOf("MSIE ")||0<e.indexOf("Trident/")||0<e.indexOf("Edge/")||n||i)}static C(){var e;return"undefined"!=typeof process&&"YES"===(null===(e=process.__PRIVATE_env)||void 0===e?void 0:e.F)}static M(e,t){return e.store(t)}static S(e){const t=e.match(/i(?:phone|pad|pod) os ([\d_]+)/i),n=t?t[1].split("_").slice(0,2).join("."):"-1";return Number(n)}static v(e){const t=e.match(/Android ([\d.]+)/i),n=t?t[1].split(".").slice(0,2).join("."):"-1";return Number(n)}async O(s){return this.db||(Fy("SimpleDb","Opening database:",this.name),this.db=await new Promise((n,r)=>{const i=indexedDB.open(this.name,this.version);i.onsuccess=e=>{var t=e.target.result;n(t)},i.onblocked=()=>{r(new kw(s,"Cannot upgrade IndexedDB schema while another tab is open. Close all tabs that access Firestore and reload this page to proceed."))},i.onerror=e=>{var t=e.target.error;"VersionError"===t.name?r(new $y(zy.FAILED_PRECONDITION,"A newer version of the Firestore SDK was previously used and so the persisted data is not compatible with the version of the SDK you are now using. The SDK will operate with persistence disabled. If you need persistence, please re-upgrade to a newer version of the SDK or else clear the persisted IndexedDB data for your app to start fresh.")):"InvalidStateError"===t.name?r(new $y(zy.FAILED_PRECONDITION,"Unable to open an IndexedDB connection. This could be due to running in a private browsing session on a browser whose private browsing sessions do not support IndexedDB: "+t)):r(new kw(s,t))},i.onupgradeneeded=e=>{Fy("SimpleDb",'Database "'+this.name+'" requires upgrade from version:',e.oldVersion);var t=e.target.result;this.p.N(t,i.transaction,e.oldVersion,this.version).next(()=>{Fy("SimpleDb","Database upgrade to version "+this.version+" complete")})}})),this.B&&(this.db.onversionchange=e=>this.B(e)),this.db}L(t){this.B=t,this.db&&(this.db.onversionchange=e=>t(e))}async runTransaction(e,t,n,r){var i="readonly"===t;let s=0;for(;;){++s;try{this.db=await this.O(e);const t=Ew.open(this.db,e,i?"readonly":"readwrite",n),s=r(t).next(e=>(t.g(),e)).catch(e=>(t.abort(e),Tw.reject(e))).toPromise();return s.catch(()=>{}),await t.m,s}catch(e){const t=e,n="FirebaseError"!==t.name&&s<3;if(Fy("SimpleDb","Transaction failed with error:",t.message,"Retrying:",n),this.close(),!n)return Promise.reject(t)}}}close(){this.db&&this.db.close(),this.db=void 0}}class Sw{constructor(e){this.k=e,this.q=!1,this.K=null}get isDone(){return this.q}get $(){return this.K}set cursor(e){this.k=e}done(){this.q=!0}U(e){this.K=e}delete(){return Rw(this.k.delete())}}class kw extends $y{constructor(e,t){super(zy.UNAVAILABLE,`IndexedDB transaction '${e}' failed: ${t}`),this.name="IndexedDbTransactionError"}}function Aw(e){return"IndexedDbTransactionError"===e.name}class Nw{constructor(e){this.store=e}put(e,t){let n;return n=void 0!==t?(Fy("SimpleDb","PUT",this.store.name,e,t),this.store.put(t,e)):(Fy("SimpleDb","PUT",this.store.name,"<auto-key>",e),this.store.put(e)),Rw(n)}add(e){return Fy("SimpleDb","ADD",this.store.name,e,e),Rw(this.store.add(e))}get(t){return Rw(this.store.get(t)).next(e=>(Fy("SimpleDb","GET",this.store.name,t,e=void 0===e?null:e),e))}delete(e){return Fy("SimpleDb","DELETE",this.store.name,e),Rw(this.store.delete(e))}count(){return Fy("SimpleDb","COUNT",this.store.name),Rw(this.store.count())}W(e,n){const t=this.options(e,n),r=t.index?this.store.index(t.index):this.store;if("function"==typeof r.getAll){const e=r.getAll(t.range);return new Tw((t,n)=>{e.onerror=e=>{n(e.target.error)},e.onsuccess=e=>{t(e.target.result)}})}{const e=this.cursor(t),n=[];return this.G(e,(e,t)=>{n.push(t)}).next(()=>n)}}j(e,t){const r=this.store.getAll(e,null===t?void 0:t);return new Tw((t,n)=>{r.onerror=e=>{n(e.target.error)},r.onsuccess=e=>{t(e.target.result)}})}H(e,t){Fy("SimpleDb","DELETE ALL",this.store.name);const n=this.options(e,t);n.J=!1;var r=this.cursor(n);return this.G(r,(e,t,n)=>n.delete())}Y(e,t){let n;t?n=e:(n={},t=e);var r=this.cursor(n);return this.G(r,t)}Z(i){const e=this.cursor({});return new Tw((n,r)=>{e.onerror=e=>{var t=Dw(e.target.error);r(t)},e.onsuccess=e=>{const t=e.target.result;t?i(t.primaryKey,t.value).next(e=>{e?t.continue():n()}):n()}})}G(e,s){const a=[];return new Tw((i,t)=>{e.onerror=e=>{t(e.target.error)},e.onsuccess=e=>{const t=e.target.result;if(t){const n=new Sw(t),r=s(t.primaryKey,t.value,n);if(r instanceof Tw){const e=r.catch(e=>(n.done(),Tw.reject(e)));a.push(e)}n.isDone?i():null===n.$?t.continue():t.continue(n.$)}else i()}}).next(()=>Tw.waitFor(a))}options(e,t){let n;return void 0!==e&&("string"==typeof e?n=e:t=e),{index:n,range:t}}cursor(e){let t="next";if(e.reverse&&(t="prev"),e.index){const n=this.store.index(e.index);return e.J?n.openKeyCursor(e.range,t):n.openCursor(e.range,t)}return this.store.openCursor(e.range,t)}}function Rw(e){return new Tw((n,r)=>{e.onsuccess=e=>{var t=e.target.result;n(t)},e.onerror=e=>{var t=Dw(e.target.error);r(t)}})}let Pw=!1;function Dw(e){const t=Cw.S(b());if(12.2<=t&&t<13){const t="An internal error was encountered in the Indexed Database server";if(0<=e.message.indexOf(t)){const e=new $y("internal",`IOS_INDEXEDDB_BUG1: IndexedDb has thrown '${t}'. This is likely due to an unavoidable bug in iOS. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.`);return Pw||(Pw=!0,setTimeout(()=>{throw e},0)),e}}return e}class xw{constructor(e,t){this.asyncQueue=e,this.X=t,this.task=null}start(){this.ee(15e3)}stop(){this.task&&(this.task.cancel(),this.task=null)}get started(){return null!==this.task}ee(e){Fy("IndexBackfiller",`Scheduled in ${e}ms`),this.task=this.asyncQueue.enqueueAfterDelay("index_backfill",e,async()=>{this.task=null;try{Fy("IndexBackfiller",`Documents written: ${await this.X.te()}`)}catch(e){Aw(e)?Fy("IndexBackfiller","Ignoring IndexedDB error during index backfill: ",e):await Iw(e)}await this.ee(6e4)})}}class Ow{constructor(e,t){this.localStore=e,this.persistence=t}async te(t=50){return this.persistence.runTransaction("Backfill Indexes","readwrite-primary",e=>this.ne(e,t))}ne(e,t){const n=new Set;let r=t,i=!0;return Tw.doWhile(()=>!0===i&&0<r,()=>this.localStore.indexManager.getNextCollectionGroupToUpdate(e).next(t=>null===t||n.has(t)?void(i=!1):(Fy("IndexBackfiller",`Processing collection: ${t}`),this.re(e,t,r).next(e=>{r-=e,n.add(t)})))).next(()=>t-r)}re(r,i,e){return this.localStore.indexManager.getMinOffsetFromCollectionGroup(r,i).next(n=>this.localStore.localDocuments.getNextDocuments(r,i,n,e).next(e=>{const t=e.changes;return this.localStore.indexManager.updateIndexEntries(r,t).next(()=>this.ie(n,e)).next(e=>(Fy("IndexBackfiller",`Updating offset: ${e}`),this.localStore.indexManager.updateCollectionGroup(r,i,e))).next(()=>t.size)}))}ie(e,t){let r=e;return t.changes.forEach((e,t)=>{var n=vw(t);0<yw(n,r)&&(r=n)}),new _w(r.readTime,r.documentKey,Math.max(t.batchId,e.largestBatchId))}}class Mw{constructor(e,t){this.previousValue=e,t&&(t.sequenceNumberHandler=e=>this.se(e),this.oe=e=>t.writeSequenceNumber(e))}se(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){var e=++this.previousValue;return this.oe&&this.oe(e),e}}function Lw(e){return null==e}function Fw(e){return 0===e&&1/e==-1/0}function Uw(e){return"number"==typeof e&&Number.isInteger(e)&&!Fw(e)&&e<=Number.MAX_SAFE_INTEGER&&e>=Number.MIN_SAFE_INTEGER}function Vw(e){let t="";for(let n=0;n<e.length;n++)0<t.length&&(t=qw(t)),t=function(e,t){let n=t;const r=e.length;for(let i=0;i<r;i++){const r=e.charAt(i);switch(r){case"\0":n+="";break;case"":n+="";break;default:n+=r}}return n}(e.get(n),t);return qw(t)}function qw(e){return e+""}function Bw(t){const n=t.length;if(jy(2<=n),2===n)return jy(""===t.charAt(0)&&""===t.charAt(1)),ow.emptyPath();const __PRIVATE_lastReasonableEscapeIndex=n-2,r=[];let i="";for(let a=0;a<n;){const n=t.indexOf("",a);switch((n<0||n>__PRIVATE_lastReasonableEscapeIndex)&&By(),t.charAt(n+1)){case"":var s=t.substring(a,n);let e;0===i.length?e=s:(i+=s,e=i,i=""),r.push(e);break;case"":i+=t.substring(a,n),i+="\0";break;case"":i+=t.substring(a,n+1);break;default:By()}a=n+2}return new ow(r)}Mw._e=-1;const jw=["userId","batchId"];function zw(e,t){return[e,Vw(t)]}function $w(e,t,n){return[e,Vw(t),n]}const Kw={},Ww=["prefixPath","collectionGroup","readTime","documentId"],Gw=["prefixPath","collectionGroup","documentId"],Hw=["collectionGroup","readTime","prefixPath","documentId"],Qw=["canonicalId","targetId"],Yw=["targetId","path"],Jw=["path","targetId"],Xw=["collectionId","parent"],Zw=["indexId","uid"],eb=["uid","sequenceNumber"],tb=["indexId","uid","arrayValue","directionalValue","orderedDocumentKey","documentKey"],nb=["indexId","uid","orderedDocumentKey"],rb=["userId","collectionPath","documentId"],ib=["userId","collectionPath","largestBatchId"],sb=["userId","collectionGroup","largestBatchId"],ab=["mutationQueues","mutations","documentMutations","remoteDocuments","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries"],ob=[...ab,"documentOverlays"],cb=["mutationQueues","mutations","documentMutations","remoteDocumentsV14","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries","documentOverlays"],lb=cb,ub=[...lb,"indexConfiguration","indexState","indexEntries"];class hb extends bw{constructor(e,t){super(),this.ae=e,this.currentSequenceNumber=t}}function db(e,t){var n=e;return Cw.M(n.ae,t)}function pb(e){let t=0;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}function fb(e,t){for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(n,e[n])}function gb(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}class mb{constructor(e,t){this.comparator=e,this.root=t||_b.EMPTY}insert(e,t){return new mb(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,_b.BLACK,null,null))}remove(e){return new mb(this.comparator,this.root.remove(e,this.comparator).copy(null,null,_b.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){var n=this.comparator(e,t.key);if(0===n)return t.value;n<0?t=t.left:0<n&&(t=t.right)}return null}indexOf(e){let t=0,n=this.root;for(;!n.isEmpty();){var r=this.comparator(e,n.key);if(0===r)return t+n.left.size;n=r<0?n.left:(t+=n.left.size+1,n.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(e){return this.root.inorderTraversal(e)}forEach(n){this.inorderTraversal((e,t)=>(n(e,t),!1))}toString(){const n=[];return this.inorderTraversal((e,t)=>(n.push(`${e}:${t}`),!1)),`{${n.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new vb(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new vb(this.root,e,this.comparator,!1)}getReverseIterator(){return new vb(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new vb(this.root,e,this.comparator,!0)}}class vb{constructor(e,t,n,r){this.isReverse=r,this.nodeStack=[];let i=1;for(;!e.isEmpty();)if(i=t?n(e.key,t):1,t&&r&&(i*=-1),i<0)e=this.isReverse?e.left:e.right;else{if(0===i){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();var t={key:e.key,value:e.value};if(this.isReverse)for(e=e.left;!e.isEmpty();)this.nodeStack.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack.push(e),e=e.left;return t}hasNext(){return 0<this.nodeStack.length}peek(){if(0===this.nodeStack.length)return null;var e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class _b{constructor(e,t,n,r,i){this.key=e,this.value=t,this.color=null!=n?n:_b.RED,this.left=null!=r?r:_b.EMPTY,this.right=null!=i?i:_b.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,n,r,i){return new _b(null!=e?e:this.key,null!=t?t:this.value,null!=n?n:this.color,null!=r?r:this.left,null!=i?i:this.right)}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,n){let r=this;var i=n(e,r.key);return r=i<0?r.copy(null,null,null,r.left.insert(e,t,n),null):0===i?r.copy(null,t,null,null,null):r.copy(null,null,null,null,r.right.insert(e,t,n)),r.fixUp()}removeMin(){if(this.left.isEmpty())return _b.EMPTY;let e=this;return e.left.isRed()||e.left.left.isRed()||(e=e.moveRedLeft()),e=e.copy(null,null,null,e.left.removeMin(),null),e.fixUp()}remove(e,t){let n,r=this;if(t(e,r.key)<0)r.left.isEmpty()||r.left.isRed()||r.left.left.isRed()||(r=r.moveRedLeft()),r=r.copy(null,null,null,r.left.remove(e,t),null);else{if(r.left.isRed()&&(r=r.rotateRight()),r.right.isEmpty()||r.right.isRed()||r.right.left.isRed()||(r=r.moveRedRight()),0===t(e,r.key)){if(r.right.isEmpty())return _b.EMPTY;n=r.right.min(),r=r.copy(n.key,n.value,null,null,r.right.removeMin())}r=r.copy(null,null,null,null,r.right.remove(e,t))}return r.fixUp()}isRed(){return this.color}fixUp(){let e=this;return e.right.isRed()&&!e.left.isRed()&&(e=e.rotateLeft()),e.left.isRed()&&e.left.left.isRed()&&(e=e.rotateRight()),e.left.isRed()&&e.right.isRed()&&(e=e.colorFlip()),e}moveRedLeft(){let e=this.colorFlip();return e.right.left.isRed()&&(e=e.copy(null,null,null,null,e.right.rotateRight()),e=e.rotateLeft(),e=e.colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=e.rotateRight(),e=e.colorFlip()),e}rotateLeft(){var e=this.copy(null,null,_b.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){var e=this.copy(null,null,_b.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){var e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth(){var e=this.check();return Math.pow(2,e)<=this.size+1}check(){if(this.isRed()&&this.left.isRed())throw By();if(this.right.isRed())throw By();var e=this.left.check();if(e!==this.right.check())throw By();return e+(this.isRed()?0:1)}}_b.EMPTY=null,_b.RED=!0,_b.BLACK=!1,_b.EMPTY=new class{constructor(){this.size=0}get key(){throw By()}get value(){throw By()}get color(){throw By()}get left(){throw By()}get right(){throw By()}copy(e,t,n,r,i){return this}insert(e,t,n){return new _b(e,t)}remove(e,t){return this}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};class yb{constructor(e){this.comparator=e,this.data=new mb(this.comparator)}has(e){return null!==this.data.get(e)}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(e){return this.data.indexOf(e)}forEach(n){this.data.inorderTraversal((e,t)=>(n(e),!1))}forEachInRange(e,t){const n=this.data.getIteratorFrom(e[0]);for(;n.hasNext();){var r=n.getNext();if(0<=this.comparator(r.key,e[1]))return;t(r.key)}}forEachWhile(e,t){let n;for(n=void 0!==t?this.data.getIteratorFrom(t):this.data.getIterator();n.hasNext();)if(!e(n.getNext().key))return}firstAfterOrEqual(e){const t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new wb(this.data.getIterator())}getIteratorFrom(e){return new wb(this.data.getIteratorFrom(e))}add(e){return this.copy(this.data.remove(e).insert(e,!0))}delete(e){return this.has(e)?this.copy(this.data.remove(e)):this}isEmpty(){return this.data.isEmpty()}unionWith(e){let t=this;return t.size<e.size&&(t=e,e=this),e.forEach(e=>{t=t.add(e)}),t}isEqual(e){if(!(e instanceof yb))return!1;if(this.size!==e.size)return!1;const t=this.data.getIterator(),n=e.data.getIterator();for(;t.hasNext();){const e=t.getNext().key,r=n.getNext().key;if(0!==this.comparator(e,r))return!1}return!0}toArray(){const t=[];return this.forEach(e=>{t.push(e)}),t}toString(){const t=[];return this.forEach(e=>t.push(e)),"SortedSet("+t.toString()+")"}copy(e){const t=new yb(this.comparator);return t.data=e,t}}class wb{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}function bb(e){return e.hasNext()?e.getNext():void 0}class Ib{constructor(e){(this.fields=e).sort(lw.comparator)}static empty(){return new Ib([])}unionWith(e){let t=new yb(lw.comparator);for(const e of this.fields)t=t.add(e);for(const n of e)t=t.add(n);return new Ib(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return nw(this.fields,e.fields,(e,t)=>e.isEqual(t))}}class Tb extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}class Eb{constructor(e){this.binaryString=e}static fromBase64String(e){var t=function(e){try{return atob(e)}catch(e){throw"undefined"!=typeof DOMException&&e instanceof DOMException?new Tb("Invalid base64 string: "+e):e}}(e);return new Eb(t)}static fromUint8Array(e){var t=function(e){let t="";for(let n=0;n<e.length;++n)t+=String.fromCharCode(e[n]);return t}(e);return new Eb(t)}[Symbol.iterator](){let e=0;return{next:()=>e<this.binaryString.length?{value:this.binaryString.charCodeAt(e++),done:!1}:{value:void 0,done:!0}}}toBase64(){return e=this.binaryString,btoa(e);var e}toUint8Array(){return function(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}(this.binaryString)}approximateByteSize(){return 2*this.binaryString.length}compareTo(e){return tw(this.binaryString,e.binaryString)}isEqual(e){return this.binaryString===e.binaryString}}Eb.EMPTY_BYTE_STRING=new Eb("");const Cb=new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);function Sb(t){if(jy(!!t),"string"!=typeof t)return{seconds:kb(t.seconds),nanos:kb(t.nanos)};{let e=0;var n=Cb.exec(t);jy(!!n),n[1]&&(n=((n=n[1])+"000000000").substr(0,9),e=Number(n));const r=new Date(t);return{seconds:Math.floor(r.getTime()/1e3),nanos:e}}}function kb(e){return"number"==typeof e?e:"string"==typeof e?Number(e):0}function Ab(e){return"string"==typeof e?Eb.fromBase64String(e):Eb.fromUint8Array(e)}function Nb(e){var t;return"server_timestamp"===(null===(t=((null===(t=null==e?void 0:e.mapValue)||void 0===t?void 0:t.fields)||{}).__type__)||void 0===t?void 0:t.stringValue)}function Rb(e){var t=e.mapValue.fields.__previous_value__;return Nb(t)?Rb(t):t}function Pb(e){var t=Sb(e.mapValue.fields.__local_write_time__.timestampValue);return new iw(t.seconds,t.nanos)}class Db{constructor(e,t,n,r,i,s,a,o,c){this.databaseId=e,this.appId=t,this.persistenceKey=n,this.host=r,this.ssl=i,this.forceLongPolling=s,this.autoDetectLongPolling=a,this.longPollingOptions=o,this.useFetchStreams=c}}class xb{constructor(e,t){this.projectId=e,this.database=t||"(default)"}static empty(){return new xb("","")}get isDefaultDatabase(){return"(default)"===this.database}isEqual(e){return e instanceof xb&&e.projectId===this.projectId&&e.database===this.database}}const Ob={mapValue:{fields:{__type__:{stringValue:"__max__"}}}},Mb={nullValue:"NULL_VALUE"};function Lb(e){return"nullValue"in e?0:"booleanValue"in e?1:"integerValue"in e||"doubleValue"in e?2:"timestampValue"in e?3:"stringValue"in e?5:"bytesValue"in e?6:"referenceValue"in e?7:"geoPointValue"in e?8:"arrayValue"in e?9:"mapValue"in e?Nb(e)?4:Qb(e)?9007199254740991:10:By()}function Fb(e,t){if(e===t)return!0;var n,r,i=Lb(e);if(i!==Lb(t))return!1;switch(i){case 0:case 9007199254740991:return!0;case 1:return e.booleanValue===t.booleanValue;case 4:return Pb(e).isEqual(Pb(t));case 3:return function(e,t){if("string"==typeof e.timestampValue&&"string"==typeof t.timestampValue&&e.timestampValue.length===t.timestampValue.length)return e.timestampValue===t.timestampValue;var n=Sb(e.timestampValue),r=Sb(t.timestampValue);return n.seconds===r.seconds&&n.nanos===r.nanos}(e,t);case 5:return e.stringValue===t.stringValue;case 6:return r=t,Ab(e.bytesValue).isEqual(Ab(r.bytesValue));case 7:return e.referenceValue===t.referenceValue;case 8:return n=t,kb((r=e).geoPointValue.latitude)===kb(n.geoPointValue.latitude)&&kb(r.geoPointValue.longitude)===kb(n.geoPointValue.longitude);case 2:return function(e,t){if("integerValue"in e&&"integerValue"in t)return kb(e.integerValue)===kb(t.integerValue);if("doubleValue"in e&&"doubleValue"in t){var n=kb(e.doubleValue),r=kb(t.doubleValue);return n===r?Fw(n)===Fw(r):isNaN(n)&&isNaN(r)}return!1}(e,t);case 9:return nw(e.arrayValue.values||[],t.arrayValue.values||[],Fb);case 10:return function(e,t){const n=e.mapValue.fields||{},r=t.mapValue.fields||{};if(pb(n)!==pb(r))return!1;for(const e in n)if(n.hasOwnProperty(e)&&(void 0===r[e]||!Fb(n[e],r[e])))return!1;return!0}(e,t);default:return By()}}function Ub(e,t){return void 0!==(e.values||[]).find(e=>Fb(e,t))}function Vb(e,t){if(e===t)return 0;var n,r,i,s,a=Lb(e),o=Lb(t);if(a!==o)return tw(a,o);switch(a){case 0:case 9007199254740991:return 0;case 1:return tw(e.booleanValue,t.booleanValue);case 2:return r=t,i=kb((n=e).integerValue||n.doubleValue),s=kb(r.integerValue||r.doubleValue),i<s?-1:s<i?1:i===s?0:isNaN(i)?isNaN(s)?0:-1:1;case 3:return qb(e.timestampValue,t.timestampValue);case 4:return qb(Pb(e),Pb(t));case 5:return tw(e.stringValue,t.stringValue);case 6:return function(e,t){const n=Ab(e),r=Ab(t);return n.compareTo(r)}(e.bytesValue,t.bytesValue);case 7:return function(e,t){var n=e.split("/"),r=t.split("/");for(let i=0;i<n.length&&i<r.length;i++){const t=tw(n[i],r[i]);if(0!==t)return t}return tw(n.length,r.length)}(e.referenceValue,t.referenceValue);case 8:return n=e.geoPointValue,r=t.geoPointValue,0!==(s=tw(kb(n.latitude),kb(r.latitude)))?s:tw(kb(n.longitude),kb(r.longitude));case 9:return function(e,t){var n=e.values||[],r=t.values||[];for(let i=0;i<n.length&&i<r.length;++i){const t=Vb(n[i],r[i]);if(t)return t}return tw(n.length,r.length)}(e.arrayValue,t.arrayValue);case 10:return function(e,t){if(e===Ob.mapValue&&t===Ob.mapValue)return 0;if(e===Ob.mapValue)return 1;if(t===Ob.mapValue)return-1;const n=e.fields||{},r=Object.keys(n),i=t.fields||{},s=Object.keys(i);r.sort(),s.sort();for(let o=0;o<r.length&&o<s.length;++o){const t=tw(r[o],s[o]);if(0!==t)return t;var a=Vb(n[r[o]],i[s[o]]);if(0!==a)return a}return tw(r.length,s.length)}(e.mapValue,t.mapValue);default:throw By()}}function qb(e,t){if("string"==typeof e&&"string"==typeof t&&e.length===t.length)return tw(e,t);var n=Sb(e),r=Sb(t),i=tw(n.seconds,r.seconds);return 0!==i?i:tw(n.nanos,r.nanos)}function Bb(e){return function s(e){return"nullValue"in e?"null":"booleanValue"in e?""+e.booleanValue:"integerValue"in e?""+e.integerValue:"doubleValue"in e?""+e.doubleValue:"timestampValue"in e?function(e){const t=Sb(e);return`time(${t.seconds},${t.nanos})`}(e.timestampValue):"stringValue"in e?e.stringValue:"bytesValue"in e?function(e){return Ab(e).toBase64()}(e.bytesValue):"referenceValue"in e?function(e){return uw.fromName(e).toString()}(e.referenceValue):"geoPointValue"in e?function(e){return`geo(${e.latitude},${e.longitude})`}(e.geoPointValue):"arrayValue"in e?function(e){let t="[",n=!0;for(const r of e.values||[])n?n=!1:t+=",",t+=s(r);return t+"]"}(e.arrayValue):"mapValue"in e?function(e){const t=Object.keys(e.fields||{}).sort();let n="{",r=!0;for(const i of t)r?r=!1:n+=",",n+=`${i}:${s(e.fields[i])}`;return n+"}"}(e.mapValue):By()}(e)}function jb(e,t){return{referenceValue:`projects/${e.projectId}/databases/${e.database}/documents/${t.path.canonicalString()}`}}function zb(e){return!!e&&"integerValue"in e}function $b(e){return!!e&&"arrayValue"in e}function Kb(e){return e&&"nullValue"in e}function Wb(e){return e&&"doubleValue"in e&&isNaN(Number(e.doubleValue))}function Gb(e){return e&&"mapValue"in e}function Hb(t){if(t.geoPointValue)return{geoPointValue:Object.assign({},t.geoPointValue)};if(t.timestampValue&&"object"==typeof t.timestampValue)return{timestampValue:Object.assign({},t.timestampValue)};if(t.mapValue){const n={mapValue:{fields:{}}};return fb(t.mapValue.fields,(e,t)=>n.mapValue.fields[e]=Hb(t)),n}if(t.arrayValue){const r={arrayValue:{values:[]}};for(let e=0;e<(t.arrayValue.values||[]).length;++e)r.arrayValue.values[e]=Hb(t.arrayValue.values[e]);return r}return Object.assign({},t)}function Qb(e){return"__max__"===(((e.mapValue||{}).fields||{}).__type__||{}).stringValue}function Yb(e,t){var n=Vb(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?-1:!e.inclusive&&t.inclusive?1:0}function Jb(e,t){var n=Vb(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?1:!e.inclusive&&t.inclusive?-1:0}class Xb{constructor(e){this.value=e}static empty(){return new Xb({mapValue:{}})}field(n){if(n.isEmpty())return this.value;{let e=this.value;for(let t=0;t<n.length-1;++t)if(e=(e.mapValue.fields||{})[n.get(t)],!Gb(e))return null;return e=(e.mapValue.fields||{})[n.lastSegment()],e||null}}set(e,t){this.getFieldsMap(e.popLast())[e.lastSegment()]=Hb(t)}setAll(e){let n=lw.emptyPath(),r={},i=[];e.forEach((e,t)=>{if(!n.isImmediateParentOf(t)){const e=this.getFieldsMap(n);this.applyChanges(e,r,i),r={},i=[],n=t.popLast()}e?r[t.lastSegment()]=Hb(e):i.push(t.lastSegment())});var t=this.getFieldsMap(n);this.applyChanges(t,r,i)}delete(e){const t=this.field(e.popLast());Gb(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return Fb(this.value,e.value)}getFieldsMap(t){let n=this.value;n.mapValue.fields||(n.mapValue={fields:{}});for(let r=0;r<t.length;++r){let e=n.mapValue.fields[t.get(r)];Gb(e)&&e.mapValue.fields||(e={mapValue:{fields:{}}},n.mapValue.fields[t.get(r)]=e),n=e}return n.mapValue.fields}applyChanges(n,e,t){fb(e,(e,t)=>n[e]=t);for(const e of t)delete n[e]}clone(){return new Xb(Hb(this.value))}}class Zb{constructor(e,t,n,r,i,s,a){this.key=e,this.documentType=t,this.version=n,this.readTime=r,this.createTime=i,this.data=s,this.documentState=a}static newInvalidDocument(e){return new Zb(e,0,sw.min(),sw.min(),sw.min(),Xb.empty(),0)}static newFoundDocument(e,t,n,r){return new Zb(e,1,t,sw.min(),n,r,0)}static newNoDocument(e,t){return new Zb(e,2,t,sw.min(),sw.min(),Xb.empty(),0)}static newUnknownDocument(e,t){return new Zb(e,3,t,sw.min(),sw.min(),Xb.empty(),2)}convertToFoundDocument(e,t){return!this.createTime.isEqual(sw.min())||2!==this.documentType&&0!==this.documentType||(this.createTime=e),this.version=e,this.documentType=1,this.data=t,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=Xb.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=Xb.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=sw.min(),this}setReadTime(e){return this.readTime=e,this}get hasLocalMutations(){return 1===this.documentState}get hasCommittedMutations(){return 2===this.documentState}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return 0!==this.documentType}isFoundDocument(){return 1===this.documentType}isNoDocument(){return 2===this.documentType}isUnknownDocument(){return 3===this.documentType}isEqual(e){return e instanceof Zb&&this.key.isEqual(e.key)&&this.version.isEqual(e.version)&&this.documentType===e.documentType&&this.documentState===e.documentState&&this.data.isEqual(e.data)}mutableCopy(){return new Zb(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class eI{constructor(e,t){this.position=e,this.inclusive=t}}function tI(e,t,n){let r=0;for(let i=0;i<e.position.length;i++){const s=t[i],a=e.position[i];if(r=s.field.isKeyField()?uw.comparator(uw.fromName(a.referenceValue),n.key):Vb(a,n.data.field(s.field)),"desc"===s.dir&&(r*=-1),0!==r)break}return r}function nI(e,t){if(null===e)return null===t;if(null===t)return!1;if(e.inclusive!==t.inclusive||e.position.length!==t.position.length)return!1;for(let n=0;n<e.position.length;n++)if(!Fb(e.position[n],t.position[n]))return!1;return!0}class rI{constructor(e,t="asc"){this.field=e,this.dir=t}}class iI{}class sI extends iI{constructor(e,t,n){super(),this.field=e,this.op=t,this.value=n}static create(e,t,n){return e.isKeyField()?"in"===t||"not-in"===t?this.createKeyFieldInFilter(e,t,n):new pI(e,t,n):"array-contains"===t?new vI(e,n):"in"===t?new _I(e,n):"not-in"===t?new yI(e,n):"array-contains-any"===t?new wI(e,n):new sI(e,t,n)}static createKeyFieldInFilter(e,t,n){return new("in"===t?fI:gI)(e,n)}matches(e){var t=e.data.field(this.field);return"!="===this.op?null!==t&&this.matchesComparison(Vb(t,this.value)):null!==t&&Lb(this.value)===Lb(t)&&this.matchesComparison(Vb(t,this.value))}matchesComparison(e){switch(this.op){case"<":return e<0;case"<=":return e<=0;case"==":return 0===e;case"!=":return 0!==e;case">":return 0<e;case">=":return 0<=e;default:return By()}}isInequality(){return 0<=["<","<=",">",">=","!=","not-in"].indexOf(this.op)}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class aI extends iI{constructor(e,t){super(),this.filters=e,this.op=t,this.ue=null}static create(e,t){return new aI(e,t)}matches(t){return oI(this)?void 0===this.filters.find(e=>!e.matches(t)):void 0!==this.filters.find(e=>e.matches(t))}getFlattenedFilters(){return null!==this.ue||(this.ue=this.filters.reduce((e,t)=>e.concat(t.getFlattenedFilters()),[])),this.ue}getFilters(){return Object.assign([],this.filters)}}function oI(e){return"and"===e.op}function cI(e){return"or"===e.op}function lI(e){return uI(e)&&oI(e)}function uI(e){for(const t of e.filters)if(t instanceof aI)return!1;return!0}function hI(e,t){var n=e.filters.concat(t);return aI.create(n,e.op)}function dI(e){return e instanceof sI?`${(t=e).field.canonicalString()} ${t.op} ${Bb(t.value)}`:e instanceof aI?(e=e).op.toString()+" {"+e.getFilters().map(dI).join(" ,")+"}":"Filter";var t}class pI extends sI{constructor(e,t,n){super(e,t,n),this.key=uw.fromName(n.referenceValue)}matches(e){var t=uw.comparator(e.key,this.key);return this.matchesComparison(t)}}class fI extends sI{constructor(e,t){super(e,"in",t),this.keys=mI(0,t)}matches(t){return this.keys.some(e=>e.isEqual(t.key))}}class gI extends sI{constructor(e,t){super(e,"not-in",t),this.keys=mI(0,t)}matches(t){return!this.keys.some(e=>e.isEqual(t.key))}}function mI(e,t){var n;return((null===(n=t.arrayValue)||void 0===n?void 0:n.values)||[]).map(e=>uw.fromName(e.referenceValue))}class vI extends sI{constructor(e,t){super(e,"array-contains",t)}matches(e){var t=e.data.field(this.field);return $b(t)&&Ub(t.arrayValue,this.value)}}class _I extends sI{constructor(e,t){super(e,"in",t)}matches(e){var t=e.data.field(this.field);return null!==t&&Ub(this.value.arrayValue,t)}}class yI extends sI{constructor(e,t){super(e,"not-in",t)}matches(e){if(Ub(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;var t=e.data.field(this.field);return null!==t&&!Ub(this.value.arrayValue,t)}}class wI extends sI{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!$b(t)||!t.arrayValue.values)&&t.arrayValue.values.some(e=>Ub(this.value.arrayValue,e))}}class bI{constructor(e,t=null,n=[],r=[],i=null,s=null,a=null){this.path=e,this.collectionGroup=t,this.orderBy=n,this.filters=r,this.limit=i,this.startAt=s,this.endAt=a,this.ce=null}}function II(e,t=null,n=[],r=[],i=null,s=null,a=null){return new bI(e,t,n,r,i,s,a)}function TI(e){const t=e;if(null===t.ce){let e=t.path.canonicalString();null!==t.collectionGroup&&(e+="|cg:"+t.collectionGroup),e+="|f:",e+=t.filters.map(e=>function t(e){if(e instanceof sI)return e.field.canonicalString()+e.op.toString()+Bb(e.value);if(lI(e))return e.filters.map(e=>t(e)).join(",");var n=e.filters.map(e=>t(e)).join(",");return`${e.op}(${n})`}(e)).join(","),e+="|ob:",e+=t.orderBy.map(e=>function(e){return e.field.canonicalString()+e.dir}(e)).join(","),Lw(t.limit)||(e+="|l:",e+=t.limit),t.startAt&&(e+="|lb:",e+=t.startAt.inclusive?"b:":"a:",e+=t.startAt.position.map(e=>Bb(e)).join(",")),t.endAt&&(e+="|ub:",e+=t.endAt.inclusive?"a:":"b:",e+=t.endAt.position.map(e=>Bb(e)).join(",")),t.ce=e}return t.ce}function EI(e,t){if(e.limit!==t.limit)return!1;if(e.orderBy.length!==t.orderBy.length)return!1;for(let i=0;i<e.orderBy.length;i++)if(n=e.orderBy[i],r=t.orderBy[i],n.dir!==r.dir||!n.field.isEqual(r.field))return!1;var n,r;if(e.filters.length!==t.filters.length)return!1;for(let s=0;s<e.filters.length;s++)if(!function r(e,t){return e instanceof sI?(n=e,(s=t)instanceof sI&&n.op===s.op&&n.field.isEqual(s.field)&&Fb(n.value,s.value)):e instanceof aI?(i=t)instanceof aI&&e.op===i.op&&e.filters.length===i.filters.length&&e.filters.reduce((e,t,n)=>e&&r(t,i.filters[n]),!0):void By();var i,n,s}(e.filters[s],t.filters[s]))return!1;return e.collectionGroup===t.collectionGroup&&!!e.path.isEqual(t.path)&&!!nI(e.startAt,t.startAt)&&nI(e.endAt,t.endAt)}function CI(e){return uw.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}function SI(e,t){return e.filters.filter(e=>e instanceof sI&&e.field.isEqual(t))}function kI(t,n,r){let i=Mb,s=!0;for(const r of SI(t,n)){let e=Mb,t=!0;switch(r.op){case"<":case"<=":e="nullValue"in(a=r.value)?Mb:"booleanValue"in a?{booleanValue:!1}:"integerValue"in a||"doubleValue"in a?{doubleValue:NaN}:"timestampValue"in a?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"stringValue"in a?{stringValue:""}:"bytesValue"in a?{bytesValue:""}:"referenceValue"in a?jb(xb.empty(),uw.empty()):"geoPointValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"arrayValue"in a?{arrayValue:{}}:"mapValue"in a?{mapValue:{}}:By();break;case"==":case"in":case">=":e=r.value;break;case">":e=r.value,t=!1;break;case"!=":case"not-in":e=Mb}Yb({value:i,inclusive:s},{value:e,inclusive:t})<0&&(i=e,s=t)}var a;if(null!==r)for(let e=0;e<t.orderBy.length;++e)if(t.orderBy[e].field.isEqual(n)){const t=r.position[e];Yb({value:i,inclusive:s},{value:t,inclusive:r.inclusive})<0&&(i=t,s=r.inclusive);break}return{value:i,inclusive:s}}function AI(t,n,r){let i=Ob,s=!0;for(const r of SI(t,n)){let e=Ob,t=!0;switch(r.op){case">=":case">":e="nullValue"in(a=r.value)?{booleanValue:!1}:"booleanValue"in a?{doubleValue:NaN}:"integerValue"in a||"doubleValue"in a?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"timestampValue"in a?{stringValue:""}:"stringValue"in a?{bytesValue:""}:"bytesValue"in a?jb(xb.empty(),uw.empty()):"referenceValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"geoPointValue"in a?{arrayValue:{}}:"arrayValue"in a?{mapValue:{}}:"mapValue"in a?Ob:By(),t=!1;break;case"==":case"in":case"<=":e=r.value;break;case"<":e=r.value,t=!1;break;case"!=":case"not-in":e=Ob}0<Jb({value:i,inclusive:s},{value:e,inclusive:t})&&(i=e,s=t)}var a;if(null!==r)for(let e=0;e<t.orderBy.length;++e)if(t.orderBy[e].field.isEqual(n)){const t=r.position[e];0<Jb({value:i,inclusive:s},{value:t,inclusive:r.inclusive})&&(i=t,s=r.inclusive);break}return{value:i,inclusive:s}}class NI{constructor(e,t=null,n=[],r=[],i=null,s="F",a=null,o=null){this.path=e,this.collectionGroup=t,this.explicitOrderBy=n,this.filters=r,this.limit=i,this.limitType=s,this.startAt=a,this.endAt=o,this.le=null,this.he=null,this.Pe=null,this.startAt,this.endAt}}function RI(e,t,n,r,i,s,a,o){return new NI(e,t,n,r,i,s,a,o)}function PI(e){return new NI(e)}function DI(e){return 0===e.filters.length&&null===e.limit&&null==e.startAt&&null==e.endAt&&(0===e.explicitOrderBy.length||1===e.explicitOrderBy.length&&e.explicitOrderBy[0].field.isKeyField())}function xI(e){return null!==e.collectionGroup}function OI(t){const n=t;if(null===n.le){n.le=[];const t=new Set;for(const i of n.explicitOrderBy)n.le.push(i),t.add(i.field.canonicalString());const r=0<n.explicitOrderBy.length?n.explicitOrderBy[n.explicitOrderBy.length-1].dir:"asc",e=function(e){let t=new yb(lw.comparator);return e.filters.forEach(e=>{e.getFlattenedFilters().forEach(e=>{e.isInequality()&&(t=t.add(e.field))})}),t}(n);e.forEach(e=>{t.has(e.canonicalString())||e.isKeyField()||n.le.push(new rI(e,r))}),t.has(lw.keyField().canonicalString())||n.le.push(new rI(lw.keyField(),r))}return n.le}function MI(e){const t=e;return t.he||(t.he=function(e,t){if("F"===e.limitType)return II(e.path,e.collectionGroup,t,e.filters,e.limit,e.startAt,e.endAt);{t=t.map(e=>{var t="desc"===e.dir?"asc":"desc";return new rI(e.field,t)});var n=e.endAt?new eI(e.endAt.position,e.endAt.inclusive):null,r=e.startAt?new eI(e.startAt.position,e.startAt.inclusive):null;return II(e.path,e.collectionGroup,t,e.filters,e.limit,n,r)}}(t,OI(e))),t.he}function LI(e,t){var n=e.filters.concat([t]);return new NI(e.path,e.collectionGroup,e.explicitOrderBy.slice(),n,e.limit,e.limitType,e.startAt,e.endAt)}function FI(e,t,n){return new NI(e.path,e.collectionGroup,e.explicitOrderBy.slice(),e.filters.slice(),t,n,e.startAt,e.endAt)}function UI(e,t){return EI(MI(e),MI(t))&&e.limitType===t.limitType}function VI(e){return`${TI(MI(e))}|lt:${e.limitType}`}function qI(e){return`Query(target=${function(e){let t=e.path.canonicalString();return null!==e.collectionGroup&&(t+=" collectionGroup="+e.collectionGroup),0<e.filters.length&&(t+=`, filters: [${e.filters.map(e=>dI(e)).join(", ")}]`),Lw(e.limit)||(t+=", limit: "+e.limit),0<e.orderBy.length&&(t+=`, orderBy: [${e.orderBy.map(e=>function(e){return`${e.field.canonicalString()} (${e.dir})`}(e)).join(", ")}]`),e.startAt&&(t+=", startAt: ",t+=e.startAt.inclusive?"b:":"a:",t+=e.startAt.position.map(e=>Bb(e)).join(",")),e.endAt&&(t+=", endAt: ",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map(e=>Bb(e)).join(",")),`Target(${t})`}(MI(e))}; limitType=${e.limitType})`}function BI(e,t){return t.isFoundDocument()&&(i=e,a=(s=t).key.path,null!==i.collectionGroup?s.key.hasCollectionId(i.collectionGroup)&&i.path.isPrefixOf(a):uw.isDocumentKey(i.path)?i.path.isEqual(a):i.path.isImmediateParentOf(a))&&function(e,t){for(const n of OI(e))if(!n.field.isKeyField()&&null===t.data.field(n.field))return;return 1}(e,t)&&function(e,t){for(const n of e.filters)if(!n.matches(t))return;return 1}(e,t)&&(i=t,(!(t=e).startAt||(n=t.startAt,e=OI(t),r=tI(n,e,i),n.inclusive?r<=0:r<0))&&(!t.endAt||(n=t.endAt,t=OI(t),r=tI(n,t,i),n.inclusive?0<=r:0<r)));var n,r,i,s,a}function jI(e){return e.collectionGroup||(e.path.length%2==1?e.path.lastSegment():e.path.get(e.path.length-2))}function zI(i){return(e,t)=>{let n=!1;for(const r of OI(i)){const i=function(e,t,n){var r=e.field.isKeyField()?uw.comparator(t.key,n.key):function(e,t,n){var r=t.data.field(e),i=n.data.field(e);return null!==r&&null!==i?Vb(r,i):By()}(e.field,t,n);switch(e.dir){case"asc":return r;case"desc":return-1*r;default:return By()}}(r,e,t);if(0!==i)return i;n=n||r.field.isKeyField()}return 0}}class $I{constructor(e,t){this.mapKeyFn=e,this.equalsFn=t,this.inner={},this.innerSize=0}get(e){const t=this.mapKeyFn(e),n=this.inner[t];if(void 0!==n)for(const[t,r]of n)if(this.equalsFn(t,e))return r}has(e){return void 0!==this.get(e)}set(e,t){const n=this.mapKeyFn(e),r=this.inner[n];if(void 0===r)return this.inner[n]=[[e,t]],void this.innerSize++;for(let i=0;i<r.length;i++)if(this.equalsFn(r[i][0],e))return void(r[i]=[e,t]);r.push([e,t]),this.innerSize++}delete(e){const t=this.mapKeyFn(e),n=this.inner[t];if(void 0===n)return!1;for(let r=0;r<n.length;r++)if(this.equalsFn(n[r][0],e))return 1===n.length?delete this.inner[t]:n.splice(r,1),this.innerSize--,!0;return!1}forEach(r){fb(this.inner,(e,t)=>{for(const[e,n]of t)r(e,n)})}isEmpty(){return gb(this.inner)}size(){return this.innerSize}}const KI=new mb(uw.comparator);const WI=new mb(uw.comparator);function GI(...e){let t=WI;for(const n of e)t=t.insert(n.key,n);return t}function HI(e){let n=WI;return e.forEach((e,t)=>n=n.insert(e,t.overlayedDocument)),n}function QI(){return new $I(e=>e.toString(),(e,t)=>e.isEqual(t))}const YI=new mb(uw.comparator),JI=new yb(uw.comparator);function XI(...e){let t=JI;for(const n of e)t=t.add(n);return t}const ZI=new yb(tw);function eT(e,t){if(e.useProto3Json){if(isNaN(t))return{doubleValue:"NaN"};if(t===1/0)return{doubleValue:"Infinity"};if(t===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:Fw(t)?"-0":t}}function tT(e){return{integerValue:""+e}}function nT(e,t){return Uw(t)?tT(t):eT(e,t)}class rT{constructor(){this._=void 0}}function iT(e,t){return e instanceof uT?zb(e=t)||(e=e)&&"doubleValue"in e?t:{integerValue:0}:null}class sT extends rT{}class aT extends rT{constructor(e){super(),this.elements=e}}function oT(e,t){const n=dT(t);for(const t of e.elements)n.some(e=>Fb(e,t))||n.push(t);return{arrayValue:{values:n}}}class cT extends rT{constructor(e){super(),this.elements=e}}function lT(e,t){let n=dT(t);for(const t of e.elements)n=n.filter(e=>!Fb(e,t));return{arrayValue:{values:n}}}class uT extends rT{constructor(e,t){super(),this.serializer=e,this.Ie=t}}function hT(e){return kb(e.integerValue||e.doubleValue)}function dT(e){return $b(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}class pT{constructor(e,t){this.field=e,this.transform=t}}class fT{constructor(e,t){this.version=e,this.transformResults=t}}class gT{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new gT}static exists(e){return new gT(void 0,e)}static updateTime(e){return new gT(e)}get isNone(){return void 0===this.updateTime&&void 0===this.exists}isEqual(e){return this.exists===e.exists&&(this.updateTime?!!e.updateTime&&this.updateTime.isEqual(e.updateTime):!e.updateTime)}}function mT(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class vT{}function _T(e,n){if(!e.hasLocalMutations||n&&0===n.fields.length)return null;if(null===n)return e.isNoDocument()?new kT(e.key,gT.none()):new IT(e.key,e.data,gT.none());{const i=e.data,s=Xb.empty();let t=new yb(lw.comparator);for(var r of n.fields)if(!t.has(r)){let e=i.field(r);null===e&&1<r.length&&(r=r.popLast(),e=i.field(r)),null===e?s.delete(r):s.set(r,e),t=t.add(r)}return new TT(e.key,s,new Ib(t.toArray()),gT.none())}}function yT(e,t,n){e instanceof IT?function(e,t,n){const r=e.value.clone(),i=CT(e.fieldTransforms,t,n.transformResults);r.setAll(i),t.convertToFoundDocument(n.version,r).setHasCommittedMutations()}(e,t,n):e instanceof TT?function(e,t,n){if(!mT(e.precondition,t))return t.convertToUnknownDocument(n.version);const r=CT(e.fieldTransforms,t,n.transformResults),i=t.data;i.setAll(ET(e)),i.setAll(r),t.convertToFoundDocument(n.version,i).setHasCommittedMutations()}(e,t,n):t.convertToNoDocument(n.version).setHasCommittedMutations()}function wT(e,t,n,r){return e instanceof IT?function(e,t,n,r){if(!mT(e.precondition,t))return n;const i=e.value.clone(),s=ST(e.fieldTransforms,r,t);return i.setAll(s),t.convertToFoundDocument(t.version,i).setHasLocalMutations(),null}(e,t,n,r):e instanceof TT?function(e,t,n,r){if(!mT(e.precondition,t))return n;const i=ST(e.fieldTransforms,r,t),s=t.data;return s.setAll(ET(e)),s.setAll(i),t.convertToFoundDocument(t.version,s).setHasLocalMutations(),null===n?null:n.unionWith(e.fieldMask.fields).unionWith(e.fieldTransforms.map(e=>e.field))}(e,t,n,r):(t=t,n=n,mT(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):n)}function bT(e,t){return e.type===t.type&&!!e.key.isEqual(t.key)&&!!e.precondition.isEqual(t.precondition)&&(n=e.fieldTransforms,r=t.fieldTransforms,!!(void 0===n&&void 0===r||n&&r&&nw(n,r,(e,t)=>function(e,t){return e.field.isEqual(t.field)&&(e=e.transform,t=t.transform,e instanceof aT&&t instanceof aT||e instanceof cT&&t instanceof cT?nw(e.elements,t.elements,Fb):e instanceof uT&&t instanceof uT?Fb(e.Ie,t.Ie):e instanceof sT&&t instanceof sT)}(e,t)))&&(0===e.type?e.value.isEqual(t.value):1!==e.type||e.data.isEqual(t.data)&&e.fieldMask.isEqual(t.fieldMask)));var n,r}class IT extends vT{constructor(e,t,n,r=[]){super(),this.key=e,this.value=t,this.precondition=n,this.fieldTransforms=r,this.type=0}getFieldMask(){return null}}class TT extends vT{constructor(e,t,n,r,i=[]){super(),this.key=e,this.data=t,this.fieldMask=n,this.precondition=r,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function ET(n){const r=new Map;return n.fieldMask.fields.forEach(e=>{var t;e.isEmpty()||(t=n.data.field(e),r.set(e,t))}),r}function CT(e,t,n){const r=new Map;jy(e.length===n.length);for(let u=0;u<n.length;u++){var i=e[u],s=i.transform,a=t.data.field(i.field);r.set(i.field,(o=s,c=a,l=n[u],o instanceof aT?oT(o,c):o instanceof cT?lT(o,c):l))}var o,c,l;return r}function ST(e,t,n){const r=new Map;for(const l of e){const e=l.transform,u=n.data.field(l.field);r.set(l.field,(i=e,s=u,a=t,c=o=void 0,i instanceof sT?function(e,t){const n={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:e.seconds,nanos:e.nanoseconds}}}};return(t=t&&Nb(t)?Rb(t):t)&&(n.fields.__previous_value__=t),{mapValue:n}}(a,s):i instanceof aT?oT(i,s):i instanceof cT?lT(i,s):(o=iT(i=i,s),c=hT(o)+hT(i.Ie),zb(o)&&zb(i.Ie)?tT(c):eT(i.serializer,c))))}var i,s,a,o,c;return r}class kT extends vT{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=2,this.fieldTransforms=[]}getFieldMask(){return null}}class AT extends vT{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=3,this.fieldTransforms=[]}getFieldMask(){return null}}class NT{constructor(e,t,n,r){this.batchId=e,this.localWriteTime=t,this.baseMutations=n,this.mutations=r}applyToRemoteDocument(e,t){var n=t.mutationResults;for(let r=0;r<this.mutations.length;r++){const i=this.mutations[r];i.key.isEqual(e.key)&&yT(i,e,n[r])}}applyToLocalView(e,t){for(const n of this.baseMutations)n.key.isEqual(e.key)&&(t=wT(n,e,t,this.localWriteTime));for(const r of this.mutations)r.key.isEqual(e.key)&&(t=wT(r,e,t,this.localWriteTime));return t}applyToLocalDocumentSet(s,a){const o=QI();return this.mutations.forEach(e=>{const t=s.get(e.key),n=t.overlayedDocument;let r=this.applyToLocalView(n,t.mutatedFields);r=a.has(e.key)?null:r;var i=_T(n,r);null!==i&&o.set(e.key,i),n.isValidDocument()||n.convertToNoDocument(sw.min())}),o}keys(){return this.mutations.reduce((e,t)=>e.add(t.key),XI())}isEqual(e){return this.batchId===e.batchId&&nw(this.mutations,e.mutations,(e,t)=>bT(e,t))&&nw(this.baseMutations,e.baseMutations,(e,t)=>bT(e,t))}}class RT{constructor(e,t,n,r){this.batch=e,this.commitVersion=t,this.mutationResults=n,this.docVersions=r}static from(e,t,n){jy(e.mutations.length===n.length);let r=YI;var i=e.mutations;for(let s=0;s<i.length;s++)r=r.insert(i[s].key,n[s].version);return new RT(e,t,n,r)}}class PT{constructor(e,t){this.largestBatchId=e,this.mutation=t}getKey(){return this.mutation.key}isEqual(e){return null!==e&&this.mutation===e.mutation}toString(){return`Overlay{\n largestBatchId: ${this.largestBatchId},\n mutation: ${this.mutation.toString()}\n }`}}class DT{constructor(e,t){this.count=e,this.unchangedNames=t}}function xT(e){switch(e){default:return By();case zy.CANCELLED:case zy.UNKNOWN:case zy.DEADLINE_EXCEEDED:case zy.RESOURCE_EXHAUSTED:case zy.INTERNAL:case zy.UNAVAILABLE:case zy.UNAUTHENTICATED:return!1;case zy.INVALID_ARGUMENT:case zy.NOT_FOUND:case zy.ALREADY_EXISTS:case zy.PERMISSION_DENIED:case zy.FAILED_PRECONDITION:case zy.ABORTED:case zy.OUT_OF_RANGE:case zy.UNIMPLEMENTED:case zy.DATA_LOSS:return!0}}function OT(e){if(void 0===e)return Uy("GRPC error has no .code"),zy.UNKNOWN;switch(e){case by.OK:return zy.OK;case by.CANCELLED:return zy.CANCELLED;case by.UNKNOWN:return zy.UNKNOWN;case by.DEADLINE_EXCEEDED:return zy.DEADLINE_EXCEEDED;case by.RESOURCE_EXHAUSTED:return zy.RESOURCE_EXHAUSTED;case by.INTERNAL:return zy.INTERNAL;case by.UNAVAILABLE:return zy.UNAVAILABLE;case by.UNAUTHENTICATED:return zy.UNAUTHENTICATED;case by.INVALID_ARGUMENT:return zy.INVALID_ARGUMENT;case by.NOT_FOUND:return zy.NOT_FOUND;case by.ALREADY_EXISTS:return zy.ALREADY_EXISTS;case by.PERMISSION_DENIED:return zy.PERMISSION_DENIED;case by.FAILED_PRECONDITION:return zy.FAILED_PRECONDITION;case by.ABORTED:return zy.ABORTED;case by.OUT_OF_RANGE:return zy.OUT_OF_RANGE;case by.UNIMPLEMENTED:return zy.UNIMPLEMENTED;case by.DATA_LOSS:return zy.DATA_LOSS;default:return By()}}function MT(){return new TextEncoder}(Et=by=by||{})[Et.OK=0]="OK",Et[Et.CANCELLED=1]="CANCELLED",Et[Et.UNKNOWN=2]="UNKNOWN",Et[Et.INVALID_ARGUMENT=3]="INVALID_ARGUMENT",Et[Et.DEADLINE_EXCEEDED=4]="DEADLINE_EXCEEDED",Et[Et.NOT_FOUND=5]="NOT_FOUND",Et[Et.ALREADY_EXISTS=6]="ALREADY_EXISTS",Et[Et.PERMISSION_DENIED=7]="PERMISSION_DENIED",Et[Et.UNAUTHENTICATED=16]="UNAUTHENTICATED",Et[Et.RESOURCE_EXHAUSTED=8]="RESOURCE_EXHAUSTED",Et[Et.FAILED_PRECONDITION=9]="FAILED_PRECONDITION",Et[Et.ABORTED=10]="ABORTED",Et[Et.OUT_OF_RANGE=11]="OUT_OF_RANGE",Et[Et.UNIMPLEMENTED=12]="UNIMPLEMENTED",Et[Et.INTERNAL=13]="INTERNAL",Et[Et.UNAVAILABLE=14]="UNAVAILABLE",Et[Et.DATA_LOSS=15]="DATA_LOSS";const LT=new Py([4294967295,4294967295],0);function FT(e){const t=MT().encode(e),n=new Ry;return n.update(t),new Uint8Array(n.digest())}function UT(e){const t=new DataView(e.buffer),n=t.getUint32(0,!0),r=t.getUint32(4,!0),i=t.getUint32(8,!0),s=t.getUint32(12,!0);return[new Py([n,r],0),new Py([i,s],0)]}class VT{constructor(e,t,n){if(this.bitmap=e,this.padding=t,this.hashCount=n,t<0||8<=t)throw new qT(`Invalid padding: ${t}`);if(n<0)throw new qT(`Invalid hash count: ${n}`);if(0<e.length&&0===this.hashCount)throw new qT(`Invalid hash count: ${n}`);if(0===e.length&&0!==t)throw new qT(`Invalid padding when bitmap length is 0: ${t}`);this.Te=8*e.length-t,this.Ee=Py.fromNumber(this.Te)}de(e,t,n){let r=e.add(t.multiply(Py.fromNumber(n)));return 1===r.compare(LT)&&(r=new Py([r.getBits(0),r.getBits(1)],0)),r.modulo(this.Ee).toNumber()}Ae(e){return 0!=(this.bitmap[Math.floor(e/8)]&1<<e%8)}mightContain(e){if(0===this.Te)return!1;const t=FT(e),[n,r]=UT(t);for(let i=0;i<this.hashCount;i++){const t=this.de(n,r,i);if(!this.Ae(t))return!1}return!0}static create(e,t,n){const r=e%8==0?0:8-e%8,i=new Uint8Array(Math.ceil(e/8)),s=new VT(i,r,t);return n.forEach(e=>s.insert(e)),s}insert(t){if(0!==this.Te){const n=FT(t),[r,i]=UT(n);for(let e=0;e<this.hashCount;e++){const n=this.de(r,i,e);this.Re(n)}}}Re(e){var t=Math.floor(e/8);this.bitmap[t]|=1<<e%8}}class qT extends Error{constructor(){super(...arguments),this.name="BloomFilterError"}}class BT{constructor(e,t,n,r,i){this.snapshotVersion=e,this.targetChanges=t,this.targetMismatches=n,this.documentUpdates=r,this.resolvedLimboDocuments=i}static createSynthesizedRemoteEventForCurrentChange(e,t,n){const r=new Map;return r.set(e,jT.createSynthesizedTargetChangeForCurrentChange(e,t,n)),new BT(sw.min(),r,new mb(tw),KI,XI())}}class jT{constructor(e,t,n,r,i){this.resumeToken=e,this.current=t,this.addedDocuments=n,this.modifiedDocuments=r,this.removedDocuments=i}static createSynthesizedTargetChangeForCurrentChange(e,t,n){return new jT(n,t,XI(),XI(),XI())}}class zT{constructor(e,t,n,r){this.Ve=e,this.removedTargetIds=t,this.key=n,this.me=r}}class $T{constructor(e,t){this.targetId=e,this.fe=t}}class KT{constructor(e,t,n=Eb.EMPTY_BYTE_STRING,r=null){this.state=e,this.targetIds=t,this.resumeToken=n,this.cause=r}}class WT{constructor(){this.ge=0,this.pe=QT(),this.ye=Eb.EMPTY_BYTE_STRING,this.we=!1,this.Se=!0}get current(){return this.we}get resumeToken(){return this.ye}get be(){return 0!==this.ge}get De(){return this.Se}Ce(e){0<e.approximateByteSize()&&(this.Se=!0,this.ye=e)}ve(){let n=XI(),r=XI(),i=XI();return this.pe.forEach((e,t)=>{switch(t){case 0:n=n.add(e);break;case 2:r=r.add(e);break;case 1:i=i.add(e);break;default:By()}}),new jT(this.ye,this.we,n,r,i)}Fe(){this.Se=!1,this.pe=QT()}Me(e,t){this.Se=!0,this.pe=this.pe.insert(e,t)}xe(e){this.Se=!0,this.pe=this.pe.remove(e)}Oe(){this.ge+=1}Ne(){--this.ge,jy(0<=this.ge)}Be(){this.Se=!0,this.we=!0}}class GT{constructor(e){this.Le=e,this.ke=new Map,this.qe=KI,this.Qe=HT(),this.Ke=new mb(tw)}$e(e){for(const t of e.Ve)e.me&&e.me.isFoundDocument()?this.Ue(t,e.me):this.We(t,e.key,e.me);for(const n of e.removedTargetIds)this.We(n,e.key,e.me)}Ge(n){this.forEachTarget(n,e=>{const t=this.ze(e);switch(n.state){case 0:this.je(e)&&t.Ce(n.resumeToken);break;case 1:t.Ne(),t.be||t.Fe(),t.Ce(n.resumeToken);break;case 2:t.Ne(),t.be||this.removeTarget(e);break;case 3:this.je(e)&&(t.Be(),t.Ce(n.resumeToken));break;case 4:this.je(e)&&(this.He(e),t.Ce(n.resumeToken));break;default:By()}})}forEachTarget(e,n){0<e.targetIds.length?e.targetIds.forEach(n):this.ke.forEach((e,t)=>{this.je(t)&&n(t)})}Je(e){const t=e.targetId,n=e.fe.count,r=this.Ye(t);if(r){var i=r.target;if(CI(i))if(0===n){const e=new uw(i.path);this.We(t,e,Zb.newNoDocument(e,sw.min()))}else jy(1===n);else{const r=this.Ze(t);if(r!==n){const n=this.Xe(e),s=n?this.et(n,e,r):1;if(0!==s){this.He(t);const e=2===s?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch";this.Ke=this.Ke.insert(t,e)}}}}}Xe(e){var t=e.fe.unchangedNames;if(!t||!t.bits)return null;var{bits:{bitmap:n="",padding:r=0},hashCount:t=0}=t;let i,s;try{i=Ab(n).toUint8Array()}catch(e){if(e instanceof Tb)return Vy("Decoding the base64 bloom filter in existence filter failed ("+e.message+"); ignoring the bloom filter and falling back to full re-query."),null;throw e}try{s=new VT(i,r,t)}catch(e){return Vy(e instanceof qT?"BloomFilter error: ":"Applying bloom filter failed: ",e),null}return 0===s.Te?null:s}et(e,t,n){return t.fe.count===n-this.rt(e,t.targetId)?0:2}rt(n,r){const e=this.Le.getRemoteKeysForTarget(r);let i=0;return e.forEach(e=>{var t=this.Le.nt(),t=`projects/${t.projectId}/databases/${t.database}/documents/${e.path.canonicalString()}`;n.mightContain(t)||(this.We(r,e,null),i++)}),i}it(r){const i=new Map;this.ke.forEach((e,t)=>{var n=this.Ye(t);if(n){if(e.current&&CI(n.target)){const i=new uw(n.target.path);null!==this.qe.get(i)||this.st(t,i)||this.We(t,i,Zb.newNoDocument(i,r))}e.De&&(i.set(t,e.ve()),e.Fe())}});let s=XI();this.Qe.forEach((e,t)=>{let n=!0;t.forEachWhile(e=>{var t=this.Ye(e);return!t||"TargetPurposeLimboResolution"===t.purpose||(n=!1)}),n&&(s=s.add(e))}),this.qe.forEach((e,t)=>t.setReadTime(r));var e=new BT(r,i,this.Ke,this.qe,s);return this.qe=KI,this.Qe=HT(),this.Ke=new mb(tw),e}Ue(e,t){var n;this.je(e)&&(n=this.st(e,t.key)?2:0,this.ze(e).Me(t.key,n),this.qe=this.qe.insert(t.key,t),this.Qe=this.Qe.insert(t.key,this.ot(t.key).add(e)))}We(e,t,n){if(this.je(e)){const r=this.ze(e);this.st(e,t)?r.Me(t,1):r.xe(t),this.Qe=this.Qe.insert(t,this.ot(t).delete(e)),n&&(this.qe=this.qe.insert(t,n))}}removeTarget(e){this.ke.delete(e)}Ze(e){var t=this.ze(e).ve();return this.Le.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}Oe(e){this.ze(e).Oe()}ze(e){let t=this.ke.get(e);return t||(t=new WT,this.ke.set(e,t)),t}ot(e){let t=this.Qe.get(e);return t||(t=new yb(tw),this.Qe=this.Qe.insert(e,t)),t}je(e){var t=null!==this.Ye(e);return t||Fy("WatchChangeAggregator","Detected inactive target",e),t}Ye(e){var t=this.ke.get(e);return t&&t.be?null:this.Le._t(e)}He(t){this.ke.set(t,new WT),this.Le.getRemoteKeysForTarget(t).forEach(e=>{this.We(t,e,null)})}st(e,t){return this.Le.getRemoteKeysForTarget(e).has(t)}}function HT(){return new mb(uw.comparator)}function QT(){return new mb(uw.comparator)}const YT={asc:"ASCENDING",desc:"DESCENDING"},JT={"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"},XT={and:"AND",or:"OR"};class ZT{constructor(e,t){this.databaseId=e,this.useProto3Json=t}}function e0(e,t){return e.useProto3Json||Lw(t)?t:{value:t}}function t0(e,t){return e.useProto3Json?`${new Date(1e3*t.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+t.nanoseconds).slice(-9)}Z`:{seconds:""+t.seconds,nanos:t.nanoseconds}}function n0(e,t){return e.useProto3Json?t.toBase64():t.toUint8Array()}function r0(e){return jy(!!e),sw.fromTimestamp((t=Sb(e),new iw(t.seconds,t.nanos)));var t}function i0(e,t){return s0(e,t).canonicalString()}function s0(e,t){const n=(e=e,new ow(["projects",e.projectId,"databases",e.database]).child("documents"));return void 0===t?n:n.child(t)}function a0(e){var t=ow.fromString(e);return jy(E0(t)),t}function o0(e,t){return i0(e.databaseId,t.path)}function c0(e,t){const n=a0(t);if(n.get(1)!==e.databaseId.projectId)throw new $y(zy.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+n.get(1)+" vs "+e.databaseId.projectId);if(n.get(3)!==e.databaseId.database)throw new $y(zy.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+n.get(3)+" vs "+e.databaseId.database);return new uw(d0(n))}function l0(e,t){return i0(e.databaseId,t)}function u0(e){var t=a0(e);return 4===t.length?ow.emptyPath():d0(t)}function h0(e){return new ow(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function d0(e){return jy(4<e.length&&"documents"===e.get(4)),e.popFirst(5)}function p0(e,t,n){return{name:o0(e,t),fields:n.value.mapValue.fields}}function f0(e,t,n){const r=c0(e,t.name),i=r0(t.updateTime),s=t.createTime?r0(t.createTime):sw.min(),a=new Xb({mapValue:{fields:t.fields}}),o=Zb.newFoundDocument(r,i,s,a);return n&&o.setHasCommittedMutations(),n?o.setHasCommittedMutations():o}function g0(e,t){let n;if(t instanceof IT)n={update:p0(e,t.key,t.value)};else if(t instanceof kT)n={delete:o0(e,t.key)};else if(t instanceof TT)n={update:p0(e,t.key,t.data),updateMask:function(e){const t=[];return e.fields.forEach(e=>t.push(e.canonicalString())),{fieldPaths:t}}(t.fieldMask)};else{if(!(t instanceof AT))return By();n={verify:o0(e,t.key)}}return 0<t.fieldTransforms.length&&(n.updateTransforms=t.fieldTransforms.map(e=>function(e){var t=e.transform;if(t instanceof sT)return{fieldPath:e.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(t instanceof aT)return{fieldPath:e.field.canonicalString(),appendMissingElements:{values:t.elements}};if(t instanceof cT)return{fieldPath:e.field.canonicalString(),removeAllFromArray:{values:t.elements}};if(t instanceof uT)return{fieldPath:e.field.canonicalString(),increment:t.Ie};throw By()}(e))),t.precondition.isNone||(n.currentDocument=(r=e,void 0!==(e=t.precondition).updateTime?{updateTime:(t=e.updateTime,t0(r,t.toTimestamp()))}:void 0!==e.exists?{exists:e.exists}:By())),n;var r}function m0(t,e){const n=e.currentDocument?void 0!==(i=e.currentDocument).updateTime?gT.updateTime(r0(i.updateTime)):void 0!==i.exists?gT.exists(i.exists):gT.none():gT.none(),r=e.updateTransforms?e.updateTransforms.map(e=>function(e,t){let n=null;if("setToServerValue"in t)jy("REQUEST_TIME"===t.setToServerValue),n=new sT;else if("appendMissingElements"in t){const e=t.appendMissingElements.values||[];n=new aT(e)}else if("removeAllFromArray"in t){const e=t.removeAllFromArray.values||[];n=new cT(e)}else"increment"in t?n=new uT(e,t.increment):By();var r=lw.fromServerFormat(t.fieldPath);return new pT(r,n)}(t,e)):[];var i;if(e.update){e.update.name;var s=c0(t,e.update.name),a=new Xb({mapValue:{fields:e.update.fields}});if(e.updateMask){const t=function(e){const t=e.fieldPaths||[];return new Ib(t.map(e=>lw.fromServerFormat(e)))}(e.updateMask);return new TT(s,a,t,n,r)}return new IT(s,a,n,r)}if(e.delete){const r=c0(t,e.delete);return new kT(r,n)}if(e.verify){const r=c0(t,e.verify);return new AT(r,n)}return By()}function v0(e,t){return{documents:[l0(e,t.path)]}}function _0(e,t){const n={structuredQuery:{}},r=t.path;let i;null!==t.collectionGroup?(i=r,n.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(i=r.popLast(),n.structuredQuery.from=[{collectionId:r.lastSegment()}]),n.parent=l0(e,i);var s=function(e){if(0!==e.length)return function n(e){return e instanceof sI?function(e){if("=="===e.op){if(Wb(e.value))return{unaryFilter:{field:I0(e.field),op:"IS_NAN"}};if(Kb(e.value))return{unaryFilter:{field:I0(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(Wb(e.value))return{unaryFilter:{field:I0(e.field),op:"IS_NOT_NAN"}};if(Kb(e.value))return{unaryFilter:{field:I0(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:I0(e.field),op:w0(e.op),value:e.value}}}(e):e instanceof aI?function(e){const t=e.getFilters().map(e=>n(e));return 1===t.length?t[0]:{compositeFilter:{op:b0(e.op),filters:t}}}(e):By()}(aI.create(e,"and"))}(t.filters);s&&(n.structuredQuery.where=s);s=function(e){if(0!==e.length)return e.map(e=>function(e){return{field:I0(e.field),direction:(e=e.dir,YT[e])}}(e))}(t.orderBy);s&&(n.structuredQuery.orderBy=s);s=e0(e,t.limit);return null!==s&&(n.structuredQuery.limit=s),t.startAt&&(n.structuredQuery.startAt={before:(e=t.startAt).inclusive,values:e.position}),t.endAt&&(n.structuredQuery.endAt={before:!(t=t.endAt).inclusive,values:t.position}),{ut:n,parent:i}}function y0(e){let t=u0(e.parent);var n,r,i,s=e.structuredQuery,a=s.from?s.from.length:0;let o=null;if(0<a){jy(1===a);const p=s.from[0];p.allDescendants?o=p.collectionId:t=t.child(p.collectionId)}let c=[];s.where&&(c=function(e){const t=function t(e){return void 0!==e.unaryFilter?function(e){switch(e.unaryFilter.op){case"IS_NAN":const t=T0(e.unaryFilter.field);return sI.create(t,"==",{doubleValue:NaN});case"IS_NULL":const n=T0(e.unaryFilter.field);return sI.create(n,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const r=T0(e.unaryFilter.field);return sI.create(r,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const i=T0(e.unaryFilter.field);return sI.create(i,"!=",{nullValue:"NULL_VALUE"});default:return By()}}(e):void 0!==e.fieldFilter?function(e){return sI.create(T0(e.fieldFilter.field),function(e){switch(e){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return By()}}(e.fieldFilter.op),e.fieldFilter.value)}(e):void 0!==e.compositeFilter?function(e){return aI.create(e.compositeFilter.filters.map(e=>t(e)),function(e){switch(e){case"AND":return"and";case"OR":return"or";default:return By()}}(e.compositeFilter.op))}(e):By()}(e);return t instanceof aI&&lI(t)?t.getFilters():[t]}(s.where));let l=[];s.orderBy&&(l=s.orderBy.map(e=>function(e){return new rI(T0(e.field),function(e){switch(e){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(e.direction))}(e)));let u=null;s.limit&&(u=(e=s.limit,Lw(n="object"==typeof e?e.value:e)?null:n));let h=null;s.startAt&&(h=(r=s.startAt,i=!!r.before,n=r.values||[],new eI(n,i)));let d=null;return s.endAt&&(d=(r=s.endAt,i=!r.before,s=r.values||[],new eI(s,i))),RI(t,o,l,c,u,"F",h,d)}function w0(e){return JT[e]}function b0(e){return XT[e]}function I0(e){return{fieldPath:e.canonicalString()}}function T0(e){return lw.fromServerFormat(e.fieldPath)}function E0(e){return 4<=e.length&&"projects"===e.get(0)&&"databases"===e.get(2)}class C0{constructor(e,t,n,r,i=sw.min(),s=sw.min(),a=Eb.EMPTY_BYTE_STRING,o=null){this.target=e,this.targetId=t,this.purpose=n,this.sequenceNumber=r,this.snapshotVersion=i,this.lastLimboFreeSnapshotVersion=s,this.resumeToken=a,this.expectedCount=o}withSequenceNumber(e){return new C0(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,t){return new C0(this.target,this.targetId,this.purpose,this.sequenceNumber,t,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new C0(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new C0(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}class S0{constructor(e){this.ct=e}}function k0(e,t){const n=t.key,r={prefixPath:n.getCollectionPath().popLast().toArray(),collectionGroup:n.collectionGroup,documentId:n.path.lastSegment(),readTime:A0(t.readTime),hasCommittedMutations:t.hasCommittedMutations};if(t.isFoundDocument())r.document={name:o0(i=e.ct,(e=t).key),fields:e.data.value.mapValue.fields,updateTime:t0(i,e.version.toTimestamp()),createTime:t0(i,e.createTime.toTimestamp())};else if(t.isNoDocument())r.noDocument={path:n.path.toArray(),readTime:N0(t.version)};else{if(!t.isUnknownDocument())return By();r.unknownDocument={path:n.path.toArray(),version:N0(t.version)}}var i;return r}function A0(e){var t=e.toTimestamp();return[t.seconds,t.nanoseconds]}function N0(e){var t=e.toTimestamp();return{seconds:t.seconds,nanoseconds:t.nanoseconds}}function R0(e){var t=new iw(e.seconds,e.nanoseconds);return sw.fromTimestamp(t)}function P0(t,e){const n=(e.baseMutations||[]).map(e=>m0(t.ct,e));for(let s=0;s<e.mutations.length-1;++s){const n=e.mutations[s];if(s+1<e.mutations.length&&void 0!==e.mutations[s+1].transform){const r=e.mutations[s+1];n.updateTransforms=r.transform.fieldTransforms,e.mutations.splice(s+1,1),++s}}const r=e.mutations.map(e=>m0(t.ct,e)),i=iw.fromMillis(e.localWriteTimeMs);return new NT(e.batchId,i,n,r)}function D0(e){var t,n=R0(e.readTime),r=void 0!==e.lastLimboFreeSnapshotVersion?R0(e.lastLimboFreeSnapshotVersion):sw.min(),i=void 0!==e.query.documents?(jy(1===(t=e.query).documents.length),MI(PI(u0(t.documents[0])))):MI(y0(e.query));return new C0(i,e.targetId,"TargetPurposeListen",e.lastListenSequenceNumber,n,r,Eb.fromBase64String(e.resumeToken))}function x0(e,t){var n=N0(t.snapshotVersion),r=N0(t.lastLimboFreeSnapshotVersion),i=CI(t.target)?v0(e.ct,t.target):_0(e.ct,t.target).ut,s=t.resumeToken.toBase64();return{targetId:t.targetId,canonicalId:TI(t.target),readTime:n,resumeToken:s,lastListenSequenceNumber:t.sequenceNumber,lastLimboFreeSnapshotVersion:r,query:i}}function O0(e){var t=y0({parent:e.parent,structuredQuery:e.structuredQuery});return"LAST"===e.limitType?FI(t,t.limit,"L"):t}function M0(e,t){return new PT(t.largestBatchId,m0(e.ct,t.overlayMutation))}function L0(e,t){var n=t.path.lastSegment();return[e,Vw(t.path.popLast()),n]}function F0(e,t,n,r){return{indexId:e,uid:t,sequenceNumber:n,readTime:N0(r.readTime),documentKey:Vw(r.documentKey.path),largestBatchId:r.largestBatchId}}class U0{getBundleMetadata(e,t){return V0(e).get(t).next(e=>{if(e)return{id:(e=e).bundleId,createTime:R0(e.createTime),version:e.version}})}saveBundleMetadata(e,t){return V0(e).put({bundleId:(t=t).id,createTime:N0(r0(t.createTime)),version:t.version})}getNamedQuery(e,t){return q0(e).get(t).next(e=>{if(e)return{name:(e=e).name,query:O0(e.bundledQuery),readTime:R0(e.readTime)}})}saveNamedQuery(e,t){return q0(e).put({name:(t=t).name,readTime:N0(r0(t.readTime)),bundledQuery:t.bundledQuery})}}function V0(e){return db(e,"bundles")}function q0(e){return db(e,"namedQueries")}class B0{constructor(e,t){this.serializer=e,this.userId=t}static lt(e,t){var n=t.uid||"";return new B0(e,n)}getOverlay(e,t){return j0(e).get(L0(this.userId,t)).next(e=>e?M0(this.serializer,e):null)}getOverlays(e,t){const n=QI();return Tw.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&n.set(t,e)})).next(()=>n)}saveOverlays(r,i,e){const s=[];return e.forEach((e,t)=>{var n=new PT(i,t);s.push(this.ht(r,n))}),Tw.waitFor(s)}removeOverlaysForBatchId(n,e,r){const t=new Set;e.forEach(e=>t.add(Vw(e.getCollectionPath())));const i=[];return t.forEach(e=>{var t=IDBKeyRange.bound([this.userId,e,r],[this.userId,e,r+1],!1,!0);i.push(j0(n).H("collectionPathOverlayIndex",t))}),Tw.waitFor(i)}getOverlaysForCollection(e,t,n){const r=QI(),i=Vw(t),s=IDBKeyRange.bound([this.userId,i,n],[this.userId,i,Number.POSITIVE_INFINITY],!0);return j0(e).W("collectionPathOverlayIndex",s).next(e=>{for(const t of e){const e=M0(this.serializer,t);r.set(e.getKey(),e)}return r})}getOverlaysForCollectionGroup(e,t,n,i){const s=QI();let a;var r=IDBKeyRange.bound([this.userId,t,n],[this.userId,t,Number.POSITIVE_INFINITY],!0);return j0(e).Y({index:"collectionGroupOverlayIndex",range:r},(e,t,n)=>{const r=M0(this.serializer,t);s.size()<i||r.largestBatchId===a?(s.set(r.getKey(),r),a=r.largestBatchId):n.done()}).next(()=>s)}ht(e,t){return j0(e).put(function(e,t,n){var[,r,i]=L0(t,n.mutation.key);return{userId:t,collectionPath:r,documentId:i,collectionGroup:n.mutation.key.getCollectionGroup(),largestBatchId:n.largestBatchId,overlayMutation:g0(e.ct,n.mutation)}}(this.serializer,this.userId,t))}}function j0(e){return db(e,"documentOverlays")}class z0{constructor(){}Pt(e,t){this.It(e,t),t.Tt()}It(e,t){var n,r;"nullValue"in e?this.Et(t,5):"booleanValue"in e?(this.Et(t,10),t.dt(e.booleanValue?1:0)):"integerValue"in e?(this.Et(t,15),t.dt(kb(e.integerValue))):"doubleValue"in e?(n=kb(e.doubleValue),isNaN(n)?this.Et(t,13):(this.Et(t,15),Fw(n)?t.dt(0):t.dt(n))):"timestampValue"in e?(r=e.timestampValue,this.Et(t,20),"string"==typeof r?t.At(r):(t.At(`${r.seconds||""}`),t.dt(r.nanos||0))):"stringValue"in e?(this.Rt(e.stringValue,t),this.Vt(t)):"bytesValue"in e?(this.Et(t,30),t.ft(Ab(e.bytesValue)),this.Vt(t)):"referenceValue"in e?this.gt(e.referenceValue,t):"geoPointValue"in e?(r=e.geoPointValue,this.Et(t,45),t.dt(r.latitude||0),t.dt(r.longitude||0)):"mapValue"in e?Qb(e)?this.Et(t,Number.MAX_SAFE_INTEGER):(this.yt(e.mapValue,t),this.Vt(t)):"arrayValue"in e?(this.wt(e.arrayValue,t),this.Vt(t)):By()}Rt(e,t){this.Et(t,25),this.St(e,t)}St(e,t){t.At(e)}yt(e,t){var n=e.fields||{};this.Et(t,55);for(const e of Object.keys(n))this.Rt(e,t),this.It(n[e],t)}wt(e,t){var n=e.values||[];this.Et(t,50);for(const e of n)this.It(e,t)}gt(e,t){this.Et(t,37),uw.fromName(e).path.forEach(e=>{this.Et(t,60),this.St(e,t)})}Et(e,t){e.dt(t)}Vt(e){e.dt(2)}}function $0(e){var t=64-function(e){let t=0;for(let r=0;r<8;++r){var n=function(e){if(0===e)return 8;let t=0;return e>>4==0&&(t+=4,e<<=4),e>>6==0&&(t+=2,e<<=2),e>>7==0&&(t+=1),t}(255&e[r]);if(t+=n,8!==n)break}return t}(e);return Math.ceil(t/8)}z0.bt=new z0;class K0{constructor(){this.buffer=new Uint8Array(1024),this.position=0}Dt(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.Ct(n.value),n=t.next();this.vt()}Ft(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.Mt(n.value),n=t.next();this.xt()}Ot(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.Ct(e);else if(e<2048)this.Ct(960|e>>>6),this.Ct(128|63&e);else if(t<"\ud800"||"\udbff"<t)this.Ct(480|e>>>12),this.Ct(128|63&e>>>6),this.Ct(128|63&e);else{const e=t.codePointAt(0);this.Ct(240|e>>>18),this.Ct(128|63&e>>>12),this.Ct(128|63&e>>>6),this.Ct(128|63&e)}}this.vt()}Nt(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.Mt(e);else if(e<2048)this.Mt(960|e>>>6),this.Mt(128|63&e);else if(t<"\ud800"||"\udbff"<t)this.Mt(480|e>>>12),this.Mt(128|63&e>>>6),this.Mt(128|63&e);else{const e=t.codePointAt(0);this.Mt(240|e>>>18),this.Mt(128|63&e>>>12),this.Mt(128|63&e>>>6),this.Mt(128|63&e)}}this.xt()}Bt(e){var t=this.Lt(e),n=$0(t);this.kt(1+n),this.buffer[this.position++]=255&n;for(let r=t.length-n;r<t.length;++r)this.buffer[this.position++]=255&t[r]}qt(e){var t=this.Lt(e),n=$0(t);this.kt(1+n),this.buffer[this.position++]=~(255&n);for(let r=t.length-n;r<t.length;++r)this.buffer[this.position++]=~(255&t[r])}Qt(){this.Kt(255),this.Kt(255)}$t(){this.Ut(255),this.Ut(255)}reset(){this.position=0}seed(e){this.kt(e.length),this.buffer.set(e,this.position),this.position+=e.length}Wt(){return this.buffer.slice(0,this.position)}Lt(e){const t=function(e){const t=new DataView(new ArrayBuffer(8));return t.setFloat64(0,e,!1),new Uint8Array(t.buffer)}(e),n=0!=(128&t[0]);t[0]^=n?255:128;for(let r=1;r<t.length;++r)t[r]^=n?255:0;return t}Ct(e){var t=255&e;0==t?(this.Kt(0),this.Kt(255)):255==t?(this.Kt(255),this.Kt(0)):this.Kt(t)}Mt(e){var t=255&e;0==t?(this.Ut(0),this.Ut(255)):255==t?(this.Ut(255),this.Ut(0)):this.Ut(e)}vt(){this.Kt(0),this.Kt(1)}xt(){this.Ut(0),this.Ut(1)}Kt(e){this.kt(1),this.buffer[this.position++]=e}Ut(e){this.kt(1),this.buffer[this.position++]=~e}kt(e){var t=e+this.position;if(!(t<=this.buffer.length)){let e=2*this.buffer.length;e<t&&(e=t);const n=new Uint8Array(e);n.set(this.buffer),this.buffer=n}}}class W0{constructor(e){this.Gt=e}ft(e){this.Gt.Dt(e)}At(e){this.Gt.Ot(e)}dt(e){this.Gt.Bt(e)}Tt(){this.Gt.Qt()}}class G0{constructor(e){this.Gt=e}ft(e){this.Gt.Ft(e)}At(e){this.Gt.Nt(e)}dt(e){this.Gt.qt(e)}Tt(){this.Gt.$t()}}class H0{constructor(){this.Gt=new K0,this.zt=new W0(this.Gt),this.jt=new G0(this.Gt)}seed(e){this.Gt.seed(e)}Ht(e){return 0===e?this.zt:this.jt}Wt(){return this.Gt.Wt()}reset(){this.Gt.reset()}}class Q0{constructor(e,t,n,r){this.indexId=e,this.documentKey=t,this.arrayValue=n,this.directionalValue=r}Jt(){const e=this.directionalValue.length,t=0===e||255===this.directionalValue[e-1]?e+1:e,n=new Uint8Array(t);return n.set(this.directionalValue,0),t!==e?n.set([0],this.directionalValue.length):++n[n.length-1],new Q0(this.indexId,this.documentKey,this.arrayValue,n)}}function Y0(e,t){let n=e.indexId-t.indexId;return 0!==n?n:(n=J0(e.arrayValue,t.arrayValue),0!==n?n:(n=J0(e.directionalValue,t.directionalValue),0!==n?n:uw.comparator(e.documentKey,t.documentKey)))}function J0(e,t){for(let r=0;r<e.length&&r<t.length;++r){var n=e[r]-t[r];if(0!=n)return n}return e.length-t.length}class X0{constructor(e){this.Yt=new yb((e,t)=>lw.comparator(e.field,t.field)),this.collectionId=null!=e.collectionGroup?e.collectionGroup:e.path.lastSegment(),this.Zt=e.orderBy,this.Xt=[];for(const t of e.filters){const e=t;e.isInequality()?this.Yt=this.Yt.add(e):this.Xt.push(e)}}get en(){return 1<this.Yt.size}tn(e){if(jy(e.collectionGroup===this.collectionId),this.en)return!1;const t=dw(e);if(void 0!==t&&!this.nn(t))return!1;const n=pw(e);let r=new Set,i=0,s=0;for(;i<n.length&&this.nn(n[i]);++i)r=r.add(n[i].fieldPath.canonicalString());if(i===n.length)return!0;if(0<this.Yt.size){const e=this.Yt.getIterator().getNext();if(!r.has(e.field.canonicalString())){const t=n[i];if(!this.rn(e,t)||!this.sn(this.Zt[s++],t))return!1}++i}for(;i<n.length;++i){const e=n[i];if(s>=this.Zt.length||!this.sn(this.Zt[s++],e))return!1}return!0}on(){if(this.en)return null;let e=new yb(lw.comparator);const t=[];for(const n of this.Xt)n.field.isKeyField()||("array-contains"===n.op||"array-contains-any"===n.op?t.push(new fw(n.field,2)):e.has(n.field)||(e=e.add(n.field),t.push(new fw(n.field,0))));for(const r of this.Zt)r.field.isKeyField()||e.has(r.field)||(e=e.add(r.field),t.push(new fw(r.field,"asc"===r.dir?0:1)));return new hw(hw.UNKNOWN_ID,this.collectionId,t,gw.empty())}nn(e){for(const t of this.Xt)if(this.rn(t,e))return!0;return!1}rn(e,t){if(void 0===e||!e.field.isEqual(t.fieldPath))return!1;var n="array-contains"===e.op||"array-contains-any"===e.op;return 2===t.kind==n}sn(e,t){return!!e.field.isEqual(t.fieldPath)&&(0===t.kind&&"asc"===e.dir||1===t.kind&&"desc"===e.dir)}}function Z0(e){if(0===e.getFilters().length)return[];const t=function t(e){if(jy(e instanceof sI||e instanceof aI),e instanceof sI)return e;if(1===e.filters.length)return t(e.filters[0]);const n=e.filters.map(e=>t(e));let r=aI.create(n,e.op);return r=sE(r),nE(r)?r:(jy(r instanceof aI),jy(oI(r)),jy(1<r.filters.length),r.filters.reduce((e,t)=>rE(e,t)))}(function t(n){var e;if(jy(n instanceof sI||n instanceof aI),n instanceof sI){if(n instanceof _I){const r=(null===(e=null===(e=n.value.arrayValue)||void 0===e?void 0:e.values)||void 0===e?void 0:e.map(e=>sI.create(n.field,"==",e)))||[];return aI.create(r,"or")}return n}const r=n.filters.map(e=>t(e));return aI.create(r,n.op)}(e));return jy(nE(t)),eE(t)||tE(t)?[t]:t.getFilters()}function eE(e){return e instanceof sI}function tE(e){return e instanceof aI&&lI(e)}function nE(e){return eE(e)||tE(e)||function(e){if(e instanceof aI&&cI(e)){for(const t of e.getFilters())if(!eE(t)&&!tE(t))return!1;return!0}return!1}(e)}function rE(e,t){var n,r;return jy(e instanceof sI||e instanceof aI),jy(t instanceof sI||t instanceof aI),sE(e instanceof sI?t instanceof sI?(n=e,r=t,aI.create([n,r],"and")):iE(e,t):t instanceof sI?iE(t,e):function(e,t){if(jy(0<e.filters.length&&0<t.filters.length),oI(e)&&oI(t))return hI(e,t.getFilters());const n=cI(e)?e:t,r=cI(e)?t:e,i=n.filters.map(e=>rE(e,r));return aI.create(i,"or")}(e,t))}function iE(t,e){if(oI(e))return hI(e,t.getFilters());var n=e.filters.map(e=>rE(t,e));return aI.create(n,"or")}function sE(t){if(jy(t instanceof sI||t instanceof aI),t instanceof sI)return t;const e=t.getFilters();if(1===e.length)return sE(e[0]);if(uI(t))return t;const n=e.map(e=>sE(e)),r=[];return n.forEach(e=>{e instanceof sI?r.push(e):e instanceof aI&&(e.op===t.op?r.push(...e.filters):r.push(e))}),1===r.length?r[0]:aI.create(r,t.op)}class aE{constructor(){this._n=new oE}addToCollectionParentIndex(e,t){return this._n.add(t),Tw.resolve()}getCollectionParents(e,t){return Tw.resolve(this._n.getEntries(t))}addFieldIndex(e,t){return Tw.resolve()}deleteFieldIndex(e,t){return Tw.resolve()}deleteAllFieldIndexes(e){return Tw.resolve()}createTargetIndexes(e,t){return Tw.resolve()}getDocumentsMatchingTarget(e,t){return Tw.resolve(null)}getIndexType(e,t){return Tw.resolve(0)}getFieldIndexes(e,t){return Tw.resolve([])}getNextCollectionGroupToUpdate(e){return Tw.resolve(null)}getMinOffset(e,t){return Tw.resolve(_w.min())}getMinOffsetFromCollectionGroup(e,t){return Tw.resolve(_w.min())}updateCollectionGroup(e,t,n){return Tw.resolve()}updateIndexEntries(e,t){return Tw.resolve()}}class oE{constructor(){this.index={}}add(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t]||new yb(ow.comparator),i=!r.has(n);return this.index[t]=r.add(n),i}has(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t];return r&&r.has(n)}getEntries(e){return(this.index[e]||new yb(ow.comparator)).toArray()}}const cE=new Uint8Array(0);class lE{constructor(e,t){this.databaseId=t,this.an=new oE,this.un=new $I(e=>TI(e),(e,t)=>EI(e,t)),this.uid=e.uid||""}addToCollectionParentIndex(e,t){if(this.an.has(t))return Tw.resolve();var n=t.lastSegment(),r=t.popLast();e.addOnCommittedListener(()=>{this.an.add(t)});r={collectionId:n,parent:Vw(r)};return uE(e).put(r)}getCollectionParents(e,n){const r=[],t=IDBKeyRange.bound([n,""],[rw(n),""],!1,!0);return uE(e).W(t).next(e=>{for(const t of e){if(t.collectionId!==n)break;r.push(Bw(t.parent))}return r})}addFieldIndex(e,t){const n=dE(e),r={indexId:t.indexId,collectionGroup:t.collectionGroup,fields:t.fields.map(e=>[e.fieldPath.canonicalString(),e.kind])};delete r.indexId;const i=n.add(r);if(t.indexState){const n=pE(e);return i.next(e=>{n.put(F0(e,this.uid,t.indexState.sequenceNumber,t.indexState.offset))})}return i.next()}deleteFieldIndex(e,t){const n=dE(e),r=pE(e),i=hE(e);return n.delete(t.indexId).next(()=>r.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0))).next(()=>i.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0)))}deleteAllFieldIndexes(e){const t=dE(e),n=hE(e),r=pE(e);return t.H().next(()=>n.H()).next(()=>r.H())}createTargetIndexes(n,e){return Tw.forEach(this.cn(e),t=>this.getIndexType(n,t).next(e=>{if(0===e||1===e){const e=new X0(t).on();if(null!=e)return this.addFieldIndex(n,e)}}))}getDocumentsMatchingTarget(e,u){const h=hE(e);let d=!0;const n=new Map;return Tw.forEach(this.cn(u),t=>this.ln(e,t).next(e=>{d=d&&!!e,n.set(t,e)})).next(()=>{if(d){let l=XI();const d=[];return Tw.forEach(n,(e,t)=>{var n;Fy("IndexedDbIndexManager",`Using index ${n=e,`id=${n.indexId}|cg=${n.collectionGroup}|f=${n.fields.map(e=>`${e.fieldPath}:${e.kind}`).join(",")}`} to execute ${TI(u)}`);var r=function(e,t){var n=dw(t);if(void 0===n)return null;for(const t of SI(e,n.fieldPath))switch(t.op){case"array-contains-any":return t.value.arrayValue.values||[];case"array-contains":return[t.value]}return null}(t,e),i=function(e,t){const n=new Map;for(const r of pw(t))for(const t of SI(e,r.fieldPath))switch(t.op){case"==":case"in":n.set(r.fieldPath.canonicalString(),t.value);break;case"not-in":case"!=":return n.set(r.fieldPath.canonicalString(),t.value),Array.from(n.values())}return null}(t,e),s=function(e,t){const n=[];let r=!0;for(const i of pw(t)){const t=(0===i.kind?kI:AI)(e,i.fieldPath,e.startAt);n.push(t.value),r=r&&t.inclusive}return new eI(n,r)}(t,e),a=function(e,t){const n=[];let r=!0;for(const i of pw(t)){const t=(0===i.kind?AI:kI)(e,i.fieldPath,e.endAt);n.push(t.value),r=r&&t.inclusive}return new eI(n,r)}(t,e),o=this.hn(e,t,s),c=this.hn(e,t,a),i=this.Pn(e,t,i),i=this.In(e.indexId,r,o,s.inclusive,c,a.inclusive,i);return Tw.forEach(i,e=>h.j(e,u.limit).next(e=>{e.forEach(e=>{var t=uw.fromSegments(e.documentKey);l.has(t)||(l=l.add(t),d.push(t))})}))}).next(()=>d)}return Tw.resolve(null)})}cn(t){let e=this.un.get(t);return e||(e=0===t.filters.length?[t]:Z0(aI.create(t.filters,"and")).map(e=>II(t.path,t.collectionGroup,t.orderBy,e.getFilters(),t.limit,t.startAt,t.endAt)),this.un.set(t,e),e)}In(t,e,n,r,i,s,a){const o=(null!=e?e.length:1)*Math.max(n.length,i.length),c=o/(null!=e?e.length:1),l=[];for(let u=0;u<o;++u){const o=e?this.Tn(e[u/c]):cE,h=this.En(t,o,n[u%c],r),d=this.dn(t,o,i[u%c],s),p=a.map(e=>this.En(t,o,e,!0));l.push(...this.createRange(h,d,p))}return l}En(e,t,n,r){const i=new Q0(e,uw.empty(),t,n);return r?i:i.Jt()}dn(e,t,n,r){const i=new Q0(e,uw.empty(),t,n);return r?i.Jt():i}ln(e,t){const r=new X0(t),n=null!=t.collectionGroup?t.collectionGroup:t.path.lastSegment();return this.getFieldIndexes(e,n).next(e=>{let t=null;for(const n of e)r.tn(n)&&(!t||n.fields.length>t.fields.length)&&(t=n);return t})}getIndexType(e,t){let n=2;const r=this.cn(t);return Tw.forEach(r,t=>this.ln(e,t).next(e=>{e?0!==n&&e.fields.length<function(e){let t=new yb(lw.comparator),n=!1;for(const r of e.filters)for(const e of r.getFlattenedFilters())e.field.isKeyField()||("array-contains"===e.op||"array-contains-any"===e.op?n=!0:t=t.add(e.field));for(const n of e.orderBy)n.field.isKeyField()||(t=t.add(n.field));return t.size+(n?1:0)}(t)&&(n=1):n=0})).next(()=>function(e){return null!==e.limit}(t)&&1<r.length&&2===n?1:n)}An(e,t){const n=new H0;for(const i of pw(e)){const e=t.data.field(i.fieldPath);if(null==e)return null;var r=n.Ht(i.kind);z0.bt.Pt(e,r)}return n.Wt()}Tn(e){const t=new H0;return z0.bt.Pt(e,t.Ht(0)),t.Wt()}Rn(e,t){const n=new H0;return z0.bt.Pt(jb(this.databaseId,t),n.Ht(0===(r=pw(e)).length?0:r[r.length-1].kind)),n.Wt();var r}Pn(e,t,n){if(null===n)return[];let r=[];r.push(new H0);let i=0;for(const s of pw(e)){const e=n[i++];for(const n of r)if(this.Vn(t,s.fieldPath)&&$b(e))r=this.mn(r,s,e);else{const t=n.Ht(s.kind);z0.bt.Pt(e,t)}}return this.fn(r)}hn(e,t,n){return this.Pn(e,t,n.position)}fn(e){const t=[];for(let n=0;n<e.length;++n)t[n]=e[n].Wt();return t}mn(e,t,n){const r=[...e],i=[];for(const e of n.arrayValue.values||[])for(const n of r){const r=new H0;r.seed(n.Wt()),z0.bt.Pt(e,r.Ht(t.kind)),i.push(r)}return i}Vn(e,t){return!!e.filters.find(e=>e instanceof sI&&e.field.isEqual(t)&&("in"===e.op||"not-in"===e.op))}getFieldIndexes(e,t){const n=dE(e),r=pE(e);return(t?n.W("collectionGroupIndex",IDBKeyRange.bound(t,t)):n.W()).next(e=>{const s=[];return Tw.forEach(e,i=>r.get([i.indexId,this.uid]).next(e=>{var t,n,r;s.push((t=i,n=(e=e)?new gw(e.sequenceNumber,new _w(R0(e.readTime),new uw(Bw(e.documentKey)),e.largestBatchId)):gw.empty(),r=t.fields.map(([e,t])=>new fw(lw.fromServerFormat(e),t)),new hw(t.indexId,t.collectionGroup,r,n)))})).next(()=>s)})}getNextCollectionGroupToUpdate(e){return this.getFieldIndexes(e).next(e=>0===e.length?null:(e.sort((e,t)=>{var n=e.indexState.sequenceNumber-t.indexState.sequenceNumber;return 0!=n?n:tw(e.collectionGroup,t.collectionGroup)}),e[0].collectionGroup))}updateCollectionGroup(e,n,r){const i=dE(e),s=pE(e);return this.gn(e).next(t=>i.W("collectionGroupIndex",IDBKeyRange.bound(n,n)).next(e=>Tw.forEach(e,e=>s.put(F0(e.indexId,this.uid,t,r)))))}updateIndexEntries(i,e){const n=new Map;return Tw.forEach(e,(t,r)=>{var e=n.get(t.collectionGroup);return(e?Tw.resolve(e):this.getFieldIndexes(i,t.collectionGroup)).next(e=>(n.set(t.collectionGroup,e),Tw.forEach(e,n=>this.pn(i,t,n).next(e=>{var t=this.yn(r,n);return e.isEqual(t)?Tw.resolve():this.wn(i,r,n,e,t)}))))})}Sn(e,t,n,r){return hE(e).put({indexId:r.indexId,uid:this.uid,arrayValue:r.arrayValue,directionalValue:r.directionalValue,orderedDocumentKey:this.Rn(n,t.key),documentKey:t.key.path.toArray()})}bn(e,t,n,r){return hE(e).delete([r.indexId,this.uid,r.arrayValue,r.directionalValue,this.Rn(n,t.key),t.key.path.toArray()])}pn(e,n,r){const t=hE(e);let i=new yb(Y0);return t.Y({index:"documentKeyIndex",range:IDBKeyRange.only([r.indexId,this.uid,this.Rn(r,n)])},(e,t)=>{i=i.add(new Q0(r.indexId,n,t.arrayValue,t.directionalValue))}).next(()=>i)}yn(e,t){let n=new yb(Y0);var r=this.An(t,e);if(null==r)return n;const i=dw(t);if(null!=i){var s=e.data.field(i.fieldPath);if($b(s))for(const i of s.arrayValue.values||[])n=n.add(new Q0(t.indexId,e.key,this.Tn(i),r))}else n=n.add(new Q0(t.indexId,e.key,cE,r));return n}wn(t,n,r,e,i){Fy("IndexedDbIndexManager","Updating index entries for document '%s'",n.key);const s=[];return function(e,t,n,r,i){var s=e.getIterator(),a=t.getIterator();let o=bb(s),c=bb(a);for(;o||c;){let e=!1,t=!1;if(o&&c){const r=n(o,c);r<0?t=!0:0<r&&(e=!0)}else null!=o?t=!0:e=!0;e?(r(c),c=bb(a)):t?(i(o),o=bb(s)):(o=bb(s),c=bb(a))}}(e,i,Y0,e=>{s.push(this.Sn(t,n,r,e))},e=>{s.push(this.bn(t,n,r,e))}),Tw.waitFor(s)}gn(e){let r=1;return pE(e).Y({index:"sequenceNumberIndex",reverse:!0,range:IDBKeyRange.upperBound([this.uid,Number.MAX_SAFE_INTEGER])},(e,t,n)=>{n.done(),r=t.sequenceNumber+1}).next(()=>r)}createRange(e,t,n){n=n.sort((e,t)=>Y0(e,t)).filter((e,t,n)=>!t||0!==Y0(e,n[t-1]));const r=[];r.push(e);for(const i of n){const n=Y0(i,e),s=Y0(i,t);if(0===n)r[0]=e.Jt();else if(0<n&&s<0)r.push(i),r.push(i.Jt());else if(0<s)break}r.push(t);const i=[];for(let a=0;a<r.length;a+=2){if(this.Dn(r[a],r[a+1]))return[];const t=[r[a].indexId,this.uid,r[a].arrayValue,r[a].directionalValue,cE,[]],n=[r[a+1].indexId,this.uid,r[a+1].arrayValue,r[a+1].directionalValue,cE,[]];i.push(IDBKeyRange.bound(t,n))}return i}Dn(e,t){return 0<Y0(e,t)}getMinOffsetFromCollectionGroup(e,t){return this.getFieldIndexes(e,t).next(fE)}getMinOffset(t,e){return Tw.mapArray(this.cn(e),e=>this.ln(t,e).next(e=>e||By())).next(fE)}}function uE(e){return db(e,"collectionParents")}function hE(e){return db(e,"indexEntries")}function dE(e){return db(e,"indexConfiguration")}function pE(e){return db(e,"indexState")}function fE(e){jy(0!==e.length);let t=e[0].indexState.offset,n=t.largestBatchId;for(let i=1;i<e.length;i++){var r=e[i].indexState.offset;yw(r,t)<0&&(t=r),n<r.largestBatchId&&(n=r.largestBatchId)}return new _w(t.readTime,t.documentKey,n)}const gE={didRun:!1,sequenceNumbersCollected:0,targetsRemoved:0,documentsRemoved:0};class mE{constructor(e,t,n){this.cacheSizeCollectionThreshold=e,this.percentileToCollect=t,this.maximumSequenceNumbersToCollect=n}static withCacheSize(e){return new mE(e,mE.DEFAULT_COLLECTION_PERCENTILE,mE.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}}function vE(e,t,n){const r=e.store("mutations"),i=e.store("documentMutations"),s=[],a=IDBKeyRange.only(n.batchId);let o=0;const c=r.Y({range:a},(e,t,n)=>(o++,n.delete()));s.push(c.next(()=>{jy(1===o)}));const l=[];for(const e of n.mutations){const r=$w(t,e.key.path,n.batchId);s.push(i.delete(r)),l.push(e.key)}return Tw.waitFor(s).next(()=>l)}function _E(e){if(!e)return 0;let t;if(e.document)t=e.document;else if(e.unknownDocument)t=e.unknownDocument;else{if(!e.noDocument)throw By();t=e.noDocument}return JSON.stringify(t).length}mE.DEFAULT_COLLECTION_PERCENTILE=10,mE.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,mE.DEFAULT=new mE(41943040,mE.DEFAULT_COLLECTION_PERCENTILE,mE.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),mE.DISABLED=new mE(-1,0,0);class yE{constructor(e,t,n,r){this.userId=e,this.serializer=t,this.indexManager=n,this.referenceDelegate=r,this.Cn={}}static lt(e,t,n,r){jy(""!==e.uid);var i=e.isAuthenticated()?e.uid:"";return new yE(i,t,n,r)}checkEmpty(e){let r=!0;var t=IDBKeyRange.bound([this.userId,Number.NEGATIVE_INFINITY],[this.userId,Number.POSITIVE_INFINITY]);return bE(e).Y({index:"userMutationsIndex",range:t},(e,t,n)=>{r=!1,n.done()}).next(()=>r)}addMutationBatch(u,h,d,p){const f=IE(u),g=bE(u);return g.add({}).next(e=>{jy("number"==typeof e);const t=new NT(e,h,d,p),n=(i=this.serializer,s=this.userId,a=t,o=a.baseMutations.map(e=>g0(i.ct,e)),c=a.mutations.map(e=>g0(i.ct,e)),{userId:s,batchId:a.batchId,localWriteTimeMs:a.localWriteTime.toMillis(),baseMutations:o,mutations:c}),r=[];var i,s,a,o,c;let l=new yb((e,t)=>tw(e.canonicalString(),t.canonicalString()));for(const u of p){const h=$w(this.userId,u.key.path,e);l=l.add(u.key.path.popLast()),r.push(g.put(n)),r.push(f.put(h,Kw))}return l.forEach(e=>{r.push(this.indexManager.addToCollectionParentIndex(u,e))}),u.addOnCommittedListener(()=>{this.Cn[e]=t.keys()}),Tw.waitFor(r).next(()=>t)})}lookupMutationBatch(e,t){return bE(e).get(t).next(e=>e?(jy(e.userId===this.userId),P0(this.serializer,e)):null)}vn(e,n){return this.Cn[n]?Tw.resolve(this.Cn[n]):this.lookupMutationBatch(e,n).next(e=>{if(e){var t=e.keys();return this.Cn[n]=t}return null})}getNextMutationBatchAfterBatchId(e,t){const r=t+1,n=IDBKeyRange.lowerBound([this.userId,r]);let i=null;return bE(e).Y({index:"userMutationsIndex",range:n},(e,t,n)=>{t.userId===this.userId&&(jy(t.batchId>=r),i=P0(this.serializer,t)),n.done()}).next(()=>i)}getHighestUnacknowledgedBatchId(e){var t=IDBKeyRange.upperBound([this.userId,Number.POSITIVE_INFINITY]);let r=-1;return bE(e).Y({index:"userMutationsIndex",range:t,reverse:!0},(e,t,n)=>{r=t.batchId,n.done()}).next(()=>r)}getAllMutationBatches(e){var t=IDBKeyRange.bound([this.userId,-1],[this.userId,Number.POSITIVE_INFINITY]);return bE(e).W("userMutationsIndex",t).next(e=>e.map(e=>P0(this.serializer,e)))}getAllMutationBatchesAffectingDocumentKey(a,o){const e=zw(this.userId,o.path),t=IDBKeyRange.lowerBound(e),c=[];return IE(a).Y({range:t},(e,t,n)=>{var[r,i,s]=e,i=Bw(i);if(r===this.userId&&o.path.isEqual(i))return bE(a).get(s).next(e=>{if(!e)throw By();jy(e.userId===this.userId),c.push(P0(this.serializer,e))});n.done()}).next(()=>c)}getAllMutationBatchesAffectingDocumentKeys(t,e){let o=new yb(tw);const n=[];return e.forEach(a=>{var e=zw(this.userId,a.path),e=IDBKeyRange.lowerBound(e),e=IE(t).Y({range:e},(e,t,n)=>{var[r,i,s]=e,i=Bw(i);r===this.userId&&a.path.isEqual(i)?o=o.add(s):n.done()});n.push(e)}),Tw.waitFor(n).next(()=>this.Fn(t,o))}getAllMutationBatchesAffectingQuery(e,t){const a=t.path,o=a.length+1,n=zw(this.userId,a),r=IDBKeyRange.lowerBound(n);let c=new yb(tw);return IE(e).Y({range:r},(e,t,n)=>{var[r,i,s]=e,i=Bw(i);r===this.userId&&a.isPrefixOf(i)?i.length===o&&(c=c.add(s)):n.done()}).next(()=>this.Fn(e,c))}Fn(t,e){const n=[],r=[];return e.forEach(e=>{r.push(bE(t).get(e).next(e=>{if(null===e)throw By();jy(e.userId===this.userId),n.push(P0(this.serializer,e))}))}),Tw.waitFor(r).next(()=>n)}removeMutationBatch(t,n){return vE(t.ae,this.userId,n).next(e=>(t.addOnCommittedListener(()=>{this.Mn(n.batchId)}),Tw.forEach(e,e=>this.referenceDelegate.markPotentiallyOrphaned(t,e))))}Mn(e){delete this.Cn[e]}performConsistencyCheck(n){return this.checkEmpty(n).next(e=>{if(!e)return Tw.resolve();const t=IDBKeyRange.lowerBound([this.userId]),r=[];return IE(n).Y({range:t},(e,t,n)=>{if(e[0]===this.userId){const t=Bw(e[1]);r.push(t)}else n.done()}).next(()=>{jy(0===r.length)})})}containsKey(e,t){return wE(e,this.userId,t)}xn(e){return TE(e).get(this.userId).next(e=>e||{userId:this.userId,lastAcknowledgedBatchId:-1,lastStreamToken:""})}}function wE(e,s,t){const n=zw(s,t.path),a=n[1],r=IDBKeyRange.lowerBound(n);let o=!1;return IE(e).Y({range:r,J:!0},(e,t,n)=>{var[r,i]=e;r===s&&i===a&&(o=!0),n.done()}).next(()=>o)}function bE(e){return db(e,"mutations")}function IE(e){return db(e,"documentMutations")}function TE(e){return db(e,"mutationQueues")}class EE{constructor(e){this.On=e}next(){return this.On+=2,this.On}static Nn(){return new EE(0)}static Bn(){return new EE(-1)}}class CE{constructor(e,t){this.referenceDelegate=e,this.serializer=t}allocateTargetId(n){return this.Ln(n).next(e=>{const t=new EE(e.highestTargetId);return e.highestTargetId=t.next(),this.kn(n,e).next(()=>e.highestTargetId)})}getLastRemoteSnapshotVersion(e){return this.Ln(e).next(e=>sw.fromTimestamp(new iw(e.lastRemoteSnapshotVersion.seconds,e.lastRemoteSnapshotVersion.nanoseconds)))}getHighestSequenceNumber(e){return this.Ln(e).next(e=>e.highestListenSequenceNumber)}setTargetsMetadata(t,n,r){return this.Ln(t).next(e=>(e.highestListenSequenceNumber=n,r&&(e.lastRemoteSnapshotVersion=r.toTimestamp()),n>e.highestListenSequenceNumber&&(e.highestListenSequenceNumber=n),this.kn(t,e)))}addTargetData(t,n){return this.qn(t,n).next(()=>this.Ln(t).next(e=>(e.targetCount+=1,this.Qn(n,e),this.kn(t,e))))}updateTargetData(e,t){return this.qn(e,t)}removeTargetData(t,e){return this.removeMatchingKeysForTargetId(t,e.targetId).next(()=>SE(t).delete(e.targetId)).next(()=>this.Ln(t)).next(e=>(jy(0<e.targetCount),--e.targetCount,this.kn(t,e)))}removeTargets(r,i,s){let a=0;const o=[];return SE(r).Y((e,t)=>{var n=D0(t);n.sequenceNumber<=i&&null===s.get(n.targetId)&&(a++,o.push(this.removeTargetData(r,n)))}).next(()=>Tw.waitFor(o)).next(()=>a)}forEachTarget(e,r){return SE(e).Y((e,t)=>{var n=D0(t);r(n)})}Ln(e){return kE(e).get("targetGlobalKey").next(e=>(jy(null!==e),e))}kn(e,t){return kE(e).put("targetGlobalKey",t)}qn(e,t){return SE(e).put(x0(this.serializer,t))}Qn(e,t){let n=!1;return e.targetId>t.highestTargetId&&(t.highestTargetId=e.targetId,n=!0),e.sequenceNumber>t.highestListenSequenceNumber&&(t.highestListenSequenceNumber=e.sequenceNumber,n=!0),n}getTargetCount(e){return this.Ln(e).next(e=>e.targetCount)}getTargetData(e,i){var t=TI(i),t=IDBKeyRange.bound([t,Number.NEGATIVE_INFINITY],[t,Number.POSITIVE_INFINITY]);let s=null;return SE(e).Y({range:t,index:"queryTargetsIndex"},(e,t,n)=>{var r=D0(t);EI(i,r.target)&&(s=r,n.done())}).next(()=>s)}addMatchingKeys(n,e,r){const i=[],s=AE(n);return e.forEach(e=>{var t=Vw(e.path);i.push(s.put({targetId:r,path:t})),i.push(this.referenceDelegate.addReference(n,r,e))}),Tw.waitFor(i)}removeMatchingKeys(n,e,r){const i=AE(n);return Tw.forEach(e,e=>{var t=Vw(e.path);return Tw.waitFor([i.delete([r,t]),this.referenceDelegate.removeReference(n,r,e)])})}removeMatchingKeysForTargetId(e,t){const n=AE(e),r=IDBKeyRange.bound([t],[t+1],!1,!0);return n.delete(r)}getMatchingKeysForTargetId(e,t){const n=IDBKeyRange.bound([t],[t+1],!1,!0),r=AE(e);let i=XI();return r.Y({range:n,J:!0},(e,t,n)=>{var r=Bw(e[1]),r=new uw(r);i=i.add(r)}).next(()=>i)}containsKey(e,t){var n=Vw(t.path),n=IDBKeyRange.bound([n],[rw(n)],!1,!0);let r=0;return AE(e).Y({index:"documentTargetsIndex",J:!0,range:n},([e],t,n)=>{0!==e&&(r++,n.done())}).next(()=>0<r)}_t(e,t){return SE(e).get(t).next(e=>e?D0(e):null)}}function SE(e){return db(e,"targets")}function kE(e){return db(e,"targetGlobal")}function AE(e){return db(e,"targetDocuments")}function NE([e,t],[n,r]){var i=tw(e,n);return 0===i?tw(t,r):i}class RE{constructor(e){this.Kn=e,this.buffer=new yb(NE),this.$n=0}Un(){return++this.$n}Wn(e){var t=[e,this.Un()];if(this.buffer.size<this.Kn)this.buffer=this.buffer.add(t);else{const e=this.buffer.last();NE(t,e)<0&&(this.buffer=this.buffer.delete(e).add(t))}}get maxValue(){return this.buffer.last()[0]}}class PE{constructor(e,t,n){this.garbageCollector=e,this.asyncQueue=t,this.localStore=n,this.Gn=null}start(){-1!==this.garbageCollector.params.cacheSizeCollectionThreshold&&this.zn(6e4)}stop(){this.Gn&&(this.Gn.cancel(),this.Gn=null)}get started(){return null!==this.Gn}zn(e){Fy("LruGarbageCollector",`Garbage collection scheduled in ${e}ms`),this.Gn=this.asyncQueue.enqueueAfterDelay("lru_garbage_collection",e,async()=>{this.Gn=null;try{await this.localStore.collectGarbage(this.garbageCollector)}catch(e){Aw(e)?Fy("LruGarbageCollector","Ignoring IndexedDB error during garbage collection: ",e):await Iw(e)}await this.zn(3e5)})}}class DE{constructor(e,t){this.jn=e,this.params=t}calculateTargetCount(e,t){return this.jn.Hn(e).next(e=>Math.floor(t/100*e))}nthSequenceNumber(e,t){if(0===t)return Tw.resolve(Mw._e);const n=new RE(t);return this.jn.forEachTarget(e,e=>n.Wn(e.sequenceNumber)).next(()=>this.jn.Jn(e,e=>n.Wn(e))).next(()=>n.maxValue)}removeTargets(e,t,n){return this.jn.removeTargets(e,t,n)}removeOrphanedDocuments(e,t){return this.jn.removeOrphanedDocuments(e,t)}collect(t,n){return-1===this.params.cacheSizeCollectionThreshold?(Fy("LruGarbageCollector","Garbage collection skipped; disabled"),Tw.resolve(gE)):this.getCacheSize(t).next(e=>e<this.params.cacheSizeCollectionThreshold?(Fy("LruGarbageCollector",`Garbage collection skipped; Cache size ${e} is lower than threshold ${this.params.cacheSizeCollectionThreshold}`),gE):this.Yn(t,n))}getCacheSize(e){return this.jn.getCacheSize(e)}Yn(t,n){let r,i,s,a,o,c,l;const u=Date.now();return this.calculateTargetCount(t,this.params.percentileToCollect).next(e=>(i=e>this.params.maximumSequenceNumbersToCollect?(Fy("LruGarbageCollector",`Capping sequence numbers to collect down to the maximum of ${this.params.maximumSequenceNumbersToCollect} from ${e}`),this.params.maximumSequenceNumbersToCollect):e,a=Date.now(),this.nthSequenceNumber(t,i))).next(e=>(r=e,o=Date.now(),this.removeTargets(t,r,n))).next(e=>(s=e,c=Date.now(),this.removeOrphanedDocuments(t,r))).next(e=>(l=Date.now(),Ly()<=m.DEBUG&&Fy("LruGarbageCollector",`LRU Garbage Collection\n\tCounted targets in ${a-u}ms\n\tDetermined least recently used ${i} in `+(o-a)+"ms\n"+`\tRemoved ${s} targets in `+(c-o)+"ms\n"+`\tRemoved ${e} documents in `+(l-c)+"ms\n"+`Total Duration: ${l-u}ms`),Tw.resolve({didRun:!0,sequenceNumbersCollected:i,targetsRemoved:s,documentsRemoved:e})))}}class xE{constructor(e,t){this.db=e,this.garbageCollector=(e=this,t=t,new DE(e,t))}Hn(e){const n=this.Zn(e);return this.db.getTargetCache().getTargetCount(e).next(t=>n.next(e=>t+e))}Zn(e){let t=0;return this.Jn(e,e=>{t++}).next(()=>t)}forEachTarget(e,t){return this.db.getTargetCache().forEachTarget(e,t)}Jn(e,n){return this.Xn(e,(e,t)=>n(t))}addReference(e,t,n){return OE(e,n)}removeReference(e,t,n){return OE(e,n)}removeTargets(e,t,n){return this.db.getTargetCache().removeTargets(e,t,n)}markPotentiallyOrphaned(e,t){return OE(e,t)}er(t,n){let r=!1;return TE(t).Z(e=>wE(t,e,n).next(e=>(e&&(r=!0),Tw.resolve(!e)))).next(()=>r)}removeOrphanedDocuments(n,r){const i=this.db.getRemoteDocumentCache().newChangeBuffer(),s=[];let a=0;return this.Xn(n,(t,e)=>{if(e<=r){const r=this.er(n,t).next(e=>{if(!e)return a++,i.getEntry(n,t).next(()=>(i.removeEntry(t,sw.min()),AE(n).delete(function(e){return[0,Vw(e.path)]}(t))))});s.push(r)}}).next(()=>Tw.waitFor(s)).next(()=>i.apply(n)).next(()=>a)}removeTarget(e,t){var n=t.withSequenceNumber(e.currentSequenceNumber);return this.db.getTargetCache().updateTargetData(e,n)}updateLimboDocument(e,t){return OE(e,t)}Xn(e,r){const t=AE(e);let i,s=Mw._e;return t.Y({index:"documentTargetsIndex"},([e],{path:t,sequenceNumber:n})=>{0===e?(s!==Mw._e&&r(new uw(Bw(i)),s),s=n,i=t):s=Mw._e}).next(()=>{s!==Mw._e&&r(new uw(Bw(i)),s)})}getCacheSize(e){return this.db.getRemoteDocumentCache().getSize(e)}}function OE(e,t){return AE(e).put((e=e.currentSequenceNumber,{targetId:0,path:Vw(t.path),sequenceNumber:e}))}class ME{constructor(){this.changes=new $I(e=>e.toString(),(e,t)=>e.isEqual(t)),this.changesApplied=!1}addEntry(e){this.assertNotApplied(),this.changes.set(e.key,e)}removeEntry(e,t){this.assertNotApplied(),this.changes.set(e,Zb.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();var n=this.changes.get(t);return void 0!==n?Tw.resolve(n):this.getFromCache(e,t)}getEntries(e,t){return this.getAllFromCache(e,t)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}assertNotApplied(){}}class LE{constructor(e){this.serializer=e}setIndexManager(e){this.indexManager=e}addEntry(e,t,n){return qE(e).put(n)}removeEntry(e,t,n){return qE(e).delete(function(e,t){const n=e.path.toArray();return[n.slice(0,n.length-2),n[n.length-2],A0(t),n[n.length-1]]}(t,n))}updateMetadata(t,n){return this.getMetadata(t).next(e=>(e.byteSize+=n,this.tr(t,e)))}getEntry(e,n){let r=Zb.newInvalidDocument(n);return qE(e).Y({index:"documentKeyIndex",range:IDBKeyRange.only(BE(n))},(e,t)=>{r=this.nr(n,t)}).next(()=>r)}rr(e,n){let r={size:0,document:Zb.newInvalidDocument(n)};return qE(e).Y({index:"documentKeyIndex",range:IDBKeyRange.only(BE(n))},(e,t)=>{r={document:this.nr(n,t),size:_E(t)}}).next(()=>r)}getEntries(e,t){let r=KI;return this.ir(e,t,(e,t)=>{var n=this.nr(e,t);r=r.insert(e,n)}).next(()=>r)}sr(e,t){let r=KI,i=new mb(uw.comparator);return this.ir(e,t,(e,t)=>{var n=this.nr(e,t);r=r.insert(e,n),i=i.insert(e,_E(t))}).next(()=>({documents:r,_r:i}))}ir(e,t,i){if(t.isEmpty())return Tw.resolve();let n=new yb(zE);t.forEach(e=>n=n.add(e));const r=IDBKeyRange.bound(BE(n.first()),BE(n.last())),s=n.getIterator();let a=s.getNext();return qE(e).Y({index:"documentKeyIndex",range:r},(e,t,n)=>{for(var r=uw.fromSegments([...t.prefixPath,t.collectionGroup,t.documentId]);a&&zE(a,r)<0;)i(a,null),a=s.getNext();a&&a.isEqual(r)&&(i(a,t),a=s.hasNext()?s.getNext():null),a?n.U(BE(a)):n.done()}).next(()=>{for(;a;)i(a,null),a=s.hasNext()?s.getNext():null})}getDocumentsMatchingQuery(e,n,t,r,i){const s=n.path,a=[s.popLast().toArray(),s.lastSegment(),A0(t.readTime),t.documentKey.path.isEmpty()?"":t.documentKey.path.lastSegment()],o=[s.popLast().toArray(),s.lastSegment(),[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],""];return qE(e).W(IDBKeyRange.bound(a,o,!0)).next(e=>{null==i||i.incrementDocumentReadCount(e.length);let t=KI;for(const i of e){const e=this.nr(uw.fromSegments(i.prefixPath.concat(i.collectionGroup,i.documentId)),i);e.isFoundDocument()&&(BI(n,e)||r.has(e.key))&&(t=t.insert(e.key,e))}return t})}getAllFromCollectionGroup(e,t,n,i){let s=KI;var r=jE(t,n),a=jE(t,_w.max());return qE(e).Y({index:"collectionGroupIndex",range:IDBKeyRange.bound(r,a,!0)},(e,t,n)=>{var r=this.nr(uw.fromSegments(t.prefixPath.concat(t.collectionGroup,t.documentId)),t);s=s.insert(r.key,r),s.size===i&&n.done()}).next(()=>s)}newChangeBuffer(e){return new UE(this,!!e&&e.trackRemovals)}getSize(e){return this.getMetadata(e).next(e=>e.byteSize)}getMetadata(e){return VE(e).get("remoteDocumentGlobalKey").next(e=>(jy(!!e),e))}tr(e,t){return VE(e).put("remoteDocumentGlobalKey",t)}nr(e,t){if(t){const e=function(e,t){let n;if(t.document)n=f0(e.ct,t.document,!!t.hasCommittedMutations);else if(t.noDocument){const e=uw.fromSegments(t.noDocument.path),i=R0(t.noDocument.readTime);n=Zb.newNoDocument(e,i),t.hasCommittedMutations&&n.setHasCommittedMutations()}else{if(!t.unknownDocument)return By();{const e=uw.fromSegments(t.unknownDocument.path),s=R0(t.unknownDocument.version);n=Zb.newUnknownDocument(e,s)}}return t.readTime&&n.setReadTime((t=t.readTime,r=new iw(t[0],t[1]),sw.fromTimestamp(r))),n;var r}(this.serializer,t);if(!e.isNoDocument()||!e.version.isEqual(sw.min()))return e}return Zb.newInvalidDocument(e)}}function FE(e){return new LE(e)}class UE extends ME{constructor(e,t){super(),this.ar=e,this.trackRemovals=t,this.ur=new $I(e=>e.toString(),(e,t)=>e.isEqual(t))}applyChanges(s){const a=[];let o=0,c=new yb((e,t)=>tw(e.canonicalString(),t.canonicalString()));return this.changes.forEach((e,t)=>{var n=this.ur.get(e);if(a.push(this.ar.removeEntry(s,e,n.readTime)),t.isValidDocument()){var r=k0(this.ar.serializer,t);c=c.add(e.path.popLast());var i=_E(r);o+=i-n.size,a.push(this.ar.addEntry(s,e,r))}else if(o-=n.size,this.trackRemovals){const o=k0(this.ar.serializer,t.convertToNoDocument(sw.min()));a.push(this.ar.addEntry(s,e,o))}}),c.forEach(e=>{a.push(this.ar.indexManager.addToCollectionParentIndex(s,e))}),a.push(this.ar.updateMetadata(s,o)),Tw.waitFor(a)}getFromCache(e,t){return this.ar.rr(e,t).next(e=>(this.ur.set(t,{size:e.size,readTime:e.document.readTime}),e.document))}getAllFromCache(e,t){return this.ar.sr(e,t).next(({documents:n,_r:e})=>(e.forEach((e,t)=>{this.ur.set(e,{size:t,readTime:n.get(e).readTime})}),n))}}function VE(e){return db(e,"remoteDocumentGlobal")}function qE(e){return db(e,"remoteDocumentsV14")}function BE(e){const t=e.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],t[t.length-1]]}function jE(e,t){const n=t.documentKey.path.toArray();return[e,A0(t.readTime),n.slice(0,n.length-2),0<n.length?n[n.length-1]:""]}function zE(e,t){var n=e.path.toArray(),r=t.path.toArray();let i=0;for(let s=0;s<n.length-2&&s<r.length-2;++s)if(i=tw(n[s],r[s]),i)return i;return i=tw(n.length,r.length),i||(i=tw(n[n.length-2],r[r.length-2]),i||tw(n[n.length-1],r[r.length-1]))}class $E{constructor(e,t){this.overlayedDocument=e,this.mutatedFields=t}}class KE{constructor(e,t,n,r){this.remoteDocumentCache=e,this.mutationQueue=t,this.documentOverlayCache=n,this.indexManager=r}getDocument(t,n){let r=null;return this.documentOverlayCache.getOverlay(t,n).next(e=>(r=e,this.remoteDocumentCache.getEntry(t,n))).next(e=>(null!==r&&wT(r.mutation,e,Ib.empty(),iw.now()),e))}getDocuments(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.getLocalViewOfDocuments(t,e,XI()).next(()=>e))}getLocalViewOfDocuments(e,t,n=XI()){const r=QI();return this.populateOverlays(e,r,t).next(()=>this.computeViews(e,t,r,n).next(e=>{let n=GI();return e.forEach((e,t)=>{n=n.insert(e,t.overlayedDocument)}),n}))}getOverlayedDocuments(e,t){const n=QI();return this.populateOverlays(e,n,t).next(()=>this.computeViews(e,t,n,XI()))}populateOverlays(e,n,t){const r=[];return t.forEach(e=>{n.has(e)||r.push(e)}),this.documentOverlayCache.getOverlays(e,r).next(e=>{e.forEach((e,t)=>{n.set(e,t)})})}computeViews(e,t,r,i){let s=KI;const a=QI(),o=QI();return t.forEach((e,t)=>{const n=r.get(t.key);i.has(t.key)&&(void 0===n||n.mutation instanceof TT)?s=s.insert(t.key,t):void 0!==n?(a.set(t.key,n.mutation.getFieldMask()),wT(n.mutation,t,n.mutation.getFieldMask(),iw.now())):a.set(t.key,Ib.empty())}),this.recalculateAndSaveOverlays(e,s).next(e=>(e.forEach((e,t)=>a.set(e,t)),t.forEach((e,t)=>{var n;return o.set(e,new $E(t,null!==(n=a.get(e))&&void 0!==n?n:null))}),o))}recalculateAndSaveOverlays(s,a){const o=QI();let c=new mb((e,t)=>e-t),l=XI();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(s,a).next(e=>{for(const r of e)r.keys().forEach(e=>{var t,n=a.get(e);null!==n&&(t=o.get(e)||Ib.empty(),t=r.applyToLocalView(n,t),o.set(e,t),t=(c.get(r.batchId)||XI()).add(e),c=c.insert(r.batchId,t))})}).next(()=>{const e=[],t=c.getReverseIterator();for(;t.hasNext();){const c=t.getNext(),n=c.key,r=c.value,i=QI();r.forEach(e=>{var t;l.has(e)||(null!==(t=_T(a.get(e),o.get(e)))&&i.set(e,t),l=l.add(e))}),e.push(this.documentOverlayCache.saveOverlays(s,n,i))}return Tw.waitFor(e)}).next(()=>o)}recalculateAndSaveOverlaysForDocumentKeys(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.recalculateAndSaveOverlays(t,e))}getDocumentsMatchingQuery(e,t,n,r){return i=t,uw.isDocumentKey(i.path)&&null===i.collectionGroup&&0===i.filters.length?this.getDocumentsMatchingDocumentQuery(e,t.path):xI(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,n,r):this.getDocumentsMatchingCollectionQuery(e,t,n,r);var i}getNextDocuments(s,t,a,o){return this.remoteDocumentCache.getAllFromCollectionGroup(s,t,a,o).next(n=>{const e=0<o-n.size?this.documentOverlayCache.getOverlaysForCollectionGroup(s,t,a.largestBatchId,o-n.size):Tw.resolve(QI());let r=-1,i=n;return e.next(e=>Tw.forEach(e,(t,e)=>(r<e.largestBatchId&&(r=e.largestBatchId),n.get(t)?Tw.resolve():this.remoteDocumentCache.getEntry(s,t).next(e=>{i=i.insert(t,e)}))).next(()=>this.populateOverlays(s,e,n)).next(()=>this.computeViews(s,i,e,XI())).next(e=>({batchId:r,changes:HI(e)})))})}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new uw(t)).next(e=>{let t=GI();return e.isFoundDocument()&&(t=t.insert(e.key,e)),t})}getDocumentsMatchingCollectionGroupQuery(r,i,s,a){const o=i.collectionGroup;let c=GI();return this.indexManager.getCollectionParents(r,o).next(e=>Tw.forEach(e,e=>{var t,n=(t=i,e=e.child(o),new NI(e,null,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,t.endAt));return this.getDocumentsMatchingCollectionQuery(r,n,s,a).next(e=>{e.forEach((e,t)=>{c=c.insert(e,t)})})}).next(()=>c))}getDocumentsMatchingCollectionQuery(t,s,n,r){let a;return this.documentOverlayCache.getOverlaysForCollection(t,s.path,n.largestBatchId).next(e=>(a=e,this.remoteDocumentCache.getDocumentsMatchingQuery(t,s,n,a,r))).next(r=>{a.forEach((e,t)=>{var n=t.getKey();null===r.get(n)&&(r=r.insert(n,Zb.newInvalidDocument(n)))});let i=GI();return r.forEach((e,t)=>{var n=a.get(e);void 0!==n&&wT(n.mutation,t,Ib.empty(),iw.now()),BI(s,t)&&(i=i.insert(e,t))}),i})}}class WE{constructor(e){this.serializer=e,this.cr=new Map,this.lr=new Map}getBundleMetadata(e,t){return Tw.resolve(this.cr.get(t))}saveBundleMetadata(e,t){return this.cr.set(t.id,{id:t.id,version:t.version,createTime:r0(t.createTime)}),Tw.resolve()}getNamedQuery(e,t){return Tw.resolve(this.lr.get(t))}saveNamedQuery(e,t){return this.lr.set(t.name,{name:(t=t).name,query:O0(t.bundledQuery),readTime:r0(t.readTime)}),Tw.resolve()}}class GE{constructor(){this.overlays=new mb(uw.comparator),this.hr=new Map}getOverlay(e,t){return Tw.resolve(this.overlays.get(t))}getOverlays(e,t){const n=QI();return Tw.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&n.set(t,e)})).next(()=>n)}saveOverlays(n,r,e){return e.forEach((e,t)=>{this.ht(n,r,t)}),Tw.resolve()}removeOverlaysForBatchId(e,t,n){const r=this.hr.get(n);return void 0!==r&&(r.forEach(e=>this.overlays=this.overlays.remove(e)),this.hr.delete(n)),Tw.resolve()}getOverlaysForCollection(e,t,n){const r=QI(),i=t.length+1,s=new uw(t.child("")),a=this.overlays.getIteratorFrom(s);for(;a.hasNext();){const e=a.getNext().value,s=e.getKey();if(!t.isPrefixOf(s.path))break;s.path.length===i&&e.largestBatchId>n&&r.set(e.getKey(),e)}return Tw.resolve(r)}getOverlaysForCollectionGroup(t,e,n,r){let i=new mb((e,t)=>e-t);const s=this.overlays.getIterator();for(;s.hasNext();){const t=s.getNext().value;if(t.getKey().getCollectionGroup()===e&&t.largestBatchId>n){let e=i.get(t.largestBatchId);null===e&&(e=QI(),i=i.insert(t.largestBatchId,e)),e.set(t.getKey(),t)}}const a=QI(),o=i.getIterator();for(;o.hasNext()&&(o.getNext().value.forEach((e,t)=>a.set(e,t)),!(a.size()>=r)););return Tw.resolve(a)}ht(e,t,n){var r=this.overlays.get(n.key);if(null!==r){const e=this.hr.get(r.largestBatchId).delete(n.key);this.hr.set(r.largestBatchId,e)}this.overlays=this.overlays.insert(n.key,new PT(t,n));let i=this.hr.get(t);void 0===i&&(i=XI(),this.hr.set(t,i)),this.hr.set(t,i.add(n.key))}}class HE{constructor(){this.Pr=new yb(QE.Ir),this.Tr=new yb(QE.Er)}isEmpty(){return this.Pr.isEmpty()}addReference(e,t){var n=new QE(e,t);this.Pr=this.Pr.add(n),this.Tr=this.Tr.add(n)}dr(e,t){e.forEach(e=>this.addReference(e,t))}removeReference(e,t){this.Ar(new QE(e,t))}Rr(e,t){e.forEach(e=>this.removeReference(e,t))}Vr(e){const t=new uw(new ow([])),n=new QE(t,e),r=new QE(t,e+1),i=[];return this.Tr.forEachInRange([n,r],e=>{this.Ar(e),i.push(e.key)}),i}mr(){this.Pr.forEach(e=>this.Ar(e))}Ar(e){this.Pr=this.Pr.delete(e),this.Tr=this.Tr.delete(e)}gr(e){var t=new uw(new ow([])),n=new QE(t,e),t=new QE(t,e+1);let r=XI();return this.Tr.forEachInRange([n,t],e=>{r=r.add(e.key)}),r}containsKey(e){var t=new QE(e,0),t=this.Pr.firstAfterOrEqual(t);return null!==t&&e.isEqual(t.key)}}class QE{constructor(e,t){this.key=e,this.pr=t}static Ir(e,t){return uw.comparator(e.key,t.key)||tw(e.pr,t.pr)}static Er(e,t){return tw(e.pr,t.pr)||uw.comparator(e.key,t.key)}}class YE{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.yr=1,this.wr=new yb(QE.Ir)}checkEmpty(e){return Tw.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,n,r){var i=this.yr;this.yr++,0<this.mutationQueue.length&&this.mutationQueue[this.mutationQueue.length-1];var s=new NT(i,t,n,r);this.mutationQueue.push(s);for(const t of r)this.wr=this.wr.add(new QE(t.key,i)),this.indexManager.addToCollectionParentIndex(e,t.key.path.popLast());return Tw.resolve(s)}lookupMutationBatch(e,t){return Tw.resolve(this.Sr(t))}getNextMutationBatchAfterBatchId(e,t){var n=this.br(t+1),n=n<0?0:n;return Tw.resolve(this.mutationQueue.length>n?this.mutationQueue[n]:null)}getHighestUnacknowledgedBatchId(){return Tw.resolve(0===this.mutationQueue.length?-1:this.yr-1)}getAllMutationBatches(e){return Tw.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const n=new QE(t,0),r=new QE(t,Number.POSITIVE_INFINITY),i=[];return this.wr.forEachInRange([n,r],e=>{var t=this.Sr(e.pr);i.push(t)}),Tw.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new yb(tw);return t.forEach(e=>{var t=new QE(e,0),n=new QE(e,Number.POSITIVE_INFINITY);this.wr.forEachInRange([t,n],e=>{r=r.add(e.pr)})}),Tw.resolve(this.Dr(r))}getAllMutationBatchesAffectingQuery(e,t){const n=t.path,r=n.length+1;let i=n;uw.isDocumentKey(i)||(i=i.child(""));var s=new QE(new uw(i),0);let a=new yb(tw);return this.wr.forEachWhile(e=>{var t=e.key.path;return!!n.isPrefixOf(t)&&(t.length===r&&(a=a.add(e.pr)),!0)},s),Tw.resolve(this.Dr(a))}Dr(e){const n=[];return e.forEach(e=>{var t=this.Sr(e);null!==t&&n.push(t)}),n}removeMutationBatch(n,r){jy(0===this.Cr(r.batchId,"removed")),this.mutationQueue.shift();let i=this.wr;return Tw.forEach(r.mutations,e=>{var t=new QE(e.key,r.batchId);return i=i.delete(t),this.referenceDelegate.markPotentiallyOrphaned(n,e.key)}).next(()=>{this.wr=i})}Mn(e){}containsKey(e,t){var n=new QE(t,0),n=this.wr.firstAfterOrEqual(n);return Tw.resolve(t.isEqual(n&&n.key))}performConsistencyCheck(e){return this.mutationQueue.length,Tw.resolve()}Cr(e,t){return this.br(e)}br(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}Sr(e){var t=this.br(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class JE{constructor(e){this.vr=e,this.docs=new mb(uw.comparator),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){const n=t.key,r=this.docs.get(n),i=r?r.size:0,s=this.vr(t);return this.docs=this.docs.insert(n,{document:t.mutableCopy(),size:s}),this.size+=s-i,this.indexManager.addToCollectionParentIndex(e,n.path.popLast())}removeEntry(e){var t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){const n=this.docs.get(t);return Tw.resolve(n?n.document.mutableCopy():Zb.newInvalidDocument(t))}getEntries(e,t){let n=KI;return t.forEach(e=>{const t=this.docs.get(e);n=n.insert(e,t?t.document.mutableCopy():Zb.newInvalidDocument(e))}),Tw.resolve(n)}getDocumentsMatchingQuery(e,t,n,r){let i=KI;const s=t.path,a=new uw(s.child("")),o=this.docs.getIteratorFrom(a);for(;o.hasNext();){const{key:e,value:{document:a}}=o.getNext();if(!s.isPrefixOf(e.path))break;e.path.length>s.length+1||yw(vw(a),n)<=0||(r.has(a.key)||BI(t,a))&&(i=i.insert(a.key,a.mutableCopy()))}return Tw.resolve(i)}getAllFromCollectionGroup(e,t,n,r){By()}Fr(e,t){return Tw.forEach(this.docs,e=>t(e))}newChangeBuffer(e){return new XE(this)}getSize(e){return Tw.resolve(this.size)}}class XE extends ME{constructor(e){super(),this.ar=e}applyChanges(n){const r=[];return this.changes.forEach((e,t)=>{t.isValidDocument()?r.push(this.ar.addEntry(n,t)):this.ar.removeEntry(e)}),Tw.waitFor(r)}getFromCache(e,t){return this.ar.getEntry(e,t)}getAllFromCache(e,t){return this.ar.getEntries(e,t)}}class ZE{constructor(e){this.persistence=e,this.Mr=new $I(e=>TI(e),EI),this.lastRemoteSnapshotVersion=sw.min(),this.highestTargetId=0,this.Or=0,this.Nr=new HE,this.targetCount=0,this.Br=EE.Nn()}forEachTarget(e,n){return this.Mr.forEach((e,t)=>n(t)),Tw.resolve()}getLastRemoteSnapshotVersion(e){return Tw.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return Tw.resolve(this.Or)}allocateTargetId(e){return this.highestTargetId=this.Br.next(),Tw.resolve(this.highestTargetId)}setTargetsMetadata(e,t,n){return n&&(this.lastRemoteSnapshotVersion=n),t>this.Or&&(this.Or=t),Tw.resolve()}qn(e){this.Mr.set(e.target,e);var t=e.targetId;t>this.highestTargetId&&(this.Br=new EE(t),this.highestTargetId=t),e.sequenceNumber>this.Or&&(this.Or=e.sequenceNumber)}addTargetData(e,t){return this.qn(t),this.targetCount+=1,Tw.resolve()}updateTargetData(e,t){return this.qn(t),Tw.resolve()}removeTargetData(e,t){return this.Mr.delete(t.target),this.Nr.Vr(t.targetId),--this.targetCount,Tw.resolve()}removeTargets(n,r,i){let s=0;const a=[];return this.Mr.forEach((e,t)=>{t.sequenceNumber<=r&&null===i.get(t.targetId)&&(this.Mr.delete(e),a.push(this.removeMatchingKeysForTargetId(n,t.targetId)),s++)}),Tw.waitFor(a).next(()=>s)}getTargetCount(e){return Tw.resolve(this.targetCount)}getTargetData(e,t){var n=this.Mr.get(t)||null;return Tw.resolve(n)}addMatchingKeys(e,t,n){return this.Nr.dr(t,n),Tw.resolve()}removeMatchingKeys(t,e,n){this.Nr.Rr(e,n);const r=this.persistence.referenceDelegate,i=[];return r&&e.forEach(e=>{i.push(r.markPotentiallyOrphaned(t,e))}),Tw.waitFor(i)}removeMatchingKeysForTargetId(e,t){return this.Nr.Vr(t),Tw.resolve()}getMatchingKeysForTargetId(e,t){var n=this.Nr.gr(t);return Tw.resolve(n)}containsKey(e,t){return Tw.resolve(this.Nr.containsKey(t))}}class eC{constructor(e,t){this.Lr={},this.overlays={},this.kr=new Mw(0),this.qr=!1,this.qr=!0,this.referenceDelegate=e(this),this.Qr=new ZE(this),this.indexManager=new aE,this.remoteDocumentCache=(e=e=>this.referenceDelegate.Kr(e),new JE(e)),this.serializer=new S0(t),this.$r=new WE(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.qr=!1,Promise.resolve()}get started(){return this.qr}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new GE,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let n=this.Lr[e.toKey()];return n||(n=new YE(t,this.referenceDelegate),this.Lr[e.toKey()]=n),n}getTargetCache(){return this.Qr}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.$r}runTransaction(e,t,n){Fy("MemoryPersistence","Starting transaction:",e);const r=new tC(this.kr.next());return this.referenceDelegate.Ur(),n(r).next(e=>this.referenceDelegate.Wr(r).next(()=>e)).toPromise().then(e=>(r.raiseOnCommittedEvent(),e))}Gr(t,n){return Tw.or(Object.values(this.Lr).map(e=>()=>e.containsKey(t,n)))}}class tC extends bw{constructor(e){super(),this.currentSequenceNumber=e}}class nC{constructor(e){this.persistence=e,this.zr=new HE,this.jr=null}static Hr(e){return new nC(e)}get Jr(){if(this.jr)return this.jr;throw By()}addReference(e,t,n){return this.zr.addReference(n,t),this.Jr.delete(n.toString()),Tw.resolve()}removeReference(e,t,n){return this.zr.removeReference(n,t),this.Jr.add(n.toString()),Tw.resolve()}markPotentiallyOrphaned(e,t){return this.Jr.add(t.toString()),Tw.resolve()}removeTarget(e,t){this.zr.Vr(t.targetId).forEach(e=>this.Jr.add(e.toString()));const n=this.persistence.getTargetCache();return n.getMatchingKeysForTargetId(e,t.targetId).next(e=>{e.forEach(e=>this.Jr.add(e.toString()))}).next(()=>n.removeTargetData(e,t))}Ur(){this.jr=new Set}Wr(n){const r=this.persistence.getRemoteDocumentCache().newChangeBuffer();return Tw.forEach(this.Jr,e=>{const t=uw.fromPath(e);return this.Yr(n,t).next(e=>{e||r.removeEntry(t,sw.min())})}).next(()=>(this.jr=null,r.apply(n)))}updateLimboDocument(e,t){return this.Yr(e,t).next(e=>{e?this.Jr.delete(t.toString()):this.Jr.add(t.toString())})}Kr(e){return 0}Yr(e,t){return Tw.or([()=>Tw.resolve(this.zr.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Gr(e,t)])}}class rC{constructor(e){this.serializer=e}N(t,e,n,r){const i=new Ew("createOrUpgrade",e);var s;n<1&&1<=r&&(t.createObjectStore("owner"),(s=t).createObjectStore("mutationQueues",{keyPath:"userId"}),s.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",jw,{unique:!0}),s.createObjectStore("documentMutations"),iC(t),t.createObjectStore("remoteDocuments"));let a=Tw.resolve();return n<3&&3<=r&&(0!==n&&((s=t).deleteObjectStore("targetDocuments"),s.deleteObjectStore("targets"),s.deleteObjectStore("targetGlobal"),iC(t)),a=a.next(()=>function(e){const t=e.store("targetGlobal"),n={highestTargetId:0,highestListenSequenceNumber:0,lastRemoteSnapshotVersion:sw.min().toTimestamp(),targetCount:0};return t.put("targetGlobalKey",n)}(i))),n<4&&4<=r&&(0!==n&&(a=a.next(()=>function(r,i){return i.store("mutations").W().next(e=>{r.deleteObjectStore("mutations"),r.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",jw,{unique:!0});const t=i.store("mutations"),n=e.map(e=>t.put(e));return Tw.waitFor(n)})}(t,i))),a=a.next(()=>{t.createObjectStore("clientMetadata",{keyPath:"clientId"})})),n<5&&5<=r&&(a=a.next(()=>this.Xr(i))),n<6&&6<=r&&(a=a.next(()=>(function(e){e.createObjectStore("remoteDocumentGlobal")}(t),this.ei(i)))),n<7&&7<=r&&(a=a.next(()=>this.ti(i))),n<8&&8<=r&&(a=a.next(()=>this.ni(t,i))),n<9&&9<=r&&(a=a.next(()=>{var e;(e=t).objectStoreNames.contains("remoteDocumentChanges")&&e.deleteObjectStore("remoteDocumentChanges")})),n<10&&10<=r&&(a=a.next(()=>this.ri(i))),n<11&&11<=r&&(a=a.next(()=>{t.createObjectStore("bundles",{keyPath:"bundleId"}),t.createObjectStore("namedQueries",{keyPath:"name"})})),n<12&&12<=r&&(a=a.next(()=>{!function(e){const t=e.createObjectStore("documentOverlays",{keyPath:rb});t.createIndex("collectionPathOverlayIndex",ib,{unique:!1}),t.createIndex("collectionGroupOverlayIndex",sb,{unique:!1})}(t)})),n<13&&13<=r&&(a=a.next(()=>function(e){const t=e.createObjectStore("remoteDocumentsV14",{keyPath:Ww});t.createIndex("documentKeyIndex",Gw),t.createIndex("collectionGroupIndex",Hw)}(t)).next(()=>this.ii(t,i)).next(()=>t.deleteObjectStore("remoteDocuments"))),n<14&&14<=r&&(a=a.next(()=>this.si(t,i))),n<15&&15<=r&&(a=a.next(()=>function(e){e.createObjectStore("indexConfiguration",{keyPath:"indexId",autoIncrement:!0}).createIndex("collectionGroupIndex","collectionGroup",{unique:!1}),e.createObjectStore("indexState",{keyPath:Zw}).createIndex("sequenceNumberIndex",eb,{unique:!1}),e.createObjectStore("indexEntries",{keyPath:tb}).createIndex("documentKeyIndex",nb,{unique:!1})}(t))),a}ei(t){let n=0;return t.store("remoteDocuments").Y((e,t)=>{n+=_E(t)}).next(()=>{var e={byteSize:n};return t.store("remoteDocumentGlobal").put("remoteDocumentGlobalKey",e)})}Xr(r){const e=r.store("mutationQueues"),t=r.store("mutations");return e.W().next(e=>Tw.forEach(e,n=>{var e=IDBKeyRange.bound([n.userId,-1],[n.userId,n.lastAcknowledgedBatchId]);return t.W("userMutationsIndex",e).next(e=>Tw.forEach(e,e=>{jy(e.userId===n.userId);var t=P0(this.serializer,e);return vE(r,n.userId,t).next(()=>{})}))}))}ti(e){const a=e.store("targetDocuments"),t=e.store("remoteDocuments");return e.store("targetGlobal").get("targetGlobalKey").next(i=>{const s=[];return t.Y((e,t)=>{const n=new ow(e),r=[0,Vw(n)];s.push(a.get(r).next(e=>e?Tw.resolve():(e=>a.put({targetId:0,path:Vw(e),sequenceNumber:i.highestListenSequenceNumber}))(n)))}).next(()=>Tw.waitFor(s))})}ni(e,t){e.createObjectStore("collectionParents",{keyPath:Xw});const n=t.store("collectionParents"),r=new oE,i=e=>{if(r.add(e)){const t=e.lastSegment(),r=e.popLast();return n.put({collectionId:t,parent:Vw(r)})}};return t.store("remoteDocuments").Y({J:!0},(e,t)=>{const n=new ow(e);return i(n.popLast())}).next(()=>t.store("documentMutations").Y({J:!0},([,e],t)=>{const n=Bw(e);return i(n.popLast())}))}ri(e){const r=e.store("targets");return r.Y((e,t)=>{var n=D0(t),n=x0(this.serializer,n);return r.put(n)})}ii(e,a){const t=a.store("remoteDocuments"),o=[];return t.Y((e,t)=>{const n=a.store("remoteDocumentsV14"),r=((s=t).document?new uw(ow.fromString(s.document.name).popFirst(5)):s.noDocument?uw.fromSegments(s.noDocument.path):s.unknownDocument?uw.fromSegments(s.unknownDocument.path):By()).path.toArray(),i={prefixPath:r.slice(0,r.length-2),collectionGroup:r[r.length-2],documentId:r[r.length-1],readTime:t.readTime||[0,0],unknownDocument:t.unknownDocument,noDocument:t.noDocument,document:t.document,hasCommittedMutations:!!t.hasCommittedMutations};var s;o.push(n.put(i))}).next(()=>Tw.waitFor(o))}si(e,s){const t=s.store("mutations"),a=FE(this.serializer),o=new eC(nC.Hr,this.serializer.ct);return t.W().next(e=>{const r=new Map;return e.forEach(e=>{var t;let n=null!==(t=r.get(e.userId))&&void 0!==t?t:XI();P0(this.serializer,e).keys().forEach(e=>n=n.add(e)),r.set(e.userId,n)}),Tw.forEach(r,(e,t)=>{var n=new xy(t),r=B0.lt(this.serializer,n),i=o.getIndexManager(n),n=yE.lt(n,this.serializer,i,o.referenceDelegate);return new KE(a,n,r,i).recalculateAndSaveOverlaysForDocumentKeys(new hb(s,Mw._e),e).next()})})}}function iC(e){e.createObjectStore("targetDocuments",{keyPath:Yw}).createIndex("documentTargetsIndex",Jw,{unique:!0}),e.createObjectStore("targets",{keyPath:"targetId"}).createIndex("queryTargetsIndex",Qw,{unique:!0}),e.createObjectStore("targetGlobal")}const sC="Failed to obtain exclusive access to the persistence layer. To allow shared access, multi-tab synchronization has to be enabled in all tabs. If you are using `experimentalForceOwningTab:true`, make sure that only one tab has persistence enabled at any given time.";class aC{constructor(e,t,n,r,i,s,a,o,c,l,u=15){if(this.allowTabSynchronization=e,this.persistenceKey=t,this.clientId=n,this.oi=i,this.window=s,this.document=a,this._i=c,this.ai=l,this.ui=u,this.kr=null,this.qr=!1,this.isPrimary=!1,this.networkEnabled=!0,this.ci=null,this.inForeground=!1,this.li=null,this.hi=null,this.Pi=Number.NEGATIVE_INFINITY,this.Ii=e=>Promise.resolve(),!aC.D())throw new $y(zy.UNIMPLEMENTED,"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.");this.referenceDelegate=new xE(this,r),this.Ti=t+"main",this.serializer=new S0(o),this.Ei=new Cw(this.Ti,this.ui,new rC(this.serializer)),this.Qr=new CE(this.referenceDelegate,this.serializer),this.remoteDocumentCache=FE(this.serializer),this.$r=new U0,this.window&&this.window.localStorage?this.di=this.window.localStorage:(this.di=null,!1===l&&Uy("IndexedDbPersistence","LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page."))}start(){return this.Ai().then(()=>{if(!this.isPrimary&&!this.allowTabSynchronization)throw new $y(zy.FAILED_PRECONDITION,sC);return this.Ri(),this.Vi(),this.mi(),this.runTransaction("getHighestListenSequenceNumber","readonly",e=>this.Qr.getHighestSequenceNumber(e))}).then(e=>{this.kr=new Mw(e,this._i)}).then(()=>{this.qr=!0}).catch(e=>(this.Ei&&this.Ei.close(),Promise.reject(e)))}fi(t){return this.Ii=async e=>{if(this.started)return t(e)},t(this.isPrimary)}setDatabaseDeletedListener(t){this.Ei.L(async e=>{null===e.newVersion&&await t()})}setNetworkEnabled(e){this.networkEnabled!==e&&(this.networkEnabled=e,this.oi.enqueueAndForget(async()=>{this.started&&await this.Ai()}))}Ai(){return this.runTransaction("updateClientMetadataAndTryBecomePrimary","readwrite",t=>cC(t).put({clientId:this.clientId,updateTimeMs:Date.now(),networkEnabled:this.networkEnabled,inForeground:this.inForeground}).next(()=>{if(this.isPrimary)return this.gi(t).next(e=>{e||(this.isPrimary=!1,this.oi.enqueueRetryable(()=>this.Ii(!1)))})}).next(()=>this.pi(t)).next(e=>this.isPrimary&&!e?this.yi(t).next(()=>!1):!!e&&this.wi(t).next(()=>!0))).catch(e=>{if(Aw(e))return Fy("IndexedDbPersistence","Failed to extend owner lease: ",e),this.isPrimary;if(!this.allowTabSynchronization)throw e;return Fy("IndexedDbPersistence","Releasing owner lease after error during lease refresh",e),!1}).then(e=>{this.isPrimary!==e&&this.oi.enqueueRetryable(()=>this.Ii(e)),this.isPrimary=e})}gi(e){return oC(e).get("owner").next(e=>Tw.resolve(this.Si(e)))}bi(e){return cC(e).delete(this.clientId)}async Di(){if(this.isPrimary&&!this.Ci(this.Pi,18e5)){this.Pi=Date.now();var e=await this.runTransaction("maybeGarbageCollectMultiClientState","readwrite-primary",e=>{const r=db(e,"clientMetadata");return r.W().next(e=>{const t=this.vi(e,18e5),n=e.filter(e=>-1===t.indexOf(e));return Tw.forEach(n,e=>r.delete(e.clientId)).next(()=>n)})}).catch(()=>[]);if(this.di)for(const t of e)this.di.removeItem(this.Fi(t.clientId))}}mi(){this.hi=this.oi.enqueueAfterDelay("client_metadata_refresh",4e3,()=>this.Ai().then(()=>this.Di()).then(()=>this.mi()))}Si(e){return!!e&&e.ownerId===this.clientId}pi(t){return this.ai?Tw.resolve(!0):oC(t).get("owner").next(e=>{if(null!==e&&this.Ci(e.leaseTimestampMs,5e3)&&!this.Mi(e.ownerId)){if(this.Si(e)&&this.networkEnabled)return!0;if(!this.Si(e)){if(!e.allowTabSynchronization)throw new $y(zy.FAILED_PRECONDITION,sC);return!1}}return!(!this.networkEnabled||!this.inForeground)||cC(t).W().next(e=>void 0===this.vi(e,5e3).find(e=>{if(this.clientId!==e.clientId){var t=!this.networkEnabled&&e.networkEnabled,n=!this.inForeground&&e.inForeground,r=this.networkEnabled===e.networkEnabled;if(t||n&&r)return!0}return!1}))}).next(e=>(this.isPrimary!==e&&Fy("IndexedDbPersistence",`Client ${e?"is":"is not"} eligible for a primary lease.`),e))}async shutdown(){this.qr=!1,this.xi(),this.hi&&(this.hi.cancel(),this.hi=null),this.Oi(),this.Ni(),await this.Ei.runTransaction("shutdown","readwrite",["owner","clientMetadata"],e=>{const t=new hb(e,Mw._e);return this.yi(t).next(()=>this.bi(t))}),this.Ei.close(),this.Bi()}vi(e,t){return e.filter(e=>this.Ci(e.updateTimeMs,t)&&!this.Mi(e.clientId))}Li(){return this.runTransaction("getActiveClients","readonly",e=>cC(e).W().next(e=>this.vi(e,18e5).map(e=>e.clientId)))}get started(){return this.qr}getMutationQueue(e,t){return yE.lt(e,this.serializer,t,this.referenceDelegate)}getTargetCache(){return this.Qr}getRemoteDocumentCache(){return this.remoteDocumentCache}getIndexManager(e){return new lE(e,this.serializer.ct.databaseId)}getDocumentOverlayCache(e){return B0.lt(this.serializer,e)}getBundleCache(){return this.$r}runTransaction(t,n,r){Fy("IndexedDbPersistence","Starting transaction:",t);var e,i="readonly"===n?"readonly":"readwrite",s=15===(e=this.ui)?ub:14===e?lb:13===e?cb:12===e?ob:11===e?ab:void By();let a;return this.Ei.runTransaction(t,i,s,e=>(a=new hb(e,this.kr?this.kr.next():Mw._e),"readwrite-primary"===n?this.gi(a).next(e=>!!e||this.pi(a)).next(e=>{if(!e)throw Uy(`Failed to obtain primary lease for action '${t}'.`),this.isPrimary=!1,this.oi.enqueueRetryable(()=>this.Ii(!1)),new $y(zy.FAILED_PRECONDITION,ww);return r(a)}).next(e=>this.wi(a).next(()=>e)):this.ki(a).next(()=>r(a)))).then(e=>(a.raiseOnCommittedEvent(),e))}ki(e){return oC(e).get("owner").next(e=>{if(null!==e&&this.Ci(e.leaseTimestampMs,5e3)&&!this.Mi(e.ownerId)&&!this.Si(e)&&!(this.ai||this.allowTabSynchronization&&e.allowTabSynchronization))throw new $y(zy.FAILED_PRECONDITION,sC)})}wi(e){var t={ownerId:this.clientId,allowTabSynchronization:this.allowTabSynchronization,leaseTimestampMs:Date.now()};return oC(e).put("owner",t)}static D(){return Cw.D()}yi(e){const t=oC(e);return t.get("owner").next(e=>this.Si(e)?(Fy("IndexedDbPersistence","Releasing primary lease."),t.delete("owner")):Tw.resolve())}Ci(e,t){var n=Date.now();return!(e<n-t||n<e&&(Uy(`Detected an update time that is in the future: ${e} > ${n}`),1))}Ri(){null!==this.document&&"function"==typeof this.document.addEventListener&&(this.li=()=>{this.oi.enqueueAndForget(()=>(this.inForeground="visible"===this.document.visibilityState,this.Ai()))},this.document.addEventListener("visibilitychange",this.li),this.inForeground="visible"===this.document.visibilityState)}Oi(){this.li&&(this.document.removeEventListener("visibilitychange",this.li),this.li=null)}Vi(){var e;"function"==typeof(null===(e=this.window)||void 0===e?void 0:e.addEventListener)&&(this.ci=()=>{this.xi();var e=/(?:Version|Mobile)\/1[456]/;A()&&(navigator.appVersion.match(e)||navigator.userAgent.match(e))&&this.oi.enterRestrictedMode(!0),this.oi.enqueueAndForget(()=>this.shutdown())},this.window.addEventListener("pagehide",this.ci))}Ni(){this.ci&&(this.window.removeEventListener("pagehide",this.ci),this.ci=null)}Mi(e){var t;try{var n=null!==(null===(t=this.di)||void 0===t?void 0:t.getItem(this.Fi(e)));return Fy("IndexedDbPersistence",`Client '${e}' ${n?"is":"is not"} zombied in LocalStorage`),n}catch(e){return Uy("IndexedDbPersistence","Failed to get zombied client id.",e),!1}}xi(){if(this.di)try{this.di.setItem(this.Fi(this.clientId),String(Date.now()))}catch(e){Uy("Failed to set zombie client id.",e)}}Bi(){if(this.di)try{this.di.removeItem(this.Fi(this.clientId))}catch(e){}}Fi(e){return`firestore_zombie_${this.persistenceKey}_${e}`}}function oC(e){return db(e,"owner")}function cC(e){return db(e,"clientMetadata")}function lC(e,t){let n=e.projectId;return e.isDefaultDatabase||(n+="."+e.database),"firestore/"+t+"/"+n+"/"}class uC{constructor(e,t,n,r){this.targetId=e,this.fromCache=t,this.qi=n,this.Qi=r}static Ki(e,t){let n=XI(),r=XI();for(const e of t.docChanges)switch(e.type){case 0:n=n.add(e.doc.key);break;case 1:r=r.add(e.doc.key)}return new uC(e,t.fromCache,n,r)}}class hC{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(e){this._documentReadCount+=e}}class dC{constructor(){this.$i=!1,this.Ui=!1,this.Wi=100,this.Gi=A()?8:0<Cw.v(b())?6:4}initialize(e,t){this.zi=e,this.indexManager=t,this.$i=!0}getDocumentsMatchingQuery(n,r,e,t){const i={result:null};return this.ji(n,r).next(e=>{i.result=e}).next(()=>{if(!i.result)return this.Hi(n,r,t,e).next(e=>{i.result=e})}).next(()=>{if(!i.result){const t=new hC;return this.Ji(n,r,t).next(e=>{if(i.result=e,this.Ui)return this.Yi(n,r,t,e.size)})}}).next(()=>i.result)}Yi(e,t,n,r){return n.documentReadCount<this.Wi?(Ly()<=m.DEBUG&&Fy("QueryEngine","SDK will not create cache indexes for query:",qI(t),"since it only creates cache indexes for collection contains","more than or equal to",this.Wi,"documents"),Tw.resolve()):(Ly()<=m.DEBUG&&Fy("QueryEngine","Query:",qI(t),"scans",n.documentReadCount,"local documents and returns",r,"documents as results."),n.documentReadCount>this.Gi*r?(Ly()<=m.DEBUG&&Fy("QueryEngine","The SDK decides to create cache indexes for query:",qI(t),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(e,MI(t))):Tw.resolve())}ji(i,s){if(DI(s))return Tw.resolve(null);let t=MI(s);return this.indexManager.getIndexType(i,t).next(e=>0===e?null:(null!==s.limit&&1===e&&(s=FI(s,null,"F"),t=MI(s)),this.indexManager.getDocumentsMatchingTarget(i,t).next(e=>{const r=XI(...e);return this.zi.getDocuments(i,r).next(n=>this.indexManager.getMinOffset(i,t).next(e=>{var t=this.Zi(s,n);return this.Xi(s,t,r,e.readTime)?this.ji(i,FI(s,null,"F")):this.es(i,t,s,e)}))})))}Hi(n,r,i,s){return DI(r)||s.isEqual(sw.min())?Tw.resolve(null):this.zi.getDocuments(n,i).next(e=>{var t=this.Zi(r,e);return this.Xi(r,t,i,s)?Tw.resolve(null):(Ly()<=m.DEBUG&&Fy("QueryEngine","Re-using previous result from %s to execute query: %s",s.toString(),qI(r)),this.es(n,t,r,mw(s,-1)).next(e=>e))})}Zi(n,e){let r=new yb(zI(n));return e.forEach((e,t)=>{BI(n,t)&&(r=r.add(t))}),r}Xi(e,t,n,r){if(null===e.limit)return!1;if(n.size!==t.size)return!0;const i="F"===e.limitType?t.last():t.first();return!!i&&(i.hasPendingWrites||0<i.version.compareTo(r))}Ji(e,t,n){return Ly()<=m.DEBUG&&Fy("QueryEngine","Using full collection scan to execute query:",qI(t)),this.zi.getDocumentsMatchingQuery(e,t,_w.min(),n)}es(e,n,t,r){return this.zi.getDocumentsMatchingQuery(e,t,r).next(t=>(n.forEach(e=>{t=t.insert(e.key,e)}),t))}}class pC{constructor(e,t,n,r){this.persistence=e,this.ts=t,this.serializer=r,this.ns=new mb(tw),this.rs=new $I(e=>TI(e),EI),this.ss=new Map,this.os=e.getRemoteDocumentCache(),this.Qr=e.getTargetCache(),this.$r=e.getBundleCache(),this._s(n)}_s(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new KE(this.os,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.os.setIndexManager(this.indexManager),this.ts.initialize(this.localDocuments,this.indexManager)}collectGarbage(t){return this.persistence.runTransaction("Collect garbage","readwrite-primary",e=>t.collect(e,this.ns))}}function fC(e,t,n,r){return new pC(e,t,n,r)}async function gC(e,t){const a=e;return a.persistence.runTransaction("Handle user change","readonly",i=>{let s;return a.mutationQueue.getAllMutationBatches(i).next(e=>(s=e,a._s(t),a.mutationQueue.getAllMutationBatches(i))).next(e=>{const t=[],n=[];let r=XI();for(const i of s){t.push(i.batchId);for(const e of i.mutations)r=r.add(e.key)}for(const i of e){n.push(i.batchId);for(const e of i.mutations)r=r.add(e.key)}return a.localDocuments.getDocuments(i,r).next(e=>({us:e,removedBatchIds:t,addedBatchIds:n}))})})}function mC(e){const t=e;return t.persistence.runTransaction("Get last remote snapshot version","readonly",e=>t.Qr.getLastRemoteSnapshotVersion(e))}function vC(e,l){const u=e,h=l.snapshotVersion;let d=u.ns;return u.persistence.runTransaction("Apply remote event","readwrite-primary",o=>{const e=u.os.newChangeBuffer({trackRemovals:!0});d=u.ns;const c=[];l.targetChanges.forEach((t,n)=>{const r=d.get(n);if(r){c.push(u.Qr.removeMatchingKeys(o,t.removedDocuments,n).next(()=>u.Qr.addMatchingKeys(o,t.addedDocuments,n)));let e=r.withSequenceNumber(o.currentSequenceNumber);var i,s,a;null!==l.targetMismatches.get(n)?e=e.withResumeToken(Eb.EMPTY_BYTE_STRING,sw.min()).withLastLimboFreeSnapshotVersion(sw.min()):0<t.resumeToken.approximateByteSize()&&(e=e.withResumeToken(t.resumeToken,h)),d=d.insert(n,e),i=r,s=e,a=t,0!==i.resumeToken.approximateByteSize()&&!(3e8<=s.snapshotVersion.toMicroseconds()-i.snapshotVersion.toMicroseconds()||0<a.addedDocuments.size+a.modifiedDocuments.size+a.removedDocuments.size)||c.push(u.Qr.updateTargetData(o,e))}});let t=KI,n=XI();if(l.documentUpdates.forEach(e=>{l.resolvedLimboDocuments.has(e)&&c.push(u.persistence.referenceDelegate.updateLimboDocument(o,e))}),c.push(_C(o,e,l.documentUpdates).next(e=>{t=e.cs,n=e.ls})),!h.isEqual(sw.min())){const l=u.Qr.getLastRemoteSnapshotVersion(o).next(e=>u.Qr.setTargetsMetadata(o,o.currentSequenceNumber,h));c.push(l)}return Tw.waitFor(c).next(()=>e.apply(o)).next(()=>u.localDocuments.getLocalViewOfDocuments(o,t,n)).next(()=>t)}).then(e=>(u.ns=d,e))}function _C(e,s,t){let n=XI(),a=XI();return t.forEach(e=>n=n.add(e)),s.getEntries(e,n).next(r=>{let i=KI;return t.forEach((e,t)=>{const n=r.get(e);t.isFoundDocument()!==n.isFoundDocument()&&(a=a.add(e)),t.isNoDocument()&&t.version.isEqual(sw.min())?(s.removeEntry(e,t.readTime),i=i.insert(e,t)):!n.isValidDocument()||0<t.version.compareTo(n.version)||0===t.version.compareTo(n.version)&&n.hasPendingWrites?(s.addEntry(t),i=i.insert(e,t)):Fy("LocalStore","Ignoring outdated watch update for ",e,". Current version:",n.version," Watch version:",t.version)}),{cs:i,ls:a}})}function yC(e,r){const i=e;return i.persistence.runTransaction("Allocate target","readwrite",t=>{let n;return i.Qr.getTargetData(t,r).next(e=>e?(n=e,Tw.resolve(n)):i.Qr.allocateTargetId(t).next(e=>(n=new C0(r,e,"TargetPurposeListen",t.currentSequenceNumber),i.Qr.addTargetData(t,n).next(()=>n))))}).then(e=>{var t=i.ns.get(e.targetId);return(null===t||0<e.snapshotVersion.compareTo(t.snapshotVersion))&&(i.ns=i.ns.insert(e.targetId,e),i.rs.set(r,e.targetId)),e})}async function wC(e,t,n){const r=e,i=r.ns.get(t),s=n?"readwrite":"readwrite-primary";try{n||await r.persistence.runTransaction("Release target",s,e=>r.persistence.referenceDelegate.removeTarget(e,i))}catch(e){if(!Aw(e))throw e;Fy("LocalStore",`Failed to update sequence numbers for target ${t}: ${e}`)}r.ns=r.ns.remove(t),r.rs.delete(i.target)}function bC(e,n,r){const i=e;let s=sw.min(),a=XI();return i.persistence.runTransaction("Execute query","readwrite",t=>function(e,t,n){const r=e,i=r.rs.get(n);return void 0!==i?Tw.resolve(r.ns.get(i)):r.Qr.getTargetData(t,n)}(i,t,MI(n)).next(e=>{if(e)return s=e.lastLimboFreeSnapshotVersion,i.Qr.getMatchingKeysForTargetId(t,e.targetId).next(e=>{a=e})}).next(()=>i.ts.getDocumentsMatchingQuery(t,n,r?s:sw.min(),r?a:XI())).next(e=>(EC(i,jI(n),e),{documents:e,hs:a})))}function IC(e,t){const n=e,r=n.Qr,i=n.ns.get(t);return i?Promise.resolve(i.target):n.persistence.runTransaction("Get target data","readonly",e=>r._t(e,t).next(e=>e?e.target:null))}function TC(e,t){const n=e,r=n.ss.get(t)||sw.min();return n.persistence.runTransaction("Get new document changes","readonly",e=>n.os.getAllFromCollectionGroup(e,t,mw(r,-1),Number.MAX_SAFE_INTEGER)).then(e=>(EC(n,t,e),e))}function EC(e,t,n){let r=e.ss.get(t)||sw.min();n.forEach((e,t)=>{0<t.readTime.compareTo(r)&&(r=t.readTime)}),e.ss.set(t,r)}function CC(e,t){return`firestore_clients_${e}_${t}`}function SC(e,t,n){let r=`firestore_mutations_${e}_${n}`;return t.isAuthenticated()&&(r+=`_${t.uid}`),r}function kC(e,t){return`firestore_targets_${e}_${t}`}class AC{constructor(e,t,n,r){this.user=e,this.batchId=t,this.state=n,this.error=r}static Es(e,t,n){var r=JSON.parse(n);let i,s="object"==typeof r&&-1!==["pending","acknowledged","rejected"].indexOf(r.state)&&(void 0===r.error||"object"==typeof r.error);return s&&r.error&&(s="string"==typeof r.error.message&&"string"==typeof r.error.code,s&&(i=new $y(r.error.code,r.error.message))),s?new AC(e,t,r.state,i):(Uy("SharedClientState",`Failed to parse mutation state for ID '${t}': ${n}`),null)}ds(){const e={state:this.state,updateTimeMs:Date.now()};return this.error&&(e.error={code:this.error.code,message:this.error.message}),JSON.stringify(e)}}class NC{constructor(e,t,n){this.targetId=e,this.state=t,this.error=n}static Es(e,t){var n=JSON.parse(t);let r,i="object"==typeof n&&-1!==["not-current","current","rejected"].indexOf(n.state)&&(void 0===n.error||"object"==typeof n.error);return i&&n.error&&(i="string"==typeof n.error.message&&"string"==typeof n.error.code,i&&(r=new $y(n.error.code,n.error.message))),i?new NC(e,n.state,r):(Uy("SharedClientState",`Failed to parse target state for ID '${e}': ${t}`),null)}ds(){const e={state:this.state,updateTimeMs:Date.now()};return this.error&&(e.error={code:this.error.code,message:this.error.message}),JSON.stringify(e)}}class RC{constructor(e,t){this.clientId=e,this.activeTargetIds=t}static Es(e,t){var n=JSON.parse(t);let r="object"==typeof n&&n.activeTargetIds instanceof Array,i=ZI;for(let s=0;r&&s<n.activeTargetIds.length;++s)r=Uw(n.activeTargetIds[s]),i=i.add(n.activeTargetIds[s]);return r?new RC(e,i):(Uy("SharedClientState",`Failed to parse client data for instance '${e}': ${t}`),null)}}class PC{constructor(e,t){this.clientId=e,this.onlineState=t}static Es(e){var t=JSON.parse(e);return"object"==typeof t&&-1!==["Unknown","Online","Offline"].indexOf(t.onlineState)&&"string"==typeof t.clientId?new PC(t.clientId,t.onlineState):(Uy("SharedClientState",`Failed to parse online state: ${e}`),null)}}class DC{constructor(){this.activeTargetIds=ZI}As(e){this.activeTargetIds=this.activeTargetIds.add(e)}Rs(e){this.activeTargetIds=this.activeTargetIds.delete(e)}ds(){var e={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(e)}}class xC{constructor(e,t,n,r,i){this.window=e,this.oi=t,this.persistenceKey=n,this.Vs=r,this.syncEngine=null,this.onlineStateHandler=null,this.sequenceNumberHandler=null,this.fs=this.gs.bind(this),this.ps=new mb(tw),this.started=!1,this.ys=[];var s=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");this.storage=this.window.localStorage,this.currentUser=i,this.ws=CC(this.persistenceKey,this.Vs),this.Ss=`firestore_sequence_number_${this.persistenceKey}`,this.ps=this.ps.insert(this.Vs,new DC),this.bs=new RegExp(`^firestore_clients_${s}_([^_]*)$`),this.Ds=new RegExp(`^firestore_mutations_${s}_(\\d+)(?:_(.*))?$`),this.Cs=new RegExp(`^firestore_targets_${s}_(\\d+)$`),this.vs=`firestore_online_state_${this.persistenceKey}`,this.Fs=`firestore_bundle_loaded_v2_${this.persistenceKey}`,this.window.addEventListener("storage",this.fs)}static D(e){return!(!e||!e.localStorage)}async start(){const e=await this.syncEngine.Li();for(const n of e)if(n!==this.Vs){const e=this.getItem(CC(this.persistenceKey,n));var t;!e||(t=RC.Es(n,e))&&(this.ps=this.ps.insert(t.clientId,t))}this.Ms();const n=this.storage.getItem(this.vs);if(n){const e=this.xs(n);e&&this.Os(e)}for(const e of this.ys)this.gs(e);this.ys=[],this.window.addEventListener("pagehide",()=>this.shutdown()),this.started=!0}writeSequenceNumber(e){this.setItem(this.Ss,JSON.stringify(e))}getAllActiveQueryTargets(){return this.Ns(this.ps)}isActiveQueryTarget(n){let r=!1;return this.ps.forEach((e,t)=>{t.activeTargetIds.has(n)&&(r=!0)}),r}addPendingMutation(e){this.Bs(e,"pending")}updateMutationState(e,t,n){this.Bs(e,t,n),this.Ls(e)}addLocalQueryTarget(e){let t="not-current";var n;return this.isActiveQueryTarget(e)&&(!(n=this.storage.getItem(kC(this.persistenceKey,e)))||(n=NC.Es(e,n))&&(t=n.state)),this.ks.As(e),this.Ms(),t}removeLocalQueryTarget(e){this.ks.Rs(e),this.Ms()}isLocalQueryTarget(e){return this.ks.activeTargetIds.has(e)}clearQueryState(e){this.removeItem(kC(this.persistenceKey,e))}updateQueryState(e,t,n){this.qs(e,t,n)}handleUserChange(e,t,n){t.forEach(e=>{this.Ls(e)}),this.currentUser=e,n.forEach(e=>{this.addPendingMutation(e)})}setOnlineState(e){this.Qs(e)}notifyBundleLoaded(e){this.Ks(e)}shutdown(){this.started&&(this.window.removeEventListener("storage",this.fs),this.removeItem(this.ws),this.started=!1)}getItem(e){var t=this.storage.getItem(e);return Fy("SharedClientState","READ",e,t),t}setItem(e,t){Fy("SharedClientState","SET",e,t),this.storage.setItem(e,t)}removeItem(e){Fy("SharedClientState","REMOVE",e),this.storage.removeItem(e)}gs(e){const i=e;i.storageArea===this.storage&&(Fy("SharedClientState","EVENT",i.key,i.newValue),i.key!==this.ws?this.oi.enqueueRetryable(async()=>{if(this.started){if(null!==i.key)if(this.bs.test(i.key)){if(null==i.newValue){var e=this.$s(i.key);return this.Us(e,null)}e=this.Ws(i.key,i.newValue);if(e)return this.Us(e.clientId,e)}else if(this.Ds.test(i.key)){if(null!==i.newValue){var t=this.Gs(i.key,i.newValue);if(t)return this.zs(t)}}else if(this.Cs.test(i.key)){if(null!==i.newValue){t=this.js(i.key,i.newValue);if(t)return this.Hs(t)}}else if(i.key===this.vs){if(null!==i.newValue){var n=this.xs(i.newValue);if(n)return this.Os(n)}}else if(i.key===this.Ss){n=function(e){let t=Mw._e;if(null!=e)try{var n=JSON.parse(e);jy("number"==typeof n),t=n}catch(e){Uy("SharedClientState","Failed to read sequence number from WebStorage",e)}return t}(i.newValue);n!==Mw._e&&this.sequenceNumberHandler(n)}else if(i.key===this.Fs){const r=this.Js(i.newValue);await Promise.all(r.map(e=>this.syncEngine.Ys(e)))}}else this.ys.push(i)}):Uy("Received WebStorage notification for local change. Another client might have garbage-collected our state"))}get ks(){return this.ps.get(this.Vs)}Ms(){this.setItem(this.ws,this.ks.ds())}Bs(e,t,n){const r=new AC(this.currentUser,e,t,n),i=SC(this.persistenceKey,this.currentUser,e);this.setItem(i,r.ds())}Ls(e){var t=SC(this.persistenceKey,this.currentUser,e);this.removeItem(t)}Qs(e){var t={clientId:this.Vs,onlineState:e};this.storage.setItem(this.vs,JSON.stringify(t))}qs(e,t,n){const r=kC(this.persistenceKey,e),i=new NC(e,t,n);this.setItem(r,i.ds())}Ks(e){var t=JSON.stringify(Array.from(e));this.setItem(this.Fs,t)}$s(e){var t=this.bs.exec(e);return t?t[1]:null}Ws(e,t){var n=this.$s(e);return RC.Es(n,t)}Gs(e,t){var n=this.Ds.exec(e),r=Number(n[1]),n=void 0!==n[2]?n[2]:null;return AC.Es(new xy(n),r,t)}js(e,t){var n=this.Cs.exec(e),n=Number(n[1]);return NC.Es(n,t)}xs(e){return PC.Es(e)}Js(e){return JSON.parse(e)}async zs(e){if(e.user.uid===this.currentUser.uid)return this.syncEngine.Zs(e.batchId,e.state,e.error);Fy("SharedClientState",`Ignoring mutation for non-active user ${e.user.uid}`)}Hs(e){return this.syncEngine.Xs(e.targetId,e.state,e.error)}Us(e,t){const n=t?this.ps.insert(e,t):this.ps.remove(e),r=this.Ns(this.ps),i=this.Ns(n),s=[],a=[];return i.forEach(e=>{r.has(e)||s.push(e)}),r.forEach(e=>{i.has(e)||a.push(e)}),this.syncEngine.eo(s,a).then(()=>{this.ps=n})}Os(e){this.ps.get(e.clientId)&&this.onlineStateHandler(e.onlineState)}Ns(e){let n=ZI;return e.forEach((e,t)=>{n=n.unionWith(t.activeTargetIds)}),n}}class OC{constructor(){this.no=new DC,this.ro={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,n){}addLocalQueryTarget(e){return this.no.As(e),this.ro[e]||"not-current"}updateQueryState(e,t,n){this.ro[e]=t}removeLocalQueryTarget(e){this.no.Rs(e)}isLocalQueryTarget(e){return this.no.activeTargetIds.has(e)}clearQueryState(e){delete this.ro[e]}getAllActiveQueryTargets(){return this.no.activeTargetIds}isActiveQueryTarget(e){return this.no.activeTargetIds.has(e)}start(){return this.no=new DC,Promise.resolve()}handleUserChange(e,t,n){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class MC{io(e){}shutdown(){}}class LC{constructor(){this.so=()=>this.oo(),this._o=()=>this.ao(),this.uo=[],this.co()}io(e){this.uo.push(e)}shutdown(){window.removeEventListener("online",this.so),window.removeEventListener("offline",this._o)}co(){window.addEventListener("online",this.so),window.addEventListener("offline",this._o)}oo(){Fy("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.uo)e(0)}ao(){Fy("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const e of this.uo)e(1)}static D(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}let FC=null;function UC(){return null===FC?FC=268435456+Math.round(2147483648*Math.random()):FC++,"0x"+FC.toString(16)}const VC={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class qC{constructor(e){this.lo=e.lo,this.ho=e.ho}Po(e){this.Io=e}To(e){this.Eo=e}onMessage(e){this.Ao=e}close(){this.ho()}send(e){this.lo(e)}Ro(){this.Io()}Vo(e){this.Eo(e)}mo(e){this.Ao(e)}}const BC="WebChannelConnection";class jC extends class{constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;var t=e.ssl?"https":"http",n=encodeURIComponent(this.databaseId.projectId),r=encodeURIComponent(this.databaseId.database);this.fo=t+"://"+e.host,this.po=`projects/${n}/databases/${r}`,this.yo="(default)"===this.databaseId.database?`project_id=${n}`:`project_id=${n}&database_id=${r}`}get wo(){return!1}So(t,e,n,r,i){const s=UC(),a=this.bo(t,e.toUriEncodedString());Fy("RestConnection",`Sending RPC '${t}' ${s}:`,a,n);var o={"google-cloud-resource-prefix":this.po,"x-goog-request-params":this.yo};return this.Do(o,r,i),this.Co(t,a,o,n).then(e=>(Fy("RestConnection",`Received RPC '${t}' ${s}: `,e),e),e=>{throw Vy("RestConnection",`RPC '${t}' ${s} failed with error: `,e,"url: ",a,"request:",n),e})}vo(e,t,n,r,i,s){return this.So(e,t,n,r,i)}Do(n,e,t){n["X-Goog-Api-Client"]="gl-js/ fire/"+Oy,n["Content-Type"]="text/plain",this.databaseInfo.appId&&(n["X-Firebase-GMPID"]=this.databaseInfo.appId),e&&e.headers.forEach((e,t)=>n[t]=e),t&&t.headers.forEach((e,t)=>n[t]=e)}bo(e,t){var n=VC[e];return`${this.fo}/v1/${t}:${n}`}terminate(){}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}Co(c,t,n,r){const l=UC();return new Promise((s,a)=>{const o=new Ny;o.setWithCredentials(!0),o.listenOnce(Ey.COMPLETE,()=>{try{switch(o.getLastErrorCode()){case Ty.NO_ERROR:var e=o.getResponseJson();Fy(BC,`XHR for RPC '${c}' ${l} received:`,JSON.stringify(e)),s(e);break;case Ty.TIMEOUT:Fy(BC,`RPC '${c}' ${l} timed out`),a(new $y(zy.DEADLINE_EXCEEDED,"Request time out"));break;case Ty.HTTP_ERROR:var t=o.getStatus();if(Fy(BC,`RPC '${c}' ${l} failed with status:`,t,"response text:",o.getResponseText()),0<t){let e=o.getResponseJson();Array.isArray(e)&&(e=e[0]);var n=null==e?void 0:e.error;if(n&&n.status&&n.message){const c=(r=n.status,i=r.toLowerCase().replace(/_/g,"-"),0<=Object.values(zy).indexOf(i)?i:zy.UNKNOWN);a(new $y(c,n.message))}else a(new $y(zy.UNKNOWN,"Server responded with status "+o.getStatus()))}else a(new $y(zy.UNAVAILABLE,"Connection failed."));break;default:By()}}finally{Fy(BC,`RPC '${c}' ${l} completed.`)}var r,i});var e=JSON.stringify(r);Fy(BC,`RPC '${c}' ${l} sending request:`,r),o.send(t,"POST",e,n,15)})}Fo(i,e,t){const s=UC(),n=[this.fo,"/","google.firestore.v1.Firestore","/",i,"/channel"],r=new J_,a=Iy(),o={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling},c=this.longPollingOptions.timeoutSeconds;void 0!==c&&(o.longPollingTimeout=Math.round(1e3*c)),this.useFetchStreams&&(o.useFetchStreams=!0),this.Do(o.initMessageHeaders,e,t),o.encodeInitMessageHeaders=!0;var l=n.join("");Fy(BC,`Creating RPC '${i}' stream ${s}: ${l}`,o);const u=r.createWebChannel(l,o);let h=!1,d=!1;const p=new qC({lo:e=>{d?Fy(BC,`Not sending because RPC '${i}' stream ${s} is closed:`,e):(h||(Fy(BC,`Opening RPC '${i}' stream ${s} transport.`),u.open(),h=!0),Fy(BC,`RPC '${i}' stream ${s} sending:`,e),u.send(e))},ho:()=>u.close()}),f=(e,t,n)=>{e.listen(t,e=>{try{n(e)}catch(e){setTimeout(()=>{throw e},0)}})};return f(u,Ay.EventType.OPEN,()=>{d||Fy(BC,`RPC '${i}' stream ${s} transport opened.`)}),f(u,Ay.EventType.CLOSE,()=>{d||(d=!0,Fy(BC,`RPC '${i}' stream ${s} transport closed`),p.Vo())}),f(u,Ay.EventType.ERROR,e=>{d||(d=!0,Vy(BC,`RPC '${i}' stream ${s} transport errored:`,e),p.Vo(new $y(zy.UNAVAILABLE,"The operation could not be completed")))}),f(u,Ay.EventType.MESSAGE,n=>{if(!d){var e=n.data[0];jy(!!e);var r=e.error||(null===(r=e[0])||void 0===r?void 0:r.error);if(r){Fy(BC,`RPC '${i}' stream ${s} received error:`,r);const n=r.status;let e=function(e){var t=by[e];if(void 0!==t)return OT(t)}(n),t=r.message;void 0===e&&(e=zy.INTERNAL,t="Unknown error status: "+n+" with message "+r.message),d=!0,p.Vo(new $y(e,t)),u.close()}else Fy(BC,`RPC '${i}' stream ${s} received:`,e),p.mo(e)}}),f(a,Cy.STAT_EVENT,e=>{e.stat===Sy?Fy(BC,`RPC '${i}' stream ${s} detected buffering proxy`):e.stat===ky&&Fy(BC,`RPC '${i}' stream ${s} detected no buffering proxy`)}),setTimeout(()=>{p.Ro()},0),p}}function zC(){return"undefined"!=typeof window?window:null}function $C(){return"undefined"!=typeof document?document:null}function KC(e){return new ZT(e,!0)}class WC{constructor(e,t,n=1e3,r=1.5,i=6e4){this.oi=e,this.timerId=t,this.Mo=n,this.xo=r,this.Oo=i,this.No=0,this.Bo=null,this.Lo=Date.now(),this.reset()}reset(){this.No=0}ko(){this.No=this.Oo}qo(e){this.cancel();var t=Math.floor(this.No+this.Qo()),n=Math.max(0,Date.now()-this.Lo),r=Math.max(0,t-n);0<r&&Fy("ExponentialBackoff",`Backing off for ${r} ms (base delay: ${this.No} ms, delay with jitter: ${t} ms, last attempt: ${n} ms ago)`),this.Bo=this.oi.enqueueAfterDelay(this.timerId,r,()=>(this.Lo=Date.now(),e())),this.No*=this.xo,this.No<this.Mo&&(this.No=this.Mo),this.No>this.Oo&&(this.No=this.Oo)}Ko(){null!==this.Bo&&(this.Bo.skipDelay(),this.Bo=null)}cancel(){null!==this.Bo&&(this.Bo.cancel(),this.Bo=null)}Qo(){return(Math.random()-.5)*this.No}}class GC{constructor(e,t,n,r,i,s,a,o){this.oi=e,this.$o=n,this.Uo=r,this.connection=i,this.authCredentialsProvider=s,this.appCheckCredentialsProvider=a,this.listener=o,this.state=0,this.Wo=0,this.Go=null,this.zo=null,this.stream=null,this.jo=new WC(e,t)}Ho(){return 1===this.state||5===this.state||this.Jo()}Jo(){return 2===this.state||3===this.state}start(){4!==this.state?this.auth():this.Yo()}async stop(){this.Ho()&&await this.close(0)}Zo(){this.state=0,this.jo.reset()}Xo(){this.Jo()&&null===this.Go&&(this.Go=this.oi.enqueueAfterDelay(this.$o,6e4,()=>this.e_()))}t_(e){this.n_(),this.stream.send(e)}async e_(){if(this.Jo())return this.close(0)}n_(){this.Go&&(this.Go.cancel(),this.Go=null)}r_(){this.zo&&(this.zo.cancel(),this.zo=null)}async close(e,t){this.n_(),this.r_(),this.jo.cancel(),this.Wo++,4!==e?this.jo.reset():t&&t.code===zy.RESOURCE_EXHAUSTED?(Uy(t.toString()),Uy("Using maximum backoff delay to prevent overloading the backend."),this.jo.ko()):t&&t.code===zy.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.i_(),this.stream.close(),this.stream=null),this.state=e,await this.listener.To(t)}i_(){}auth(){this.state=1;const e=this.s_(this.Wo),n=this.Wo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([e,t])=>{this.Wo===n&&this.o_(e,t)},t=>{e(()=>{var e=new $y(zy.UNKNOWN,"Fetching auth token failed: "+t.message);return this.__(e)})})}o_(e,t){const n=this.s_(this.Wo);this.stream=this.a_(e,t),this.stream.Po(()=>{n(()=>(this.state=2,this.zo=this.oi.enqueueAfterDelay(this.Uo,1e4,()=>(this.Jo()&&(this.state=3),Promise.resolve())),this.listener.Po()))}),this.stream.To(e=>{n(()=>this.__(e))}),this.stream.onMessage(e=>{n(()=>this.onMessage(e))})}Yo(){this.state=5,this.jo.qo(async()=>{this.state=0,this.start()})}__(e){return Fy("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}s_(t){return e=>{this.oi.enqueueAndForget(()=>this.Wo===t?e():(Fy("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class HC extends GC{constructor(e,t,n,r,i,s){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,n,r,s),this.serializer=i}a_(e,t){return this.connection.Fo("Listen",e,t)}onMessage(e){this.jo.reset();var t=function(e,t){let n;if("targetChange"in t){t.targetChange;var r="NO_CHANGE"===(p=t.targetChange.targetChangeType||"NO_CHANGE")?0:"ADD"===p?1:"REMOVE"===p?2:"CURRENT"===p?3:"RESET"===p?4:By(),i=t.targetChange.targetIds||[],s=(p=t.targetChange.resumeToken,e.useProto3Json?(jy(void 0===p||"string"==typeof p),Eb.fromBase64String(p||"")):(jy(void 0===p||p instanceof Uint8Array),Eb.fromUint8Array(p||new Uint8Array))),a=t.targetChange.cause,o=a&&(o=void 0===(p=a).code?zy.UNKNOWN:OT(p.code),new $y(o,p.message||""));n=new KT(r,i,s,o||null)}else if("documentChange"in t){t.documentChange;var c=t.documentChange;c.document,c.document.name,c.document.updateTime;var s=c0(e,c.document.name),o=r0(c.document.updateTime),l=c.document.createTime?r0(c.document.createTime):sw.min(),u=new Xb({mapValue:{fields:c.document.fields}}),l=Zb.newFoundDocument(s,o,l,u),u=c.targetIds||[],c=c.removedTargetIds||[];n=new zT(u,c,l.key,l)}else if("documentDelete"in t){t.documentDelete;u=t.documentDelete;u.document;c=c0(e,u.document),l=u.readTime?r0(u.readTime):sw.min(),l=Zb.newNoDocument(c,l),u=u.removedTargetIds||[];n=new zT([],u,l.key,l)}else if("documentRemove"in t){t.documentRemove;var h=t.documentRemove;h.document;var d=c0(e,h.document),h=h.removedTargetIds||[];n=new zT([],h,d,null)}else{if(!("filter"in t))return By();{t.filter;const e=t.filter;e.targetId;var{count:h=0,unchangedNames:d}=e,h=new DT(h,d),d=e.targetId;n=new $T(d,h)}}var o,p;return n}(this.serializer,e),n=function(e){if(!("targetChange"in e))return sw.min();var t=e.targetChange;return(!t.targetIds||!t.targetIds.length)&&t.readTime?r0(t.readTime):sw.min()}(e);return this.listener.u_(t,n)}c_(e){const t={};t.database=h0(this.serializer),t.addTarget=function(e,t){let n;const r=t.target;if(n=CI(r)?{documents:v0(e,r)}:{query:_0(e,r).ut},n.targetId=t.targetId,0<t.resumeToken.approximateByteSize()){n.resumeToken=n0(e,t.resumeToken);const r=e0(e,t.expectedCount);null!==r&&(n.expectedCount=r)}else if(0<t.snapshotVersion.compareTo(sw.min())){n.readTime=t0(e,t.snapshotVersion.toTimestamp());const r=e0(e,t.expectedCount);null!==r&&(n.expectedCount=r)}return n}(this.serializer,e);var n,n=(this.serializer,e,null==(n=function(e){switch(e){case"TargetPurposeListen":return null;case"TargetPurposeExistenceFilterMismatch":return"existence-filter-mismatch";case"TargetPurposeExistenceFilterMismatchBloom":return"existence-filter-mismatch-bloom";case"TargetPurposeLimboResolution":return"limbo-document";default:return By()}}(e.purpose))?null:{"goog-listen-tags":n});n&&(t.labels=n),this.t_(t)}l_(e){const t={};t.database=h0(this.serializer),t.removeTarget=e,this.t_(t)}}class QC extends GC{constructor(e,t,n,r,i,s){super(e,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",t,n,r,s),this.serializer=i,this.h_=!1}get P_(){return this.h_}start(){this.h_=!1,this.lastStreamToken=void 0,super.start()}i_(){this.h_&&this.I_([])}a_(e,t){return this.connection.Fo("Write",e,t)}onMessage(e){if(jy(!!e.streamToken),this.lastStreamToken=e.streamToken,this.h_){this.jo.reset();var t=(r=e.writeResults,i=e.commitTime,r&&0<r.length?(jy(void 0!==i),r.map(e=>function(e,t){let n=e.updateTime?r0(e.updateTime):r0(t);return n.isEqual(sw.min())&&(n=r0(t)),new fT(n,e.transformResults||[])}(e,i))):[]),n=r0(e.commitTime);return this.listener.T_(n,t)}var r,i;return jy(!e.writeResults||0===e.writeResults.length),this.h_=!0,this.listener.E_()}d_(){const e={};e.database=h0(this.serializer),this.t_(e)}I_(e){var t={streamToken:this.lastStreamToken,writes:e.map(e=>g0(this.serializer,e))};this.t_(t)}}class YC extends class{}{constructor(e,t,n,r){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=n,this.serializer=r,this.A_=!1}R_(){if(this.A_)throw new $y(zy.FAILED_PRECONDITION,"The client has already been terminated.")}So(n,r,i,s){return this.R_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.So(n,s0(r,i),s,e,t)).catch(e=>{throw"FirebaseError"===e.name?(e.code===zy.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new $y(zy.UNKNOWN,e.toString())})}vo(n,r,i,s,a){return this.R_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.vo(n,s0(r,i),s,e,t,a)).catch(e=>{throw"FirebaseError"===e.name?(e.code===zy.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new $y(zy.UNKNOWN,e.toString())})}terminate(){this.A_=!0,this.connection.terminate()}}class JC{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.m_=0,this.f_=null,this.g_=!0}p_(){0===this.m_&&(this.y_("Unknown"),this.f_=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,()=>(this.f_=null,this.w_("Backend didn't respond within 10 seconds."),this.y_("Offline"),Promise.resolve())))}S_(e){"Online"===this.state?this.y_("Unknown"):(this.m_++,1<=this.m_&&(this.b_(),this.w_(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.y_("Offline")))}set(e){this.b_(),this.m_=0,"Online"===e&&(this.g_=!1),this.y_(e)}y_(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}w_(e){var t=`Could not reach Cloud Firestore backend. ${e}\nThis typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.g_?(Uy(t),this.g_=!1):Fy("OnlineStateTracker",t)}b_(){null!==this.f_&&(this.f_.cancel(),this.f_=null)}}class XC{constructor(e,t,n,r,i){this.localStore=e,this.datastore=t,this.asyncQueue=n,this.remoteSyncer={},this.D_=[],this.C_=new Map,this.v_=new Set,this.F_=[],this.M_=i,this.M_.io(e=>{n.enqueueAndForget(async()=>{oS(this)&&(Fy("RemoteStore","Restarting streams for network reachability change."),await async function(e){const t=e;t.v_.add(4),await eS(t),t.x_.set("Unknown"),t.v_.delete(4),await ZC(t)}(this))})}),this.x_=new JC(n,r)}}async function ZC(e){if(oS(e))for(const t of e.F_)await t(!0)}async function eS(e){for(const t of e.F_)await t(!1)}function tS(e,t){const n=e;n.C_.has(t.targetId)||(n.C_.set(t.targetId,t),aS(n)?sS(n):vS(n).Jo()&&rS(n,t))}function nS(e,t){const n=e,r=vS(n);n.C_.delete(t),r.Jo()&&iS(n,t),0===n.C_.size&&(r.Jo()?r.Xo():oS(n)&&n.x_.set("Unknown"))}function rS(e,t){var n;e.O_.Oe(t.targetId),(0<t.resumeToken.approximateByteSize()||0<t.snapshotVersion.compareTo(sw.min()))&&(n=e.remoteSyncer.getRemoteKeysForTarget(t.targetId).size,t=t.withExpectedCount(n)),vS(e).c_(t)}function iS(e,t){e.O_.Oe(t),vS(e).l_(t)}function sS(t){t.O_=new GT({getRemoteKeysForTarget:e=>t.remoteSyncer.getRemoteKeysForTarget(e),_t:e=>t.C_.get(e)||null,nt:()=>t.datastore.serializer.databaseId}),vS(t).start(),t.x_.p_()}function aS(e){return oS(e)&&!vS(e).Ho()&&0<e.C_.size}function oS(e){return 0===e.v_.size}function cS(e){e.O_=void 0}async function lS(e,t,n){if(!Aw(t))throw t;e.v_.add(1),await eS(e),e.x_.set("Offline"),n=n||(()=>mC(e.localStore)),e.asyncQueue.enqueueRetryable(async()=>{Fy("RemoteStore","Retrying IndexedDB access"),await n(),e.v_.delete(1),await ZC(e)})}function uS(t,n){return n().catch(e=>lS(t,e,n))}async function hS(e){const t=e,n=_S(t);let r=0<t.D_.length?t.D_[t.D_.length-1].batchId:-1;for(;oS(i=t)&&i.D_.length<10;)try{const e=await function(e,t){const n=e;return n.persistence.runTransaction("Get next mutation batch","readonly",e=>(void 0===t&&(t=-1),n.mutationQueue.getNextMutationBatchAfterBatchId(e,t)))}(t.localStore,r);if(null===e){0===t.D_.length&&n.Xo();break}r=e.batchId,function(e,t){e.D_.push(t);const n=_S(e);n.Jo()&&n.P_&&n.I_(t.mutations)}(t,e)}catch(e){await lS(t,e)}var i;dS(t)&&pS(t)}function dS(e){return oS(e)&&!_S(e).Ho()&&0<e.D_.length}function pS(e){_S(e).start()}async function fS(e,t){t&&_S(e).P_&&await async function(e,t){if(xT(n=t.code)&&n!==zy.ABORTED){const r=e.D_.shift();_S(e).Zo(),await uS(e,()=>e.remoteSyncer.rejectFailedWrite(r.batchId,t)),await hS(e)}var n}(e,t),dS(e)&&pS(e)}async function gS(e,t){const n=e;n.asyncQueue.verifyOperationInProgress(),Fy("RemoteStore","RemoteStore received new credentials");var r=oS(n);n.v_.add(3),await eS(n),r&&n.x_.set("Unknown"),await n.remoteSyncer.handleCredentialChange(t),n.v_.delete(3),await ZC(n)}async function mS(e,t){const n=e;t?(n.v_.delete(2),await ZC(n)):(n.v_.add(2),await eS(n),n.x_.set("Unknown"))}function vS(t){return t.N_||(t.N_=function(e,t,n){const r=e;return r.R_(),new HC(t,r.connection,r.authCredentials,r.appCheckCredentials,r.serializer,n)}(t.datastore,t.asyncQueue,{Po:(async function(n){n.C_.forEach((e,t)=>{rS(n,e)})}).bind(null,t),To:(async function(e,t){cS(e),aS(e)?(e.x_.S_(t),sS(e)):e.x_.set("Unknown")}).bind(null,t),u_:(async function(e,t,n){if(e.x_.set("Online"),t instanceof KT&&2===t.state&&t.cause)try{await async function(e,t){var n=t.cause;for(const r of t.targetIds)e.C_.has(r)&&(await e.remoteSyncer.rejectListen(r,n),e.C_.delete(r),e.O_.removeTarget(r))}(e,t)}catch(n){Fy("RemoteStore","Failed to remove targets %s: %s ",t.targetIds.join(","),n),await lS(e,n)}else if(t instanceof zT?e.O_.$e(t):t instanceof $T?e.O_.Je(t):e.O_.Ge(t),!n.isEqual(sw.min()))try{const t=await mC(e.localStore);0<=n.compareTo(t)&&await function(i,r){const e=i.O_.it(r);return e.targetChanges.forEach((e,t)=>{if(0<e.resumeToken.approximateByteSize()){const n=i.C_.get(t);n&&i.C_.set(t,n.withResumeToken(e.resumeToken,r))}}),e.targetMismatches.forEach((e,t)=>{const n=i.C_.get(e);var r;n&&(i.C_.set(e,n.withResumeToken(Eb.EMPTY_BYTE_STRING,n.snapshotVersion)),iS(i,e),r=new C0(n.target,e,t,n.sequenceNumber),rS(i,r))}),i.remoteSyncer.applyRemoteEvent(e)}(e,n)}catch(t){Fy("RemoteStore","Failed to raise snapshot:",t),await lS(e,t)}}).bind(null,t)}),t.F_.push(async e=>{e?(t.N_.Zo(),aS(t)?sS(t):t.x_.set("Unknown")):(await t.N_.stop(),cS(t))})),t.N_}function _S(t){return t.B_||(t.B_=function(e,t,n){const r=e;return r.R_(),new QC(t,r.connection,r.authCredentials,r.appCheckCredentials,r.serializer,n)}(t.datastore,t.asyncQueue,{Po:(async function(e){_S(e).d_()}).bind(null,t),To:fS.bind(null,t),E_:(async function(e){const t=_S(e);for(const n of e.D_)t.I_(n.mutations)}).bind(null,t),T_:(async function(e,t,n){const r=e.D_.shift(),i=RT.from(r,t,n);await uS(e,()=>e.remoteSyncer.applySuccessfulWrite(i)),await hS(e)}).bind(null,t)}),t.F_.push(async e=>{e?(t.B_.Zo(),await hS(t)):(await t.B_.stop(),0<t.D_.length&&(Fy("RemoteStore",`Stopping write stream with ${t.D_.length} pending writes`),t.D_=[]))})),t.B_}class yS{constructor(e,t,n,r,i){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=n,this.op=r,this.removalCallback=i,this.deferred=new Ky,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch(e=>{})}get promise(){return this.deferred.promise}static createAndSchedule(e,t,n,r,i){const s=Date.now()+n,a=new yS(e,t,s,r,i);return a.start(n),a}start(e){this.timerHandle=setTimeout(()=>this.handleDelayElapsed(),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new $y(zy.CANCELLED,"Operation cancelled"+(e?": "+e:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget(()=>null!==this.timerHandle?(this.clearTimeout(),this.op().then(e=>this.deferred.resolve(e))):Promise.resolve())}clearTimeout(){null!==this.timerHandle&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function wS(e,t){if(Uy("AsyncQueue",`${t}: ${e}`),Aw(e))return new $y(zy.UNAVAILABLE,`${t}: ${e}`);throw e}class bS{constructor(n){this.comparator=n?(e,t)=>n(e,t)||uw.comparator(e.key,t.key):(e,t)=>uw.comparator(e.key,t.key),this.keyedMap=GI(),this.sortedSet=new mb(this.comparator)}static emptySet(e){return new bS(e.comparator)}has(e){return null!=this.keyedMap.get(e)}get(e){return this.keyedMap.get(e)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(e){var t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(n){this.sortedSet.inorderTraversal((e,t)=>(n(e),!1))}add(e){const t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){var t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof bS))return!1;if(this.size!==e.size)return!1;const t=this.sortedSet.getIterator(),n=e.sortedSet.getIterator();for(;t.hasNext();){const e=t.getNext().key,r=n.getNext().key;if(!e.isEqual(r))return!1}return!0}toString(){const t=[];return this.forEach(e=>{t.push(e.toString())}),0===t.length?"DocumentSet ()":"DocumentSet (\n "+t.join(" \n")+"\n)"}copy(e,t){const n=new bS;return n.comparator=this.comparator,n.keyedMap=e,n.sortedSet=t,n}}class IS{constructor(){this.L_=new mb(uw.comparator)}track(e){var t=e.doc.key,n=this.L_.get(t);!n||0!==e.type&&3===n.type?this.L_=this.L_.insert(t,e):3===e.type&&1!==n.type?this.L_=this.L_.insert(t,{type:n.type,doc:e.doc}):2===e.type&&2===n.type?this.L_=this.L_.insert(t,{type:2,doc:e.doc}):2===e.type&&0===n.type?this.L_=this.L_.insert(t,{type:0,doc:e.doc}):1===e.type&&0===n.type?this.L_=this.L_.remove(t):1===e.type&&2===n.type?this.L_=this.L_.insert(t,{type:1,doc:n.doc}):0===e.type&&1===n.type?this.L_=this.L_.insert(t,{type:2,doc:e.doc}):By()}k_(){const n=[];return this.L_.inorderTraversal((e,t)=>{n.push(t)}),n}}class TS{constructor(e,t,n,r,i,s,a,o,c){this.query=e,this.docs=t,this.oldDocs=n,this.docChanges=r,this.mutatedKeys=i,this.fromCache=s,this.syncStateChanged=a,this.excludesMetadataChanges=o,this.hasCachedResults=c}static fromInitialDocuments(e,t,n,r,i){const s=[];return t.forEach(e=>{s.push({type:0,doc:e})}),new TS(e,t,bS.emptySet(t),s,n,r,!0,!1,i)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(e){if(!(this.fromCache===e.fromCache&&this.hasCachedResults===e.hasCachedResults&&this.syncStateChanged===e.syncStateChanged&&this.mutatedKeys.isEqual(e.mutatedKeys)&&UI(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;const t=this.docChanges,n=e.docChanges;if(t.length!==n.length)return!1;for(let r=0;r<t.length;r++)if(t[r].type!==n[r].type||!t[r].doc.isEqual(n[r].doc))return!1;return!0}}class ES{constructor(){this.q_=void 0,this.Q_=[]}}class CS{constructor(){this.queries=new $I(e=>VI(e),UI),this.onlineState="Unknown",this.K_=new Set}}async function SS(e,t){const n=e,r=t.query;let i=!1,s=n.queries.get(r);if(s||(i=!0,s=new ES),i)try{s.q_=await n.onListen(r)}catch(e){const n=wS(e,`Initialization of query '${qI(t.query)}' failed`);return void t.onError(n)}n.queries.set(r,s),s.Q_.push(t),t.U_(n.onlineState),!s.q_||t.W_(s.q_)&&AS(n)}async function kS(e,t){const n=e,r=t.query;let i=!1;const s=n.queries.get(r);if(s){const e=s.Q_.indexOf(t);0<=e&&(s.Q_.splice(e,1),i=0===s.Q_.length)}if(i)return n.queries.delete(r),n.onUnlisten(r)}function AS(e){e.K_.forEach(e=>{e.next()})}class NS{constructor(e,t,n){this.query=e,this.G_=t,this.z_=!1,this.j_=null,this.onlineState="Unknown",this.options=n||{}}W_(e){if(!this.options.includeMetadataChanges){const t=[];for(const n of e.docChanges)3!==n.type&&t.push(n);e=new TS(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.z_?this.H_(e)&&(this.G_.next(e),t=!0):this.J_(e,this.onlineState)&&(this.Y_(e),t=!0),this.j_=e,t}onError(e){this.G_.error(e)}U_(e){this.onlineState=e;let t=!1;return this.j_&&!this.z_&&this.J_(this.j_,e)&&(this.Y_(this.j_),t=!0),t}J_(e,t){return!e.fromCache||(!this.options.Z_||!("Offline"!==t))&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t)}H_(e){if(0<e.docChanges.length)return!0;var t=this.j_&&this.j_.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&!0===this.options.includeMetadataChanges}Y_(e){e=TS.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.z_=!0,this.G_.next(e)}}class RS{constructor(e,t){this.X_=e,this.byteLength=t}ea(){return"metadata"in this.X_}}class PS{constructor(e){this.serializer=e}Ps(e){return c0(this.serializer,e)}Is(e){return e.metadata.exists?f0(this.serializer,e.document,!1):Zb.newNoDocument(this.Ps(e.metadata.name),this.Ts(e.metadata.readTime))}Ts(e){return r0(e)}}class DS{constructor(e,t,n){this.ta=e,this.localStore=t,this.serializer=n,this.queries=[],this.documents=[],this.collectionGroups=new Set,this.progress=xS(e)}na(e){this.progress.bytesLoaded+=e.byteLength;let t=this.progress.documentsLoaded;if(e.X_.namedQuery)this.queries.push(e.X_.namedQuery);else if(e.X_.documentMetadata){this.documents.push({metadata:e.X_.documentMetadata}),e.X_.documentMetadata.exists||++t;const n=ow.fromString(e.X_.documentMetadata.name);this.collectionGroups.add(n.get(n.length-2))}else e.X_.document&&(this.documents[this.documents.length-1].document=e.X_.document,++t);return t!==this.progress.documentsLoaded?(this.progress.documentsLoaded=t,Object.assign({},this.progress)):null}ra(e){const t=new Map,n=new PS(this.serializer);for(const i of e)if(i.metadata.queries){const e=n.Ps(i.metadata.name);for(const n of i.metadata.queries){var r=(t.get(n)||XI()).add(e);t.set(n,r)}}return t}async complete(){const e=await async function(e,t,n,r){const i=e;let s=XI(),a=KI;for(const e of n){const n=t.Ps(e.metadata.name);e.document&&(s=s.add(n));const l=t.Is(e);l.setReadTime(t.Ts(e.metadata.readTime)),a=a.insert(n,l)}const o=i.os.newChangeBuffer({trackRemovals:!0}),c=await yC(i,(r=r,MI(PI(ow.fromString(`__bundle__/docs/${r}`)))));return i.persistence.runTransaction("Apply bundle documents","readwrite",t=>_C(t,o,a).next(e=>(o.apply(t),e)).next(e=>i.Qr.removeMatchingKeysForTargetId(t,c.targetId).next(()=>i.Qr.addMatchingKeys(t,s,c.targetId)).next(()=>i.localDocuments.getLocalViewOfDocuments(t,e.cs,e.ls)).next(()=>e.cs)))}(this.localStore,new PS(this.serializer),this.documents,this.ta.id),t=this.ra(this.documents);for(const e of this.queries)await async function(e,n,r=XI()){const i=await yC(e,MI(O0(n.bundledQuery))),s=e;return s.persistence.runTransaction("Save named query","readwrite",e=>{var t=r0(n.readTime);if(0<=i.snapshotVersion.compareTo(t))return s.$r.saveNamedQuery(e,n);t=i.withResumeToken(Eb.EMPTY_BYTE_STRING,t);return s.ns=s.ns.insert(t.targetId,t),s.Qr.updateTargetData(e,t).next(()=>s.Qr.removeMatchingKeysForTargetId(e,i.targetId)).next(()=>s.Qr.addMatchingKeys(e,r,i.targetId)).next(()=>s.$r.saveNamedQuery(e,n))})}(this.localStore,e,t.get(e.name));return this.progress.taskState="Success",{progress:this.progress,ia:this.collectionGroups,sa:e}}}function xS(e){return{taskState:"Running",documentsLoaded:0,bytesLoaded:0,totalDocuments:e.totalDocuments,totalBytes:e.totalBytes}}class OS{constructor(e){this.key=e}}class MS{constructor(e){this.key=e}}class LS{constructor(e,t){this.query=e,this.oa=t,this._a=null,this.hasCachedResults=!1,this.current=!1,this.aa=XI(),this.mutatedKeys=XI(),this.ua=zI(e),this.ca=new bS(this.ua)}get la(){return this.oa}ha(e,t){const o=t?t.Pa:new IS,c=(t||this).ca;let l=(t||this).mutatedKeys,u=c,h=!1;const d="F"===this.query.limitType&&c.size===this.query.limit?c.last():null,p="L"===this.query.limitType&&c.size===this.query.limit?c.first():null;if(e.inorderTraversal((e,t)=>{const n=c.get(e),r=BI(this.query,t)?t:null,i=!!n&&this.mutatedKeys.has(n.key),s=!!r&&(r.hasLocalMutations||this.mutatedKeys.has(r.key)&&r.hasCommittedMutations);let a=!1;n&&r?n.data.isEqual(r.data)?i!==s&&(o.track({type:3,doc:r}),a=!0):this.Ia(n,r)||(o.track({type:2,doc:r}),a=!0,(d&&0<this.ua(r,d)||p&&this.ua(r,p)<0)&&(h=!0)):!n&&r?(o.track({type:0,doc:r}),a=!0):n&&!r&&(o.track({type:1,doc:n}),a=!0,(d||p)&&(h=!0)),a&&(l=r?(u=u.add(r),s?l.add(e):l.delete(e)):(u=u.delete(e),l.delete(e)))}),null!==this.query.limit)for(;u.size>this.query.limit;){const e="F"===this.query.limitType?u.last():u.first();u=u.delete(e.key),l=l.delete(e.key),o.track({type:1,doc:e})}return{ca:u,Pa:o,Xi:h,mutatedKeys:l}}Ia(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,n,r){var i=this.ca;this.ca=e.ca,this.mutatedKeys=e.mutatedKeys;const s=e.Pa.k_();s.sort((e,t)=>function(e,t){var n=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return By()}};return n(e)-n(t)}(e.type,t.type)||this.ua(e.doc,t.doc)),this.Ta(n),r=null!=r&&r;var a=t&&!r?this.Ea():[],o=0===this.aa.size&&this.current&&!r?1:0,c=o!==this._a;return this._a=o,0!==s.length||c?{snapshot:new TS(this.query,e.ca,i,s,e.mutatedKeys,0==o,c,!1,!!n&&0<n.resumeToken.approximateByteSize()),da:a}:{da:a}}U_(e){return this.current&&"Offline"===e?(this.current=!1,this.applyChanges({ca:this.ca,Pa:new IS,mutatedKeys:this.mutatedKeys,Xi:!1},!1)):{da:[]}}Aa(e){return!this.oa.has(e)&&!!this.ca.has(e)&&!this.ca.get(e).hasLocalMutations}Ta(e){e&&(e.addedDocuments.forEach(e=>this.oa=this.oa.add(e)),e.modifiedDocuments.forEach(e=>{}),e.removedDocuments.forEach(e=>this.oa=this.oa.delete(e)),this.current=e.current)}Ea(){if(!this.current)return[];const t=this.aa;this.aa=XI(),this.ca.forEach(e=>{this.Aa(e.key)&&(this.aa=this.aa.add(e.key))});const n=[];return t.forEach(e=>{this.aa.has(e)||n.push(new MS(e))}),this.aa.forEach(e=>{t.has(e)||n.push(new OS(e))}),n}Ra(e){this.oa=e.hs,this.aa=XI();var t=this.ha(e.documents);return this.applyChanges(t,!0)}Va(){return TS.fromInitialDocuments(this.query,this.ca,this.mutatedKeys,0===this._a,this.hasCachedResults)}}class FS{constructor(e,t,n){this.query=e,this.targetId=t,this.view=n}}class US{constructor(e){this.key=e,this.ma=!1}}class VS{constructor(e,t,n,r,i,s){this.localStore=e,this.remoteStore=t,this.eventManager=n,this.sharedClientState=r,this.currentUser=i,this.maxConcurrentLimboResolutions=s,this.fa={},this.ga=new $I(e=>VI(e),UI),this.pa=new Map,this.ya=new Set,this.wa=new mb(uw.comparator),this.Sa=new Map,this.ba=new HE,this.Da={},this.Ca=new Map,this.va=EE.Bn(),this.onlineState="Unknown",this.Fa=void 0}get isPrimaryClient(){return!0===this.Fa}}async function qS(r,e,t,n,i){r.Ma=(e,t,n)=>async function(e,t,n,r){let i=t.view.ha(n);i.Xi&&(i=await bC(e.localStore,t.query,!1).then(({documents:e})=>t.view.ha(e,i)));var s=r&&r.targetChanges.get(t.targetId),a=r&&null!=r.targetMismatches.get(t.targetId),a=t.view.applyChanges(i,e.isPrimaryClient,s,a);return QS(e,t.targetId,a.da),a.snapshot}(r,e,t,n);const s=await bC(r.localStore,e,!0),a=new LS(e,s.hs),o=a.ha(s.documents),c=jT.createSynthesizedTargetChangeForCurrentChange(t,n&&"Offline"!==r.onlineState,i),l=a.applyChanges(o,r.isPrimaryClient,c);QS(r,t,l.da);var u=new FS(e,t,a);return r.ga.set(e,u),r.pa.has(t)?r.pa.get(t).push(e):r.pa.set(t,[e]),l.snapshot}async function BS(e,t,n){const r=nk(e);try{const e=await function(e,i){const s=e,a=iw.now(),o=i.reduce((e,t)=>e.add(t.key),XI());let c,l;return s.persistence.runTransaction("Locally write mutations","readwrite",n=>{let t=KI,r=XI();return s.os.getEntries(n,o).next(e=>{t=e,t.forEach((e,t)=>{t.isValidDocument()||(r=r.add(e))})}).next(()=>s.localDocuments.getOverlayedDocuments(n,t)).next(e=>{c=e;const t=[];for(const n of i){const i=function(e,t){let n=null;for(const r of e.fieldTransforms){const e=t.data.field(r.field),i=iT(r.transform,e||null);null!=i&&(null===n&&(n=Xb.empty()),n.set(r.field,i))}return n||null}(n,c.get(n.key).overlayedDocument);null!=i&&t.push(new TT(n.key,i,function r(e){const i=[];return fb(e.fields,(e,t)=>{const n=new lw([e]);if(Gb(t)){const e=r(t.mapValue).fields;if(0===e.length)i.push(n);else for(const t of e)i.push(n.child(t))}else i.push(n)}),new Ib(i)}(i.value.mapValue),gT.exists(!0)))}return s.mutationQueue.addMutationBatch(n,a,t,i)}).next(e=>{var t=(l=e).applyToLocalDocumentSet(c,r);return s.documentOverlayCache.saveOverlays(n,e.batchId,t)})}).then(()=>({batchId:l.batchId,changes:HI(c)}))}(r.localStore,t);r.sharedClientState.addPendingMutation(e.batchId),function(e,t,n){let r=e.Da[e.currentUser.toKey()];r=r||new mb(tw),r=r.insert(t,n),e.Da[e.currentUser.toKey()]=r}(r,e.batchId,n),await JS(r,e.changes),await hS(r.remoteStore)}catch(e){const t=wS(e,"Failed to persist write");n.reject(t)}}async function jS(e,t){const r=e;try{const e=await vC(r.localStore,t);t.targetChanges.forEach((e,t)=>{const n=r.Sa.get(t);n&&(jy(e.addedDocuments.size+e.modifiedDocuments.size+e.removedDocuments.size<=1),0<e.addedDocuments.size?n.ma=!0:0<e.modifiedDocuments.size?jy(n.ma):0<e.removedDocuments.size&&(jy(n.ma),n.ma=!1))}),await JS(r,e,t)}catch(e){await Iw(e)}}function zS(r,i,e){const t=r;if(t.isPrimaryClient&&0===e||!t.isPrimaryClient&&1===e){const r=[];t.ga.forEach((e,t)=>{var n=t.view.U_(i);n.snapshot&&r.push(n.snapshot)}),function(e,n){const t=e;t.onlineState=n;let r=!1;t.queries.forEach((e,t)=>{for(const e of t.Q_)e.U_(n)&&(r=!0)}),r&&AS(t)}(t.eventManager,i),r.length&&t.fa.u_(r),t.onlineState=i,t.isPrimaryClient&&t.sharedClientState.setOnlineState(i)}}async function $S(e,t){const n=e,r=t.batch.batchId;try{const e=await function(e,r){const i=e;return i.persistence.runTransaction("Acknowledge batch","readwrite-primary",e=>{const t=r.batch.keys(),n=i.os.newChangeBuffer({trackRemovals:!0});return function(e,t,r,i){const s=r.batch,n=s.keys();let a=Tw.resolve();return n.forEach(n=>{a=a.next(()=>i.getEntry(t,n)).next(e=>{var t=r.docVersions.get(n);jy(null!==t),e.version.compareTo(t)<0&&(s.applyToRemoteDocument(e,r),e.isValidDocument()&&(e.setReadTime(r.commitVersion),i.addEntry(e)))})}),a.next(()=>e.mutationQueue.removeMutationBatch(t,s))}(i,e,r,n).next(()=>n.apply(e)).next(()=>i.mutationQueue.performConsistencyCheck(e)).next(()=>i.documentOverlayCache.removeOverlaysForBatchId(e,t,r.batch.batchId)).next(()=>i.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,function(e){let t=XI();for(let n=0;n<e.mutationResults.length;++n)0<e.mutationResults[n].transformResults.length&&(t=t.add(e.batch.mutations[n].key));return t}(r))).next(()=>i.localDocuments.getDocuments(e,t))})}(n.localStore,t);WS(n,r,null),KS(n,r),n.sharedClientState.updateMutationState(r,"acknowledged"),await JS(n,e)}catch(e){await Iw(e)}}function KS(e,t){(e.Ca.get(t)||[]).forEach(e=>{e.resolve()}),e.Ca.delete(t)}function WS(e,t,n){const r=e;let i=r.Da[r.currentUser.toKey()];if(i){const e=i.get(t);e&&(n?e.reject(n):e.resolve(),i=i.remove(t)),r.Da[r.currentUser.toKey()]=i}}function GS(t,e,n=null){t.sharedClientState.removeLocalQueryTarget(e);for(const r of t.pa.get(e))t.ga.delete(r),n&&t.fa.xa(r,n);t.pa.delete(e),t.isPrimaryClient&&t.ba.Vr(e).forEach(e=>{t.ba.containsKey(e)||HS(t,e)})}function HS(e,t){e.ya.delete(t.path.canonicalString());var n=e.wa.get(t);null!==n&&(nS(e.remoteStore,n),e.wa=e.wa.remove(t),e.Sa.delete(n),YS(e))}function QS(e,t,n){for(const r of n)r instanceof OS?(e.ba.addReference(r.key,t),function(e,t){const n=t.key,r=n.path.canonicalString();e.wa.get(n)||e.ya.has(r)||(Fy("SyncEngine","New document in limbo: "+n),e.ya.add(r),YS(e))}(e,r)):r instanceof MS?(Fy("SyncEngine","Document no longer in limbo: "+r.key),e.ba.removeReference(r.key,t),e.ba.containsKey(r.key)||HS(e,r.key)):By()}function YS(e){for(;0<e.ya.size&&e.wa.size<e.maxConcurrentLimboResolutions;){var t=e.ya.values().next().value;e.ya.delete(t);var n=new uw(ow.fromString(t)),t=e.va.next();e.Sa.set(t,new US(n)),e.wa=e.wa.insert(n,t),tS(e.remoteStore,new C0(MI(PI(n.path)),t,"TargetPurposeLimboResolution",Mw._e))}}async function JS(e,t,r){const i=e,s=[],a=[],o=[];i.ga.isEmpty()||(i.ga.forEach((e,n)=>{o.push(i.Ma(n,t,r).then(e=>{var t;(e||r)&&i.isPrimaryClient&&i.sharedClientState.updateQueryState(n.targetId,null!=e&&e.fromCache?"not-current":"current"),e&&(s.push(e),t=uC.Ki(n.targetId,e),a.push(t))}))}),await Promise.all(o),i.fa.u_(s),await async function(e,t){const r=e;try{await r.persistence.runTransaction("notifyLocalViewChanges","readwrite",n=>Tw.forEach(t,t=>Tw.forEach(t.qi,e=>r.persistence.referenceDelegate.addReference(n,t.targetId,e)).next(()=>Tw.forEach(t.Qi,e=>r.persistence.referenceDelegate.removeReference(n,t.targetId,e)))))}catch(e){if(!Aw(e))throw e;Fy("LocalStore","Failed to update sequence numbers: "+e)}for(const e of t){const t=e.targetId;if(!e.fromCache){const e=r.ns.get(t),n=e.snapshotVersion,i=e.withLastLimboFreeSnapshotVersion(n);r.ns=r.ns.insert(t,i)}}}(i.localStore,a))}async function XS(r,e){const i=r;if(tk(i),nk(i),!0===e&&!0!==i.Fa){const r=i.sharedClientState.getAllActiveQueryTargets(),e=await ZS(i,r.toArray());i.Fa=!0,await mS(i.remoteStore,!0);for(const r of e)tS(i.remoteStore,r)}else if(!1===e&&!1!==i.Fa){const r=[];let n=Promise.resolve();i.pa.forEach((e,t)=>{i.sharedClientState.isLocalQueryTarget(t)?r.push(t):n=n.then(()=>(GS(i,t),wC(i.localStore,t,!0))),nS(i.remoteStore,t)}),await n,await ZS(i,r),function(e){const n=e;n.Sa.forEach((e,t)=>{nS(n.remoteStore,t)}),n.ba.mr(),n.Sa=new Map,n.wa=new mb(uw.comparator)}(i),i.Fa=!1,await mS(i.remoteStore,!1)}}async function ZS(t,n){const r=t,i=[],s=[];for(const t of n){let e;const u=r.pa.get(t);if(u&&0!==u.length){e=await yC(r.localStore,MI(u[0]));for(const t of u){const n=r.ga.get(t),u=(a=r,o=n,l=c=void 0,l=await bC((c=a).localStore,o.query,!0),l=o.view.Ra(l),c.isPrimaryClient&&QS(c,o.targetId,l.da),await l);u.snapshot&&s.push(u.snapshot)}}else{const u=await IC(r.localStore,t);e=await yC(r.localStore,u),await qS(r,ek(u),t,!1,e.resumeToken)}i.push(e)}var a,o,c,l;return r.fa.u_(s),i}function ek(e){return RI(e.path,e.collectionGroup,e.orderBy,e.filters,e.limit,"F",e.startAt,e.endAt)}function tk(e){const t=e;return t.remoteStore.remoteSyncer.applyRemoteEvent=jS.bind(null,t),t.remoteStore.remoteSyncer.getRemoteKeysForTarget=(function(e,t){const n=e,r=n.Sa.get(t);if(r&&r.ma)return XI().add(r.key);{let e=XI();const r=n.pa.get(t);if(!r)return e;for(const t of r){const r=n.ga.get(t);e=e.unionWith(r.view.la)}return e}}).bind(null,t),t.remoteStore.remoteSyncer.rejectListen=(async function(e,t,n){const r=e;r.sharedClientState.updateQueryState(t,"rejected",n);const i=r.Sa.get(t),s=i&&i.key;if(s){let e=new mb(uw.comparator);e=e.insert(s,Zb.newNoDocument(s,sw.min()));const n=XI().add(s),i=new BT(sw.min(),new Map,new mb(tw),e,n);await jS(r,i),r.wa=r.wa.remove(s),r.Sa.delete(t),YS(r)}else await wC(r.localStore,t,!1).then(()=>GS(r,t,n)).catch(Iw)}).bind(null,t),t.fa.u_=(function(e,t){const n=e;let r=!1;for(const e of t){const t=e.query,i=n.queries.get(t);if(i){for(const t of i.Q_)t.W_(e)&&(r=!0);i.q_=e}}r&&AS(n)}).bind(null,t.eventManager),t.fa.xa=(function(e,t,n){const r=e,i=r.queries.get(t);if(i)for(const e of i.Q_)e.onError(n);r.queries.delete(t)}).bind(null,t.eventManager),t}function nk(e){const t=e;return t.remoteStore.remoteSyncer.applySuccessfulWrite=$S.bind(null,t),t.remoteStore.remoteSyncer.rejectFailedWrite=(async function(e,t,n){const r=e;try{const e=await function(e,r){const i=e;return i.persistence.runTransaction("Reject batch","readwrite-primary",t=>{let n;return i.mutationQueue.lookupMutationBatch(t,r).next(e=>(jy(null!==e),n=e.keys(),i.mutationQueue.removeMutationBatch(t,e))).next(()=>i.mutationQueue.performConsistencyCheck(t)).next(()=>i.documentOverlayCache.removeOverlaysForBatchId(t,n,r)).next(()=>i.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(t,n)).next(()=>i.localDocuments.getDocuments(t,n))})}(r.localStore,t);WS(r,t,n),KS(r,t),r.sharedClientState.updateMutationState(t,"rejected",n),await JS(r,e)}catch(n){await Iw(n)}}).bind(null,t),t}class rk{constructor(){this.synchronizeTabs=!1}async initialize(e){this.serializer=KC(e.databaseInfo.databaseId),this.sharedClientState=this.createSharedClientState(e),this.persistence=this.createPersistence(e),await this.persistence.start(),this.localStore=this.createLocalStore(e),this.gcScheduler=this.createGarbageCollectionScheduler(e,this.localStore),this.indexBackfillerScheduler=this.createIndexBackfillerScheduler(e,this.localStore)}createGarbageCollectionScheduler(e,t){return null}createIndexBackfillerScheduler(e,t){return null}createLocalStore(e){return fC(this.persistence,new dC,e.initialUser,this.serializer)}createPersistence(e){return new eC(nC.Hr,this.serializer)}createSharedClientState(e){return new OC}async terminate(){var e;null===(e=this.gcScheduler)||void 0===e||e.stop(),null===(e=this.indexBackfillerScheduler)||void 0===e||e.stop(),this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class ik extends rk{constructor(e,t,n){super(),this.Na=e,this.cacheSizeBytes=t,this.forceOwnership=n,this.synchronizeTabs=!1}async initialize(e){await super.initialize(e),await this.Na.initialize(this,e),await nk(this.Na.syncEngine),await hS(this.Na.remoteStore),await this.persistence.fi(()=>(this.gcScheduler&&!this.gcScheduler.started&&this.gcScheduler.start(),this.indexBackfillerScheduler&&!this.indexBackfillerScheduler.started&&this.indexBackfillerScheduler.start(),Promise.resolve()))}createLocalStore(e){return fC(this.persistence,new dC,e.initialUser,this.serializer)}createGarbageCollectionScheduler(e,t){var n=this.persistence.referenceDelegate.garbageCollector;return new PE(n,e.asyncQueue,t)}createIndexBackfillerScheduler(e,t){var n=new Ow(t,this.persistence);return new xw(e.asyncQueue,n)}createPersistence(e){var t=lC(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey),n=void 0!==this.cacheSizeBytes?mE.withCacheSize(this.cacheSizeBytes):mE.DEFAULT;return new aC(this.synchronizeTabs,t,e.clientId,n,e.asyncQueue,zC(),$C(),this.serializer,this.sharedClientState,!!this.forceOwnership)}createSharedClientState(e){return new OC}}class sk extends ik{constructor(e,t){super(e,t,!1),this.Na=e,this.cacheSizeBytes=t,this.synchronizeTabs=!0}async initialize(e){await super.initialize(e);var t=this.Na.syncEngine;this.sharedClientState instanceof xC&&(this.sharedClientState.syncEngine={Zs:(async function(e,t,n,r){var i=e,s=await function(e,n){const r=e,i=r.mutationQueue;return r.persistence.runTransaction("Lookup mutation documents","readonly",t=>i.vn(t,n).next(e=>e?r.localDocuments.getDocuments(t,e):Tw.resolve(null)))}(i.localStore,t);null!==s?("pending"===n?await hS(i.remoteStore):"acknowledged"===n||"rejected"===n?(WS(i,t,r||null),KS(i,t),i.localStore.mutationQueue.Mn(t)):By(),await JS(i,s)):Fy("SyncEngine","Cannot apply mutation batch with id: "+t)}).bind(null,t),Xs:(async function(e,t,n,r){const i=e;if(i.Fa)Fy("SyncEngine","Ignoring unexpected query state notification.");else{var s=i.pa.get(t);if(s&&0<s.length)switch(n){case"current":case"not-current":{const e=await TC(i.localStore,jI(s[0])),r=BT.createSynthesizedRemoteEventForCurrentChange(t,"current"===n,Eb.EMPTY_BYTE_STRING);await JS(i,e,r);break}case"rejected":await wC(i.localStore,t,!0),GS(i,t,r);break;default:By()}}}).bind(null,t),eo:(async function(e,t,n){const r=tk(e);if(r.Fa){for(const e of t)if(r.pa.has(e))Fy("SyncEngine","Adding an already active target "+e);else{const t=await IC(r.localStore,e),n=await yC(r.localStore,t);await qS(r,ek(t),n.targetId,!1,n.resumeToken),tS(r.remoteStore,n)}for(const e of n)r.pa.has(e)&&await wC(r.localStore,e,!1).then(()=>{nS(r.remoteStore,e),GS(r,e)}).catch(Iw)}}).bind(null,t),Li:(function(e){return e.localStore.persistence.Li()}).bind(null,t),Ys:(async function(e,t){const n=e;return TC(n.localStore,t).then(e=>JS(n,e))}).bind(null,t)},await this.sharedClientState.start()),await this.persistence.fi(async e=>{await XS(this.Na.syncEngine,e),this.gcScheduler&&(e&&!this.gcScheduler.started?this.gcScheduler.start():e||this.gcScheduler.stop()),this.indexBackfillerScheduler&&(e&&!this.indexBackfillerScheduler.started?this.indexBackfillerScheduler.start():e||this.indexBackfillerScheduler.stop())})}createSharedClientState(e){var t=zC();if(!xC.D(t))throw new $y(zy.UNIMPLEMENTED,"IndexedDB persistence is only available on platforms that support LocalStorage.");var n=lC(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey);return new xC(t,e.asyncQueue,n,e.clientId,e.initialUser)}}class ak{async initialize(e,t){this.localStore||(this.localStore=e.localStore,this.sharedClientState=e.sharedClientState,this.datastore=this.createDatastore(t),this.remoteStore=this.createRemoteStore(t),this.eventManager=this.createEventManager(t),this.syncEngine=this.createSyncEngine(t,!e.synchronizeTabs),this.sharedClientState.onlineStateHandler=e=>zS(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=(async function(e,t){const n=e;if(!n.currentUser.isEqual(t)){Fy("SyncEngine","User change. New user:",t.toKey());const i=await gC(n.localStore,t);n.currentUser=t,e=n,r="'waitForPendingWrites' promise is rejected due to a user change.",e.Ca.forEach(e=>{e.forEach(e=>{e.reject(new $y(zy.CANCELLED,r))})}),e.Ca.clear(),n.sharedClientState.handleUserChange(t,i.removedBatchIds,i.addedBatchIds),await JS(n,i.us)}var r}).bind(null,this.syncEngine),await mS(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new CS}createDatastore(e){var t,n,r,i=KC(e.databaseInfo.databaseId),s=(r=e.databaseInfo,new jC(r));return t=e.authCredentials,n=e.appCheckCredentials,r=s,e=i,new YC(t,n,r,e)}createRemoteStore(e){return t=this.localStore,n=this.datastore,r=e.asyncQueue,i=e=>zS(this.syncEngine,e,0),e=new(LC.D()?LC:MC),new XC(t,n,r,i,e);var t,n,r,i}createSyncEngine(e,t){return function(e,t,n,r,i,s,a){const o=new VS(e,t,n,r,i,s);return a&&(o.Fa=!0),o}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}async terminate(){var e;await async function(e){const t=e;Fy("RemoteStore","RemoteStore shutting down."),t.v_.add(5),await eS(t),t.M_.shutdown(),t.x_.set("Unknown")}(this.remoteStore),null===(e=this.datastore)||void 0===e||e.terminate()}}function ok(t,n=10240){let r=0;return{async read(){if(r<t.byteLength){var e={value:t.slice(r,r+n),done:!1};return r+=n,e}return{done:!0}},async cancel(){},releaseLock(){},closed:Promise.resolve()}}class ck{constructor(e){this.observer=e,this.muted=!1}next(e){this.observer.next&&this.Ba(this.observer.next,e)}error(e){this.observer.error?this.Ba(this.observer.error,e):Uy("Uncaught Error in snapshot listener:",e.toString())}La(){this.muted=!0}Ba(e,t){this.muted||setTimeout(()=>{this.muted||e(t)},0)}}class lk{constructor(e,t){this.ka=e,this.serializer=t,this.metadata=new Ky,this.buffer=new Uint8Array,this.qa=new TextDecoder("utf-8"),this.Qa().then(e=>{e&&e.ea()?this.metadata.resolve(e.X_.metadata):this.metadata.reject(new Error(`The first element of the bundle is not a metadata, it is\n ${JSON.stringify(null==e?void 0:e.X_)}`))},e=>this.metadata.reject(e))}close(){return this.ka.cancel()}async getMetadata(){return this.metadata.promise}async Oa(){return await this.getMetadata(),this.Qa()}async Qa(){var e=await this.Ka();if(null===e)return null;var t=this.qa.decode(e),n=Number(t);isNaN(n)&&this.$a(`length string (${t}) is not valid number`);t=await this.Ua(n);return new RS(JSON.parse(t),e.length+n)}Wa(){return this.buffer.findIndex(e=>e==="{".charCodeAt(0))}async Ka(){for(;this.Wa()<0&&!await this.Ga(););if(0===this.buffer.length)return null;var e=this.Wa();e<0&&this.$a("Reached the end of bundle when a length string is expected.");var t=this.buffer.slice(0,e);return this.buffer=this.buffer.slice(e),t}async Ua(e){for(;this.buffer.length<e;)await this.Ga()&&this.$a("Reached the end of bundle when more is expected.");var t=this.qa.decode(this.buffer.slice(0,e));return this.buffer=this.buffer.slice(e),t}$a(e){throw this.ka.cancel(),new Error(`Invalid bundle format: ${e}`)}async Ga(){var e=await this.ka.read();if(!e.done){const t=new Uint8Array(this.buffer.length+e.value.length);t.set(this.buffer),t.set(e.value,this.buffer.length),this.buffer=t}return e.done}}class uk{constructor(e){this.datastore=e,this.readVersions=new Map,this.mutations=[],this.committed=!1,this.lastTransactionError=null,this.writtenDocs=new Set}async lookup(e){if(this.ensureCommitNotCalled(),0<this.mutations.length)throw this.lastTransactionError=new $y(zy.INVALID_ARGUMENT,"Firestore transactions require all reads to be executed before all writes."),this.lastTransactionError;const t=await async function(e,t){const r=e,n={documents:t.map(e=>o0(r.serializer,e))},i=await r.vo("BatchGetDocuments",r.serializer.databaseId,ow.emptyPath(),n,t.length),s=new Map;i.forEach(e=>{const t=(n=r.serializer,"found"in(e=e)?function(e,t){jy(!!t.found),t.found.name,t.found.updateTime;var n=c0(e,t.found.name),r=r0(t.found.updateTime),i=t.found.createTime?r0(t.found.createTime):sw.min(),s=new Xb({mapValue:{fields:t.found.fields}});return Zb.newFoundDocument(n,r,i,s)}(n,e):"missing"in e?function(e,t){jy(!!t.missing),jy(!!t.readTime);var n=c0(e,t.missing),r=r0(t.readTime);return Zb.newNoDocument(n,r)}(n,e):By());var n;s.set(t.key.toString(),t)});const a=[];return t.forEach(e=>{var t=s.get(e.toString());jy(!!t),a.push(t)}),a}(this.datastore,e);return t.forEach(e=>this.recordVersion(e)),t}set(e,t){this.write(t.toMutation(e,this.precondition(e))),this.writtenDocs.add(e.toString())}update(e,t){try{this.write(t.toMutation(e,this.preconditionForUpdate(e)))}catch(e){this.lastTransactionError=e}this.writtenDocs.add(e.toString())}delete(e){this.write(new kT(e,this.precondition(e))),this.writtenDocs.add(e.toString())}async commit(){if(this.ensureCommitNotCalled(),this.lastTransactionError)throw this.lastTransactionError;const t=this.readVersions;this.mutations.forEach(e=>{t.delete(e.key.toString())}),t.forEach((e,t)=>{var n=uw.fromPath(t);this.mutations.push(new AT(n,this.precondition(n)))}),await async function(e,t){const n=e,r={writes:t.map(e=>g0(n.serializer,e))};await n.So("Commit",n.serializer.databaseId,ow.emptyPath(),r)}(this.datastore,this.mutations),this.committed=!0}recordVersion(e){let t;if(e.isFoundDocument())t=e.version;else{if(!e.isNoDocument())throw By();t=sw.min()}var n=this.readVersions.get(e.key.toString());if(n){if(!t.isEqual(n))throw new $y(zy.ABORTED,"Document version changed between two reads.")}else this.readVersions.set(e.key.toString(),t)}precondition(e){const t=this.readVersions.get(e.toString());return!this.writtenDocs.has(e.toString())&&t?t.isEqual(sw.min())?gT.exists(!1):gT.updateTime(t):gT.none()}preconditionForUpdate(e){const t=this.readVersions.get(e.toString());if(this.writtenDocs.has(e.toString())||!t)return gT.exists(!0);if(t.isEqual(sw.min()))throw new $y(zy.INVALID_ARGUMENT,"Can't update a document that doesn't exist.");return gT.updateTime(t)}write(e){this.ensureCommitNotCalled(),this.mutations.push(e)}ensureCommitNotCalled(){}}class hk{constructor(e,t,n,r,i){this.asyncQueue=e,this.datastore=t,this.options=n,this.updateFunction=r,this.deferred=i,this.za=n.maxAttempts,this.jo=new WC(this.asyncQueue,"transaction_retry")}ja(){--this.za,this.Ha()}Ha(){this.jo.qo(async()=>{const t=new uk(this.datastore),e=this.Ja(t);e&&e.then(e=>{this.asyncQueue.enqueueAndForget(()=>t.commit().then(()=>{this.deferred.resolve(e)}).catch(e=>{this.Ya(e)}))}).catch(e=>{this.Ya(e)})})}Ja(e){try{var t=this.updateFunction(e);return!Lw(t)&&t.catch&&t.then?t:(this.deferred.reject(Error("Transaction callback must return a Promise")),null)}catch(e){return this.deferred.reject(e),null}}Ya(e){0<this.za&&this.Za(e)?(--this.za,this.asyncQueue.enqueueAndForget(()=>(this.Ha(),Promise.resolve()))):this.deferred.reject(e)}Za(e){if("FirebaseError"!==e.name)return!1;var t=e.code;return"aborted"===t||"failed-precondition"===t||"already-exists"===t||!xT(t)}}class dk{constructor(e,t,n,r){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=n,this.databaseInfo=r,this.user=xy.UNAUTHENTICATED,this.clientId=ew.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(n,async e=>{Fy("FirestoreClient","Received user=",e.uid),await this.authCredentialListener(e),this.user=e}),this.appCheckCredentials.start(n,e=>(Fy("FirestoreClient","Received new app check token=",e),this.appCheckCredentialListener(e,this.user)))}get configuration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(e){this.authCredentialListener=e}setAppCheckTokenChangeListener(e){this.appCheckCredentialListener=e}verifyNotTerminated(){if(this.asyncQueue.isShuttingDown)throw new $y(zy.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const n=new Ky;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),n.resolve()}catch(e){var t=wS(e,"Failed to shutdown persistence");n.reject(t)}}),n.promise}}async function pk(e,t){e.asyncQueue.verifyOperationInProgress(),Fy("FirestoreClient","Initializing OfflineComponentProvider");var n=e.configuration;await t.initialize(n);let r=n.initialUser;e.setCredentialChangeListener(async e=>{r.isEqual(e)||(await gC(t.localStore,e),r=e)}),t.persistence.setDatabaseDeletedListener(()=>e.terminate()),e._offlineComponents=t}async function fk(e,n){e.asyncQueue.verifyOperationInProgress();var t=await mk(e);Fy("FirestoreClient","Initializing OnlineComponentProvider"),await n.initialize(t,e.configuration),e.setCredentialChangeListener(e=>gS(n.remoteStore,e)),e.setAppCheckTokenChangeListener((e,t)=>gS(n.remoteStore,t)),e._onlineComponents=n}function gk(e){return"FirebaseError"===e.name?e.code===zy.FAILED_PRECONDITION||e.code===zy.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&e instanceof DOMException)||22===e.code||20===e.code||11===e.code}async function mk(t){if(!t._offlineComponents)if(t._uninitializedComponentsProvider){Fy("FirestoreClient","Using user provided OfflineComponentProvider");try{await pk(t,t._uninitializedComponentsProvider._offline)}catch(e){var n=e;if(!gk(n))throw n;Vy("Error using user provided cache. Falling back to memory cache: "+n),await pk(t,new rk)}}else Fy("FirestoreClient","Using default OfflineComponentProvider"),await pk(t,new rk);return t._offlineComponents}async function vk(e){return e._onlineComponents||(e._uninitializedComponentsProvider?(Fy("FirestoreClient","Using user provided OnlineComponentProvider"),await fk(e,e._uninitializedComponentsProvider._online)):(Fy("FirestoreClient","Using default OnlineComponentProvider"),await fk(e,new ak))),e._onlineComponents}function _k(e){return mk(e).then(e=>e.persistence)}function yk(e){return mk(e).then(e=>e.localStore)}function wk(e){return vk(e).then(e=>e.remoteStore)}function bk(e){return vk(e).then(e=>e.syncEngine)}async function Ik(e){const t=await vk(e),n=t.eventManager;return n.onListen=(async function(e,t){const n=tk(e);let r,i;const s=n.ga.get(t);if(s)r=s.targetId,n.sharedClientState.addLocalQueryTarget(r),i=s.view.Va();else{const e=await yC(n.localStore,MI(t)),s=n.sharedClientState.addLocalQueryTarget(e.targetId);r=e.targetId,i=await qS(n,t,r,"current"===s,e.resumeToken),n.isPrimaryClient&&tS(n.remoteStore,e)}return i}).bind(null,t.syncEngine),n.onUnlisten=(async function(e,t){const n=e,r=n.ga.get(t),i=n.pa.get(r.targetId);if(1<i.length)return n.pa.set(r.targetId,i.filter(e=>!UI(e,t))),void n.ga.delete(t);n.isPrimaryClient?(n.sharedClientState.removeLocalQueryTarget(r.targetId),n.sharedClientState.isActiveQueryTarget(r.targetId)||await wC(n.localStore,r.targetId,!1).then(()=>{n.sharedClientState.clearQueryState(r.targetId),nS(n.remoteStore,r.targetId),GS(n,r.targetId)}).catch(Iw)):(GS(n,r.targetId),await wC(n.localStore,r.targetId,!0))}).bind(null,t.syncEngine),n}function Tk(e,t,n={}){const r=new Ky;return e.asyncQueue.enqueueAndForget(async()=>function(n,r,i,s,a){const e=new ck({next:e=>{r.enqueueAndForget(()=>kS(n,o));var t=e.docs.has(i);!t&&e.fromCache?a.reject(new $y(zy.UNAVAILABLE,"Failed to get document because the client is offline.")):t&&e.fromCache&&s&&"server"===s.source?a.reject(new $y(zy.UNAVAILABLE,'Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to "server" to retrieve the cached document.)')):a.resolve(e)},error:e=>a.reject(e)}),o=new NS(PI(i.path),e,{includeMetadataChanges:!0,Z_:!0});return SS(n,o)}(await Ik(e),e.asyncQueue,t,n,r)),r.promise}function Ek(e,t,n={}){const r=new Ky;return e.asyncQueue.enqueueAndForget(async()=>function(t,n,e,r,i){const s=new ck({next:e=>{n.enqueueAndForget(()=>kS(t,a)),e.fromCache&&"server"===r.source?i.reject(new $y(zy.UNAVAILABLE,'Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to "server" to retrieve the cached documents.)')):i.resolve(e)},error:e=>i.reject(e)}),a=new NS(e,s,{includeMetadataChanges:!0,Z_:!0});return SS(t,a)}(await Ik(e),e.asyncQueue,t,n,r)),r.promise}function Ck(e,t,n,r){const i=(n=n,t=KC(t),s="string"==typeof n?MT().encode(n):n,n=function(e,t){if(e instanceof Uint8Array)return ok(e,t);if(e instanceof ArrayBuffer)return ok(new Uint8Array(e),t);if(e instanceof ReadableStream)return e.getReader();throw new Error("Source of `toByteStreamReader` has to be a ArrayBuffer or ReadableStream")}(s),t=t,new lk(n,t));var s;e.asyncQueue.enqueueAndForget(async()=>{!function(e,t,n){const r=e;!async function(t,n,r){try{var i=await n.getMetadata();if(await function(e,t){const n=e,r=r0(t.createTime);return n.persistence.runTransaction("hasNewerBundle","readonly",e=>n.$r.getBundleMetadata(e,t.id)).then(e=>!!e&&0<=e.createTime.compareTo(r))}(t.localStore,i))return await n.close(),r._completeWith({taskState:"Success",documentsLoaded:i.totalDocuments,bytesLoaded:i.totalBytes,totalDocuments:i.totalDocuments,totalBytes:i.totalBytes}),Promise.resolve(new Set);r._updateProgress(xS(i));const a=new DS(i,t.localStore,n.serializer);let e=await n.Oa();for(;e;){const t=await a.na(e);t&&r._updateProgress(t),e=await n.Oa()}var s=await a.complete();return await JS(t,s.sa,void 0),await function(e,t){const n=e;return n.persistence.runTransaction("Save bundle","readwrite",e=>n.$r.saveBundleMetadata(e,t))}(t.localStore,i),r._completeWith(s.progress),Promise.resolve(s.ia)}catch(t){return Vy("SyncEngine",`Loading bundle failed with ${t}`),r._failWith(t),Promise.resolve(new Set)}}(r,t,n).then(e=>{r.sharedClientState.notifyBundleLoaded(e)})}(await bk(e),i,r)})}function Sk(e){const t={};return void 0!==e.timeoutSeconds&&(t.timeoutSeconds=e.timeoutSeconds),t}const kk=new Map;function Ak(e,t,n){if(!n)throw new $y(zy.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function Nk(e,t,n,r){if(!0===t&&!0===r)throw new $y(zy.INVALID_ARGUMENT,`${e} and ${n} cannot be used together.`)}function Rk(e){if(!uw.isDocumentKey(e))throw new $y(zy.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function Pk(e){if(uw.isDocumentKey(e))throw new $y(zy.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function Dk(e){if(void 0===e)return"undefined";if(null===e)return"null";if("string"==typeof e)return 20<e.length&&(e=`${e.substring(0,20)}...`),JSON.stringify(e);if("number"==typeof e||"boolean"==typeof e)return""+e;if("object"!=typeof e)return"function"==typeof e?"a function":By();if(e instanceof Array)return"an array";var t=(e=e).constructor?e.constructor.name:null;return t?`a custom ${t} object`:"an object"}function xk(e,t){if((e="_delegate"in e?e._delegate:e)instanceof t)return e;if(t.name===e.constructor.name)throw new $y(zy.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");var n=Dk(e);throw new $y(zy.INVALID_ARGUMENT,`Expected type '${t.name}', but it was: ${n}`)}function Ok(e,t){if(t<=0)throw new $y(zy.INVALID_ARGUMENT,`Function ${e}() requires a positive number, but it was: ${t}.`)}class Mk{constructor(e){var t;if(void 0===e.host){if(void 0!==e.ssl)throw new $y(zy.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host="firestore.googleapis.com",this.ssl=!0}else this.host=e.host,this.ssl=null===(t=e.ssl)||void 0===t||t;if(this.credentials=e.credentials,this.ignoreUndefinedProperties=!!e.ignoreUndefinedProperties,this.localCache=e.localCache,void 0===e.cacheSizeBytes)this.cacheSizeBytes=41943040;else{if(-1!==e.cacheSizeBytes&&e.cacheSizeBytes<1048576)throw new $y(zy.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}Nk("experimentalForceLongPolling",e.experimentalForceLongPolling,"experimentalAutoDetectLongPolling",e.experimentalAutoDetectLongPolling),this.experimentalForceLongPolling=!!e.experimentalForceLongPolling,this.experimentalForceLongPolling?this.experimentalAutoDetectLongPolling=!1:void 0===e.experimentalAutoDetectLongPolling?this.experimentalAutoDetectLongPolling=!0:this.experimentalAutoDetectLongPolling=!!e.experimentalAutoDetectLongPolling,this.experimentalLongPollingOptions=Sk(null!==(t=e.experimentalLongPollingOptions)&&void 0!==t?t:{}),function(e){if(void 0!==e.timeoutSeconds){if(isNaN(e.timeoutSeconds))throw new $y(zy.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (must not be NaN)`);if(e.timeoutSeconds<5)throw new $y(zy.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (minimum allowed value is 5)`);if(30<e.timeoutSeconds)throw new $y(zy.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (maximum allowed value is 30)`)}}(this.experimentalLongPollingOptions),this.useFetchStreams=!!e.useFetchStreams}isEqual(e){return this.host===e.host&&this.ssl===e.ssl&&this.credentials===e.credentials&&this.cacheSizeBytes===e.cacheSizeBytes&&this.experimentalForceLongPolling===e.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===e.experimentalAutoDetectLongPolling&&(t=this.experimentalLongPollingOptions,n=e.experimentalLongPollingOptions,t.timeoutSeconds===n.timeoutSeconds)&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams;var t,n}}class Lk{constructor(e,t,n,r){this._authCredentials=e,this._appCheckCredentials=t,this._databaseId=n,this._app=r,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new Mk({}),this._settingsFrozen=!1}get app(){if(!this._app)throw new $y(zy.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return void 0!==this._terminateTask}_setSettings(e){if(this._settingsFrozen)throw new $y(zy.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new Mk(e),void 0!==e.credentials&&(this._authCredentials=function(e){if(!e)return new Gy;switch(e.type){case"firstParty":return new Jy(e.sessionIndex||"0",e.iamToken||null,e.authTokenFactory||null);case"provider":return e.client;default:throw new $y(zy.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(e.credentials))}_getSettings(){return this._settings}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return this._terminateTask||(this._terminateTask=this._terminate()),this._terminateTask}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(e){const t=kk.get(e);t&&(Fy("ComponentProvider","Removing Datastore"),kk.delete(e),t.terminate())}(this),Promise.resolve()}}class Fk{constructor(e,t,n){this.converter=t,this._query=n,this.type="query",this.firestore=e}withConverter(e){return new Fk(this.firestore,e,this._query)}}class Uk{constructor(e,t,n){this.converter=t,this._key=n,this.type="document",this.firestore=e}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new Vk(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new Uk(this.firestore,e,this._key)}}class Vk extends Fk{constructor(e,t,n){super(e,t,PI(n)),this._path=n,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const e=this._path.popLast();return e.isEmpty()?null:new Uk(this.firestore,null,new uw(e))}withConverter(e){return new Vk(this.firestore,e,this._path)}}function qk(e,t,...n){if(e=ce(e),Ak("collection","path",t),e instanceof Lk){var r=ow.fromString(t,...n);return Pk(r),new Vk(e,null,r)}if(!(e instanceof Uk||e instanceof Vk))throw new $y(zy.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");r=e._path.child(ow.fromString(t,...n));return Pk(r),new Vk(e.firestore,null,r)}function Bk(e,t,...n){if(e=ce(e),Ak("doc","path",t=1===arguments.length?ew.newId():t),e instanceof Lk){var r=ow.fromString(t,...n);return Rk(r),new Uk(e,null,new uw(r))}if(!(e instanceof Uk||e instanceof Vk))throw new $y(zy.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");r=e._path.child(ow.fromString(t,...n));return Rk(r),new Uk(e.firestore,e instanceof Vk?e.converter:null,new uw(r))}function jk(e,t){return e=ce(e),t=ce(t),(e instanceof Uk||e instanceof Vk)&&(t instanceof Uk||t instanceof Vk)&&e.firestore===t.firestore&&e.path===t.path&&e.converter===t.converter}function zk(e,t){return e=ce(e),t=ce(t),e instanceof Fk&&t instanceof Fk&&e.firestore===t.firestore&&UI(e._query,t._query)&&e.converter===t.converter}class $k{constructor(){this.Xa=Promise.resolve(),this.eu=[],this.tu=!1,this.nu=[],this.ru=null,this.iu=!1,this.su=!1,this.ou=[],this.jo=new WC(this,"async_queue_retry"),this._u=()=>{var e=$C();e&&Fy("AsyncQueue","Visibility state changed to "+e.visibilityState),this.jo.Ko()};const e=$C();e&&"function"==typeof e.addEventListener&&e.addEventListener("visibilitychange",this._u)}get isShuttingDown(){return this.tu}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.au(),this.uu(e)}enterRestrictedMode(e){if(!this.tu){this.tu=!0,this.su=e||!1;const t=$C();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this._u)}}enqueue(e){if(this.au(),this.tu)return new Promise(()=>{});const t=new Ky;return this.uu(()=>this.tu&&this.su?Promise.resolve():(e().then(t.resolve,t.reject),t.promise)).then(()=>t.promise)}enqueueRetryable(e){this.enqueueAndForget(()=>(this.eu.push(e),this.cu()))}async cu(){if(0!==this.eu.length){try{await this.eu[0](),this.eu.shift(),this.jo.reset()}catch(e){if(!Aw(e))throw e;Fy("AsyncQueue","Operation failed with retryable error: "+e)}0<this.eu.length&&this.jo.qo(()=>this.cu())}}uu(e){var t=this.Xa.then(()=>(this.iu=!0,e().catch(e=>{throw this.ru=e,this.iu=!1,Uy("INTERNAL UNHANDLED ERROR: ",function(e){let t=e.message||"";return e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+"\n"+e.stack),t}(e)),e}).then(e=>(this.iu=!1,e))));return this.Xa=t}enqueueAfterDelay(e,t,n){this.au(),-1<this.ou.indexOf(e)&&(t=0);var r=yS.createAndSchedule(this,e,t,n,e=>this.lu(e));return this.nu.push(r),r}au(){this.ru&&By()}verifyOperationInProgress(){}async hu(){for(var e;await(e=this.Xa),e!==this.Xa;);}Pu(e){for(const t of this.nu)if(t.timerId===e)return!0;return!1}Iu(t){return this.hu().then(()=>{this.nu.sort((e,t)=>e.targetTimeMs-t.targetTimeMs);for(const e of this.nu)if(e.skipDelay(),"all"!==t&&e.timerId===t)break;return this.hu()})}Tu(e){this.ou.push(e)}lu(e){var t=this.nu.indexOf(e);this.nu.splice(t,1)}}function Kk(e){return function(e,t){if("object"==typeof e&&null!==e){var n=e;for(const e of t)if(e in n&&"function"==typeof n[e])return 1}}(e,["next","error","complete"])}class Wk{constructor(){this._progressObserver={},this._taskCompletionResolver=new Ky,this._lastProgress={taskState:"Running",totalBytes:0,totalDocuments:0,bytesLoaded:0,documentsLoaded:0}}onProgress(e,t,n){this._progressObserver={next:e,error:t,complete:n}}catch(e){return this._taskCompletionResolver.promise.catch(e)}then(e,t){return this._taskCompletionResolver.promise.then(e,t)}_completeWith(e){this._updateProgress(e),this._progressObserver.complete&&this._progressObserver.complete(),this._taskCompletionResolver.resolve(e)}_failWith(e){this._lastProgress.taskState="Error",this._progressObserver.next&&this._progressObserver.next(this._lastProgress),this._progressObserver.error&&this._progressObserver.error(e),this._taskCompletionResolver.reject(e)}_updateProgress(e){this._lastProgress=e,this._progressObserver.next&&this._progressObserver.next(e)}}var Gk,Hk,Qk,Yk,Jk,Xk;class Zk extends Lk{constructor(e,t,n,r){super(e,t,n,r),this.type="firestore",this._queue=new $k,this._persistenceKey=(null==r?void 0:r.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||tA(this),this._firestoreClient.terminate()}}function eA(e){return e._firestoreClient||tA(e),e._firestoreClient.verifyNotTerminated(),e._firestoreClient}function tA(e){var t,n,r,i,s,a=e._freezeSettings(),o=(n=e._databaseId,r=(null===(o=e._app)||void 0===o?void 0:o.options.appId)||"",i=e._persistenceKey,s=a,new Db(n,r,i,s.host,s.ssl,s.experimentalForceLongPolling,s.experimentalAutoDetectLongPolling,Sk(s.experimentalLongPollingOptions),s.useFetchStreams));e._firestoreClient=new dk(e._authCredentials,e._appCheckCredentials,e._queue,o),null!==(o=a.localCache)&&void 0!==o&&o._offlineComponentProvider&&null!==(t=a.localCache)&&void 0!==t&&t._onlineComponentProvider&&(e._firestoreClient._uninitializedComponentsProvider={_offlineKind:a.localCache.kind,_offline:a.localCache._offlineComponentProvider,_online:a.localCache._onlineComponentProvider})}function nA(e,t,n){const r=new Ky;return e.asyncQueue.enqueue(async()=>{try{await pk(e,n),await fk(e,t),r.resolve()}catch(e){const t=e;if(!gk(t))throw t;Vy("Error enabling indexeddb cache. Falling back to memory cache: "+t),r.reject(t)}}).then(()=>r.promise)}function rA(e){return function(e){const t=new Ky;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t){const n=e;oS(n.remoteStore)||Fy("SyncEngine","The network is disabled. The task returned by 'awaitPendingWrites()' will not complete until the network is enabled.");try{const e=await function(e){const t=e;return t.persistence.runTransaction("Get highest unacknowledged batch id","readonly",e=>t.mutationQueue.getHighestUnacknowledgedBatchId(e))}(n.localStore);if(-1===e)return void t.resolve();const r=n.Ca.get(e)||[];r.push(t),n.Ca.set(e,r)}catch(e){const n=wS(e,"Initialization of waitForPendingWrites() operation failed");t.reject(n)}}(await bk(e),t)),t.promise}(eA(e=xk(e,Zk)))}function iA(e){return(n=eA(e=xk(e,Zk))).asyncQueue.enqueue(async()=>{const e=await _k(n),t=await wk(n);return e.setNetworkEnabled(!0),function(e){const t=e;return t.v_.delete(0),ZC(t)}(t)});var n}function sA(e){return(n=eA(e=xk(e,Zk))).asyncQueue.enqueue(async()=>{const e=await _k(n),t=await wk(n);return e.setNetworkEnabled(!1),async function(e){const t=e;t.v_.add(0),await eS(t),t.x_.set("Offline")}(t)});var n}function aA(t,e){return n=eA(t=xk(t,Zk)),r=e,n.asyncQueue.enqueue(async()=>function(e,t){const n=e;return n.persistence.runTransaction("Get named query","readonly",e=>n.$r.getNamedQuery(e,t))}(await yk(n),r)).then(e=>e?new Fk(t,null,e.query):null);var n,r}function oA(e){if(e._initialized||e._terminated)throw new $y(zy.FAILED_PRECONDITION,"Firestore has already been started and persistence can no longer be enabled. You can only enable persistence before calling any other methods on a Firestore object.")}class cA{constructor(e){this._byteString=e}static fromBase64String(e){try{return new cA(Eb.fromBase64String(e))}catch(e){throw new $y(zy.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new cA(Eb.fromUint8Array(e))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(e){return this._byteString.isEqual(e._byteString)}}class lA{constructor(...e){for(let t=0;t<e.length;++t)if(0===e[t].length)throw new $y(zy.INVALID_ARGUMENT,"Invalid field name at argument $(i + 1). Field names must not be empty.");this._internalPath=new lw(e)}isEqual(e){return this._internalPath.isEqual(e._internalPath)}}class uA{constructor(e){this._methodName=e}}class hA{constructor(e,t){if(!isFinite(e)||e<-90||90<e)throw new $y(zy.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||180<t)throw new $y(zy.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+t);this._lat=e,this._long=t}get latitude(){return this._lat}get longitude(){return this._long}isEqual(e){return this._lat===e._lat&&this._long===e._long}toJSON(){return{latitude:this._lat,longitude:this._long}}_compareTo(e){return tw(this._lat,e._lat)||tw(this._long,e._long)}}const dA=/^__.*__$/;class pA{constructor(e,t,n){this.data=e,this.fieldMask=t,this.fieldTransforms=n}toMutation(e,t){return null!==this.fieldMask?new TT(e,this.data,this.fieldMask,t,this.fieldTransforms):new IT(e,this.data,t,this.fieldTransforms)}}class fA{constructor(e,t,n){this.data=e,this.fieldMask=t,this.fieldTransforms=n}toMutation(e,t){return new TT(e,this.data,this.fieldMask,t,this.fieldTransforms)}}function gA(e){switch(e){case 0:case 2:case 1:return 1;case 3:case 4:return;default:throw By()}}class mA{constructor(e,t,n,r,i,s){this.settings=e,this.databaseId=t,this.serializer=n,this.ignoreUndefinedProperties=r,void 0===i&&this.Eu(),this.fieldTransforms=i||[],this.fieldMask=s||[]}get path(){return this.settings.path}get du(){return this.settings.du}Au(e){return new mA(Object.assign(Object.assign({},this.settings),e),this.databaseId,this.serializer,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}Ru(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),r=this.Au({path:n,Vu:!1});return r.mu(e),r}fu(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),r=this.Au({path:n,Vu:!1});return r.Eu(),r}gu(e){return this.Au({path:void 0,Vu:!0})}pu(e){return LA(e,this.settings.methodName,this.settings.yu||!1,this.path,this.settings.wu)}contains(t){return void 0!==this.fieldMask.find(e=>t.isPrefixOf(e))||void 0!==this.fieldTransforms.find(e=>t.isPrefixOf(e.field))}Eu(){if(this.path)for(let e=0;e<this.path.length;e++)this.mu(this.path.get(e))}mu(e){if(0===e.length)throw this.pu("Document fields must not be empty");if(gA(this.du)&&dA.test(e))throw this.pu('Document fields cannot begin and end with "__"')}}class vA{constructor(e,t,n){this.databaseId=e,this.ignoreUndefinedProperties=t,this.serializer=n||KC(e)}Su(e,t,n,r=!1){return new mA({du:e,methodName:t,wu:n,path:lw.emptyPath(),Vu:!1,yu:r},this.databaseId,this.serializer,this.ignoreUndefinedProperties)}}function _A(e){var t=e._freezeSettings(),n=KC(e._databaseId);return new vA(e._databaseId,!!t.ignoreUndefinedProperties,n)}function yA(e,t,n,r,i,s={}){const a=e.Su(s.merge||s.mergeFields?2:0,t,n,i);DA("Data must be an object, but it was:",a,r);var o=RA(r,a);let c,l;if(s.merge)c=new Ib(a.fieldMask),l=a.fieldTransforms;else if(s.mergeFields){const e=[];for(const r of s.mergeFields){const i=xA(t,r,n);if(!a.contains(i))throw new $y(zy.INVALID_ARGUMENT,`Field '${i}' is specified in your field mask but missing from your input data.`);FA(e,i)||e.push(i)}c=new Ib(e),l=a.fieldTransforms.filter(e=>c.covers(e.field))}else c=null,l=a.fieldTransforms;return new pA(new Xb(o),c,l)}class wA extends uA{_toFieldTransform(e){if(2!==e.du)throw 1===e.du?e.pu(`${this._methodName}() can only appear at the top level of your update data`):e.pu(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return e.fieldMask.push(e.path),null}isEqual(e){return e instanceof wA}}function bA(e,t,n){return new mA({du:3,wu:t.settings.wu,methodName:e._methodName,Vu:n},t.databaseId,t.serializer,t.ignoreUndefinedProperties)}class IA extends uA{_toFieldTransform(e){return new pT(e.path,new sT)}isEqual(e){return e instanceof IA}}class TA extends uA{constructor(e,t){super(e),this.bu=t}_toFieldTransform(e){const t=bA(this,e,!0),n=this.bu.map(e=>NA(e,t)),r=new aT(n);return new pT(e.path,r)}isEqual(e){return e instanceof TA&&j(this.bu,e.bu)}}class EA extends uA{constructor(e,t){super(e),this.bu=t}_toFieldTransform(e){const t=bA(this,e,!0),n=this.bu.map(e=>NA(e,t)),r=new cT(n);return new pT(e.path,r)}isEqual(e){return e instanceof EA&&j(this.bu,e.bu)}}class CA extends uA{constructor(e,t){super(e),this.Du=t}_toFieldTransform(e){var t=new uT(e.serializer,nT(e.serializer,this.Du));return new pT(e.path,t)}isEqual(e){return e instanceof CA&&this.Du===e.Du}}function SA(e,i,s,t){const a=e.Su(1,i,s);DA("Data must be an object, but it was:",a,t);const o=[],c=Xb.empty();fb(t,(e,t)=>{var n=MA(i,e,s);t=ce(t);var r=a.fu(n);if(t instanceof wA)o.push(n);else{const e=NA(t,r);null!=e&&(o.push(n),c.set(n,e))}});var n=new Ib(o);return new fA(c,n,a.fieldTransforms)}function kA(e,t,n,r,i,s){const a=e.Su(1,t,n),o=[xA(t,r,n)],c=[i];if(s.length%2!=0)throw new $y(zy.INVALID_ARGUMENT,`Function ${t}() needs to be called with an even number of arguments that alternate between field names and values.`);for(let p=0;p<s.length;p+=2)o.push(xA(t,s[p])),c.push(s[p+1]);const l=[],u=Xb.empty();for(let f=o.length-1;0<=f;--f)if(!FA(l,o[f])){const t=o[f];var h=ce(h=c[f]);const r=a.fu(t);if(h instanceof wA)l.push(t);else{const e=NA(h,r);null!=e&&(l.push(t),u.set(t,e))}}var d=new Ib(l);return new fA(u,d,a.fieldTransforms)}function AA(e,t,n,r=!1){return NA(n,e.Su(r?4:3,t))}function NA(e,t){if(PA(e=ce(e)))return DA("Unsupported field value:",t,e),RA(e,t);if(e instanceof uA)return function(e,t){if(!gA(t.du))throw t.pu(`${e._methodName}() can only be used with update() and set()`);if(!t.path)throw t.pu(`${e._methodName}() is not currently supported inside arrays`);var n=e._toFieldTransform(t);n&&t.fieldTransforms.push(n)}(e,t),null;if(void 0===e&&t.ignoreUndefinedProperties)return null;if(t.path&&t.fieldMask.push(t.path),e instanceof Array){if(t.settings.Vu&&4!==t.du)throw t.pu("Nested arrays are not supported");return function(e,t){const n=[];let r=0;for(const i of e){let e=NA(i,t.gu(r));null==e&&(e={nullValue:"NULL_VALUE"}),n.push(e),r++}return{arrayValue:{values:n}}}(e,t)}return function(e,t){if(null===(e=ce(e)))return{nullValue:"NULL_VALUE"};if("number"==typeof e)return nT(t.serializer,e);if("boolean"==typeof e)return{booleanValue:e};if("string"==typeof e)return{stringValue:e};if(e instanceof Date){var n=iw.fromDate(e);return{timestampValue:t0(t.serializer,n)}}if(e instanceof iw){n=new iw(e.seconds,1e3*Math.floor(e.nanoseconds/1e3));return{timestampValue:t0(t.serializer,n)}}if(e instanceof hA)return{geoPointValue:{latitude:e.latitude,longitude:e.longitude}};if(e instanceof cA)return{bytesValue:n0(t.serializer,e._byteString)};if(e instanceof Uk){const r=t.databaseId,i=e.firestore._databaseId;if(!i.isEqual(r))throw t.pu(`Document reference is for database ${i.projectId}/${i.database} but should be for database ${r.projectId}/${r.database}`);return{referenceValue:i0(e.firestore._databaseId||t.databaseId,e._key.path)}}throw t.pu(`Unsupported field value: ${Dk(e)}`)}(e,t)}function RA(e,r){const i={};return gb(e)?r.path&&0<r.path.length&&r.fieldMask.push(r.path):fb(e,(e,t)=>{var n=NA(t,r.Ru(e));null!=n&&(i[e]=n)}),{mapValue:{fields:i}}}function PA(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof iw||e instanceof hA||e instanceof cA||e instanceof Uk||e instanceof uA)}function DA(e,t,n){if(!PA(n)||("object"!=typeof(i=n)||null===i||Object.getPrototypeOf(i)!==Object.prototype&&null!==Object.getPrototypeOf(i))){var r=Dk(n);throw"an object"===r?t.pu(e+" a custom object"):t.pu(e+" "+r)}var i}function xA(e,t,n){if((t=ce(t))instanceof lA)return t._internalPath;if("string"==typeof t)return MA(e,t);throw LA("Field path arguments must be of type string or ",e,!1,void 0,n)}const OA=new RegExp("[~\\*/\\[\\]]");function MA(t,n,r){if(0<=n.search(OA))throw LA(`Invalid field path (${n}). Paths must not contain '~', '*', '/', '[', or ']'`,t,!1,void 0,r);try{return new lA(...n.split("."))._internalPath}catch(e){throw LA(`Invalid field path (${n}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,t,!1,void 0,r)}}function LA(e,t,n,r,i){var s=r&&!r.isEmpty(),a=void 0!==i;let o=`Function ${t}() called with invalid data`;n&&(o+=" (via `toFirestore()`)"),o+=". ";let c="";return(s||a)&&(c+=" (found",s&&(c+=` in field ${r}`),a&&(c+=` in document ${i}`),c+=")"),new $y(zy.INVALID_ARGUMENT,o+e+c)}function FA(e,t){return e.some(e=>e.isEqual(t))}class UA{constructor(e,t,n,r,i){this._firestore=e,this._userDataWriter=t,this._key=n,this._document=r,this._converter=i}get id(){return this._key.path.lastSegment()}get ref(){return new Uk(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){var e=new VA(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}get(e){if(this._document){var t=this._document.data.field(qA("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class VA extends UA{data(){return super.data()}}function qA(e,t){return"string"==typeof t?MA(e,t):(t instanceof lA?t:t._delegate)._internalPath}function BA(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new $y(zy.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class jA{}class zA extends jA{}function $A(e,t,...n){let r=[];t instanceof jA&&r.push(t),r=r.concat(n),function(e){var t=e.filter(e=>e instanceof WA).length,n=e.filter(e=>e instanceof KA).length;if(1<t||0<t&&0<n)throw new $y(zy.INVALID_ARGUMENT,"InvalidQuery. When using composite filters, you cannot use more than one filter at the top level. Consider nesting the multiple filters within an `and(...)` statement. For example: change `query(query, where(...), or(...))` to `query(query, and(where(...), or(...)))`.")}(r);for(const t of r)e=t._apply(e);return e}class KA extends zA{constructor(e,t,n){super(),this._field=e,this._op=t,this._value=n,this.type="where"}static _create(e,t,n){return new KA(e,t,n)}_apply(e){var t=this._parse(e);return eN(e._query,t),new Fk(e.firestore,e.converter,LI(e._query,t))}_parse(e){var t=_A(e.firestore);return function(e,t,n,r,i,s,a){let o;if(i.isKeyField()){if("array-contains"===s||"array-contains-any"===s)throw new $y(zy.INVALID_ARGUMENT,`Invalid Query. You can't perform '${s}' queries on documentId().`);if("in"===s||"not-in"===s){ZA(a,s);const t=[];for(const n of a)t.push(XA(r,e,n));o={arrayValue:{values:t}}}else o=XA(r,e,a)}else"in"!==s&&"not-in"!==s&&"array-contains-any"!==s||ZA(a,s),o=AA(n,t,a,"in"===s||"not-in"===s);return sI.create(i,s,o)}(e._query,"where",t,e.firestore._databaseId,this._field,this._op,this._value)}}class WA extends jA{constructor(e,t){super(),this.type=e,this._queryConstraints=t}static _create(e,t){return new WA(e,t)}_parse(t){var e=this._queryConstraints.map(e=>e._parse(t)).filter(e=>0<e.getFilters().length);return 1===e.length?e[0]:aI.create(e,this._getOperator())}_apply(e){const t=this._parse(e);return 0===t.getFilters().length?e:(function(e,t){let n=e;for(const e of t.getFlattenedFilters())eN(n,e),n=LI(n,e)}(e._query,t),new Fk(e.firestore,e.converter,LI(e._query,t)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return"and"===this.type?"and":"or"}}class GA extends zA{constructor(e,t){super(),this._field=e,this._direction=t,this.type="orderBy"}static _create(e,t){return new GA(e,t)}_apply(e){var t=function(e,t,n){if(null!==e.startAt)throw new $y(zy.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(null!==e.endAt)throw new $y(zy.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");return new rI(t,n)}(e._query,this._field,this._direction);return new Fk(e.firestore,e.converter,(e=e._query,t=e.explicitOrderBy.concat([t]),new NI(e.path,e.collectionGroup,t,e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)))}}class HA extends zA{constructor(e,t,n){super(),this.type=e,this._limit=t,this._limitType=n}static _create(e,t,n){return new HA(e,t,n)}_apply(e){return new Fk(e.firestore,e.converter,FI(e._query,this._limit,this._limitType))}}class QA extends zA{constructor(e,t,n){super(),this.type=e,this._docOrFields=t,this._inclusive=n}static _create(e,t,n){return new QA(e,t,n)}_apply(e){var t,n=JA(e,this.type,this._docOrFields,this._inclusive);return new Fk(e.firestore,e.converter,(t=e._query,e=n,new NI(t.path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,e,t.endAt)))}}class YA extends zA{constructor(e,t,n){super(),this.type=e,this._docOrFields=t,this._inclusive=n}static _create(e,t,n){return new YA(e,t,n)}_apply(e){var t,n=JA(e,this.type,this._docOrFields,this._inclusive);return new Fk(e.firestore,e.converter,(t=e._query,e=n,new NI(t.path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,e)))}}function JA(e,t,n,r){if(n[0]=ce(n[0]),n[0]instanceof UA)return function(e,t,n,r,i){if(!r)throw new $y(zy.NOT_FOUND,`Can't use a DocumentSnapshot that doesn't exist for ${n}().`);const s=[];for(const n of OI(e))if(n.field.isKeyField())s.push(jb(t,r.key));else{const e=r.data.field(n.field);if(Nb(e))throw new $y(zy.INVALID_ARGUMENT,'Invalid query. You are trying to start or end a query using a document for which the field "'+n.field+'" is an uncommitted server timestamp. (Since the value of this field is unknown, you cannot start/end a query with it.)');if(null===e){const e=n.field.canonicalString();throw new $y(zy.INVALID_ARGUMENT,`Invalid query. You are trying to start or end a query using a document for which the field '${e}' (used as the orderBy) does not exist.`)}s.push(e)}return new eI(s,i)}(e._query,e.firestore._databaseId,t,n[0]._document,r);var i=_A(e.firestore);return function(e,t,n,r,i,s){const a=e.explicitOrderBy;if(i.length>a.length)throw new $y(zy.INVALID_ARGUMENT,`Too many arguments provided to ${r}(). The number of arguments must be less than or equal to the number of orderBy() clauses`);const o=[];for(let c=0;c<i.length;c++){const l=i[c];if(a[c].field.isKeyField()){if("string"!=typeof l)throw new $y(zy.INVALID_ARGUMENT,`Invalid query. Expected a string for document ID in ${r}(), but got a ${typeof l}`);if(!xI(e)&&-1!==l.indexOf("/"))throw new $y(zy.INVALID_ARGUMENT,`Invalid query. When querying a collection and ordering by documentId(), the value passed to ${r}() must be a plain document ID, but '${l}' contains a slash.`);const n=e.path.child(ow.fromString(l));if(!uw.isDocumentKey(n))throw new $y(zy.INVALID_ARGUMENT,`Invalid query. When querying a collection group and ordering by documentId(), the value passed to ${r}() must result in a valid document path, but '${n}' is not because it contains an odd number of segments.`);const i=new uw(n);o.push(jb(t,i))}else{const e=AA(n,r,l);o.push(e)}}return new eI(o,s)}(e._query,e.firestore._databaseId,i,t,n,r)}function XA(e,t,n){if("string"==typeof(n=ce(n))){if(""===n)throw new $y(zy.INVALID_ARGUMENT,"Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.");if(!xI(t)&&-1!==n.indexOf("/"))throw new $y(zy.INVALID_ARGUMENT,`Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${n}' contains a '/' character.`);var r=t.path.child(ow.fromString(n));if(!uw.isDocumentKey(r))throw new $y(zy.INVALID_ARGUMENT,`Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${r}' is not because it has an odd number of segments (${r.length}).`);return jb(e,new uw(r))}if(n instanceof Uk)return jb(e,n._key);throw new $y(zy.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${Dk(n)}.`)}function ZA(e,t){if(!Array.isArray(e)||0===e.length)throw new $y(zy.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${t.toString()}' filters.`)}function eN(e,t){const n=function(e,t){for(const n of e)for(const e of n.getFlattenedFilters())if(0<=t.indexOf(e.op))return e.op;return null}(e.filters,function(e){switch(e){case"!=":return["!=","not-in"];case"array-contains-any":case"in":return["not-in"];case"not-in":return["array-contains-any","in","not-in","!="];default:return[]}}(t.op));if(null!==n)throw n===t.op?new $y(zy.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new $y(zy.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${n.toString()}' filters.`)}class tN{convertValue(e,t="none"){switch(Lb(e)){case 0:return null;case 1:return e.booleanValue;case 2:return kb(e.integerValue||e.doubleValue);case 3:return this.convertTimestamp(e.timestampValue);case 4:return this.convertServerTimestamp(e,t);case 5:return e.stringValue;case 6:return this.convertBytes(Ab(e.bytesValue));case 7:return this.convertReference(e.referenceValue);case 8:return this.convertGeoPoint(e.geoPointValue);case 9:return this.convertArray(e.arrayValue,t);case 10:return this.convertObject(e.mapValue,t);default:throw By()}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,n="none"){const r={};return fb(e,(e,t)=>{r[e]=this.convertValue(t,n)}),r}convertGeoPoint(e){return new hA(kb(e.latitude),kb(e.longitude))}convertArray(e,t){return(e.values||[]).map(e=>this.convertValue(e,t))}convertServerTimestamp(e,t){switch(t){case"previous":var n=Rb(e);return null==n?null:this.convertValue(n,t);case"estimate":return this.convertTimestamp(Pb(e));default:return null}}convertTimestamp(e){var t=Sb(e);return new iw(t.seconds,t.nanos)}convertDocumentKey(e,t){const n=ow.fromString(e);jy(E0(n));const r=new xb(n.get(1),n.get(3)),i=new uw(n.popFirst(5));return r.isEqual(t)||Uy(`Document ${i} contains a document reference within a different database (${r.projectId}/${r.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),i}}function nN(e,t,n){return e?n&&(n.merge||n.mergeFields)?e.toFirestore(t,n):e.toFirestore(t):t}class rN extends tN{constructor(e){super(),this.firestore=e}convertBytes(e){return new cA(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new Uk(this.firestore,null,t)}}class iN{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class sN extends UA{constructor(e,t,n,r,i,s){super(e,t,n,r,s),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){var t=new aN(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){var n=this._document.data.field(qA("DocumentSnapshot.get",e));if(null!==n)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}}class aN extends sN{data(e={}){return super.data(e)}}class oN{constructor(e,t,n,r){this._firestore=e,this._userDataWriter=t,this._snapshot=r,this.metadata=new iN(r.hasPendingWrites,r.fromCache),this.query=n}get docs(){const t=[];return this.forEach(e=>t.push(e)),t}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(t,n){this._snapshot.docs.forEach(e=>{t.call(n,new aN(this._firestore,this._userDataWriter,e.key,e,new iN(this._snapshot.mutatedKeys.has(e.key),this._snapshot.fromCache),this.query.converter))})}docChanges(e={}){var t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new $y(zy.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=function(s,t){if(s._snapshot.oldDocs.isEmpty()){let n=0;return s._snapshot.docChanges.map(e=>{var t=new aN(s._firestore,s._userDataWriter,e.doc.key,e.doc,new iN(s._snapshot.mutatedKeys.has(e.doc.key),s._snapshot.fromCache),s.query.converter);return e.doc,{type:"added",doc:t,oldIndex:-1,newIndex:n++}})}{let i=s._snapshot.oldDocs;return s._snapshot.docChanges.filter(e=>t||3!==e.type).map(e=>{var t=new aN(s._firestore,s._userDataWriter,e.doc.key,e.doc,new iN(s._snapshot.mutatedKeys.has(e.doc.key),s._snapshot.fromCache),s.query.converter);let n=-1,r=-1;return 0!==e.type&&(n=i.indexOf(e.doc.key),i=i.delete(e.doc.key)),1!==e.type&&(i=i.add(e.doc),r=i.indexOf(e.doc.key)),{type:function(e){switch(e){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return By()}}(e.type),doc:t,oldIndex:n,newIndex:r}})}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}function cN(e,t){return e instanceof sN&&t instanceof sN?e._firestore===t._firestore&&e._key.isEqual(t._key)&&(null===e._document?null===t._document:e._document.isEqual(t._document))&&e._converter===t._converter:e instanceof oN&&t instanceof oN&&e._firestore===t._firestore&&zk(e.query,t.query)&&e.metadata.isEqual(t.metadata)&&e._snapshot.isEqual(t._snapshot)}class lN extends tN{constructor(e){super(),this.firestore=e}convertBytes(e){return new cA(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new Uk(this.firestore,null,t)}}function uN(t){t=xk(t,Uk);const n=xk(t.firestore,Zk),e=eA(n),r=new lN(n);return function(e,t){const n=new Ky;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await function(e,t){const n=e;return n.persistence.runTransaction("read document","readonly",e=>n.localDocuments.getDocument(e,t))}(e,t);i.isFoundDocument()?n.resolve(i):i.isNoDocument()?n.resolve(null):n.reject(new $y(zy.UNAVAILABLE,"Failed to get document from cache. (However, this document may exist on the server. Run again without setting 'source' in the GetOptions to attempt to retrieve the document from the server.)"))}catch(e){var r=wS(e,`Failed to get document '${t} from cache`);n.reject(r)}}(await yk(e),t,n)),n.promise}(e,t._key).then(e=>new sN(n,r,t._key,e,new iN(null!==e&&e.hasLocalMutations,!0),t.converter))}function hN(t){t=xk(t,Fk);const n=xk(t.firestore,Zk),e=eA(n),r=new lN(n);return function(e,t){const n=new Ky;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await bC(e,t,!0),s=new LS(t,i.hs),a=s.ha(i.documents),o=s.applyChanges(a,!1);n.resolve(o.snapshot)}catch(e){var r=wS(e,`Failed to execute query '${t} against cache`);n.reject(r)}}(await yk(e),t,n)),n.promise}(e,t._query).then(e=>new oN(n,r,t,e))}function dN(e,t,n){e=xk(e,Uk);var r=xk(e.firestore,Zk),i=nN(e.converter,t,n);return mN(r,[yA(_A(r),"setDoc",e._key,i,null!==e.converter,n).toMutation(e._key,gT.none())])}function pN(e,t,n,...r){e=xk(e,Uk);var i=xk(e.firestore,Zk),s=_A(i);let a;return a="string"==typeof(t=ce(t))||t instanceof lA?kA(s,"updateDoc",e._key,t,n,r):SA(s,"updateDoc",e._key,t),mN(i,[a.toMutation(e._key,gT.exists(!0))])}function fN(t,...n){var e;t=ce(t);let r={includeMetadataChanges:!1},i=0;"object"!=typeof n[i]||Kk(n[i])||(r=n[i],i++);var s={includeMetadataChanges:r.includeMetadataChanges};if(Kk(n[i])){const t=n[i];n[i]=null===(e=t.next)||void 0===e?void 0:e.bind(t),n[i+1]=null===(e=t.error)||void 0===e?void 0:e.bind(t),n[i+2]=null===(e=t.complete)||void 0===e?void 0:e.bind(t)}let a,o,c;if(t instanceof Uk)o=xk(t.firestore,Zk),c=PI(t._key.path),a={next:e=>{n[i]&&n[i](vN(o,t,e))},error:n[i+1],complete:n[i+2]};else{const l=xk(t,Fk);o=xk(l.firestore,Zk),c=l._query;const u=new lN(o);a={next:e=>{n[i]&&n[i](new oN(o,u,l,e))},error:n[i+1],complete:n[i+2]},BA(t._query)}return function(e,t,n,r){const i=new ck(r),s=new NS(t,i,n);return e.asyncQueue.enqueueAndForget(async()=>SS(await Ik(e),s)),()=>{i.La(),e.asyncQueue.enqueueAndForget(async()=>kS(await Ik(e),s))}}(eA(o),c,s,a)}function gN(e,t){return function(e,t){const n=new ck(t);return e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.K_.add(t),t.next()}(await Ik(e),n)),()=>{n.La(),e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.K_.delete(t)}(await Ik(e),n))}}(eA(e=xk(e,Zk)),Kk(t)?t:{next:t})}function mN(e,t){return function(e,t){const n=new Ky;return e.asyncQueue.enqueueAndForget(async()=>BS(await bk(e),t,n)),n.promise}(eA(e),t)}function vN(e,t,n){var r=n.docs.get(t._key),i=new lN(e);return new sN(e,i,t._key,r,new iN(n.hasPendingWrites,n.fromCache),t.converter)}const _N={maxAttempts:5};class yN{constructor(e,t){this._firestore=e,this._commitHandler=t,this._mutations=[],this._committed=!1,this._dataReader=_A(e)}set(e,t,n){this._verifyNotCommitted();const r=wN(e,this._firestore),i=nN(r.converter,t,n),s=yA(this._dataReader,"WriteBatch.set",r._key,i,null!==r.converter,n);return this._mutations.push(s.toMutation(r._key,gT.none())),this}update(e,t,n,...r){this._verifyNotCommitted();var i=wN(e,this._firestore);let s;return s="string"==typeof(t=ce(t))||t instanceof lA?kA(this._dataReader,"WriteBatch.update",i._key,t,n,r):SA(this._dataReader,"WriteBatch.update",i._key,t),this._mutations.push(s.toMutation(i._key,gT.exists(!0))),this}delete(e){this._verifyNotCommitted();var t=wN(e,this._firestore);return this._mutations=this._mutations.concat(new kT(t._key,gT.none())),this}commit(){return this._verifyNotCommitted(),this._committed=!0,0<this._mutations.length?this._commitHandler(this._mutations):Promise.resolve()}_verifyNotCommitted(){if(this._committed)throw new $y(zy.FAILED_PRECONDITION,"A write batch can no longer be used after commit() has been called.")}}function wN(e,t){if((e=ce(e)).firestore!==t)throw new $y(zy.INVALID_ARGUMENT,"Provided document reference is from a different Firestore instance.");return e}class bN extends class{constructor(e,t){this._firestore=e,this._transaction=t,this._dataReader=_A(e)}get(e){const n=wN(e,this._firestore),r=new rN(this._firestore);return this._transaction.lookup([n._key]).then(e=>{if(!e||1!==e.length)return By();const t=e[0];if(t.isFoundDocument())return new UA(this._firestore,r,t.key,t,n.converter);if(t.isNoDocument())return new UA(this._firestore,r,n._key,null,n.converter);throw By()})}set(e,t,n){var r=wN(e,this._firestore),i=nN(r.converter,t,n),i=yA(this._dataReader,"Transaction.set",r._key,i,null!==r.converter,n);return this._transaction.set(r._key,i),this}update(e,t,n,...r){var i=wN(e,this._firestore),s="string"==typeof(t=ce(t))||t instanceof lA?kA(this._dataReader,"Transaction.update",i._key,t,n,r):SA(this._dataReader,"Transaction.update",i._key,t);return this._transaction.update(i._key,s),this}delete(e){var t=wN(e,this._firestore);return this._transaction.delete(t._key),this}}{constructor(e,t){super(e,t),this._firestore=e}get(e){const t=wN(e,this._firestore),n=new lN(this._firestore);return super.get(e).then(e=>new sN(this._firestore,n,t._key,e._document,new iN(!1,!1),t.converter))}}function IN(t,n,e){t=xk(t,Zk);var r=Object.assign(Object.assign({},_N),e);return function(e){if(e.maxAttempts<1)throw new $y(zy.INVALID_ARGUMENT,"Max attempts must be at least 1")}(r),function(t,n,r){const i=new Ky;return t.asyncQueue.enqueueAndForget(async()=>{var e=await vk(t).then(e=>e.datastore);new hk(t.asyncQueue,e,r,n,i).ja()}),i.promise}(eA(t),e=>n(new bN(t,e)),r)}Gk=!0,Hk=Xe,Oy=Hk,He(new le("firestore",(e,{instanceIdentifier:t,options:n})=>{const r=e.getProvider("app").getImmediate(),i=new Zk(new Qy(e.getProvider("auth-internal")),new Zy(e.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new $y(zy.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new xb(e.options.projectId,t)}(r,t),r);return n=Object.assign({useFetchStreams:Gk},n),i._setSettings(n),i},"PUBLIC").setMultipleInstances(!0)),nt(Dy,"4.4.2",lR),nt(Dy,"4.4.2","esm2017");function TN(e,t){if(void 0===t)return{merge:!1};if(void 0!==t.mergeFields&&void 0!==t.merge)throw new $y("invalid-argument",`Invalid options passed to function ${e}(): You cannot `+'specify both "merge" and "mergeFields".');return t}function EN(){if("undefined"==typeof Uint8Array)throw new $y("unimplemented","Uint8Arrays are not available in this environment.")}function CN(){if("undefined"==typeof atob)throw new $y("unimplemented","Blobs are unavailable in Firestore in this environment.")}class SN{constructor(e){this._delegate=e}static fromBase64String(e){return CN(),new SN(cA.fromBase64String(e))}static fromUint8Array(e){return EN(),new SN(cA.fromUint8Array(e))}toBase64(){return CN(),this._delegate.toBase64()}toUint8Array(){return EN(),this._delegate.toUint8Array()}isEqual(e){return this._delegate.isEqual(e._delegate)}toString(){return"Blob(base64: "+this.toBase64()+")"}}function kN(e){return function(e,t){if("object"!=typeof e||null===e)return;var n=e;for(const r of t)if(r in n&&"function"==typeof n[r])return 1;return}(e,["next","error","complete"])}class AN{enableIndexedDbPersistence(e,t){return function(e,t){oA(e=xk(e,Zk));var n=eA(e);if(n._uninitializedComponentsProvider)throw new $y(zy.FAILED_PRECONDITION,"SDK cache is already specified.");Vy("enableIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.");var r=e._freezeSettings(),i=new ak;return nA(n,i,new ik(i,r.cacheSizeBytes,null==t?void 0:t.forceOwnership))}(e._delegate,{forceOwnership:t})}enableMultiTabIndexedDbPersistence(e){return function(e){oA(e=xk(e,Zk));var t=eA(e);if(t._uninitializedComponentsProvider)throw new $y(zy.FAILED_PRECONDITION,"SDK cache is already specified.");Vy("enableMultiTabIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.");var n=e._freezeSettings(),r=new ak;return nA(t,r,new sk(r,n.cacheSizeBytes))}(e._delegate)}clearIndexedDbPersistence(e){return function(e){if(e._initialized&&!e._terminated)throw new $y(zy.FAILED_PRECONDITION,"Persistence can only be cleared before a Firestore instance is initialized or after it is terminated.");const t=new Ky;return e._queue.enqueueAndForgetEvenWhileRestricted(async()=>{try{await async function(e){if(!Cw.D())return Promise.resolve();var t=e+"main";await Cw.delete(t)}(lC(e._databaseId,e._persistenceKey)),t.resolve()}catch(e){t.reject(e)}}),t.promise}(e._delegate)}}class NN{constructor(e,t,n){this._delegate=t,this._persistenceProvider=n,this.INTERNAL={delete:()=>this.terminate()},e instanceof xb||(this._appCompat=e)}get _databaseId(){return this._delegate._databaseId}settings(e){var t=this._delegate._getSettings();e.merge||t.host===e.host||Vy("You are overriding the original host. If you did not intend to override your settings, use {merge: true}."),e.merge&&delete(e=Object.assign(Object.assign({},t),e)).merge,this._delegate._setSettings(e)}useEmulator(e,t,n={}){!function(n,e,t,r={}){var i;const s=(n=xk(n,Lk))._getSettings(),a=`${e}:${t}`;if("firestore.googleapis.com"!==s.host&&s.host!==a&&Vy("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."),n._setSettings(Object.assign(Object.assign({},s),{host:a,ssl:!1})),r.mockUserToken){let e,t;if("string"==typeof r.mockUserToken)e=r.mockUserToken,t=xy.MOCK_USER;else{e=w(r.mockUserToken,null===(i=n._app)||void 0===i?void 0:i.options.projectId);const s=r.mockUserToken.sub||r.mockUserToken.user_id;if(!s)throw new $y(zy.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");t=new xy(s)}n._authCredentials=new Hy(new Wy(e,t))}}(this._delegate,e,t,n)}enableNetwork(){return iA(this._delegate)}disableNetwork(){return sA(this._delegate)}enablePersistence(e){let t=!1,n=!1;return e&&(t=!!e.synchronizeTabs,n=!!e.experimentalForceOwningTab,Nk("synchronizeTabs",t,"experimentalForceOwningTab",n)),t?this._persistenceProvider.enableMultiTabIndexedDbPersistence(this):this._persistenceProvider.enableIndexedDbPersistence(this,n)}clearPersistence(){return this._persistenceProvider.clearIndexedDbPersistence(this)}terminate(){return this._appCompat&&(this._appCompat._removeServiceInstance("firestore-compat"),this._appCompat._removeServiceInstance("firestore")),this._delegate._delete()}waitForPendingWrites(){return rA(this._delegate)}onSnapshotsInSync(e){return gN(this._delegate,e)}get app(){if(!this._appCompat)throw new $y("failed-precondition","Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._appCompat}collection(e){try{return new zN(this,qk(this._delegate,e))}catch(e){throw MN(e,"collection()","Firestore.collection()")}}doc(e){try{return new ON(this,Bk(this._delegate,e))}catch(e){throw MN(e,"doc()","Firestore.doc()")}}collectionGroup(e){try{return new qN(this,function(e,t){if(e=xk(e,Lk),Ak("collectionGroup","collection id",t),0<=t.indexOf("/"))throw new $y(zy.INVALID_ARGUMENT,`Invalid collection ID '${t}' passed to function collectionGroup(). Collection IDs must not contain '/'.`);return new Fk(e,null,(t=t,new NI(ow.emptyPath(),t)))}(this._delegate,e))}catch(e){throw MN(e,"collectionGroup()","Firestore.collectionGroup()")}}runTransaction(t){return IN(this._delegate,e=>t(new PN(this,e)))}batch(){return eA(this._delegate),new DN(new yN(this._delegate,e=>mN(this._delegate,e)))}loadBundle(e){return t=this._delegate,e=e,n=eA(t=xk(t,Zk)),r=new Wk,Ck(n,t._databaseId,e,r),r;var t,n,r}namedQuery(e){return aA(this._delegate,e).then(e=>e?new qN(this,e):null)}}class RN extends tN{constructor(e){super(),this.firestore=e}convertBytes(e){return new SN(new cA(e))}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return ON.forKey(t,this.firestore,null)}}class PN{constructor(e,t){this._firestore=e,this._delegate=t,this._userDataWriter=new RN(e)}get(e){const t=$N(e);return this._delegate.get(t).then(e=>new UN(this._firestore,new sN(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,t.converter)))}set(e,t,n){var r=$N(e);return n?(TN("Transaction.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=$N(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=$N(e);return this._delegate.delete(t),this}}class DN{constructor(e){this._delegate=e}set(e,t,n){var r=$N(e);return n?(TN("WriteBatch.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=$N(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=$N(e);return this._delegate.delete(t),this}commit(){return this._delegate.commit()}}class xN{constructor(e,t,n){this._firestore=e,this._userDataWriter=t,this._delegate=n}fromFirestore(e,t){var n=new aN(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,null);return this._delegate.fromFirestore(new VN(this._firestore,n),null!=t?t:{})}toFirestore(e,t){return t?this._delegate.toFirestore(e,t):this._delegate.toFirestore(e)}static getInstance(e,t){const n=xN.INSTANCES;let r=n.get(e);r||(r=new WeakMap,n.set(e,r));let i=r.get(t);return i||(i=new xN(e,new RN(e),t),r.set(t,i)),i}}xN.INSTANCES=new WeakMap;class ON{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new RN(e)}static forPath(e,t,n){if(e.length%2!=0)throw new $y("invalid-argument","Invalid document reference. Document references must have an even number of segments, but "+`${e.canonicalString()} has ${e.length}`);return new ON(t,new Uk(t._delegate,n,new uw(e)))}static forKey(e,t,n){return new ON(t,new Uk(t._delegate,n,e))}get id(){return this._delegate.id}get parent(){return new zN(this.firestore,this._delegate.parent)}get path(){return this._delegate.path}collection(e){try{return new zN(this.firestore,qk(this._delegate,e))}catch(e){throw MN(e,"collection()","DocumentReference.collection()")}}isEqual(e){return(e=ce(e))instanceof Uk&&jk(this._delegate,e)}set(e,t){t=TN("DocumentReference.set",t);try{return t?dN(this._delegate,e,t):dN(this._delegate,e)}catch(e){throw MN(e,"setDoc()","DocumentReference.set()")}}update(e,t,...n){try{return 1===arguments.length?pN(this._delegate,e):pN(this._delegate,e,t,...n)}catch(e){throw MN(e,"updateDoc()","DocumentReference.update()")}}delete(){return mN(xk((e=this._delegate).firestore,Zk),[new kT(e._key,gT.none())]);var e}onSnapshot(...e){var t=LN(e),n=FN(e,e=>new UN(this.firestore,new sN(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)));return fN(this._delegate,t,n)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?uN:"server"===(null==e?void 0:e.source)?function(t){t=xk(t,Uk);const n=xk(t.firestore,Zk);return Tk(eA(n),t._key,{source:"server"}).then(e=>vN(n,t,e))}:function(t){t=xk(t,Uk);const n=xk(t.firestore,Zk);return Tk(eA(n),t._key).then(e=>vN(n,t,e))})(this._delegate),t.then(e=>new UN(this.firestore,new sN(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)))}withConverter(e){return new ON(this.firestore,e?this._delegate.withConverter(xN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function MN(e,t,n){return e.message=e.message.replace(t,n),e}function LN(e){for(const t of e)if("object"==typeof t&&!kN(t))return t;return{}}function FN(e,t){var n;let r;return r=kN(e[0])?e[0]:kN(e[1])?e[1]:"function"==typeof e[0]?{next:e[0],error:e[1],complete:e[2]}:{next:e[1],error:e[2],complete:e[3]},{next:e=>{r.next&&r.next(t(e))},error:null===(n=r.error)||void 0===n?void 0:n.bind(r),complete:null===(n=r.complete)||void 0===n?void 0:n.bind(r)}}class UN{constructor(e,t){this._firestore=e,this._delegate=t}get ref(){return new ON(this._firestore,this._delegate.ref)}get id(){return this._delegate.id}get metadata(){return this._delegate.metadata}get exists(){return this._delegate.exists()}data(e){return this._delegate.data(e)}get(e,t){return this._delegate.get(e,t)}isEqual(e){return cN(this._delegate,e._delegate)}}class VN extends UN{data(e){var t=this._delegate.data(e);return this._delegate._converter||void 0!==t||By(),t}}class qN{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new RN(e)}where(e,t,n){try{return new qN(this.firestore,$A(this._delegate,(r=n,i=t,s=qA("where",e),KA._create(s,i,r))))}catch(e){throw MN(e,/(orderBy|where)\(\)/,"Query.$1()")}var r,i,s}orderBy(e,t){try{return new qN(this.firestore,$A(this._delegate,([n,r="asc"]=[e,t],i=r,s=qA("orderBy",n),GA._create(s,i))))}catch(e){throw MN(e,/(orderBy|where)\(\)/,"Query.$1()")}var n,r,i,s}limit(e){try{return new qN(this.firestore,$A(this._delegate,(Ok("limit",t=e),HA._create("limit",t,"F"))))}catch(e){throw MN(e,"limit()","Query.limit()")}var t}limitToLast(e){try{return new qN(this.firestore,$A(this._delegate,(Ok("limitToLast",t=e),HA._create("limitToLast",t,"L"))))}catch(e){throw MN(e,"limitToLast()","Query.limitToLast()")}var t}startAt(...e){try{return new qN(this.firestore,$A(this._delegate,function(...e){return QA._create("startAt",e,!0)}(...e)))}catch(e){throw MN(e,"startAt()","Query.startAt()")}}startAfter(...e){try{return new qN(this.firestore,$A(this._delegate,function(...e){return QA._create("startAfter",e,!1)}(...e)))}catch(e){throw MN(e,"startAfter()","Query.startAfter()")}}endBefore(...e){try{return new qN(this.firestore,$A(this._delegate,function(...e){return YA._create("endBefore",e,!1)}(...e)))}catch(e){throw MN(e,"endBefore()","Query.endBefore()")}}endAt(...e){try{return new qN(this.firestore,$A(this._delegate,function(...e){return YA._create("endAt",e,!0)}(...e)))}catch(e){throw MN(e,"endAt()","Query.endAt()")}}isEqual(e){return zk(this._delegate,e._delegate)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?hN:"server"===(null==e?void 0:e.source)?function(t){t=xk(t,Fk);const n=xk(t.firestore,Zk),e=eA(n),r=new lN(n);return Ek(e,t._query,{source:"server"}).then(e=>new oN(n,r,t,e))}:function(t){t=xk(t,Fk);const n=xk(t.firestore,Zk),e=eA(n),r=new lN(n);return BA(t._query),Ek(e,t._query).then(e=>new oN(n,r,t,e))})(this._delegate),t.then(e=>new jN(this.firestore,new oN(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)))}onSnapshot(...e){var t=LN(e),n=FN(e,e=>new jN(this.firestore,new oN(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)));return fN(this._delegate,t,n)}withConverter(e){return new qN(this.firestore,e?this._delegate.withConverter(xN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}class BN{constructor(e,t){this._firestore=e,this._delegate=t}get type(){return this._delegate.type}get doc(){return new VN(this._firestore,this._delegate.doc)}get oldIndex(){return this._delegate.oldIndex}get newIndex(){return this._delegate.newIndex}}class jN{constructor(e,t){this._firestore=e,this._delegate=t}get query(){return new qN(this._firestore,this._delegate.query)}get metadata(){return this._delegate.metadata}get size(){return this._delegate.size}get empty(){return this._delegate.empty}get docs(){return this._delegate.docs.map(e=>new VN(this._firestore,e))}docChanges(e){return this._delegate.docChanges(e).map(e=>new BN(this._firestore,e))}forEach(t,n){this._delegate.forEach(e=>{t.call(n,new VN(this._firestore,e))})}isEqual(e){return cN(this._delegate,e._delegate)}}class zN extends qN{constructor(e,t){super(e,t),this.firestore=e,this._delegate=t}get id(){return this._delegate.id}get path(){return this._delegate.path}get parent(){var e=this._delegate.parent;return e?new ON(this.firestore,e):null}doc(e){try{return void 0===e?new ON(this.firestore,Bk(this._delegate)):new ON(this.firestore,Bk(this._delegate,e))}catch(e){throw MN(e,"doc()","CollectionReference.doc()")}}add(e){return function(e,t){const n=xk(e.firestore,Zk),r=Bk(e),i=nN(e.converter,t);return mN(n,[yA(_A(e.firestore),"addDoc",r._key,i,null!==e.converter,{}).toMutation(r._key,gT.exists(!1))]).then(()=>r)}(this._delegate,e).then(e=>new ON(this.firestore,e))}isEqual(e){return jk(this._delegate,e._delegate)}withConverter(e){return new zN(this.firestore,e?this._delegate.withConverter(xN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function $N(e){return xk(e,Uk)}const KN={Firestore:NN,GeoPoint:hA,Timestamp:iw,Blob:SN,Transaction:PN,WriteBatch:DN,DocumentReference:ON,DocumentSnapshot:UN,Query:qN,QueryDocumentSnapshot:VN,QuerySnapshot:jN,CollectionReference:zN,FieldPath:class eO{constructor(...e){this._delegate=new lA(...e)}static documentId(){return new eO(lw.keyField().canonicalString())}isEqual(e){return(e=ce(e))instanceof lA&&this._delegate._internalPath.isEqual(e._internalPath)}},FieldValue:class tO{constructor(e){this._delegate=e}static serverTimestamp(){const e=new IA("serverTimestamp");return e._methodName="FieldValue.serverTimestamp",new tO(e)}static delete(){const e=new wA("deleteField");return e._methodName="FieldValue.delete",new tO(e)}static arrayUnion(...e){const t=function(...e){return new TA("arrayUnion",e)}(...e);return t._methodName="FieldValue.arrayUnion",new tO(t)}static arrayRemove(...e){const t=function(...e){return new EA("arrayRemove",e)}(...e);return t._methodName="FieldValue.arrayRemove",new tO(t)}static increment(e){const t=new CA("increment",e);return t._methodName="FieldValue.increment",new tO(t)}isEqual(e){return this._delegate.isEqual(e._delegate)}},setLogLevel:function(e){e=e,My.setLogLevel(e)},CACHE_SIZE_UNLIMITED:-1};Qk=It,Yk=(e,t)=>new NN(e,t,new AN),Qk.INTERNAL.registerComponent(new le("firestore-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("firestore").getImmediate();return Yk(t,n)},"PUBLIC").setServiceProps(Object.assign({},KN))),Qk.registerVersion("@firebase/firestore-compat","0.3.25");const WN="type.googleapis.com/google.protobuf.Int64Value",GN="type.googleapis.com/google.protobuf.UInt64Value";function HN(e,t){const n={};for(const r in e)e.hasOwnProperty(r)&&(n[r]=t(e[r]));return n}function QN(e){if(null==e)return e;if(e["@type"])switch(e["@type"]){case WN:case GN:var t=Number(e.value);if(isNaN(t))throw new Error("Data cannot be decoded from JSON: "+e);return t;default:throw new Error("Data cannot be decoded from JSON: "+e)}return Array.isArray(e)?e.map(e=>QN(e)):"function"==typeof e||"object"==typeof e?HN(e,e=>QN(e)):e}const YN="functions",JN={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class XN extends D{constructor(e,t,n){super(`${YN}/${e}`,t||""),this.details=n}}function ZN(e,t){let n=function(e){if(200<=e&&e<300)return"ok";switch(e){case 0:return"internal";case 400:return"invalid-argument";case 401:return"unauthenticated";case 403:return"permission-denied";case 404:return"not-found";case 409:return"aborted";case 429:return"resource-exhausted";case 499:return"cancelled";case 500:return"internal";case 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline-exceeded"}return"unknown"}(e),r=n,i=void 0;try{var s=t&&t.error;if(s){const e=s.status;if("string"==typeof e){if(!JN[e])return new XN("internal","internal");n=JN[e],r=e}var a=s.message;"string"==typeof a&&(r=a),i=s.details,void 0!==i&&(i=QN(i))}}catch(e){}return"ok"===n?null:new XN(n,r,i)}class eR{constructor(e,t,n){this.auth=null,this.messaging=null,this.appCheck=null,this.auth=e.getImmediate({optional:!0}),this.messaging=t.getImmediate({optional:!0}),this.auth||e.get().then(e=>this.auth=e,()=>{}),this.messaging||t.get().then(e=>this.messaging=e,()=>{}),this.appCheck||n.get().then(e=>this.appCheck=e,()=>{})}async getAuthToken(){if(this.auth)try{var e=await this.auth.getToken();return null==e?void 0:e.accessToken}catch(e){return}}async getMessagingToken(){if(this.messaging&&"Notification"in self&&"granted"===Notification.permission)try{return this.messaging.getToken()}catch(e){return}}async getAppCheckToken(e){if(this.appCheck){var t=e?await this.appCheck.getLimitedUseToken():await this.appCheck.getToken();return t.error?null:t.token}return null}async getContext(e){return{authToken:await this.getAuthToken(),messagingToken:await this.getMessagingToken(),appCheckToken:await this.getAppCheckToken(e)}}}const tR="us-central1";class nR{constructor(e,t,n,r,i=tR,s){this.app=e,this.fetchImpl=s,this.emulatorOrigin=null,this.contextProvider=new eR(t,n,r),this.cancelAllRequests=new Promise(e=>{this.deleteService=()=>Promise.resolve(e())});try{var a=new URL(i);this.customDomain=a.origin,this.region=tR}catch(e){this.customDomain=null,this.region=i}}_delete(){return this.deleteService()}_url(e){var t=this.app.options.projectId;return null===this.emulatorOrigin?null!==this.customDomain?`${this.customDomain}/${e}`:`https://${this.region}-${t}.cloudfunctions.net/${e}`:`${this.emulatorOrigin}/${t}/${this.region}/${e}`}}function rR(i,s,a){return e=>{return t=e,n=a||{},r=(e=i)._url(s),iR(e,r,t,n);var t,n,r}}async function iR(e,t,n,r){var i={data:n=function t(e){if(null==e)return null;if("number"==typeof(e=e instanceof Number?e.valueOf():e)&&isFinite(e))return e;if(!0===e||!1===e)return e;if("[object String]"===Object.prototype.toString.call(e))return e;if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(e=>t(e));if("function"==typeof e||"object"==typeof e)return HN(e,e=>t(e));throw new Error("Data cannot be encoded in JSON: "+e)}(n)};const s={};var a=await e.contextProvider.getContext(r.limitedUseAppCheckTokens);a.authToken&&(s.Authorization="Bearer "+a.authToken),a.messagingToken&&(s["Firebase-Instance-ID-Token"]=a.messagingToken),null!==a.appCheckToken&&(s["X-Firebase-AppCheck"]=a.appCheckToken);const o=function(n){let r=null;return{promise:new Promise((e,t)=>{r=setTimeout(()=>{t(new XN("deadline-exceeded","deadline-exceeded"))},n)}),cancel:()=>{r&&clearTimeout(r)}}}(r.timeout||7e4);a=await Promise.race([async function(e,t,n,r){n["Content-Type"]="application/json";let i;try{i=await r(e,{method:"POST",body:JSON.stringify(t),headers:n})}catch(e){return{status:0,json:null}}let s=null;try{s=await i.json()}catch(e){}return{status:i.status,json:s}}(t,i,s,e.fetchImpl),o.promise,e.cancelAllRequests]);if(o.cancel(),!a)throw new XN("cancelled","Firebase Functions instance was deleted.");i=ZN(a.status,a.json);if(i)throw i;if(!a.json)throw new XN("internal","Response is not valid JSON object.");let c=a.json.data;if(void 0===c&&(c=a.json.result),void 0===c)throw new XN("internal","Response is missing data field.");return{data:QN(c)}}const sR="@firebase/functions";function aR(e,t,n){ce(e).emulatorOrigin=`http://${t}:${n}`}function oR(e,t,n){return r=ce(e),i=t,s=n,e=>iR(r,i,e,s||{});var r,i,s}Jk=fetch.bind(self),He(new le(YN,(e,{instanceIdentifier:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("messaging-internal"),s=e.getProvider("app-check-internal");return new nR(n,r,i,s,t,Jk)},"PUBLIC").setMultipleInstances(!0)),nt(sR,"0.11.1",Xk),nt(sR,"0.11.1","esm2017");var cR,lR,uR,hR,dR;class pR{constructor(e,t){this.app=e,this._delegate=t,this._region=this._delegate.region,this._customDomain=this._delegate.customDomain}httpsCallable(e,t){return rR(ce(this._delegate),e,t)}httpsCallableFromURL(e,t){return oR(this._delegate,e,t)}useFunctionsEmulator(e){var t=e.match("[a-zA-Z]+://([a-zA-Z0-9.-]+)(?::([0-9]+))?");if(null==t)throw new D("functions","No origin provided to useFunctionsEmulator()");if(null==t[2])throw new D("functions","Port missing in origin provided to useFunctionsEmulator()");return aR(this._delegate,t[1],Number(t[2]))}useEmulator(e,t){return aR(this._delegate,e,t)}}const fR="us-central1",gR=(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("functions").getImmediate({identifier:null!=t?t:fR});return new pR(n,r)};cR={Functions:pR},It.INTERNAL.registerComponent(new le("functions-compat",gR,"PUBLIC").setServiceProps(cR).setMultipleInstances(!0)),It.registerVersion("@firebase/functions-compat","0.3.7");const mR="/firebase-messaging-sw.js",vR="/firebase-cloud-messaging-push-scope",_R="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",yR="https://fcmregistrations.googleapis.com/v1",wR="google.c.a.c_id",bR="google.c.a.e";function IR(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(lR=Lx=Lx||{})[lR.DATA_MESSAGE=1]="DATA_MESSAGE",lR[lR.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(cl=uR=uR||{}).PUSH_RECEIVED="push-received",cl.NOTIFICATION_CLICKED="notification-clicked";const TR="fcm_token_details_db",ER="fcm_token_object_Store";async function CR(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(TR))return null}let l=null;const e=await De(TR,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(ER)){const o=r.objectStore(ER);var s,a=await o.index("fcmSenderId").get(c);await o.clear(),a&&(2===t?(s=a).auth&&s.p256dh&&s.endpoint&&(l={token:s.fcmToken,createTime:null!==(i=s.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:s.auth,p256dh:s.p256dh,endpoint:s.endpoint,swScope:s.swScope,vapidKey:"string"==typeof s.vapidKey?s.vapidKey:IR(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:IR(s.auth),p256dh:IR(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:IR(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:IR(a.auth),p256dh:IR(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:IR(a.vapidKey)}}))}}});return e.close(),await xe(TR),await xe("fcm_vapid_details_db"),await xe("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;var t=e["subscriptionOptions"];return"number"==typeof e.createTime&&0<e.createTime&&"string"==typeof e.token&&0<e.token.length&&"string"==typeof t.auth&&0<t.auth.length&&"string"==typeof t.p256dh&&0<t.p256dh.length&&"string"==typeof t.endpoint&&0<t.endpoint.length&&"string"==typeof t.swScope&&0<t.swScope.length&&"string"==typeof t.vapidKey&&0<t.vapidKey.length}(l)?l:null}const SR="firebase-messaging-database",kR=1,AR="firebase-messaging-store";let NR=null;function RR(){return NR=NR||De(SR,kR,{upgrade:(e,t)=>{0===t&&e.createObjectStore(AR)}}),NR}async function PR(e){var t=xR(e);const n=await RR();t=await n.transaction(AR).objectStore(AR).get(t);if(t)return t;t=await CR(e.appConfig.senderId);return t?(await DR(e,t),t):void 0}async function DR(e,t){var n=xR(e);const r=await RR(),i=r.transaction(AR,"readwrite");return await i.objectStore(AR).put(t,n),await i.done,t}function xR({appConfig:e}){return e.appId}const OR=new x("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function MR(e,t){var n={method:"DELETE",headers:await FR(e)};try{const s=await fetch(`${LR(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw OR.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw OR.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function LR({projectId:e}){return`${yR}/projects/${e}/registrations`}async function FR({appConfig:e,installations:t}){var n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function UR({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==_R&&(i.web.applicationPubKey=r),i}const VR=6048e5;async function qR(e){const t=await async function(e,t){var n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const n=atob(t),r=new Uint8Array(n.length);for(let i=0;i<n.length;++i)r[i]=n.charCodeAt(i);return r}(t)})}(e.swRegistration,e.vapidKey);var n,r,i,s,a,o={vapidKey:e.vapidKey,swScope:e.swRegistration.scope,endpoint:t.endpoint,auth:IR(t.getKey("auth")),p256dh:IR(t.getKey("p256dh"))},c=await PR(e.firebaseDependencies);if(c){if(n=c.subscriptionOptions,r=o.vapidKey===n.vapidKey,i=o.endpoint===n.endpoint,s=o.auth===n.auth,a=o.p256dh===n.p256dh,r&&i&&s&&a)return Date.now()>=c.createTime+VR?async function(t,e){try{var n=await async function(e,t){var n=await FR(e),r=UR(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${LR(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw OR.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw OR.create("token-update-failed",{errorInfo:r})}if(!i.token)throw OR.create("token-update-no-token");return i.token}(t.firebaseDependencies,e),r=Object.assign(Object.assign({},e),{token:n,createTime:Date.now()});return await DR(t.firebaseDependencies,r),n}catch(e){throw await BR(t),e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await MR(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return jR(e.firebaseDependencies,o)}return jR(e.firebaseDependencies,o)}async function BR(e){var t=await PR(e.firebaseDependencies);t&&(await MR(e.firebaseDependencies,t.token),await async function(e){var t=xR(e);const n=await RR(),r=n.transaction(AR,"readwrite");await r.objectStore(AR).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function jR(e,t){var n={token:await async function(e,t){var n=await FR(e),r=UR(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(LR(e.appConfig),r);i=await s.json()}catch(e){throw OR.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw OR.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw OR.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await DR(e,n),n.token}function zR(e){var t,n,r,i,s,a={from:e.from,collapseKey:e.collapse_key,messageId:e.fcmMessageId};return r=a,(n=e).notification&&(r.notification={},(t=n.notification.title)&&(r.notification.title=t),(t=n.notification.body)&&(r.notification.body=t),(t=n.notification.image)&&(r.notification.image=t),(t=n.notification.icon)&&(r.notification.icon=t)),n=a,(r=e).data&&(n.data=r.data),r=a,((e=e).fcmOptions||null!==(i=e.notification)&&void 0!==i&&i.click_action)&&(r.fcmOptions={},(s=null!==(i=null===(i=e.fcmOptions)||void 0===i?void 0:i.link)&&void 0!==i?i:null===(s=e.notification)||void 0===s?void 0:s.click_action)&&(r.fcmOptions.link=s),(s=null===(s=e.fcmOptions)||void 0===s?void 0:s.analytics_label)&&(r.fcmOptions.analyticsLabel=s)),a}function $R(e,t){const n=[];for(let r=0;r<e.length;r++)n.push(e.charAt(r)),r<t.length&&n.push(t.charAt(r));return n.join("")}function KR(e){return OR.create("missing-app-config-values",{valueName:e})}$R("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),$R("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class WR{constructor(e,t,n){this.deliveryMetricsExportedToBigQueryEnabled=!1,this.onBackgroundMessageHandler=null,this.onMessageHandler=null,this.logEvents=[],this.isLogServiceStarted=!1;var r=function(e){if(!e||!e.options)throw KR("App Configuration Object");if(!e.name)throw KR("App Name");var t=e["options"];for(const n of["projectId","apiKey","appId","messagingSenderId"])if(!t[n])throw KR(n);return{appName:e.name,projectId:t.projectId,apiKey:t.apiKey,appId:t.appId,senderId:t.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:r,installations:t,analyticsProvider:n}}_delete(){return Promise.resolve()}}async function GR(e){try{e.swRegistration=await navigator.serviceWorker.register(mR,{scope:vR}),e.swRegistration.update().catch(()=>{})}catch(e){throw OR.create("failed-service-worker-registration",{browserErrorMessage:null==e?void 0:e.message})}}async function HR(e,t){if(!navigator)throw OR.create("only-available-in-window");if("default"===Notification.permission&&await Notification.requestPermission(),"granted"!==Notification.permission)throw OR.create("permission-blocked");var n,r;return n=e,await((r=null==t?void 0:t.vapidKey)?n.vapidKey=r:n.vapidKey||(n.vapidKey=_R)),await async function(e,t){if(t||e.swRegistration||await GR(e),t||!e.swRegistration){if(!(t instanceof ServiceWorkerRegistration))throw OR.create("invalid-sw-registration");e.swRegistration=t}}(e,null==t?void 0:t.serviceWorkerRegistration),qR(e)}async function QR(e,t,n){var r=function(e){switch(e){case uR.NOTIFICATION_CLICKED:return"notification_open";case uR.PUSH_RECEIVED:return"notification_foreground";default:throw new Error}}(t);const i=await e.firebaseDependencies.analyticsProvider.get();i.logEvent(r,{message_id:n[wR],message_name:n["google.c.a.c_l"],message_time:n["google.c.a.ts"],message_device_time:Math.floor(Date.now()/1e3)})}async function YR(e,t){var n,r=t.data;r.isFirebaseMessaging&&(e.onMessageHandler&&r.messageType===uR.PUSH_RECEIVED&&("function"==typeof e.onMessageHandler?e.onMessageHandler(zR(r)):e.onMessageHandler.next(zR(r))),n=r.data,"object"==typeof(t=n)&&t&&wR in t&&"1"===n[bR]&&await QR(e,r.messageType,n))}const JR="@firebase/messaging",XR=e=>{const t=new WR(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return navigator.serviceWorker.addEventListener("message",e=>YR(t,e)),t},ZR=e=>{const t=e.getProvider("messaging").getImmediate();return{getToken:e=>HR(t,e)}};function eP(e){return async function(e){if(!navigator)throw OR.create("only-available-in-window");return e.swRegistration||await GR(e),BR(e)}(e=ce(e))}function tP(e,t){return function(e,t){if(!navigator)throw OR.create("only-available-in-window");return e.onMessageHandler=t,()=>{e.onMessageHandler=null}}(e=ce(e),t)}He(new le("messaging",XR,"PUBLIC")),He(new le("messaging-internal",ZR,"PRIVATE")),nt(JR,"0.12.6"),nt(JR,"0.12.6","esm2017");const nP="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",rP="https://fcmregistrations.googleapis.com/v1",iP="FCM_MSG",sP="google.c.a.c_id",aP=3,oP=1;function cP(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(cl=hR=hR||{})[cl.DATA_MESSAGE=1]="DATA_MESSAGE",cl[cl.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(cl=dR=dR||{}).PUSH_RECEIVED="push-received",cl.NOTIFICATION_CLICKED="notification-clicked";const lP="fcm_token_details_db",uP="fcm_token_object_Store";async function hP(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(lP))return null}let l=null;const e=await De(lP,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(uP)){const o=r.objectStore(uP);var s,a=await o.index("fcmSenderId").get(c);await o.clear(),a&&(2===t?(s=a).auth&&s.p256dh&&s.endpoint&&(l={token:s.fcmToken,createTime:null!==(i=s.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:s.auth,p256dh:s.p256dh,endpoint:s.endpoint,swScope:s.swScope,vapidKey:"string"==typeof s.vapidKey?s.vapidKey:cP(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:cP(s.auth),p256dh:cP(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:cP(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:cP(a.auth),p256dh:cP(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:cP(a.vapidKey)}}))}}});return e.close(),await xe(lP),await xe("fcm_vapid_details_db"),await xe("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;var t=e["subscriptionOptions"];return"number"==typeof e.createTime&&0<e.createTime&&"string"==typeof e.token&&0<e.token.length&&"string"==typeof t.auth&&0<t.auth.length&&"string"==typeof t.p256dh&&0<t.p256dh.length&&"string"==typeof t.endpoint&&0<t.endpoint.length&&"string"==typeof t.swScope&&0<t.swScope.length&&"string"==typeof t.vapidKey&&0<t.vapidKey.length}(l)?l:null}const dP="firebase-messaging-database",pP=1,fP="firebase-messaging-store";let gP=null;function mP(){return gP=gP||De(dP,pP,{upgrade:(e,t)=>{0===t&&e.createObjectStore(fP)}}),gP}async function vP(e){var t=yP(e);const n=await mP();t=await n.transaction(fP).objectStore(fP).get(t);if(t)return t;t=await hP(e.appConfig.senderId);return t?(await _P(e,t),t):void 0}async function _P(e,t){var n=yP(e);const r=await mP(),i=r.transaction(fP,"readwrite");return await i.objectStore(fP).put(t,n),await i.done,t}function yP({appConfig:e}){return e.appId}const wP=new x("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function bP(e,t){var n={method:"DELETE",headers:await TP(e)};try{const s=await fetch(`${IP(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw wP.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw wP.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function IP({projectId:e}){return`${rP}/projects/${e}/registrations`}async function TP({appConfig:e,installations:t}){var n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function EP({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==nP&&(i.web.applicationPubKey=r),i}async function CP(e){const t=await async function(e,t){var n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const n=atob(t),r=new Uint8Array(n.length);for(let i=0;i<n.length;++i)r[i]=n.charCodeAt(i);return r}(t)})}(e.swRegistration,e.vapidKey);var n,r,i,s,a,o={vapidKey:e.vapidKey,swScope:e.swRegistration.scope,endpoint:t.endpoint,auth:cP(t.getKey("auth")),p256dh:cP(t.getKey("p256dh"))},c=await vP(e.firebaseDependencies);if(c){if(n=c.subscriptionOptions,r=o.vapidKey===n.vapidKey,i=o.endpoint===n.endpoint,s=o.auth===n.auth,a=o.p256dh===n.p256dh,r&&i&&s&&a)return Date.now()>=c.createTime+6048e5?async function(t,e){try{var n=await async function(e,t){var n=await TP(e),r=EP(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${IP(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw wP.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw wP.create("token-update-failed",{errorInfo:r})}if(!i.token)throw wP.create("token-update-no-token");return i.token}(t.firebaseDependencies,e),r=Object.assign(Object.assign({},e),{token:n,createTime:Date.now()});return await _P(t.firebaseDependencies,r),n}catch(e){throw await SP(t),e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await bP(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return kP(e.firebaseDependencies,o)}return kP(e.firebaseDependencies,o)}async function SP(e){var t=await vP(e.firebaseDependencies);t&&(await bP(e.firebaseDependencies,t.token),await async function(e){var t=yP(e);const n=await mP(),r=n.transaction(fP,"readwrite");await r.objectStore(fP).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function kP(e,t){var n={token:await async function(e,t){var n=await TP(e),r=EP(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(IP(e.appConfig),r);i=await s.json()}catch(e){throw wP.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw wP.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw wP.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await _P(e,n),n.token}async function AP(e,t){var n=function(e,t){var n;const r={};e.from&&(r.project_number=e.from);e.fcmMessageId&&(r.message_id=e.fcmMessageId);r.instance_id=t,e.notification?r.message_type=hR.DISPLAY_NOTIFICATION.toString():r.message_type=hR.DATA_MESSAGE.toString();r.sdk_platform=aP.toString(),r.package_name=self.origin.replace(/(^\w+:|^)\/\//,""),e.collapse_key&&(r.collapse_key=e.collapse_key);r.event=oP.toString(),null!==(n=e.fcmOptions)&&void 0!==n&&n.analytics_label&&(r.analytics_label=null===(n=e.fcmOptions)||void 0===n?void 0:n.analytics_label);return r}(t,await e.firebaseDependencies.installations.getId());!function(e,t,n){const r={};r.event_time_ms=Math.floor(Date.now()).toString(),r.source_extension_json_proto3=JSON.stringify(t),n&&(r.compliance_data=function(e){var t={privacy_context:{prequest:{origin_associated_product_id:e}}};return t}(n));e.logEvents.push(r)}(e,n,t.productId)}function NP(e,t){const n=[];for(let r=0;r<e.length;r++)n.push(e.charAt(r)),r<t.length&&n.push(t.charAt(r));return n.join("")}async function RP(e,t){var n=function({data:e}){if(!e)return null;try{return e.json()}catch(e){return null}}(e);if(n){t.deliveryMetricsExportedToBigQueryEnabled&&await AP(t,n);var r,i,s,a,o=await DP();if(o.some(e=>"visible"===e.visibilityState&&!e.url.startsWith("chrome-extension://")))return function(e,t){t.isFirebaseMessaging=!0,t.messageType=dR.PUSH_RECEIVED;for(const n of e)n.postMessage(t)}(o,n);n.notification&&await function(e){var t=e["actions"],n=Notification["maxActions"];t&&n&&t.length>n&&console.warn(`This browser only supports ${n} actions. The remaining actions will not be displayed.`);return self.registration.showNotification(null!==(n=e.title)&&void 0!==n?n:"",e)}(function(e){const t=Object.assign({},e.notification);return t.data={[iP]:e},t}(n)),t&&t.onBackgroundMessageHandler&&(a={from:(r=n).from,collapseKey:r.collapse_key,messageId:r.fcmMessageId},o=a,(e=r).notification&&(o.notification={},(n=e.notification.title)&&(o.notification.title=n),(n=e.notification.body)&&(o.notification.body=n),(n=e.notification.image)&&(o.notification.image=n),(n=e.notification.icon)&&(o.notification.icon=n)),e=a,(o=r).data&&(e.data=o.data),o=a,((r=r).fcmOptions||null!==(i=r.notification)&&void 0!==i&&i.click_action)&&(o.fcmOptions={},(s=null!==(i=null===(i=r.fcmOptions)||void 0===i?void 0:i.link)&&void 0!==i?i:null===(s=r.notification)||void 0===s?void 0:s.click_action)&&(o.fcmOptions.link=s),(s=null===(s=r.fcmOptions)||void 0===s?void 0:s.analytics_label)&&(o.fcmOptions.analyticsLabel=s)),a=a,"function"==typeof t.onBackgroundMessageHandler?await t.onBackgroundMessageHandler(a):t.onBackgroundMessageHandler.next(a))}}async function PP(e){const t=null===(s=null===(i=e.notification)||void 0===i?void 0:i.data)||void 0===s?void 0:s[iP];if(t&&!e.action){e.stopImmediatePropagation(),e.notification.close();var n=function(e){var t;var n=null!==(t=null===(t=e.fcmOptions)||void 0===t?void 0:t.link)&&void 0!==t?t:null===(n=e.notification)||void 0===n?void 0:n.click_action;if(n)return n;return function(e){return"object"==typeof e&&e&&sP in e}(e.data)?self.location.origin:null}(t);if(n){var r,i=new URL(n,self.location.href),s=new URL(self.location.origin);if(i.host===s.host){let e=await async function(e){var t=await DP();for(const r of t){var n=new URL(r.url,self.location.href);if(e.host===n.host)return r}return null}(i);if(e?e=await e.focus():(e=await self.clients.openWindow(n),r=3e3,await new Promise(e=>{setTimeout(e,r)})),e)return t.messageType=dR.NOTIFICATION_CLICKED,t.isFirebaseMessaging=!0,e.postMessage(t)}}}}function DP(){return self.clients.matchAll({type:"window",includeUncontrolled:!0})}function xP(e){return wP.create("missing-app-config-values",{valueName:e})}NP("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),NP("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class OP{constructor(e,t,n){this.deliveryMetricsExportedToBigQueryEnabled=!1,this.onBackgroundMessageHandler=null,this.onMessageHandler=null,this.logEvents=[],this.isLogServiceStarted=!1;var r=function(e){if(!e||!e.options)throw xP("App Configuration Object");if(!e.name)throw xP("App Name");var t=e["options"];for(const n of["projectId","apiKey","appId","messagingSenderId"])if(!t[n])throw xP(n);return{appName:e.name,projectId:t.projectId,apiKey:t.apiKey,appId:t.appId,senderId:t.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:r,installations:t,analyticsProvider:n}}_delete(){return Promise.resolve()}}const MP=e=>{const t=new OP(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return self.addEventListener("push",e=>{e.waitUntil(RP(e,t))}),self.addEventListener("pushsubscriptionchange",e=>{e.waitUntil(async function(e,t){var n;(n=e["newSubscription"])?(n=await vP(t.firebaseDependencies),await SP(t),t.vapidKey=null!==(n=null===(n=null==n?void 0:n.subscriptionOptions)||void 0===n?void 0:n.vapidKey)&&void 0!==n?n:nP,await CP(t)):await SP(t)}(e,t))}),self.addEventListener("notificationclick",e=>{e.waitUntil(PP(e))}),t};function LP(e,t){return function(e,t){if(void 0!==self.document)throw wP.create("only-available-in-sw");return e.onBackgroundMessageHandler=t,()=>{e.onBackgroundMessageHandler=null}}(e=ce(e),t)}He(new le("messaging-sw",MP,"PUBLIC"));var FP,UP,VP,qP;class BP{constructor(e,t){this.app=e,this._delegate=t,this.app=e,this._delegate=t}async getToken(e){return async function(e,t){return HR(e=ce(e),t)}(this._delegate,e)}async deleteToken(){return eP(this._delegate)}onMessage(e){return tP(this._delegate,e)}onBackgroundMessage(e){return LP(this._delegate,e)}}const jP=e=>self&&"ServiceWorkerGlobalScope"in self?new BP(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging-sw").getImmediate()):new BP(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging").getImmediate()),zP={isSupported:function(){return self&&"ServiceWorkerGlobalScope"in self?N()&&"PushManager"in self&&"Notification"in self&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey"):"undefined"!=typeof window&&N()&&P()&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&"fetch"in window&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")}};It.INTERNAL.registerComponent(new le("messaging-compat",jP,"PUBLIC").setServiceProps(zP)),It.registerVersion("@firebase/messaging-compat","0.2.6");const $P="firebasestorage.googleapis.com",KP="storageBucket";class WP extends D{constructor(e,t,n=0){super(GP(e),`Firebase Storage: ${t} (${GP(e)})`),this.status_=n,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,WP.prototype)}get status(){return this.status_}set status(e){this.status_=e}_codeEquals(e){return GP(e)===this.code}get serverResponse(){return this.customData.serverResponse}set serverResponse(e){this.customData.serverResponse=e,this.customData.serverResponse?this.message=`${this._baseMessage}\n${this.customData.serverResponse}`:this.message=this._baseMessage}}function GP(e){return"storage/"+e}function HP(){return new WP(FP.UNKNOWN,"An unknown error occurred, please check the error payload for server response.")}function QP(){return new WP(FP.RETRY_LIMIT_EXCEEDED,"Max retry time for operation exceeded, please try again.")}function YP(){return new WP(FP.CANCELED,"User canceled the upload/download.")}function JP(){return new WP(FP.CANNOT_SLICE_BLOB,"Cannot slice blob for upload. Please retry the upload.")}function XP(e){return new WP(FP.INVALID_ARGUMENT,e)}function ZP(){return new WP(FP.APP_DELETED,"The Firebase app was deleted.")}function eD(e){return new WP(FP.INVALID_ROOT_OPERATION,"The operation '"+e+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').")}function tD(e,t){return new WP(FP.INVALID_FORMAT,"String does not match format '"+e+"': "+t)}function nD(e){throw new WP(FP.INTERNAL_ERROR,"Internal error: "+e)}(Et=FP=FP||{}).UNKNOWN="unknown",Et.OBJECT_NOT_FOUND="object-not-found",Et.BUCKET_NOT_FOUND="bucket-not-found",Et.PROJECT_NOT_FOUND="project-not-found",Et.QUOTA_EXCEEDED="quota-exceeded",Et.UNAUTHENTICATED="unauthenticated",Et.UNAUTHORIZED="unauthorized",Et.UNAUTHORIZED_APP="unauthorized-app",Et.RETRY_LIMIT_EXCEEDED="retry-limit-exceeded",Et.INVALID_CHECKSUM="invalid-checksum",Et.CANCELED="canceled",Et.INVALID_EVENT_NAME="invalid-event-name",Et.INVALID_URL="invalid-url",Et.INVALID_DEFAULT_BUCKET="invalid-default-bucket",Et.NO_DEFAULT_BUCKET="no-default-bucket",Et.CANNOT_SLICE_BLOB="cannot-slice-blob",Et.SERVER_FILE_WRONG_SIZE="server-file-wrong-size",Et.NO_DOWNLOAD_URL="no-download-url",Et.INVALID_ARGUMENT="invalid-argument",Et.INVALID_ARGUMENT_COUNT="invalid-argument-count",Et.APP_DELETED="app-deleted",Et.INVALID_ROOT_OPERATION="invalid-root-operation",Et.INVALID_FORMAT="invalid-format",Et.INTERNAL_ERROR="internal-error",Et.UNSUPPORTED_ENVIRONMENT="unsupported-environment";class rD{constructor(e,t){this.bucket=e,this.path_=t}get path(){return this.path_}get isRoot(){return 0===this.path.length}fullServerUrl(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o/"+e(this.path)}bucketOnlyServerUrl(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o"}static makeFromBucketSpec(t,e){let n;try{n=rD.makeFromUrl(t,e)}catch(e){return new rD(t,"")}if(""===n.path)return n;throw t=t,new WP(FP.INVALID_DEFAULT_BUCKET,"Invalid default bucket '"+t+"'.")}static makeFromUrl(e,t){let n=null;var r="([A-Za-z0-9.\\-_]+)";var i=new RegExp("^gs://"+r+"(/(.*))?$","i");function s(e){e.path_=decodeURIComponent(e.path)}var a=t.replace(/[.]/g,"\\."),o=new RegExp(`^https?://${a}/v[A-Za-z0-9_]+/b/${r}/o(/([^?#]*).*)?$`,"i"),a=t===$P?"(?:storage.googleapis.com|storage.cloud.google.com)":t,c=[{regex:i,indices:{bucket:1,path:3},postModify:function(e){"/"===e.path.charAt(e.path.length-1)&&(e.path_=e.path_.slice(0,-1))}},{regex:o,indices:{bucket:1,path:3},postModify:s},{regex:new RegExp(`^https?://${a}/${r}/([^?#]*)`,"i"),indices:{bucket:1,path:2},postModify:s}];for(let h=0;h<c.length;h++){const d=c[h];var l=d.regex.exec(e);if(l){var u=l[d.indices.bucket];let e=l[d.indices.path];e=e||"",n=new rD(u,e),d.postModify(n);break}}if(null==n)throw t=e,new WP(FP.INVALID_URL,"Invalid URL '"+t+"'.");return n}}class iD{constructor(e){this.promise_=Promise.reject(e)}getPromise(){return this.promise_}cancel(e=0){}}function sD(e){return"string"==typeof e||e instanceof String}function aD(e){return oD()&&e instanceof Blob}function oD(){return"undefined"!=typeof Blob}function cD(e,t,n,r){if(r<t)throw XP(`Invalid value for '${e}'. Expected ${t} or greater.`);if(n<r)throw XP(`Invalid value for '${e}'. Expected ${n} or less.`)}function lD(e,t,n){let r=null==n?`https://${t}`:t;return`${n}://${r}/v0${e}`}function uD(e){const t=encodeURIComponent;let n="?";for(const i in e){var r;e.hasOwnProperty(i)&&(r=t(i)+"="+t(e[i]),n=n+r+"&")}return n=n.slice(0,-1),n}function hD(e,t){var n=500<=e&&e<600,r=-1!==[408,429].indexOf(e),i=-1!==t.indexOf(e);return n||r||i}(Et=UP=UP||{})[Et.NO_ERROR=0]="NO_ERROR",Et[Et.NETWORK_ERROR=1]="NETWORK_ERROR",Et[Et.ABORT=2]="ABORT";class dD{constructor(e,t,n,r,i,s,a,o,c,l,u,h=!0){this.url_=e,this.method_=t,this.headers_=n,this.body_=r,this.successCodes_=i,this.additionalRetryCodes_=s,this.callback_=a,this.errorCallback_=o,this.timeout_=c,this.progressCallback_=l,this.connectionFactory_=u,this.retry=h,this.pendingConnection_=null,this.backoffId_=null,this.canceled_=!1,this.appDelete_=!1,this.promise_=new Promise((e,t)=>{this.resolve_=e,this.reject_=t,this.start_()})}start_(){var e=(n,e)=>{if(e)n(!1,new pD(!1,null,!0));else{const r=this.connectionFactory_();this.pendingConnection_=r;const i=e=>{var t=e.loaded,n=e.lengthComputable?e.total:-1;null!==this.progressCallback_&&this.progressCallback_(t,n)};null!==this.progressCallback_&&r.addUploadProgressListener(i),r.send(this.url_,this.method_,this.body_,this.headers_).then(()=>{null!==this.progressCallback_&&r.removeUploadProgressListener(i),this.pendingConnection_=null;var e=r.getErrorCode()===UP.NO_ERROR,t=r.getStatus();!e||hD(t,this.additionalRetryCodes_)&&this.retry?(e=r.getErrorCode()===UP.ABORT,n(!1,new pD(!1,null,e))):(t=-1!==this.successCodes_.indexOf(t),n(!0,new pD(t,r)))})}},t=(e,t)=>{const n=this.resolve_,r=this.reject_,i=t.connection;if(t.wasSuccessCode)try{var s=this.callback_(i,i.getResponse());void 0!==s?n(s):n()}catch(e){r(e)}else if(null!==i){const o=HP();o.serverResponse=i.getErrorText(),this.errorCallback_?r(this.errorCallback_(i,o)):r(o)}else{var a;t.canceled?(a=(this.appDelete_?ZP:YP)(),r(a)):(a=QP(),r(a))}};this.canceled_?t(0,new pD(!1,null,!0)):this.backoffId_=function(t,n,e){let r=1,i=null,s=null,a=!1,o=0;function c(){return 2===o}let l=!1;function u(...e){l||(l=!0,n.apply(null,e))}function h(e){i=setTimeout(()=>{i=null,t(p,c())},e)}function d(){s&&clearTimeout(s)}function p(t,...n){if(l)d();else{if(t)return d(),void u.call(null,t,...n);if(c()||a)return d(),void u.call(null,t,...n);r<64&&(r*=2);let e;e=1===o?(o=2,0):1e3*(r+Math.random()),h(e)}}let f=!1;function g(e){f||(f=!0,d(),l||(null!==i?(e||(o=2),clearTimeout(i),h(0)):e||(o=1)))}return h(0),s=setTimeout(()=>{g(a=!0)},e),g}(e,t,this.timeout_)}getPromise(){return this.promise_}cancel(e){this.canceled_=!0,this.appDelete_=e||!1,null!==this.backoffId_&&(0,this.backoffId_)(!1),null!==this.pendingConnection_&&this.pendingConnection_.abort()}}class pD{constructor(e,t,n){this.wasSuccessCode=e,this.connection=t,this.canceled=!!n}}function fD(...t){const n="undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:void 0;if(void 0!==n){const r=new n;for(let e=0;e<t.length;e++)r.append(t[e]);return r.getBlob()}if(oD())return new Blob(t);throw new WP(FP.UNSUPPORTED_ENVIRONMENT,"This browser doesn't seem to support creating Blobs")}function gD(e){if("undefined"==typeof atob)throw new WP(FP.UNSUPPORTED_ENVIRONMENT,"base-64 is missing. Make sure to install the required polyfills. See https://firebase.google.com/docs/web/environments-js-sdk#polyfills for more information.");return atob(e)}const mD={RAW:"raw",BASE64:"base64",BASE64URL:"base64url",DATA_URL:"data_url"};class vD{constructor(e,t){this.data=e,this.contentType=t||null}}function _D(e,t){switch(e){case mD.RAW:return new vD(yD(t));case mD.BASE64:case mD.BASE64URL:return new vD(wD(e,t));case mD.DATA_URL:return new vD((n=t,(r=new bD(n)).base64?wD(mD.BASE64,r.rest):function(e){let t;try{t=decodeURIComponent(e)}catch(e){throw tD(mD.DATA_URL,"Malformed data URL.")}return yD(t)}(r.rest)),(n=t,new bD(n).contentType))}var n,r;throw HP()}function yD(t){const n=[];for(let s=0;s<t.length;s++){let e=t.charCodeAt(s);var r,i;e<=127?n.push(e):e<=2047?n.push(192|e>>6,128|63&e):55296==(64512&e)?s<t.length-1&&56320==(64512&t.charCodeAt(s+1))?(r=e,i=t.charCodeAt(++s),e=65536|(1023&r)<<10|1023&i,n.push(240|e>>18,128|e>>12&63,128|e>>6&63,128|63&e)):n.push(239,191,189):56320==(64512&e)?n.push(239,191,189):n.push(224|e>>12,128|e>>6&63,128|63&e)}return new Uint8Array(n)}function wD(t,e){switch(t){case mD.BASE64:var n=-1!==e.indexOf("-"),r=-1!==e.indexOf("_");if(n||r)throw tD(t,"Invalid character '"+(n?"-":"_")+"' found: is it base64url encoded?");break;case mD.BASE64URL:r=-1!==e.indexOf("+"),n=-1!==e.indexOf("/");if(r||n)throw tD(t,"Invalid character '"+(r?"+":"/")+"' found: is it base64 encoded?");e=e.replace(/-/g,"+").replace(/_/g,"/")}let i;try{i=gD(e)}catch(e){if(e.message.includes("polyfill"))throw e;throw tD(t,"Invalid character found")}const s=new Uint8Array(i.length);for(let a=0;a<i.length;a++)s[a]=i.charCodeAt(a);return s}class bD{constructor(e){this.base64=!1,this.contentType=null;var t,n,r=e.match(/^data:([^,]+)?,/);if(null===r)throw tD(mD.DATA_URL,"Must be formatted 'data:[<mediatype>][;base64],<data>");const i=r[1]||null;null!=i&&(this.base64=(t=i,n=";base64",t.length>=n.length&&t.substring(t.length-n.length)===n),this.contentType=this.base64?i.substring(0,i.length-";base64".length):i),this.rest=e.substring(e.indexOf(",")+1)}}class ID{constructor(e,t){let n=0,r="";aD(e)?(this.data_=e,n=e.size,r=e.type):e instanceof ArrayBuffer?(t?this.data_=new Uint8Array(e):(this.data_=new Uint8Array(e.byteLength),this.data_.set(new Uint8Array(e))),n=this.data_.length):e instanceof Uint8Array&&(t?this.data_=e:(this.data_=new Uint8Array(e.length),this.data_.set(e)),n=e.length),this.size_=n,this.type_=r}size(){return this.size_}type(){return this.type_}slice(e,t){if(aD(this.data_)){var n=this.data_,n=(i=e,s=t,(r=n).webkitSlice?r.webkitSlice(i,s):r.mozSlice?r.mozSlice(i,s):r.slice?r.slice(i,s):null);return null===n?null:new ID(n)}var r,i,s,n=new Uint8Array(this.data_.buffer,e,t-e);return new ID(n,!0)}static getBlob(...e){if(oD()){var t=e.map(e=>e instanceof ID?e.data_:e);return new ID(fD.apply(null,t))}{const r=e.map(e=>sD(e)?_D(mD.RAW,e).data:e.data_);let t=0;r.forEach(e=>{t+=e.byteLength});const i=new Uint8Array(t);let n=0;return r.forEach(e=>{for(let t=0;t<e.length;t++)i[n++]=e[t]}),new ID(i,!0)}}uploadData(){return this.data_}}function TD(e){let t;try{t=JSON.parse(e)}catch(e){return null}return"object"!=typeof(e=t)||Array.isArray(e)?null:t}function ED(e){var t=e.lastIndexOf("/",e.length-2);return-1===t?e:e.slice(t+1)}function CD(e,t){return t}class SD{constructor(e,t,n,r){this.server=e,this.local=t||e,this.writable=!!n,this.xform=r||CD}}let kD=null;function AD(){if(kD)return kD;const e=[];e.push(new SD("bucket")),e.push(new SD("generation")),e.push(new SD("metageneration")),e.push(new SD("name","fullPath",!0));const t=new SD("name");t.xform=function(e,t){return!sD(t=t)||t.length<2?t:ED(t)},e.push(t);const n=new SD("size");return n.xform=function(e,t){return void 0!==t?Number(t):t},e.push(n),e.push(new SD("timeCreated")),e.push(new SD("updated")),e.push(new SD("md5Hash",null,!0)),e.push(new SD("cacheControl",null,!0)),e.push(new SD("contentDisposition",null,!0)),e.push(new SD("contentEncoding",null,!0)),e.push(new SD("contentLanguage",null,!0)),e.push(new SD("contentType",null,!0)),e.push(new SD("metadata","customMetadata",!0)),kD=e,kD}function ND(n,r){Object.defineProperty(n,"ref",{get:function(){var e=n.bucket,t=n.fullPath,t=new rD(e,t);return r._makeStorageReference(t)}})}function RD(e,t,n){var r=TD(t);return null===r?null:function(e,t,n){const r={type:"file"};var i=n.length;for(let s=0;s<i;s++){const a=n[s];r[a.local]=a.xform(r,t[a.server])}return ND(r,e),r}(e,r,n)}function PD(e,t){const n={};var r=t.length;for(let s=0;s<r;s++){var i=t[s];i.writable&&(n[i.server]=e[i.local])}return JSON.stringify(n)}const DD="prefixes";function xD(e,t,n){var r=TD(n);return null===r?null:function(e,t,n){const r={prefixes:[],items:[],nextPageToken:n.nextPageToken};if(n[DD])for(const a of n[DD]){var i=a.replace(/\/$/,""),i=e._makeStorageReference(new rD(t,i));r.prefixes.push(i)}if(n.items)for(const o of n.items){var s=e._makeStorageReference(new rD(t,o.name));r.items.push(s)}return r}(e,t,r)}class OD{constructor(e,t,n,r){this.url=e,this.method=t,this.handler=n,this.timeout=r,this.urlParams={},this.headers={},this.body=null,this.errorHandler=null,this.progressCallback=null,this.successCodes=[200],this.additionalRetryCodes=[]}}function MD(e){if(!e)throw HP()}function LD(r,i){return function(e,t){var n=RD(r,t,i);return MD(null!==n),n}}function FD(r,i){return function(e,t){var n=xD(r,i,t);return MD(null!==n),n}}function UD(r,i){return function(e,t){var n=RD(r,t,i);return MD(null!==n),function(r,e,i,s){var t=TD(e);if(null===t)return null;if(!sD(t.downloadTokens))return null;const n=t.downloadTokens;if(0===n.length)return null;const a=encodeURIComponent,o=n.split(",");return o.map(e=>{var t=r.bucket,n=r.fullPath;return lD("/b/"+a(t)+"/o/"+a(n),i,s)+uD({alt:"media",token:e})})[0]}(n,t,r.host,r._protocol)}}function VD(i){return function(e,t){let n;var r;return n=401===e.getStatus()?e.getErrorText().includes("Firebase App Check token is invalid")?new WP(FP.UNAUTHORIZED_APP,"This app does not have permission to access Firebase Storage on this project."):new WP(FP.UNAUTHENTICATED,"User is not authenticated, please authenticate using Firebase Authentication and try again."):402===e.getStatus()?(r=i.bucket,new WP(FP.QUOTA_EXCEEDED,"Quota for bucket '"+r+"' exceeded, please view quota on https://firebase.google.com/pricing/.")):403===e.getStatus()?(r=i.path,new WP(FP.UNAUTHORIZED,"User does not have permission to access '"+r+"'.")):t,n.status=e.getStatus(),n.serverResponse=t.serverResponse,n}}function qD(r){const i=VD(r);return function(e,t){let n=i(e,t);return 404===e.getStatus()&&(n=(e=r.path,new WP(FP.OBJECT_NOT_FOUND,"Object '"+e+"' does not exist."))),n.serverResponse=t.serverResponse,n}}function BD(e,t,n){var r=lD(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime;const s=new OD(r,"GET",LD(e,n),i);return s.errorHandler=qD(t),s}function jD(e,t,n){const r=Object.assign({},n);return r.fullPath=e.path,r.size=t.size(),r.contentType||(r.contentType=(e=t,(t=null)&&t.contentType||e&&e.type()||"application/octet-stream")),r}function zD(e,t,n,r,i){var s=t.bucketOnlyServerUrl();const a={"X-Goog-Upload-Protocol":"multipart"};var o=function(){let e="";for(let t=0;t<2;t++)e+=Math.random().toString().slice(2);return e}();a["Content-Type"]="multipart/related; boundary="+o;var c=jD(t,r,i),l="--"+o+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+PD(c,n)+"\r\n--"+o+"\r\nContent-Type: "+c.contentType+"\r\n\r\n",o="\r\n--"+o+"--";const u=ID.getBlob(l,r,o);if(null===u)throw JP();o={name:c.fullPath},c=lD(s,e.host,e._protocol),s=e.maxUploadRetryTime;const h=new OD(c,"POST",LD(e,n),s);return h.urlParams=o,h.headers=a,h.body=u.uploadData(),h.errorHandler=VD(t),h}class $D{constructor(e,t,n,r){this.current=e,this.total=t,this.finalized=!!n,this.metadata=r||null}}function KD(e,t){let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Status")}catch(e){MD(!1)}const r=t||["active"];return MD(!!n&&-1!==r.indexOf(n)),n}function WD(e,t,n,r,i){var s=t.bucketOnlyServerUrl(),a=jD(t,r,i),o={name:a.fullPath},c=lD(s,e.host,e._protocol),l={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":`${r.size()}`,"X-Goog-Upload-Header-Content-Type":a.contentType,"Content-Type":"application/json; charset=utf-8"},s=PD(a,n),a=e.maxUploadRetryTime;const u=new OD(c,"POST",function(e){KD(e);let t;try{t=e.getResponseHeader("X-Goog-Upload-URL")}catch(e){MD(!1)}return MD(sD(t)),t},a);return u.urlParams=o,u.headers=l,u.body=s,u.errorHandler=VD(t),u}function GD(e,t,n,i){var r=e.maxUploadRetryTime;const s=new OD(n,"POST",function(e){var t=KD(e,["active","final"]);let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Size-Received")}catch(e){MD(!1)}n||MD(!1);var r=Number(n);return MD(!isNaN(r)),new $D(r,i.size(),"final"===t)},r);return s.headers={"X-Goog-Upload-Command":"query"},s.errorHandler=VD(t),s}function HD(e,a,t,o,n,c,r,i){const l=new $D(0,0);if(r?(l.current=r.current,l.total=r.total):(l.current=0,l.total=o.size()),o.size()!==l.total)throw new WP(FP.SERVER_FILE_WRONG_SIZE,"Server recorded incorrect upload file size, please retry the upload.");var s=l.total-l.current;let u=s;0<n&&(u=Math.min(u,n));var h=l.current,d=h+u;let p="";p=0===u?"finalize":s===u?"upload, finalize":"upload";s={"X-Goog-Upload-Command":p,"X-Goog-Upload-Offset":`${l.current}`};const f=o.slice(h,d);if(null===f)throw JP();d=a.maxUploadRetryTime;const g=new OD(t,"POST",function(e,t){var n=KD(e,["active","final"]),r=l.current+u,i=o.size();let s;return s="final"===n?LD(a,c)(e,t):null,new $D(r,i,"final"===n,s)},d);return g.headers=s,g.body=f.uploadData(),g.progressCallback=i||null,g.errorHandler=VD(e),g}const QD={STATE_CHANGED:"state_changed"},YD={RUNNING:"running",PAUSED:"paused",SUCCESS:"success",CANCELED:"canceled",ERROR:"error"};function JD(e){switch(e){case"running":case"pausing":case"canceling":return YD.RUNNING;case"paused":return YD.PAUSED;case"success":return YD.SUCCESS;case"canceled":return YD.CANCELED;default:return YD.ERROR}}class XD{constructor(e,t,n){var r;"function"==typeof e||null!=t||null!=n?(this.next=e,this.error=null!=t?t:void 0,this.complete=null!=n?n:void 0):(this.next=(r=e).next,this.error=r.error,this.complete=r.complete)}}function ZD(t){return(...e)=>{Promise.resolve().then(()=>t(...e))}}class ex extends class{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=UP.NO_ERROR,this.sendPromise_=new Promise(e=>{this.xhr_.addEventListener("abort",()=>{this.errorCode_=UP.ABORT,e()}),this.xhr_.addEventListener("error",()=>{this.errorCode_=UP.NETWORK_ERROR,e()}),this.xhr_.addEventListener("load",()=>{e()})})}send(e,t,n,r){if(this.sent_)throw nD("cannot .send() more than once");if(this.sent_=!0,this.xhr_.open(t,e,!0),void 0!==r)for(const i in r)r.hasOwnProperty(i)&&this.xhr_.setRequestHeader(i,r[i].toString());return void 0!==n?this.xhr_.send(n):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw nD("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw nD("cannot .getStatus() before sending");try{return this.xhr_.status}catch(e){return-1}}getResponse(){if(!this.sent_)throw nD("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw nD("cannot .getErrorText() before sending");return this.xhr_.statusText}abort(){this.xhr_.abort()}getResponseHeader(e){return this.xhr_.getResponseHeader(e)}addUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.addEventListener("progress",e)}removeUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.removeEventListener("progress",e)}}{initXhr(){this.xhr_.responseType="text"}}function tx(){return new ex}class nx{constructor(e,t,n=null){this._transferred=0,this._needToFetchStatus=!1,this._needToFetchMetadata=!1,this._observers=[],this._error=void 0,this._uploadUrl=void 0,this._request=void 0,this._chunkMultiplier=1,this._resolve=void 0,this._reject=void 0,this._ref=e,this._blob=t,this._metadata=n,this._mappings=AD(),this._resumable=this._shouldDoResumable(this._blob),this._state="running",this._errorHandler=e=>{if(this._request=void 0,this._chunkMultiplier=1,e._codeEquals(FP.CANCELED))this._needToFetchStatus=!0,this.completeTransitions_();else{var t=this.isExponentialBackoffExpired();if(hD(e.status,[])){if(!t)return this.sleepTime=Math.max(2*this.sleepTime,1e3),this._needToFetchStatus=!0,void this.completeTransitions_();e=QP()}this._error=e,this._transition("error")}},this._metadataErrorHandler=e=>{this._request=void 0,e._codeEquals(FP.CANCELED)?this.completeTransitions_():(this._error=e,this._transition("error"))},this.sleepTime=0,this.maxSleepTime=this._ref.storage.maxUploadRetryTime,this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t,this._start()}),this._promise.then(null,()=>{})}isExponentialBackoffExpired(){return this.sleepTime>this.maxSleepTime}_makeProgressCallback(){const t=this._transferred;return e=>this._updateProgress(t+e)}_shouldDoResumable(e){return 262144<e.size()}_start(){"running"===this._state&&void 0===this._request&&(this._resumable?void 0===this._uploadUrl?this._createResumable():this._needToFetchStatus?this._fetchStatus():this._needToFetchMetadata?this._fetchMetadata():this.pendingTimeout=setTimeout(()=>{this.pendingTimeout=void 0,this._continueUpload()},this.sleepTime):this._oneShotUpload())}_resolveToken(n){Promise.all([this._ref.storage._getAuthToken(),this._ref.storage._getAppCheckToken()]).then(([e,t])=>{switch(this._state){case"running":n(e,t);break;case"canceling":this._transition("canceled");break;case"pausing":this._transition("paused")}})}_createResumable(){this._resolveToken((e,t)=>{var n=WD(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,tx,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._uploadUrl=e,this._needToFetchStatus=!1,this.completeTransitions_()},this._errorHandler)})}_fetchStatus(){const i=this._uploadUrl;this._resolveToken((e,t)=>{var n=GD(this._ref.storage,this._ref._location,i,this._blob);const r=this._ref.storage._makeRequest(n,tx,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._updateProgress(e.current),this._needToFetchStatus=!1,e.finalized&&(this._needToFetchMetadata=!0),this.completeTransitions_()},this._errorHandler)})}_continueUpload(){const i=262144*this._chunkMultiplier,s=new $D(this._transferred,this._blob.size()),a=this._uploadUrl;this._resolveToken((e,t)=>{let n;try{n=HD(this._ref._location,this._ref.storage,a,this._blob,i,this._mappings,s,this._makeProgressCallback())}catch(e){return this._error=e,void this._transition("error")}const r=this._ref.storage._makeRequest(n,tx,e,t,!1);this._request=r,r.getPromise().then(e=>{this._increaseMultiplier(),this._request=void 0,this._updateProgress(e.current),e.finalized?(this._metadata=e.metadata,this._transition("success")):this.completeTransitions_()},this._errorHandler)})}_increaseMultiplier(){2*(262144*this._chunkMultiplier)<33554432&&(this._chunkMultiplier*=2)}_fetchMetadata(){this._resolveToken((e,t)=>{var n=BD(this._ref.storage,this._ref._location,this._mappings);const r=this._ref.storage._makeRequest(n,tx,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._transition("success")},this._metadataErrorHandler)})}_oneShotUpload(){this._resolveToken((e,t)=>{var n=zD(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,tx,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._updateProgress(this._blob.size()),this._transition("success")},this._errorHandler)})}_updateProgress(e){var t=this._transferred;this._transferred=e,this._transferred!==t&&this._notifyObservers()}_transition(e){if(this._state!==e)switch(e){case"canceling":case"pausing":this._state=e,void 0!==this._request?this._request.cancel():this.pendingTimeout&&(clearTimeout(this.pendingTimeout),this.pendingTimeout=void 0,this.completeTransitions_());break;case"running":var t="paused"===this._state;this._state=e,t&&(this._notifyObservers(),this._start());break;case"paused":this._state=e,this._notifyObservers();break;case"canceled":this._error=YP(),this._state=e,this._notifyObservers();break;case"error":case"success":this._state=e,this._notifyObservers()}}completeTransitions_(){switch(this._state){case"pausing":this._transition("paused");break;case"canceling":this._transition("canceled");break;case"running":this._start()}}get snapshot(){var e=JD(this._state);return{bytesTransferred:this._transferred,totalBytes:this._blob.size(),state:e,metadata:this._metadata,task:this,ref:this._ref}}on(e,t,n,r){const i=new XD(t||void 0,n||void 0,r||void 0);return this._addObserver(i),()=>{this._removeObserver(i)}}then(e,t){return this._promise.then(e,t)}catch(e){return this.then(null,e)}_addObserver(e){this._observers.push(e),this._notifyObserver(e)}_removeObserver(e){var t=this._observers.indexOf(e);-1!==t&&this._observers.splice(t,1)}_notifyObservers(){this._finishPromise();const e=this._observers.slice();e.forEach(e=>{this._notifyObserver(e)})}_finishPromise(){if(void 0!==this._resolve){let e=!0;switch(JD(this._state)){case YD.SUCCESS:ZD(this._resolve.bind(null,this.snapshot))();break;case YD.CANCELED:case YD.ERROR:const t=this._reject;ZD(t.bind(null,this._error))();break;default:e=!1}e&&(this._resolve=void 0,this._reject=void 0)}}_notifyObserver(e){switch(JD(this._state)){case YD.RUNNING:case YD.PAUSED:e.next&&ZD(e.next.bind(e,this.snapshot))();break;case YD.SUCCESS:e.complete&&ZD(e.complete.bind(e))();break;case YD.CANCELED:case YD.ERROR:default:e.error&&ZD(e.error.bind(e,this._error))()}}resume(){var e="paused"===this._state||"pausing"===this._state;return e&&this._transition("running"),e}pause(){var e="running"===this._state;return e&&this._transition("pausing"),e}cancel(){var e="running"===this._state||"pausing"===this._state;return e&&this._transition("canceling"),e}}class rx{constructor(e,t){this._service=e,t instanceof rD?this._location=t:this._location=rD.makeFromUrl(t,e.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(e,t){return new rx(e,t)}get root(){var e=new rD(this._location.bucket,"");return this._newRef(this._service,e)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return ED(this._location.path)}get storage(){return this._service}get parent(){var e=function(e){if(0===e.length)return null;var t=e.lastIndexOf("/");return-1===t?"":e.slice(0,t)}(this._location.path);if(null===e)return null;e=new rD(this._location.bucket,e);return new rx(this._service,e)}_throwIfRoot(e){if(""===this._location.path)throw eD(e)}}function ix(e){const t={prefixes:[],items:[]};return async function e(t,n,r){const i={pageToken:r};const s=await sx(t,i);n.prefixes.push(...s.prefixes);n.items.push(...s.items);null!=s.nextPageToken&&await e(t,n,s.nextPageToken)}(e,t).then(()=>t)}function sx(e,t){null!=t&&"number"==typeof t.maxResults&&cD("options.maxResults",1,1e3,t.maxResults);var n=t||{},n=function(e,t,n,r,i){const s={};t.isRoot?s.prefix="":s.prefix=t.path+"/",n&&0<n.length&&(s.delimiter=n),r&&(s.pageToken=r),i&&(s.maxResults=i);var a=lD(t.bucketOnlyServerUrl(),e.host,e._protocol),o=e.maxOperationRetryTime;const c=new OD(a,"GET",FD(e,t.bucket),o);return c.urlParams=s,c.errorHandler=VD(t),c}(e.storage,e._location,"/",n.pageToken,n.maxResults);return e.storage.makeRequestWithTokens(n,tx)}function ax(e,t){e._throwIfRoot("updateMetadata");var n=function(e,t,n,r){var i=lD(t.fullServerUrl(),e.host,e._protocol),s=PD(n,r),a=e.maxOperationRetryTime;const o=new OD(i,"PATCH",LD(e,r),a);return o.headers={"Content-Type":"application/json; charset=utf-8"},o.body=s,o.errorHandler=qD(t),o}(e.storage,e._location,t,AD());return e.storage.makeRequestWithTokens(n,tx)}function ox(e){e._throwIfRoot("getDownloadURL");var t=function(e,t,n){var r=lD(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime;const s=new OD(r,"GET",UD(e,n),i);return s.errorHandler=qD(t),s}(e.storage,e._location,AD());return e.storage.makeRequestWithTokens(t,tx).then(e=>{if(null===e)throw new WP(FP.NO_DOWNLOAD_URL,"The given file does not have any download URLs.");return e})}function cx(e){e._throwIfRoot("deleteObject");var t=function(e,t){var n=lD(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime;const i=new OD(n,"DELETE",function(e,t){},r);return i.successCodes=[200,204],i.errorHandler=qD(t),i}(e.storage,e._location);return e.storage.makeRequestWithTokens(t,tx)}function lx(e,t){var n,r=(n=e._location.path,r=t.split("/").filter(e=>0<e.length).join("/"),0===n.length?r:n+"/"+r),r=new rD(e._location.bucket,r);return new rx(e.storage,r)}function ux(e,t){if(e instanceof px){var n=e;if(null==n._bucket)throw new WP(FP.NO_DEFAULT_BUCKET,"No default bucket found. Did you set the '"+KP+"' property when initializing the app?");n=new rx(n,n._bucket);return null!=t?ux(n,t):n}return void 0!==t?lx(e,t):e}function hx(e,t){if(t&&/^[A-Za-z]+:\/\//.test(t)){if(e instanceof px)return n=e,r=t,new rx(n,r);throw XP("To use ref(service, url), the first argument must be a Storage instance.")}return ux(e,t);var n,r}function dx(e,t){var n=null==t?void 0:t[KP];return null==n?null:rD.makeFromBucketSpec(n,e)}class px{constructor(e,t,n,r,i){this.app=e,this._authProvider=t,this._appCheckProvider=n,this._url=r,this._firebaseVersion=i,this._bucket=null,this._host=$P,this._protocol="https",this._appId=null,this._deleted=!1,this._maxOperationRetryTime=12e4,this._maxUploadRetryTime=6e5,this._requests=new Set,this._bucket=null!=r?rD.makeFromBucketSpec(r,this._host):dx(this._host,this.app.options)}get host(){return this._host}set host(e){this._host=e,null!=this._url?this._bucket=rD.makeFromBucketSpec(this._url,e):this._bucket=dx(e,this.app.options)}get maxUploadRetryTime(){return this._maxUploadRetryTime}set maxUploadRetryTime(e){cD("time",0,Number.POSITIVE_INFINITY,e),this._maxUploadRetryTime=e}get maxOperationRetryTime(){return this._maxOperationRetryTime}set maxOperationRetryTime(e){cD("time",0,Number.POSITIVE_INFINITY,e),this._maxOperationRetryTime=e}async _getAuthToken(){if(this._overrideAuthToken)return this._overrideAuthToken;const e=this._authProvider.getImmediate({optional:!0});if(e){var t=await e.getToken();if(null!==t)return t.accessToken}return null}async _getAppCheckToken(){const e=this._appCheckProvider.getImmediate({optional:!0});return e?(await e.getToken()).token:null}_delete(){return this._deleted||(this._deleted=!0,this._requests.forEach(e=>e.cancel()),this._requests.clear()),Promise.resolve()}_makeStorageReference(e){return new rx(this,e)}_makeRequest(e,t,n,r,i=!0){if(this._deleted)return new iD(ZP());{const u=([s,a,o,e,n,r,t=!0]=[e,this._appId,n,r,t,this._firebaseVersion,i],c=uD(s.urlParams),l=s.url+c,c=Object.assign({},s.headers),i=c,(a=a)&&(i["X-Firebase-GMPID"]=a),a=c,null!==(o=o)&&0<o.length&&(a.Authorization="Firebase "+o),r=r,c["X-Firebase-Storage-Version"]="webjs/"+(null!=r?r:"AppManager"),r=c,null!==(e=e)&&(r["X-Firebase-AppCheck"]=e),new dD(l,s.method,c,s.body,s.successCodes,s.additionalRetryCodes,s.handler,s.errorHandler,s.timeout,s.progressCallback,n,t));return this._requests.add(u),u.getPromise().then(()=>this._requests.delete(u),()=>this._requests.delete(u)),u}var s,a,o,c,l}async makeRequestWithTokens(e,t){var[n,r]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(e,t,n,r).getPromise()}}const fx="@firebase/storage";function gx(e,t,n){return e=ce(e),t=t,n=n,(e=e)._throwIfRoot("uploadBytesResumable"),new nx(e,new ID(t),n)}function mx(e){return function(e){e._throwIfRoot("getMetadata");var t=BD(e.storage,e._location,AD());return e.storage.makeRequestWithTokens(t,tx)}(e=ce(e))}function vx(e,t){return hx(e=ce(e),t)}function _x(e,t,n,r={}){!function(e,t,n,r={}){e.host=`${t}:${n}`,e._protocol="http";var i=r["mockUserToken"];i&&(e._overrideAuthToken="string"==typeof i?i:w(i,e.app.options.projectId))}(e,t,n,r)}function yx(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("app-check-internal");return new px(n,r,i,t,Xe)}He(new le("storage",yx,"PUBLIC").setMultipleInstances(!0)),nt(fx,"0.12.1",""),nt(fx,"0.12.1","esm2017");class wx{constructor(e,t,n){this._delegate=e,this.task=t,this.ref=n}get bytesTransferred(){return this._delegate.bytesTransferred}get metadata(){return this._delegate.metadata}get state(){return this._delegate.state}get totalBytes(){return this._delegate.totalBytes}}class bx{constructor(e,t){this._delegate=e,this._ref=t,this.cancel=this._delegate.cancel.bind(this._delegate),this.catch=this._delegate.catch.bind(this._delegate),this.pause=this._delegate.pause.bind(this._delegate),this.resume=this._delegate.resume.bind(this._delegate)}get snapshot(){return new wx(this._delegate.snapshot,this,this._ref)}then(t,e){return this._delegate.then(e=>{if(t)return t(new wx(e,this,this._ref))},e)}on(e,t,n,r){let i=void 0;return t&&(i="function"==typeof t?e=>t(new wx(e,this,this._ref)):{next:t.next?e=>t.next(new wx(e,this,this._ref)):void 0,complete:t.complete||void 0,error:t.error||void 0}),this._delegate.on(e,i,n||void 0,r||void 0)}}class Ix{constructor(e,t){this._delegate=e,this._service=t}get prefixes(){return this._delegate.prefixes.map(e=>new Tx(e,this._service))}get items(){return this._delegate.items.map(e=>new Tx(e,this._service))}get nextPageToken(){return this._delegate.nextPageToken||null}}class Tx{constructor(e,t){this._delegate=e,this.storage=t}get name(){return this._delegate.name}get bucket(){return this._delegate.bucket}get fullPath(){return this._delegate.fullPath}toString(){return this._delegate.toString()}child(e){var t=lx(this._delegate,e);return new Tx(t,this.storage)}get root(){return new Tx(this._delegate.root,this.storage)}get parent(){var e=this._delegate.parent;return null==e?null:new Tx(e,this.storage)}put(e,t){return this._throwIfRoot("put"),new bx(gx(this._delegate,e,t),this)}putString(e,t=mD.RAW,n){this._throwIfRoot("putString");var r=_D(t,e);const i=Object.assign({},n);return null==i.contentType&&null!=r.contentType&&(i.contentType=r.contentType),new bx(new nx(this._delegate,new ID(r.data,!0),i),this)}listAll(){return ix(ce(this._delegate)).then(e=>new Ix(e,this.storage))}list(e){return t=this._delegate,e=e||void 0,sx(t=ce(t),e).then(e=>new Ix(e,this.storage));var t}getMetadata(){return mx(this._delegate)}updateMetadata(e){return ax(ce(this._delegate),e)}getDownloadURL(){return ox(ce(this._delegate))}delete(){return this._throwIfRoot("delete"),cx(ce(this._delegate))}_throwIfRoot(e){if(""===this._delegate._location.path)throw eD(e)}}class Ex{constructor(e,t){this.app=e,this._delegate=t}get maxOperationRetryTime(){return this._delegate.maxOperationRetryTime}get maxUploadRetryTime(){return this._delegate.maxUploadRetryTime}ref(e){if(Cx(e))throw XP("ref() expected a child path but got a URL, use refFromURL instead.");return new Tx(vx(this._delegate,e),this)}refFromURL(e){if(!Cx(e))throw XP("refFromURL() expected a full URL but got a child path, use ref() instead.");try{rD.makeFromUrl(e,this._delegate.host)}catch(e){throw XP("refFromUrl() expected a valid full URL but got an invalid one.")}return new Tx(vx(this._delegate,e),this)}setMaxUploadRetryTime(e){this._delegate.maxUploadRetryTime=e}setMaxOperationRetryTime(e){this._delegate.maxOperationRetryTime=e}useEmulator(e,t,n={}){_x(this._delegate,e,t,n)}}function Cx(e){return/^[A-Za-z]+:\/\//.test(e)}function Sx(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("storage").getImmediate({identifier:t});return new Ex(n,r)}VP=It,qP={TaskState:YD,TaskEvent:QD,StringFormat:mD,Storage:Ex,Reference:Tx},VP.INTERNAL.registerComponent(new le("storage-compat",Sx,"PUBLIC").setServiceProps(qP).setMultipleInstances(!0)),VP.registerVersion("@firebase/storage-compat","0.3.4");const kx="@firebase/performance",Ax="0.6.5",Nx=Ax,Rx="FB-PERF-TRACE-MEASURE",Px="@firebase/performance/config",Dx="@firebase/performance/configexpire";var xx,Ox,Mx,Lx="Performance";const Fx=new x("performance",Lx,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),Ux=new _e(Lx);Ux.logLevel=m.INFO;let Vx,qx;class Bx{constructor(e){if(!(this.window=e))throw Fx.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay)}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){this.performance&&this.performance.mark&&this.performance.mark(e)}measure(e,t,n){this.performance&&this.performance.measure&&this.performance.measure(e,t,n)}getEntriesByType(e){return this.performance&&this.performance.getEntriesByType?this.performance.getEntriesByType(e):[]}getEntriesByName(e){return this.performance&&this.performance.getEntriesByName?this.performance.getEntriesByName(e):[]}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return fetch&&Promise&&P()?!!N()||(Ux.info("IndexedDB is not supported by current browser"),!1):(Ux.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1)}setupObserver(e,n){if(this.PerformanceObserver){const t=new this.PerformanceObserver(e=>{for(const t of e.getEntries())n(t)});t.observe({entryTypes:[e]})}}static getInstance(){return void 0===Vx&&(Vx=new Bx(qx)),Vx}}let jx;function zx(e,t){var n=e.length-t.length;if(n<0||1<n)throw Fx.create("invalid String merger input");const r=[];for(let i=0;i<e.length;i++)r.push(e.charAt(i)),t.length>i&&r.push(t.charAt(i));return r.join("")}let $x;class Kx{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=zx("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=zx("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return void 0===$x&&($x=new Kx),$x}}(Et=xx=xx||{})[Et.UNKNOWN=0]="UNKNOWN",Et[Et.VISIBLE=1]="VISIBLE",Et[Et.HIDDEN=2]="HIDDEN";const Wx=["firebase_","google_","ga_"],Gx=new RegExp("^[a-zA-Z]\\w*$");function Hx(){switch(Bx.getInstance().document.visibilityState){case"visible":return xx.VISIBLE;case"hidden":return xx.HIDDEN;default:return xx.UNKNOWN}}function Qx(e){var t=null===(t=e.options)||void 0===t?void 0:t.appId;if(!t)throw Fx.create("no app id");return t}const Yx="0.0.1",Jx={loggingEnabled:!0},Xx="FIREBASE_INSTALLATIONS_AUTH";function Zx(e,t){var r,i,n=function(){const e=Bx.getInstance().localStorage;if(e){var t=e.getItem(Dx);if(t&&function(e){return Number(e)>Date.now()}(t)){t=e.getItem(Px);if(t)try{return JSON.parse(t)}catch(e){return}}}}();return n?(t1(n),Promise.resolve()):(i=t,function(e){const t=e.getToken();return t.then(e=>{}),t}((r=e).installations).then(e=>{var t=function(e){var t=null===(t=e.options)||void 0===t?void 0:t.projectId;if(!t)throw Fx.create("no project id");return t}(r.app),n=function(e){var t=null===(t=e.options)||void 0===t?void 0:t.apiKey;if(!t)throw Fx.create("no api key");return t}(r.app),n=new Request(`https://firebaseremoteconfig.googleapis.com/v1/projects/${t}/namespaces/fireperf:fetch?key=${n}`,{method:"POST",headers:{Authorization:`${Xx} ${e}`},body:JSON.stringify({app_instance_id:i,app_instance_id_token:e,app_id:Qx(r.app),app_version:Nx,sdk_version:Yx})});return fetch(n).then(e=>{if(e.ok)return e.json();throw Fx.create("RC response not ok")})}).catch(()=>{Ux.info(e1)}).then(t1).then(e=>function(e){const t=Bx.getInstance().localStorage;e&&t&&(t.setItem(Px,JSON.stringify(e)),t.setItem(Dx,String(Date.now()+60*Kx.getInstance().configTimeToLive*60*1e3)))}(e),()=>{}))}const e1="Could not fetch config, will use default configs";function t1(e){if(!e)return e;const t=Kx.getInstance();var n=e.entries||{};return void 0!==n.fpr_enabled?t.loggingEnabled="true"===String(n.fpr_enabled):t.loggingEnabled=Jx.loggingEnabled,n.fpr_log_source?t.logSource=Number(n.fpr_log_source):Jx.logSource&&(t.logSource=Jx.logSource),n.fpr_log_endpoint_url?t.logEndPointUrl=n.fpr_log_endpoint_url:Jx.logEndPointUrl&&(t.logEndPointUrl=Jx.logEndPointUrl),n.fpr_log_transport_key?t.transportKey=n.fpr_log_transport_key:Jx.transportKey&&(t.transportKey=Jx.transportKey),void 0!==n.fpr_vc_network_request_sampling_rate?t.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):void 0!==Jx.networkRequestsSamplingRate&&(t.networkRequestsSamplingRate=Jx.networkRequestsSamplingRate),void 0!==n.fpr_vc_trace_sampling_rate?t.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):void 0!==Jx.tracesSamplingRate&&(t.tracesSamplingRate=Jx.tracesSamplingRate),t.logTraceAfterSampling=n1(t.tracesSamplingRate),t.logNetworkAfterSampling=n1(t.networkRequestsSamplingRate),e}function n1(e){return Math.random()<=e}let r1=1,i1;function s1(e){var t;return r1=2,i1=i1||(t=e,function(){const n=Bx.getInstance().document;return new Promise(e=>{if(n&&"complete"!==n.readyState){const t=()=>{"complete"===n.readyState&&(n.removeEventListener("readystatechange",t),e())};n.addEventListener("readystatechange",t)}else e()})}().then(()=>function(e){const t=e.getId();return t.then(e=>{jx=e}),t}(t.installations)).then(e=>Zx(t,e)).then(()=>a1(),()=>a1())),i1}function a1(){r1=3}const o1=1e4,c1=3,l1=1e3;let u1=c1,h1=[],d1=!1;function p1(e){setTimeout(()=>{if(0!==u1)return h1.length?void function(){const e=h1.splice(0,l1),t=e.map(e=>({source_extension_json_proto3:e.message,event_time_ms:String(e.eventTime)})),n={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:Kx.getInstance().logSource,log_event:t};!function(e,r){return function(e){var t=Kx.getInstance().getFlTransportFullUrl();return fetch(t,{method:"POST",body:JSON.stringify(e)})}(e).then(e=>(e.ok||Ux.info("Call to Firebase backend failed."),e.json())).then(e=>{var t=Number(e.nextRequestWaitMillis);let n=o1;isNaN(t)||(n=Math.max(t,n));t=e.logResponseDetails;Array.isArray(t)&&0<t.length&&"RETRY_REQUEST_LATER"===t[0].responseAction&&(h1=[...r,...h1],Ux.info("Retry transport request later.")),u1=c1,p1(n)})}(n,e).catch(()=>{h1=[...e,...h1],u1--,Ux.info(`Tries left: ${u1}.`),p1(o1)})}():p1(o1)},e)}function f1(t){return(...e)=>{!function(e){if(!e.eventTime||!e.message)throw Fx.create("invalid cc log");h1=[...h1,e]}({message:t(...e),eventTime:Date.now()})}}let g1;function m1(e,t){g1=g1||f1(y1),g1(e,t)}function v1(e){var t=Kx.getInstance();!t.instrumentationEnabled&&e.isAuto||(t.dataCollectionEnabled||e.isAuto)&&Bx.getInstance().requiredApisAvailable()&&(e.isAuto&&Hx()!==xx.VISIBLE||(3===r1?_1(e):s1(e.performanceController).then(()=>_1(e),()=>_1(e))))}function _1(e){var t;!jx||(t=Kx.getInstance()).loggingEnabled&&t.logTraceAfterSampling&&setTimeout(()=>m1(e,1),0)}function y1(e,t){return 0===t?(n={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},n={application_info:w1(e.performanceController.app),network_request_metric:n},JSON.stringify(n)):function(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};0!==Object.keys(e.counters).length&&(t.counters=e.counters);var n=e.getAttributes();0!==Object.keys(n).length&&(t.custom_attributes=n);n={application_info:w1(e.performanceController.app),trace_metric:t};return JSON.stringify(n)}(e);var n}function w1(e){return{google_app_id:Qx(e),app_instance_id:jx,web_app_info:{sdk_version:Nx,page_url:Bx.getInstance().getUrl(),service_worker_status:null!=(t=Bx.getInstance().navigator)&&t.serviceWorker?t.serviceWorker.controller?2:3:1,visibility_state:Hx(),effective_connection_type:function(){var e=Bx.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}()},application_process_state:0};var t}const b1=["_fp","_fcp","_fid"];class I1{constructor(e,t,n=!1,r){this.performanceController=e,this.name=t,this.isAuto=n,this.state=1,this.customAttributes={},this.counters={},this.api=Bx.getInstance(),this.randomId=Math.floor(1e6*Math.random()),this.isAuto||(this.traceStartMark=`FB-PERF-TRACE-START-${this.randomId}-${this.name}`,this.traceStopMark=`FB-PERF-TRACE-STOP-${this.randomId}-${this.name}`,this.traceMeasure=r||`${Rx}-${this.randomId}-${this.name}`,r&&this.calculateTraceMetrics())}start(){if(1!==this.state)throw Fx.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(2!==this.state)throw Fx.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),v1(this)}record(e,t,n){if(e<=0)throw Fx.create("nonpositive trace startTime",{traceName:this.name});if(t<=0)throw Fx.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(1e3*t),this.startTimeUs=Math.floor(1e3*e),n&&n.attributes&&(this.customAttributes=Object.assign({},n.attributes)),n&&n.metrics)for(const r of Object.keys(n.metrics))isNaN(Number(n.metrics[r]))||(this.counters[r]=Math.floor(Number(n.metrics[r])));v1(this)}incrementMetric(e,t=1){void 0===this.counters[e]?this.putMetric(e,t):this.putMetric(e,this.counters[e]+t)}putMetric(e,t){if(r=e,i=this.name,0===r.length||100<r.length||!(i&&i.startsWith("_wt_")&&-1<b1.indexOf(r))&&r.startsWith("_"))throw Fx.create("invalid custom metric name",{customMetricName:e});var n,r,i;this.counters[e]=(t=null!=t?t:0,(n=Math.floor(t))<t&&Ux.info(`Metric value should be an Integer, setting the value as : ${n}.`),n)}getMetric(e){return this.counters[e]||0}putAttribute(e,t){var n,r,i=!(0===(n=e).length||40<n.length)&&(!Wx.some(e=>n.startsWith(e))&&!!n.match(Gx)),s=0!==(r=t).length&&r.length<=100;if(i&&s)this.customAttributes[e]=t;else{if(!i)throw Fx.create("invalid attribute name",{attributeName:e});if(!s)throw Fx.create("invalid attribute value",{attributeValue:t})}}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){void 0!==this.customAttributes[e]&&delete this.customAttributes[e]}getAttributes(){return Object.assign({},this.customAttributes)}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){var e=this.api.getEntriesByName(this.traceMeasure),e=e&&e[0];e&&(this.durationUs=Math.floor(1e3*e.duration),this.startTimeUs=Math.floor(1e3*(e.startTime+this.api.getTimeOrigin())))}static createOobTrace(e,t,n,r){var i=Bx.getInstance().getUrl();if(i){const s=new I1(e,"_wt_"+i,!0);i=Math.floor(1e3*Bx.getInstance().getTimeOrigin());s.setStartTime(i),t&&t[0]&&(s.setDuration(Math.floor(1e3*t[0].duration)),s.putMetric("domInteractive",Math.floor(1e3*t[0].domInteractive)),s.putMetric("domContentLoadedEventEnd",Math.floor(1e3*t[0].domContentLoadedEventEnd)),s.putMetric("loadEventEnd",Math.floor(1e3*t[0].loadEventEnd)));n&&((i=n.find(e=>"first-paint"===e.name))&&i.startTime&&s.putMetric("_fp",Math.floor(1e3*i.startTime)),(i=n.find(e=>"first-contentful-paint"===e.name))&&i.startTime&&s.putMetric("_fcp",Math.floor(1e3*i.startTime)),r&&s.putMetric("_fid",Math.floor(1e3*r))),v1(s)}}static createUserTimingTrace(e,t){v1(new I1(e,t,!1,t))}}function T1(e,t){const n=t;var r,i,s;n&&void 0!==n.responseStart&&(s=Bx.getInstance().getTimeOrigin(),r=Math.floor(1e3*(n.startTime+s)),i=n.responseStart?Math.floor(1e3*(n.responseStart-n.startTime)):void 0,s=Math.floor(1e3*(n.responseEnd-n.startTime)),function(e){const t=Kx.getInstance();var n,r,i;t.instrumentationEnabled&&(n=e.url,r=t.logEndPointUrl.split("?")[0],i=t.flTransportEndpointUrl.split("?")[0],n!==r&&n!==i&&t.loggingEnabled&&t.logNetworkAfterSampling&&setTimeout(()=>m1(e,0),0))}({performanceController:e,url:n.name&&n.name.split("?")[0],responsePayloadBytes:n.transferSize,startTimeUs:r,timeToResponseInitiatedUs:i,timeToResponseCompletedUs:s}))}const E1=5e3;function C1(e){jx&&(setTimeout(()=>function(n){const e=Bx.getInstance(),r=e.getEntriesByType("navigation"),i=e.getEntriesByType("paint");if(e.onFirstInputDelay){let t=setTimeout(()=>{I1.createOobTrace(n,r,i),t=void 0},E1);e.onFirstInputDelay(e=>{t&&(clearTimeout(t),I1.createOobTrace(n,r,i,e))})}else I1.createOobTrace(n,r,i)}(e),0),setTimeout(()=>function(t){const e=Bx.getInstance(),n=e.getEntriesByType("resource");for(const r of n)T1(t,r);e.setupObserver("resource",e=>T1(t,e))}(e),0),setTimeout(()=>function(t){const e=Bx.getInstance(),n=e.getEntriesByType("measure");for(const r of n)S1(t,r);e.setupObserver("measure",e=>S1(t,e))}(e),0))}function S1(e,t){const n=t.name;n.substring(0,Rx.length)!==Rx&&I1.createUserTimingTrace(e,n)}class k1{constructor(e,t){this.app=e,this.installations=t,this.initialized=!1}_init(e){this.initialized||(void 0!==(null==e?void 0:e.dataCollectionEnabled)&&(this.dataCollectionEnabled=e.dataCollectionEnabled),void 0!==(null==e?void 0:e.instrumentationEnabled)&&(this.instrumentationEnabled=e.instrumentationEnabled),Bx.getInstance().requiredApisAvailable()?R().then(e=>{e&&(d1||(p1(5500),d1=!0),s1(this).then(()=>C1(this),()=>C1(this)),this.initialized=!0)}).catch(e=>{Ux.info(`Environment doesn't support IndexedDB: ${e}`)}):Ux.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){Kx.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return Kx.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){Kx.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return Kx.getInstance().dataCollectionEnabled}}const A1="[DEFAULT]";const N1=(e,{options:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if(n.name!==A1)throw Fx.create("FB not default");if("undefined"==typeof window)throw Fx.create("no window");e=window,qx=e;const i=new k1(n,r);return i._init(t),i};He(new le("performance",N1,"PUBLIC")),nt(kx,Ax),nt(kx,Ax,"esm2017");class R1{constructor(e,t){this.app=e,this._delegate=t}get instrumentationEnabled(){return this._delegate.instrumentationEnabled}set instrumentationEnabled(e){this._delegate.instrumentationEnabled=e}get dataCollectionEnabled(){return this._delegate.dataCollectionEnabled}set dataCollectionEnabled(e){this._delegate.dataCollectionEnabled=e}trace(e){return t=this._delegate,e=e,t=ce(t),new I1(t,e);var t}}function P1(e){var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("performance").getImmediate();return new R1(t,n)}(Ox=It).INTERNAL.registerComponent(new le("performance-compat",P1,"PUBLIC")),Ox.registerVersion("@firebase/performance-compat","0.2.5");const D1="@firebase/remote-config";class x1{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}const O1=new x("remoteconfig","Remote Config",{"registration-window":"Undefined window object. This SDK only supports usage in a browser environment.","registration-project-id":"Undefined project identifier. Check Firebase app initialization.","registration-api-key":"Undefined API key. Check Firebase app initialization.","registration-app-id":"Undefined app identifier. Check Firebase app initialization.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","storage-delete":"Error thrown when deleting from storage. Original error: {$originalErrorMessage}.","fetch-client-network":"Fetch client failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-timeout":'The config fetch request timed out. Configure timeout using "fetchTimeoutMillis" SDK setting.',"fetch-throttle":'The config fetch request timed out while in an exponential backoff state. Configure timeout using "fetchTimeoutMillis" SDK setting. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',"fetch-client-parse":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","indexed-db-unavailable":"Indexed DB is not supported by current browser"});const M1=["1","true","t","yes","y","on"];class L1{constructor(e,t=""){this._source=e,this._value=t}asString(){return this._value}asBoolean(){return"static"!==this._source&&0<=M1.indexOf(this._value.toLowerCase())}asNumber(){if("static"===this._source)return 0;let e=Number(this._value);return isNaN(e)&&(e=0),e}getSource(){return this._source}}async function F1(e){const t=ce(e);var[n,r]=await Promise.all([t._storage.getLastSuccessfulFetchResponse(),t._storage.getActiveConfigEtag()]);return!!(n&&n.config&&n.eTag&&n.eTag!==r)&&(await Promise.all([t._storageCache.setActiveConfig(n.config),t._storage.setActiveConfigEtag(n.eTag)]),!0)}function U1(e){const t=ce(e);return t._initializePromise||(t._initializePromise=t._storageCache.loadFromStorage().then(()=>{t._isInitializationComplete=!0})),t._initializePromise}async function V1(t){const n=ce(t),e=new x1;setTimeout(async()=>{e.abort()},n.settings.fetchTimeoutMillis);try{await n._client.fetch({cacheMaxAgeMillis:n.settings.minimumFetchIntervalMillis,signal:e}),await n._storageCache.setLastFetchStatus("success")}catch(e){var r=(i="fetch-throttle",(t=e)instanceof D&&-1!==t.code.indexOf(i)?"throttle":"failure");throw await n._storageCache.setLastFetchStatus(r),e}var i}function q1(n){const e=ce(n);return[t={},r={}]=[e._storageCache.getActiveConfig(),e.defaultConfig],Object.keys(Object.assign(Object.assign({},t),r)).reduce((e,t)=>(e[t]=B1(n,t),e),{});var t,r}function B1(e,t){const n=ce(e);n._isInitializationComplete||n._logger.debug(`A value was requested for key "${t}" before SDK initialization completed.`+" Await on ensureInitialized if the intent was to get a previously activated value.");var r=n._storageCache.getActiveConfig();return r&&void 0!==r[t]?new L1("remote",r[t]):n.defaultConfig&&void 0!==n.defaultConfig[t]?new L1("default",String(n.defaultConfig[t])):(n._logger.debug(`Returning static value for key "${t}".`+" Define a default or remote value if this is unintentional."),new L1("static"))}class j1{constructor(e,t,n,r){this.client=e,this.storage=t,this.storageCache=n,this.logger=r}isCachedDataFresh(e,t){if(!t)return this.logger.debug("Config fetch cache check. Cache unpopulated."),!1;var n=Date.now()-t,r=n<=e;return this.logger.debug("Config fetch cache check."+` Cache age millis: ${n}.`+` Cache max age millis (minimumFetchIntervalMillis setting): ${e}.`+` Is cache hit: ${r}.`),r}async fetch(e){var[t,n]=await Promise.all([this.storage.getLastSuccessfulFetchTimestampMillis(),this.storage.getLastSuccessfulFetchResponse()]);if(n&&this.isCachedDataFresh(e.cacheMaxAgeMillis,t))return n;e.eTag=n&&n.eTag;n=await this.client.fetch(e);const r=[this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())];return 200===n.status&&r.push(this.storage.setLastSuccessfulFetchResponse(n)),await Promise.all(r),n}}class z1{constructor(e,t,n,r,i,s){this.firebaseInstallations=e,this.sdkVersion=t,this.namespace=n,this.projectId=r,this.apiKey=i,this.appId=s}async fetch(n){var e,[t,r]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken()]),i=`${window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfig.googleapis.com"}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=${this.apiKey}`,s={"Content-Type":"application/json","Content-Encoding":"gzip","If-None-Match":n.eTag||"*"},r={sdk_version:this.sdkVersion,app_instance_id:t,app_instance_id_token:r,app_id:this.appId,language_code:(e=navigator).languages&&e.languages[0]||e.language},r={method:"POST",headers:s,body:JSON.stringify(r)},i=fetch(i,r),r=new Promise((e,t)=>{n.signal.addEventListener(()=>{const e=new Error("The operation was aborted.");e.name="AbortError",t(e)})});let a;try{await Promise.race([i,r]),a=await i}catch(e){let t="fetch-client-network";throw"AbortError"===(null==e?void 0:e.name)&&(t="fetch-timeout"),O1.create(t,{originalErrorMessage:null==e?void 0:e.message})}let o=a.status;i=a.headers.get("ETag")||void 0;let c,l;if(200===a.status){let e;try{e=await a.json()}catch(e){throw O1.create("fetch-client-parse",{originalErrorMessage:null==e?void 0:e.message})}c=e.entries,l=e.state}if("INSTANCE_STATE_UNSPECIFIED"===l?o=500:"NO_CHANGE"===l?o=304:"NO_TEMPLATE"!==l&&"EMPTY_CONFIG"!==l||(c={}),304!==o&&200!==o)throw O1.create("fetch-status",{httpStatus:o});return{status:o,eTag:i,config:c}}}class $1{constructor(e,t){this.client=e,this.storage=t}async fetch(e){var t=await this.storage.getThrottleMetadata()||{backoffCount:0,throttleEndTimeMillis:Date.now()};return this.attemptFetch(e,t)}async attemptFetch(t,{throttleEndTimeMillis:e,backoffCount:n}){var i,s;i=t.signal,s=e,await new Promise((e,t)=>{var n=Math.max(s-Date.now(),0);const r=setTimeout(e,n);i.addEventListener(()=>{clearTimeout(r),t(O1.create("fetch-throttle",{throttleEndTimeMillis:s}))})});try{var r=await this.client.fetch(t);return await this.storage.deleteThrottleMetadata(),r}catch(e){if(!function(e){if(e instanceof D&&e.customData){var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}}(e))throw e;r={throttleEndTimeMillis:Date.now()+oe(n),backoffCount:n+1};return await this.storage.setThrottleMetadata(r),this.attemptFetch(t,r)}}}class K1{constructor(e,t,n,r,i){this.app=e,this._client=t,this._storageCache=n,this._storage=r,this._logger=i,this._isInitializationComplete=!1,this.settings={fetchTimeoutMillis:6e4,minimumFetchIntervalMillis:432e5},this.defaultConfig={}}get fetchTimeMillis(){return this._storageCache.getLastSuccessfulFetchTimestampMillis()||-1}get lastFetchStatus(){return this._storageCache.getLastFetchStatus()||"no-fetch-yet"}}function W1(e,t){var n=e.target.error||void 0;return O1.create(t,{originalErrorMessage:n&&(null==n?void 0:n.message)})}const G1="app_namespace_store";class H1{constructor(e,t,n,r=function(){return new Promise((t,n)=>{try{const e=indexedDB.open("firebase_remote_config",1);e.onerror=e=>{n(W1(e,"storage-open"))},e.onsuccess=e=>{t(e.target.result)},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(G1,{keyPath:"compositeKey"})}}catch(e){n(O1.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}})}()){this.appId=e,this.appName=t,this.namespace=n,this.openDbPromise=r}getLastFetchStatus(){return this.get("last_fetch_status")}setLastFetchStatus(e){return this.set("last_fetch_status",e)}getLastSuccessfulFetchTimestampMillis(){return this.get("last_successful_fetch_timestamp_millis")}setLastSuccessfulFetchTimestampMillis(e){return this.set("last_successful_fetch_timestamp_millis",e)}getLastSuccessfulFetchResponse(){return this.get("last_successful_fetch_response")}setLastSuccessfulFetchResponse(e){return this.set("last_successful_fetch_response",e)}getActiveConfig(){return this.get("active_config")}setActiveConfig(e){return this.set("active_config",e)}getActiveConfigEtag(){return this.get("active_config_etag")}setActiveConfigEtag(e){return this.set("active_config_etag",e)}getThrottleMetadata(){return this.get("throttle_metadata")}setThrottleMetadata(e){return this.set("throttle_metadata",e)}deleteThrottleMetadata(){return this.delete("throttle_metadata")}async get(a){const o=await this.openDbPromise;return new Promise((n,t)=>{const e=o.transaction([G1],"readonly"),r=e.objectStore(G1);var i=this.createCompositeKey(a);try{const s=r.get(i);s.onerror=e=>{t(W1(e,"storage-get"))},s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)}}catch(e){t(O1.create("storage-get",{originalErrorMessage:null==e?void 0:e.message}))}})}async set(a,o){const c=await this.openDbPromise;return new Promise((e,t)=>{const n=c.transaction([G1],"readwrite"),r=n.objectStore(G1);var i=this.createCompositeKey(a);try{const s=r.put({compositeKey:i,value:o});s.onerror=e=>{t(W1(e,"storage-set"))},s.onsuccess=()=>{e()}}catch(e){t(O1.create("storage-set",{originalErrorMessage:null==e?void 0:e.message}))}})}async delete(a){const o=await this.openDbPromise;return new Promise((e,t)=>{const n=o.transaction([G1],"readwrite"),r=n.objectStore(G1);var i=this.createCompositeKey(a);try{const s=r.delete(i);s.onerror=e=>{t(W1(e,"storage-delete"))},s.onsuccess=()=>{e()}}catch(e){t(O1.create("storage-delete",{originalErrorMessage:null==e?void 0:e.message}))}})}createCompositeKey(e){return[this.appId,this.appName,this.namespace,e].join()}}class Q1{constructor(e){this.storage=e}getLastFetchStatus(){return this.lastFetchStatus}getLastSuccessfulFetchTimestampMillis(){return this.lastSuccessfulFetchTimestampMillis}getActiveConfig(){return this.activeConfig}async loadFromStorage(){var e=this.storage.getLastFetchStatus(),t=this.storage.getLastSuccessfulFetchTimestampMillis(),n=this.storage.getActiveConfig(),e=await e;e&&(this.lastFetchStatus=e);t=await t;t&&(this.lastSuccessfulFetchTimestampMillis=t);n=await n;n&&(this.activeConfig=n)}setLastFetchStatus(e){return this.lastFetchStatus=e,this.storage.setLastFetchStatus(e)}setLastSuccessfulFetchTimestampMillis(e){return this.lastSuccessfulFetchTimestampMillis=e,this.storage.setLastSuccessfulFetchTimestampMillis(e)}setActiveConfig(e){return this.activeConfig=e,this.storage.setActiveConfig(e)}}async function Y1(){if(!N())return!1;try{return await R()}catch(e){return!1}}He(new le("remote-config",function(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if("undefined"==typeof window)throw O1.create("registration-window");if(!N())throw O1.create("indexed-db-unavailable");var{projectId:i,apiKey:s,appId:a}=n.options;if(!i)throw O1.create("registration-project-id");if(!s)throw O1.create("registration-api-key");if(!a)throw O1.create("registration-app-id");t=t||"firebase";const o=new H1(a,n.name,t),c=new Q1(o),l=new _e(D1);l.logLevel=m.ERROR;a=new z1(r,Xe,t,i,s,a),a=new $1(a,o),a=new j1(a,o,c,l),a=new K1(n,a,c,o,l);return U1(a),a},"PUBLIC").setMultipleInstances(!0)),nt(D1,"0.4.5"),nt(D1,"0.4.5","esm2017");class J1{constructor(e,t){this.app=e,this._delegate=t}get defaultConfig(){return this._delegate.defaultConfig}set defaultConfig(e){this._delegate.defaultConfig=e}get fetchTimeMillis(){return this._delegate.fetchTimeMillis}get lastFetchStatus(){return this._delegate.lastFetchStatus}get settings(){return this._delegate.settings}set settings(e){this._delegate.settings=e}activate(){return F1(this._delegate)}ensureInitialized(){return U1(this._delegate)}fetch(){return V1(this._delegate)}fetchAndActivate(){return async function(e){return await V1(e=ce(e)),F1(e)}(this._delegate)}getAll(){return q1(this._delegate)}getBoolean(e){return B1(ce(this._delegate),e).asBoolean()}getNumber(e){return B1(ce(this._delegate),e).asNumber()}getString(e){return B1(ce(this._delegate),e).asString()}getValue(e){return B1(this._delegate,e)}setLogLevel(e){!function(e,t){const n=ce(e);switch(t){case"debug":n._logger.logLevel=m.DEBUG;break;case"silent":n._logger.logLevel=m.SILENT;break;default:n._logger.logLevel=m.ERROR}}(this._delegate,e)}}function X1(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("remote-config").getImmediate({identifier:t});return new J1(n,r)}return(Mx=It).INTERNAL.registerComponent(new le("remoteConfig-compat",X1,"PUBLIC").setMultipleInstances(!0).setServiceProps({isSupported:Y1})),Mx.registerVersion("@firebase/remote-config-compat","0.2.5"),console.warn("\nIt looks like you're using the development build of the Firebase JS SDK.\nWhen deploying Firebase apps to production, it is advisable to only import\nthe individual SDK components you intend to use.\n\nFor the CDN builds, these are available in the following manner\n(replace <PACKAGE> with the name of a component - i.e. auth, database, etc):\n\nhttps://www.gstatic.com/firebasejs/5.0.0/firebase-<PACKAGE>.js\n"),It.registerVersion("firebase","10.8.0","compat-cdn"),It});
//# sourceMappingURL=firebase-compat.js.map