12345678910 |
- !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 _(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 w(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function b(){return"undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(w())}function I(){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 T(){var e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}function E(){return"object"==typeof navigator&&"ReactNative"===navigator.product}function C(){const e=w();return 0<=e.indexOf("MSIE ")||0<=e.indexOf("Trident/")}function k(){return!0===t.NODE_ADMIN}function S(){try{return"object"==typeof indexedDB}catch(e){return!1}}function A(){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 N(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}class R extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,R.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,D.prototype.create)}}class D{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(P,(e,t)=>{var n=r[t];return null!=n?String(n):`<${t}?>`})):"Error",s=`${this.serviceName}: ${s} (${i}).`;return new R(i,s,n)}}const P=/\{\$([^}]+)}/g;function x(e){return JSON.parse(e)}function O(e){return JSON.stringify(e)}function M(e){let t={},n={},r={},i="";try{var s=e.split(".");t=x(a(s[0])||""),n=x(a(s[1])||""),i=s[2],r=n.d||{},delete n.d}catch(e){}return{header:t,claims:n,data:r,signature:i}}function L(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function F(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]}function U(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function V(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 q(e,t){if(e===t)return 1;const n=Object.keys(e),r=Object.keys(t);for(const a of n){if(!r.includes(a))return;var i=e[a],s=t[a];if(B(i)&&B(s)){if(!q(i,s))return}else if(i!==s)return}for(const o of r)if(!n.includes(o))return;return 1}function B(e){return null!==e&&"object"==typeof e}function j(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 z(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 $(e){var t=e.indexOf("?");if(!t)return"";var n=e.indexOf("#",t);return e.substring(t,0<n?n:void 0)}class K{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 W(e,t){const n=new G(e,t);return n.subscribe.bind(n)}class G{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=H),void 0===r.error&&(r.error=H),void 0===r.complete&&(r.complete=H);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 H(){}function Q(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 Y(e,t){return`${e} failed: ${t} argument `}function J(e,t,n,r){if((!r||n)&&"function"!=typeof n)throw new Error(Y(e,t)+"must be a valid function.")}function X(e,t,n,r){if((!r||n)&&("object"!=typeof n||null===n))throw new Error(Y(e,t)+"must be a valid context object.")}function Z(){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 ee=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},te=1e3,ne=2,re=144e5,ie=.5;function se(e,t=te,n=ne){var r=t*Math.pow(n,e),i=Math.round(ie*r*(Math.random()-.5)*2);return Math.min(re,r+i)}function ae(e){return e&&e._delegate?e._delegate:e}class oe{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 ce="[DEFAULT]";class le{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:ce})}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=ce){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=ce){return this.instances.has(e)}getOptions(e=ce){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)===ce?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=ce){return!this.component||this.component.multipleInstances?e:ce}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class ue{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 le(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const he=[];(Hn=m=m||{})[Hn.DEBUG=0]="DEBUG",Hn[Hn.VERBOSE=1]="VERBOSE",Hn[Hn.INFO=2]="INFO",Hn[Hn.WARN=3]="WARN",Hn[Hn.ERROR=4]="ERROR",Hn[Hn.SILENT=5]="SILENT";const de={debug:m.DEBUG,verbose:m.VERBOSE,info:m.INFO,warn:m.WARN,error:m.ERROR,silent:m.SILENT},pe=m.INFO,fe={[m.DEBUG]:"log",[m.VERBOSE]:"log",[m.INFO]:"info",[m.WARN]:"warn",[m.ERROR]:"error"},ge=(e,t,...n)=>{if(!(t<e.logLevel)){var r=(new Date).toISOString(),i=fe[t];if(!i)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`);console[i](`[${r}] ${e.name}:`,...n)}};class me{constructor(e){this.name=e,this._logLevel=pe,this._logHandler=ge,this._userLogHandler=null,he.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?de[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 ve=(t,e)=>e.some(e=>t instanceof e);let ye,_e;const we=new WeakMap,be=new WeakMap,Ie=new WeakMap,Te=new WeakMap,Ee=new WeakMap;let Ce={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return be.get(e);if("objectStoreNames"===t)return e.objectStoreNames||Ie.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return Ae(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 ke(r){return r!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(_e=_e||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]).includes(r)?function(...e){return r.apply(Ne(this),e),Ae(we.get(this))}:function(...e){return Ae(r.apply(Ne(this),e))}:function(e,...t){var n=r.call(Ne(this),e,...t);return Ie.set(n,e.sort?e.sort():[e]),Ae(n)}}function Se(e){return"function"==typeof e?ke(e):(e instanceof IDBTransaction&&(s=e,be.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)}),be.set(s,t))),ve(e,ye=ye||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])?new Proxy(e,Ce):e);var s,t}function Ae(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(Ae(s.result)),n()},i=()=>{t(s.error),n()};s.addEventListener("success",r),s.addEventListener("error",i)});return e.then(e=>{e instanceof IDBCursor&&we.set(e,s)}).catch(()=>{}),Ee.set(e,s),e}(e);if(Te.has(e))return Te.get(e);var t=Se(e);return t!==e&&(Te.set(e,t),Ee.set(t,e)),t}const Ne=e=>Ee.get(e);function Re(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const a=indexedDB.open(e,t),o=Ae(a);return r&&a.addEventListener("upgradeneeded",e=>{r(Ae(a.result),e.oldVersion,e.newVersion,Ae(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 De(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",e=>t(e.oldVersion,e)),Ae(n).then(()=>{})}const Pe=["get","getKey","getAll","getAllKeys","count"],xe=["put","add","delete","clear"],Oe=new Map;function Me(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(Oe.get(t))return Oe.get(t);const i=t.replace(/FromIndex$/,""),s=t!==i,a=xe.includes(i);if(i in(s?IDBIndex:IDBObjectStore).prototype&&(a||Pe.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 Oe.set(t,n),n}}}Ce={...v=Ce,get:(e,t,n)=>Me(e,t)||v.get(e,t,n),has:(e,t)=>!!Me(e,t)||v.has(e,t)};class Le{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 Fe="@firebase/app",Ue=new me("@firebase/app");var Ve;const qe="[DEFAULT]",Be={"@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"},je=new Map,ze=new Map;function $e(t,n){try{t.container.addComponent(n)}catch(e){Ue.debug(`Component ${n.name} failed to register with FirebaseApp ${t.name}`,e)}}function Ke(e,t){e.container.addOrOverwriteComponent(t)}function We(e){var t=e.name;if(ze.has(t))return Ue.debug(`There were multiple attempts to register component ${t}.`),!1;ze.set(t,e);for(const n of je.values())$e(n,e);return!0}function Ge(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const He=new D("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 Qe{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 oe("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 He.create("app-deleted",{appName:this._name})}}const Ye="9.23.0";function Je(e,t={}){let n=e;if("object"!=typeof t){const i=t;t={name:i}}var r=Object.assign({name:qe,automaticDataCollectionEnabled:!1},t);const i=r.name;if("string"!=typeof i||!i)throw He.create("bad-app-name",{appName:String(i)});if(n=n||g(),!n)throw He.create("no-options");var s=je.get(i);if(s){if(q(n,s.options)&&q(r,s.config))return s;throw He.create("duplicate-app",{appName:i})}const a=new ue(i);for(const o of ze.values())a.addComponent(o);r=new Qe(n,r,a);return je.set(i,r),r}function Xe(e=qe){var t=je.get(e);if(!t&&e===qe&&g())return Je();if(!t)throw He.create("no-app",{appName:e});return t}async function Ze(e){var t=e.name;je.has(t)&&(je.delete(t),await Promise.all(e.container.getProviders().map(e=>e.delete())),e.isDeleted=!0)}function et(e,t,n){let r=null!==(s=Be[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 Ue.warn(a.join(" "))}We(new oe(`${r}-version`,()=>({library:r,version:t}),"VERSION"))}function tt(e,t){if(null!==e&&"function"!=typeof e)throw He.create("invalid-log-argument");!function(s,e){for(const t of he){let i=null;e&&e.level&&(i=de[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 nt(e){var t;t=e,he.forEach(e=>{e.setLogLevel(t)})}const rt="firebase-heartbeat-database",it=1,st="firebase-heartbeat-store";let at=null;function ot(){return at=at||Re(rt,it,{upgrade:(e,t)=>{0===t&&e.createObjectStore(st)}}).catch(e=>{throw He.create("idb-open",{originalErrorMessage:e.message})}),at}async function ct(e,t){try{const r=await ot(),i=r.transaction(st,"readwrite"),s=i.objectStore(st);await s.put(t,lt(e)),await i.done}catch(e){var n;e instanceof R?Ue.warn(e.message):(n=He.create("idb-set",{originalErrorMessage:null==e?void 0:e.message}),Ue.warn(n.message))}}function lt(e){return`${e.name}!${e.options.appId}`}class ut{constructor(e){this.container=e,this._heartbeatsCache=null;var t=this.container.getProvider("app").getImmediate();this._storage=new dt(t),this._heartbeatsCachePromise=this._storage.read().then(e=>this._heartbeatsCache=e)}async triggerHeartbeat(){const e=this.container.getProvider("platform-logger").getImmediate();var t=e.getPlatformInfoString();const n=ht();if(null===this._heartbeatsCache&&(this._heartbeatsCache=await this._heartbeatsCachePromise),this._heartbeatsCache.lastSentHeartbeatDate!==n&&!this._heartbeatsCache.heartbeats.some(e=>e.date===n))return this._heartbeatsCache.heartbeats.push({date:n,agent:t}),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===this._heartbeatsCache||0===this._heartbeatsCache.heartbeats.length)return"";var e=ht(),{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),pt(n)>t){s.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),pt(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 ht(){const e=new Date;return e.toISOString().substring(0,10)}class dt{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!S()&&A().then(()=>!0).catch(()=>!1)}async read(){return await this._canUseIndexedDBPromise&&await async function(e){try{const n=await ot();return await n.transaction(st).objectStore(st).get(lt(e))}catch(e){var t;e instanceof R?Ue.warn(e.message):(t=He.create("idb-get",{originalErrorMessage:null==e?void 0:e.message}),Ue.warn(t.message))}}(this.app)||{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){var n=await this.read();return ct(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 ct(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function pt(e){return s(JSON.stringify({version:2,heartbeats:e})).length}Ve="",We(new oe("platform-logger",e=>new Le(e),"PRIVATE")),We(new oe("heartbeat",e=>new ut(e),"PRIVATE")),et(Fe,"0.9.13",Ve),et(Fe,"0.9.13","esm2017"),et("fire-js","");var ft=Object.freeze({__proto__:null,SDK_VERSION:Ye,_DEFAULT_ENTRY_NAME:qe,_addComponent:$e,_addOrOverwriteComponent:Ke,_apps:je,_clearComponents:function(){ze.clear()},_components:ze,_getProvider:Ge,_registerComponent:We,_removeServiceInstance:function(e,t,n=qe){Ge(e,t).clearInstance(n)},deleteApp:Ze,getApp:Xe,getApps:function(){return Array.from(je.values())},initializeApp:Je,onLog:tt,registerVersion:et,setLogLevel:nt,FirebaseError:R});class gt{constructor(e,t){this._delegate=e,this.firebase=t,$e(e,new oe("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),Ze(this._delegate)))}_getService(e,t=qe){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=qe){this._delegate.container.getProvider(e).clearInstance(t)}_addComponent(e){$e(this._delegate,e)}_addOrOverwriteComponent(e){Ke(this._delegate,e)}toJSON(){return{name:this.name,automaticDataCollectionEnabled:this.automaticDataCollectionEnabled,options:this.options}}}const mt=new D("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 vt(i){const s={},a={__esModule:!0,initializeApp:function(e,t={}){var n=Je(e,t);if(L(s,n.name))return s[n.name];var r=new i(n,a);return s[n.name]=r},app:o,registerVersion:et,setLogLevel:nt,onLog:tt,apps:null,SDK_VERSION:Ye,INTERNAL:{registerComponent:function(n){const r=n.name,t=r.replace("-compat","");{var e;We(n)&&"PUBLIC"===n.type&&(e=(e=o())=>{if("function"!=typeof e[t])throw mt.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:ft}};function o(e){if(e=e||qe,!L(s,e))throw mt.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 yt=function e(){const t=vt(gt);return t.INTERNAL=Object.assign(Object.assign({},t.INTERNAL),{createFirebaseNamespace:e,extendNamespace:function(e){c(t,e)},createSubscribe:W,ErrorFactory:D,deepExtend:c}),t}();const _t=new me("@firebase/app-compat");if("object"==typeof self&&self.self===self&&void 0!==self.firebase){_t.warn(`
- Warning: Firebase is already defined in the global scope. Please make sure
- Firebase library is only loaded once.
- `);const Q1=self.firebase.SDK_VERSION;Q1&&0<=Q1.indexOf("LITE")&&_t.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 wt=yt;et("@firebase/app-compat","0.2.13",void 0);wt.registerVersion("firebase","9.23.0","app-compat");var bt="@firebase/installations",It="0.6.4";const Tt=1e4,Et="w:0.6.4",Ct="FIS_v2",kt="https://firebaseinstallations.googleapis.com/v1",St=36e5;const At=new D("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 Nt(e){return e instanceof R&&e.code.includes("request-failed")}function Rt({projectId:e}){return`${kt}/projects/${e}/installations`}function Dt(e){return{token:e.token,requestStatus:2,expiresIn:(e=e.expiresIn,Number(e.replace("s","000"))),creationTime:Date.now()}}async function Pt(e,t){var n=(await t.json()).error;return At.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function xt({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function Ot(e,{refreshToken:t}){const n=xt(e);return n.append("Authorization",(t=t,`${Ct} ${t}`)),n}async function Mt(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function Lt(t){return new Promise(e=>{setTimeout(e,t)})}const Ft=/^[cdef][\w-]{21}$/,Ut="";function Vt(){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 Ft.test(e)?e:Ut}catch(e){return Ut}}function qt(e){return`${e.appName}!${e.appId}`}const Bt=new Map;function jt(e,t){var n=qt(e);zt(n,t),function(e,t){const n=function(){!$t&&"BroadcastChannel"in self&&($t=new BroadcastChannel("[Firebase] FID Change"),$t.onmessage=e=>{zt(e.data.key,e.data.fid)});return $t}();n&&n.postMessage({key:e,fid:t});0===Bt.size&&$t&&($t.close(),$t=null)}(n,t)}function zt(e,t){var n=Bt.get(e);if(n)for(const r of n)r(t)}let $t=null;const Kt="firebase-installations-store";let Wt=null;function Gt(){return Wt=Wt||Re("firebase-installations-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(Kt)}}),Wt}async function Ht(e,t){var n=qt(e);const r=await Gt(),i=r.transaction(Kt,"readwrite"),s=i.objectStore(Kt);var a=await s.get(n);return await s.put(t,n),await i.done,a&&a.fid===t.fid||jt(e,t.fid),t}async function Qt(e){var t=qt(e);const n=await Gt(),r=n.transaction(Kt,"readwrite");await r.objectStore(Kt).delete(t),await r.done}async function Yt(e,t){var n=qt(e);const r=await Gt(),i=r.transaction(Kt,"readwrite"),s=i.objectStore(Kt);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||jt(e,o.fid),o}async function Jt(n){let r;var e=await Yt(n.appConfig,e=>{var t=Zt(e||{fid:Vt(),registrationStatus:0}),t=function(e,t){{if(0!==t.registrationStatus)return 1===t.registrationStatus?{installationEntry:t,registrationPromise:async function(e){let t=await Xt(e.appConfig);for(;1===t.registrationStatus;)await Lt(100),t=await Xt(e.appConfig);if(0!==t.registrationStatus)return t;{var{installationEntry:n,registrationPromise:r}=await Jt(e);return r||n}}(e)}:{installationEntry:t};if(!navigator.onLine){var n=Promise.reject(At.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=Rt(e),i=xt(e),s=t.getImmediate({optional:!0});!s||(a=await s.getHeartbeatsHeader())&&i.append("x-firebase-client",a);var a={fid:n,authVersion:Ct,appId:e.appId,sdkVersion:Et};const o={method:"POST",headers:i,body:JSON.stringify(a)},c=await Mt(()=>fetch(r,o));if(c.ok){a=await c.json();return{fid:a.fid||n,registrationStatus:2,refreshToken:a.refreshToken,authToken:Dt(a.authToken)}}throw await Pt("Create Installation",c)}(t,n);return Ht(t.appConfig,e)}catch(e){throw Nt(e)&&409===e.customData.serverCode?await Qt(t.appConfig):await Ht(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===Ut?{installationEntry:await r}:{installationEntry:e,registrationPromise:r}}function Xt(e){return Yt(e,e=>{if(!e)throw At.create("installation-not-found");return Zt(e)})}function Zt(e){return 1===(t=e).registrationStatus&&t.registrationTime+Tt<Date.now()?{fid:e.fid,registrationStatus:0}:e;var t}async function en({appConfig:e,heartbeatServiceProvider:t},n){const r=([i,s]=[e,n["fid"]],`${Rt(i)}/${s}/authTokens:generate`);var i,s;const a=Ot(e,n),o=t.getImmediate({optional:!0});!o||(c=await o.getHeartbeatsHeader())&&a.append("x-firebase-client",c);var c={installation:{sdkVersion:Et,appId:e.appId}};const l={method:"POST",headers:a,body:JSON.stringify(c)},u=await Mt(()=>fetch(r,l));if(u.ok)return Dt(await u.json());throw await Pt("Generate Auth Token",u)}async function tn(r,i=!1){let s;var e=await Yt(r.appConfig,e=>{if(!rn(e))throw At.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+St}(t)){if(1===n.requestStatus)return s=async function(e,t){let n=await nn(e.appConfig);for(;1===n.authToken.requestStatus;)await Lt(100),n=await nn(e.appConfig);var r=n.authToken;return 0===r.requestStatus?tn(e,t):r}(r,i),e;if(!navigator.onLine)throw At.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 en(t,n),e=Object.assign(Object.assign({},n),{authToken:r});return await Ht(t.appConfig,e),r}catch(e){throw!Nt(e)||401!==e.customData.serverCode&&404!==e.customData.serverCode?(r=Object.assign(Object.assign({},n),{authToken:{requestStatus:0}}),await Ht(t.appConfig,r)):await Qt(t.appConfig),e}}(r,n),n}return e});return s?await s:e.authToken}function nn(e){return Yt(e,e=>{if(!rn(e))throw At.create("not-registered");var t,n=e.authToken;return 1===(t=n).requestStatus&&t.requestTime+Tt<Date.now()?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e})}function rn(e){return void 0!==e&&2===e.registrationStatus}async function sn(e,t=!1){var n,r=e;return await((n=(await Jt(r)).registrationPromise)&&await n),(await tn(r,t)).token}function an(e){return At.create("missing-app-config-values",{valueName:e})}const on="installations",cn=e=>{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:function(e){if(!e||!e.options)throw an("App Configuration");if(!e.name)throw an("App Name");for(const t of["projectId","apiKey","appId"])if(!e.options[t])throw an(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t),heartbeatServiceProvider:Ge(t,"heartbeat"),_delete:()=>Promise.resolve()}},ln=e=>{const t=Ge(e.getProvider("app").getImmediate(),on).getImmediate();return{getId:()=>async function(e){var t=e;const{installationEntry:n,registrationPromise:r}=await Jt(t);return(r||tn(t)).catch(console.error),n.fid}(t),getToken:e=>sn(t,e)}};We(new oe(on,cn,"PUBLIC")),We(new oe("installations-internal",ln,"PRIVATE")),et(bt,It),et(bt,It,"esm2017");const un="analytics",hn="firebase_id",dn="origin",pn="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",fn="https://www.googletagmanager.com/gtag/js",gn=new me("@firebase/analytics"),mn=new D("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 vn(e){if(e.startsWith(fn))return e;var t=mn.create("invalid-gtag-resource",{gtagURL:e});return gn.warn(t.message),""}function yn(e){return Promise.all(e.map(e=>e.catch(e=>e)))}function _n(e,t){const n=function(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy(e,t)),n}("firebase-js-sdk-policy",{createScriptURL:vn}),r=document.createElement("script");var i=`${fn}?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 wn(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 yn(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){gn.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 yn(n);var o=c.find(e=>e.measurementId===i);o&&await t[o.appId]}}catch(e){gn.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){gn.error(e)}}}const bn=30;const In=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 Tn(e){var t,{appId:n,apiKey:r}=e,r={method:"GET",headers:new Headers({Accept:"application/json","x-goog-api-key":r})},n=pn.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 mn.create("config-fetch-failed",{httpStatus:i.status,responseMessage:e})}}async function En(e,t=In,n){var{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw mn.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw mn.create("no-api-key")}var a=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()};const o=new Sn;return setTimeout(async()=>{o.abort()},void 0!==n?n:6e4),async function t(n,{throttleEndTimeMillis:e,backoffCount:r},i,s=In){var a;const{appId:o,measurementId:c}=n;try{await Cn(i,e)}catch(e){if(c)return gn.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 Tn(n);return s.deleteThrottleMetadata(o),l}catch(e){const u=e;if(!kn(u)){if(s.deleteThrottleMetadata(o),c)return gn.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)?se(r,s.intervalMillis,bn):se(r,s.intervalMillis),d={throttleEndTimeMillis:Date.now()+h,backoffCount:r+1};return s.setThrottleMetadata(o,d),gn.debug(`Calling attemptFetch again in ${h} millis`),t(n,d,i,s)}}({appId:r,apiKey:i,measurementId:s},a,o,t)}function Cn(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(mn.create("fetch-throttle",{throttleEndTimeMillis:s}))})})}function kn(e){if(!(e instanceof R&&e.customData))return!1;var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}class Sn{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function An(t,e,n,r,i,s,a){const o=En(t);o.then(e=>{n[e.measurementId]=e.appId,t.options.measurementId&&e.measurementId!==t.options.measurementId&&gn.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=>gn.error(e)),e.push(o);var c=async function(){if(!S())return gn.warn(mn.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await A()}catch(e){return gn.warn(mn.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(fn)&&n.src.includes(e))return n}(s)&&_n(s,l.measurementId),i("js",new Date);const h=null!==(c=null==a?void 0:a.config)&&void 0!==c?c:{};return h[dn]="firebase",h.update=!0,null!=u&&(h[hn]=u),i("config",l.measurementId,h),l.measurementId}class Nn{constructor(e){this.app=e}_delete(){return delete Rn[this.app.options.appId],Promise.resolve()}}let Rn={},Dn=[];const Pn={};let xn="dataLayer",On="gtag",Mn,Ln,Fn=!1;function Un(e){if(Fn)throw mn.create("already-initialized");e.dataLayerName&&(xn=e.dataLayerName),e.gtagName&&(On=e.gtagName)}function Vn(e,t,n){!function(){const e=[];var t;T()&&e.push("This is a browser extension environment."),N()||e.push("Cookies are not available."),0<e.length&&(t=e.map((e,t)=>`(${t+1}) ${e}`).join(" "),t=mn.create("invalid-analytics-context",{errorInfo:t}),gn.warn(t.message))}();var r,i,s=e.options.appId;if(!s)throw mn.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw mn.create("no-api-key");gn.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!=Rn[s])throw mn.create("already-exists",{id:s});return Fn||(function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t,t}(xn),{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]=wn(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(Rn,Dn,Pn,xn,On),Ln=r,Mn=i,Fn=!0),Rn[s]=An(e,Dn,Pn,t,Mn,xn,n),new Nn(e)}async function qn(){if(T())return!1;if(!N())return!1;if(!S())return!1;try{return await A()}catch(e){return!1}}function Bn(e,t,n){e=ae(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})}(Ln,Rn[e.app.options.appId],t,n).catch(e=>gn.error(e))}function jn(e,t,n){e=ae(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})}(Ln,Rn[e.app.options.appId],t,n).catch(e=>gn.error(e))}function zn(e,t,n){e=ae(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})}(Ln,Rn[e.app.options.appId],t,n).catch(e=>gn.error(e))}function $n(e,t){e=ae(e),async function(e,t){var n=await e;window[`ga-disable-${n}`]=!t}(Rn[e.app.options.appId],t).catch(e=>gn.error(e))}function Kn(e,t,n,r){e=ae(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})))}(Ln,Rn[e.app.options.appId],t,n,r).catch(e=>gn.error(e))}const Wn="@firebase/analytics";We(new oe(un,(e,{options:t})=>{return Vn(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)},"PUBLIC")),We(new oe("analytics-internal",function(e){try{const r=e.getProvider(un).getImmediate();return{logEvent:(e,t,n)=>Kn(r,e,t,n)}}catch(e){throw mn.create("interop-component-reg-failed",{reason:e})}},"PRIVATE")),et(Wn,"0.10.0"),et(Wn,"0.10.0","esm2017");var Gn,Hn,Qn;class Yn{constructor(e,t){this.app=e,this._delegate=t}logEvent(e,t,n){Kn(this._delegate,e,t,n)}setCurrentScreen(e,t){Bn(this._delegate,e,t)}setUserId(e,t){jn(this._delegate,e,t)}setUserProperties(e,t){zn(this._delegate,e,t)}setAnalyticsCollectionEnabled(e){$n(this._delegate,e)}}(Hn=Gn=Gn||{}).ADD_SHIPPING_INFO="add_shipping_info",Hn.ADD_PAYMENT_INFO="add_payment_info",Hn.ADD_TO_CART="add_to_cart",Hn.ADD_TO_WISHLIST="add_to_wishlist",Hn.BEGIN_CHECKOUT="begin_checkout",Hn.CHECKOUT_PROGRESS="checkout_progress",Hn.EXCEPTION="exception",Hn.GENERATE_LEAD="generate_lead",Hn.LOGIN="login",Hn.PAGE_VIEW="page_view",Hn.PURCHASE="purchase",Hn.REFUND="refund",Hn.REMOVE_FROM_CART="remove_from_cart",Hn.SCREEN_VIEW="screen_view",Hn.SEARCH="search",Hn.SELECT_CONTENT="select_content",Hn.SELECT_ITEM="select_item",Hn.SELECT_PROMOTION="select_promotion",Hn.SET_CHECKOUT_OPTION="set_checkout_option",Hn.SHARE="share",Hn.SIGN_UP="sign_up",Hn.TIMING_COMPLETE="timing_complete",Hn.VIEW_CART="view_cart",Hn.VIEW_ITEM="view_item",Hn.VIEW_ITEM_LIST="view_item_list",Hn.VIEW_PROMOTION="view_promotion",Hn.VIEW_SEARCH_RESULTS="view_search_results";const Jn=e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("analytics").getImmediate();return new Yn(t,n)};Qn={Analytics:Yn,settings:Un,isSupported:qn,EventName:Gn},wt.INTERNAL.registerComponent(new oe("analytics-compat",Jn,"PUBLIC").setServiceProps(Qn).setMultipleInstances(!0)),wt.registerVersion("@firebase/analytics-compat","0.2.6");const Xn=new Map,Zn={activated:!1,tokenObservers:[]},er={initialized:!1,enabled:!1};function tr(e){return Xn.get(e)||Object.assign({},Zn)}const nr="https://content-firebaseappcheck.googleapis.com/v1",rr="exchangeDebugToken",ir={OFFSET_DURATION:3e5,RETRIAL_MIN_WAIT:3e4,RETRIAL_MAX_WAIT:96e4};class sr{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,t=this.getNextRun(e),await new Promise(e=>{setTimeout(e,t)}),this.pending.resolve(),await this.pending.promise,this.pending=new y,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 ar=new D("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 or(e=!1){var t;return e?null===(t=self.grecaptcha)||void 0===t?void 0:t.enterprise:self.grecaptcha}function cr(e){if(!tr(e).activated)throw ar.create("use-before-activation",{appName:e.name})}function lr(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+=ur(n)+"d:"),r&&(s+=ur(r)+"h:"),s+=ur(i)+"m:"+ur(t)+"s",s}function ur(e){return 0===e?"00":10<=e?e.toString():"0"+e}async function hr({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 ar.create("fetch-network-error",{originalErrorMessage:null==e?void 0:e.message})}if(200!==a.status)throw ar.create("fetch-status-error",{httpStatus:a.status});let o;try{o=await a.json()}catch(e){throw ar.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 ar.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 dr(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${nr}/projects/${n}/apps/${r}:${rr}?key=${i}`,body:{debug_token:t}}}const pr="firebase-app-check-database",fr=1,gr="firebase-app-check-store",mr="debug-token";let vr=null;function yr(){return vr||(vr=new Promise((t,n)=>{try{const e=indexedDB.open(pr,fr);e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{var t;n(ar.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(gr,{keyPath:"compositeKey"})}}catch(e){n(ar.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}}),vr)}async function _r(e,t){const n=await yr(),r=n.transaction(gr,"readwrite"),i=r.objectStore(gr),s=i.put({compositeKey:e,value:t});return new Promise((t,n)=>{s.onsuccess=e=>{t()},r.onerror=e=>{var t;n(ar.create("storage-set",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}async function wr(e){const t=await yr(),i=t.transaction(gr,"readonly"),n=i.objectStore(gr),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(ar.create("storage-get",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}function br(e){return`${e.options.appId}-${e.name}`}const Ir=new me("@firebase/app-check");async function Tr(t){if(S()){let e=void 0;try{e=await wr(br(t))}catch(e){Ir.warn(`Failed to read token from IndexedDB. Error: ${e}`)}return e}}function Er(e,t){return S()?_r(br(e),t).catch(e=>{Ir.warn(`Failed to write token to IndexedDB. Error: ${e}`)}):Promise.resolve()}async function Cr(){let e=void 0;try{e=await wr(mr)}catch(e){}if(e)return e;var t,n=Z();return t=n,_r(mr,t).catch(e=>Ir.warn(`Failed to persist debug token to IndexedDB. Error: ${e}`)),n}function kr(){return er.enabled}async function Sr(){var e=er;if(e.enabled&&e.token)return e.token.promise;throw Error(`
- Can't get debug token in production mode.
- `)}const Ar={error:"UNKNOWN_ERROR"};async function Nr(e,t=!1){var n=e.app;cr(n);const r=tr(n);let i=r.token,s=void 0;if(i&&!Or(i)&&(r.token=void 0,i=void 0),i||(o=await r.cachedTokenPromise)&&(Or(o)?i=o:await Er(n,void 0)),!t&&i&&Or(i))return{token:i.token};let a=!1;if(kr()){r.exchangeTokenPromise||(r.exchangeTokenPromise=hr(dr(n,await Sr()),e.heartbeatServiceProvider).finally(()=>{r.exchangeTokenPromise=void 0}),a=!0);var o=await r.exchangeTokenPromise;return await Er(n,o),{token:(r.token=o).token}}try{r.exchangeTokenPromise||(r.exchangeTokenPromise=r.provider.getToken().finally(()=>{r.exchangeTokenPromise=void 0}),a=!0),i=await tr(n).exchangeTokenPromise}catch(e){"appCheck/throttled"===e.code?Ir.warn(e.message):Ir.error(e),s=e}let c;return i?s?c=Or(i)?{token:i.token,internalError:s}:Mr(s):(c={token:i.token},r.token=i,await Er(n,i)):c=Mr(s),a&&xr(n,c),c}function Rr(e,t,n,r){var i=e["app"];const s=tr(i);i={next:n,error:r,type:t};if(s.tokenObservers=[...s.tokenObservers,i],s.token&&Or(s.token)){const a=s.token;Promise.resolve().then(()=>{n({token:a.token}),Pr(e)}).catch(()=>{})}s.cachedTokenPromise.then(()=>Pr(e))}function Dr(e,t){const n=tr(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 Pr(e){var t=e["app"];const n=tr(t);let r=n.tokenRefresher;r||(r=function(n){const r=n["app"];return new sr(async()=>{var e=tr(r);let t;if(t=e.token?await Nr(n,!0):await Nr(n),t.error)throw t.error;if(t.internalError)throw t.internalError},()=>!0,()=>{var e=tr(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},ir.RETRIAL_MIN_WAIT,ir.RETRIAL_MAX_WAIT)}(e),n.tokenRefresher=r),!r.isRunning()&&n.isTokenAutoRefreshEnabled&&r.start()}function xr(e,t){for(const n of tr(e).tokenObservers)try{"EXTERNAL"===n.type&&null!=t.error?n.error(t.error):n.next(t)}catch(e){}}function Or(e){return 0<e.expireTimeMillis-Date.now()}function Mr(e){return{token:(t=Ar,r.encodeString(JSON.stringify(t),!1)),error:e};var t}class Lr{constructor(e,t){this.app=e,this.heartbeatServiceProvider=t}_delete(){var e=tr(this.app)["tokenObservers"];for(const t of e)Dr(this.app,t.next);return Promise.resolve()}}function Fr(t){return{getToken:e=>Nr(t,e),getLimitedUseToken:()=>async function(e){var t=e.app;cr(t);const n=tr(t)["provider"];if(kr()){var r=(await hr(dr(t,await Sr()),e.heartbeatServiceProvider))["token"];return{token:r}}return{token:r=(await n.getToken())["token"]}}(t),addTokenListener:e=>Rr(t,"INTERNAL",e),removeTokenListener:e=>Dr(t.app,e)}}const Ur="https://www.google.com/recaptcha/api.js",Vr="https://www.google.com/recaptcha/enterprise.js";function qr(t,n){const r=new y,e=tr(t);e.reCAPTCHAState={initialized:r};const i=zr(t);var s=or(!1);return s?jr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=Ur,t.onload=e,document.head.appendChild(t)}(()=>{var e=or(!1);if(!e)throw new Error("no recaptcha");jr(t,n,e,i,r)}),r.promise}function Br(t,n){const r=new y,e=tr(t);e.reCAPTCHAState={initialized:r};const i=zr(t);var s=or(!0);return s?jr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=Vr,t.onload=e,document.head.appendChild(t)}(()=>{var e=or(!0);if(!e)throw new Error("no recaptcha");jr(t,n,e,i,r)}),r.promise}function jr(e,t,n,r,i){n.ready(()=>{!function(e,t,n,r){const i=n.render(r,{sitekey:t,size:"invisible",callback:()=>{tr(e).reCAPTCHAState.succeeded=!0},"error-callback":()=>{tr(e).reCAPTCHAState.succeeded=!1}}),s=tr(e);s.reCAPTCHAState=Object.assign(Object.assign({},s.reCAPTCHAState),{widgetId:i})}(e,t,n,r),i.resolve(n)})}function zr(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 $r(r){cr(r);const i=await tr(r).reCAPTCHAState.initialized.promise;return new Promise((e,t)=>{const n=tr(r).reCAPTCHAState;i.ready(()=>{e(i.execute(n.widgetId,{action:"fire_app_check"}))})})}class Kr{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){var e;Qr(this._throttleData);var t=await $r(this._app).catch(e=>{throw ar.create("recaptcha-error")});if(null===(e=tr(this._app).reCAPTCHAState)||void 0===e||!e.succeeded)throw ar.create("recaptcha-error");let n;try{n=await hr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${nr}/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=Hr(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),ar.create("throttled",{time:lr(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,n}initialize(e){this._app=e,this._heartbeatServiceProvider=Ge(e,"heartbeat"),qr(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof Kr&&this._siteKey===e._siteKey}}class Wr{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){var e;Qr(this._throttleData);var t=await $r(this._app).catch(e=>{throw ar.create("recaptcha-error")});if(null===(e=tr(this._app).reCAPTCHAState)||void 0===e||!e.succeeded)throw ar.create("recaptcha-error");let n;try{n=await hr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${nr}/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=Hr(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),ar.create("throttled",{time:lr(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,n}initialize(e){this._app=e,this._heartbeatServiceProvider=Ge(e,"heartbeat"),Br(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof Wr&&this._siteKey===e._siteKey}}class Gr{constructor(e){this._customProviderOptions=e}async getToken(){var e=await this._customProviderOptions.getToken(),t=function(e){const t=M(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 Gr&&this._customProviderOptions.getToken.toString()===e._customProviderOptions.getToken.toString()}}function Hr(e,t){if(404===e||403===e)return{backoffCount:1,allowRequestsAfter:Date.now()+864e5,httpStatus:e};var n=t?t.backoffCount:0,r=se(n,1e3,2);return{backoffCount:n+1,allowRequestsAfter:Date.now()+r,httpStatus:e}}function Qr(e){if(e&&Date.now()-e.allowRequestsAfter<=0)throw ar.create("throttled",{time:lr(e.allowRequestsAfter-Date.now()),httpStatus:e.httpStatus})}function Yr(e=Xe(),t){const n=Ge(e=ae(e),"app-check");if(er.initialized||function(){var e=o();const t=er;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(Cr())}}(),kr()&&Sr().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 ar.create("already-initialized",{appName:e.name})}r=n.initialize({options:t});return function(t,e,n){const r=function(e,t){return Xn.set(e,t),Xn.get(e)}(t,Object.assign({},Zn));r.activated=!0,r.provider=e,r.cachedTokenPromise=Tr(t).then(e=>(e&&Or(e)&&(r.token=e,xr(t,{token:e.token})),e)),r.isTokenAutoRefreshEnabled=void 0===n?t.automaticDataCollectionEnabled:n,r.provider.initialize(t)}(e,t.provider,t.isTokenAutoRefreshEnabled),tr(e).isTokenAutoRefreshEnabled&&Rr(r,"INTERNAL",()=>{}),r}const Jr="app-check-internal";We(new oe("app-check",e=>{var t,n=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat");return t=n,e=r,new Lr(t,e)},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{e.getProvider(Jr).initialize()})),We(new oe(Jr,e=>{return Fr(e.getProvider("app-check").getImmediate())},"PUBLIC").setInstantiationMode("EXPLICIT")),et("@firebase/app-check","0.8.0");const Xr=new D("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 Zr{constructor(e){this.app=e}activate(e,t){let n;n="string"==typeof e?new Kr(e):e instanceof Wr||e instanceof Kr||e instanceof Gr?e:new Gr({getToken:e.getToken}),this._delegate=Yr(this.app,{provider:n,isTokenAutoRefreshEnabled:t})}setTokenAutoRefreshEnabled(e){if(!this._delegate)throw Xr.create("use-before-activation",{appName:this.app.name});!function(e,t){const n=tr(e.app);n.tokenRefresher&&(!0===t?n.tokenRefresher.start():n.tokenRefresher.stop()),n.isTokenAutoRefreshEnabled=t}(this._delegate,e)}getToken(e){if(!this._delegate)throw Xr.create("use-before-activation",{appName:this.app.name});return async function(e,t){var n=await Nr(e,t);if(n.error)throw n.error;return{token:n.token}}(this._delegate,e)}onTokenChanged(e,t,n){if(!this._delegate)throw Xr.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),Rr(e,"EXTERNAL",r,i),()=>Dr(e.app,r)}(this._delegate,e,t)}}const ei=e=>{var t=e.getProvider("app-compat").getImmediate();return new Zr(t)};function ti(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}wt.INTERNAL.registerComponent(new oe("appCheck-compat",ei,"PUBLIC").setServiceProps({ReCaptchaEnterpriseProvider:Wr,ReCaptchaV3Provider:Kr,CustomProvider:Gr})),wt.registerVersion("@firebase/app-check-compat","0.3.7");const ni={FACEBOOK:"facebook.com",GITHUB:"github.com",GOOGLE:"google.com",PASSWORD:"password",PHONE:"phone",TWITTER:"twitter.com"},ri={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 ii(){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 si(){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 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."}}const ai=ii,oi=new D("auth","Firebase",ii()),ci=new me("@firebase/auth");function li(e,...t){ci.logLevel<=m.ERROR&&ci.error(`Auth (${Ye}): ${e}`,...t)}function ui(e,...t){throw fi(e,...t)}function hi(e,...t){return fi(e,...t)}function di(e,t,n){var r=Object.assign(Object.assign({},ai()),{[t]:n});const i=new D("auth","Firebase",r);return i.create(t,{appName:e.name})}function pi(e,t,n){if(!(t instanceof n))throw n.name!==t.constructor.name&&ui(e,"argument-error"),di(e,"argument-error",`Type of ${t.constructor.name} does not match expected instance.`+"Did you pass a reference from a different Auth SDK?")}function fi(e,...t){if("string"==typeof e)return oi.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 gi(e,t,...n){if(!e)throw fi(t,...n)}function mi(e){var t="INTERNAL ASSERTION FAILED: "+e;throw li(t),new Error(t)}function vi(e,t){e||mi(t)}function yi(){var e;return"undefined"!=typeof self&&(null===(e=self.location)||void 0===e?void 0:e.href)||""}function _i(){return"http:"===wi()||"https:"===wi()}function wi(){var e;return"undefined"!=typeof self&&(null===(e=self.location)||void 0===e?void 0:e.protocol)||null}class bi{constructor(e,t){vi((this.shortDelay=e)<(this.longDelay=t),"Short delay should be less than long delay!"),this.isMobile=b()||E()}get(){return"undefined"!=typeof navigator&&navigator&&"onLine"in navigator&&"boolean"==typeof navigator.onLine&&(_i()||T()||"connection"in navigator)&&!navigator.onLine?Math.min(5e3,this.shortDelay):this.isMobile?this.longDelay:this.shortDelay}}function Ii(e,t){vi(e.emulator,"Emulator should always be set here");var n=e.emulator["url"];return t?`${n}${t.startsWith("/")?t.slice(1):t}`:n}class Ti{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:void mi("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:void mi("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:void mi("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill"))}}const Ei={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",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",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"},Ci=new bi(3e4,6e4);function ki(e,t){return e.tenantId&&!t.tenantId?Object.assign(Object.assign({},t),{tenantId:e.tenantId}):t}async function Si(i,s,a,o,e={}){return Ai(i,e,async()=>{let e={},t={};o&&("GET"===s?t=o:e={body:JSON.stringify(o)});var n=j(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),Ti.fetch()(Ri(i,i.config.apiHost,a,n),Object.assign({method:s,headers:r,referrerPolicy:"no-referrer"},e))})}async function Ai(t,e,n){t._canInitEmulator=!1;var r=Object.assign(Object.assign({},Ei),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 Pi(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 Pi(t,"credential-already-in-use",i);if("EMAIL_EXISTS"===l)throw Pi(t,"email-already-in-use",i);if("USER_DISABLED"===l)throw Pi(t,"user-disabled",i);var s=r[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(u)throw di(t,s,u);ui(t,s)}}catch(e){if(e instanceof R)throw e;ui(t,"network-request-failed",{message:String(e)})}}async function Ni(e,t,n,r,i={}){var s=await Si(e,t,n,r,i);return"mfaPendingCredential"in s&&ui(e,"multi-factor-auth-required",{_serverResponse:s}),s}function Ri(e,t,n,r){var i=`${t}${n}?${r}`;return e.config.emulator?Ii(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(hi(this.auth,"network-request-failed")),Ci.get())})}clearNetworkTimeout(){clearTimeout(this.timer)}}function Pi(e,t,n){const r={appName:e.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);const i=hi(e,t,r);return i.customData._tokenResponse=n,i}function xi(e){if(e)try{const t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}function Oi(e){return 1e3*Number(e)}function Mi(e){var[t,n,r]=e.split(".");if(void 0===t||void 0===n||void 0===r)return li("JWT malformed, contained fewer than 3 sections"),null;try{var i=a(n);return i?JSON.parse(i):(li("Failed to decode base64 JWT payload"),null)}catch(e){return li("Caught error parsing JWT payload as JSON",null==e?void 0:e.toString()),null}}async function Li(t,n,e=!1){if(e)return n;try{return n}catch(e){throw e instanceof R&&(n=[e["code"]][0],"auth/user-disabled"===n||"auth/user-token-expired"===n)&&t.auth.currentUser===t&&await t.auth.signOut(),e}}class Fi{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 Ui{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=xi(this.lastLoginAt),this.creationTime=xi(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function Vi(e){var t=e.auth,n=await e.getIdToken(),r=await Li(e,async function(e,t){return Si(e,"POST","/v1/accounts:lookup",t)}(t,{idToken:n}));gi(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=ti(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 Ui(i.createdAt,i.lastLoginAt),isAnonymous:t};Object.assign(e,t)}class qi{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){gi(e.idToken,"internal-error"),gi(void 0!==e.idToken,"internal-error"),gi(void 0!==e.refreshToken,"internal-error");var t,n,n="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):(t=e.idToken,gi(n=Mi(t),"internal-error"),gi(void 0!==n.exp,"internal-error"),gi(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 gi(!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 Ai(i=e,{},async()=>{var e=j({grant_type:"refresh_token",refresh_token:s}).slice(1),{tokenApiHost:t,apiKey:n}=i.config,n=Ri(i,t,"/v1/token",`key=${n}`);const r=await i._getAdditionalHeaders();return r["Content-Type"]="application/x-www-form-urlencoded",Ti.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 qi;return n&&(gi("string"==typeof n,"internal-error",{appName:e}),s.refreshToken=n),r&&(gi("string"==typeof r,"internal-error",{appName:e}),s.accessToken=r),i&&(gi("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 qi,this.toJSON())}_performRefresh(){return mi("not implemented")}}function Bi(e,t){gi("string"==typeof e||void 0===e,"internal-error",{appName:t})}class ji{constructor(e){var{uid:t,auth:n,stsTokenManager:r}=e,i=ti(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new Fi(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 Ui(i.createdAt||void 0,i.lastLoginAt||void 0)}async getIdToken(e){var t=await Li(this,this.stsTokenManager.getToken(this.auth,e));return gi(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=ae(e);var r=await n.getIdToken(t),i=Mi(r);gi(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:xi(Oi(i.auth_time)),issuedAtTime:xi(Oi(i.iat)),expirationTime:xi(Oi(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=ae(e);await Vi(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}(this)}_assign(e){this!==e&&(gi(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 ji(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}));return t.metadata._copy(this.metadata),t}_onReload(e){gi(!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 Vi(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){var e=await this.getIdToken();return await Li(this,async function(e,t){return Si(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;gi(u&&f,e,"internal-error");var g=qi.fromJSON(this.name,f);gi("string"==typeof u,e,"internal-error"),Bi(n,e.name),Bi(r,e.name),gi("boolean"==typeof h,e,"internal-error"),gi("boolean"==typeof d,e,"internal-error"),Bi(i,e.name),Bi(s,e.name),Bi(a,e.name),Bi(o,e.name),Bi(c,e.name),Bi(l,e.name);const m=new ji({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 qi;r.updateFromServerResponse(t);var i=new ji({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:n});return await Vi(i),i}}const zi=new Map;function $i(e){vi(e instanceof Function,"Expected a class definition");let t=zi.get(e);return t?vi(t instanceof e,"Instance stored in cache mismatched with class"):(t=new e,zi.set(e,t)),t}class Ki{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){}}Ki.type="NONE";const Wi=Ki;function Gi(e,t,n){return`firebase:${e}:${t}:${n}`}class Hi{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;var{config:r,name:i}=this.auth;this.fullUserKey=Gi(this.userKey,r.apiKey,i),this.fullPersistenceKey=Gi("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?ji._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 Hi($i(Wi),e,n);const r=(await Promise.all(t.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e);let i=r[0]||$i(Wi);const s=Gi(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=ji._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 Hi(i,e,n)}}function Qi(e){const t=e.toLowerCase();if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(Zi(t))return"IEMobile";if(t.includes("msie")||t.includes("trident/"))return"IE";if(t.includes("edge/"))return"Edge";if(Yi(t))return"Firefox";if(t.includes("silk/"))return"Silk";if(ts(t))return"Blackberry";if(ns(t))return"Webos";if(Ji(t))return"Safari";if((t.includes("chrome/")||Xi(t))&&!t.includes("edge/"))return"Chrome";if(es(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 Yi(e=w()){return/firefox\//i.test(e)}function Ji(e=w()){const t=e.toLowerCase();return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function Xi(e=w()){return/crios\//i.test(e)}function Zi(e=w()){return/iemobile/i.test(e)}function es(e=w()){return/android/i.test(e)}function ts(e=w()){return/blackberry/i.test(e)}function ns(e=w()){return/webos/i.test(e)}function rs(e=w()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function is(e=w()){return rs(e)||es(e)||ns(e)||ts(e)||/windows phone/i.test(e)||Zi(e)}function ss(e,t=[]){let n;switch(e){case"Browser":n=Qi(w());break;case"Worker":n=`${Qi(w())}-${e}`;break;default:n=e}var r=t.length?t.join(","):"FirebaseCore-web";return`${n}/JsCore/${Ye}/${r}`}async function as(e,t){return Si(e,"GET","/v2/recaptchaConfig",ki(e,t))}function os(e){return void 0!==e&&void 0!==e.getResponse}function cs(e){return void 0!==e&&void 0!==e.enterprise}class ls{constructor(e){if(this.siteKey="",this.emailPasswordEnabled=!1,void 0===e.recaptchaKey)throw new Error("recaptchaKey undefined");this.siteKey=e.recaptchaKey.split("/")[3],this.emailPasswordEnabled=e.recaptchaEnforcementState.some(e=>"EMAIL_PASSWORD_PROVIDER"===e.provider&&"OFF"!==e.enforcementState)}}function us(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=hi("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)})}function hs(e){return`__${e}${Math.floor(1e6*Math.random())}`}class ds{constructor(e){this.type="recaptcha-enterprise",this.auth=ms(e)}async verify(i="verify",r=!1){function s(e,t,n){const r=window.grecaptcha;cs(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((t,n)=>{!async function(i){if(!r){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)=>{as(i,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(e=>{if(void 0!==e.recaptchaKey){var t=new ls(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)})})}(this.auth).then(e=>{!r&&cs(window.grecaptcha)?s(e,t,n):"undefined"!=typeof window?us("https://www.google.com/recaptcha/enterprise.js?render="+e).then(()=>{s(e,t,n)}).catch(e=>{n(e)}):n(new Error("RecaptchaVerifier is only supported in browser"))}).catch(e=>{n(e)})})}}async function ps(e,t,n,r=!1){const i=new ds(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}class fs{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 gs{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 vs(this),this.idTokenSubscription=new vs(this),this.beforeStateQueue=new fs(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=oi,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},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=$i(n)),this._initializationPromise=this.queue(async()=>{var e;if(!this._deleted&&(this.persistenceManager=await Hi.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 gi(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 Vi(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?ae(e):null;return t&&gi(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&&gi(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($i(e))})}async initializeRecaptchaConfig(){var e=await as(this,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}),e=new ls(e);if(null==this.tenantId?this._agentRecaptchaConfig=e:this._tenantRecaptchaConfigs[this.tenantId]=e,e.emailPasswordEnabled){const t=new ds(this);t.verify()}}_getRecaptchaConfig(){return null==this.tenantId?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new D("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)}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||(gi(t=e&&$i(e)||this._popupRedirectResolver,this,"argument-error"),this.redirectPersistenceManager=await Hi.create(this,[$i(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),s=this._isInitialized?Promise.resolve():this._initializationPromise;return gi(s,this,"internal-error"),s.then(()=>i(this.currentUser)),"function"==typeof t?e.addObserver(t,n,r):e.addObserver(t)}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 gi(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){e&&!this.frameworks.includes(e)&&(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=ss(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=[],ci.logLevel<=m.WARN&&ci.warn(`Auth (${Ye}): ${e}`,...t)),null==n?void 0:n.token}}function ms(e){return ae(e)}class vs{constructor(e){this.auth=e,this.observer=null,this.addObserver=W(e=>this.observer=e)}get next(){return gi(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}function ys(e,t,n){const r=ms(e);gi(r._canInitEmulator,r,"emulator-config-failed"),gi(/^https?:\/\//.test(t),r,"invalid-emulator-scheme");var i=!(null==n||!n.disableWarnings);const s=_s(t);var{host:a,port:o}=function(e){const t=_s(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:ws(r.substr(s.length+1))}}var[a,s]=r.split(":");return{host:a,port:ws(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 _s(e){var t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function ws(e){if(!e)return null;var t=Number(e);return isNaN(t)?null:t}class bs{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return mi("not implemented")}_getIdTokenResponse(e){return mi("not implemented")}_linkToIdToken(e,t){return mi("not implemented")}_getReauthenticationResolver(e){return mi("not implemented")}}async function Is(e,t){return Si(e,"POST","/v1/accounts:resetPassword",ki(e,t))}async function Ts(e,t){return Si(e,"POST","/v1/accounts:update",t)}async function Es(e,t){return Ni(e,"POST","/v1/accounts:signInWithPassword",ki(e,t))}async function Cs(e,t){return Si(e,"POST","/v1/accounts:sendOobCode",ki(e,t))}async function ks(e,t){return Cs(e,t)}async function Ss(e,t){return Cs(e,t)}class As extends bs{constructor(e,t,n,r=null){super("password",n),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(e,t){return new As(e,t,"password")}static _fromEmailAndCode(e,t,n=null){return new As(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(n){switch(this.signInMethod){case"password":const r={returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"};if(null!==(e=n._getRecaptchaConfig())&&void 0!==e&&e.emailPasswordEnabled){var e=await ps(n,r,"signInWithPassword");return Es(n,e)}return Es(n,r).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log("Sign-in with email address and password is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-in flow.");var t=await ps(n,r,"signInWithPassword");return Es(n,t)});case"emailLink":return async function(e,t){return Ni(e,"POST","/v1/accounts:signInWithEmailLink",ki(e,t))}(n,{email:this._email,oobCode:this._password});default:ui(n,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return Ts(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password});case"emailLink":return async function(e,t){return Ni(e,"POST","/v1/accounts:signInWithEmailLink",ki(e,t))}(e,{idToken:t,email:this._email,oobCode:this._password});default:ui(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}async function Ns(e,t){return Ni(e,"POST","/v1/accounts:signInWithIdp",ki(e,t))}class Rs extends bs{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const t=new Rs(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):ui("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=ti(t,["providerId","signInMethod"]);if(!n||!r)return null;const i=new Rs(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 Ns(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,Ns(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Ns(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=j(t)}return e}}const Ds={USER_NOT_FOUND:"user-not-found"};class Ps extends bs{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new Ps({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new Ps({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return async function(e,t){return Ni(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,t))}(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return async function(e,t){var n=await Ni(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,t));if(n.temporaryProof)throw Pi(e,"account-exists-with-different-credential",n);return n}(e,Object.assign({idToken:t},this._makeVerificationRequest()))}_getReauthenticationResolver(e){return async function(e,t){return Ni(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,Object.assign(Object.assign({},t),{operation:"REAUTH"})),Ds)}(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 Ps({verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}):null}}class xs{constructor(e){var t=z($(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);gi(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=z($(e=e)).link,n=t?z($(t)).deep_link_id:null,((r=z($(e)).deep_link_id)?z($(r)).link:null)||r||n||t||e);try{return new xs(t)}catch(e){return null}}}class Os{constructor(){this.providerId=Os.PROVIDER_ID}static credential(e,t){return As._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){var n=xs.parseLink(t);return gi(n,"argument-error"),As._fromEmailAndCode(e,n.code,n.tenantId)}}Os.PROVIDER_ID="password",Os.EMAIL_PASSWORD_SIGN_IN_METHOD="password",Os.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class Ms{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 Ls extends Ms{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}class Fs extends Ls{static credentialFromJSON(e){var t="string"==typeof e?JSON.parse(e):e;return gi("providerId"in t&&"signInMethod"in t,"argument-error"),Rs._fromParams(t)}credential(e){return this._credential(Object.assign(Object.assign({},e),{nonce:e.rawNonce}))}_credential(e){return gi(e.idToken||e.accessToken,"argument-error"),Rs._fromParams(Object.assign(Object.assign({},e),{providerId:this.providerId,signInMethod:this.providerId}))}static credentialFromResult(e){return Fs.oauthCredentialFromTaggedObject(e)}static credentialFromError(e){return Fs.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 Fs(a)._credential({idToken:t,accessToken:n,nonce:s,pendingToken:i})}catch(e){return null}}}class Us extends Ls{constructor(){super("facebook.com")}static credential(e){return Rs._fromParams({providerId:Us.PROVIDER_ID,signInMethod:Us.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Us.credentialFromTaggedObject(e)}static credentialFromError(e){return Us.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Us.credential(e.oauthAccessToken)}catch(e){return null}}}Us.FACEBOOK_SIGN_IN_METHOD="facebook.com",Us.PROVIDER_ID="facebook.com";class Vs extends Ls{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return Rs._fromParams({providerId:Vs.PROVIDER_ID,signInMethod:Vs.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return Vs.credentialFromTaggedObject(e)}static credentialFromError(e){return Vs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n}=e;if(!t&&!n)return null;try{return Vs.credential(t,n)}catch(e){return null}}}Vs.GOOGLE_SIGN_IN_METHOD="google.com",Vs.PROVIDER_ID="google.com";class qs extends Ls{constructor(){super("github.com")}static credential(e){return Rs._fromParams({providerId:qs.PROVIDER_ID,signInMethod:qs.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return qs.credentialFromTaggedObject(e)}static credentialFromError(e){return qs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return qs.credential(e.oauthAccessToken)}catch(e){return null}}}qs.GITHUB_SIGN_IN_METHOD="github.com",qs.PROVIDER_ID="github.com";class Bs extends bs{constructor(e,t){super(e,e),this.pendingToken=t}_getIdTokenResponse(e){return Ns(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,Ns(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Ns(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 Bs(t,r):null}static _create(e,t){return new Bs(e,t)}buildRequest(){return{requestUri:"http://localhost",returnSecureToken:!0,pendingToken:this.pendingToken}}}class js extends Ms{constructor(e){gi(e.startsWith("saml."),"argument-error"),super(e)}static credentialFromResult(e){return js.samlCredentialFromTaggedObject(e)}static credentialFromError(e){return js.samlCredentialFromTaggedObject(e.customData||{})}static credentialFromJSON(e){var t=Bs.fromJSON(e);return gi(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 Bs._create(n,t)}catch(e){return null}}}class zs extends Ls{constructor(){super("twitter.com")}static credential(e,t){return Rs._fromParams({providerId:zs.PROVIDER_ID,signInMethod:zs.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return zs.credentialFromTaggedObject(e)}static credentialFromError(e){return zs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthAccessToken:t,oauthTokenSecret:n}=e;if(!t||!n)return null;try{return zs.credential(t,n)}catch(e){return null}}}async function $s(e,t){return Ni(e,"POST","/v1/accounts:signUp",ki(e,t))}zs.TWITTER_SIGN_IN_METHOD="twitter.com",zs.PROVIDER_ID="twitter.com";class Ks{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 ji._fromIdTokenResponse(e,n,r),s=Ws(n);return new Ks({user:i,providerId:s,_tokenResponse:n,operationType:t})}static async _forOperation(e,t,n){await e._updateTokensIfNecessary(n,!0);var r=Ws(n);return new Ks({user:e,providerId:r,_tokenResponse:n,operationType:t})}}function Ws(e){return e.providerId||("phoneNumber"in e?"phone":null)}class Gs extends R{constructor(e,t,n,r){var i;super(t.code,t.message),this.operationType=n,this.user=r,Object.setPrototypeOf(this,Gs.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 Gs(e,t,n,r)}}function Hs(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 Gs._fromErrorAndOperation(t,e,n,r);throw e})}function Qs(e){return new Set(e.map(({providerId:e})=>e).filter(e=>!!e))}async function Ys(e,t){const n=ae(e);await Xs(!0,n,t);var r=(e=n.auth,t={idToken:await n.getIdToken(),deleteProvider:[t]},await Si(e,"POST","/v1/accounts:update",t))["providerUserInfo"];const i=Qs(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 Js(e,t,n=!1){var r=await Li(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Ks._forOperation(e,"link",r)}async function Xs(e,t,n){await Vi(t);const r=Qs(t.providerData);var i=!1===e?"provider-already-linked":"no-such-provider";gi(r.has(n)===e,t.auth,i)}async function Zs(e,t,n=!1){var r=e["auth"],i="reauthenticate";try{var s=await Li(e,Hs(r,i,t,e),n);gi(s.idToken,r,"internal-error");var a=Mi(s.idToken);gi(a,r,"internal-error");var o=a["sub"];return gi(e.uid===o,r,"user-mismatch"),Ks._forOperation(e,i,s)}catch(e){throw"auth/user-not-found"===(null==e?void 0:e.code)&&ui(r,"user-mismatch"),e}}async function ea(e,t,n=!1){var r=await Hs(e,"signIn",t),r=await Ks._fromIdTokenResponse(e,"signIn",r);return n||await e._updateCurrentUser(r.user),r}async function ta(e,t){return ea(ms(e),t)}async function na(e,t){var n=ae(e);return await Xs(!1,n,t.providerId),Js(n,t)}async function ra(e,t){return Zs(ae(e),t)}async function ia(e,t){const n=ms(e);var r=await Ni(n,"POST","/v1/accounts:signInWithCustomToken",ki(n,{token:t,returnSecureToken:!0})),r=await Ks._fromIdTokenResponse(n,"signIn",r);return await n._updateCurrentUser(r.user),r}class sa{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?aa._fromServerResponse(e,t):"totpInfo"in t?oa._fromServerResponse(e,t):ui(e,"internal-error")}}class aa extends sa{constructor(e){super("phone",e),this.phoneNumber=e.phoneInfo}static _fromServerResponse(e,t){return new aa(t)}}class oa extends sa{constructor(e){super("totp",e)}static _fromServerResponse(e,t){return new oa(t)}}function ca(e,t,n){var r;gi(0<(null===(r=n.url)||void 0===r?void 0:r.length),e,"invalid-continue-uri"),gi(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&&(gi(0<n.iOS.bundleId.length,e,"missing-ios-bundle-id"),t.iOSBundleId=n.iOS.bundleId),n.android&&(gi(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 la(e,t){await Si(e=ae(e),"POST","/v1/accounts:update",ki(e,{oobCode:t}))}async function ua(e,t){var n=ae(e),r=await Is(n,{oobCode:t}),i=r.requestType;switch(gi(i,n,"internal-error"),i){case"EMAIL_SIGNIN":break;case"VERIFY_AND_CHANGE_EMAIL":gi(r.newEmail,n,"internal-error");break;case"REVERT_SECOND_FACTOR_ADDITION":gi(r.mfaInfo,n,"internal-error");default:gi(r.email,n,"internal-error")}let s=null;return r.mfaInfo&&(s=sa._fromServerResponse(ms(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 ha(e,t){var n=_i()?yi():"http://localhost",n=(await Si(e=ae(e),"POST","/v1/accounts:createAuthUri",ki(e,{identifier:t,continueUri:n})))["signinMethods"];return n||[]}async function da(e,t){var n=ae(e),r={requestType:"VERIFY_EMAIL",idToken:await e.getIdToken()};t&&ca(n.auth,r,t);var r=(await Cs(n.auth,r))["email"];r!==e.email&&await e.reload()}async function pa(e,t,n){var r=ae(e),i={requestType:"VERIFY_AND_CHANGE_EMAIL",idToken:await e.getIdToken(),newEmail:t};n&&ca(r.auth,i,n);var i=(await Cs(r.auth,i))["email"];i!==e.email&&await e.reload()}async function fa(e,{displayName:t,photoURL:n}){if(void 0!==t||void 0!==n){const i=ae(e);var r=await i.getIdToken(),r=await Li(i,async function(e,t){return Si(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 ga(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 Li(e,Ts(r,i));await e._updateTokensIfNecessary(r,!0)}class ma{constructor(e,t,n={}){this.isNewUser=e,this.providerId=t,this.profile=n}}class va extends ma{constructor(e,t,n,r){super(e,t,n),this.username=r}}class ya extends ma{constructor(e,t){super(e,"facebook.com",t)}}class _a extends va{constructor(e,t){super(e,"github.com",t,"string"==typeof(null==t?void 0:t.login)?null==t?void 0:t.login:null)}}class wa extends ma{constructor(e,t){super(e,"google.com",t)}}class ba extends va{constructor(e,t,n){super(e,"twitter.com",t,n)}}function Ia(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=Mi(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 ma(r,i)}}if(!t)return null;switch(t){case"facebook.com":return new ya(r,n);case"github.com":return new _a(r,n);case"google.com":return new wa(r,n);case"twitter.com":return new ba(r,n,e.screenName||null);case"custom":case"anonymous":return new ma(r,null);default:return new ma(r,t,n)}}(n)}class Ta{constructor(e,t,n){this.type=e,this.credential=t,this.user=n}static _fromIdtoken(e,t){return new Ta("enroll",e,t)}static _fromMfaPendingCredential(e){return new Ta("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 Ta._fromMfaPendingCredential(e.multiFactorSession.pendingCredential);if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.idToken)return Ta._fromIdtoken(e.multiFactorSession.idToken)}return null}}class Ea{constructor(e,t,n){this.session=e,this.hints=t,this.signInResolver=n}static _fromError(e,i){const s=ms(e),a=i.customData._serverResponse;var t=(a.mfaInfo||[]).map(e=>sa._fromServerResponse(s,e));gi(a.mfaPendingCredential,s,"internal-error");const o=Ta._fromMfaPendingCredential(a.mfaPendingCredential);return new Ea(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 Ks._fromIdTokenResponse(s,i.operationType,n);return await s._updateCurrentUser(r.user),r;case"reauthenticate":return gi(i.user,s,"internal-error"),Ks._forOperation(i.user,i.operationType,n);default:ui(s,"internal-error")}})}async resolveSignIn(e){return this.signInResolver(e)}}class Ca{constructor(t){this.user=t,this.enrolledFactors=[],t._onReload(e=>{e.mfaInfo&&(this.enrolledFactors=e.mfaInfo.map(e=>sa._fromServerResponse(t.auth,e)))})}static _fromUser(e){return new Ca(e)}async getSession(){return Ta._fromIdtoken(await this.user.getIdToken(),this.user)}async enroll(e,t){const n=e;var r=await this.getSession(),r=await Li(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 Li(this.user,(n=this.user.auth,r={idToken:i,mfaEnrollmentId:t},Si(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 ka=new WeakMap;const Sa="__sak";class Aa{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Sa,"1"),this.storage.removeItem(Sa),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 Na extends Aa{constructor(){var e;super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.safariLocalStorageNotSynced=(Ji(e=w())||rs(e))&&function(){try{return!(!window||window===window.top)}catch(e){return!1}}(),this.fallbackToPolling=is(),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);C()&&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]}}Na.type="LOCAL";const Ra=Na;class Da extends Aa{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}}Da.type="SESSION";const Pa=Da;class xa{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 xa(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 Oa(e="",t=10){let n="";for(let r=0;r<t;r++)n+=Math.floor(10*Math.random());return e+n}xa.receivers=[];class Ma{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=Oa("",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 La(){return window}function Fa(){return void 0!==La().WorkerGlobalScope&&"function"==typeof La().importScripts}const Ua="firebaseLocalStorageDb",Va="firebaseLocalStorage",qa="fbase_key";class Ba{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 ja(e,t){return e.transaction([Va],t?"readwrite":"readonly").objectStore(Va)}function za(){const r=indexedDB.open(Ua,1);return new Promise((n,t)=>{r.addEventListener("error",()=>{t(r.error)}),r.addEventListener("upgradeneeded",()=>{const e=r.result;try{e.createObjectStore(Va,{keyPath:qa})}catch(e){t(e)}}),r.addEventListener("success",async()=>{const e=r.result;var t;e.objectStoreNames.contains(Va)?n(e):(e.close(),t=indexedDB.deleteDatabase(Ua),await new Ba(t).toPromise(),n(await za()))})})}async function $a(e,t,n){var r=ja(e,!0).put({fbase_key:t,value:n});return new Ba(r).toPromise()}function Ka(e,t){var n=ja(e,!0).delete(t);return new Ba(n).toPromise()}class Wa{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 za(),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 Fa()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=xa._getInstance(Fa()?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 Ma(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 za();return await $a(e,Sa,"1"),await Ka(e,Sa),!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=>$a(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=ja(e,!1).get(t);return void 0===(n=await new Ba(n).toPromise())?null:n.value}(e,t));return this.localCache[t]=e}async _remove(t){return this._withPendingWrite(async()=>(await this._withRetries(e=>Ka(e,t)),delete this.localCache[t],this.notifyServiceWorker(t)))}async _poll(){var e,t,n=await this._withRetries(e=>{var t=ja(e,!1).getAll();return new Ba(t).toPromise()});if(!n)return[];if(0!==this.pendingWrites)return[];const r=[],i=new Set;for({fbase_key:e,value:t}of n)i.add(e),JSON.stringify(this.localCache[e])!==JSON.stringify(t)&&(this.notifyListeners(e,t),r.push(e));for(const s of Object.keys(this.localCache))this.localCache[s]&&!i.has(s)&&(this.notifyListeners(s,null),r.push(s));return r}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()}}Wa.type="LOCAL";const Ga=Wa;class Ha{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 Qa(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 Qa{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;gi(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 Ya=hs("rcb"),Ja=new bi(3e4,6e4);class Xa{constructor(){var e;this.hostLanguage="",this.counter=0,this.librarySeparatelyLoaded=!(null===(e=La().grecaptcha)||void 0===e||!e.render)}load(s,a=""){var e;return gi((e=a).length<=6&&/^\s*[a-zA-Z0-9\-]*\s*$/.test(e),s,"argument-error"),this.shouldResolveImmediately(a)&&os(La().grecaptcha)?Promise.resolve(La().grecaptcha):new Promise((t,n)=>{const i=La().setTimeout(()=>{n(hi(s,"network-request-failed"))},Ja.get());La()[Ya]=()=>{La().clearTimeout(i),delete La()[Ya];const e=La().grecaptcha;if(e&&os(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(hi(s,"internal-error"))},us(`https://www.google.com/recaptcha/api.js??${j({onload:Ya,render:"explicit",hl:a})}`).catch(()=>{clearTimeout(i),n(hi(s,"internal-error"))})})}clearedOneInstance(){this.counter--}shouldResolveImmediately(e){var t;return!(null===(t=La().grecaptcha)||void 0===t||!t.render)&&(e===this.hostLanguage||0<this.counter||this.librarySeparatelyLoaded)}}class Za{async load(e){return new Ha(e)}clearedOneInstance(){}}const eo="recaptcha",to={theme:"light",type:"image"};class no{constructor(e,t=Object.assign({},to),n){this.parameters=t,this.type=eo,this.destroyed=!1,this.widgetId=null,this.tokenChangeListeners=new Set,this.renderPromise=null,this.recaptcha=null,this.auth=ms(n),this.isInvisible="invisible"===this.parameters.size,gi("undefined"!=typeof document,this.auth,"operation-not-supported-in-this-environment");var r="string"==typeof e?document.getElementById(e):e;gi(r,this.auth,"argument-error"),this.container=r,this.parameters.callback=this.makeTokenCallback(this.parameters.callback),this._recaptchaLoader=new(this.auth.settings.appVerificationDisabledForTesting?Za:Xa),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(){gi(!this.parameters.sitekey,this.auth,"argument-error"),gi(this.isInvisible||!this.container.hasChildNodes(),this.auth,"argument-error"),gi("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=La()[n];"function"==typeof e&&e(t)}}}assertNotDestroyed(){gi(!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(){gi(_i()&&!Fa(),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 Si(this.auth,"GET","/v1/recaptchaParams")).recaptchaSiteKey||"");gi(e,this.auth,"internal-error"),this.parameters.sitekey=e}getAssertedRecaptcha(){return gi(this.recaptcha,this.auth,"internal-error"),this.recaptcha}}class ro{constructor(e,t){this.verificationId=e,this.onConfirmation=t}confirm(e){var t=Ps._fromVerification(this.verificationId,e);return this.onConfirmation(t)}}async function io(t,n,r){var i,s,a,o,c,l,u=await r.verify();try{gi("string"==typeof u,t,"argument-error"),gi(r.type===eo,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 gi("enroll"===h.type,t,"internal-error"),(c=t,l={idToken:h.credential,phoneEnrollmentInfo:{phoneNumber:e.phoneNumber,recaptchaToken:u}},await Si(c,"POST","/v2/accounts/mfaEnrollment:start",ki(c,l))).phoneSessionInfo.sessionInfo;gi("signin"===h.type,t,"internal-error");var d=(null===(i=e.multiFactorHint)||void 0===i?void 0:i.uid)||e.multiFactorUid;return gi(d,t,"missing-multi-factor-info"),(o={mfaPendingCredential:h.credential,mfaEnrollmentId:d,phoneSignInInfo:{recaptchaToken:u}},await Si(t,"POST","/v2/accounts/mfaSignIn:start",ki(t,o))).phoneResponseInfo.sessionInfo}var p=(s=t,a={phoneNumber:e.phoneNumber,recaptchaToken:u},await Si(s,"POST","/v1/accounts:sendVerificationCode",ki(s,a)))["sessionInfo"];return p}finally{r._reset()}}class so{constructor(e){this.providerId=so.PROVIDER_ID,this.auth=ms(e)}verifyPhoneNumber(e,t){return io(this.auth,e,ae(t))}static credential(e,t){return Ps._fromVerification(e,t)}static credentialFromResult(e){var t=e;return so.credentialFromTaggedObject(t)}static credentialFromError(e){return so.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{phoneNumber:t,temporaryProof:n}=e;return t&&n?Ps._fromTokenResponse(t,n):null}}function ao(e,t){return t?$i(t):(gi(e._popupRedirectResolver,e,"argument-error"),e._popupRedirectResolver)}so.PROVIDER_ID="phone",so.PHONE_SIGN_IN_METHOD="phone";class oo extends bs{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return Ns(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Ns(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Ns(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 co(e){return ea(e.auth,new oo(e),e.bypassAuthState)}function lo(e){var{auth:t,user:n}=e;return gi(n,t,"internal-error"),Zs(n,new oo(e),e.bypassAuthState)}async function uo(e){var{auth:t,user:n}=e;return gi(n,t,"internal-error"),Js(n,new oo(e),e.bypassAuthState)}class ho{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 co;case"linkViaPopup":case"linkViaRedirect":return uo;case"reauthViaPopup":case"reauthViaRedirect":return lo;default:ui(this.auth,"internal-error")}}resolve(e){vi(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){vi(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 po=new bi(2e3,1e4);class fo extends ho{constructor(e,t,n,r,i){super(e,t,r,i),this.provider=n,this.authWindow=null,this.pollId=null,fo.currentPopupAction&&fo.currentPopupAction.cancel(),fo.currentPopupAction=this}async executeNotNull(){var e=await this.execute();return gi(e,this.auth,"internal-error"),e}async onExecution(){vi(1===this.filter.length,"Popup operations only handle one event");var e=Oa();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(hi(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(hi(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,fo.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(hi(this.auth,"popup-closed-by-user"))},8e3):this.pollId=window.setTimeout(t,po.get())};t()}}fo.currentPopupAction=null;const go="pendingRedirect",mo=new Map;class vo extends ho{constructor(e,t,n=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,n),this.eventId=null}async execute(){let t=mo.get(this.auth._key());if(!t){try{const e=await async function(e,t){const n=bo(t),r=wo(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)}mo.set(this.auth._key(),t)}return this.bypassAuthState||mo.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 yo(e,t){return wo(e)._set(bo(t),"true")}function _o(e,t){mo.set(e._key(),t)}function wo(e){return $i(e._redirectPersistence)}function bo(e){return Gi(go,e.config.apiKey,e.name)}function Io(e,t,n){return async function(e,t,n){var r=ms(e);pi(e,t,Ms),await r._initializationPromise;const i=ao(r,n);return await yo(i,r),i._openRedirect(r,t,"signInViaRedirect")}(e,t,n)}function To(e,t,n){return async function(e,t,n){var r=ae(e);pi(r.auth,t,Ms),await r.auth._initializationPromise;const i=ao(r.auth,n);await yo(i,r.auth);var s=await ko(r);return i._openRedirect(r.auth,t,"reauthViaRedirect",s)}(e,t,n)}function Eo(e,t,n){return async function(e,t,n){var r=ae(e);pi(r.auth,t,Ms),await r.auth._initializationPromise;const i=ao(r.auth,n);await Xs(!1,r,t.providerId),await yo(i,r.auth);var s=await ko(r);return i._openRedirect(r.auth,t,"linkViaRedirect",s)}(e,t,n)}async function Co(e,t,n=!1){const r=ms(e);var i=ao(r,t);const s=new vo(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 ko(e){var t=Oa(`${e.uid}:::`);return e._redirectEventId=t,await e.auth._setRedirectUser(e),await e.auth._persistUserIfCurrent(e),t}class So{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 No(e);default:return!1}}(t)||(this.hasHandledPotentialRedirect=!0,n||(this.queuedRedirectEvent=t,n=!0)),n}sendToConsumer(e,t){var n;e.error&&!No(e)?(n=(null===(n=e.error.code)||void 0===n?void 0:n.split("auth/")[1])||"internal-error",t.onError(hi(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(Ao(e))}saveEventToCache(e){this.cachedEventUids.add(Ao(e)),this.lastProcessedEventTime=Date.now()}}function Ao(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join("-")}function No({type:e,error:t}){return"unknown"===e&&"auth/no-auth-event"===(null==t?void 0:t.code)}async function Ro(e,t={}){return Si(e,"GET","/v1/projects",t)}const Do=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Po=/^https?/;async function xo(e){if(!e.config.emulator){var t=(await Ro(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(!Po.test(n))return!1;if(Do.test(e))return r===e;const s=e.replace(/\./g,"\\."),a=new RegExp("^(.+\\."+s+"|"+s+")$","i");return a.test(r)}(n))return}catch(e){}ui(e,"unauthorized-domain")}}const Oo=new bi(3e4,6e4);function Mo(){const t=La().___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}let Lo=null;function Fo(e){var i;return Lo=Lo||(i=e,new Promise((e,t)=>{function n(){Mo(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{Mo(),t(hi(i,"network-request-failed"))},timeout:Oo.get()})}if(null!==(r=null===(r=La().gapi)||void 0===r?void 0:r.iframes)&&void 0!==r&&r.Iframe)e(gapi.iframes.getContext());else{if(null===(r=La().gapi)||void 0===r||!r.load){var r=hs("iframefcb");return La()[r]=()=>{gapi.load?n():t(hi(i,"network-request-failed"))},us(`https://apis.google.com/js/api.js?onload=${r}`).catch(e=>t(e))}n()}}).catch(e=>{throw Lo=null,e})),Lo}const Uo=new bi(5e3,15e3),Vo="__/auth/iframe",qo="emulator/auth/iframe",Bo={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},jo=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);async function zo(a){const e=await Fo(a);var t=La().gapi;return gi(t,a,"internal-error"),e.open({where:document.body,url:function(e){var t=e.config;gi(t.authDomain,e,"auth-domain-config-required");var n=t.emulator?Ii(t,qo):`https://${e.config.authDomain}/${Vo}`;const r={apiKey:t.apiKey,appName:e.name,v:Ye};(t=jo.get(e.config.apiHost))&&(r.eid=t);const i=e._getFrameworks();return i.length&&(r.fw=i.join(",")),`${n}?${j(r).slice(1)}`}(a),messageHandlersFilter:t.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Bo,dontclear:!0},s=>new Promise(async(e,t)=>{await s.restyle({setHideOnLeave:!1});const n=hi(a,"network-request-failed"),r=La().setTimeout(()=>{t(n)},Uo.get());function i(){La().clearTimeout(r),e(s)}s.ping(i).then(i,()=>{t(n)})}))}const $o={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class Ko{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}function Wo(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({},$o),{width:r.toString(),height:i.toString(),top:s,left:a});s=w().toLowerCase();n&&(o=Xi(s)?"_blank":n),Yi(s)&&(t=t||"http://localhost",c.scrollbars="yes");var l,a=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,"");if([n=w()]=[s],rs(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 Ko(null);const u=window.open(t||"",o,a);gi(u,e,"popup-blocked");try{u.focus()}catch(e){}return new Ko(u)}const Go="__/auth/handler",Ho="emulator/auth/handler",Qo=encodeURIComponent("fac");async function Yo(e,t,n,r,i,s){gi(e.config.authDomain,e,"auth-domain-config-required"),gi(e.config.apiKey,e,"invalid-api-key");const a={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:r,v:Ye,eventId:i};if(t instanceof Ms){t.setDefaultLanguage(e.languageCode),a.providerId=t.providerId||"",U(t.getCustomParameters())||(a.customParameters=JSON.stringify(t.getCustomParameters()));for(var[o,c]of Object.entries(s||{}))a[o]=c}if(t instanceof Ls){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?`#${Qo}=${encodeURIComponent(u)}`:"";return`${e=[e["config"]][0],e.emulator?Ii(e,Ho):`https://${e.authDomain}/${Go}`}?${j(l).slice(1)}${u}`}const Jo="webStorageSupport";const Xo=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=Pa,this._completeRedirectFn=Co,this._overrideRedirectResult=_o}async _openPopup(e,t,n,r){var i;return vi(null===(i=this.eventManagers[e._key()])||void 0===i?void 0:i.manager,"_initialize() not called before _openPopup()"),Wo(e,await Yo(e,t,n,yi(),r),Oa())}async _openRedirect(e,t,n,r){await this._originValidation(e);var i=await Yo(e,t,n,yi(),r);return La().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):(vi(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 zo(t),n=new So(t);return e.register("authEvent",e=>{return gi(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(Jo,{type:Jo},e=>{var t=null===(t=null==e?void 0:e[0])||void 0===t?void 0:t[Jo];void 0!==t&&r(!!t),ui(n,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=xo(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return is()||Ji()||rs()}};class Zo 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 mi("unexpected MultiFactorSessionType")}}}{constructor(e){super("phone"),this.credential=e}static _fromCredential(e){return new Zo(e)}_finalizeEnroll(e,t,n){return e=e,n={idToken:t,displayName:n,phoneVerificationInfo:this.credential._makeVerificationRequest()},Si(e,"POST","/v2/accounts/mfaEnrollment:finalize",ki(e,n))}_finalizeSignIn(e,t){return e=e,t={mfaPendingCredential:t,phoneVerificationInfo:this.credential._makeVerificationRequest()},Si(e,"POST","/v2/accounts/mfaSignIn:finalize",ki(e,t))}}class ec{constructor(){}static assertion(e){return Zo._fromCredential(e)}}ec.FACTOR_ID="phone";var tc="@firebase/auth";class nc{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(){gi(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){0<this.internalListeners.size?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}var rc,ic,sc;function ac(){return window}rc="authIdTokenMaxAge",null===(ic=p())||void 0===ic||ic[`_${rc}`],sc="Browser",We(new oe("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;gi(s&&!s.includes(":"),"invalid-api-key",{appName:n.name});var o={apiKey:s,authDomain:a,clientPlatform:sc,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:ss(sc)},o=new gs(n,r,i,o);return function(e,t){const n=(null==t?void 0:t.persistence)||[];var r=(Array.isArray(n)?n:[n]).map($i);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()})),We(new oe("auth-internal",e=>{var t=ms(e.getProvider("auth").getImmediate());return e=t,new nc(e)},"PRIVATE").setInstantiationMode("EXPLICIT")),et(tc,"0.23.2",function(e){switch(e){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";default:return}}(sc)),et(tc,"0.23.2","esm2017");async function oc(e,t,n){var r=ac()["BuildInfo"];vi(t.sessionId,"AuthEvent did not contain a session ID");var i=await async function(e){const t=function(e){if(vi(/[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 rs()?s.ibi=r.packageName:es()?s.apn=r.packageName:ui(e,"operation-not-supported-in-this-environment"),r.displayName&&(s.appDisplayName=r.displayName),s.sessionId=i,Yo(e,n,t.type,void 0,null!==(i=t.eventId)&&void 0!==i?i:void 0,s)}function cc(r){const i=ac()["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=w(),/(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 lc=20;class uc extends So{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 hc(e,t,n=null){return{type:t,eventId:n,urlResponse:null,sessionId:function(){const e=[],t="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r<lc;r++){var n=Math.floor(Math.random()*t.length);e.push(t.charAt(n))}return e.join("")}(),postBody:null,tenantId:e.tenantId,error:hi(e,"no-auth-event")}}async function dc(e){var t=await fc()._get(gc(e));return t&&await fc()._remove(gc(e)),t}function pc(e,t){var n,r,i;const s=(n=mc(t=t),a=n.link?decodeURIComponent(n.link):void 0,r=mc(a).link,i=n.deep_link_id?decodeURIComponent(n.deep_link_id):void 0,(n=mc(i).link)||i||r||a||t);if(s.includes("/__/auth/callback")){var a=mc(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?hi(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 fc(){return $i(Ra)}function gc(e){return Gi("authEvent",e.config.apiKey,e.name)}function mc(e){if(null==e||!e.includes("?"))return{};const[,...t]=e.split("?");return z(t.join("?"))}const vc=class{constructor(){this._redirectPersistence=Pa,this._shouldInitProactively=!0,this.eventManagers=new Map,this.originValidationPromises={},this._completeRedirectFn=Co,this._overrideRedirectResult=_o}async _initialize(e){var t=e._key();let n=this.eventManagers.get(t);return n||(n=new uc(e),this.eventManagers.set(t,n),this.attachCallbackListeners(e,n)),n}_openPopup(e){ui(e,"operation-not-supported-in-this-environment")}async _openRedirect(e,t,n,r){var i,s;i=e,o=ac(),gi("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"}),gi(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"}),gi("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"}),gi("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"}),gi("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(),mo.clear(),await this._originValidation(e);var o=hc(e,n,r);n=e,r=o,await fc()._set(gc(n),r);o=await cc(await oc(e,o,t));return async function(a,o,c){const l=ac()["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(hi(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),es()&&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=ac()["BuildInfo"];const n={};rs()?n.iosBundleId=t.packageName:es()?n.androidPackageName=t.packageName:ui(e,"operation-not-supported-in-this-environment"),await Ro(e,n)}(e)),this.originValidationPromises[t]}attachCallbackListeners(r,i){const{universalLinks:e,handleOpenURL:t,BuildInfo:n}=ac(),s=setTimeout(async()=>{await dc(r),i.onEvent(yc())},500),a=async e=>{clearTimeout(s);var t=await dc(r);let n=null;t&&null!=e&&e.url&&(n=pc(t,e.url)),i.onEvent(n||yc())};void 0!==e&&"function"==typeof e.subscribe&&e.subscribe(null,a);const o=t,c=`${n.packageName.toLowerCase()}://`;ac().handleOpenURL=async e=>{if(e.toLowerCase().startsWith(c)&&a({url:e}),"function"==typeof o)try{o(e)}catch(e){console.error(e)}}}};function yc(){return{type:"unknown",eventId:null,sessionId:null,urlResponse:null,postBody:null,tenantId:null,error:hi("no-auth-event")}}var _c;function wc(){var e;return(null===(e=null===self||void 0===self?void 0:self.location)||void 0===e?void 0:e.protocol)||null}function bc(e=w()){return!("file:"!==wc()&&"ionic:"!==wc()&&"capacitor:"!==wc()||!e.toLowerCase().match(/iphone|ipad|ipod|android/))}function Ic(e=w()){return C()&&11===(null===document||void 0===document?void 0:document.documentMode)||([e=w()]=[e],/Edge\/\d+/.test(e))}function Tc(){try{const t=self.localStorage;var e=Oa();if(t)return t.setItem(e,"1"),t.removeItem(e),!Ic()||S()}catch(e){return Ec()&&S()}return!1}function Ec(){return"undefined"!=typeof global&&"WorkerGlobalScope"in global&&"importScripts"in global}function Cc(){return("http:"===wc()||"https:"===wc()||T()||bc())&&!(E()||I())&&Tc()&&!Ec()}function kc(){return bc()&&"undefined"!=typeof document}const Sc={LOCAL:"local",NONE:"none",SESSION:"session"},Ac=gi,Nc="persistence";async function Rc(e){await e._initializationPromise;const t=Dc();var n=Gi(Nc,e.config.apiKey,e.name);t&&t.setItem(n,e._getPersistence())}function Dc(){var e;try{return(null===(e="undefined"!=typeof window?window:null)?void 0:e.sessionStorage)||null}catch(e){return null}}const Pc=gi;class xc{constructor(){this.browserResolver=$i(Xo),this.cordovaResolver=$i(vc),this.underlyingResolver=null,this._redirectPersistence=Pa,this._completeRedirectFn=Co,this._overrideRedirectResult=_o}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 kc()||this.browserResolver._shouldInitProactively}get assertedUnderlyingResolver(){return Pc(this.underlyingResolver,"internal-error"),this.underlyingResolver}async selectUnderlyingResolver(){var e;this.underlyingResolver||(e=await(!!kc()&&new Promise(e=>{const t=setTimeout(()=>{e(!1)},1e3);document.addEventListener("deviceready",()=>{clearTimeout(t),e(!0)})})),this.underlyingResolver=e?this.cordovaResolver:this.browserResolver)}}function Oc(e){return e.unwrap()}function Mc(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 Vc(e,(n=t,i=ae(e),gi((a=n).customData.operationType,i,"argument-error"),gi(null===(r=a.customData._serverResponse)||void 0===r?void 0:r.mfaPendingCredential,i,"argument-error"),Ea._fromError(i,a)))}else if(s){var a=Lc(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 Lc(e){var t=(e instanceof R?e.customData:e)["_tokenResponse"];if(!t)return null;if(!(e instanceof R)&&"temporaryProof"in t&&"phoneNumber"in t)return so.credentialFromResult(e);const n=t.providerId;if(!n||n===ni.PASSWORD)return null;let r;switch(n){case ni.GOOGLE:r=Vs;break;case ni.FACEBOOK:r=Us;break;case ni.GITHUB:r=qs;break;case ni.TWITTER:r=zs;break;default:var{oauthIdToken:i,oauthAccessToken:s,oauthTokenSecret:a,pendingToken:o,nonce:c}=t;return s||a||i||o?o?n.startsWith("saml.")?Bs._create(n,o):Rs._fromParams({providerId:n,signInMethod:n,pendingToken:o,idToken:i,accessToken:s}):new Fs(n).credential({idToken:i,accessToken:s,rawNonce:c}):null}return e instanceof R?r.credentialFromError(e):r.credentialFromResult(e)}function Fc(t,e){return e.catch(e=>{throw e instanceof R&&Mc(t,e),e}).then(e=>{var t=e.operationType,n=e.user;return{operationType:t,credential:Lc(e),additionalUserInfo:Ia(e),user:qc.getOrCreate(n)}})}async function Uc(t,e){const n=await e;return{verificationId:n.verificationId,confirm:e=>Fc(t,n.confirm(e))}}class Vc{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 Fc(Oc(this.auth),this.resolver.resolveSignIn(e))}}class qc{constructor(e){var t;this._delegate=e,this.multiFactor=(t=ae(e),ka.has(t)||ka.set(t,Ca._fromUser(t)),ka.get(t))}static getOrCreate(e){return qc.USER_MAP.has(e)||qc.USER_MAP.set(e,new qc(e)),qc.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 Fc(this.auth,na(this._delegate,e))}async linkWithPhoneNumber(e,t){return Uc(this.auth,async function(e,t,n){const r=ae(e);await Xs(!1,r,"phone");var i=await io(r.auth,t,ae(n));return new ro(i,e=>na(r,e))}(this._delegate,e,t))}async linkWithPopup(e){return Fc(this.auth,async function(e,t,n){var r=ae(e);pi(r.auth,t,Ms);var i=ao(r.auth,n);const s=new fo(r.auth,"linkViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,xc))}async linkWithRedirect(e){return await Rc(ms(this.auth)),Eo(this._delegate,e,xc)}reauthenticateAndRetrieveDataWithCredential(e){return this.reauthenticateWithCredential(e)}async reauthenticateWithCredential(e){return Fc(this.auth,ra(this._delegate,e))}reauthenticateWithPhoneNumber(e,t){return Uc(this.auth,async function(e,t,n){const r=ae(e);var i=await io(r.auth,t,ae(n));return new ro(i,e=>ra(r,e))}(this._delegate,e,t))}reauthenticateWithPopup(e){return Fc(this.auth,async function(e,t,n){var r=ae(e);pi(r.auth,t,Ms);var i=ao(r.auth,n);const s=new fo(r.auth,"reauthViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,xc))}async reauthenticateWithRedirect(e){return await Rc(ms(this.auth)),To(this._delegate,e,xc)}sendEmailVerification(e){return da(this._delegate,e)}async unlink(e){return await Ys(this._delegate,e),this}updateEmail(e){return ga(ae(this._delegate),e,null)}updatePassword(e){return ga(ae(this._delegate),null,e)}updatePhoneNumber(e){return async function(e,t){await Js(ae(e),t)}(this._delegate,e)}updateProfile(e){return fa(this._delegate,e)}verifyBeforeUpdateEmail(e,t){return pa(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}}qc.USER_MAP=new WeakMap;const Bc=gi;class jc{constructor(e,t){if(this.app=e,t.isInitialized())return this._delegate=t.getImmediate(),void this.linkUnderlyingAuth();var n=e.options["apiKey"];Bc(n,"invalid-api-key",{appName:e.name}),Bc(n,"invalid-api-key",{appName:e.name});var r="undefined"!=typeof window?xc:void 0;this._delegate=t.initialize({options:{persistence:function(e,t){const n=function(e,t){const n=Dc();if(!n)return[];var r=Gi(Nc,e,t);switch(n.getItem(r)){case Sc.NONE:return[Wi];case Sc.LOCAL:return[Ga,Pa];case Sc.SESSION:return[Pa];default:return[]}}(e,t);"undefined"==typeof self||n.includes(Ga)||n.push(Ga);if("undefined"!=typeof window)for(const r of[Ra,Pa])n.includes(r)||n.push(r);n.includes(Wi)||n.push(Wi);return n}(n,e.name),popupRedirectResolver:r}}),this._delegate._updateErrorMap(si),this.linkUnderlyingAuth()}get emulatorConfig(){return this._delegate.emulatorConfig}get currentUser(){return this._delegate.currentUser?qc.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){ys(this._delegate,e,t)}applyActionCode(e){return la(this._delegate,e)}checkActionCode(e){return ua(this._delegate,e)}confirmPasswordReset(e,t){return async function(e,t,n){await Is(ae(e),{oobCode:t,newPassword:n})}(this._delegate,e,t)}async createUserWithEmailAndPassword(e,t){return Fc(this._delegate,async function(e,t,n){var r;const i=ms(e),s={returnSecureToken:!0,email:t,password:n,clientType:"CLIENT_TYPE_WEB"};let a;a=null!==(r=i._getRecaptchaConfig())&&void 0!==r&&r.emailPasswordEnabled?(o=await ps(i,s,"signUpPassword"),$s(i,o)):$s(i,s).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log("Sign-up is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-up flow.");var t=await ps(i,s,"signUpPassword");return $s(i,t)});var o=await a.catch(e=>Promise.reject(e)),o=await Ks._fromIdTokenResponse(i,"signIn",o);return await i._updateCurrentUser(o.user),o}(this._delegate,e,t))}fetchProvidersForEmail(e){return this.fetchSignInMethodsForEmail(e)}fetchSignInMethodsForEmail(e){return ha(this._delegate,e)}isSignInWithEmailLink(e){return this._delegate,e=e,"EMAIL_SIGNIN"===(null==(t=xs.parseLink(e))?void 0:t.operation);var t}async getRedirectResult(){Bc(Cc(),this._delegate,"operation-not-supported-in-this-environment");var e,t,n=(e=this._delegate,t=xc,await ms(e)._initializationPromise,await Co(e,t,!1));return n?Fc(this._delegate,Promise.resolve(n)):{credential:null,user:null}}addFrameworkForLogging(e){ms(this._delegate)._logFramework(e)}onAuthStateChanged(e,t,n){var{next:r,error:i,complete:s}=zc(e,t,n);return this._delegate.onAuthStateChanged(r,i,s)}onIdTokenChanged(e,t,n){var{next:r,error:i,complete:s}=zc(e,t,n);return this._delegate.onIdTokenChanged(r,i,s)}sendSignInLinkToEmail(e,t){return async function(e,t,n){var r;const i=ms(e),s={requestType:"EMAIL_SIGNIN",email:t,clientType:"CLIENT_TYPE_WEB"};function a(e,t){gi(t.handleCodeInApp,i,"argument-error"),t&&ca(i,e,t)}null!==(r=i._getRecaptchaConfig())&&void 0!==r&&r.emailPasswordEnabled?(a(r=await ps(i,s,"getOobCode",!0),n),await Ss(i,r)):(a(s,n),await Ss(i,s).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log("Email link sign-in is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-in flow.");var t=await ps(i,s,"getOobCode",!0);a(t,n),await Ss(i,t)}))}(this._delegate,e,t)}sendPasswordResetEmail(e,t){return async function(e,t,n){var r;const i=ms(e),s={requestType:"PASSWORD_RESET",email:t,clientType:"CLIENT_TYPE_WEB"};null!==(r=i._getRecaptchaConfig())&&void 0!==r&&r.emailPasswordEnabled?(r=await ps(i,s,"getOobCode",!0),n&&ca(i,r,n),await ks(i,r)):(n&&ca(i,s,n),await ks(i,s).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log("Password resets are protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the password reset flow.");var t=await ps(i,s,"getOobCode",!0);n&&ca(i,t,n),await ks(i,t)}))}(this._delegate,e,t||void 0)}async setPersistence(e){var t,n;t=this._delegate,n=e,Ac(Object.values(Sc).includes(n),t,"invalid-persistence-type"),E()?Ac(n!==Sc.SESSION,t,"unsupported-persistence-type"):I()?Ac(n===Sc.NONE,t,"unsupported-persistence-type"):Ec()?Ac(n===Sc.NONE||n===Sc.LOCAL&&S(),t,"unsupported-persistence-type"):Ac(n===Sc.NONE||Tc(),t,"unsupported-persistence-type");let r;switch(e){case Sc.SESSION:r=Pa;break;case Sc.LOCAL:var i=await $i(Ga)._isAvailable();r=i?Ga:Ra;break;case Sc.NONE:r=Wi;break;default:return ui("argument-error",{appName:this._delegate.name})}return this._delegate.setPersistence(r)}signInAndRetrieveDataWithCredential(e){return this.signInWithCredential(e)}signInAnonymously(){return Fc(this._delegate,async function(e){const t=ms(e);if(await t._initializationPromise,null!==(n=t.currentUser)&&void 0!==n&&n.isAnonymous)return new Ks({user:t.currentUser,providerId:null,operationType:"signIn"});var n=await $s(t,{returnSecureToken:!0}),n=await Ks._fromIdTokenResponse(t,"signIn",n,!0);return await t._updateCurrentUser(n.user),n}(this._delegate))}signInWithCredential(e){return Fc(this._delegate,ta(this._delegate,e))}signInWithCustomToken(e){return Fc(this._delegate,ia(this._delegate,e))}signInWithEmailAndPassword(e,t){return Fc(this._delegate,(n=this._delegate,e=e,t=t,ta(ae(n),Os.credential(e,t))));var n}signInWithEmailLink(e,t){return Fc(this._delegate,async function(e,t,n){var r=ae(e),i=Os.credentialWithLink(t,n||yi());return gi(i._tenantId===(r.tenantId||null),r,"tenant-id-mismatch"),ta(r,i)}(this._delegate,e,t))}signInWithPhoneNumber(e,t){return Uc(this._delegate,async function(e,t,n){const r=ms(e);var i=await io(r,t,ae(n));return new ro(i,e=>ta(r,e))}(this._delegate,e,t))}async signInWithPopup(e){return Bc(Cc(),this._delegate,"operation-not-supported-in-this-environment"),Fc(this._delegate,async function(e,t,n){var r=ms(e);pi(e,t,Ms);var i=ao(r,n);const s=new fo(r,"signInViaPopup",t,i);return s.executeNotNull()}(this._delegate,e,xc))}async signInWithRedirect(e){return Bc(Cc(),this._delegate,"operation-not-supported-in-this-environment"),await Rc(this._delegate),Io(this._delegate,e,xc)}updateCurrentUser(e){return this._delegate.updateCurrentUser(e)}verifyPasswordResetCode(e){return async function(e,t){var n=(await ua(ae(e),t))["data"];return n.email}(this._delegate,e)}unwrap(){return this._delegate}_delete(){return this._delegate._delete()}linkUnderlyingAuth(){this._delegate.wrapped=()=>this}}function zc(e,t,n){let r=e;"function"!=typeof e&&({next:r,error:t,complete:n}=e);const i=r;return{next:e=>i(e&&qc.getOrCreate(e)),error:t,complete:n}}jc.Persistence=Sc;class $c{constructor(){this.providerId="phone",this._delegate=new so(Oc(wt.auth()))}static credential(e,t){return so.credential(e,t)}verifyPhoneNumber(e,t){return this._delegate.verifyPhoneNumber(e,t)}unwrap(){return this._delegate}}$c.PHONE_SIGN_IN_METHOD=so.PHONE_SIGN_IN_METHOD,$c.PROVIDER_ID=so.PROVIDER_ID;const Kc=gi;class Wc{constructor(e,t,n=wt.app()){var r;Kc(null===(r=n.options)||void 0===r?void 0:r.apiKey,"invalid-api-key",{appName:n.name}),this._delegate=new no(e,t,n.auth()),this.type=this._delegate.type}clear(){this._delegate.clear()}render(){return this._delegate.render()}verify(){return this._delegate.verify()}}(_c=wt).INTERNAL.registerComponent(new oe("auth-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("auth");return new jc(t,n)},"PUBLIC").setServiceProps({ActionCodeInfo:{Operation:{EMAIL_SIGNIN:ri.EMAIL_SIGNIN,PASSWORD_RESET:ri.PASSWORD_RESET,RECOVER_EMAIL:ri.RECOVER_EMAIL,REVERT_SECOND_FACTOR_ADDITION:ri.REVERT_SECOND_FACTOR_ADDITION,VERIFY_AND_CHANGE_EMAIL:ri.VERIFY_AND_CHANGE_EMAIL,VERIFY_EMAIL:ri.VERIFY_EMAIL}},EmailAuthProvider:Os,FacebookAuthProvider:Us,GithubAuthProvider:qs,GoogleAuthProvider:Vs,OAuthProvider:Fs,SAMLAuthProvider:js,PhoneAuthProvider:$c,PhoneMultiFactorGenerator:ec,RecaptchaVerifier:Wc,TwitterAuthProvider:zs,Auth:jc,AuthCredential:bs,Error:R}).setInstantiationMode("LAZY").setMultipleInstances(!1)),_c.registerVersion("@firebase/auth-compat","0.4.2");const Gc="@firebase/database";let Hc="";function Qc(e){Hc=e}class Yc{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),O(t))}get(e){var t=this.domStorage_.getItem(this.prefixedName_(e));return null==t?null:x(t)}remove(e){this.domStorage_.removeItem(this.prefixedName_(e))}prefixedName_(e){return this.prefix_+e}toString(){return this.domStorage_.toString()}}class Jc{constructor(){this.cache_={},this.isInMemoryStorage=!0}set(e,t){null==t?delete this.cache_[e]:this.cache_[e]=t}get(e){return L(this.cache_,e)?this.cache_[e]:null}remove(e){delete this.cache_[e]}}var Xc,Zc,el,tl,nl,rl,il=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 Yc(t)}}catch(e){}return new Jc};function sl(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 K;return n.update(t),t=n.digest(),r.encodeByteArray(t)}const al=il("localStorage"),ol=il("sessionStorage"),cl=new me("@firebase/database"),ll=function(){let e=1;return function(){return e++}}(),ul=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+=ul.apply(null,n):t+="object"==typeof n?O(n):n,t+=" "}return t};let hl=null,dl=!0;function pl(t){return function(...e){wl(t,...e)}}function fl(...e){var t="FIREBASE INTERNAL ERROR: "+ul(...e);cl.error(t)}function gl(e,t){return e===t?0:e<t?-1:1}function ml(e,t){if(t&&e in t)return t[e];throw new Error("Missing required key ("+e+") in object: "+O(t))}function vl(e){if("object"!=typeof e||null===e)return O(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+=O(t[i]),n+=":",n+=vl(e[t[i]]);return n+="}",n}function yl(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 _l=function(e,t){f(!t||!0===e||!1===e,"Can't turn on custom loggers persistently."),!0===e?(cl.logLevel=m.VERBOSE,hl=cl.log.bind(cl),t&&ol.set("logging_enabled",!0)):"function"==typeof e?hl=e:(hl=null,ol.remove("logging_enabled"))},wl=function(...e){var t;!0===dl&&(dl=!1,null===hl&&!0===ol.get("logging_enabled")&&_l(!0)),hl&&(t=ul.apply(null,e),hl(t))},bl=function(...e){var t=`FIREBASE FATAL ERROR: ${ul(...e)}`;throw cl.error(t),new Error(t)},Il=function(...e){var t="FIREBASE WARNING: "+ul(...e);cl.warn(t)},Tl=function(){"undefined"!=typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&Il("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().")},El=function(e){return"number"==typeof e&&(e!=e||e===Number.POSITIVE_INFINITY||e===Number.NEGATIVE_INFINITY)},Cl="[MIN_NAME]",kl="[MAX_NAME]",Sl=function(e,t){if(e===t)return 0;if(e===Cl||t===kl)return-1;if(t===Cl||e===kl)return 1;var n=Rl(e),r=Rl(t);return null!==n?null!==r?n-r==0?e.length-t.length:n-r:-1:null===r&&e<t?-1:1};function Al(e,t){for(const n in e)e.hasOwnProperty(n)&&t(n,e[n])}function Nl(e){f(!El(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 Rl(e){if(Pl.test(e)){var t=Number(e);if(t>=xl&&t<=Ol)return t}return null}function Dl(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 Pl=new RegExp("^-?(0*)\\d{1,10}$"),xl=-2147483648,Ol=2147483647,Ml=function(e){try{e()}catch(t){setTimeout(()=>{var e=t.stack||"";throw Il("Exception was thrown by user callback.",e),t},Math.floor(0))}};class Ll{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(){Il(`Provided AppCheck credentials for the app named "${this.appName_}" `+"are invalid. This usually indicates your app was not initialized correctly.")}}class Fl{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?(wl("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/.',Il(e)}}class Ul{constructor(e){this.accessToken=e}getToken(e){return Promise.resolve({accessToken:this.accessToken})}addTokenChangeListener(e){e(this.accessToken)}removeTokenChangeListener(e){}notifyForInvalidToken(){}}Ul.OWNER="owner";const Vl=/(console\.firebase|firebase-console-\w+\.corp|firebase\.corp)\.google\.com/,ql="websocket",Bl="long_polling";class jl{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=al.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()&&al.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 zl(e,t,n){f("string"==typeof t,"typeof type must == string"),f("object"==typeof n,"typeof params must == object");let r;if(t===ql)r=(e.secure?"wss://":"ws://")+e.internalHost+"/.ws?";else{if(t!==Bl)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 Al(n,(e,t)=>{i.push(e+"="+t)}),r+i.join("&")}class $l{constructor(){this.counters_={}}incrementCounter(e,t=1){L(this.counters_,e)||(this.counters_[e]=0),this.counters_[e]+=t}get(){return c(void 0,this.counters_)}}const Kl={},Wl={};function Gl(e){var t=e.toString();return Kl[t]||(Kl[t]=new $l),Kl[t]}class Hl{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]&&Ml(()=>{this.onMessage_(n[e])});if(this.currentResponseNum===this.closeAfterResponse){this.onClose&&(this.onClose(),this.onClose=null);break}this.currentResponseNum++}}}class Ql{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_=pl(e),this.stats_=Gl(t),this.urlFn=e=>(this.appCheckToken&&(e.ac=this.appCheckToken),zl(t,Bl,e))}open(e,t){this.curSegmentNum=0,this.onDisconnect_=t,this.myPacketOrderer=new Hl(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 Yl((...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&&Vl.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(){Ql.forceAllow_=!0}static forceDisallow(){Ql.forceDisallow_=!0}static isAvailable(){return!!Ql.forceAllow_||!(Ql.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=O(e);this.bytesSent+=t.length,this.stats_.incrementCounter("bytes_sent",t.length);var t=i(t),n=yl(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=O(e).length;this.bytesReceived+=t,this.stats_.incrementCounter("bytes_received",t)}}class Yl{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=ll(),window["pLPCommand"+this.uniqueCallbackIdentifier]=t,window["pRTLPCB"+this.uniqueCallbackIdentifier]=n,this.myIFrame=Yl.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){wl("frame writing exception"),e.stack&&wl(e.stack),wl(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||wl("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=()=>{wl("Long-poll script failed to load: "+e),this.sendNewPolls=!1,this.close()},this.myIFrame.doc.body.appendChild(t)}catch(e){}},Math.floor(1))}}let Jl=null;"undefined"!=typeof MozWebSocket?Jl=MozWebSocket:"undefined"!=typeof WebSocket&&(Jl=WebSocket);class Xl{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_=pl(this.connId),this.stats_=Gl(t),this.connURL=Xl.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&&Vl.test(location.hostname)&&(s.r="f"),t&&(s.s=t),n&&(s.ls=n),r&&(s.ac=r),i&&(s.p=i),zl(e,ql,s)}open(e,t){this.onDisconnect=t,this.onMessage=e,this.log_("Websocket connecting to "+this.connURL),this.everConnected_=!1,al.set("previous_websocket_failure",!0);try{k(),this.mySock=new Jl(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(){Xl.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!==Jl&&!Xl.forceDisallow_}static previouslyFailed(){return al.isInMemoryStorage||!0===al.get("previous_websocket_failure")}markConnectionHealthy(){al.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=x(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=O(e);this.bytesSent+=t.length,this.stats_.incrementCounter("bytes_sent",t.length);var n=yl(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)}}}Xl.responsesRequiredToBeHealthy=2,Xl.healthyTimeout=3e4;class Zl{constructor(e){this.initTransports_(e)}static get ALL_TRANSPORTS(){return[Ql,Xl]}static get IS_TRANSPORT_INITIALIZED(){return this.globalTransportInitialized_}initTransports_(e){var t=Xl&&Xl.isAvailable();let n=t&&!Xl.previouslyFailed();if(e.webSocketOnly&&(t||Il("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),n=!0),n)this.transports_=[Xl];else{const r=this.transports_=[];for(const i of Zl.ALL_TRANSPORTS)i&&i.isAvailable()&&r.push(i);Zl.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}}Zl.globalTransportInitialized_=!1;class eu{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_=pl("c:"+this.id+":"),this.transportManager_=new Zl(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_=Dl(()=>{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=ml("t",e),n=ml("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=ml("t",e),n=ml("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=ml("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?fl("Server Error: "+n):"o"===t?(this.log_("got pong on primary."),this.onPrimaryResponse_(),this.sendPingOnPrimaryIfNecessary_()):fl("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&&Il("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),Dl(()=>{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):Dl(()=>{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()&&(al.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 tu{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 nu{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 ru extends nu{constructor(){super(["online"]),this.online_=!0,"undefined"==typeof window||void 0===window.addEventListener||b()||(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 ru}getInitialEvent(e){return f("online"===e,"Unknown event type: "+e),[this.online_]}currentlyOnline(){return this.online_}}class iu{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 su(){return new iu("")}function au(e){return e.pieceNum_>=e.pieces_.length?null:e.pieces_[e.pieceNum_]}function ou(e){return e.pieces_.length-e.pieceNum_}function cu(e){let t=e.pieceNum_;return t<e.pieces_.length&&t++,new iu(e.pieces_,t)}function lu(e){return e.pieceNum_<e.pieces_.length?e.pieces_[e.pieces_.length-1]:null}function uu(e,t=0){return e.pieces_.slice(e.pieceNum_+t)}function hu(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 iu(t,0)}function du(e,t){const n=[];for(let i=e.pieceNum_;i<e.pieces_.length;i++)n.push(e.pieces_[i]);if(t instanceof iu)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 iu(n,0)}function pu(e){return e.pieceNum_>=e.pieces_.length}function fu(e,t){var n=au(e),r=au(t);if(null===n)return t;if(n===r)return fu(cu(e),cu(t));throw new Error("INTERNAL ERROR: innerPath ("+t+") is not within outerPath ("+e+")")}function gu(e,t){var n=uu(e,0),r=uu(t,0);for(let s=0;s<n.length&&s<r.length;s++){var i=Sl(n[s],r[s]);if(0!==i)return i}return n.length===r.length?0:n.length<r.length?-1:1}function mu(e,t){if(ou(e)!==ou(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 vu(e,t){let n=e.pieceNum_,r=t.pieceNum_;if(ou(e)>ou(t))return!1;for(;n<e.pieces_.length;){if(e.pieces_[n]!==t.pieces_[r])return!1;++n,++r}return!0}class yu{constructor(e,t){this.errorPrefix_=t,this.parts_=uu(e,0),this.byteLength_=Math.max(1,this.parts_.length);for(let n=0;n<this.parts_.length;n++)this.byteLength_+=ee(this.parts_[n]);_u(this)}}function _u(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 "+wu(e))}function wu(e){return 0===e.parts_.length?"":"in property '"+e.parts_.join(".")+"'"}class bu extends nu{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 bu}getInitialEvent(e){return f("visible"===e,"Unknown event type: "+e),[this.visible_]}}class Iu extends tu{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=Iu.nextPersistentConnectionId_++,this.log_=pl("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");bu.getInstance().on("visible",this.onVisible_,this),-1===e.host.indexOf("fblocal")&&ru.getInstance().on("online",this.onOnline_,this)}sendRequest(e,t,n){var r=++this.requestNumber_,i={r:r,a:e,b:t};this.log_(O(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;Iu.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&&L(e,"w")){const i=F(e,"w");var n,r;Array.isArray(i)&&~i.indexOf("no_index")&&(n='".indexOn": "'+t._queryParams.getIndex().toString()+'"',r=t._path.toString(),Il("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=M(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=M(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: "+O(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):fl("Unrecognized action received from server: "+O(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+":"+Iu.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?wl("getToken() completed but was canceled"):(wl("getToken() completed. Creating connection."),this.authToken_=c&&c.accessToken,this.appCheckToken_=l&&l.token,n=new eu(i,this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,e,r,u,e=>{Il(e+" ("+this.repoInfo_.toString()+")"),this.interrupt("server_kill")},s))}catch(e){this.log_("Failed to get token: "+e),t||(this.repoInfo_.nodeAdmin&&Il(e),a())}}}interrupt(e){wl("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){wl("Resuming connection for reason: "+e),delete this.interruptReasons_[e],U(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=>vl(e)).join("$"):"default";const r=this.removeListen_(e,n);r&&r.onComplete&&r.onComplete("permission_denied")}removeListen_(e,t){var n=new iu(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){wl("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){wl("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."+Hc.replace(/\./g,"-")]=1,b()?e["framework.cordova"]=1:E()&&(e["framework.reactnative"]=1),this.reportStats(e)}shouldReconnect_(){var e=ru.getInstance().currentlyOnline();return U(this.interruptReasons_)&&e}}Iu.nextPersistentConnectionId_=0,Iu.nextConnectionId_=0;class Tu{constructor(e,t){this.name=e,this.node=t}static Wrap(e,t){return new Tu(e,t)}}class Eu{getCompare(){return this.compare.bind(this)}indexedValueChanged(e,t){var n=new Tu(Cl,e),r=new Tu(Cl,t);return 0!==this.compare(n,r)}minPost(){return Tu.MIN}}let Cu;class ku extends Eu{static get __EMPTY_NODE(){return Cu}static set __EMPTY_NODE(e){Cu=e}compare(e,t){return Sl(e.name,t.name)}isDefinedOn(e){throw u("KeyIndex.isDefinedOn not expected to be called.")}indexedValueChanged(e,t){return!1}minPost(){return Tu.MIN}maxPost(){return new Tu(kl,Cu)}makePost(e,t){return f("string"==typeof e,"KeyIndex indexValue must always be a string."),new Tu(e,Cu)}toString(){return".key"}}const Su=new ku;class Au{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 Nu{constructor(e,t,n,r,i){this.key=e,this.value=t,this.color=null!=n?n:Nu.RED,this.left=null!=r?r:Ru.EMPTY_NODE,this.right=null!=i?i:Ru.EMPTY_NODE}copy(e,t,n,r,i){return new Nu(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 Ru.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 Ru.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,Nu.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight_(){var e=this.copy(null,null,Nu.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)}}Nu.RED=!0,Nu.BLACK=!1;class Ru{constructor(e,t=Ru.EMPTY_NODE){this.comparator_=e,this.root_=t}insert(e,t){return new Ru(this.comparator_,this.root_.insert(e,t,this.comparator_).copy(null,null,Nu.BLACK,null,null))}remove(e){return new Ru(this.comparator_,this.root_.remove(e,this.comparator_).copy(null,null,Nu.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 Au(this.root_,null,this.comparator_,!1,e)}getIteratorFrom(e,t){return new Au(this.root_,e,this.comparator_,!1,t)}getReverseIteratorFrom(e,t){return new Au(this.root_,e,this.comparator_,!0,t)}getReverseIterator(e){return new Au(this.root_,null,this.comparator_,!0,e)}}function Du(e,t){return Sl(e.name,t.name)}function Pu(e,t){return Sl(e,t)}Ru.EMPTY_NODE=new class{copy(e,t,n,r,i){return this}insert(e,t,n){return new Nu(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}};let xu;function Ou(e){return"number"==typeof e?"number:"+Nl(e):"string:"+e}function Mu(e){var t;e.isLeafNode()?(t=e.val(),f("string"==typeof t||"number"==typeof t||"object"==typeof t&&L(t,".sv"),"Priority must be a string or number.")):f(e===xu||e.isEmpty(),"priority of unexpected type."),f(e===xu||e.getPriority().isEmpty(),"Priority nodes can't have a priority of their own.")}let Lu;class Fu{constructor(e,t=Fu.__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."),Mu(this.priorityNode_)}static set __childrenNodeConstructor(e){Lu=e}static get __childrenNodeConstructor(){return Lu}isLeafNode(){return!0}getPriority(){return this.priorityNode_}updatePriority(e){return new Fu(this.value_,e)}getImmediateChild(e){return".priority"===e?this.priorityNode_:Fu.__childrenNodeConstructor.EMPTY_NODE}getChild(e){return pu(e)?this:".priority"===au(e)?this.priorityNode_:Fu.__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:Fu.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(e,t).updatePriority(this.priorityNode_)}updateChild(e,t){var n=au(e);return null===n?t:t.isEmpty()&&".priority"!==n?this:(f(".priority"!==n||1===ou(e),".priority must be the last token in a path"),this.updateImmediateChild(n,Fu.__childrenNodeConstructor.EMPTY_NODE.updateChild(cu(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:"+Ou(this.priorityNode_.val())+":");var t=typeof this.value_;e+=t+":",e+="number"==t?Nl(this.value_):this.value_,this.lazyHash_=sl(e)}return this.lazyHash_}getValue(){return this.value_}compareTo(e){return e===Fu.__childrenNodeConstructor.EMPTY_NODE?1:e instanceof Fu.__childrenNodeConstructor?-1:(f(e.isLeafNode(),"Unknown node type"),this.compareToLeafNode_(e))}compareToLeafNode_(e){var t=typeof e.value_,n=typeof this.value_,r=Fu.VALUE_TYPE_ORDER.indexOf(t),i=Fu.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_))}}Fu.VALUE_TYPE_ORDER=["object","boolean","number","string"];let Uu,Vu;const qu=new class extends Eu{compare(e,t){const n=e.node.getPriority();var r=t.node.getPriority(),r=n.compareTo(r);return 0===r?Sl(e.name,t.name):r}isDefinedOn(e){return!e.getPriority().isEmpty()}indexedValueChanged(e,t){return!e.getPriority().equals(t.getPriority())}minPost(){return Tu.MIN}maxPost(){return new Tu(kl,new Fu("[PRIORITY-POST]",Vu))}makePost(e,t){var n=Uu(e);return new Tu(t,new Fu("[PRIORITY-POST]",n))}toString(){return".priority"}},Bu=Math.log(2);class ju{constructor(e){var t;this.count=(t=e+1,parseInt(Math.log(t)/Bu,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 zu(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 Nu(i,r.node,Nu.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 Nu(i,r.node,Nu.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 Nu(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,Nu.BLACK):(t(r,Nu.BLACK),t(r,Nu.RED))}return a}(new ju(c.length));return new Ru(t||e,n)}let $u;const Ku={};class Wu{constructor(e,t){this.indexes_=e,this.indexSet_=t}static get Default(){return f((Ku,qu),"ChildrenNode.ts has not been loaded"),$u=$u||new Wu({".priority":Ku},{".priority":qu}),$u}get(e){var t=F(this.indexes_,e);if(!t)throw new Error("No index defined for "+e);return t instanceof Ru?t:null}hasIndex(e){return L(this.indexSet_,e.toString())}addIndex(e,t){f(e!==Su,"KeyIndex always exists and isn't meant to be added to the IndexMap.");const n=[];let r=!1;const i=t.getIterator(Tu.Wrap);let s=i.getNext();for(;s;)r=r||e.isDefinedOn(s.node),n.push(s),s=i.getNext();let a;a=r?zu(n,e.getCompare()):Ku;var o=e.toString();const c=Object.assign({},this.indexSet_);c[o]=e;const l=Object.assign({},this.indexes_);return l[o]=a,new Wu(l,c)}addToIndexes(a,o){var e=V(this.indexes_,(t,e)=>{const n=F(this.indexSet_,e);if(f(n,"Missing index implementation for "+e),t===Ku){if(n.isDefinedOn(a.node)){const i=[],s=o.getIterator(Tu.Wrap);let e=s.getNext();for(;e;)e.name!==a.name&&i.push(e),e=s.getNext();return i.push(a),zu(i,n.getCompare())}return Ku}{var r=o.get(a.name);let e=t;return r&&(e=e.remove(new Tu(a.name,r))),e.insert(a,a.node)}});return new Wu(e,this.indexSet_)}removeFromIndexes(n,r){var e=V(this.indexes_,e=>{if(e===Ku)return e;var t=r.get(n.name);return t?e.remove(new Tu(n.name,t)):e});return new Wu(e,this.indexSet_)}}let Gu;class Hu{constructor(e,t,n){this.children_=e,this.priorityNode_=t,this.indexMap_=n,this.lazyHash_=null,this.priorityNode_&&Mu(this.priorityNode_),this.children_.isEmpty()&&f(!this.priorityNode_||this.priorityNode_.isEmpty(),"An empty node cannot have a priority")}static get EMPTY_NODE(){return Gu=Gu||new Hu(new Ru(Pu),null,Wu.Default)}isLeafNode(){return!1}getPriority(){return this.priorityNode_||Gu}updatePriority(e){return this.children_.isEmpty()?this:new Hu(this.children_,e,this.indexMap_)}getImmediateChild(e){if(".priority"===e)return this.getPriority();var t=this.children_.get(e);return null===t?Gu:t}getChild(e){var t=au(e);return null===t?this:this.getImmediateChild(t).getChild(cu(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 Tu(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()?Gu:this.priorityNode_;return new Hu(e,i,t)}}updateChild(e,t){var n=au(e);if(null===n)return t;f(".priority"!==au(e)||1===ou(e),".priority must be the last token in a path");var r=this.getImmediateChild(n).updateChild(cu(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(qu,(e,t)=>{r[e]=t.val(n),i++,a&&Hu.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:"+Ou(this.getPriority().val())+":"),this.forEachChild(qu,(e,t)=>{var n=t.hash();""!==n&&(r+=":"+e+":"+n)}),this.lazyHash_=""===r?"":sl(r)}return this.lazyHash_}getPredecessorChildName(e,t,n){const r=this.resolveIndex_(n);if(r){var i=r.getPredecessorKey(new Tu(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 Tu(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 Tu(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,Tu.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,Tu.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===Yu?-1:0}withIndex(e){if(e===Su||this.indexMap_.hasIndex(e))return this;var t=this.indexMap_.addIndex(e,this.children_);return new Hu(this.children_,this.priorityNode_,t)}isIndexed(e){return e===Su||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(qu),i=n.getIterator(qu);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===Su?null:this.indexMap_.get(e.toString())}}Hu.INTEGER_REGEXP_=/^(0|[1-9]\d*)$/;class Qu extends Hu{constructor(){super(new Ru(Pu),Hu.EMPTY_NODE,Wu.Default)}compareTo(e){return e===this?0:1}equals(e){return e===this}getPriority(){return this}getImmediateChild(e){return Hu.EMPTY_NODE}isEmpty(){return!1}}const Yu=new Qu;Object.defineProperties(Tu,{MIN:{value:new Tu(Cl,Hu.EMPTY_NODE)},MAX:{value:new Tu(kl,Yu)}}),ku.__EMPTY_NODE=Hu.EMPTY_NODE,Fu.__childrenNodeConstructor=Hu,Xc=Yu,xu=Xc,Zc=Yu,Vu=Zc;const Ju=!0;function Xu(i,e=null){if(null===i)return Hu.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 Fu(t,Xu(e))}if(i instanceof Array||!Ju){let r=Hu.EMPTY_NODE;return Al(i,(e,t)=>{if(L(i,e)&&"."!==e.substring(0,1)){const n=Xu(t);!n.isLeafNode()&&n.isEmpty()||(r=r.updateImmediateChild(e,n))}}),r.updatePriority(Xu(e))}{const s=[];let r=!1;if(Al(i,(e,t)=>{if("."!==e.substring(0,1)){const n=Xu(t);n.isEmpty()||(r=r||!n.getPriority().isEmpty(),s.push(new Tu(e,n)))}}),0===s.length)return Hu.EMPTY_NODE;var n=zu(s,Du,e=>e.name,Pu);if(r){t=zu(s,qu.getCompare());return new Hu(n,Xu(e),new Wu({".priority":t},{".priority":qu}))}return new Hu(n,Xu(e),Wu.Default)}}Uu=Xu;class Zu extends Eu{constructor(e){super(),this.indexPath_=e,f(!pu(e)&&".priority"!==au(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?Sl(e.name,t.name):r}makePost(e,t){var n=Xu(e),n=Hu.EMPTY_NODE.updateChild(this.indexPath_,n);return new Tu(t,n)}maxPost(){var e=Hu.EMPTY_NODE.updateChild(this.indexPath_,Yu);return new Tu(kl,e)}toString(){return uu(this.indexPath_,0).join("/")}}const eh=new class extends Eu{compare(e,t){var n=e.node.compareTo(t.node);return 0===n?Sl(e.name,t.name):n}isDefinedOn(e){return!0}indexedValueChanged(e,t){return!e.equals(t)}minPost(){return Tu.MIN}maxPost(){return Tu.MAX}makePost(e,t){var n=Xu(e);return new Tu(t,n)}toString(){return".value"}};function th(e){return{type:"value",snapshotNode:e}}function nh(e,t){return{type:"child_added",snapshotNode:t,childName:e}}function rh(e,t){return{type:"child_removed",snapshotNode:t,childName:e}}function ih(e,t,n){return{type:"child_changed",snapshotNode:t,childName:e,oldSnap:n}}class sh{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(rh(t,a)):f(e.isLeafNode(),"A child remove without an old child only makes sense on a leaf node"):a.isEmpty()?s.trackChildChange(nh(t,n)):s.trackChildChange(ih(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(qu,(e,t)=>{n.hasChild(e)||i.trackChildChange(rh(e,t))}),n.isLeafNode()||n.forEachChild(qu,(e,t)=>{if(r.hasChild(e)){const n=r.getImmediateChild(e);n.equals(t)||i.trackChildChange(ih(e,t,n))}else i.trackChildChange(nh(e,t))})),n.withIndex(this.index_)}updatePriority(e,t){return e.isEmpty()?Hu.EMPTY_NODE:e.updatePriority(t)}filtersNodes(){return!1}getIndexedFilter(){return this}getIndex(){return this.index_}}class ah{constructor(e){this.indexedFilter_=new sh(e.getIndex()),this.index_=e.getIndex(),this.startPost_=ah.getStartPost_(e),this.endPost_=ah.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 Tu(t,n))||(n=Hu.EMPTY_NODE),this.indexedFilter_.updateChild(e,t,n,r,i,s)}updateFullNode(e,t,n){let r=(t=t.isLeafNode()?Hu.EMPTY_NODE:t).withIndex(this.index_);r=r.updatePriority(Hu.EMPTY_NODE);const i=this;return t.forEachChild(qu,(e,t)=>{i.matches(new Tu(e,t))||(r=r.updateImmediateChild(e,Hu.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 oh{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 ah(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 Tu(t,n))||(n=Hu.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=Hu.EMPTY_NODE.withIndex(this.index_);else if(2*this.limit_<n.numChildren()&&n.isIndexed(this.index_)){r=Hu.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(Hu.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,Hu.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 Tu(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(ih(t,n,u)),a.updateImmediateChild(t,n);{null!=i&&i.trackChildChange(rh(t,u));const p=a.updateImmediateChild(t,Hu.EMPTY_NODE);return null!=e&&this.rangedFilter_.matches(e)?(null!=i&&i.trackChildChange(nh(e.name,e.node)),p.updateImmediateChild(e.name,e.node)):p}}return!n.isEmpty()&&l&&0<=s(c,o)?(null!=i&&(i.trackChildChange(rh(c.name,c.node)),i.trackChildChange(nh(t,n))),a.updateImmediateChild(t,n).updateImmediateChild(c.name,Hu.EMPTY_NODE)):e}}class ch{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_=qu}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_:Cl}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_:kl}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_===qu}copy(){const e=new ch;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 lh(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 uh(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 hh(e,t){const n=e.copy();return n.index_=t,n}function dh(e){const t={};if(e.isDefault())return t;let n;var r;return n=e.index_===qu?"$priority":e.index_===eh?"$value":e.index_===Su?"$key":(f(e.index_ instanceof Zu,"Unrecognized index type!"),e.index_.toString()),t.orderBy=O(n),e.startSet_&&(r=e.startAfterSet_?"startAfter":"startAt",t[r]=O(e.indexStartValue_),e.startNameSet_&&(t[r]+=","+O(e.indexStartName_))),e.endSet_&&(r=e.endBeforeSet_?"endBefore":"endAt",t[r]=O(e.indexEndValue_),e.endNameSet_&&(t[r]+=","+O(e.indexEndName_))),e.limitSet_&&(e.isViewFromLeft()?t.limitToFirst=e.limit_:t.limitToLast=e.limit_),t}function ph(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_!==qu&&(n.i=t.index_.toString()),n}class fh extends tu{constructor(e,t,n,r){super(),this.repoInfo_=e,this.onDataUpdate_=t,this.authTokenProvider_=n,this.appCheckTokenProvider_=r,this.log_=pl("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=fh.getListenId_(e,r),o={};this.listens_[a]=o;var n=dh(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),F(this.listens_,a)===o){let e;e=t?401===t?"permission_denied":"rest_error:"+t:"ok",i(e,null)}})}unlisten(e,t){var n=fh.getListenId_(e,t);delete this.listens_[n]}get(e){var t=dh(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+j(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=x(r.responseText)}catch(e){Il("Failed to parse JSON response for "+n+": "+r.responseText)}a(null,e)}else 401!==r.status&&404!==r.status&&Il("Got unsuccessful REST response for "+n+" Status: "+r.status),a(r.status);a=null}},r.open("GET",n,!0),r.send()})}}class gh{constructor(){this.rootNode_=Hu.EMPTY_NODE}getNode(e){return this.rootNode_.getChild(e)}updateSnapshot(e,t){this.rootNode_=this.rootNode_.updateChild(e,t)}}function mh(){return{value:null,children:new Map}}function vh(e,t,n){var r;pu(t)?(e.value=n,e.children.clear()):null!==e.value?e.value=e.value.updateChild(t,n):(r=au(t),e.children.has(r)||e.children.set(r,mh()),vh(e.children.get(r),t=cu(t),n))}function yh(e,n,r){var i;null!==e.value?r(n,e.value):(i=(e,t)=>{yh(t,new iu(n.toString()+"/"+e),r)},e.children.forEach((e,t)=>{i(t,e)}))}class _h{constructor(e){this.collection_=e,this.last_=null}get(){var e=this.collection_.get();const n=Object.assign({},e);return this.last_&&Al(this.last_,(e,t)=>{n[e]=n[e]-t}),this.last_=e,n}}class wh{constructor(e,t){this.server_=t,this.statsToReport_={},this.statsListener_=new _h(e);var n=1e4+2e4*Math.random();Dl(this.reportStats_.bind(this),Math.floor(n))}reportStats_(){var e=this.statsListener_.get();const n={};let r=!1;Al(e,(e,t)=>{0<t&&L(this.statsToReport_,e)&&(n[e]=t,r=!0)}),r&&this.server_.reportStats(n),Dl(this.reportStats_.bind(this),Math.floor(2*Math.random()*3e5))}}function bh(){return{fromUser:!0,fromServer:!1,queryId:null,tagged:!1}}function Ih(){return{fromUser:!1,fromServer:!0,queryId:null,tagged:!1}}function Th(e){return{fromUser:!1,fromServer:!0,queryId:e,tagged:!0}}(sR=el=el||{})[sR.OVERWRITE=0]="OVERWRITE",sR[sR.MERGE=1]="MERGE",sR[sR.ACK_USER_WRITE=2]="ACK_USER_WRITE",sR[sR.LISTEN_COMPLETE=3]="LISTEN_COMPLETE";class Eh{constructor(e,t,n){this.path=e,this.affectedTree=t,this.revert=n,this.type=el.ACK_USER_WRITE,this.source=bh()}operationForChild(e){if(pu(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 iu(e));return new Eh(su(),t,this.revert)}return f(au(this.path)===e,"operationForChild called for unrelated child."),new Eh(cu(this.path),this.affectedTree,this.revert)}}class Ch{constructor(e,t){this.source=e,this.path=t,this.type=el.LISTEN_COMPLETE}operationForChild(e){return pu(this.path)?new Ch(this.source,su()):new Ch(this.source,cu(this.path))}}class kh{constructor(e,t,n){this.source=e,this.path=t,this.snap=n,this.type=el.OVERWRITE}operationForChild(e){return pu(this.path)?new kh(this.source,su(),this.snap.getImmediateChild(e)):new kh(this.source,cu(this.path),this.snap)}}class Sh{constructor(e,t,n){this.source=e,this.path=t,this.children=n,this.type=el.MERGE}operationForChild(e){if(pu(this.path)){const t=this.children.subtree(new iu(e));return t.isEmpty()?null:t.value?new kh(this.source,su(),t.value):new Sh(this.source,su(),t)}return f(au(this.path)===e,"Can't get a merge for a child not on the path of the operation"),new Sh(this.source,cu(this.path),this.children)}toString(){return"Operation("+this.path+": "+this.source.toString()+" merge: "+this.children.toString()+")"}}class Ah{constructor(e,t,n){this.node_=e,this.fullyInitialized_=t,this.filtered_=n}isFullyInitialized(){return this.fullyInitialized_}isFiltered(){return this.filtered_}isCompleteForPath(e){if(pu(e))return this.isFullyInitialized()&&!this.filtered_;var t=au(e);return this.isCompleteForChild(t)}isCompleteForChild(e){return this.isFullyInitialized()&&!this.filtered_||this.node_.hasChild(e)}getNode(){return this.node_}}class Nh{constructor(e){this.query_=e,this.index_=this.query_._queryParams.getIndex()}}function Rh(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}))}),Dh(n,i,"child_removed",e,r,t),Dh(n,i,"child_added",e,r,t),Dh(n,i,"child_moved",s,r,t),Dh(n,i,"child_changed",e,r,t),Dh(n,i,"value",e,r,t),i}function Dh(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 Tu(t.childName,t.snapshotNode),i=new Tu(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 Ph(e,t){return{eventCache:e,serverCache:t}}function xh(e,t,n,r){return Ph(new Ah(t,n,r),e.serverCache)}function Oh(e,t,n,r){return Ph(e.eventCache,new Ah(t,n,r))}function Mh(e){return e.eventCache.isFullyInitialized()?e.eventCache.getNode():null}function Lh(e){return e.serverCache.isFullyInitialized()?e.serverCache.getNode():null}let Fh;class Uh{constructor(e,t=(Fh=Fh||new Ru(gl),Fh)){this.value=e,this.children=t}static fromObject(e){let n=new Uh(null);return Al(e,(e,t)=>{n=n.set(new iu(e),t)}),n}isEmpty(){return null===this.value&&this.children.isEmpty()}findRootMostMatchingPathAndValue(e,t){if(null!=this.value&&t(this.value))return{path:su(),value:this.value};if(pu(e))return null;{var n=au(e);const i=this.children.get(n);if(null===i)return null;var r=i.findRootMostMatchingPathAndValue(cu(e),t);return null==r?null:{path:du(new iu(n),r.path),value:r.value}}}findRootMostValueAndPath(e){return this.findRootMostMatchingPathAndValue(e,()=>!0)}subtree(e){if(pu(e))return this;{var t=au(e);const n=this.children.get(t);return null!==n?n.subtree(cu(e)):new Uh(null)}}set(e,t){if(pu(e))return new Uh(t,this.children);{var n=au(e);const i=this.children.get(n)||new Uh(null);var r=i.set(cu(e),t),r=this.children.insert(n,r);return new Uh(this.value,r)}}remove(t){if(pu(t))return this.children.isEmpty()?new Uh(null):new Uh(null,this.children);{var n=au(t);const r=this.children.get(n);if(r){const i=r.remove(cu(t));let e;return e=i.isEmpty()?this.children.remove(n):this.children.insert(n,i),null===this.value&&e.isEmpty()?new Uh(null):new Uh(this.value,e)}return this}}get(e){if(pu(e))return this.value;{var t=au(e);const n=this.children.get(t);return n?n.get(cu(e)):null}}setTree(t,n){if(pu(t))return n;{var r=au(t);const i=this.children.get(r)||new Uh(null),s=i.setTree(cu(t),n);let e;return e=s.isEmpty()?this.children.remove(r):this.children.insert(r,s),new Uh(this.value,e)}}fold(e){return this.fold_(su(),e)}fold_(n,r){const i={};return this.children.inorderTraversal((e,t)=>{i[e]=t.fold_(du(n,e),r)}),r(n,this.value,i)}findOnPath(e,t){return this.findOnPath_(e,su(),t)}findOnPath_(e,t,n){var r=!!this.value&&n(t,this.value);if(r)return r;if(pu(e))return null;{r=au(e);const i=this.children.get(r);return i?i.findOnPath_(cu(e),du(t,r),n):null}}foreachOnPath(e,t){return this.foreachOnPath_(e,su(),t)}foreachOnPath_(e,t,n){if(pu(e))return this;{this.value&&n(t,this.value);var r=au(e);const i=this.children.get(r);return i?i.foreachOnPath_(cu(e),du(t,r),n):new Uh(null)}}foreach(e){this.foreach_(su(),e)}foreach_(n,r){this.children.inorderTraversal((e,t)=>{t.foreach_(du(n,e),r)}),this.value&&r(n,this.value)}foreachChild(n){this.children.inorderTraversal((e,t)=>{t.value&&n(e,t.value)})}}class Vh{constructor(e){this.writeTree_=e}static empty(){return new Vh(new Uh(null))}}function qh(t,n,r){if(pu(n))return new Vh(new Uh(r));var i=t.writeTree_.findRootMostValueAndPath(n);if(null!=i){var s=i.path;let e=i.value;i=fu(s,n);return e=e.updateChild(i,r),new Vh(t.writeTree_.set(s,e))}s=new Uh(r),s=t.writeTree_.setTree(n,s);return new Vh(s)}function Bh(e,n,t){let r=e;return Al(t,(e,t)=>{r=qh(r,du(n,e),t)}),r}function jh(e,t){if(pu(t))return Vh.empty();var n=e.writeTree_.setTree(t,new Uh(null));return new Vh(n)}function zh(e,t){return null!=$h(e,t)}function $h(e,t){var n=e.writeTree_.findRootMostValueAndPath(t);return null!=n?e.writeTree_.get(n.path).getChild(fu(n.path,t)):null}function Kh(e){const n=[],t=e.writeTree_.value;return null!=t?t.isLeafNode()||t.forEachChild(qu,(e,t)=>{n.push(new Tu(e,t))}):e.writeTree_.children.inorderTraversal((e,t)=>{null!=t.value&&n.push(new Tu(e,t.value))}),n}function Wh(e,t){if(pu(t))return e;var n=$h(e,t);return null!=n?new Vh(new Uh(n)):new Vh(e.writeTree_.subtree(t))}function Gh(e){return e.writeTree_.isEmpty()}function Hh(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(du(i,e),t,s)}),s=!s.getChild(i).isEmpty()&&null!==n?s.updateChild(du(i,".priority"),n):s}}}(su(),e.writeTree_,t)}function Qh(e,t){return od(t,e)}function Yh(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 vu(e.path,t);for(const n in e.children)if(e.children.hasOwnProperty(n)&&vu(du(e.path,n),t))return!0;return!1}}(c,i.path)?s=!1:vu(i.path,c.path)&&(a=!0)),o--}return!!s&&(a?((e=t).visibleWrites=Xh(e.allWrites,Jh,su()),0<e.allWrites.length?e.lastWriteId=e.allWrites[e.allWrites.length-1].writeId:e.lastWriteId=-1):i.snap?t.visibleWrites=jh(t.visibleWrites,i.path):Al(i.children,e=>{t.visibleWrites=jh(t.visibleWrites,du(i.path,e))}),!0)}function Jh(e){return e.visible}function Xh(e,t,n){let r=Vh.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)vu(n,i)?(e=fu(n,i),r=qh(r,e,a.snap)):vu(i,n)&&(e=fu(i,n),r=qh(r,su(),a.snap.getChild(e)));else{if(!a.children)throw u("WriteRecord should have .snap or .children");if(vu(n,i))e=fu(n,i),r=Bh(r,e,a.children);else if(vu(i,n))if(e=fu(i,n),pu(e))r=Bh(r,su(),a.children);else{const o=F(a.children,au(e));o&&(i=o.getChild(cu(e)),r=qh(r,su(),i))}}}}return r}function Zh(e,t,n,r,i){if(r||i){var s=Wh(e.visibleWrites,t);if(!i&&Gh(s))return n;if(i||null!=n||zh(s,su()))return Hh(Xh(e.allWrites,function(e){return(e.visible||i)&&(!r||!~r.indexOf(e.writeId))&&(vu(e.path,t)||vu(t,e.path))},t),n||Hu.EMPTY_NODE);return null}s=$h(e.visibleWrites,t);if(null!=s)return s;s=Wh(e.visibleWrites,t);return Gh(s)?n:null!=n||zh(s,su())?Hh(s,n||Hu.EMPTY_NODE):null}function ed(e,t,n,r){return Zh(e.writeTree,e.treePath,t,n,r)}function td(e,t){return function(e,t,n){let r=Hu.EMPTY_NODE;const i=$h(e.visibleWrites,t);if(i)return i.isLeafNode()||i.forEachChild(qu,(e,t)=>{r=r.updateImmediateChild(e,t)}),r;if(n){const s=Wh(e.visibleWrites,t);return n.forEachChild(qu,(e,t)=>{var n=Hh(Wh(s,new iu(e)),t);r=r.updateImmediateChild(e,n)}),Kh(s).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}return Kh(Wh(e.visibleWrites,t)).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}(e.writeTree,e.treePath,t)}function nd(e,t,n,r){return function(e,t,n,r,i){f(r||i,"Either existingEventSnap or existingServerSnap must exist");var s=du(t,n);return zh(e.visibleWrites,s)?null:Gh(s=Wh(e.visibleWrites,s))?i.getChild(n):Hh(s,i.getChild(n))}(e.writeTree,e.treePath,t,n,r)}function rd(e,t){return n=e.writeTree,t=du(e.treePath,t),$h(n.visibleWrites,t);var n}function id(e,t,n,r,i,s){return function(e,t,n,r,i,s,a){let o;var c=Wh(e.visibleWrites,t),l=$h(c,su());if(null!=l)o=l;else{if(null==n)return[];o=Hh(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 sd(e,t,n){return r=e.writeTree,e=e.treePath,n=n,i=du(e,t=t),null!=(s=$h(r.visibleWrites,i))?s:n.isCompleteForChild(t)?Hh(Wh(r.visibleWrites,i),n.getNode().getImmediateChild(t)):null;var r,i,s}function ad(e,t){return od(du(e.treePath,t),e.writeTree)}function od(e,t){return{treePath:e,writeTree:t}}class cd{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,ih(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,rh(n,r.oldSnap));else if("child_changed"===t&&"child_added"===i)this.changeMap.set(n,nh(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,ih(n,e.snapshotNode,r.oldSnap))}}else this.changeMap.set(n,e)}getChanges(){return Array.from(this.changeMap.values())}}const ld=new class{getCompleteChild(e){return null}getChildAfterChild(e,t,n){return null}};class ud{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 Ah(this.optCompleteServerCache_,!0,!1):this.viewCache_.serverCache;return sd(this.writes_,e,n)}getChildAfterChild(e,t,n){var r=null!=this.optCompleteServerCache_?this.optCompleteServerCache_:Lh(this.viewCache_),r=id(this.writes_,r,t,1,n,e);return 0===r.length?null:r[0]}}function hd(e,t,n,r,i){const s=new cd;let a,o;if(n.type===el.OVERWRITE){var c=n;a=c.source.fromUser?fd(e,t,c.path,c.snap,r,i,s):(f(c.source.fromServer,"Unknown source."),o=c.source.tagged||t.serverCache.isFiltered()&&!pu(c.path),pd(e,t,c.path,c.snap,r,i,o,s))}else if(n.type===el.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=du(s,e);gd(i,au(n))&&(l=fd(r,l,n,t,a,o,c))}),e.foreach((e,t)=>{var n=du(s,e);gd(i,au(n))||(l=fd(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(),vd(e,t,c.path,c.children,r,i,o,s))}else if(n.type===el.ACK_USER_WRITE){var l=n;a=l.revert?function(n,r,i,s,e,a){let o;{if(null!=rd(s,i))return r;{var c=new ud(s,r,e);const u=r.eventCache.getNode();let t;if(pu(i)||".priority"===au(i)){let e;e=r.serverCache.isFullyInitialized()?ed(s,Lh(r)):(l=r.serverCache.getNode(),f(l instanceof Hu,"serverChildren would be complete if leaf node"),td(s,l)),e=e,t=n.filter.updateFullNode(u,e,a)}else{var l=au(i);let e=sd(s,l,r.serverCache);null==e&&r.serverCache.isCompleteForChild(l)&&(e=u.getImmediateChild(l)),t=null!=e?n.filter.updateChild(u,l,e,cu(i),c,a):r.eventCache.getNode().hasChild(l)?n.filter.updateChild(u,l,Hu.EMPTY_NODE,cu(i),c,a):u,t.isEmpty()&&r.serverCache.isFullyInitialized()&&(o=ed(s,Lh(r)),o.isLeafNode()&&(t=n.filter.updateFullNode(t,o,a)))}return o=r.serverCache.isFullyInitialized()||null!=rd(s,su()),xh(r,t,o,n.filter.filtersNodes())}}}(e,t,l.path,r,i,s):function(e,t,i,n,s,a,o){if(null!=rd(s,i))return t;const c=t.serverCache.isFiltered(),l=t.serverCache;{if(null!=n.value){if(pu(i)&&l.isFullyInitialized()||l.isCompleteForPath(i))return pd(e,t,i,l.getNode().getChild(i),s,a,c,o);if(pu(i)){let n=new Uh(null);return l.getNode().forEachChild(Su,(e,t)=>{n=n.set(new iu(e),t)}),vd(e,t,i,n,s,a,c,o)}return t}{let r=new Uh(null);return n.foreach((e,t)=>{var n=du(i,e);l.isCompleteForPath(n)&&(r=r.set(e,l.getNode().getChild(n)))}),vd(e,t,i,r,s,a,c,o)}}}(e,t,l.path,l.affectedTree,r,i,s)}else{if(n.type!==el.LISTEN_COMPLETE)throw u("Unknown operation type: "+n.type);a=function(e,t,n,r,i){const s=t.serverCache,a=Oh(t,s.getNode(),s.isFullyInitialized()||pu(n),s.isFiltered());return dd(e,a,n,r,ld,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=Mh(e);(0<n.length||!e.eventCache.isFullyInitialized()||i&&!r.getNode().equals(s)||!r.getNode().getPriority().equals(s.getPriority()))&&n.push(th(Mh(t)))}}(t,a,l),{viewCache:a,changes:l}}function dd(r,i,s,a,o,c){const l=i.eventCache;if(null!=rd(a,s))return i;{let t,n;if(pu(s)){var e;f(i.serverCache.isFullyInitialized(),"If change path is empty, we must have complete server data"),t=i.serverCache.isFiltered()?(e=td(a,(e=Lh(i))instanceof Hu?e:Hu.EMPTY_NODE),r.filter.updateFullNode(i.eventCache.getNode(),e,c)):(u=ed(a,Lh(i)),r.filter.updateFullNode(i.eventCache.getNode(),u,c))}else{var u=au(s);if(".priority"===u){f(1===ou(s),"Can't have a priority with additional path components");var h=l.getNode();n=i.serverCache.getNode();var d=nd(a,s,h,n);t=null!=d?r.filter.updatePriority(h,d):l.getNode()}else{h=cu(s);let e;e=l.isCompleteForChild(u)?(n=i.serverCache.getNode(),null!=(d=nd(a,s,l.getNode(),n))?l.getNode().getImmediateChild(u).updateChild(h,d):l.getNode().getImmediateChild(u)):sd(a,u,i.serverCache),t=null!=e?r.filter.updateChild(l.getNode(),u,e,h,o,c):l.getNode()}}return xh(i,t,l.isFullyInitialized()||pu(s),r.filter.filtersNodes())}}function pd(e,t,n,r,i,s,a,o){const c=t.serverCache;let l;const u=a?e.filter:e.filter.getIndexedFilter();if(pu(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=au(n);if(!c.isCompleteForPath(n)&&1<ou(n))return t;var p=cu(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,ld,null)}p=Oh(t,l,c.isFullyInitialized()||pu(n),u.filtersNodes());return dd(e,p,n,i,new ud(i,p,s),o)}function fd(t,n,r,i,e,s,a){const o=n.eventCache;let c,l;const u=new ud(e,n,s);if(pu(r))l=t.filter.updateFullNode(n.eventCache.getNode(),i,a),c=xh(n,l,!0,t.filter.filtersNodes());else{var h=au(r);if(".priority"===h)l=t.filter.updatePriority(n.eventCache.getNode(),i),c=xh(n,l,o.isFullyInitialized(),o.isFiltered());else{var d=cu(r);const p=o.getNode().getImmediateChild(h);let e;if(pu(d))e=i;else{const f=u.getCompleteChild(h);e=null!=f?".priority"===lu(d)&&f.getChild(hu(d)).isEmpty()?f:f.updateChild(d,i):Hu.EMPTY_NODE}c=p.equals(e)?n:xh(n,t.filter.updateChild(o.getNode(),h,e,d,u,a),o.isFullyInitialized(),t.filter.filtersNodes())}}return c}function gd(e,t){return e.eventCache.isCompleteForChild(t)}function md(e,n,t){return t.foreach((e,t)=>{n=n.updateChild(e,t)}),n}function vd(r,i,e,t,s,a,o,c){if(i.serverCache.getNode().isEmpty()&&!i.serverCache.isFullyInitialized())return i;let l=i,n;n=pu(e)?t:new Uh(null).setTree(e,t);const u=i.serverCache.getNode();return n.children.inorderTraversal((e,t)=>{var n;u.hasChild(e)&&(n=md(0,i.serverCache.getNode().getImmediateChild(e),t),l=pd(r,l,new iu(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=md(0,i.serverCache.getNode().getImmediateChild(e),t),l=pd(r,l,new iu(e),n,s,a,o,c))}),l}class yd{constructor(e,t){this.query_=e,this.eventRegistrations_=[];const n=this.query_._queryParams,r=new sh(n.getIndex()),i=(e=n).loadsAllData()?new sh(e.getIndex()):new(e.hasLimit()?oh:ah)(e);this.processor_={filter:i};const s=t.serverCache,a=t.eventCache;var o=r.updateFullNode(Hu.EMPTY_NODE,s.getNode(),null),c=i.updateFullNode(Hu.EMPTY_NODE,a.getNode(),null),o=new Ah(o,s.isFullyInitialized(),r.filtersNodes()),c=new Ah(c,a.isFullyInitialized(),i.filtersNodes());this.viewCache_=Ph(c,o),this.eventGenerator_=new Nh(this.query_)}get query(){return this.query_}}function _d(e){return 0===e.eventRegistrations_.length}function wd(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 bd(e,t,n,r){t.type===el.MERGE&&null!==t.source.queryId&&(f(Lh(e.viewCache_),"We should always have a full cache before handling merges"),f(Mh(e.viewCache_),"Missing event cache, even though we have a server cache"));const i=e.viewCache_,s=hd(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,Id(e,s.changes,s.viewCache.eventCache.getNode(),null)}function Id(e,t,n,r){var i=r?[r]:e.eventRegistrations_;return Rh(e.eventGenerator_,t,n,i)}let Td;class Ed{constructor(){this.views=new Map}}function Cd(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."),bd(e,n,r,i)}{let e=[];for(const s of t.views.values())e=e.concat(bd(s,n,r,i));return e}}function kd(e,n,r,i,s){var a=n._queryIdentifier,a=e.views.get(a);if(a)return a;{let e=ed(r,s?i:null),t=!1;t=!!e||(e=i instanceof Hu?td(r,i):Hu.EMPTY_NODE,!1);a=Ph(new Ah(e,t,!1),new Ah(i,s,!1));return new yd(n,a)}}function Sd(e,t,n,r,i,s){var a=kd(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(qu,(e,t)=>{r.push(nh(e,t))})}return n.isFullyInitialized()&&r.push(th(n.getNode())),Id(e,r,n.getNode(),t)}(a,n)}function Ad(e,t,n,r){var i=t._queryIdentifier;const s=[];let a=[];var o=xd(e);if("default"===i)for(var[c,l]of e.views.entries())a=a.concat(wd(l,n,r)),_d(l)&&(e.views.delete(c),l.query._queryParams.loadsAllData()||s.push(l.query));else{const u=e.views.get(i);u&&(a=a.concat(wd(u,n,r)),_d(u)&&(e.views.delete(i),u.query._queryParams.loadsAllData()||s.push(u.query)))}return o&&!xd(e)&&s.push((f(Td,"Reference.ts has not been loaded"),new Td(t._repo,t._path))),{removed:s,events:a}}function Nd(e){const t=[];for(const n of e.views.values())n.query._queryParams.loadsAllData()||t.push(n);return t}function Rd(e,t){let n=null;for(const r of e.views.values())n=n||function(e,t){const n=Lh(e.viewCache_);return n&&(e.query._queryParams.loadsAllData()||!pu(t)&&!n.getImmediateChild(au(t)).isEmpty())?n.getChild(t):null}(r,t);return n}function Dd(e,t){const n=t._queryParams;if(n.loadsAllData())return Od(e);var r=t._queryIdentifier;return e.views.get(r)}function Pd(e,t){return null!=Dd(e,t)}function xd(e){return null!=Od(e)}function Od(e){for(const t of e.views.values())if(t.query._queryParams.loadsAllData())return t;return null}let Md;let Ld=1;class Fd{constructor(e){this.listenProvider_=e,this.syncPointTree_=new Uh(null),this.pendingWriteTree_={visibleWrites:Vh.empty(),allWrites:[],lastWriteId:-1},this.tagToQueryMap=new Map,this.queryToTagMap=new Map}}function Ud(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=qh(s.visibleWrites,a,o)),s.lastWriteId=c,i?Gd(e,new kh(bh(),t,n)):[]}function Vd(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=Bh(i.visibleWrites,s,a),i.lastWriteId=r;var o=Uh.fromObject(n);return Gd(e,new Sh(bh(),t,o))}function qd(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(Yh(e.pendingWriteTree_,t)){let t=new Uh(null);return null!=r.snap?t=t.set(su(),!0):Al(r.children,e=>{t=t.set(new iu(e),!0)}),Gd(e,new Eh(r.path,t,n))}return[]}function Bd(e,t,n){return Gd(e,new kh(Ih(),t,n))}function jd(n,e,t,r,i=!1){var s=e._path,a=n.syncPointTree_.get(s);let o=[];if(a&&("default"===e._queryIdentifier||Pd(a,e))){var c=Ad(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)=>xd(t));if(a&&!c){const p=n.syncPointTree_.subtree(s);if(!p.isEmpty()){var l=p.fold((e,t,r)=>{if(t&&xd(t))return[Od(t)];{let n=[];return t&&(n=Nd(t)),Al(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e<l.length;++e){var u=l[e],h=u.query,u=Qd(n,u);n.listenProvider_.startListening(tp(h),Yd(n,h),u.hashFn,u.onComplete)}}}!c&&0<d.length&&!r&&(a?n.listenProvider_.stopListening(tp(e),null):d.forEach(e=>{var t=n.queryToTagMap.get(Jd(e));n.listenProvider_.stopListening(tp(e),t)}))}!function(e,t){for(let i=0;i<t.length;++i){const s=t[i];var n,r;s._queryParams.loadsAllData()||(n=Jd(s),r=e.queryToTagMap.get(n),e.queryToTagMap.delete(n),e.tagToQueryMap.delete(r))}}(n,d)}return o}function zd(e,t,n,r){var i=Xd(e,r);if(null==i)return[];var s=Zd(i),a=s.path,i=s.queryId,s=fu(a,t);return ep(e,a,new kh(Th(i),s,n))}function $d(e,t,n,r=!1){const i=t._path;let s=null,a=!1;e.syncPointTree_.foreachOnPath(i,(e,t)=>{var n=fu(e,i);s=s||Rd(t,n),a=a||xd(t)});let o=e.syncPointTree_.get(i);o?(a=a||xd(o),s=s||Rd(o,su())):(o=new Ed,e.syncPointTree_=e.syncPointTree_.set(i,o));let c;if(null!=s)c=!0;else{c=!1,s=Hu.EMPTY_NODE;const p=e.syncPointTree_.subtree(i);p.foreachChild((e,t)=>{var n=Rd(t,su());n&&(s=s.updateImmediateChild(e,n))})}var l,u=Pd(o,t);u||t._queryParams.loadsAllData()||(h=Jd(t),f(!e.queryToTagMap.has(h),"View does not exist, but we have a tag"),l=Ld++,e.queryToTagMap.set(h,l),e.tagToQueryMap.set(l,h));var h=Qh(e.pendingWriteTree_,i);let d=Sd(o,t,n,h,s,c);return u||a||r||(u=Dd(o,t),d=d.concat(function(t,e,n){const r=e._path,i=Yd(t,e),s=Qd(t,n),a=t.listenProvider_.startListening(tp(e),i,s.hashFn,s.onComplete),o=t.syncPointTree_.subtree(r);if(i)f(!xd(o.value),"If we're adding a query, it shouldn't be shadowed");else{var c=o.fold((e,t,r)=>{if(!pu(e)&&t&&xd(t))return[Od(t).query];{let n=[];return t&&(n=n.concat(Nd(t).map(e=>e.query))),Al(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e<c.length;++e){var l=c[e];t.listenProvider_.stopListening(tp(l),Yd(t,l))}}return a}(e,t,u))),d}function Kd(e,r,t){var n=e.pendingWriteTree_,i=e.syncPointTree_.findOnPath(r,(e,t)=>{var n=Rd(t,fu(e,r));if(n)return n});return Zh(n,r,i,t,!0)}function Wd(e,t){const r=t._path;let i=null;e.syncPointTree_.foreachOnPath(r,(e,t)=>{var n=fu(e,r);i=i||Rd(t,n)});let n=e.syncPointTree_.get(r);n?i=i||Rd(n,su()):(n=new Ed,e.syncPointTree_=e.syncPointTree_.set(r,n));var s=null!=i;const a=s?new Ah(i,!0,!1):null;var o=Qh(e.pendingWriteTree_,t._path);return Mh(kd(n,t,o,s?a.getNode():Hu.EMPTY_NODE,s).viewCache_)}function Gd(e,t){return function t(n,r,i,s){{if(pu(n.path))return Hd(n,r,i,s);{const a=r.get(su());null==i&&null!=a&&(i=Rd(a,su()));let e=[];const o=au(n.path),c=n.operationForChild(o),l=r.children.get(o);if(l&&c){const u=i?i.getImmediateChild(o):null,h=ad(s,o);e=e.concat(t(c,l,u,h))}return a&&(e=e.concat(Cd(a,n,s,i))),e}}}(t,e.syncPointTree_,null,Qh(e.pendingWriteTree_,su()))}function Hd(s,e,a,o){var t=e.get(su());null==a&&null!=t&&(a=Rd(t,su()));let c=[];return e.children.inorderTraversal((e,t)=>{var n=a?a.getImmediateChild(e):null,r=ad(o,e),i=s.operationForChild(e);i&&(c=c.concat(Hd(i,t,n,r)))}),t&&(c=c.concat(Cd(t,s,o,a))),c}function Qd(i,t){const s=t.query,a=Yd(i,s);return{hashFn:()=>{const e=t.viewCache_.serverCache.getNode()||Hu.EMPTY_NODE;return e.hash()},onComplete:e=>{if("ok"===e)return a?function(e,t,n){if(s=Xd(e,n)){var r=Zd(s),i=r.path,s=r.queryId,r=fu(i,t);return ep(e,i,new Ch(Th(s),r))}return[]}(i,s._path,a):(t=i,n=s._path,Gd(t,new Ch(Ih(),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 jd(i,s,null,r)}}}function Yd(e,t){var n=Jd(t);return e.queryToTagMap.get(n)}function Jd(e){return e._path.toString()+"$"+e._queryIdentifier}function Xd(e,t){return e.tagToQueryMap.get(t)}function Zd(e){var t=e.indexOf("$");return f(-1!==t&&t<e.length-1,"Bad queryKey."),{queryId:e.substr(t+1),path:new iu(e.substr(0,t))}}function ep(e,t,n){var r=e.syncPointTree_.get(t);return f(r,"Missing sync point for query tag that we're tracking"),Cd(r,n,Qh(e.pendingWriteTree_,t),null)}function tp(e){return e._queryParams.loadsAllData()&&!e._queryParams.isDefault()?(f(Md,"Reference.ts has not been loaded"),new Md(e._repo,e._path)):e}class np{constructor(e){this.node_=e}getImmediateChild(e){var t=this.node_.getImmediateChild(e);return new np(t)}node(){return this.node_}}class rp{constructor(e,t){this.syncTree_=e,this.path_=t}getImmediateChild(e){var t=du(this.path_,e);return new rp(this.syncTree_,t)}node(){return Kd(this.syncTree_,this.path_)}}function ip(e){return(e=e||{}).timestamp=e.timestamp||(new Date).getTime(),e}function sp(e,t,n){return e&&"object"==typeof e?(f(".sv"in e,"Unexpected leaf node or priority contents"),"string"==typeof e[".sv"]?ap(e[".sv"],t,n):"object"==typeof e[".sv"]?op(e[".sv"],t):void f(!1,"Unexpected server value: "+JSON.stringify(e,null,2))):e}const ap=function(e,t,n){if("timestamp"===e)return n.timestamp;f(!1,"Unexpected server value: "+e)},op=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},cp=function(e,t,n,r){return up(t,new rp(n,e),r)},lp=function(e,t,n){return up(e,new np(t),n)};function up(e,r,i){var t=e.getPriority().val(),n=sp(t,r.getImmediateChild(".priority"),i);let s;if(e.isLeafNode()){const a=e;t=sp(a.getValue(),r,i);return t!==a.getValue()||n!==a.getPriority().val()?new Fu(t,Xu(n)):e}{const o=e;return s=o,n!==o.getPriority().val()&&(s=s.updatePriority(new Fu(n))),o.forEachChild(qu,(e,t)=>{var n=up(t,r.getImmediateChild(e),i);n!==t&&(s=s.updateImmediateChild(e,n))}),s}}class hp{constructor(e="",t=null,n={children:{},childCount:0}){this.name=e,this.parent=t,this.node=n}}function dp(e,t){let n=t instanceof iu?t:new iu(t),r=e,i=au(n);for(;null!==i;){var s=F(r.node.children,i)||{children:{},childCount:0};r=new hp(i,r,s),n=cu(n),i=au(n)}return r}function pp(e){return e.node.value}function fp(e,t){e.node.value=t,yp(e)}function gp(e){return 0<e.node.childCount}function mp(n,r){Al(n.node.children,(e,t)=>{r(new hp(e,n,t))})}function vp(e){return new iu(null===e.parent?e.name:vp(e.parent)+"/"+e.name)}function yp(e){var t,n,r,i;null!==e.parent&&(t=e.parent,n=e.name,r=function(e){return void 0===pp(e)&&!gp(e)}(e=e),i=L(t.node.children,n),r&&i?(delete t.node.children[n],t.node.childCount--,yp(t)):r||i||(t.node.children[n]=e.node,t.node.childCount++,yp(t)))}function _p(e,t,n,r){r&&void 0===t||Pp(Y(e,"value"),t,n)}function wp(e,t,r,n){if(!n||void 0!==t){const i=Y(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=[];Al(t,(e,t)=>{const n=new iu(e);if(Pp(i,t,du(r,n)),".priority"===lu(n)&&!Dp(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=uu(i);for(let e=0;e<s.length;e++)if((".priority"!==s[e]||e!==s.length-1)&&!Ap(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(gu);let e=null;for(r=0;r<n.length;r++){if(i=n[r],null!==e&&vu(e,i))throw new Error(t+"contains a path "+e.toString()+" that is ancestor of another path "+i.toString());e=i}}(i,s)}}function bp(e,t,n){if(!n||void 0!==t){if(El(t))throw new Error(Y(e,"priority")+"is "+t.toString()+", but must be a valid Firebase priority (a string, finite number, server value, or null).");if(!Dp(t))throw new Error(Y(e,"priority")+"must be a valid Firebase priority (a string, finite number, server value, or null).")}}function Ip(e,t,n,r){if(!(r&&void 0===n||Ap(n)))throw new Error(Y(e,t)+'was an invalid key = "'+n+'". Firebase keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]").')}function Tp(e,t,n,r){n=n&&n.replace(/^\/*\.info(\/|$)/,"/"),xp(e,t,n,r)}function Ep(e,t){if(".info"===au(t))throw new Error(e+" failed = Can't modify data under /.info/")}const Cp=/[\[\].#$\/\u0000-\u001F\u007F]/,kp=/[\[\].#$\u0000-\u001F\u007F]/,Sp=10485760,Ap=function(e){return"string"==typeof e&&0!==e.length&&!Cp.test(e)},Np=function(e){return"string"==typeof e&&0!==e.length&&!kp.test(e)},Rp=function(e){return e=e&&e.replace(/^\/*\.info(\/|$)/,"/"),Np(e)},Dp=function(e){return null===e||"string"==typeof e||"number"==typeof e&&!El(e)||e&&"object"==typeof e&&L(e,".sv")},Pp=function(a,e,t){const o=t instanceof iu?new yu(t,a):t;if(void 0===e)throw new Error(a+"contains undefined "+wu(o));if("function"==typeof e)throw new Error(a+"contains a function "+wu(o)+" with contents = "+e.toString());if(El(e))throw new Error(a+"contains "+e.toString()+" "+wu(o));if("string"==typeof e&&e.length>Sp/3&&ee(e)>Sp)throw new Error(a+"contains a string greater than "+Sp+" utf8 bytes "+wu(o)+" ('"+e.substring(0,50)+"...')");if(e&&"object"==typeof e){let i=!1,s=!1;if(Al(e,(e,t)=>{if(".value"===e)i=!0;else if(".priority"!==e&&".sv"!==e&&(s=!0,!Ap(e)))throw new Error(a+" contains an invalid key ("+e+") "+wu(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_+=ee(e),_u(n),Pp(a,t,o),t=o,r=t.parts_.pop(),t.byteLength_-=ee(r),0<t.parts_.length&&--t.byteLength_}),i&&s)throw new Error(a+' contains ".value" child '+wu(o)+" in addition to actual children.")}},xp=function(e,t,n,r){if(!(r&&void 0===n||Np(n)))throw new Error(Y(e,t)+'was an invalid path = "'+n+'". Paths must be non-empty strings and can\'t contain ".", "#", "$", "[", or "]"')},Op=function(e,t){var n=t.path.toString();if("string"!=typeof t.repoInfo.host||0===t.repoInfo.host.length||!Ap(t.repoInfo.namespace)&&"localhost"!==t.repoInfo.host.split(":")[0]||0!==n.length&&!Rp(n))throw new Error(Y(e,"url")+'must be a valid firebase URL and the path can\'t contain ".", "#", "$", "[", or "]".')};class Mp{constructor(){this.eventLists_=[],this.recursionDepth_=0}}function Lp(e,t){let n=null;for(let i=0;i<t.length;i++){const s=t[i];var r=s.getPath();null===n||mu(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 Fp(e,t,n){Lp(e,n),Vp(e,e=>mu(e,t))}function Up(e,t,n){Lp(e,n),Vp(e,e=>vu(e,t)||vu(t,e))}function Vp(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(),hl&&wl("event: "+r.toString()),Ml(t))}}(e.eventLists_[i]),e.eventLists_[i]=null):n=!1)}n&&(e.eventLists_=[]),e.recursionDepth_--}const qp="repo_interrupt",Bp=25;class jp{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 Mp,this.nextWriteId_=1,this.interceptServerDataCallback_=null,this.onDisconnect_=mh(),this.transactionQueueTree_=new hp,this.persistentConnection_=null,this.key=this.repoInfo_.toURLString()}toString(){return(this.repoInfo_.secure?"https://":"http://")+this.repoInfo_.host}}function zp(a,e,t){if(a.stats_=Gl(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 fh(a.repoInfo_,(e,t,n,r)=>{Wp(a,e,t,n,r)},a.authTokenProvider_,a.appCheckProvider_),setTimeout(()=>Gp(a,!0),0);else{if(null!=t){if("object"!=typeof t)throw new Error("Only objects are supported for option databaseAuthVariableOverride");try{O(t)}catch(e){throw new Error("Invalid authOverride provided: "+e)}}a.persistentConnection_=new Iu(a.repoInfo_,e,(e,t,n,r)=>{Wp(a,e,t,n,r)},e=>{Gp(a,e)},e=>{var n;n=a,Al(e,(e,t)=>{Hp(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 wh(a.stats_,a.server_),n=e.toString(),Wl[n]||(Wl[n]=t()),Wl[n]),a.infoData_=new gh,a.infoSyncTree_=new Fd({startListening:(e,t,n,r)=>{let i=[];const s=a.infoData_.getNode(e._path);return s.isEmpty()||(i=Bd(a.infoSyncTree_,e._path,s),setTimeout(()=>{r("ok")},0)),i},stopListening:()=>{}}),Hp(a,"connected",!1),a.serverSyncTree_=new Fd({startListening:(r,e,t,i)=>(a.server_.listen(r,t,e,(e,t)=>{var n=i(e,t);Up(a.eventQueue_,r._path,n)}),[]),stopListening:(e,t)=>{a.server_.unlisten(e,t)}})}function $p(e){const t=e.infoData_.getNode(new iu(".info/serverTimeOffset"));var n=t.val()||0;return(new Date).getTime()+n}function Kp(e){return ip({timestamp:$p(e)})}function Wp(e,t,n,r,i){e.dataUpdateCount++;var s,a,o=new iu(t);n=e.interceptServerDataCallback_?e.interceptServerDataCallback_(t,n):n;let c=[];c=i?r?(s=V(n,e=>Xu(e)),function(e,t,n,r){if(o=Xd(e,r)){var i=Zd(o),s=i.path,a=i.queryId,o=fu(s,t),i=Uh.fromObject(n);return ep(e,s,new Sh(Th(a),o,i))}return[]}(e.serverSyncTree_,o,s,i)):(s=Xu(n),zd(e.serverSyncTree_,o,s,i)):r?(a=V(n,e=>Xu(e)),t=e.serverSyncTree_,i=o,r=a,a=Uh.fromObject(r),Gd(t,new Sh(Ih(),i,a))):(a=Xu(n),Bd(e.serverSyncTree_,o,a));let l=o;0<c.length&&(l=af(e,o)),Up(e.eventQueue_,l,c)}function Gp(e,t){Hp(e,"connected",t),!1===t&&function(r){tf(r,"onDisconnectEvents");const i=Kp(r),s=mh();yh(r.onDisconnect_,su(),(e,t)=>{var n=cp(e,t,r.serverSyncTree_,i);vh(s,e,n)});let a=[];yh(s,su(),(e,t)=>{a=a.concat(Bd(r.serverSyncTree_,e,t));var n=uf(r,e);af(r,n)}),r.onDisconnect_=mh(),Up(r.eventQueue_,su(),a)}(e)}function Hp(e,t,n){var r=new iu("/.info/"+t),i=Xu(n);e.infoData_.updateSnapshot(r,i);i=Bd(e.infoSyncTree_,r,i);Up(e.eventQueue_,r,i)}function Qp(e){return e.nextWriteId_++}function Yp(r,i,e,t,s){tf(r,"set",{path:i.toString(),value:e,priority:t});var n=Kp(r);const a=Xu(e,t);var o=Kd(r.serverSyncTree_,i),n=lp(a,o,n);const c=Qp(r);n=Ud(r.serverSyncTree_,i,n,c,!0);Lp(r.eventQueue_,n),r.server_.put(i.toString(),a.val(!0),(e,t)=>{var n="ok"===e;n||Il("set at "+i+" failed: "+e);n=qd(r.serverSyncTree_,c,!n);Up(r.eventQueue_,i,n),nf(0,s,e,t)});n=uf(r,i);af(r,n),Up(r.eventQueue_,n,[])}function Jp(n,r,i){n.server_.onDisconnectCancel(r.toString(),(e,t)=>{"ok"===e&&!function e(n,t){if(pu(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(qu,(e,t)=>{vh(n,new iu(e),t)}),e(n,t)}}if(0<n.children.size){var r=au(t);return t=cu(t),n.children.has(r)&&e(n.children.get(r),t)&&n.children.delete(r),0===n.children.size}return!0}(n.onDisconnect_,r),nf(0,i,e,t)})}function Xp(n,r,e,i){const s=Xu(e);n.server_.onDisconnectPut(r.toString(),s.val(!0),(e,t)=>{"ok"===e&&vh(n.onDisconnect_,r,s),nf(0,i,e,t)})}function Zp(e,t,n){let r;r=".info"===au(t._path)?jd(e.infoSyncTree_,t,n):jd(e.serverSyncTree_,t,n),Fp(e.eventQueue_,t._path,r)}function ef(e){e.persistentConnection_&&e.persistentConnection_.interrupt(qp)}function tf(e,...t){let n="";e.persistentConnection_&&(n=e.persistentConnection_.id+":"),wl(n,...t)}function nf(e,r,i,s){r&&Ml(()=>{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 rf(e,t,n){return Kd(e.serverSyncTree_,t,n)||Hu.EMPTY_NODE}function sf(t,e=t.transactionQueueTree_){if(e||lf(t,e),pp(e)){const n=cf(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=rf(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=fu(s,h.path);n=n.updateChild(o,h.currentOutputSnapshotRaw)}const c=n.val(!0),l=s;i.server_.put(l.toString(),c,t=>{tf(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(qd(i.serverSyncTree_,a[e].currentWriteId)),a[e].onComplete&&r.push(()=>a[e].onComplete(null,!0,a[e].currentOutputSnapshotResolved)),a[e].unwatcher();lf(i,dp(i.transactionQueueTree_,s)),sf(i,i.transactionQueueTree_),Up(i.eventQueue_,s,n);for(let t=0;t<r.length;t++)Ml(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{Il("transaction at "+l.toString()+" failed: "+t);for(let e=0;e<a.length;e++)a[e].status=4,a[e].abortReason=t}af(i,s)}},r)}(t,vp(e),n)}else gp(e)&&mp(e,e=>{sf(t,e)})}function af(e,t){var n=of(e,t),r=vp(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=fu(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(qd(i.serverSyncTree_,h.currentWriteId,!0));else if(0===h.status)if(h.retryCount>=Bp)e=!0,t="maxretry",n=n.concat(qd(i.serverSyncTree_,h.currentWriteId,!0));else{const d=rf(i,h.path,u);h.currentInputSnapshot=d;var c=s[r].update(d.val());if(void 0!==c){Pp("transaction failed: Data returned ",c,h.path);let e=Xu(c);"object"==typeof c&&null!=c&&L(c,".priority")||(e=e.updatePriority(d.getPriority()));o=h.currentWriteId,c=Kp(i),c=lp(e,d,c);h.currentOutputSnapshotRaw=e,h.currentOutputSnapshotResolved=c,h.currentWriteId=Qp(i),u.splice(u.indexOf(o),1),n=n.concat(Ud(i.serverSyncTree_,h.path,c,h.currentWriteId,h.applyLocally)),n=n.concat(qd(i.serverSyncTree_,o,!0))}else e=!0,t="nodata",n=n.concat(qd(i.serverSyncTree_,h.currentWriteId,!0))}Up(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))))}lf(i,i.transactionQueueTree_);for(let e=0;e<l.length;e++)Ml(l[e]);sf(i,i.transactionQueueTree_)}}(e,cf(e,n),r),r}function of(e,t){let n,r=e.transactionQueueTree_;for(n=au(t);null!==n&&void 0===pp(r);)r=dp(r,n),t=cu(t),n=au(t);return r}function cf(e,t){const n=[];return function t(n,e,r){const i=pp(e);if(i)for(let e=0;e<i.length;e++)r.push(i[e]);mp(e,e=>{t(n,e,r)})}(e,t,n),n.sort((e,t)=>e.order-t.order),n}function lf(t,n){const r=pp(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,fp(n,0<r.length?r:void 0)}mp(n,e=>{lf(t,e)})}function uf(t,e){var n=vp(of(t,e)),r=dp(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=>{hf(t,e)}),hf(t,r),function t(e,n,r,i){r&&!i&&n(e),mp(e,e=>{t(e,n,!0,i)}),r&&i&&n(e)}(r,e=>{hf(t,e)}),n}function hf(i,s){const a=pp(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(qd(i.serverSyncTree_,a[n].currentWriteId,!0)),a[n].onComplete&&o.push(a[n].onComplete.bind(null,new Error("set"),!1,null))));-1===t?fp(s,void 0):a.length=t+1,Up(i.eventQueue_,vp(s),e);for(let r=0;r<o.length;r++)Ml(o[r])}}const df=function(e,t){var n=pf(e),r=n.namespace;"firebase.com"===n.domain&&bl(n.host+" is no longer supported. Please use <YOUR FIREBASE>.firebaseio.com instead"),r&&"undefined"!==r||"localhost"===n.domain||bl("Cannot parse Firebase url. Please use https://<YOUR FIREBASE>.firebaseio.com"),n.secure||Tl();var i="ws"===n.scheme||"wss"===n.scheme;return{repoInfo:new jl(n.host,n.secure,r,i,t,"",r!==n.subdomain),path:new iu(n.pathString)}},pf=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]):Il(`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}},ff="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz",gf=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]=ff.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+=ff.charAt(a[n]);return f(20===i.length,"nextPushId: Length should be 20."),i}}();class mf{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+":"+O(this.snapshot.exportVal())}}class vf{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 yf{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 _f{constructor(e,t){this._repo=e,this._path=t}cancel(){const e=new y;return Jp(this._repo,this._path,e.wrapCallback(()=>{})),e.promise}remove(){Ep("OnDisconnect.remove",this._path);const e=new y;return Xp(this._repo,this._path,null,e.wrapCallback(()=>{})),e.promise}set(e){Ep("OnDisconnect.set",this._path),_p("OnDisconnect.set",e,this._path,!1);const t=new y;return Xp(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}setWithPriority(e,t){Ep("OnDisconnect.setWithPriority",this._path),_p("OnDisconnect.setWithPriority",e,this._path,!1),bp("OnDisconnect.setWithPriority",t,!1);const n=new y;return function(n,r,e,t,i){const s=Xu(e,t);n.server_.onDisconnectPut(r.toString(),s.val(!0),(e,t)=>{"ok"===e&&vh(n.onDisconnect_,r,s),nf(0,i,e,t)})}(this._repo,this._path,e,t,n.wrapCallback(()=>{})),n.promise}update(e){Ep("OnDisconnect.update",this._path),wp("OnDisconnect.update",e,this._path,!1);const t=new y;return function(r,i,n,s){if(U(n))return wl("onDisconnect().update() called with empty data. Don't do anything."),nf(0,s,"ok",void 0);r.server_.onDisconnectMerge(i.toString(),n,(e,t)=>{"ok"===e&&Al(n,(e,t)=>{var n=Xu(t);vh(r.onDisconnect_,du(i,e),n)}),nf(0,s,e,t)})}(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}}class wf{constructor(e,t,n,r){this._repo=e,this._path=t,this._queryParams=n,this._orderByCalled=r}get key(){return pu(this._path)?null:lu(this._path)}get ref(){return new Ef(this._repo,this._path)}get _queryIdentifier(){var e=ph(this._queryParams),e=vl(e);return"{}"===e?"default":e}get _queryObject(){return ph(this._queryParams)}isEqual(e){if(!((e=ae(e))instanceof wf))return!1;var t=this._repo===e._repo,n=mu(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 bf(e,t){if(!0===e._orderByCalled)throw new Error(t+": You can't combine multiple orderBy calls.")}function If(e){let t=null,n=null;if(e.hasStart()&&(t=e.getIndexStartValue()),e.hasEnd()&&(n=e.getIndexEndValue()),e.getIndex()===Su){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()!==Cl)throw new Error(r);if("string"!=typeof t)throw new Error(i)}if(e.hasEnd()){if(e.getIndexEndName()!==kl)throw new Error(r);if("string"!=typeof n)throw new Error(i)}}else if(e.getIndex()===qu){if(null!=t&&!Dp(t)||null!=n&&!Dp(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 Zu||e.getIndex()===eh,"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 Tf(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 Ef extends wf{constructor(e,t){super(e,t,new ch,!1)}get parent(){var e=hu(this._path);return null===e?null:new Ef(this._repo,e)}get root(){let e=this;for(;null!==e.parent;)e=e.parent;return e}}class Cf{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 iu(e),n=Af(this.ref,e);return new Cf(this._node.getChild(t),n,qu)}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 Cf(t,Af(this.ref,e),qu)))}hasChild(e){var t=new iu(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 kf(e,t){return(e=ae(e))._checkNotDeleted("ref"),void 0!==t?Af(e._root,t):e._root}function Sf(e,t){(e=ae(e))._checkNotDeleted("refFromURL");const n=df(t,e._repo.repoInfo_.nodeAdmin);Op("refFromURL",n);var r=n.repoInfo;return e._repo.repoInfo_.isCustomHost()||r.host===e._repo.repoInfo_.host||bl("refFromURL: Host name does not match the current database: (found "+r.host+" but expected "+e._repo.repoInfo_.host+")"),kf(e,n.path.toString())}function Af(e,t){return(null===au((e=ae(e))._path)?Tp:xp)("child","path",t,!1),new Ef(e._repo,du(e._path,t))}function Nf(e,t){e=ae(e),Ep("set",e._path),_p("set",t,e._path,!1);const n=new y;return Yp(e._repo,e._path,t,null,n.wrapCallback(()=>{})),n.promise}function Rf(e,t){wp("update",t,e._path,!1);const n=new y;return function(i,s,e,a){tf(i,"update",{path:s.toString(),value:e});let n=!0;const r=Kp(i),o={};if(Al(e,(e,t)=>{n=!1,o[e]=cp(du(s,e),Xu(t),i.serverSyncTree_,r)}),n)wl("update() called with empty data. Don't do anything."),nf(0,a,"ok",void 0);else{const c=Qp(i);var t=Vd(i.serverSyncTree_,s,o,c);Lp(i.eventQueue_,t),i.server_.merge(s.toString(),e,(e,t)=>{var n="ok"===e;n||Il("update at "+s+" failed: "+e);var r=qd(i.serverSyncTree_,c,!n),n=0<r.length?af(i,s):s;Up(i.eventQueue_,n,r),nf(0,a,e,t)}),Al(e,e=>{var t=uf(i,du(s,e));af(i,t)}),Up(i.eventQueue_,s,[])}}(e._repo,e._path,t,n.wrapCallback(()=>{})),n.promise}function Df(t){t=ae(t);var i,s,a,e=new yf(()=>{}),e=new Pf(e);return i=t._repo,s=t,a=e,(null!=(e=Wd(i.serverSyncTree_,s))?Promise.resolve(e):i.server_.get(s).then(e=>{var t,n=Xu(e).withIndex(s._queryParams.getIndex());$d(i.serverSyncTree_,s,a,!0);let r;return r=s._queryParams.loadsAllData()?Bd(i.serverSyncTree_,s._path,n):(t=Yd(i.serverSyncTree_,s),zd(i.serverSyncTree_,s._path,n,t)),Up(i.eventQueue_,s._path,r),jd(i.serverSyncTree_,s,a,null,!0),n},e=>(tf(i,"get for query "+O(s)+" failed: "+e),Promise.reject(new Error(e))))).then(e=>new Cf(e,new Ef(t._repo,t._path),t._queryParams.getIndex()))}class Pf{constructor(e){this.callbackContext=e}respondsTo(e){return"value"===e}createEvent(e,t){var n=t._queryParams.getIndex();return new mf("value",this,new Cf(e.snapshotNode,new Ef(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 vf(this,e,t):null}matches(e){return e instanceof Pf&&(!e.callbackContext||!this.callbackContext||e.callbackContext.matches(this.callbackContext))}hasAnyCallback(){return null!==this.callbackContext}}class xf{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 vf(this,e,t):null}createEvent(e,t){f(null!=e.childName,"Child events should have a childName.");var n=Af(new Ef(t._repo,t._path),e.childName),r=t._queryParams.getIndex();return new mf(e.type,this,new Cf(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 xf&&(this.eventType===e.eventType&&(!this.callbackContext||!e.callbackContext||this.callbackContext.matches(e.callbackContext)))}hasAnyCallback(){return!!this.callbackContext}}function Of(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)=>{Zp(n._repo,n,o),c(e,t)};a.userCallback=t.userCallback,a.context=t.context,t=a}a=new yf(t,s||void 0);const o="value"===e?new Pf(a):new xf(e,a);return function(e,t,n){let r;r=".info"===au(t._path)?$d(e.infoSyncTree_,t,n):$d(e.serverSyncTree_,t,n),Fp(e.eventQueue_,t._path,r)}(n._repo,n,o),()=>Zp(n._repo,n,o)}function Mf(e,t,n,r){return Of(e,"value",t,n,r)}function Lf(e,t,n,r){return Of(e,"child_added",t,n,r)}function Ff(e,t,n,r){return Of(e,"child_changed",t,n,r)}function Uf(e,t,n,r){return Of(e,"child_moved",t,n,r)}function Vf(e,t,n,r){return Of(e,"child_removed",t,n,r)}function qf(e,t,n){let r=null;var i=n?new yf(n):null;"value"===t?r=new Pf(i):t&&(r=new xf(t,i)),Zp(e._repo,e,r)}class Bf{}class jf extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){_p("endAt",this._value,e._path,!0);var t=uh(e._queryParams,this._value,this._key);if(Tf(t),If(t),e._queryParams.hasEnd())throw new Error("endAt: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new wf(e._repo,e._path,t,e._orderByCalled)}}class zf extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){_p("endBefore",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===Su||n?uh(e,t,n):uh(e,t,Cl),r.endBeforeSet_=!0,r}(e._queryParams,this._value,this._key);if(Tf(t),If(t),e._queryParams.hasEnd())throw new Error("endBefore: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new wf(e._repo,e._path,t,e._orderByCalled)}}class $f extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){_p("startAt",this._value,e._path,!0);var t=lh(e._queryParams,this._value,this._key);if(Tf(t),If(t),e._queryParams.hasStart())throw new Error("startAt: Starting point was already set (by another call to startAt, startBefore or equalTo).");return new wf(e._repo,e._path,t,e._orderByCalled)}}class Kf extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){_p("startAfter",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===Su||n?lh(e,t,n):lh(e,t,kl),r.startAfterSet_=!0,r}(e._queryParams,this._value,this._key);if(Tf(t),If(t),e._queryParams.hasStart())throw new Error("startAfter: Starting point was already set (by another call to startAt, startAfter, or equalTo).");return new wf(e._repo,e._path,t,e._orderByCalled)}}class Wf extends Bf{constructor(e){super(),this._limit=e}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToFirst: Limit was already set (by another call to limitToFirst or limitToLast).");return new wf(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 Gf extends Bf{constructor(e){super(),this._limit=e}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToLast: Limit was already set (by another call to limitToFirst or limitToLast).");return new wf(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 Hf extends Bf{constructor(e){super(),this._path=e}_apply(e){bf(e,"orderByChild");var t=new iu(this._path);if(pu(t))throw new Error("orderByChild: cannot pass in empty path. Use orderByValue() instead.");t=new Zu(t),t=hh(e._queryParams,t);return If(t),new wf(e._repo,e._path,t,!0)}}class Qf extends Bf{_apply(e){bf(e,"orderByKey");var t=hh(e._queryParams,Su);return If(t),new wf(e._repo,e._path,t,!0)}}class Yf extends Bf{_apply(e){bf(e,"orderByPriority");var t=hh(e._queryParams,qu);return If(t),new wf(e._repo,e._path,t,!0)}}class Jf extends Bf{_apply(e){bf(e,"orderByValue");var t=hh(e._queryParams,eh);return If(t),new wf(e._repo,e._path,t,!0)}}class Xf extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){if(_p("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 jf(this._value,this._key)._apply(new $f(this._value,this._key)._apply(e))}}function Zf(e,...t){let n=ae(e);for(const r of t)n=r._apply(n);return n}tl=Ef,f(!Td,"__referenceConstructor has already been defined"),Td=tl,nl=Ef,f(!Md,"__referenceConstructor has already been defined"),Md=nl;const eg="FIREBASE_DATABASE_EMULATOR_HOST",tg={};let ng=!1;function rg(e,t,n,r,i){let s=r||e.options.databaseURL;void 0===s&&(e.options.projectId||bl("Can't determine Firebase Database URL. Be sure to include a Project ID when calling firebase.initializeApp()."),wl("Using default host for project ",e.options.projectId),s=`${e.options.projectId}-default-rtdb.firebaseio.com`);let a=df(s,i),o=a.repoInfo,c,l=void 0;"undefined"!=typeof process&&process.env&&(l=process.env[eg]),l?(c=!0,s=`http://${l}?ns=${o.namespace}`,a=df(s,i),o=a.repoInfo):c=!a.repoInfo.secure;var u=i&&c?new Ul(Ul.OWNER):new Fl(e.name,e.options,t);Op("Invalid Firebase Database URL",a),pu(a.path)||bl("Database URL must point to the root of a Firebase Database (not including a child path).");u=function(e,t,n,r){let i=tg[t.name];i||(i={},tg[t.name]=i);var s=i[e.toURLString()];s&&bl("Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.");return s=new jp(e,ng,n,r),i[e.toURLString()]=s}(o,e,u,new Ll(e.name,n));return new ig(u,e)}class ig{constructor(e,t){this._repoInternal=e,this.app=t,this.type="database",this._instanceStarted=!1}get _repo(){return this._instanceStarted||(zp(this._repoInternal,this.app.options.appId,this.app.options.databaseAuthVariableOverride),this._instanceStarted=!0),this._repoInternal}get _root(){return this._rootInternal||(this._rootInternal=new Ef(this._repo,su())),this._rootInternal}_delete(){return null!==this._rootInternal&&(function(e,t){const n=tg[t];n&&n[e.key]===e||bl(`Database ${t}(${e.repoInfo_}) has already been deleted.`),ef(e),delete n[e.key]}(this._repo,this.app.name),this._repoInternal=null,this._rootInternal=null),Promise.resolve()}_checkNotDeleted(e){null===this._rootInternal&&bl("Cannot call "+e+" on a deleted database.")}}function sg(){Zl.IS_TRANSPORT_INITIALIZED&&Il("Transport has already been initialized. Please call this function before calling ref or setting up a listener")}function ag(){sg(),Ql.forceDisallow()}function og(){sg(),Xl.forceDisallow(),Ql.forceAllow()}function cg(e,t,n,r={}){(e=ae(e))._checkNotDeleted("useEmulator"),e._instanceStarted&&bl("Cannot call useEmulator() after instance has already been initialized.");var i,s=e._repoInternal;let a=void 0;s.repoInfo_.nodeAdmin?(r.mockUserToken&&bl('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 Ul(Ul.OWNER)):r.mockUserToken&&(i="string"==typeof r.mockUserToken?r.mockUserToken:_(r.mockUserToken,e.app.options.projectId),a=new Ul(i)),r=s,e=t,t=n,n=a,r.repoInfo_=new jl(`${e}:${t}`,!1,r.repoInfo_.namespace,r.repoInfo_.webSocketOnly,r.repoInfo_.nodeAdmin,r.repoInfo_.persistenceKey,r.repoInfo_.includeNamespaceInQueryParams,!0),n&&(r.authTokenProvider_=n)}function lg(e){(e=ae(e))._checkNotDeleted("goOnline"),(e=e._repo).persistentConnection_&&e.persistentConnection_.resume(qp)}function ug(e,t){_l(e,t)}const hg={".sv":"timestamp"};class dg{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return{committed:this.committed,snapshot:this.snapshot.toJSON()}}}function pg(i,e,t){if(i=ae(i),Ep("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=Mf(i,()=>{});return function(t,n,e,r,i,s){tf(t,"transaction on "+n);const a={path:n,update:e,onComplete:r,status:null,order:ll(),applyLocally:s,retryCount:0,unwatcher:i,abortReason:null,currentWriteId:null,currentInputSnapshot:null,currentOutputSnapshotRaw:null,currentOutputSnapshotResolved:null},o=rf(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{Pp("transaction failed: Data returned ",c,a.path),a.status=0;var l=dp(t.transactionQueueTree_,n);const u=pp(l)||[];u.push(a),fp(l,u);let e;if("object"==typeof c&&null!==c&&L(c,".priority"))e=F(c,".priority"),f(Dp(e),"Invalid priority returned by transaction. Priority must be a valid string, finite number, server value, or null.");else{const h=Kd(t.serverSyncTree_,n)||Hu.EMPTY_NODE;e=h.getPriority().val()}l=Kp(t),c=Xu(c,e),l=lp(c,o,l);a.currentOutputSnapshotRaw=c,a.currentOutputSnapshotResolved=l,a.currentWriteId=Qp(t);l=Ud(t.serverSyncTree_,n,l,a.currentWriteId,a.applyLocally);Up(t.eventQueue_,n,l),sf(t,t.transactionQueueTree_)}}(i._repo,i._path,e,(e,t,n)=>{var r;e?s.reject(e):(r=new Cf(n,new Ef(i._repo,i._path),qu),s.resolve(new dg(t,r)))},r,n),s.promise}Iu.prototype.simpleListen=function(e,t){this.sendRequest("q",{p:e},t)},Iu.prototype.echo=function(e,t){this.sendRequest("echo",{d:e},t)},Qc(Ye),We(new oe("database",(e,{instanceIdentifier:t})=>{return rg(e.getProvider("app").getImmediate(),e.getProvider("auth-internal"),e.getProvider("app-check-internal"),t)},"PUBLIC").setMultipleInstances(!0)),et(Gc,"0.14.4",rl),et(Gc,"0.14.4","esm2017");function fg(e){var t="FIREBASE WARNING: "+e;gg.warn(t)}const gg=new me("@firebase/database-compat");class mg{constructor(e){this._delegate=e}cancel(t){Q("OnDisconnect.cancel",0,1,arguments.length),J("OnDisconnect.cancel","onComplete",t,!0);const e=this._delegate.cancel();return t&&e.then(()=>t(null),e=>t(e)),e}remove(t){Q("OnDisconnect.remove",0,1,arguments.length),J("OnDisconnect.remove","onComplete",t,!0);const e=this._delegate.remove();return t&&e.then(()=>t(null),e=>t(e)),e}set(e,t){Q("OnDisconnect.set",1,2,arguments.length),J("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){Q("OnDisconnect.setWithPriority",2,3,arguments.length),J("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(Q("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,fg("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.")}J("OnDisconnect.update","onComplete",n,!0);const e=this._delegate.update(t);return n&&e.then(()=>n(null),e=>n(e)),e}}class vg{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return Q("TransactionResult.toJSON",0,1,arguments.length),{committed:this.committed,snapshot:this.snapshot.toJSON()}}}class yg{constructor(e,t){this._database=e,this._delegate=t}val(){return Q("DataSnapshot.val",0,0,arguments.length),this._delegate.val()}exportVal(){return Q("DataSnapshot.exportVal",0,0,arguments.length),this._delegate.exportVal()}toJSON(){return Q("DataSnapshot.toJSON",0,1,arguments.length),this._delegate.toJSON()}exists(){return Q("DataSnapshot.exists",0,0,arguments.length),this._delegate.exists()}child(e){return Q("DataSnapshot.child",0,1,arguments.length),e=String(e),xp("DataSnapshot.child","path",e,!1),new yg(this._database,this._delegate.child(e))}hasChild(e){return Q("DataSnapshot.hasChild",1,1,arguments.length),xp("DataSnapshot.hasChild","path",e,!1),this._delegate.hasChild(e)}getPriority(){return Q("DataSnapshot.getPriority",0,0,arguments.length),this._delegate.priority}forEach(t){return Q("DataSnapshot.forEach",1,1,arguments.length),J("DataSnapshot.forEach","action",t,!1),this._delegate.forEach(e=>t(new yg(this._database,e)))}hasChildren(){return Q("DataSnapshot.hasChildren",0,0,arguments.length),this._delegate.hasChildren()}get key(){return this._delegate.key}numChildren(){return Q("DataSnapshot.numChildren",0,0,arguments.length),this._delegate.size}getRef(){return Q("DataSnapshot.ref",0,0,arguments.length),new wg(this._database,this._delegate.ref)}get ref(){return this.getRef()}}class _g{constructor(e,t){this.database=e,this._delegate=t}on(e,n,t,r){var i;Q("Query.on",2,4,arguments.length),J("Query.on","callback",n,!1);const s=_g.getCancelAndContextArgs_("Query.on",t,r);var a=(e,t)=>{n.call(s.context,new yg(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 Mf(this._delegate,a,o),n;case"child_added":return Lf(this._delegate,a,o),n;case"child_removed":return Vf(this._delegate,a,o),n;case"child_changed":return Ff(this._delegate,a,o),n;case"child_moved":return Uf(this._delegate,a,o),n;default:throw new Error(Y("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;Q("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(Y(e,"eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}("Query.off",e,!0),J("Query.off","callback",t,!0),X("Query.off","context",n,!0),t?((r=()=>{}).userCallback=t,r.context=n,qf(this._delegate,e,r)):qf(this._delegate,e)}get(){return Df(this._delegate).then(e=>new yg(this.database,e))}once(e,r,t,n){Q("Query.once",1,4,arguments.length),J("Query.once","callback",r,!0);const i=_g.getCancelAndContextArgs_("Query.once",t,n),s=new y;var a=(e,t)=>{var n=new yg(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":Mf(this._delegate,a,o,{onlyOnce:!0});break;case"child_added":Lf(this._delegate,a,o,{onlyOnce:!0});break;case"child_removed":Vf(this._delegate,a,o,{onlyOnce:!0});break;case"child_changed":Ff(this._delegate,a,o,{onlyOnce:!0});break;case"child_moved":Uf(this._delegate,a,o,{onlyOnce:!0});break;default:throw new Error(Y("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 Q("Query.limitToFirst",1,1,arguments.length),new _g(this.database,Zf(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 Wf(e)}(e)))}limitToLast(e){return Q("Query.limitToLast",1,1,arguments.length),new _g(this.database,Zf(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 Gf(e)}(e)))}orderByChild(e){return Q("Query.orderByChild",1,1,arguments.length),new _g(this.database,Zf(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 xp("orderByChild","path",e,!1),new Hf(e)}(e)))}orderByKey(){return Q("Query.orderByKey",0,0,arguments.length),new _g(this.database,Zf(this._delegate,new Qf))}orderByPriority(){return Q("Query.orderByPriority",0,0,arguments.length),new _g(this.database,Zf(this._delegate,new Yf))}orderByValue(){return Q("Query.orderByValue",0,0,arguments.length),new _g(this.database,Zf(this._delegate,new Jf))}startAt(e=null,t){return Q("Query.startAt",0,2,arguments.length),new _g(this.database,Zf(this._delegate,([e=null,t]=[e,t],Ip("startAt","key",t,!0),new $f(e,t))))}startAfter(e=null,t){return Q("Query.startAfter",0,2,arguments.length),new _g(this.database,Zf(this._delegate,(e=e,t=t,Ip("startAfter","key",t,!0),new Kf(e,t))))}endAt(e=null,t){return Q("Query.endAt",0,2,arguments.length),new _g(this.database,Zf(this._delegate,(e=e,t=t,Ip("endAt","key",t,!0),new jf(e,t))))}endBefore(e=null,t){return Q("Query.endBefore",0,2,arguments.length),new _g(this.database,Zf(this._delegate,(e=e,t=t,Ip("endBefore","key",t,!0),new zf(e,t))))}equalTo(e,t){return Q("Query.equalTo",1,2,arguments.length),new _g(this.database,Zf(this._delegate,(e=e,t=t,Ip("equalTo","key",t,!0),new Xf(e,t))))}toString(){return Q("Query.toString",0,0,arguments.length),this._delegate.toString()}toJSON(){return Q("Query.toJSON",0,1,arguments.length),this._delegate.toJSON()}isEqual(e){if(Q("Query.isEqual",1,1,arguments.length),e instanceof _g)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,J(e,"cancel",r.cancel,!0),r.context=n,X(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(Y(e,"cancelOrContext")+" must either be a cancel callback or a context object.");r.cancel=t}return r}get ref(){return new wg(this.database,new Ef(this._delegate._repo,this._delegate._path))}}class wg extends _g{constructor(e,t){super(e,new wf(t._repo,t._path,new ch,!1)),this.database=e,this._delegate=t}getKey(){return Q("Reference.key",0,0,arguments.length),this._delegate.key}child(e){return Q("Reference.child",1,1,arguments.length),"number"==typeof e&&(e=String(e)),new wg(this.database,Af(this._delegate,e))}getParent(){Q("Reference.parent",0,0,arguments.length);var e=this._delegate.parent;return e?new wg(this.database,e):null}getRoot(){return Q("Reference.root",0,0,arguments.length),new wg(this.database,this._delegate.root)}set(e,t){Q("Reference.set",1,2,arguments.length),J("Reference.set","onComplete",t,!0);const n=Nf(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}update(t,n){if(Q("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,fg("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.")}Ep("Reference.update",this._delegate._path),J("Reference.update","onComplete",n,!0);const e=Rf(this._delegate,t);return n&&e.then(()=>n(null),e=>n(e)),e}setWithPriority(e,t,n){Q("Reference.setWithPriority",2,3,arguments.length),J("Reference.setWithPriority","onComplete",n,!0);const r=function(e,t,n){if(Ep("setWithPriority",e._path),_p("setWithPriority",t,e._path,!1),bp("setWithPriority",n,!1),".length"===e.key||".keys"===e.key)throw"setWithPriority failed: "+e.key+" is a read-only object.";const r=new y;return Yp(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){Q("Reference.remove",0,1,arguments.length),J("Reference.remove","onComplete",t,!0);const e=(n=this._delegate,Ep("remove",n._path),Nf(n,null));var n;return t&&e.then(()=>t(null),e=>t(e)),e}transaction(e,t,n){Q("Reference.transaction",1,3,arguments.length),J("Reference.transaction","transactionUpdate",e,!1),J("Reference.transaction","onComplete",t,!0),function(e,t,n,r){if((!r||void 0!==n)&&"boolean"!=typeof n)throw new Error(Y(e,t)+"must be a boolean.")}("Reference.transaction","applyLocally",n,!0);const r=pg(this._delegate,e,{applyLocally:n}).then(e=>new vg(e.committed,new yg(this.database,e.snapshot)));return t&&r.then(e=>t(null,e.committed,e.snapshot),e=>t(e,!1,null)),r}setPriority(e,t){Q("Reference.setPriority",1,2,arguments.length),J("Reference.setPriority","onComplete",t,!0);const n=function(e,t){e=ae(e),Ep("setPriority",e._path),bp("setPriority",t,!1);const n=new y;return Yp(e._repo,du(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){Q("Reference.push",0,2,arguments.length),J("Reference.push","onComplete",t,!0);const n=function(e,t){e=ae(e),Ep("push",e._path),_p("push",t,e._path,!0);var n=$p(e._repo),n=gf(n);const r=Af(e,n),i=Af(e,n);let s;return s=null!=t?Nf(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 wg(this.database,e));t&&r.then(()=>t(null),e=>t(e));const i=new wg(this.database,n);return i.then=r.then.bind(r),i.catch=r.catch.bind(r,void 0),i}onDisconnect(){return Ep("Reference.onDisconnect",this._delegate._path),new mg(new _f(this._delegate._repo,this._delegate._path))}get key(){return this.getKey()}get parent(){return this.getParent()}get root(){return this.getRoot()}}class bg{constructor(e,t){this._delegate=e,this.app=t,this.INTERNAL={delete:()=>this._delegate._delete(),forceWebSockets:ag,forceLongPolling:og}}useEmulator(e,t,n={}){cg(this._delegate,e,t,n)}ref(e){if(Q("database.ref",0,1,arguments.length),e instanceof wg){var t=Sf(this._delegate,e.toString());return new wg(this,t)}t=kf(this._delegate,e);return new wg(this,t)}refFromURL(e){Q("database.refFromURL",1,1,arguments.length);var t=Sf(this._delegate,e);return new wg(this,t)}goOffline(){var e;Q("database.goOffline",0,0,arguments.length),(e=ae(e=this._delegate))._checkNotDeleted("goOffline"),ef(e._repo)}goOnline(){return Q("database.goOnline",0,0,arguments.length),lg(this._delegate)}}bg.ServerValue={TIMESTAMP:hg,increment:e=>({".sv":{increment:e}})};var Ig,Tg=Object.freeze({__proto__:null,initStandalone:function({app:e,url:t,version:n,customAuthImpl:r,namespace:i,nodeAdmin:s=!1}){Qc(n);const a=new le("auth-internal",new ue("database-standalone"));return a.setComponent(new oe("auth-internal",()=>r,"PRIVATE")),{instance:new bg(rg(e,a,void 0,t,s),e),namespace:i}}});const Eg=bg.ServerValue;(Ig=wt).INTERNAL.registerComponent(new oe("database-compat",(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("database").getImmediate({identifier:t});return new bg(r,n)},"PUBLIC").setServiceProps({Reference:wg,Query:_g,Database:bg,DataSnapshot:yg,enableLogging:ug,INTERNAL:Tg,ServerValue:Eg}).setMultipleInstances(!0)),Ig.registerVersion("@firebase/database-compat","0.3.4");var yt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Cg={},kg=yt||self;function Sg(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 Ag(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var Ng="closure_uid_"+(1e9*Math.random()>>>0),Rg=0;function Dg(e,t,n){return e.call.apply(e.bind,arguments)}function Pg(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 xg(e,t,n){return(xg=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?Dg:Pg).apply(null,arguments)}function Og(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 Mg(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 Lg(){this.s=this.s,this.o=this.o}Lg.prototype.s=!1,Lg.prototype.sa=function(){var e;!this.s&&(this.s=!0,this.N(),0)&&(e=this,Object.prototype.hasOwnProperty.call(e,Ng)&&e[Ng]||(e[Ng]=++Rg))},Lg.prototype.N=function(){if(this.o)for(;this.o.length;)this.o.shift()()};const Fg=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 Ug(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 Vg(t){for(let e=1;e<arguments.length;e++){var n=arguments[e];if(Sg(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 qg(e,t){this.type=e,this.g=this.target=t,this.defaultPrevented=!1}qg.prototype.h=function(){this.defaultPrevented=!0};var Bg=function(){if(!kg.addEventListener||!Object.defineProperty)return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}});try{kg.addEventListener("test",()=>{},t),kg.removeEventListener("test",()=>{},t)}catch(e){}return e}();function jg(e){return/^[\s\xa0]*$/.test(e)}function zg(){var e=kg.navigator;return(e=e&&e.userAgent)?e:""}function $g(e){return-1!=zg().indexOf(e)}function Kg(e){return Kg[" "](e),e}Kg[" "]=function(){};var Wg,Gg=$g("Opera"),Hg=$g("Trident")||$g("MSIE"),Qg=$g("Edge"),Yg=Qg||Hg,Jg=$g("Gecko")&&!(-1!=zg().toLowerCase().indexOf("webkit")&&!$g("Edge"))&&!($g("Trident")||$g("MSIE"))&&!$g("Edge"),Xg=-1!=zg().toLowerCase().indexOf("webkit")&&!$g("Edge");function Zg(){var e=kg.document;return e?e.documentMode:void 0}e:{var em="",tm=(tm=zg(),Jg?/rv:([^\);]+)(\)|;)/.exec(tm):Qg?/Edge\/([\d\.]+)/.exec(tm):Hg?/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(tm):Xg?/WebKit\/(\S+)/.exec(tm):Gg?/(?:Version)[ \/]?(\S+)/.exec(tm):void 0);if(tm&&(em=tm?tm[1]:""),Hg){tm=Zg();if(null!=tm&&tm>parseFloat(em)){Wg=String(tm);break e}}Wg=em}var nm=kg.document&&Hg&&(Zg()||parseInt(Wg,10))||void 0;function rm(e,t){if(qg.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(Jg){e:{try{Kg(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:im[e.pointerType]||"",this.state=e.state,(this.i=e).defaultPrevented&&rm.$.h.call(this)}}Mg(rm,qg);var im={2:"touch",3:"pen",4:"mouse"};rm.prototype.h=function(){rm.$.h.call(this);var e=this.i;e.preventDefault?e.preventDefault():e.returnValue=!1};var sm="closure_listenable_"+(1e6*Math.random()|0),am=0;function om(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=++am,this.fa=this.ia=!1}function cm(e){e.fa=!0,e.listener=null,e.proxy=null,e.src=null,e.la=null}function lm(e,t,n){for(const r in e)t.call(n,e[r],r,e)}function um(e){const t={};for(const n in e)t[n]=e[n];return t}const hm="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function dm(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<hm.length;e++)n=hm[e],Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}}function pm(e){this.src=e,this.g={},this.h=0}function fm(e,t){var n,r,i,s=t.type;s in e.g&&(n=e.g[s],(i=0<=(r=Fg(n,t)))&&Array.prototype.splice.call(n,r,1),i&&(cm(t),0==e.g[s].length&&(delete e.g[s],e.h--)))}function gm(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}pm.prototype.add=function(e,t,n,r,i){var s=e.toString();(e=this.g[s])||(e=this.g[s]=[],this.h++);var a=gm(e,t,r,i);return-1<a?(t=e[a],n||(t.ia=!1)):((t=new om(t,this.src,s,!!r,i)).ia=n,e.push(t)),t};var mm="closure_lm_"+(1e6*Math.random()|0),vm={};function ym(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=Cm(r);return t&&t[sm]?t.P(n,r,Ag(i)?!!i.capture:!!i,s):_m(t,n,r,!0,i,s)}(e,t,n,r,i);if(Array.isArray(t)){for(var s=0;s<t.length;s++)ym(e,t[s],n,r,i);return null}return n=Cm(n),e&&e[sm]?e.O(t,n,Ag(r)?!!r.capture:!!r,i):_m(e,t,n,!1,r,i)}function _m(e,t,n,r,i,s){if(!t)throw Error("Invalid event type");var a=Ag(i)?!!i.capture:!!i,o=Tm(e);if(o||(e[mm]=o=new pm(e)),(n=o.add(t,n,r,a,s)).proxy)return n;if(r=function(){const n=Im;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=!Bg?a:i)&&(i=!1),e.addEventListener(t.toString(),r,i);else if(e.attachEvent)e.attachEvent(bm(t.toString()),r);else{if(!e.addListener||!e.removeListener)throw Error("addEventListener and attachEvent are unavailable.");e.addListener(r)}return n}function wm(e){var t,n,r;"number"!=typeof e&&e&&!e.fa&&((t=e.src)&&t[sm]?fm(t.i,e):(n=e.type,r=e.proxy,t.removeEventListener?t.removeEventListener(n,r,e.capture):t.detachEvent?t.detachEvent(bm(n),r):t.addListener&&t.removeListener&&t.removeListener(r),(n=Tm(t))?(fm(n,e),0==n.h&&(n.src=null,t[mm]=null)):cm(e)))}function bm(e){return e in vm?vm[e]:vm[e]="on"+e}function Im(e,t){var n,r;return e=!!e.fa||(t=new rm(t,this),n=e.listener,r=e.la||e.src,e.ia&&wm(e),n.call(r,t))}function Tm(e){return(e=e[mm])instanceof pm?e:null}var Em="__closure_events_fn_"+(1e9*Math.random()>>>0);function Cm(t){return"function"==typeof t?t:(t[Em]||(t[Em]=function(e){return t.handleEvent(e)}),t[Em])}function km(){Lg.call(this),this.i=new pm(this),(this.S=this).J=null}function Sm(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 qg(t,e):t instanceof qg?t.target=t.target||e:(a=t,dm(t=new qg(r,e),a)),a=!0,n)for(var i=n.length-1;0<=i;i--)var s=t.g=n[i],a=Am(s,r,!0,t)&&a;if(a=Am(s=t.g=e,r,!0,t)&&a,a=Am(s,r,!1,t)&&a,n)for(i=0;i<n.length;i++)a=Am(s=t.g=n[i],r,!1,t)&&a}function Am(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&&fm(e.i,c),i=!1!==a.call(o,r)&&i)}return i&&!r.defaultPrevented}Mg(km,Lg),km.prototype[sm]=!0,km.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=Ag(i)?!!i.capture:!!i,r=Cm(r),t&&t[sm]?(t=t.i,(n=String(n).toString())in t.g&&-1<(r=gm(a=t.g[n],r,i,s))&&(cm(a[r]),Array.prototype.splice.call(a,r,1),0==a.length&&(delete t.g[n],t.h--))):(t=t&&Tm(t))&&(n=t.g[n.toString()],(r=(t=-1)<(t=n?gm(n,r,i,s):t)?n[t]:null)&&wm(r))}(this,e,t,n,r)},km.prototype.N=function(){if(km.$.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++)cm(n[r]);delete t.g[e],t.h--}}this.J=null},km.prototype.O=function(e,t,n,r){return this.i.add(String(e),t,!1,n,r)},km.prototype.P=function(e,t,n,r){return this.i.add(String(e),t,!0,n,r)};var Nm=kg.JSON.stringify;var Rm=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 Dm,e=>e.reset());class Dm{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 Pm,xm=!1,Om=new class{constructor(){this.h=this.g=null}add(e,t){const n=Rm.get();n.set(e,t),this.h?this.h.next=n:this.g=n,this.h=n}},Mm=()=>{const e=kg.Promise.resolve(void 0);Pm=()=>{e.then(Lm)}};var Lm=()=>{for(var e;e=function(){var e=Om;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){kg.setTimeout(()=>{throw e},0)}(e)}var t=Rm;t.j(e),t.h<100&&(t.h++,e.next=t.g,t.g=e)}xm=!1};function Fm(e,t){km.call(this),this.h=e||1,this.g=t||kg,this.j=xg(this.qb,this),this.l=Date.now()}function Um(e){e.ga=!1,e.T&&(e.g.clearTimeout(e.T),e.T=null)}function Vm(e,t,n){if("function"==typeof e)n&&(e=xg(e,n));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=xg(e.handleEvent,e)}return 2147483647<Number(t)?-1:kg.setTimeout(e,t||0)}Mg(Fm,km),(bt=Fm.prototype).ga=!1,bt.T=null,bt.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),Sm(this,"tick"),this.ga&&(Um(this),this.start())))},bt.start=function(){this.ga=!0,this.T||(this.T=this.g.setTimeout(this.j,this.h),this.l=Date.now())},bt.N=function(){Fm.$.N.call(this),Um(this),delete this.g};class qm extends Lg{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=Vm(()=>{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&&(kg.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function Bm(e){Lg.call(this),this.h=e,this.g={}}Mg(Bm,Lg);var jm=[];function zm(e,t,n,r){Array.isArray(n)||(n&&(jm[0]=n.toString()),n=jm);for(var i=0;i<n.length;i++){var s=ym(t,n[i],r||e.handleEvent,!1,e.h||e);if(!s)break;e.g[s.key]=s}}function $m(e){lm(e.g,function(e,t){this.g.hasOwnProperty(t)&&wm(e)},e),e.g={}}function Km(){this.g=!0}function Wm(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 Nm(n)}catch(e){return t}}(e,n)+(r?" "+r:"")})}Bm.prototype.N=function(){Bm.$.N.call(this),$m(this)},Bm.prototype.handleEvent=function(){throw Error("EventHandler.handleEvent not implemented")},Km.prototype.Ea=function(){this.g=!1},Km.prototype.info=function(){};var Gm={},Hm=null;function Qm(){return Hm=Hm||new km}function Ym(e){qg.call(this,Gm.Ta,e)}function Jm(){var e=Qm();Sm(e,new Ym(e))}function Xm(e,t){qg.call(this,Gm.STAT_EVENT,e),this.stat=t}function Zm(e){var t=Qm();Sm(t,new Xm(t,e))}function ev(e,t){qg.call(this,Gm.Ua,e),this.size=t}function tv(e,t){if("function"!=typeof e)throw Error("Fn must not be null and must be a function");return kg.setTimeout(function(){e()},t)}Gm.Ta="serverreachability",Mg(Ym,qg),Gm.STAT_EVENT="statevent",Mg(Xm,qg),Gm.Ua="timingevent",Mg(ev,qg);It={NO_ERROR:0,rb:1,Eb:2,Db:3,yb:4,Cb:5,Fb:6,Qa:7,TIMEOUT:8,Ib:9},il={wb:"complete",Sb:"success",Ra:"error",Qa:"abort",Kb:"ready",Lb:"readystatechange",TIMEOUT:"timeout",Gb:"incrementaldata",Jb:"progress",zb:"downloadprogress",$b:"uploadprogress"};function nv(){}function rv(e){return e.h||(e.h=e.i())}function iv(){}nv.prototype.h=null;yt={OPEN:"a",vb:"b",Ra:"c",Hb:"d"};function sv(){qg.call(this,"d")}function av(){qg.call(this,"c")}function ov(){}function cv(e,t,n,r){this.l=e,this.j=t,this.m=n,this.W=r||1,this.U=new Bm(this),this.P=hv,this.V=new Fm(e=Yg?125:void 0),this.I=null,this.i=!1,this.s=this.A=this.v=this.L=this.G=this.Y=this.B=null,this.F=[],this.g=null,this.C=0,this.o=this.u=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 lv}function lv(){this.i=null,this.g="",this.h=!1}Mg(sv,qg),Mg(av,qg),Mg(ov,nv),ov.prototype.g=function(){return new XMLHttpRequest},ov.prototype.i=function(){return{}};var uv=new ov,hv=45e3,dv={},pv={};function fv(e,t,n){e.L=1,e.v=Pv(Sv(t)),e.s=n,e.S=!0,gv(e,null)}function gv(e,t){e.G=Date.now(),yv(e),e.A=Sv(e.v);var a,o,c,l,u,h,n=e.A,r=e.W;Array.isArray(r)||(r=[String(r)]),Kv(n.i,"t",r),e.C=0,n=e.l.J,e.h=new lv,e.g=$y(e.l,n?t:null,!e.s),0<e.O&&(e.M=new qm(xg(e.Pa,e,e.g),e.O)),zm(e.U,e.g,"readystatechange",e.nb),t=e.I?um(e.I):{},e.s?(e.u||(e.u="POST"),t["Content-Type"]="application/x-www-form-urlencoded",e.g.ha(e.A,e.u,e.s,t)):(e.u="GET",e.g.ha(e.A,e.u,null,t)),Jm(),a=e.j,o=e.u,c=e.A,l=e.m,u=e.W,h=e.s,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 mv(e){return e.g&&("GET"==e.u&&2!=e.L&&e.l.Ha)}function vv(e,t,n){let r=!0,i;for(;!e.J&&e.C<n.length;){if(i=(a=n,c=o=void 0,o=(s=e).C,-1==(c=a.indexOf("\n",o))?pv:(o=Number(a.substring(o,c)),isNaN(o)?dv:(c+=1)+o>a.length?pv:(a=a.slice(c,c+o),s.C=c+o,a))),i==pv){4==t&&(e.o=4,Zm(14),r=!1),Wm(e.j,e.m,null,"[Incomplete Response]");break}if(i==dv){e.o=4,Zm(15),Wm(e.j,e.m,n,"[Invalid Chunk]"),r=!1;break}Wm(e.j,e.m,i,null),Tv(e,i)}var s,a,o,c;mv(e)&&i!=pv&&i!=dv&&(e.h.g="",e.C=0),4!=t||0!=n.length||e.h.h||(e.o=1,Zm(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),Ly(t),t.M=!0,Zm(11))):(Wm(e.j,e.m,n,"[Invalid Chunked Response]"),Iv(e),bv(e))}function yv(e){e.Y=Date.now()+e.P,_v(e,e.P)}function _v(e,t){if(null!=e.B)throw Error("WatchDog timer not null");e.B=tv(xg(e.lb,e),t)}function wv(e){e.B&&(kg.clearTimeout(e.B),e.B=null)}function bv(e){0==e.l.H||e.J||Vy(e.l,e)}function Iv(e){wv(e);var t=e.M;t&&"function"==typeof t.sa&&t.sa(),e.M=null,Um(e.V),$m(e.U),e.g&&(t=e.g,e.g=null,t.abort(),t.sa())}function Tv(e,t){try{var n=e.l;if(0!=n.H&&(n.g==e||Jv(n.i,e)))if(!e.K&&Jv(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;Uy(n),Ay(n)}My(n),Zm(18)}}else n.Fa=i[1],0<n.Fa-n.V&&i[2]<37500&&n.G&&0==n.A&&!n.v&&(n.v=tv(xg(n.ib,n),6e3));if(Yv(n.i)<=1&&n.oa){try{n.oa()}catch(e){}n.oa=void 0}}else By(n,11)}else if(!e.K&&n.g!=e||Uy(n),!jg(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&&(Xv(c,c.h),c.h=null))),!r.F||(l=f.g?f.g.getResponseHeader("X-HTTP-Session-Id"):null)&&(r.Da=l,Dv(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=zy(r,r.J?r.pa:null,r.Y),p.K?(Zv(r.i,p),h=p,(d=r.L)&&h.setTimeout(d),h.B&&(wv(h),yv(h)),r.g=p):Oy(r),0<n.j.length&&Ry(n)}else"stop"!=s[0]&&"close"!=s[0]||By(n,7);else 3==n.H&&("stop"==s[0]||"close"==s[0]?"stop"==s[0]?By(n,7):Sy(n):"noop"!=s[0]&&n.h&&n.h.Aa(s),n.A=0)}Jm()}catch(e){}}function Ev(e,t){if(e.forEach&&"function"==typeof e.forEach)e.forEach(t,void 0);else if(Sg(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(Sg(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(Sg(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)}(bt=cv.prototype).setTimeout=function(e){this.P=e},bt.nb=function(e){e=e.target;const t=this.M;t&&3==by(e)?t.l():this.Pa(e)},bt.Pa=function(e){try{if(e==this.g)e:{var t=by(this.g),n=this.g.Ia();this.g.da();if(!(t<3)&&(3!=t||Yg||this.g&&(this.h.h||this.g.ja()||Iy(this.g)))){this.J||4!=t||7==n||Jm(),wv(this);var r=this.g.da();this.ca=r;t:if(mv(this)){var i=Iy(this.g);e="";var s=i.length,a=4==by(this.g);if(!this.h.i){if("undefined"==typeof TextDecoder){Iv(this),bv(this);var o="";break t}this.h.i=new kg.TextDecoder}for(n=0;n<s;n++)this.h.h=!0,e+=this.h.i.decode(i[n],{stream:a&&n==s-1});i.splice(0,s),this.h.g+=e,this.C=0,o=this.h.g}else o=this.g.ja();if(this.i=200==r,h=this.j,d=this.u,p=this.A,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)&&!jg(c)){var u=c;break t}}u=null}if(!(r=u)){this.i=!1,this.o=3,Zm(12),Iv(this),bv(this);break e}Wm(this.j,this.m,r,"Initial handshake response via X-HTTP-Initial-Response"),this.K=!0,Tv(this,r)}this.S?(vv(this,t,o),Yg&&this.i&&3==t&&(zm(this.U,this.V,"tick",this.mb),this.V.start())):(Wm(this.j,this.m,o,null),Tv(this,o)),4==t&&Iv(this),this.i&&!this.J&&(4==t?Vy(this.l,this):(this.i=!1,yv(this)))}else(function(e){const t={};e=(e.g&&2<=by(e)&&e.g.getAllResponseHeaders()||"").split("\r\n");for(let i=0;i<e.length;i++)if(!jg(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.o=3,Zm(12)):(this.o=0,Zm(13)),Iv(this),bv(this)}}}catch(e){}var h,d,p,f,g,m,v},bt.mb=function(){var e,t;this.g&&(e=by(this.g),t=this.g.ja(),this.C<t.length&&(wv(this),vv(this,e,t),this.i&&4!=e&&yv(this)))},bt.cancel=function(){this.J=!0,Iv(this)},bt.lb=function(){this.B=null;var e,t,n=Date.now();0<=n-this.Y?(e=this.j,t=this.A,e.info(function(){return"TIMEOUT: "+t}),2!=this.L&&(Jm(),Zm(17)),Iv(this),this.o=2,bv(this)):_v(this,this.Y-n)};var Cv=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$");function kv(e){var t,n;this.g=this.s=this.j="",this.m=null,this.o=this.l="",this.h=!1,e instanceof kv?(this.h=e.h,Av(this,e.j),this.s=e.s,this.g=e.g,Nv(this,e.m),this.l=e.l,t=e.i,(n=new Bv).i=t.i,t.g&&(n.g=new Map(t.g),n.h=t.h),Rv(this,n),this.o=e.o):e&&(t=String(e).match(Cv))?(this.h=!1,Av(this,t[1]||"",!0),this.s=xv(t[2]||""),this.g=xv(t[3]||"",!0),Nv(this,t[4]),this.l=xv(t[5]||"",!0),Rv(this,t[6]||"",!0),this.o=xv(t[7]||"")):(this.h=!1,this.i=new Bv(null,this.h))}function Sv(e){return new kv(e)}function Av(e,t,n){e.j=n?xv(t,!0):t,e.j&&(e.j=e.j.replace(/:$/,""))}function Nv(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 Rv(e,t,n){var r,i;t instanceof Bv?(e.i=t,r=e.i,(i=e.h)&&!r.j&&(jv(r),r.i=null,r.g.forEach(function(e,t){var n=t.toLowerCase();t!=n&&(zv(this,t),Kv(this,n,e))},r)),r.j=i):(n||(t=Ov(t,Vv)),e.i=new Bv(t,e.h))}function Dv(e,t,n){e.i.set(t,n)}function Pv(e){return Dv(e,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),e}function xv(e,t){return e?t?decodeURI(e.replace(/%25/g,"%2525")):decodeURIComponent(e):""}function Ov(e,t,n){return"string"==typeof e?(e=encodeURI(e).replace(t,Mv),e=n?e.replace(/%25([0-9a-fA-F]{2})/g,"%$1"):e):null}function Mv(e){return"%"+((e=e.charCodeAt(0))>>4&15).toString(16)+(15&e).toString(16)}kv.prototype.toString=function(){var e=[],t=this.j;t&&e.push(Ov(t,Lv,!0),":");var n=this.g;return!n&&"file"!=t||(e.push("//"),(t=this.s)&&e.push(Ov(t,Lv,!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(Ov(n,"/"==n.charAt(0)?Uv:Fv,!0))),(n=this.i.toString())&&e.push("?",n),(n=this.o)&&e.push("#",Ov(n,qv)),e.join("")};var Lv=/[#\/\?@]/g,Fv=/[#\?:]/g,Uv=/[#\?]/g,Vv=/[#\?@]/g,qv=/#/g;function Bv(e,t){this.h=this.g=null,this.i=e||null,this.j=!!t}function jv(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 zv(e,t){jv(e),t=Wv(e,t),e.g.has(t)&&(e.i=null,e.h-=e.g.get(t).length,e.g.delete(t))}function $v(e,t){return jv(e),t=Wv(e,t),e.g.has(t)}function Kv(e,t,n){zv(e,t),0<n.length&&(e.i=null,e.g.set(Wv(e,t),Ug(n)),e.h+=n.length)}function Wv(e,t){return t=String(t),t=e.j?t.toLowerCase():t}(bt=Bv.prototype).add=function(e,t){jv(this),this.i=null,e=Wv(this,e);var n=this.g.get(e);return n||this.g.set(e,n=[]),n.push(t),this.h+=1,this},bt.forEach=function(n,r){jv(this),this.g.forEach(function(e,t){e.forEach(function(e){n.call(r,e,t,this)},this)},this)},bt.ta=function(){jv(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},bt.Z=function(t){jv(this);let n=[];if("string"==typeof t)$v(this,t)&&(n=n.concat(this.g.get(Wv(this,t))));else{t=Array.from(this.g.values());for(let e=0;e<t.length;e++)n=n.concat(t[e])}return n},bt.set=function(e,t){return jv(this),this.i=null,$v(this,e=Wv(this,e))&&(this.h-=this.g.get(e).length),this.g.set(e,[t]),this.h+=1,this},bt.get=function(e,t){return e&&0<(e=this.Z(e)).length?String(e[0]):t},bt.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 Gv=class{constructor(e,t){this.g=e,this.map=t}};function Hv(e){this.l=e||10,e=kg.PerformanceNavigationTiming?0<(e=kg.performance.getEntriesByType("navigation")).length&&("hq"==e[0].nextHopProtocol||"h2"==e[0].nextHopProtocol):!!(kg.g&&kg.g.Ka&&kg.g.Ka()&&kg.g.Ka().ec),this.j=e?this.l:1,this.g=null,1<this.j&&(this.g=new Set),this.h=null,this.i=[]}function Qv(e){return e.h||e.g&&e.g.size>=e.j}function Yv(e){return e.h?1:e.g?e.g.size:0}function Jv(e,t){return e.h?e.h==t:e.g&&e.g.has(t)}function Xv(e,t){e.g?e.g.add(t):e.h=t}function Zv(e,t){e.h&&e.h==t?e.h=null:e.g&&e.g.has(t)&&e.g.delete(t)}function ey(t){if(null!=t.h)return t.i.concat(t.h.F);if(null==t.g||0===t.g.size)return Ug(t.i);{let e=t.i;for(const n of t.g.values())e=e.concat(n.F);return e}}Hv.prototype.cancel=function(){if(this.i=ey(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 ty,ny=class{stringify(e){return kg.JSON.stringify(e,void 0)}parse(e){return kg.JSON.parse(e,void 0)}};function ry(){this.g=new ny}function iy(e,t,n,r,i){try{t.onload=null,t.onerror=null,t.onabort=null,t.ontimeout=null,i(r)}catch(e){}}function sy(e){this.l=e.fc||null,this.j=e.ob||!1}function ay(e,t){km.call(this),this.F=e,this.u=t,this.m=void 0,this.readyState=oy,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}Mg(sy,nv),sy.prototype.g=function(){return new ay(this.l,this.j)},sy.prototype.i=(ty={},function(){return ty}),Mg(ay,km);var oy=0;function cy(e){e.j.read().then(e.Xa.bind(e)).catch(e.ka.bind(e))}function ly(e){e.readyState=4,e.l=null,e.j=null,e.A=null,uy(e)}function uy(e){e.onreadystatechange&&e.onreadystatechange.call(e)}(bt=ay.prototype).open=function(e,t){if(this.readyState!=oy)throw this.abort(),Error("Error reopening a connection");this.C=e,this.B=t,this.readyState=1,uy(this)},bt.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||kg).fetch(new Request(this.B,t)).then(this.$a.bind(this),this.ka.bind(this))},bt.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,ly(this)),this.readyState=oy},bt.$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,uy(this)),this.g&&(this.readyState=3,uy(this),this.g)))if("arraybuffer"===this.responseType)e.arrayBuffer().then(this.Ya.bind(this),this.ka.bind(this));else if(void 0!==kg.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;cy(this)}else e.text().then(this.Za.bind(this),this.ka.bind(this))},bt.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?ly:uy)(this),3==this.readyState&&cy(this))},bt.Za=function(e){this.g&&(this.response=this.responseText=e,ly(this))},bt.Ya=function(e){this.g&&(this.response=e,ly(this))},bt.ka=function(){this.g&&ly(this)},bt.setRequestHeader=function(e,t){this.v.append(e,t)},bt.getResponseHeader=function(e){return this.h&&this.h.get(e.toLowerCase())||""},bt.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(ay.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(e){this.m=e?"include":"same-origin"}});var hy=kg.JSON.parse;function dy(e){km.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=py,this.L=this.M=!1}Mg(dy,km);var py="",fy=/^https?$/i,gy=["POST","PUT"];function my(e,t){e.h=!1,e.g&&(e.l=!0,e.g.abort(),e.l=!1),e.j=t,e.m=5,vy(e),_y(e)}function vy(e){e.F||(e.F=!0,Sm(e,"complete"),Sm(e,"error"))}function yy(e){if(e.h&&void 0!==Cg&&(!e.C[1]||4!=by(e)||2!=e.da()))if(e.v&&4==by(e))Vm(e.La,0,e);else if(Sm(e,"readystatechange"),4==by(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(Cv)[1]||null)&&kg.self&&kg.self.location&&(r=kg.self.location.protocol.slice(0,-1)),n=!fy.test(r?r.toLowerCase():"")),t=n),t)Sm(e,"complete"),Sm(e,"success");else{e.m=6;try{var a=2<by(e)?e.g.statusText:""}catch(e){a=""}e.j=a+" ["+e.da()+"]",vy(e)}}finally{_y(e)}}}function _y(e,t){if(e.g){wy(e);const n=e.g,r=e.C[0]?()=>{}:null;e.g=null,e.C=null,t||Sm(e,"ready");try{n.onreadystatechange=r}catch(e){}}}function wy(e){e.g&&e.L&&(e.g.ontimeout=null),e.A&&(kg.clearTimeout(e.A),e.A=null)}function by(e){return e.g?e.g.readyState:0}function Iy(e){try{if(!e.g)return null;if("response"in e.g)return e.g.response;switch(e.K){case py:case"text":return e.g.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in e.g)return e.g.mozResponseArrayBuffer}return null}catch(e){return null}}function Ty(e){let n="";return lm(e,function(e,t){n+=t,n+=":",n+=e,n+="\r\n"}),n}function Ey(e,t,n){e:{for(r in n){var r=!1;break e}r=!0}r||(n=Ty(n),"string"==typeof e?null!=n&&encodeURIComponent(String(n)):Dv(e,t,n))}function Cy(e,t,n){return n&&n.internalChannelParams&&n.internalChannelParams[e]||t}function ky(e){this.Ga=0,this.j=[],this.l=new Km,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=Cy("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=Cy("baseRetryDelayMs",5e3,e),this.hb=Cy("retryDelaySeedMs",1e4,e),this.eb=Cy("forwardChannelMaxRetries",2,e),this.xa=Cy("forwardChannelRequestTimeoutMs",2e4,e),this.va=e&&e.xmlHttpFactory||void 0,this.Ha=e&&e.dc||!1,this.L=void 0,this.J=e&&e.supportsCrossDomainXhr||!1,this.K="",this.i=new Hv(e&&e.concurrentRequestLimit),this.Ja=new ry,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 Sy(e){if(Ny(e),3==e.H){var t=e.W++,n=Sv(e.I);if(Dv(n,"SID",e.K),Dv(n,"RID",t),Dv(n,"TYPE","terminate"),Py(e,n),(t=new cv(e,e.l,t)).L=2,t.v=Pv(Sv(n)),n=!1,kg.navigator&&kg.navigator.sendBeacon)try{n=kg.navigator.sendBeacon(t.v.toString(),"")}catch(e){}!n&&kg.Image&&((new Image).src=t.v,n=!0),n||(t.g=$y(t.l,null),t.g.ha(t.v)),t.G=Date.now(),yv(t)}jy(e)}function Ay(e){e.g&&(Ly(e),e.g.cancel(),e.g=null)}function Ny(e){Ay(e),e.u&&(kg.clearTimeout(e.u),e.u=null),Uy(e),e.i.cancel(),e.m&&("number"==typeof e.m&&kg.clearTimeout(e.m),e.m=null)}function Ry(e){var t;Qv(e.i)||e.m||(e.m=!0,t=e.Na,Pm||Mm(),xm||(Pm(),xm=!0),Om.add(t,e),e.C=0)}function Dy(e,t){var n=t?t.m:e.W++,r=Sv(e.I);Dv(r,"SID",e.K),Dv(r,"RID",n),Dv(r,"AID",e.V),Py(e,r),e.o&&e.s&&Ey(r,e.o,e.s),n=new cv(e,e.l,n,e.C+1),null===e.o&&(n.I=e.s),t&&(e.j=t.F.concat(e.j)),t=xy(e,n,1e3),n.setTimeout(Math.round(.5*e.xa)+Math.round(.5*e.xa*Math.random())),Xv(e.i,n),fv(n,r,t)}function Py(e,n){e.na&&lm(e.na,function(e,t){Dv(n,t,e)}),e.h&&Ev({},function(e,t){Dv(n,t,e)})}function xy(e,t,r){r=Math.min(e.j.length,r);var i=e.h?xg(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{Ev(e,function(e,t){let n=e;Ag(e)&&(n=Nm(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 Oy(e){var t;e.g||e.u||(e.ba=1,t=e.Ma,Pm||Mm(),xm||(Pm(),xm=!0),Om.add(t,e),e.A=0)}function My(e){return!(e.g||e.u||3<=e.A)&&(e.ba++,e.u=tv(xg(e.Ma,e),qy(e,e.A)),e.A++,1)}function Ly(e){null!=e.B&&(kg.clearTimeout(e.B),e.B=null)}function Fy(e){e.g=new cv(e,e.l,"rpc",e.ba),null===e.o&&(e.g.I=e.s),e.g.O=0;var t=Sv(e.wa);Dv(t,"RID","rpc"),Dv(t,"SID",e.K),Dv(t,"AID",e.V),Dv(t,"CI",e.G?"0":"1"),!e.G&&e.qa&&Dv(t,"TO",e.qa),Dv(t,"TYPE","xmlhttp"),Py(e,t),e.o&&e.s&&Ey(t,e.o,e.s),e.L&&e.g.setTimeout(e.L);var n=e.g;e=e.pa,n.L=1,n.v=Pv(Sv(t)),n.s=null,n.S=!0,gv(n,e)}function Uy(e){null!=e.v&&(kg.clearTimeout(e.v),e.v=null)}function Vy(e,t){var n,r,i,s=null;if(e.g==t){Uy(e),Ly(e),e.g=null;var a=2}else{if(!Jv(e.i,t))return;s=t.F,Zv(e.i,t),a=1}if(0!=e.H)if(t.i)1==a?(s=t.s?t.s.length:0,t=Date.now()-t.G,n=e.C,Sm(a=Qm(),new ev(a,s)),Ry(e)):Oy(e);else if(3==(n=t.o)||0==n&&0<t.ca||(1!=a||(i=t,Yv((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=tv(xg(r.Na,r,i),qy(r,r.C)),r.C++,0))))&&(2!=a||!My(e)))switch(s&&0<s.length&&(t=e.i,t.i=t.i.concat(s)),n){case 1:By(e,5);break;case 4:By(e,10);break;case 3:By(e,6);break;default:By(e,2)}}function qy(e,t){let n=e.ab+Math.floor(Math.random()*e.hb);return e.isActive()||(n*=2),n*t}function By(e,t){var n,r;e.l.info("Error code "+t),2==t?(n=null,e.h&&(n=null),r=xg(e.pb,e),n||(n=new kv("//www.google.com/images/cleardot.gif"),kg.location&&"http"==kg.location.protocol||Av(n,"https"),Pv(n)),function(e,t){var n=new Km;if(kg.Image){const r=new Image;r.onload=Og(iy,n,r,"TestLoadImage: loaded",!0,t),r.onerror=Og(iy,n,r,"TestLoadImage: error",!1,t),r.onabort=Og(iy,n,r,"TestLoadImage: abort",!1,t),r.ontimeout=Og(iy,n,r,"TestLoadImage: timeout",!1,t),kg.setTimeout(function(){r.ontimeout&&r.ontimeout()},1e4),r.src=e}else t(!1)}(n.toString(),r)):Zm(2),e.H=0,e.h&&e.h.za(t),jy(e),Ny(e)}function jy(e){var t;e.H=0,e.ma=[],e.h&&(0==(t=ey(e.i)).length&&0==e.j.length||(Vg(e.ma,t),Vg(e.ma,e.j),e.i.i.length=0,Ug(e.j),e.j.length=0),e.h.ya())}function zy(e,t,n){var r,i,s=n instanceof kv?Sv(n):new kv(n);return""!=s.g?(t&&(s.g=t+"."+s.g),Nv(s,s.m)):(s=(r=kg.location).protocol,t=t?t+"."+r.hostname:r.hostname,r=+r.port,i=new kv(null),s&&Av(i,s),t&&(i.g=t),r&&Nv(i,r),n&&(i.l=n),s=i),n=e.F,t=e.Da,n&&t&&Dv(s,n,t),Dv(s,"VER",e.ra),Py(e,s),s}function $y(e,t,n){if(t&&!e.J)throw Error("Can't create secondary domain capable XhrIo object.");return(t=n&&e.Ha&&!e.va?new dy(new sy({ob:!0})):new dy(e.va)).Oa(e.J),t}function Ky(){}function Wy(){if(Hg&&!(10<=Number(nm)))throw Error("Environmental error: no available transport.")}function Gy(e,t){km.call(this),this.g=new ky(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)&&!jg(e)&&(this.g.o=e),this.A=t&&t.supportsCrossDomainXhr||!1,this.v=t&&t.sendRawJson||!1,(t=t&&t.httpSessionIdParam)&&!jg(t)&&(this.g.F=t,null!==(e=this.h)&&t in e&&(t in(e=this.h)&&delete e[t])),this.j=new Yy(this)}function Hy(e){sv.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 Qy(){av.call(this),this.status=1}function Yy(e){this.g=e}function Jy(){this.blockSize=-1,this.blockSize=64,this.g=Array(4),this.m=Array(this.blockSize),this.i=this.h=0,this.reset()}function Xy(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 Zy(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}(bt=dy.prototype).Oa=function(e){this.M=e},bt.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||uv).g(),this.C=this.u?rv(this.u):rv(uv),this.g.onreadystatechange=xg(this.La,this);try{this.G=!0,this.g.open(t,String(e),!0),this.G=!1}catch(e){return void my(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=kg.FormData&&e instanceof kg.FormData,0<=Fg(gy,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{wy(this),0<this.B&&((this.L=(o=this.g,Hg&&"number"==typeof o.timeout&&void 0!==o.ontimeout))?(this.g.timeout=this.B,this.g.ontimeout=xg(this.ua,this)):this.A=Vm(this.ua,this.B,this)),this.v=!0,this.g.send(e),this.v=!1}catch(e){my(this,e)}var o},bt.ua=function(){void 0!==Cg&&this.g&&(this.j="Timed out after "+this.B+"ms, aborting",this.m=8,Sm(this,"timeout"),this.abort(8))},bt.abort=function(e){this.g&&this.h&&(this.h=!1,this.l=!0,this.g.abort(),this.l=!1,this.m=e||7,Sm(this,"complete"),Sm(this,"abort"),_y(this))},bt.N=function(){this.g&&(this.h&&(this.h=!1,this.l=!0,this.g.abort(),this.l=!1),_y(this,!0)),dy.$.N.call(this)},bt.La=function(){this.s||(this.G||this.v||this.l?yy(this):this.kb())},bt.kb=function(){yy(this)},bt.isActive=function(){return!!this.g},bt.da=function(){try{return 2<by(this)?this.g.status:-1}catch(e){return-1}},bt.ja=function(){try{return this.g?this.g.responseText:""}catch(e){return""}},bt.Wa=function(e){if(this.g){var t=this.g.responseText;return e&&0==t.indexOf(e)&&(t=t.substring(e.length)),hy(t)}},bt.Ia=function(){return this.m},bt.Sa=function(){return"string"==typeof this.j?this.j:String(this.j)},(bt=ky.prototype).ra=8,bt.H=1,bt.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 cv(this,this.l,t);let e=this.s;if(this.U&&(e?(e=um(e),dm(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=xy(this,s,n),Dv(r=Sv(this.I),"RID",t),Dv(r,"CVER",22),this.F&&Dv(r,"X-HTTP-Session-Id",this.F),Py(this,r),e&&(this.O?n="headers="+encodeURIComponent(String(Ty(e)))+"&"+n:this.o&&Ey(r,this.o,e)),Xv(this.i,s),this.bb&&Dv(r,"TYPE","init"),this.P?(Dv(r,"$req",n),Dv(r,"SID","null"),s.aa=!0,fv(s,r,null)):fv(s,r,n),this.H=2}}else 3==this.H&&(t?Dy(this,t):0==this.j.length||Qv(this.i)||Dy(this))},bt.Ma=function(){var e;this.u=null,Fy(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=tv(xg(this.jb,this),e))},bt.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,Zm(10),Ay(this),Fy(this))},bt.ib=function(){null!=this.v&&(this.v=null,Ay(this),My(this),Zm(19))},bt.pb=function(e){e?(this.l.info("Successfully pinged google.com"),Zm(2)):(this.l.info("Failed to ping google.com"),Zm(1))},bt.isActive=function(){return!!this.h&&this.h.isActive(this)},(bt=Ky.prototype).Ba=function(){},bt.Aa=function(){},bt.za=function(){},bt.ya=function(){},bt.isActive=function(){return!0},bt.Va=function(){},Wy.prototype.g=function(e,t){return new Gy(e,t)},Mg(Gy,km),Gy.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;Zm(0),e.Y=t,e.na=n||{},e.G=e.aa,e.I=zy(e,null,e.Y),Ry(e)},Gy.prototype.close=function(){Sy(this.g)},Gy.prototype.u=function(e){var t,n=this.g;"string"==typeof e?((t={}).__data__=e,e=t):this.v&&((t={}).__data__=Nm(e),e=t),n.j.push(new Gv(n.fb++,e)),3==n.H&&Ry(n)},Gy.prototype.N=function(){this.g.h=null,delete this.j,Sy(this.g),delete this.g,Gy.$.N.call(this)},Mg(Hy,sv),Mg(Qy,av),Mg(Yy,Ky),Yy.prototype.Ba=function(){Sm(this.g,"a")},Yy.prototype.Aa=function(e){Sm(this.g,new Hy(e))},Yy.prototype.za=function(e){Sm(this.g,new Qy)},Yy.prototype.ya=function(){Sm(this.g,"b")},Mg(Jy,function(){this.blockSize=-1}),Jy.prototype.reset=function(){this.g[0]=1732584193,this.g[1]=4023233417,this.g[2]=2562383102,this.g[3]=271733878,this.i=this.h=0},Jy.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;)Xy(this,e,s),s+=this.blockSize;if("string"==typeof e){for(;s<t;)if(r[i++]=e.charCodeAt(s++),i==this.blockSize){Xy(this,r),i=0;break}}else for(;s<t;)if(r[i++]=e[s++],i==this.blockSize){Xy(this,r),i=0;break}}this.h=i,this.i+=t},Jy.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 e_={};function t_(e){return-128<=e&&e<128?(t=e,n=function(e){return new Zy([0|e],e<0?-1:0)},r=e_,Object.prototype.hasOwnProperty.call(r,t)?r[t]:r[t]=n(t)):new Zy([0|e],e<0?-1:0);var t,n,r}function n_(e){if(isNaN(e)||!isFinite(e))return i_;if(e<0)return l_(n_(-e));for(var t=[],n=1,r=0;n<=e;r++)t[r]=e/n|0,n*=r_;return new Zy(t,0)}var r_=4294967296,i_=t_(0),s_=t_(1),a_=t_(16777216);function o_(e){if(0==e.h){for(var t=0;t<e.g.length;t++)if(0!=e.g[t])return;return 1}}function c_(e){return-1==e.h}function l_(e){for(var t=e.g.length,n=[],r=0;r<t;r++)n[r]=~e.g[r];return new Zy(n,~e.h).add(s_)}function u_(e,t){return e.add(l_(t))}function h_(e,t){for(;(65535&e[t])!=e[t];)e[t+1]+=e[t]>>>16,e[t]&=65535,t++}function d_(e,t){this.g=e,this.h=t}function p_(e,t){if(o_(t))throw Error("division by zero");if(o_(e))return new d_(i_,i_);if(c_(e))return t=p_(l_(e),t),new d_(l_(t.g),l_(t.h));if(c_(t))return t=p_(e,l_(t)),new d_(l_(t.g),t.h);if(30<e.g.length){if(c_(e)||c_(t))throw Error("slowDivide_ only works with positive integers.");for(var n=s_,r=t;r.X(e)<=0;)n=f_(n),r=f_(r);for(var i=g_(n,1),s=g_(r,1),r=g_(r,2),n=g_(n,2);!o_(r);){var a=s.add(r);a.X(e)<=0&&(i=i.add(n),s=a),r=g_(r,1),n=g_(n,1)}return t=u_(e,i.R(t)),new d_(i,t)}for(i=i_;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=n_(n)).R(t);c_(a)||0<a.X(e);)a=(s=n_(n-=r)).R(t);o_(s)&&(s=s_),i=i.add(s),e=u_(e,a)}return new d_(i,e)}function f_(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 Zy(n,e.h)}function g_(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 Zy(i,e.h)}(bt=Zy.prototype).ea=function(){if(c_(this))return-l_(this).ea();for(var e=0,t=1,n=0;n<this.g.length;n++){var r=this.D(n);e+=(0<=r?r:r_+r)*t,t*=r_}return e},bt.toString=function(e){if((e=e||10)<2||36<e)throw Error("radix out of range: "+e);if(o_(this))return"0";if(c_(this))return"-"+l_(this).toString(e);for(var t=n_(Math.pow(e,6)),n=this,r="";;){var i=p_(n,t).g,s=((0<(n=u_(n,i.R(t))).g.length?n.g[0]:n.h)>>>0).toString(e);if(o_(n=i))return s+r;for(;s.length<6;)s="0"+s;r=s+r}},bt.D=function(e){return e<0?0:e<this.g.length?this.g[e]:this.h},bt.X=function(e){return c_(e=u_(this,e))?-1:o_(e)?0:1},bt.abs=function(){return c_(this)?l_(this):this},bt.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 Zy(n,-2147483648&n[n.length-1]?-1:0)},bt.R=function(e){if(o_(this)||o_(e))return i_;if(c_(this))return c_(e)?l_(this).R(l_(e)):l_(l_(this).R(e));if(c_(e))return l_(this.R(l_(e)));if(this.X(a_)<0&&e.X(a_)<0)return n_(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,h_(n,2*r+2*i),n[2*r+2*i+1]+=s*c,h_(n,2*r+2*i+1),n[2*r+2*i+1]+=a*o,h_(n,2*r+2*i+1),n[2*r+2*i+2]+=s*o,h_(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 Zy(n,0)},bt.gb=function(e){return p_(this,e).h},bt.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 Zy(n,this.h&e.h)},bt.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 Zy(n,this.h|e.h)},bt.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 Zy(n,this.h^e.h)},Wy.prototype.createWebChannel=Wy.prototype.g,Gy.prototype.send=Gy.prototype.u,Gy.prototype.open=Gy.prototype.m,It.NO_ERROR=0,It.TIMEOUT=8,It.HTTP_ERROR=6,il.COMPLETE="complete",(iv.EventType=yt).OPEN="a",yt.CLOSE="b",yt.ERROR="c",yt.MESSAGE="d",km.prototype.listen=km.prototype.O,dy.prototype.listenOnce=dy.prototype.P,dy.prototype.getLastError=dy.prototype.Sa,dy.prototype.getLastErrorCode=dy.prototype.Ia,dy.prototype.getStatus=dy.prototype.da,dy.prototype.getResponseJson=dy.prototype.Wa,dy.prototype.getResponseText=dy.prototype.ja,dy.prototype.send=dy.prototype.ha,dy.prototype.setWithCredentials=dy.prototype.Oa,Jy.prototype.digest=Jy.prototype.l,Jy.prototype.update=Jy.prototype.j,Zy.prototype.multiply=Zy.prototype.R,Zy.prototype.modulo=Zy.prototype.gb,Zy.prototype.compare=Zy.prototype.X,Zy.prototype.toNumber=Zy.prototype.ea,Zy.prototype.getBits=Zy.prototype.D,Zy.fromNumber=n_,Zy.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 l_(e(t.substring(1),n));if(0<=t.indexOf("-"))throw Error('number format error: interior "-" character');for(var r=n_(Math.pow(n,8)),i=i_,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=n_(Math.pow(n,a)),i.R(a).add(n_(o))):(i=i.R(r)).add(n_(o));return i};var m_,v_=Qm,y_=It,__=il,w_=Gm,b_=10,I_=11,T_=sy,E_=iv,C_=dy,k_=Jy,S_=Zy;const A_="@firebase/firestore";class N_{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}}N_.UNAUTHENTICATED=new N_(null),N_.GOOGLE_CREDENTIALS=new N_("google-credentials-uid"),N_.FIRST_PARTY=new N_("first-party-uid"),N_.MOCK_USER=new N_("mock-user");let R_="9.23.0";const D_=new me("@firebase/firestore");function P_(){return D_.logLevel}function x_(e,...t){var n;D_.logLevel<=m.DEBUG&&(n=t.map(L_),D_.debug(`Firestore (${R_}): ${e}`,...n))}function O_(e,...t){var n;D_.logLevel<=m.ERROR&&(n=t.map(L_),D_.error(`Firestore (${R_}): ${e}`,...n))}function M_(e,...t){var n;D_.logLevel<=m.WARN&&(n=t.map(L_),D_.warn(`Firestore (${R_}): ${e}`,...n))}function L_(t){if("string"==typeof t)return t;try{return JSON.stringify(t)}catch(e){return t}}function F_(e="Unexpected state"){var t=`FIRESTORE (${R_}) INTERNAL ASSERTION FAILED: `+e;throw O_(t),new Error(t)}function U_(e){e||F_()}const V_={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 q_ extends R{constructor(e,t){super(e,t),this.code=e,this.message=t,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class B_{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}class j_{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class z_{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable(()=>t(N_.UNAUTHENTICATED))}shutdown(){}}class $_{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 K_{constructor(e){this.t=e,this.currentUser=N_.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 B_;this.o=()=>{this.i++,this.currentUser=this.u(),s.resolve(),s=new B_,t.enqueueRetryable(()=>i(this.currentUser))};const a=()=>{const e=s;t.enqueueRetryable(async()=>{await e.promise,await i(this.currentUser)})},o=e=>{x_("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):(x_("FirebaseAuthCredentialsProvider","Auth not yet detected"),s.resolve(),s=new B_))},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?(x_("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):e?(U_("string"==typeof e.accessToken),new j_(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 U_(null===e||"string"==typeof e),new N_(e)}}class W_{constructor(e,t,n){this.h=e,this.l=t,this.m=n,this.type="FirstParty",this.user=N_.FIRST_PARTY,this.g=new Map}p(){return this.m?this.m():null}get headers(){this.g.set("X-Goog-AuthUser",this.h);var e=this.p();return e&&this.g.set("Authorization",e),this.l&&this.g.set("X-Goog-Iam-Authorization-Token",this.l),this.g}}class G_{constructor(e,t,n){this.h=e,this.l=t,this.m=n}getToken(){return Promise.resolve(new W_(this.h,this.l,this.m))}start(e,t){e.enqueueRetryable(()=>t(N_.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class H_{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 Q_{constructor(e){this.I=e,this.forceRefresh=!1,this.appCheck=null,this.T=null}start(t,n){const r=e=>{null!=e.error&&x_("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);var t=e.token!==this.T;return this.T=e.token,x_("FirebaseAppCheckTokenProvider",`Received ${t?"new":"existing"} token.`),t?n(e.token):Promise.resolve()};this.o=e=>{t.enqueueRetryable(()=>r(e))};const i=e=>{x_("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.appCheck.addTokenListener(this.o)};this.I.onInit(e=>i(e)),setTimeout(()=>{var e;this.appCheck||((e=this.I.getImmediate({optional:!0}))?i(e):x_("FirebaseAppCheckTokenProvider","AppCheck not yet detected"))},0)}getToken(){var e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(e=>e?(U_("string"==typeof e.token),this.T=e.token,new H_(e.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}class Y_{static A(){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 J_(e,t){return e<t?-1:t<e?1:0}function X_(e,n,r){return e.length===n.length&&e.every((e,t)=>r(e,n[t]))}function Z_(e){return e+"\0"}class ew{constructor(e,t){if(this.seconds=e,(this.nanoseconds=t)<0)throw new q_(V_.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(1e9<=t)throw new q_(V_.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800)throw new q_(V_.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(253402300800<=e)throw new q_(V_.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return ew.fromMillis(Date.now())}static fromDate(e){return ew.fromMillis(e.getTime())}static fromMillis(e){var t=Math.floor(e/1e3),n=Math.floor(1e6*(e-1e3*t));return new ew(t,n)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?J_(this.nanoseconds,e.nanoseconds):J_(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 tw{constructor(e){this.timestamp=e}static fromTimestamp(e){return new tw(e)}static min(){return new tw(new ew(0,0))}static max(){return new tw(new ew(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 nw{constructor(e,t,n){void 0===t?t=0:t>e.length&&F_(),void 0===n?n=e.length-t:n>e.length-t&&F_(),this.segments=e,this.offset=t,this.len=n}get length(){return this.len}isEqual(e){return 0===nw.comparator(this,e)}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof nw?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 rw extends nw{construct(e,t,n){return new rw(e,t,n)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}static fromString(...e){const t=[];for(const n of e){if(0<=n.indexOf("//"))throw new q_(V_.INVALID_ARGUMENT,`Invalid segment (${n}). Paths must not contain // in them.`);t.push(...n.split("/").filter(e=>0<e.length))}return new rw(t)}static emptyPath(){return new rw([])}}const iw=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class sw extends nw{construct(e,t,n){return new sw(e,t,n)}static isValidIdentifier(e){return iw.test(e)}canonicalString(){return this.toArray().map(e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),e=!sw.isValidIdentifier(e)?"`"+e+"`":e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new sw(["__name__"])}static fromServerFormat(e){const t=[];let n="",r=0;var i=()=>{if(0===n.length)throw new q_(V_.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 q_(V_.INVALID_ARGUMENT,"Path has trailing escape character: "+e);const t=e[r+1];if("\\"!==t&&"."!==t&&"`"!==t)throw new q_(V_.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 q_(V_.INVALID_ARGUMENT,"Unterminated ` in path: "+e);return new sw(t)}static emptyPath(){return new sw([])}}class aw{constructor(e){this.path=e}static fromPath(e){return new aw(rw.fromString(e))}static fromName(e){return new aw(rw.fromString(e).popFirst(5))}static empty(){return new aw(rw.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===rw.comparator(this.path,e.path)}toString(){return this.path.toString()}static comparator(e,t){return rw.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new aw(new rw(e.slice()))}}class ow{constructor(e,t,n,r){this.indexId=e,this.collectionGroup=t,this.fields=n,this.indexState=r}}function cw(e){return e.fields.find(e=>2===e.kind)}function lw(e){return e.fields.filter(e=>2!==e.kind)}ow.UNKNOWN_ID=-1;class uw{constructor(e,t){this.fieldPath=e,this.kind=t}}class hw{constructor(e,t){this.sequenceNumber=e,this.offset=t}static empty(){return new hw(0,fw.min())}}function dw(e,t){var n=e.toTimestamp().seconds,r=e.toTimestamp().nanoseconds+1,r=tw.fromTimestamp(1e9===r?new ew(n+1,0):new ew(n,r));return new fw(r,aw.empty(),t)}function pw(e){return new fw(e.readTime,e.key,-1)}class fw{constructor(e,t,n){this.readTime=e,this.documentKey=t,this.largestBatchId=n}static min(){return new fw(tw.min(),aw.empty(),-1)}static max(){return new fw(tw.max(),aw.empty(),-1)}}function gw(e,t){let n=e.readTime.compareTo(t.readTime);return 0!==n?n:(n=aw.comparator(e.documentKey,t.documentKey),0!==n?n:J_(e.largestBatchId,t.largestBatchId))}const mw="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class vw{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}async function yw(e){if(e.code!==V_.FAILED_PRECONDITION||e.message!==mw)throw e;x_("LocalStore","Unexpectedly lost primary lease")}class _w{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&&F_(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(i,this.error):this.wrapSuccess(r,this.result):new _w((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 _w?t:_w.resolve(t)}catch(e){return _w.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction(()=>e(t)):_w.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction(()=>e(t)):_w.reject(t)}static resolve(n){return new _w((e,t)=>{e(n)})}static reject(n){return new _w((e,t)=>{t(n)})}static waitFor(e){return new _w((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=_w.resolve(!1);for(const n of e)t=t.next(e=>e?_w.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 _w((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 _w((e,t)=>{const n=()=>{!0===r()?i().next(()=>{n()},t):e()};n()})}}class ww{constructor(n,e){this.action=n,this.transaction=e,this.aborted=!1,this.v=new B_,this.transaction.oncomplete=()=>{this.v.resolve()},this.transaction.onabort=()=>{e.error?this.v.reject(new Tw(n,e.error)):this.v.resolve()},this.transaction.onerror=e=>{var t=Aw(e.target.error);this.v.reject(new Tw(n,t))}}static open(e,t,n,r){try{return new ww(t,e.transaction(r,n))}catch(e){throw new Tw(t,e)}}get R(){return this.v.promise}abort(e){e&&this.v.reject(e),this.aborted||(x_("SimpleDb","Aborting transaction:",e?e.message:"Client-initiated abort"),this.aborted=!0,this.transaction.abort())}P(){const e=this.transaction;this.aborted||"function"!=typeof e.commit||e.commit()}store(e){var t=this.transaction.objectStore(e);return new Cw(t)}}class bw{constructor(e,t,n){this.name=e,this.version=t,this.V=n,12.2===bw.S(w())&&O_("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 x_("SimpleDb","Removing database:",e),kw(window.indexedDB.deleteDatabase(e)).toPromise()}static D(){if(!S())return!1;if(bw.C())return!0;const e=w(),t=bw.S(e),n=0<t&&t<10,r=bw.N(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.env)||void 0===e?void 0:e.k)}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 N(e){const t=e.match(/Android ([\d.]+)/i),n=t?t[1].split(".").slice(0,2).join("."):"-1";return Number(n)}async $(s){return this.db||(x_("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 Tw(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 q_(V_.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 q_(V_.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 Tw(s,t))},i.onupgradeneeded=e=>{x_("SimpleDb",'Database "'+this.name+'" requires upgrade from version:',e.oldVersion);var t=e.target.result;this.V.O(t,i.transaction,e.oldVersion,this.version).next(()=>{x_("SimpleDb","Database upgrade to version "+this.version+" complete")})}})),this.F&&(this.db.onversionchange=e=>this.F(e)),this.db}B(t){this.F=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.$(e);const t=ww.open(this.db,e,i?"readonly":"readwrite",n),s=r(t).next(e=>(t.P(),e)).catch(e=>(t.abort(e),_w.reject(e))).toPromise();return s.catch(()=>{}),await t.R,s}catch(e){const t=e,n="FirebaseError"!==t.name&&s<3;if(x_("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 Iw{constructor(e){this.L=e,this.q=!1,this.U=null}get isDone(){return this.q}get K(){return this.U}set cursor(e){this.L=e}done(){this.q=!0}G(e){this.U=e}delete(){return kw(this.L.delete())}}class Tw extends q_{constructor(e,t){super(V_.UNAVAILABLE,`IndexedDB transaction '${e}' failed: ${t}`),this.name="IndexedDbTransactionError"}}function Ew(e){return"IndexedDbTransactionError"===e.name}class Cw{constructor(e){this.store=e}put(e,t){let n;return n=void 0!==t?(x_("SimpleDb","PUT",this.store.name,e,t),this.store.put(t,e)):(x_("SimpleDb","PUT",this.store.name,"<auto-key>",e),this.store.put(e)),kw(n)}add(e){return x_("SimpleDb","ADD",this.store.name,e,e),kw(this.store.add(e))}get(t){return kw(this.store.get(t)).next(e=>(x_("SimpleDb","GET",this.store.name,t,e=void 0===e?null:e),e))}delete(e){return x_("SimpleDb","DELETE",this.store.name,e),kw(this.store.delete(e))}count(){return x_("SimpleDb","COUNT",this.store.name),kw(this.store.count())}j(e,n){var t=this.options(e,n);if(t.index||"function"!=typeof this.store.getAll){const e=this.cursor(t),n=[];return this.W(e,(e,t)=>{n.push(t)}).next(()=>n)}{const e=this.store.getAll(t.range);return new _w((t,n)=>{e.onerror=e=>{n(e.target.error)},e.onsuccess=e=>{t(e.target.result)}})}}H(e,t){const r=this.store.getAll(e,null===t?void 0:t);return new _w((t,n)=>{r.onerror=e=>{n(e.target.error)},r.onsuccess=e=>{t(e.target.result)}})}J(e,t){x_("SimpleDb","DELETE ALL",this.store.name);const n=this.options(e,t);n.Y=!1;var r=this.cursor(n);return this.W(r,(e,t,n)=>n.delete())}X(e,t){let n;t?n=e:(n={},t=e);var r=this.cursor(n);return this.W(r,t)}Z(i){const e=this.cursor({});return new _w((n,r)=>{e.onerror=e=>{var t=Aw(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()}})}W(e,s){const a=[];return new _w((i,t)=>{e.onerror=e=>{t(e.target.error)},e.onsuccess=e=>{const t=e.target.result;if(t){const n=new Iw(t),r=s(t.primaryKey,t.value,n);if(r instanceof _w){const e=r.catch(e=>(n.done(),_w.reject(e)));a.push(e)}n.isDone?i():null===n.K?t.continue():t.continue(n.K)}else i()}}).next(()=>_w.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.Y?n.openKeyCursor(e.range,t):n.openCursor(e.range,t)}return this.store.openCursor(e.range,t)}}function kw(e){return new _w((n,r)=>{e.onsuccess=e=>{var t=e.target.result;n(t)},e.onerror=e=>{var t=Aw(e.target.error);r(t)}})}let Sw=!1;function Aw(e){const t=bw.S(w());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 q_("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 Sw||(Sw=!0,setTimeout(()=>{throw e},0)),e}}return e}class Nw{constructor(e,t){this.asyncQueue=e,this.tt=t,this.task=null}start(){this.et(15e3)}stop(){this.task&&(this.task.cancel(),this.task=null)}get started(){return null!==this.task}et(e){x_("IndexBackiller",`Scheduled in ${e}ms`),this.task=this.asyncQueue.enqueueAfterDelay("index_backfill",e,async()=>{this.task=null;try{x_("IndexBackiller",`Documents written: ${await this.tt.nt()}`)}catch(e){Ew(e)?x_("IndexBackiller","Ignoring IndexedDB error during index backfill: ",e):await yw(e)}await this.et(6e4)})}}class Rw{constructor(e,t){this.localStore=e,this.persistence=t}async nt(t=50){return this.persistence.runTransaction("Backfill Indexes","readwrite-primary",e=>this.st(e,t))}st(e,t){const n=new Set;let r=t,i=!0;return _w.doWhile(()=>!0===i&&0<r,()=>this.localStore.indexManager.getNextCollectionGroupToUpdate(e).next(t=>null===t||n.has(t)?void(i=!1):(x_("IndexBackiller",`Processing collection: ${t}`),this.it(e,t,r).next(e=>{r-=e,n.add(t)})))).next(()=>t-r)}it(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.rt(n,e)).next(e=>(x_("IndexBackiller",`Updating offset: ${e}`),this.localStore.indexManager.updateCollectionGroup(r,i,e))).next(()=>t.size)}))}rt(e,t){let r=e;return t.changes.forEach((e,t)=>{var n=pw(t);0<gw(n,r)&&(r=n)}),new fw(r.readTime,r.documentKey,Math.max(t.batchId,e.largestBatchId))}}class Dw{constructor(e,t){this.previousValue=e,t&&(t.sequenceNumberHandler=e=>this.ot(e),this.ut=e=>t.writeSequenceNumber(e))}ot(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){var e=++this.previousValue;return this.ut&&this.ut(e),e}}function Pw(e){return null==e}function xw(e){return 0===e&&1/e==-1/0}function Ow(e){return"number"==typeof e&&Number.isInteger(e)&&!xw(e)&&e<=Number.MAX_SAFE_INTEGER&&e>=Number.MIN_SAFE_INTEGER}function Mw(e){let t="";for(let n=0;n<e.length;n++)0<t.length&&(t=Lw(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 Lw(t)}function Lw(e){return e+""}function Fw(t){const n=t.length;if(U_(2<=n),2===n)return U_(""===t.charAt(0)&&""===t.charAt(1)),rw.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)&&F_(),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:F_()}a=n+2}return new rw(r)}Dw.ct=-1;const Uw=["userId","batchId"];function Vw(e,t){return[e,Mw(t)]}function qw(e,t,n){return[e,Mw(t),n]}const Bw={},jw=["prefixPath","collectionGroup","readTime","documentId"],zw=["prefixPath","collectionGroup","documentId"],$w=["collectionGroup","readTime","prefixPath","documentId"],Kw=["canonicalId","targetId"],Ww=["targetId","path"],Gw=["path","targetId"],Hw=["collectionId","parent"],Qw=["indexId","uid"],Yw=["uid","sequenceNumber"],Jw=["indexId","uid","arrayValue","directionalValue","orderedDocumentKey","documentKey"],Xw=["indexId","uid","orderedDocumentKey"],Zw=["userId","collectionPath","documentId"],eb=["userId","collectionPath","largestBatchId"],tb=["userId","collectionGroup","largestBatchId"],nb=["mutationQueues","mutations","documentMutations","remoteDocuments","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries"],rb=[...nb,"documentOverlays"],ib=["mutationQueues","mutations","documentMutations","remoteDocumentsV14","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries","documentOverlays"],sb=ib,ab=[...sb,"indexConfiguration","indexState","indexEntries"];class ob extends vw{constructor(e,t){super(),this.ht=e,this.currentSequenceNumber=t}}function cb(e,t){var n=e;return bw.M(n.ht,t)}function lb(e){let t=0;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}function ub(e,t){for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(n,e[n])}function hb(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}class db{constructor(e,t){this.comparator=e,this.root=t||fb.EMPTY}insert(e,t){return new db(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,fb.BLACK,null,null))}remove(e){return new db(this.comparator,this.root.remove(e,this.comparator).copy(null,null,fb.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 pb(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new pb(this.root,e,this.comparator,!1)}getReverseIterator(){return new pb(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new pb(this.root,e,this.comparator,!0)}}class pb{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 fb{constructor(e,t,n,r,i){this.key=e,this.value=t,this.color=null!=n?n:fb.RED,this.left=null!=r?r:fb.EMPTY,this.right=null!=i?i:fb.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,n,r,i){return new fb(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 fb.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 fb.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,fb.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){var e=this.copy(null,null,fb.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 F_();if(this.right.isRed())throw F_();var e=this.left.check();if(e!==this.right.check())throw F_();return e+(this.isRed()?0:1)}}fb.EMPTY=null,fb.RED=!0,fb.BLACK=!1,fb.EMPTY=new class{constructor(){this.size=0}get key(){throw F_()}get value(){throw F_()}get color(){throw F_()}get left(){throw F_()}get right(){throw F_()}copy(e,t,n,r,i){return this}insert(e,t,n){return new fb(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 gb{constructor(e){this.comparator=e,this.data=new db(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 mb(this.data.getIterator())}getIteratorFrom(e){return new mb(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 gb))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 gb(this.comparator);return t.data=e,t}}class mb{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}function vb(e){return e.hasNext()?e.getNext():void 0}class yb{constructor(e){(this.fields=e).sort(sw.comparator)}static empty(){return new yb([])}unionWith(e){let t=new gb(sw.comparator);for(const e of this.fields)t=t.add(e);for(const n of e)t=t.add(n);return new yb(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return X_(this.fields,e.fields,(e,t)=>e.isEqual(t))}}class _b extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}class wb{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 _b("Invalid base64 string: "+e):e}}(e);return new wb(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 wb(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 J_(this.binaryString,e.binaryString)}isEqual(e){return this.binaryString===e.binaryString}}wb.EMPTY_BYTE_STRING=new wb("");const bb=new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);function Ib(t){if(U_(!!t),"string"!=typeof t)return{seconds:Tb(t.seconds),nanos:Tb(t.nanos)};{let e=0;var n=bb.exec(t);U_(!!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 Tb(e){return"number"==typeof e?e:"string"==typeof e?Number(e):0}function Eb(e){return"string"==typeof e?wb.fromBase64String(e):wb.fromUint8Array(e)}function Cb(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 kb(e){var t=e.mapValue.fields.__previous_value__;return Cb(t)?kb(t):t}function Sb(e){var t=Ib(e.mapValue.fields.__local_write_time__.timestampValue);return new ew(t.seconds,t.nanos)}class Ab{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 Nb{constructor(e,t){this.projectId=e,this.database=t||"(default)"}static empty(){return new Nb("","")}get isDefaultDatabase(){return"(default)"===this.database}isEqual(e){return e instanceof Nb&&e.projectId===this.projectId&&e.database===this.database}}const Rb={mapValue:{fields:{__type__:{stringValue:"__max__"}}}},Db={nullValue:"NULL_VALUE"};function Pb(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?Cb(e)?4:Kb(e)?9007199254740991:10:F_()}function xb(r,i){if(r===i)return!0;var e,t,n=Pb(r);if(n!==Pb(i))return!1;switch(n){case 0:case 9007199254740991:return!0;case 1:return r.booleanValue===i.booleanValue;case 4:return Sb(r).isEqual(Sb(i));case 3:return function(e){if("string"==typeof r.timestampValue&&"string"==typeof e.timestampValue&&r.timestampValue.length===e.timestampValue.length)return r.timestampValue===e.timestampValue;var t=Ib(r.timestampValue),n=Ib(e.timestampValue);return t.seconds===n.seconds&&t.nanos===n.nanos}(i);case 5:return r.stringValue===i.stringValue;case 6:return t=i,Eb(r.bytesValue).isEqual(Eb(t.bytesValue));case 7:return r.referenceValue===i.referenceValue;case 8:return e=i,Tb((t=r).geoPointValue.latitude)===Tb(e.geoPointValue.latitude)&&Tb(t.geoPointValue.longitude)===Tb(e.geoPointValue.longitude);case 2:return function(e,t){if("integerValue"in e&&"integerValue"in t)return Tb(e.integerValue)===Tb(t.integerValue);if("doubleValue"in e&&"doubleValue"in t){var n=Tb(e.doubleValue),r=Tb(t.doubleValue);return n===r?xw(n)===xw(r):isNaN(n)&&isNaN(r)}return!1}(r,i);case 9:return X_(r.arrayValue.values||[],i.arrayValue.values||[],xb);case 10:return function(e){const t=e.mapValue.fields||{},n=i.mapValue.fields||{};if(lb(t)!==lb(n))return!1;for(const e in t)if(t.hasOwnProperty(e)&&(void 0===n[e]||!xb(t[e],n[e])))return!1;return!0}(r);default:return F_()}}function Ob(e,t){return void 0!==(e.values||[]).find(e=>xb(e,t))}function Mb(e,t){if(e===t)return 0;var n,r,i,s,a=Pb(e),o=Pb(t);if(a!==o)return J_(a,o);switch(a){case 0:case 9007199254740991:return 0;case 1:return J_(e.booleanValue,t.booleanValue);case 2:return r=t,i=Tb(e.integerValue||e.doubleValue),s=Tb(r.integerValue||r.doubleValue),i<s?-1:s<i?1:i===s?0:isNaN(i)?isNaN(s)?0:-1:1;case 3:return Lb(e.timestampValue,t.timestampValue);case 4:return Lb(Sb(e),Sb(t));case 5:return J_(e.stringValue,t.stringValue);case 6:return function(e,t){const n=Eb(e),r=Eb(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=J_(n[i],r[i]);if(0!==t)return t}return J_(n.length,r.length)}(e.referenceValue,t.referenceValue);case 8:return n=e.geoPointValue,r=t.geoPointValue,0!==(s=J_(Tb(n.latitude),Tb(r.latitude)))?s:J_(Tb(n.longitude),Tb(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=Mb(n[i],r[i]);if(t)return t}return J_(n.length,r.length)}(e.arrayValue,t.arrayValue);case 10:return function(e,t){if(e===Rb.mapValue&&t===Rb.mapValue)return 0;if(e===Rb.mapValue)return 1;if(t===Rb.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=J_(r[o],s[o]);if(0!==t)return t;var a=Mb(n[r[o]],i[s[o]]);if(0!==a)return a}return J_(r.length,s.length)}(e.mapValue,t.mapValue);default:throw F_()}}function Lb(e,t){if("string"==typeof e&&"string"==typeof t&&e.length===t.length)return J_(e,t);var n=Ib(e),r=Ib(t),i=J_(n.seconds,r.seconds);return 0!==i?i:J_(n.nanos,r.nanos)}function Fb(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=Ib(e);return`time(${t.seconds},${t.nanos})`}(e.timestampValue):"stringValue"in e?e.stringValue:"bytesValue"in e?Eb(e.bytesValue).toBase64():"referenceValue"in e?(t=e.referenceValue,aw.fromName(t).toString()):"geoPointValue"in e?`geo(${(t=e.geoPointValue).latitude},${t.longitude})`:"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):F_();var t}(e)}function Ub(e,t){return{referenceValue:`projects/${e.projectId}/databases/${e.database}/documents/${t.path.canonicalString()}`}}function Vb(e){return e&&"integerValue"in e}function qb(e){return!!e&&"arrayValue"in e}function Bb(e){return e&&"nullValue"in e}function jb(e){return e&&"doubleValue"in e&&isNaN(Number(e.doubleValue))}function zb(e){return e&&"mapValue"in e}function $b(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 ub(t.mapValue.fields,(e,t)=>n.mapValue.fields[e]=$b(t)),n}if(t.arrayValue){const r={arrayValue:{values:[]}};for(let e=0;e<(t.arrayValue.values||[]).length;++e)r.arrayValue.values[e]=$b(t.arrayValue.values[e]);return r}return Object.assign({},t)}function Kb(e){return"__max__"===(((e.mapValue||{}).fields||{}).__type__||{}).stringValue}function Wb(e,t){var n=Mb(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?-1:!e.inclusive&&t.inclusive?1:0}function Gb(e,t){var n=Mb(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?1:!e.inclusive&&t.inclusive?-1:0}class Hb{constructor(e){this.value=e}static empty(){return new Hb({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)],!zb(e))return null;return e=(e.mapValue.fields||{})[n.lastSegment()],e||null}}set(e,t){this.getFieldsMap(e.popLast())[e.lastSegment()]=$b(t)}setAll(e){let n=sw.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()]=$b(e):i.push(t.lastSegment())});var t=this.getFieldsMap(n);this.applyChanges(t,r,i)}delete(e){const t=this.field(e.popLast());zb(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return xb(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)];zb(e)&&e.mapValue.fields||(e={mapValue:{fields:{}}},n.mapValue.fields[t.get(r)]=e),n=e}return n.mapValue.fields}applyChanges(n,e,t){ub(e,(e,t)=>n[e]=t);for(const e of t)delete n[e]}clone(){return new Hb($b(this.value))}}class Qb{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 Qb(e,0,tw.min(),tw.min(),tw.min(),Hb.empty(),0)}static newFoundDocument(e,t,n,r){return new Qb(e,1,t,tw.min(),n,r,0)}static newNoDocument(e,t){return new Qb(e,2,t,tw.min(),tw.min(),Hb.empty(),0)}static newUnknownDocument(e,t){return new Qb(e,3,t,tw.min(),tw.min(),Hb.empty(),2)}convertToFoundDocument(e,t){return!this.createTime.isEqual(tw.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=Hb.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=Hb.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=tw.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 Qb&&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 Qb(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 Yb{constructor(e,t){this.position=e,this.inclusive=t}}function Jb(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()?aw.comparator(aw.fromName(a.referenceValue),n.key):Mb(a,n.data.field(s.field)),"desc"===s.dir&&(r*=-1),0!==r)break}return r}function Xb(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(!xb(e.position[n],t.position[n]))return!1;return!0}class Zb{constructor(e,t="asc"){this.field=e,this.dir=t}}class eI{}class tI extends eI{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 lI(e,t,n):"array-contains"===t?new pI(e,n):"in"===t?new fI(e,n):"not-in"===t?new gI(e,n):"array-contains-any"===t?new mI(e,n):new tI(e,t,n)}static createKeyFieldInFilter(e,t,n){return new("in"===t?uI:hI)(e,n)}matches(e){var t=e.data.field(this.field);return"!="===this.op?null!==t&&this.matchesComparison(Mb(t,this.value)):null!==t&&Pb(this.value)===Pb(t)&&this.matchesComparison(Mb(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 F_()}}isInequality(){return 0<=["<","<=",">",">=","!=","not-in"].indexOf(this.op)}getFlattenedFilters(){return[this]}getFilters(){return[this]}getFirstInequalityField(){return this.isInequality()?this.field:null}}class nI extends eI{constructor(e,t){super(),this.filters=e,this.op=t,this.lt=null}static create(e,t){return new nI(e,t)}matches(t){return rI(this)?void 0===this.filters.find(e=>!e.matches(t)):void 0!==this.filters.find(e=>e.matches(t))}getFlattenedFilters(){return null!==this.lt||(this.lt=this.filters.reduce((e,t)=>e.concat(t.getFlattenedFilters()),[])),this.lt}getFilters(){return Object.assign([],this.filters)}getFirstInequalityField(){var e=this.ft(e=>e.isInequality());return null!==e?e.field:null}ft(e){for(const t of this.getFlattenedFilters())if(e(t))return t;return null}}function rI(e){return"and"===e.op}function iI(e){return"or"===e.op}function sI(e){return aI(e)&&rI(e)}function aI(e){for(const t of e.filters)if(t instanceof nI)return!1;return!0}function oI(e,t){var n=e.filters.concat(t);return nI.create(n,e.op)}function cI(e){return e instanceof tI?`${(t=e).field.canonicalString()} ${t.op} ${Fb(t.value)}`:e instanceof nI?(e=e).op.toString()+" {"+e.getFilters().map(cI).join(" ,")+"}":"Filter";var t}class lI extends tI{constructor(e,t,n){super(e,t,n),this.key=aw.fromName(n.referenceValue)}matches(e){var t=aw.comparator(e.key,this.key);return this.matchesComparison(t)}}class uI extends tI{constructor(e,t){super(e,"in",t),this.keys=dI(0,t)}matches(t){return this.keys.some(e=>e.isEqual(t.key))}}class hI extends tI{constructor(e,t){super(e,"not-in",t),this.keys=dI(0,t)}matches(t){return!this.keys.some(e=>e.isEqual(t.key))}}function dI(e,t){var n;return((null===(n=t.arrayValue)||void 0===n?void 0:n.values)||[]).map(e=>aw.fromName(e.referenceValue))}class pI extends tI{constructor(e,t){super(e,"array-contains",t)}matches(e){var t=e.data.field(this.field);return qb(t)&&Ob(t.arrayValue,this.value)}}class fI extends tI{constructor(e,t){super(e,"in",t)}matches(e){var t=e.data.field(this.field);return null!==t&&Ob(this.value.arrayValue,t)}}class gI extends tI{constructor(e,t){super(e,"not-in",t)}matches(e){if(Ob(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;var t=e.data.field(this.field);return null!==t&&!Ob(this.value.arrayValue,t)}}class mI extends tI{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!qb(t)||!t.arrayValue.values)&&t.arrayValue.values.some(e=>Ob(this.value.arrayValue,e))}}class vI{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.dt=null}}function yI(e,t=null,n=[],r=[],i=null,s=null,a=null){return new vI(e,t,n,r,i,s,a)}function _I(e){const t=e;if(null===t.dt){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 tI)return e.field.canonicalString()+e.op.toString()+Fb(e.value);if(sI(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(","),Pw(t.limit)||(e+="|l:",e+=t.limit),t.startAt&&(e+="|lb:",e+=t.startAt.inclusive?"b:":"a:",e+=t.startAt.position.map(e=>Fb(e)).join(",")),t.endAt&&(e+="|ub:",e+=t.endAt.inclusive?"a:":"b:",e+=t.endAt.position.map(e=>Fb(e)).join(",")),t.dt=e}return t.dt}function wI(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 tI?(n=e,(s=t)instanceof tI&&n.op===s.op&&n.field.isEqual(s.field)&&xb(n.value,s.value)):e instanceof nI?(i=t)instanceof nI&&e.op===i.op&&e.filters.length===i.filters.length&&e.filters.reduce((e,t,n)=>e&&r(t,i.filters[n]),!0):void F_();var i,n,s}(e.filters[s],t.filters[s]))return!1;return e.collectionGroup===t.collectionGroup&&!!e.path.isEqual(t.path)&&!!Xb(e.startAt,t.startAt)&&Xb(e.endAt,t.endAt)}function bI(e){return aw.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}function II(e,t){return e.filters.filter(e=>e instanceof tI&&e.field.isEqual(t))}function TI(t,n,r){let i=Db,s=!0;for(const r of II(t,n)){let e=Db,t=!0;switch(r.op){case"<":case"<=":e="nullValue"in(a=r.value)?Db:"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?Ub(Nb.empty(),aw.empty()):"geoPointValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"arrayValue"in a?{arrayValue:{}}:"mapValue"in a?{mapValue:{}}:F_();break;case"==":case"in":case">=":e=r.value;break;case">":e=r.value,t=!1;break;case"!=":case"not-in":e=Db}Wb({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];Wb({value:i,inclusive:s},{value:t,inclusive:r.inclusive})<0&&(i=t,s=r.inclusive);break}return{value:i,inclusive:s}}function EI(t,n,r){let i=Rb,s=!0;for(const r of II(t,n)){let e=Rb,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?Ub(Nb.empty(),aw.empty()):"referenceValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"geoPointValue"in a?{arrayValue:{}}:"arrayValue"in a?{mapValue:{}}:"mapValue"in a?Rb:F_(),t=!1;break;case"==":case"in":case"<=":e=r.value;break;case"<":e=r.value,t=!1;break;case"!=":case"not-in":e=Rb}0<Gb({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<Gb({value:i,inclusive:s},{value:t,inclusive:r.inclusive})&&(i=t,s=r.inclusive);break}return{value:i,inclusive:s}}class CI{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.wt=null,this._t=null,this.startAt,this.endAt}}function kI(e,t,n,r,i,s,a,o){return new CI(e,t,n,r,i,s,a,o)}function SI(e){return new CI(e)}function AI(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 NI(e){return 0<e.explicitOrderBy.length?e.explicitOrderBy[0].field:null}function RI(e){for(const t of e.filters){const e=t.getFirstInequalityField();if(null!==e)return e}return null}function DI(e){return null!==e.collectionGroup}function PI(t){const n=t;if(null===n.wt){n.wt=[];const t=RI(n),e=NI(n);if(null!==t&&null===e)t.isKeyField()||n.wt.push(new Zb(t)),n.wt.push(new Zb(sw.keyField(),"asc"));else{let e=!1;for(const r of n.explicitOrderBy)n.wt.push(r),r.field.isKeyField()&&(e=!0);if(!e){const t=0<n.explicitOrderBy.length?n.explicitOrderBy[n.explicitOrderBy.length-1].dir:"asc";n.wt.push(new Zb(sw.keyField(),t))}}}return n.wt}function xI(e){const t=e;if(!t._t)if("F"===t.limitType)t._t=yI(t.path,t.collectionGroup,PI(t),t.filters,t.limit,t.startAt,t.endAt);else{const e=[];for(const i of PI(t)){const t="desc"===i.dir?"asc":"desc";e.push(new Zb(i.field,t))}var n=t.endAt?new Yb(t.endAt.position,t.endAt.inclusive):null,r=t.startAt?new Yb(t.startAt.position,t.startAt.inclusive):null;t._t=yI(t.path,t.collectionGroup,e,t.filters,t.limit,n,r)}return t._t}function OI(e,t){t.getFirstInequalityField(),RI(e);var n=e.filters.concat([t]);return new CI(e.path,e.collectionGroup,e.explicitOrderBy.slice(),n,e.limit,e.limitType,e.startAt,e.endAt)}function MI(e,t,n){return new CI(e.path,e.collectionGroup,e.explicitOrderBy.slice(),e.filters.slice(),t,n,e.startAt,e.endAt)}function LI(e,t){return wI(xI(e),xI(t))&&e.limitType===t.limitType}function FI(e){return`${_I(xI(e))}|lt:${e.limitType}`}function UI(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=>cI(e)).join(", ")}]`),Pw(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=>Fb(e)).join(",")),e.endAt&&(t+=", endAt: ",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map(e=>Fb(e)).join(",")),`Target(${t})`}(xI(e))}; limitType=${e.limitType})`}function VI(n,e){return e.isFoundDocument()&&(i=n,a=(s=e).key.path,null!==i.collectionGroup?s.key.hasCollectionId(i.collectionGroup)&&i.path.isPrefixOf(a):aw.isDocumentKey(i.path)?i.path.isEqual(a):i.path.isImmediateParentOf(a))&&function(e){for(const t of PI(n))if(!t.field.isKeyField()&&null===e.data.field(t.field))return;return 1}(e)&&function(e){for(const t of n.filters)if(!t.matches(e))return;return 1}(e)&&(i=e,(!(e=n).startAt||(t=e.startAt,r=Jb(t,PI(e),i),t.inclusive?r<=0:r<0))&&(!e.endAt||(t=e.endAt,r=Jb(t,PI(e),i),t.inclusive?0<=r:0<r)));var t,r,i,s,a}function qI(e){return e.collectionGroup||(e.path.length%2==1?e.path.lastSegment():e.path.get(e.path.length-2))}function BI(i){return(e,t)=>{let n=!1;for(const r of PI(i)){const i=function(e,i,t){var n=e.field.isKeyField()?aw.comparator(i.key,t.key):function(e,t){var n=i.data.field(e),r=t.data.field(e);return null!==n&&null!==r?Mb(n,r):F_()}(e.field,t);switch(e.dir){case"asc":return n;case"desc":return-1*n;default:return F_()}}(r,e,t);if(0!==i)return i;n=n||r.field.isKeyField()}return 0}}class jI{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){ub(this.inner,(e,t)=>{for(const[e,n]of t)r(e,n)})}isEmpty(){return hb(this.inner)}size(){return this.innerSize}}const zI=new db(aw.comparator);const $I=new db(aw.comparator);function KI(...e){let t=$I;for(const n of e)t=t.insert(n.key,n);return t}function WI(e){let n=$I;return e.forEach((e,t)=>n=n.insert(e,t.overlayedDocument)),n}function GI(){return new jI(e=>e.toString(),(e,t)=>e.isEqual(t))}const HI=new db(aw.comparator),QI=new gb(aw.comparator);function YI(...e){let t=QI;for(const n of e)t=t.add(n);return t}const JI=new gb(J_);function XI(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:xw(t)?"-0":t}}function ZI(e){return{integerValue:""+e}}function eT(e,t){return Ow(t)?ZI(t):XI(e,t)}class tT{constructor(){this._=void 0}}function nT(e,t){return e instanceof cT?Vb(n=t)||n&&"doubleValue"in n?t:{integerValue:0}:null;var n}class rT extends tT{}class iT extends tT{constructor(e){super(),this.elements=e}}function sT(e,t){const n=uT(t);for(const t of e.elements)n.some(e=>xb(e,t))||n.push(t);return{arrayValue:{values:n}}}class aT extends tT{constructor(e){super(),this.elements=e}}function oT(e,t){let n=uT(t);for(const t of e.elements)n=n.filter(e=>!xb(e,t));return{arrayValue:{values:n}}}class cT extends tT{constructor(e,t){super(),this.serializer=e,this.gt=t}}function lT(e){return Tb(e.integerValue||e.doubleValue)}function uT(e){return qb(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}class hT{constructor(e,t){this.field=e,this.transform=t}}class dT{constructor(e,t){this.version=e,this.transformResults=t}}class pT{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new pT}static exists(e){return new pT(void 0,e)}static updateTime(e){return new pT(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 fT(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class gT{}function mT(e,n){if(!e.hasLocalMutations||n&&0===n.fields.length)return null;if(null===n)return e.isNoDocument()?new CT(e.key,pT.none()):new wT(e.key,e.data,pT.none());{const i=e.data,s=Hb.empty();let t=new gb(sw.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 bT(e.key,s,new yb(t.toArray()),pT.none())}}function vT(e,t,n){e instanceof wT?function(e,t,n){const r=e.value.clone(),i=TT(e.fieldTransforms,t,n.transformResults);r.setAll(i),t.convertToFoundDocument(n.version,r).setHasCommittedMutations()}(e,t,n):e instanceof bT?function(e,t,n){if(!fT(e.precondition,t))return t.convertToUnknownDocument(n.version);const r=TT(e.fieldTransforms,t,n.transformResults),i=t.data;i.setAll(IT(e)),i.setAll(r),t.convertToFoundDocument(n.version,i).setHasCommittedMutations()}(e,t,n):t.convertToNoDocument(n.version).setHasCommittedMutations()}function yT(e,t,n,r){return e instanceof wT?function(e,t,n,r){if(!fT(e.precondition,t))return n;const i=e.value.clone(),s=ET(e.fieldTransforms,r,t);return i.setAll(s),t.convertToFoundDocument(t.version,i).setHasLocalMutations(),null}(e,t,n,r):e instanceof bT?function(e,t,n,r){if(!fT(e.precondition,t))return n;const i=ET(e.fieldTransforms,r,t),s=t.data;return s.setAll(IT(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,fT(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):n)}function _T(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&&X_(n,r,(e,t)=>function(e,t){return e.field.isEqual(t.field)&&(e=e.transform,t=t.transform,e instanceof iT&&t instanceof iT||e instanceof aT&&t instanceof aT?X_(e.elements,t.elements,xb):e instanceof cT&&t instanceof cT?xb(e.gt,t.gt):e instanceof rT&&t instanceof rT)}(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 wT extends gT{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 bT extends gT{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 IT(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 TT(e,t,n){const r=new Map;U_(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 iT?sT(o,c):o instanceof aT?oT(o,c):l))}var o,c,l;return r}function ET(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 rT?function(e){const t={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:a.seconds,nanos:a.nanoseconds}}}};return(e=e&&Cb(e)?kb(e):e)&&(t.fields.__previous_value__=e),{mapValue:t}}(s):i instanceof iT?sT(i,s):i instanceof aT?oT(i,s):(o=nT(i=i,s),c=lT(o)+lT(i.gt),Vb(o)&&Vb(i.gt)?ZI(c):XI(i.serializer,c))))}var i,s,a,o,c;return r}class CT extends gT{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=2,this.fieldTransforms=[]}getFieldMask(){return null}}class kT extends gT{constructor(e,t){super(),this.key=e,this.precondition=t,this.type=3,this.fieldTransforms=[]}getFieldMask(){return null}}class ST{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)&&vT(i,e,n[r])}}applyToLocalView(e,t){for(const n of this.baseMutations)n.key.isEqual(e.key)&&(t=yT(n,e,t,this.localWriteTime));for(const r of this.mutations)r.key.isEqual(e.key)&&(t=yT(r,e,t,this.localWriteTime));return t}applyToLocalDocumentSet(s,a){const o=GI();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=mT(n,r);null!==i&&o.set(e.key,i),n.isValidDocument()||n.convertToNoDocument(tw.min())}),o}keys(){return this.mutations.reduce((e,t)=>e.add(t.key),YI())}isEqual(e){return this.batchId===e.batchId&&X_(this.mutations,e.mutations,(e,t)=>_T(e,t))&&X_(this.baseMutations,e.baseMutations,(e,t)=>_T(e,t))}}class AT{constructor(e,t,n,r){this.batch=e,this.commitVersion=t,this.mutationResults=n,this.docVersions=r}static from(e,t,n){U_(e.mutations.length===n.length);let r=HI;var i=e.mutations;for(let s=0;s<i.length;s++)r=r.insert(i[s].key,n[s].version);return new AT(e,t,n,r)}}class NT{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 RT{constructor(e,t){this.count=e,this.unchangedNames=t}}function DT(e){switch(e){default:return F_(),0;case V_.CANCELLED:case V_.UNKNOWN:case V_.DEADLINE_EXCEEDED:case V_.RESOURCE_EXHAUSTED:case V_.INTERNAL:case V_.UNAVAILABLE:case V_.UNAUTHENTICATED:return;case V_.INVALID_ARGUMENT:case V_.NOT_FOUND:case V_.ALREADY_EXISTS:case V_.PERMISSION_DENIED:case V_.FAILED_PRECONDITION:case V_.ABORTED:case V_.OUT_OF_RANGE:case V_.UNIMPLEMENTED:case V_.DATA_LOSS:return 1}}function PT(e){if(void 0===e)return O_("GRPC error has no .code"),V_.UNKNOWN;switch(e){case m_.OK:return V_.OK;case m_.CANCELLED:return V_.CANCELLED;case m_.UNKNOWN:return V_.UNKNOWN;case m_.DEADLINE_EXCEEDED:return V_.DEADLINE_EXCEEDED;case m_.RESOURCE_EXHAUSTED:return V_.RESOURCE_EXHAUSTED;case m_.INTERNAL:return V_.INTERNAL;case m_.UNAVAILABLE:return V_.UNAVAILABLE;case m_.UNAUTHENTICATED:return V_.UNAUTHENTICATED;case m_.INVALID_ARGUMENT:return V_.INVALID_ARGUMENT;case m_.NOT_FOUND:return V_.NOT_FOUND;case m_.ALREADY_EXISTS:return V_.ALREADY_EXISTS;case m_.PERMISSION_DENIED:return V_.PERMISSION_DENIED;case m_.FAILED_PRECONDITION:return V_.FAILED_PRECONDITION;case m_.ABORTED:return V_.ABORTED;case m_.OUT_OF_RANGE:return V_.OUT_OF_RANGE;case m_.UNIMPLEMENTED:return V_.UNIMPLEMENTED;case m_.DATA_LOSS:return V_.DATA_LOSS;default:return F_()}}(It=m_=m_||{})[It.OK=0]="OK",It[It.CANCELLED=1]="CANCELLED",It[It.UNKNOWN=2]="UNKNOWN",It[It.INVALID_ARGUMENT=3]="INVALID_ARGUMENT",It[It.DEADLINE_EXCEEDED=4]="DEADLINE_EXCEEDED",It[It.NOT_FOUND=5]="NOT_FOUND",It[It.ALREADY_EXISTS=6]="ALREADY_EXISTS",It[It.PERMISSION_DENIED=7]="PERMISSION_DENIED",It[It.UNAUTHENTICATED=16]="UNAUTHENTICATED",It[It.RESOURCE_EXHAUSTED=8]="RESOURCE_EXHAUSTED",It[It.FAILED_PRECONDITION=9]="FAILED_PRECONDITION",It[It.ABORTED=10]="ABORTED",It[It.OUT_OF_RANGE=11]="OUT_OF_RANGE",It[It.UNIMPLEMENTED=12]="UNIMPLEMENTED",It[It.INTERNAL=13]="INTERNAL",It[It.UNAVAILABLE=14]="UNAVAILABLE",It[It.DATA_LOSS=15]="DATA_LOSS";class xT{constructor(){this.onExistenceFilterMismatchCallbacks=new Map}static get instance(){return OT}static getOrCreateInstance(){return null===OT&&(OT=new xT),OT}onExistenceFilterMismatch(e){const t=Symbol();return this.onExistenceFilterMismatchCallbacks.set(t,e),()=>this.onExistenceFilterMismatchCallbacks.delete(t)}notifyOnExistenceFilterMismatch(t){this.onExistenceFilterMismatchCallbacks.forEach(e=>e(t))}}let OT=null;function MT(){return new TextEncoder}const LT=new S_([4294967295,4294967295],0);function FT(e){const t=MT().encode(e),n=new k_;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 S_([n,r],0),new S_([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.It=8*e.length-t,this.Tt=S_.fromNumber(this.It)}Et(e,t,n){let r=e.add(t.multiply(S_.fromNumber(n)));return 1===r.compare(LT)&&(r=new S_([r.getBits(0),r.getBits(1)],0)),r.modulo(this.Tt).toNumber()}At(e){return 0!=(this.bitmap[Math.floor(e/8)]&1<<e%8)}vt(e){if(0===this.It)return!1;const t=FT(e),[n,r]=UT(t);for(let i=0;i<this.hashCount;i++){const t=this.Et(n,r,i);if(!this.At(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.It){const n=FT(t),[r,i]=UT(n);for(let e=0;e<this.hashCount;e++){const n=this.Et(r,i,e);this.Rt(n)}}}Rt(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(tw.min(),r,new db(J_),zI,YI())}}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,YI(),YI(),YI())}}class zT{constructor(e,t,n,r){this.Pt=e,this.removedTargetIds=t,this.key=n,this.bt=r}}class $T{constructor(e,t){this.targetId=e,this.Vt=t}}class KT{constructor(e,t,n=wb.EMPTY_BYTE_STRING,r=null){this.state=e,this.targetIds=t,this.resumeToken=n,this.cause=r}}class WT{constructor(){this.St=0,this.Dt=QT(),this.Ct=wb.EMPTY_BYTE_STRING,this.xt=!1,this.Nt=!0}get current(){return this.xt}get resumeToken(){return this.Ct}get kt(){return 0!==this.St}get Mt(){return this.Nt}$t(e){0<e.approximateByteSize()&&(this.Nt=!0,this.Ct=e)}Ot(){let n=YI(),r=YI(),i=YI();return this.Dt.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:F_()}}),new jT(this.Ct,this.xt,n,r,i)}Ft(){this.Nt=!1,this.Dt=QT()}Bt(e,t){this.Nt=!0,this.Dt=this.Dt.insert(e,t)}Lt(e){this.Nt=!0,this.Dt=this.Dt.remove(e)}qt(){this.St+=1}Ut(){--this.St}Kt(){this.Nt=!0,this.xt=!0}}class GT{constructor(e){this.Gt=e,this.Qt=new Map,this.jt=zI,this.zt=HT(),this.Wt=new db(J_)}Ht(e){for(const t of e.Pt)e.bt&&e.bt.isFoundDocument()?this.Jt(t,e.bt):this.Yt(t,e.key,e.bt);for(const n of e.removedTargetIds)this.Yt(n,e.key,e.bt)}Xt(n){this.forEachTarget(n,e=>{const t=this.Zt(e);switch(n.state){case 0:this.te(e)&&t.$t(n.resumeToken);break;case 1:t.Ut(),t.kt||t.Ft(),t.$t(n.resumeToken);break;case 2:t.Ut(),t.kt||this.removeTarget(e);break;case 3:this.te(e)&&(t.Kt(),t.$t(n.resumeToken));break;case 4:this.te(e)&&(this.ee(e),t.$t(n.resumeToken));break;default:F_()}})}forEachTarget(e,n){0<e.targetIds.length?e.targetIds.forEach(n):this.Qt.forEach((e,t)=>{this.te(t)&&n(t)})}ne(e){const t=e.targetId,n=e.Vt.count,r=this.se(t);if(r){var i=r.target;if(bI(i))if(0===n){const e=new aw(i.path);this.Yt(t,e,Qb.newNoDocument(e,tw.min()))}else U_(1===n);else{const r=this.ie(t);if(r!==n){const n=this.re(e,r);if(0!==n){this.ee(t);const e=2===n?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch";this.Wt=this.Wt.insert(t,e)}null===(i=xT.instance)||void 0===i||i.notifyOnExistenceFilterMismatch(function(e,t,n){var r;const i={localCacheCount:t,existenceFilterCount:n.count},s=n.unchangedNames;return s&&(i.bloomFilter={applied:0===e,hashCount:null!==(r=null==s?void 0:s.hashCount)&&void 0!==r?r:0,bitmapLength:null!==(r=null===(r=null===(r=null==s?void 0:s.bits)||void 0===r?void 0:r.bitmap)||void 0===r?void 0:r.length)&&void 0!==r?r:0,padding:null!==(r=null===(r=null==s?void 0:s.bits)||void 0===r?void 0:r.padding)&&void 0!==r?r:0}),i}(n,r,e.Vt))}}}}re(e,t){var{unchangedNames:n,count:r}=e.Vt;if(!n||!n.bits)return 1;var{bits:{bitmap:i="",padding:s=0},hashCount:n=0}=n;let a,o;try{a=Eb(i).toUint8Array()}catch(e){if(e instanceof _b)return M_("Decoding the base64 bloom filter in existence filter failed ("+e.message+"); ignoring the bloom filter and falling back to full re-query."),1;throw e}try{o=new VT(a,s,n)}catch(e){return M_(e instanceof qT?"BloomFilter error: ":"Applying bloom filter failed: ",e),1}return 0===o.It?1:r!==t-this.oe(e.targetId,o)?2:0}oe(n,r){const e=this.Gt.getRemoteKeysForTarget(n);let i=0;return e.forEach(e=>{var t=this.Gt.ue(),t=`projects/${t.projectId}/databases/${t.database}/documents/${e.path.canonicalString()}`;r.vt(t)||(this.Yt(n,e,null),i++)}),i}ce(r){const i=new Map;this.Qt.forEach((e,t)=>{var n=this.se(t);if(n){if(e.current&&bI(n.target)){const i=new aw(n.target.path);null!==this.jt.get(i)||this.ae(t,i)||this.Yt(t,i,Qb.newNoDocument(i,r))}e.Mt&&(i.set(t,e.Ot()),e.Ft())}});let s=YI();this.zt.forEach((e,t)=>{let n=!0;t.forEachWhile(e=>{var t=this.se(e);return!t||"TargetPurposeLimboResolution"===t.purpose||(n=!1)}),n&&(s=s.add(e))}),this.jt.forEach((e,t)=>t.setReadTime(r));var e=new BT(r,i,this.Wt,this.jt,s);return this.jt=zI,this.zt=HT(),this.Wt=new db(J_),e}Jt(e,t){var n;this.te(e)&&(n=this.ae(e,t.key)?2:0,this.Zt(e).Bt(t.key,n),this.jt=this.jt.insert(t.key,t),this.zt=this.zt.insert(t.key,this.he(t.key).add(e)))}Yt(e,t,n){if(this.te(e)){const r=this.Zt(e);this.ae(e,t)?r.Bt(t,1):r.Lt(t),this.zt=this.zt.insert(t,this.he(t).delete(e)),n&&(this.jt=this.jt.insert(t,n))}}removeTarget(e){this.Qt.delete(e)}ie(e){var t=this.Zt(e).Ot();return this.Gt.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}qt(e){this.Zt(e).qt()}Zt(e){let t=this.Qt.get(e);return t||(t=new WT,this.Qt.set(e,t)),t}he(e){let t=this.zt.get(e);return t||(t=new gb(J_),this.zt=this.zt.insert(e,t)),t}te(e){var t=null!==this.se(e);return t||x_("WatchChangeAggregator","Detected inactive target",e),t}se(e){var t=this.Qt.get(e);return t&&t.kt?null:this.Gt.le(e)}ee(t){this.Qt.set(t,new WT),this.Gt.getRemoteKeysForTarget(t).forEach(e=>{this.Yt(t,e,null)})}ae(e,t){return this.Gt.getRemoteKeysForTarget(e).has(t)}}function HT(){return new db(aw.comparator)}function QT(){return new db(aw.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||Pw(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 U_(!!e),tw.fromTimestamp((t=Ib(e),new ew(t.seconds,t.nanos)));var t}function i0(e,t){return e=e,new rw(["projects",e.projectId,"databases",e.database]).child("documents").child(t).canonicalString()}function s0(e){var t=rw.fromString(e);return U_(T0(t)),t}function a0(e,t){return i0(e.databaseId,t.path)}function o0(e,t){const n=s0(t);if(n.get(1)!==e.databaseId.projectId)throw new q_(V_.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 q_(V_.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+n.get(3)+" vs "+e.databaseId.database);return new aw(h0(n))}function c0(e,t){return i0(e.databaseId,t)}function l0(e){var t=s0(e);return 4===t.length?rw.emptyPath():h0(t)}function u0(e){return new rw(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function h0(e){return U_(4<e.length&&"documents"===e.get(4)),e.popFirst(5)}function d0(e,t,n){return{name:a0(e,t),fields:n.value.mapValue.fields}}function p0(e,t,n){const r=o0(e,t.name),i=r0(t.updateTime),s=t.createTime?r0(t.createTime):tw.min(),a=new Hb({mapValue:{fields:t.fields}}),o=Qb.newFoundDocument(r,i,s,a);return n&&o.setHasCommittedMutations(),n?o.setHasCommittedMutations():o}function f0(e,t){let n;if(t instanceof wT)n={update:d0(e,t.key,t.value)};else if(t instanceof CT)n={delete:a0(e,t.key)};else if(t instanceof bT)n={update:d0(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 kT))return F_();n={verify:a0(e,t.key)}}return 0<t.fieldTransforms.length&&(n.updateTransforms=t.fieldTransforms.map(e=>function(e){var t=e.transform;if(t instanceof rT)return{fieldPath:e.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(t instanceof iT)return{fieldPath:e.field.canonicalString(),appendMissingElements:{values:t.elements}};if(t instanceof aT)return{fieldPath:e.field.canonicalString(),removeAllFromArray:{values:t.elements}};if(t instanceof cT)return{fieldPath:e.field.canonicalString(),increment:t.gt};throw F_()}(e))),t.precondition.isNone||(n.currentDocument=void 0!==(r=t.precondition).updateTime?{updateTime:(t=r.updateTime,t0(e,t.toTimestamp()))}:void 0!==r.exists?{exists:r.exists}:F_()),n;var r}function g0(t,n){const e=n.currentDocument?void 0!==(i=n.currentDocument).updateTime?pT.updateTime(r0(i.updateTime)):void 0!==i.exists?pT.exists(i.exists):pT.none():pT.none(),r=n.updateTransforms?n.updateTransforms.map(e=>function(e,t){let n=null;if("setToServerValue"in t)U_("REQUEST_TIME"===t.setToServerValue),n=new rT;else if("appendMissingElements"in t){const e=t.appendMissingElements.values||[];n=new iT(e)}else if("removeAllFromArray"in t){const e=t.removeAllFromArray.values||[];n=new aT(e)}else"increment"in t?n=new cT(e,t.increment):F_();var r=sw.fromServerFormat(t.fieldPath);return new hT(r,n)}(t,e)):[];var i;if(n.update){n.update.name;var s=o0(t,n.update.name),a=new Hb({mapValue:{fields:n.update.fields}});if(n.updateMask){const t=function(){const e=n.updateMask.fieldPaths||[];return new yb(e.map(e=>sw.fromServerFormat(e)))}();return new bT(s,a,t,e,r)}return new wT(s,a,e,r)}if(n.delete){const r=o0(t,n.delete);return new CT(r,e)}if(n.verify){const r=o0(t,n.verify);return new kT(r,e)}return F_()}function m0(e,t){return{documents:[c0(e,t.path)]}}function v0(e,t){const n={structuredQuery:{}},r=t.path;null!==t.collectionGroup?(n.parent=c0(e,r),n.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(n.parent=c0(e,r.popLast()),n.structuredQuery.from=[{collectionId:r.lastSegment()}]);var i=function(e){if(0!==e.length)return function n(e){return e instanceof tI?function(e){if("=="===e.op){if(jb(e.value))return{unaryFilter:{field:b0(e.field),op:"IS_NAN"}};if(Bb(e.value))return{unaryFilter:{field:b0(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(jb(e.value))return{unaryFilter:{field:b0(e.field),op:"IS_NOT_NAN"}};if(Bb(e.value))return{unaryFilter:{field:b0(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:b0(e.field),op:_0(e.op),value:e.value}}}(e):e instanceof nI?function(e){const t=e.getFilters().map(e=>n(e));return 1===t.length?t[0]:{compositeFilter:{op:w0(e.op),filters:t}}}(e):F_()}(nI.create(e,"and"))}(t.filters);i&&(n.structuredQuery.where=i);i=function(e){if(0!==e.length)return e.map(e=>function(e){return{field:b0(e.field),direction:(e=e.dir,YT[e])}}(e))}(t.orderBy);i&&(n.structuredQuery.orderBy=i);i=e0(e,t.limit);return null!==i&&(n.structuredQuery.limit=i),t.startAt&&(n.structuredQuery.startAt={before:(i=t.startAt).inclusive,values:i.position}),t.endAt&&(n.structuredQuery.endAt={before:!(t=t.endAt).inclusive,values:t.position}),n}function y0(e){let t=l0(e.parent);const n=e.structuredQuery,r=n.from?n.from.length:0;let i=null;if(0<r){U_(1===r);const f=n.from[0];f.allDescendants?i=f.collectionId:t=t.child(f.collectionId)}let s=[];n.where&&(s=function(){const e=function t(e){return void 0!==e.unaryFilter?function(e){switch(e.unaryFilter.op){case"IS_NAN":const t=I0(e.unaryFilter.field);return tI.create(t,"==",{doubleValue:NaN});case"IS_NULL":const n=I0(e.unaryFilter.field);return tI.create(n,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const r=I0(e.unaryFilter.field);return tI.create(r,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const i=I0(e.unaryFilter.field);return tI.create(i,"!=",{nullValue:"NULL_VALUE"});default:return F_()}}(e):void 0!==e.fieldFilter?function(e){return tI.create(I0(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 F_()}}(e.fieldFilter.op),e.fieldFilter.value)}(e):void 0!==e.compositeFilter?function(e){return nI.create(e.compositeFilter.filters.map(e=>t(e)),function(e){switch(e){case"AND":return"and";case"OR":return"or";default:return F_()}}(e.compositeFilter.op))}(e):F_()}(n.where);return e instanceof nI&&sI(e)?e.getFilters():[e]}());let a=[];n.orderBy&&(a=n.orderBy.map(e=>function(e){return new Zb(I0(e.field),function(){switch(e.direction){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}())}(e)));let o=null;var c,l,u,h;n.limit&&(o=(e=n.limit,Pw(c="object"==typeof e?e.value:e)?null:c));let d=null;n.startAt&&(d=(l=n.startAt,h=!!l.before,u=l.values||[],new Yb(u,h)));let p=null;return n.endAt&&(p=(l=n.endAt,u=!l.before,h=l.values||[],new Yb(h,u))),kI(t,i,a,s,o,"F",d,p)}function _0(e){return JT[e]}function w0(e){return XT[e]}function b0(e){return{fieldPath:e.canonicalString()}}function I0(e){return sw.fromServerFormat(e.fieldPath)}function T0(e){return 4<=e.length&&"projects"===e.get(0)&&"databases"===e.get(2)}class E0{constructor(e,t,n,r,i=tw.min(),s=tw.min(),a=wb.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 E0(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,t){return new E0(this.target,this.targetId,this.purpose,this.sequenceNumber,t,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new E0(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new E0(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}class C0{constructor(e){this.fe=e}}function k0(e,t){const n=t.key,r={prefixPath:n.getCollectionPath().popLast().toArray(),collectionGroup:n.collectionGroup,documentId:n.path.lastSegment(),readTime:S0(t.readTime),hasCommittedMutations:t.hasCommittedMutations};if(t.isFoundDocument())r.document={name:a0(i=e.fe,(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:A0(t.version)};else{if(!t.isUnknownDocument())return F_();r.unknownDocument={path:n.path.toArray(),version:A0(t.version)}}var i;return r}function S0(e){var t=e.toTimestamp();return[t.seconds,t.nanoseconds]}function A0(e){var t=e.toTimestamp();return{seconds:t.seconds,nanoseconds:t.nanoseconds}}function N0(e){var t=new ew(e.seconds,e.nanoseconds);return tw.fromTimestamp(t)}function R0(t,e){const n=(e.baseMutations||[]).map(e=>g0(t.fe,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=>g0(t.fe,e)),i=ew.fromMillis(e.localWriteTimeMs);return new ST(e.batchId,i,n,r)}function D0(e){var t,n=N0(e.readTime),r=void 0!==e.lastLimboFreeSnapshotVersion?N0(e.lastLimboFreeSnapshotVersion):tw.min();let i;return i=void 0!==e.query.documents?(U_(1===(t=e.query).documents.length),xI(SI(l0(t.documents[0])))):xI(y0(e.query)),new E0(i,e.targetId,"TargetPurposeListen",e.lastListenSequenceNumber,n,r,wb.fromBase64String(e.resumeToken))}function P0(e,t){var n=A0(t.snapshotVersion),r=A0(t.lastLimboFreeSnapshotVersion),i=(bI(t.target)?m0:v0)(e.fe,t.target),s=t.resumeToken.toBase64();return{targetId:t.targetId,canonicalId:_I(t.target),readTime:n,resumeToken:s,lastListenSequenceNumber:t.sequenceNumber,lastLimboFreeSnapshotVersion:r,query:i}}function x0(e){var t=y0({parent:e.parent,structuredQuery:e.structuredQuery});return"LAST"===e.limitType?MI(t,t.limit,"L"):t}function O0(e,t){return new NT(t.largestBatchId,g0(e.fe,t.overlayMutation))}function M0(e,t){var n=t.path.lastSegment();return[e,Mw(t.path.popLast()),n]}function L0(e,t,n,r){return{indexId:e,uid:t.uid||"",sequenceNumber:n,readTime:A0(r.readTime),documentKey:Mw(r.documentKey.path),largestBatchId:r.largestBatchId}}class F0{getBundleMetadata(e,t){return U0(e).get(t).next(e=>{if(e)return{id:(t=e).bundleId,createTime:N0(t.createTime),version:t.version};var t})}saveBundleMetadata(e,t){return U0(e).put({bundleId:(n=t).id,createTime:A0(r0(n.createTime)),version:n.version});var n}getNamedQuery(e,t){return V0(e).get(t).next(e=>{if(e)return{name:(t=e).name,query:x0(t.bundledQuery),readTime:N0(t.readTime)};var t})}saveNamedQuery(e,t){return V0(e).put({name:(t=t).name,readTime:A0(r0(t.readTime)),bundledQuery:t.bundledQuery})}}function U0(e){return cb(e,"bundles")}function V0(e){return cb(e,"namedQueries")}class q0{constructor(e,t){this.serializer=e,this.userId=t}static de(e,t){var n=t.uid||"";return new q0(e,n)}getOverlay(e,t){return B0(e).get(M0(this.userId,t)).next(e=>e?O0(this.serializer,e):null)}getOverlays(e,t){const n=GI();return _w.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 NT(i,t);s.push(this.we(r,n))}),_w.waitFor(s)}removeOverlaysForBatchId(n,e,r){const t=new Set;e.forEach(e=>t.add(Mw(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(B0(n).J("collectionPathOverlayIndex",t))}),_w.waitFor(i)}getOverlaysForCollection(e,t,n){const r=GI(),i=Mw(t),s=IDBKeyRange.bound([this.userId,i,n],[this.userId,i,Number.POSITIVE_INFINITY],!0);return B0(e).j("collectionPathOverlayIndex",s).next(e=>{for(const t of e){const e=O0(this.serializer,t);r.set(e.getKey(),e)}return r})}getOverlaysForCollectionGroup(e,t,n,i){const s=GI();let a;var r=IDBKeyRange.bound([this.userId,t,n],[this.userId,t,Number.POSITIVE_INFINITY],!0);return B0(e).X({index:"collectionGroupOverlayIndex",range:r},(e,t,n)=>{const r=O0(this.serializer,t);s.size()<i||r.largestBatchId===a?(s.set(r.getKey(),r),a=r.largestBatchId):n.done()}).next(()=>s)}we(e,t){return B0(e).put(function(e,t,n){var[,r,i]=M0(t,n.mutation.key);return{userId:t,collectionPath:r,documentId:i,collectionGroup:n.mutation.key.getCollectionGroup(),largestBatchId:n.largestBatchId,overlayMutation:f0(e.fe,n.mutation)}}(this.serializer,this.userId,t))}}function B0(e){return cb(e,"documentOverlays")}class j0{constructor(){}_e(e,t){this.me(e,t),t.ge()}me(e,t){var n,r;"nullValue"in e?this.ye(t,5):"booleanValue"in e?(this.ye(t,10),t.pe(e.booleanValue?1:0)):"integerValue"in e?(this.ye(t,15),t.pe(Tb(e.integerValue))):"doubleValue"in e?(n=Tb(e.doubleValue),isNaN(n)?this.ye(t,13):(this.ye(t,15),xw(n)?t.pe(0):t.pe(n))):"timestampValue"in e?(r=e.timestampValue,this.ye(t,20),"string"==typeof r?t.Ie(r):(t.Ie(`${r.seconds||""}`),t.pe(r.nanos||0))):"stringValue"in e?(this.Te(e.stringValue,t),this.Ee(t)):"bytesValue"in e?(this.ye(t,30),t.Ae(Eb(e.bytesValue)),this.Ee(t)):"referenceValue"in e?this.ve(e.referenceValue,t):"geoPointValue"in e?(r=e.geoPointValue,this.ye(t,45),t.pe(r.latitude||0),t.pe(r.longitude||0)):"mapValue"in e?Kb(e)?this.ye(t,Number.MAX_SAFE_INTEGER):(this.Re(e.mapValue,t),this.Ee(t)):"arrayValue"in e?(this.Pe(e.arrayValue,t),this.Ee(t)):F_()}Te(e,t){this.ye(t,25),this.be(e,t)}be(e,t){t.Ie(e)}Re(e,t){var n=e.fields||{};this.ye(t,55);for(const e of Object.keys(n))this.Te(e,t),this.me(n[e],t)}Pe(e,t){var n=e.values||[];this.ye(t,50);for(const e of n)this.me(e,t)}ve(e,t){this.ye(t,37),aw.fromName(e).path.forEach(e=>{this.ye(t,60),this.be(e,t)})}ye(e,t){e.pe(t)}Ee(e){e.pe(2)}}function z0(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)}j0.Ve=new j0;class $0{constructor(){this.buffer=new Uint8Array(1024),this.position=0}Se(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.De(n.value),n=t.next();this.Ce()}xe(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.Ne(n.value),n=t.next();this.ke()}Me(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.De(e);else if(e<2048)this.De(960|e>>>6),this.De(128|63&e);else if(t<"\ud800"||"\udbff"<t)this.De(480|e>>>12),this.De(128|63&e>>>6),this.De(128|63&e);else{const e=t.codePointAt(0);this.De(240|e>>>18),this.De(128|63&e>>>12),this.De(128|63&e>>>6),this.De(128|63&e)}}this.Ce()}$e(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.Ne(e);else if(e<2048)this.Ne(960|e>>>6),this.Ne(128|63&e);else if(t<"\ud800"||"\udbff"<t)this.Ne(480|e>>>12),this.Ne(128|63&e>>>6),this.Ne(128|63&e);else{const e=t.codePointAt(0);this.Ne(240|e>>>18),this.Ne(128|63&e>>>12),this.Ne(128|63&e>>>6),this.Ne(128|63&e)}}this.ke()}Oe(e){var t=this.Fe(e),n=z0(t);this.Be(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]}Le(e){var t=this.Fe(e),n=z0(t);this.Be(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])}qe(){this.Ue(255),this.Ue(255)}Ke(){this.Ge(255),this.Ge(255)}reset(){this.position=0}seed(e){this.Be(e.length),this.buffer.set(e,this.position),this.position+=e.length}Qe(){return this.buffer.slice(0,this.position)}Fe(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}De(e){var t=255&e;0==t?(this.Ue(0),this.Ue(255)):255==t?(this.Ue(255),this.Ue(0)):this.Ue(t)}Ne(e){var t=255&e;0==t?(this.Ge(0),this.Ge(255)):255==t?(this.Ge(255),this.Ge(0)):this.Ge(e)}Ce(){this.Ue(0),this.Ue(1)}ke(){this.Ge(0),this.Ge(1)}Ue(e){this.Be(1),this.buffer[this.position++]=e}Ge(e){this.Be(1),this.buffer[this.position++]=~e}Be(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 K0{constructor(e){this.je=e}Ae(e){this.je.Se(e)}Ie(e){this.je.Me(e)}pe(e){this.je.Oe(e)}ge(){this.je.qe()}}class W0{constructor(e){this.je=e}Ae(e){this.je.xe(e)}Ie(e){this.je.$e(e)}pe(e){this.je.Le(e)}ge(){this.je.Ke()}}class G0{constructor(){this.je=new $0,this.ze=new K0(this.je),this.We=new W0(this.je)}seed(e){this.je.seed(e)}He(e){return 0===e?this.ze:this.We}Qe(){return this.je.Qe()}reset(){this.je.reset()}}class H0{constructor(e,t,n,r){this.indexId=e,this.documentKey=t,this.arrayValue=n,this.directionalValue=r}Je(){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 H0(this.indexId,this.documentKey,this.arrayValue,n)}}function Q0(e,t){let n=e.indexId-t.indexId;return 0!==n?n:(n=Y0(e.arrayValue,t.arrayValue),0!==n?n:(n=Y0(e.directionalValue,t.directionalValue),0!==n?n:aw.comparator(e.documentKey,t.documentKey)))}function Y0(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 J0{constructor(e){this.collectionId=null!=e.collectionGroup?e.collectionGroup:e.path.lastSegment(),this.Ye=e.orderBy,this.Xe=[];for(const t of e.filters){const e=t;e.isInequality()?this.Ze=e:this.Xe.push(e)}}tn(e){U_(e.collectionGroup===this.collectionId);var t=cw(e);if(void 0!==t&&!this.en(t))return!1;const n=lw(e);let r=new Set,i=0,s=0;for(;i<n.length&&this.en(n[i]);++i)r=r.add(n[i].fieldPath.canonicalString());if(i===n.length)return!0;if(void 0!==this.Ze){if(!r.has(this.Ze.field.canonicalString())){const e=n[i];if(!this.nn(this.Ze,e)||!this.sn(this.Ye[s++],e))return!1}++i}for(;i<n.length;++i){const e=n[i];if(s>=this.Ye.length||!this.sn(this.Ye[s++],e))return!1}return!0}en(e){for(const t of this.Xe)if(this.nn(t,e))return!0;return!1}nn(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 X0(e){if(0===e.getFilters().length)return[];const t=function t(e){if(U_(e instanceof tI||e instanceof nI),e instanceof tI)return e;if(1===e.filters.length)return t(e.filters[0]);const n=e.filters.map(e=>t(e));let r=nI.create(n,e.op);return r=iE(r),tE(r)?r:(U_(r instanceof nI),U_(rI(r)),U_(1<r.filters.length),r.filters.reduce((e,t)=>nE(e,t)))}(function t(n){var e;if(U_(n instanceof tI||n instanceof nI),n instanceof tI){if(n instanceof fI){const r=(null===(e=null===(e=n.value.arrayValue)||void 0===e?void 0:e.values)||void 0===e?void 0:e.map(e=>tI.create(n.field,"==",e)))||[];return nI.create(r,"or")}return n}const r=n.filters.map(e=>t(e));return nI.create(r,n.op)}(e));return U_(tE(t)),Z0(t)||eE(t)?[t]:t.getFilters()}function Z0(e){return e instanceof tI}function eE(e){return e instanceof nI&&sI(e)}function tE(e){return Z0(e)||eE(e)||function(e){if(e instanceof nI&&iI(e)){for(const t of e.getFilters())if(!Z0(t)&&!eE(t))return!1;return!0}return!1}(e)}function nE(e,t){var n,r;return U_(e instanceof tI||e instanceof nI),U_(t instanceof tI||t instanceof nI),iE(e instanceof tI?t instanceof tI?(n=e,r=t,nI.create([n,r],"and")):rE(e,t):t instanceof tI?rE(t,e):function(e,t){if(U_(0<e.filters.length&&0<t.filters.length),rI(e)&&rI(t))return oI(e,t.getFilters());const n=iI(e)?e:t,r=iI(e)?t:e,i=n.filters.map(e=>nE(e,r));return nI.create(i,"or")}(e,t))}function rE(t,e){if(rI(e))return oI(e,t.getFilters());var n=e.filters.map(e=>nE(t,e));return nI.create(n,"or")}function iE(t){if(U_(t instanceof tI||t instanceof nI),t instanceof tI)return t;const e=t.getFilters();if(1===e.length)return iE(e[0]);if(aI(t))return t;const n=e.map(e=>iE(e)),r=[];return n.forEach(e=>{e instanceof tI?r.push(e):e instanceof nI&&(e.op===t.op?r.push(...e.filters):r.push(e))}),1===r.length?r[0]:nI.create(r,t.op)}class sE{constructor(){this.rn=new aE}addToCollectionParentIndex(e,t){return this.rn.add(t),_w.resolve()}getCollectionParents(e,t){return _w.resolve(this.rn.getEntries(t))}addFieldIndex(e,t){return _w.resolve()}deleteFieldIndex(e,t){return _w.resolve()}getDocumentsMatchingTarget(e,t){return _w.resolve(null)}getIndexType(e,t){return _w.resolve(0)}getFieldIndexes(e,t){return _w.resolve([])}getNextCollectionGroupToUpdate(e){return _w.resolve(null)}getMinOffset(e,t){return _w.resolve(fw.min())}getMinOffsetFromCollectionGroup(e,t){return _w.resolve(fw.min())}updateCollectionGroup(e,t,n){return _w.resolve()}updateIndexEntries(e,t){return _w.resolve()}}class aE{constructor(){this.index={}}add(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t]||new gb(rw.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 gb(rw.comparator)).toArray()}}const oE=new Uint8Array(0);class cE{constructor(e,t){this.user=e,this.databaseId=t,this.on=new aE,this.un=new jI(e=>_I(e),(e,t)=>wI(e,t)),this.uid=e.uid||""}addToCollectionParentIndex(e,t){if(this.on.has(t))return _w.resolve();var n=t.lastSegment(),r=t.popLast();e.addOnCommittedListener(()=>{this.on.add(t)});r={collectionId:n,parent:Mw(r)};return lE(e).put(r)}getCollectionParents(e,n){const r=[],t=IDBKeyRange.bound([n,""],[Z_(n),""],!1,!0);return lE(e).j(t).next(e=>{for(const t of e){if(t.collectionId!==n)break;r.push(Fw(t.parent))}return r})}addFieldIndex(e,t){const n=hE(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=dE(e);return i.next(e=>{n.put(L0(e,this.user,t.indexState.sequenceNumber,t.indexState.offset))})}return i.next()}deleteFieldIndex(e,t){const n=hE(e),r=dE(e),i=uE(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)))}getDocumentsMatchingTarget(e,l){const u=uE(e);let h=!0;const n=new Map;return _w.forEach(this.cn(l),t=>this.an(e,t).next(e=>{h=h&&!!e,n.set(t,e)})).next(()=>{if(h){let c=YI();const h=[];return _w.forEach(n,(e,t)=>{x_("IndexedDbIndexManager",`Using index ${o=e,`id=${o.indexId}|cg=${o.collectionGroup}|f=${o.fields.map(e=>`${e.fieldPath}:${e.kind}`).join(",")}`} to execute ${_I(l)}`);var n=function(e,t){var n=cw(t);if(void 0===n)return null;for(const t of II(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),r=function(e,t){const n=new Map;for(const r of lw(t))for(const t of II(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),i=function(e,t){const n=[];let r=!0;for(const i of lw(t)){const t=(0===i.kind?TI:EI)(e,i.fieldPath,e.startAt);n.push(t.value),r=r&&t.inclusive}return new Yb(n,r)}(t,e),s=function(e,t){const n=[];let r=!0;for(const i of lw(t)){const t=(0===i.kind?EI:TI)(e,i.fieldPath,e.endAt);n.push(t.value),r=r&&t.inclusive}return new Yb(n,r)}(t,e),a=this.hn(e,t,i),o=this.hn(e,t,s),r=this.ln(e,t,r),r=this.fn(e.indexId,n,a,i.inclusive,o,s.inclusive,r);return _w.forEach(r,e=>u.H(e,l.limit).next(e=>{e.forEach(e=>{var t=aw.fromSegments(e.documentKey);c.has(t)||(c=c.add(t),h.push(t))})}))}).next(()=>h)}return _w.resolve(null)})}cn(t){let e=this.un.get(t);return e||(e=0===t.filters.length?[t]:X0(nI.create(t.filters,"and")).map(e=>yI(t.path,t.collectionGroup,t.orderBy,e.getFilters(),t.limit,t.startAt,t.endAt)),this.un.set(t,e),e)}fn(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.dn(e[u/c]):oE,h=this.wn(t,o,n[u%c],r),d=this._n(t,o,i[u%c],s),p=a.map(e=>this.wn(t,o,e,!0));l.push(...this.createRange(h,d,p))}return l}wn(e,t,n,r){const i=new H0(e,aw.empty(),t,n);return r?i:i.Je()}_n(e,t,n,r){const i=new H0(e,aw.empty(),t,n);return r?i.Je():i}an(e,t){const r=new J0(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 _w.forEach(r,t=>this.an(e,t).next(e=>{e?0!==n&&e.fields.length<function(e){let t=new gb(sw.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(()=>null!==t.limit&&1<r.length&&2===n?1:n)}mn(e,t){const n=new G0;for(const i of lw(e)){const e=t.data.field(i.fieldPath);if(null==e)return null;var r=n.He(i.kind);j0.Ve._e(e,r)}return n.Qe()}dn(e){const t=new G0;return j0.Ve._e(e,t.He(0)),t.Qe()}gn(e,t){const n=new G0;return j0.Ve._e(Ub(this.databaseId,t),n.He(0===(r=lw(e)).length?0:r[r.length-1].kind)),n.Qe();var r}ln(e,t,n){if(null===n)return[];let r=[];r.push(new G0);let i=0;for(const s of lw(e)){const e=n[i++];for(const n of r)if(this.yn(t,s.fieldPath)&&qb(e))r=this.pn(r,s,e);else{const t=n.He(s.kind);j0.Ve._e(e,t)}}return this.In(r)}hn(e,t,n){return this.ln(e,t,n.position)}In(e){const t=[];for(let n=0;n<e.length;++n)t[n]=e[n].Qe();return t}pn(e,t,n){const r=[...e],i=[];for(const e of n.arrayValue.values||[])for(const n of r){const r=new G0;r.seed(n.Qe()),j0.Ve._e(e,r.He(t.kind)),i.push(r)}return i}yn(e,t){return!!e.filters.find(e=>e instanceof tI&&e.field.isEqual(t)&&("in"===e.op||"not-in"===e.op))}getFieldIndexes(e,t){const n=hE(e),r=dE(e);return(t?n.j("collectionGroupIndex",IDBKeyRange.bound(t,t)):n.j()).next(e=>{const s=[];return _w.forEach(e,i=>r.get([i.indexId,this.uid]).next(e=>{var t,n,r;s.push((t=i,n=(e=e)?new hw(e.sequenceNumber,new fw(N0(e.readTime),new aw(Fw(e.documentKey)),e.largestBatchId)):hw.empty(),r=t.fields.map(([e,t])=>new uw(sw.fromServerFormat(e),t)),new ow(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:J_(e.collectionGroup,t.collectionGroup)}),e[0].collectionGroup))}updateCollectionGroup(e,n,r){const i=hE(e),s=dE(e);return this.Tn(e).next(t=>i.j("collectionGroupIndex",IDBKeyRange.bound(n,n)).next(e=>_w.forEach(e,e=>s.put(L0(e.indexId,this.user,t,r)))))}updateIndexEntries(i,e){const n=new Map;return _w.forEach(e,(t,r)=>{var e=n.get(t.collectionGroup);return(e?_w.resolve(e):this.getFieldIndexes(i,t.collectionGroup)).next(e=>(n.set(t.collectionGroup,e),_w.forEach(e,n=>this.En(i,t,n).next(e=>{var t=this.An(r,n);return e.isEqual(t)?_w.resolve():this.vn(i,r,n,e,t)}))))})}Rn(e,t,n,r){return uE(e).put({indexId:r.indexId,uid:this.uid,arrayValue:r.arrayValue,directionalValue:r.directionalValue,orderedDocumentKey:this.gn(n,t.key),documentKey:t.key.path.toArray()})}Pn(e,t,n,r){return uE(e).delete([r.indexId,this.uid,r.arrayValue,r.directionalValue,this.gn(n,t.key),t.key.path.toArray()])}En(e,n,r){const t=uE(e);let i=new gb(Q0);return t.X({index:"documentKeyIndex",range:IDBKeyRange.only([r.indexId,this.uid,this.gn(r,n)])},(e,t)=>{i=i.add(new H0(r.indexId,n,t.arrayValue,t.directionalValue))}).next(()=>i)}An(e,t){let n=new gb(Q0);var r=this.mn(t,e);if(null==r)return n;const i=cw(t);if(null!=i){var s=e.data.field(i.fieldPath);if(qb(s))for(const i of s.arrayValue.values||[])n=n.add(new H0(t.indexId,e.key,this.dn(i),r))}else n=n.add(new H0(t.indexId,e.key,oE,r));return n}vn(t,n,r,l,e){x_("IndexedDbIndexManager","Updating index entries for document '%s'",n.key);const i=[];return function(e,n,r,i){var s=l.getIterator(),a=e.getIterator();let o=vb(s),c=vb(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=vb(a)):t?(i(o),o=vb(s)):(o=vb(s),c=vb(a))}}(e,Q0,e=>{i.push(this.Rn(t,n,r,e))},e=>{i.push(this.Pn(t,n,r,e))}),_w.waitFor(i)}Tn(e){let r=1;return dE(e).X({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)=>Q0(e,t)).filter((e,t,n)=>!t||0!==Q0(e,n[t-1]));const r=[];r.push(e);for(const i of n){const n=Q0(i,e),s=Q0(i,t);if(0===n)r[0]=e.Je();else if(0<n&&s<0)r.push(i),r.push(i.Je());else if(0<s)break}r.push(t);const i=[];for(let a=0;a<r.length;a+=2){if(this.bn(r[a],r[a+1]))return[];const t=[r[a].indexId,this.uid,r[a].arrayValue,r[a].directionalValue,oE,[]],n=[r[a+1].indexId,this.uid,r[a+1].arrayValue,r[a+1].directionalValue,oE,[]];i.push(IDBKeyRange.bound(t,n))}return i}bn(e,t){return 0<Q0(e,t)}getMinOffsetFromCollectionGroup(e,t){return this.getFieldIndexes(e,t).next(pE)}getMinOffset(t,e){return _w.mapArray(this.cn(e),e=>this.an(t,e).next(e=>e||F_())).next(pE)}}function lE(e){return cb(e,"collectionParents")}function uE(e){return cb(e,"indexEntries")}function hE(e){return cb(e,"indexConfiguration")}function dE(e){return cb(e,"indexState")}function pE(e){U_(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;gw(r,t)<0&&(t=r),n<r.largestBatchId&&(n=r.largestBatchId)}return new fw(t.readTime,t.documentKey,n)}const fE={didRun:!1,sequenceNumbersCollected:0,targetsRemoved:0,documentsRemoved:0};class gE{constructor(e,t,n){this.cacheSizeCollectionThreshold=e,this.percentileToCollect=t,this.maximumSequenceNumbersToCollect=n}static withCacheSize(e){return new gE(e,gE.DEFAULT_COLLECTION_PERCENTILE,gE.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}}function mE(e,t,n){const r=e.store("mutations"),i=e.store("documentMutations"),s=[],a=IDBKeyRange.only(n.batchId);let o=0;const c=r.X({range:a},(e,t,n)=>(o++,n.delete()));s.push(c.next(()=>{U_(1===o)}));const l=[];for(const e of n.mutations){const r=qw(t,e.key.path,n.batchId);s.push(i.delete(r)),l.push(e.key)}return _w.waitFor(s).next(()=>l)}function vE(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 F_();t=e.noDocument}return JSON.stringify(t).length}gE.DEFAULT_COLLECTION_PERCENTILE=10,gE.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,gE.DEFAULT=new gE(41943040,gE.DEFAULT_COLLECTION_PERCENTILE,gE.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),gE.DISABLED=new gE(-1,0,0);class yE{constructor(e,t,n,r){this.userId=e,this.serializer=t,this.indexManager=n,this.referenceDelegate=r,this.Vn={}}static de(e,t,n,r){U_(""!==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 wE(e).X({index:"userMutationsIndex",range:t},(e,t,n)=>{r=!1,n.done()}).next(()=>r)}addMutationBatch(u,h,d,p){const f=bE(u),g=wE(u);return g.add({}).next(e=>{U_("number"==typeof e);const t=new ST(e,h,d,p),n=(i=this.serializer,s=this.userId,a=t,o=a.baseMutations.map(e=>f0(i.fe,e)),c=a.mutations.map(e=>f0(i.fe,e)),{userId:s,batchId:a.batchId,localWriteTimeMs:a.localWriteTime.toMillis(),baseMutations:o,mutations:c}),r=[];var i,s,a,o,c;let l=new gb((e,t)=>J_(e.canonicalString(),t.canonicalString()));for(const u of p){const h=qw(this.userId,u.key.path,e);l=l.add(u.key.path.popLast()),r.push(g.put(n)),r.push(f.put(h,Bw))}return l.forEach(e=>{r.push(this.indexManager.addToCollectionParentIndex(u,e))}),u.addOnCommittedListener(()=>{this.Vn[e]=t.keys()}),_w.waitFor(r).next(()=>t)})}lookupMutationBatch(e,t){return wE(e).get(t).next(e=>e?(U_(e.userId===this.userId),R0(this.serializer,e)):null)}Sn(e,n){return this.Vn[n]?_w.resolve(this.Vn[n]):this.lookupMutationBatch(e,n).next(e=>{if(e){var t=e.keys();return this.Vn[n]=t}return null})}getNextMutationBatchAfterBatchId(e,t){const r=t+1,n=IDBKeyRange.lowerBound([this.userId,r]);let i=null;return wE(e).X({index:"userMutationsIndex",range:n},(e,t,n)=>{t.userId===this.userId&&(U_(t.batchId>=r),i=R0(this.serializer,t)),n.done()}).next(()=>i)}getHighestUnacknowledgedBatchId(e){var t=IDBKeyRange.upperBound([this.userId,Number.POSITIVE_INFINITY]);let r=-1;return wE(e).X({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 wE(e).j("userMutationsIndex",t).next(e=>e.map(e=>R0(this.serializer,e)))}getAllMutationBatchesAffectingDocumentKey(a,o){const e=Vw(this.userId,o.path),t=IDBKeyRange.lowerBound(e),c=[];return bE(a).X({range:t},(e,t,n)=>{var[r,i,s]=e,i=Fw(i);if(r===this.userId&&o.path.isEqual(i))return wE(a).get(s).next(e=>{if(!e)throw F_();U_(e.userId===this.userId),c.push(R0(this.serializer,e))});n.done()}).next(()=>c)}getAllMutationBatchesAffectingDocumentKeys(t,e){let o=new gb(J_);const n=[];return e.forEach(a=>{var e=Vw(this.userId,a.path),e=IDBKeyRange.lowerBound(e),e=bE(t).X({range:e},(e,t,n)=>{var[r,i,s]=e,i=Fw(i);r===this.userId&&a.path.isEqual(i)?o=o.add(s):n.done()});n.push(e)}),_w.waitFor(n).next(()=>this.Dn(t,o))}getAllMutationBatchesAffectingQuery(e,t){const a=t.path,o=a.length+1,n=Vw(this.userId,a),r=IDBKeyRange.lowerBound(n);let c=new gb(J_);return bE(e).X({range:r},(e,t,n)=>{var[r,i,s]=e,i=Fw(i);r===this.userId&&a.isPrefixOf(i)?i.length===o&&(c=c.add(s)):n.done()}).next(()=>this.Dn(e,c))}Dn(t,e){const n=[],r=[];return e.forEach(e=>{r.push(wE(t).get(e).next(e=>{if(null===e)throw F_();U_(e.userId===this.userId),n.push(R0(this.serializer,e))}))}),_w.waitFor(r).next(()=>n)}removeMutationBatch(t,n){return mE(t.ht,this.userId,n).next(e=>(t.addOnCommittedListener(()=>{this.Cn(n.batchId)}),_w.forEach(e,e=>this.referenceDelegate.markPotentiallyOrphaned(t,e))))}Cn(e){delete this.Vn[e]}performConsistencyCheck(n){return this.checkEmpty(n).next(e=>{if(!e)return _w.resolve();var t=IDBKeyRange.lowerBound([this.userId]);const r=[];return bE(n).X({range:t},(e,t,n)=>{if(e[0]===this.userId){const t=Fw(e[1]);r.push(t)}else n.done()}).next(()=>{U_(0===r.length)})})}containsKey(e,t){return _E(e,this.userId,t)}xn(e){return IE(e).get(this.userId).next(e=>e||{userId:this.userId,lastAcknowledgedBatchId:-1,lastStreamToken:""})}}function _E(e,s,t){const n=Vw(s,t.path),a=n[1],r=IDBKeyRange.lowerBound(n);let o=!1;return bE(e).X({range:r,Y:!0},(e,t,n)=>{var[r,i]=e;r===s&&i===a&&(o=!0),n.done()}).next(()=>o)}function wE(e){return cb(e,"mutations")}function bE(e){return cb(e,"documentMutations")}function IE(e){return cb(e,"mutationQueues")}class TE{constructor(e){this.Nn=e}next(){return this.Nn+=2,this.Nn}static kn(){return new TE(0)}static Mn(){return new TE(-1)}}class EE{constructor(e,t){this.referenceDelegate=e,this.serializer=t}allocateTargetId(n){return this.$n(n).next(e=>{const t=new TE(e.highestTargetId);return e.highestTargetId=t.next(),this.On(n,e).next(()=>e.highestTargetId)})}getLastRemoteSnapshotVersion(e){return this.$n(e).next(e=>tw.fromTimestamp(new ew(e.lastRemoteSnapshotVersion.seconds,e.lastRemoteSnapshotVersion.nanoseconds)))}getHighestSequenceNumber(e){return this.$n(e).next(e=>e.highestListenSequenceNumber)}setTargetsMetadata(t,n,r){return this.$n(t).next(e=>(e.highestListenSequenceNumber=n,r&&(e.lastRemoteSnapshotVersion=r.toTimestamp()),n>e.highestListenSequenceNumber&&(e.highestListenSequenceNumber=n),this.On(t,e)))}addTargetData(t,n){return this.Fn(t,n).next(()=>this.$n(t).next(e=>(e.targetCount+=1,this.Bn(n,e),this.On(t,e))))}updateTargetData(e,t){return this.Fn(e,t)}removeTargetData(t,e){return this.removeMatchingKeysForTargetId(t,e.targetId).next(()=>CE(t).delete(e.targetId)).next(()=>this.$n(t)).next(e=>(U_(0<e.targetCount),--e.targetCount,this.On(t,e)))}removeTargets(r,i,s){let a=0;const o=[];return CE(r).X((e,t)=>{var n=D0(t);n.sequenceNumber<=i&&null===s.get(n.targetId)&&(a++,o.push(this.removeTargetData(r,n)))}).next(()=>_w.waitFor(o)).next(()=>a)}forEachTarget(e,r){return CE(e).X((e,t)=>{var n=D0(t);r(n)})}$n(e){return kE(e).get("targetGlobalKey").next(e=>(U_(null!==e),e))}On(e,t){return kE(e).put("targetGlobalKey",t)}Fn(e,t){return CE(e).put(P0(this.serializer,t))}Bn(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.$n(e).next(e=>e.targetCount)}getTargetData(e,i){var t=_I(i),t=IDBKeyRange.bound([t,Number.NEGATIVE_INFINITY],[t,Number.POSITIVE_INFINITY]);let s=null;return CE(e).X({range:t,index:"queryTargetsIndex"},(e,t,n)=>{var r=D0(t);wI(i,r.target)&&(s=r,n.done())}).next(()=>s)}addMatchingKeys(n,e,r){const i=[],s=SE(n);return e.forEach(e=>{var t=Mw(e.path);i.push(s.put({targetId:r,path:t})),i.push(this.referenceDelegate.addReference(n,r,e))}),_w.waitFor(i)}removeMatchingKeys(n,e,r){const i=SE(n);return _w.forEach(e,e=>{var t=Mw(e.path);return _w.waitFor([i.delete([r,t]),this.referenceDelegate.removeReference(n,r,e)])})}removeMatchingKeysForTargetId(e,t){const n=SE(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=SE(e);let i=YI();return r.X({range:n,Y:!0},(e,t,n)=>{var r=Fw(e[1]),r=new aw(r);i=i.add(r)}).next(()=>i)}containsKey(e,t){var n=Mw(t.path),n=IDBKeyRange.bound([n],[Z_(n)],!1,!0);let r=0;return SE(e).X({index:"documentTargetsIndex",Y:!0,range:n},([e],t,n)=>{0!==e&&(r++,n.done())}).next(()=>0<r)}le(e,t){return CE(e).get(t).next(e=>e?D0(e):null)}}function CE(e){return cb(e,"targets")}function kE(e){return cb(e,"targetGlobal")}function SE(e){return cb(e,"targetDocuments")}function AE([e,t],[n,r]){var i=J_(e,n);return 0===i?J_(t,r):i}class NE{constructor(e){this.Ln=e,this.buffer=new gb(AE),this.qn=0}Un(){return++this.qn}Kn(e){var t=[e,this.Un()];if(this.buffer.size<this.Ln)this.buffer=this.buffer.add(t);else{const e=this.buffer.last();AE(t,e)<0&&(this.buffer=this.buffer.delete(e).add(t))}}get maxValue(){return this.buffer.last()[0]}}class RE{constructor(e,t,n){this.garbageCollector=e,this.asyncQueue=t,this.localStore=n,this.Gn=null}start(){-1!==this.garbageCollector.params.cacheSizeCollectionThreshold&&this.Qn(6e4)}stop(){this.Gn&&(this.Gn.cancel(),this.Gn=null)}get started(){return null!==this.Gn}Qn(e){x_("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){Ew(e)?x_("LruGarbageCollector","Ignoring IndexedDB error during garbage collection: ",e):await yw(e)}await this.Qn(3e5)})}}class DE{constructor(e,t){this.jn=e,this.params=t}calculateTargetCount(e,t){return this.jn.zn(e).next(e=>Math.floor(t/100*e))}nthSequenceNumber(e,t){if(0===t)return _w.resolve(Dw.ct);const n=new NE(t);return this.jn.forEachTarget(e,e=>n.Kn(e.sequenceNumber)).next(()=>this.jn.Wn(e,e=>n.Kn(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?(x_("LruGarbageCollector","Garbage collection skipped; disabled"),_w.resolve(fE)):this.getCacheSize(t).next(e=>e<this.params.cacheSizeCollectionThreshold?(x_("LruGarbageCollector",`Garbage collection skipped; Cache size ${e} is lower than threshold ${this.params.cacheSizeCollectionThreshold}`),fE):this.Hn(t,n))}getCacheSize(e){return this.jn.getCacheSize(e)}Hn(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?(x_("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(),P_()<=m.DEBUG&&x_("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`),_w.resolve({didRun:!0,sequenceNumbersCollected:i,targetsRemoved:s,documentsRemoved:e})))}}class PE{constructor(e,t){this.db=e,this.garbageCollector=(e=this,t=t,new DE(e,t))}zn(e){const n=this.Jn(e);return this.db.getTargetCache().getTargetCount(e).next(t=>n.next(e=>t+e))}Jn(e){let t=0;return this.Wn(e,e=>{t++}).next(()=>t)}forEachTarget(e,t){return this.db.getTargetCache().forEachTarget(e,t)}Wn(e,n){return this.Yn(e,(e,t)=>n(t))}addReference(e,t,n){return xE(e,n)}removeReference(e,t,n){return xE(e,n)}removeTargets(e,t,n){return this.db.getTargetCache().removeTargets(e,t,n)}markPotentiallyOrphaned(e,t){return xE(e,t)}Xn(t,n){let r=!1;return IE(t).Z(e=>_E(t,e,n).next(e=>(e&&(r=!0),_w.resolve(!e)))).next(()=>r)}removeOrphanedDocuments(n,r){const i=this.db.getRemoteDocumentCache().newChangeBuffer(),s=[];let a=0;return this.Yn(n,(t,e)=>{if(e<=r){const r=this.Xn(n,t).next(e=>{if(!e)return a++,i.getEntry(n,t).next(()=>(i.removeEntry(t,tw.min()),SE(n).delete([0,Mw(t.path)])))});s.push(r)}}).next(()=>_w.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 xE(e,t)}Yn(e,r){const t=SE(e);let i,s=Dw.ct;return t.X({index:"documentTargetsIndex"},([e],{path:t,sequenceNumber:n})=>{0===e?(s!==Dw.ct&&r(new aw(Fw(i)),s),s=n,i=t):s=Dw.ct}).next(()=>{s!==Dw.ct&&r(new aw(Fw(i)),s)})}getCacheSize(e){return this.db.getRemoteDocumentCache().getSize(e)}}function xE(e,t){return SE(e).put((e=e.currentSequenceNumber,{targetId:0,path:Mw(t.path),sequenceNumber:e}))}class OE{constructor(){this.changes=new jI(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,Qb.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();var n=this.changes.get(t);return void 0!==n?_w.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 ME{constructor(e){this.serializer=e}setIndexManager(e){this.indexManager=e}addEntry(e,t,n){return VE(e).put(n)}removeEntry(e,n,t){return VE(e).delete(function(e){const t=n.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],S0(e),t[t.length-1]]}(t))}updateMetadata(t,n){return this.getMetadata(t).next(e=>(e.byteSize+=n,this.Zn(t,e)))}getEntry(e,n){let r=Qb.newInvalidDocument(n);return VE(e).X({index:"documentKeyIndex",range:IDBKeyRange.only(qE(n))},(e,t)=>{r=this.ts(n,t)}).next(()=>r)}es(e,n){let r={size:0,document:Qb.newInvalidDocument(n)};return VE(e).X({index:"documentKeyIndex",range:IDBKeyRange.only(qE(n))},(e,t)=>{r={document:this.ts(n,t),size:vE(t)}}).next(()=>r)}getEntries(e,t){let r=zI;return this.ns(e,t,(e,t)=>{var n=this.ts(e,t);r=r.insert(e,n)}).next(()=>r)}ss(e,t){let r=zI,i=new db(aw.comparator);return this.ns(e,t,(e,t)=>{var n=this.ts(e,t);r=r.insert(e,n),i=i.insert(e,vE(t))}).next(()=>({documents:r,rs:i}))}ns(e,t,i){if(t.isEmpty())return _w.resolve();let n=new gb(jE);t.forEach(e=>n=n.add(e));const r=IDBKeyRange.bound(qE(n.first()),qE(n.last())),s=n.getIterator();let a=s.getNext();return VE(e).X({index:"documentKeyIndex",range:r},(e,t,n)=>{for(var r=aw.fromSegments([...t.prefixPath,t.collectionGroup,t.documentId]);a&&jE(a,r)<0;)i(a,null),a=s.getNext();a&&a.isEqual(r)&&(i(a,t),a=s.hasNext()?s.getNext():null),a?n.G(qE(a)):n.done()}).next(()=>{for(;a;)i(a,null),a=s.hasNext()?s.getNext():null})}getDocumentsMatchingQuery(e,r,t,i){const n=r.path,s=[n.popLast().toArray(),n.lastSegment(),S0(t.readTime),t.documentKey.path.isEmpty()?"":t.documentKey.path.lastSegment()],a=[n.popLast().toArray(),n.lastSegment(),[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],""];return VE(e).j(IDBKeyRange.bound(s,a,!0)).next(e=>{let t=zI;for(const n of e){const e=this.ts(aw.fromSegments(n.prefixPath.concat(n.collectionGroup,n.documentId)),n);e.isFoundDocument()&&(VI(r,e)||i.has(e.key))&&(t=t.insert(e.key,e))}return t})}getAllFromCollectionGroup(e,t,n,i){let s=zI;var r=BE(t,n),a=BE(t,fw.max());return VE(e).X({index:"collectionGroupIndex",range:IDBKeyRange.bound(r,a,!0)},(e,t,n)=>{var r=this.ts(aw.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 FE(this,!!e&&e.trackRemovals)}getSize(e){return this.getMetadata(e).next(e=>e.byteSize)}getMetadata(e){return UE(e).get("remoteDocumentGlobalKey").next(e=>(U_(!!e),e))}Zn(e,t){return UE(e).put("remoteDocumentGlobalKey",t)}ts(e,t){if(t){const e=function(e,t){let n;if(t.document)n=p0(e.fe,t.document,!!t.hasCommittedMutations);else if(t.noDocument){const e=aw.fromSegments(t.noDocument.path),i=N0(t.noDocument.readTime);n=Qb.newNoDocument(e,i),t.hasCommittedMutations&&n.setHasCommittedMutations()}else{if(!t.unknownDocument)return F_();{const e=aw.fromSegments(t.unknownDocument.path),s=N0(t.unknownDocument.version);n=Qb.newUnknownDocument(e,s)}}return t.readTime&&n.setReadTime((t=t.readTime,r=new ew(t[0],t[1]),tw.fromTimestamp(r))),n;var r}(this.serializer,t);if(!e.isNoDocument()||!e.version.isEqual(tw.min()))return e}return Qb.newInvalidDocument(e)}}function LE(e){return new ME(e)}class FE extends OE{constructor(e,t){super(),this.os=e,this.trackRemovals=t,this.us=new jI(e=>e.toString(),(e,t)=>e.isEqual(t))}applyChanges(s){const a=[];let o=0,c=new gb((e,t)=>J_(e.canonicalString(),t.canonicalString()));return this.changes.forEach((e,t)=>{var n=this.us.get(e);if(a.push(this.os.removeEntry(s,e,n.readTime)),t.isValidDocument()){var r=k0(this.os.serializer,t);c=c.add(e.path.popLast());var i=vE(r);o+=i-n.size,a.push(this.os.addEntry(s,e,r))}else if(o-=n.size,this.trackRemovals){const o=k0(this.os.serializer,t.convertToNoDocument(tw.min()));a.push(this.os.addEntry(s,e,o))}}),c.forEach(e=>{a.push(this.os.indexManager.addToCollectionParentIndex(s,e))}),a.push(this.os.updateMetadata(s,o)),_w.waitFor(a)}getFromCache(e,t){return this.os.es(e,t).next(e=>(this.us.set(t,{size:e.size,readTime:e.document.readTime}),e.document))}getAllFromCache(e,t){return this.os.ss(e,t).next(({documents:n,rs:e})=>(e.forEach((e,t)=>{this.us.set(e,{size:t,readTime:n.get(e).readTime})}),n))}}function UE(e){return cb(e,"remoteDocumentGlobal")}function VE(e){return cb(e,"remoteDocumentsV14")}function qE(e){const t=e.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],t[t.length-1]]}function BE(e,t){const n=t.documentKey.path.toArray();return[e,S0(t.readTime),n.slice(0,n.length-2),0<n.length?n[n.length-1]:""]}function jE(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=J_(n[s],r[s]),i)return i;return i=J_(n.length,r.length),i||(i=J_(n[n.length-2],r[r.length-2]),i||J_(n[n.length-1],r[r.length-1]))}class zE{constructor(e,t){this.overlayedDocument=e,this.mutatedFields=t}}class $E{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&&yT(r.mutation,e,yb.empty(),ew.now()),e))}getDocuments(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.getLocalViewOfDocuments(t,e,YI()).next(()=>e))}getLocalViewOfDocuments(e,t,n=YI()){const r=GI();return this.populateOverlays(e,r,t).next(()=>this.computeViews(e,t,r,n).next(e=>{let n=KI();return e.forEach((e,t)=>{n=n.insert(e,t.overlayedDocument)}),n}))}getOverlayedDocuments(e,t){const n=GI();return this.populateOverlays(e,n,t).next(()=>this.computeViews(e,t,n,YI()))}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=zI;const a=GI(),o=GI();return t.forEach((e,t)=>{const n=r.get(t.key);i.has(t.key)&&(void 0===n||n.mutation instanceof bT)?s=s.insert(t.key,t):void 0!==n?(a.set(t.key,n.mutation.getFieldMask()),yT(n.mutation,t,n.mutation.getFieldMask(),ew.now())):a.set(t.key,yb.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 zE(t,null!==(n=a.get(e))&&void 0!==n?n:null))}),o))}recalculateAndSaveOverlays(s,a){const o=GI();let c=new db((e,t)=>e-t),l=YI();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)||yb.empty(),t=r.applyToLocalView(n,t),o.set(e,t),t=(c.get(r.batchId)||YI()).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=GI();r.forEach(e=>{var t;l.has(e)||(null!==(t=mT(a.get(e),o.get(e)))&&i.set(e,t),l=l.add(e))}),e.push(this.documentOverlayCache.saveOverlays(s,n,i))}return _w.waitFor(e)}).next(()=>o)}recalculateAndSaveOverlaysForDocumentKeys(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.recalculateAndSaveOverlays(t,e))}getDocumentsMatchingQuery(e,t,n){return r=t,aw.isDocumentKey(r.path)&&null===r.collectionGroup&&0===r.filters.length?this.getDocumentsMatchingDocumentQuery(e,t.path):DI(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,n):this.getDocumentsMatchingCollectionQuery(e,t,n);var r}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):_w.resolve(GI());let r=-1,i=n;return e.next(e=>_w.forEach(e,(t,e)=>(r<e.largestBatchId&&(r=e.largestBatchId),n.get(t)?_w.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,YI())).next(e=>({batchId:r,changes:WI(e)})))})}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new aw(t)).next(e=>{let t=KI();return e.isFoundDocument()&&(t=t.insert(e.key,e)),t})}getDocumentsMatchingCollectionGroupQuery(r,i,s){const a=i.collectionGroup;let o=KI();return this.indexManager.getCollectionParents(r,a).next(e=>_w.forEach(e,e=>{var t,n=(t=i,e=e.child(a),new CI(e,null,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,t.endAt));return this.getDocumentsMatchingCollectionQuery(r,n,s).next(e=>{e.forEach((e,t)=>{o=o.insert(e,t)})})}).next(()=>o))}getDocumentsMatchingCollectionQuery(t,s,n){let a;return this.documentOverlayCache.getOverlaysForCollection(t,s.path,n.largestBatchId).next(e=>(a=e,this.remoteDocumentCache.getDocumentsMatchingQuery(t,s,n,a))).next(r=>{a.forEach((e,t)=>{var n=t.getKey();null===r.get(n)&&(r=r.insert(n,Qb.newInvalidDocument(n)))});let i=KI();return r.forEach((e,t)=>{var n=a.get(e);void 0!==n&&yT(n.mutation,t,yb.empty(),ew.now()),VI(s,t)&&(i=i.insert(e,t))}),i})}}class KE{constructor(e){this.serializer=e,this.cs=new Map,this.hs=new Map}getBundleMetadata(e,t){return _w.resolve(this.cs.get(t))}saveBundleMetadata(e,t){return this.cs.set(t.id,{id:t.id,version:t.version,createTime:r0(t.createTime)}),_w.resolve()}getNamedQuery(e,t){return _w.resolve(this.hs.get(t))}saveNamedQuery(e,t){return this.hs.set(t.name,{name:(t=t).name,query:x0(t.bundledQuery),readTime:r0(t.readTime)}),_w.resolve()}}class WE{constructor(){this.overlays=new db(aw.comparator),this.ls=new Map}getOverlay(e,t){return _w.resolve(this.overlays.get(t))}getOverlays(e,t){const n=GI();return _w.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.we(n,r,t)}),_w.resolve()}removeOverlaysForBatchId(e,t,n){const r=this.ls.get(n);return void 0!==r&&(r.forEach(e=>this.overlays=this.overlays.remove(e)),this.ls.delete(n)),_w.resolve()}getOverlaysForCollection(e,t,n){const r=GI(),i=t.length+1,s=new aw(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 _w.resolve(r)}getOverlaysForCollectionGroup(t,e,n,r){let i=new db((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=GI(),i=i.insert(t.largestBatchId,e)),e.set(t.getKey(),t)}}const a=GI(),o=i.getIterator();for(;o.hasNext()&&(o.getNext().value.forEach((e,t)=>a.set(e,t)),!(a.size()>=r)););return _w.resolve(a)}we(e,t,n){var r=this.overlays.get(n.key);if(null!==r){const e=this.ls.get(r.largestBatchId).delete(n.key);this.ls.set(r.largestBatchId,e)}this.overlays=this.overlays.insert(n.key,new NT(t,n));let i=this.ls.get(t);void 0===i&&(i=YI(),this.ls.set(t,i)),this.ls.set(t,i.add(n.key))}}class GE{constructor(){this.fs=new gb(HE.ds),this.ws=new gb(HE._s)}isEmpty(){return this.fs.isEmpty()}addReference(e,t){var n=new HE(e,t);this.fs=this.fs.add(n),this.ws=this.ws.add(n)}gs(e,t){e.forEach(e=>this.addReference(e,t))}removeReference(e,t){this.ys(new HE(e,t))}ps(e,t){e.forEach(e=>this.removeReference(e,t))}Is(e){const t=new aw(new rw([])),n=new HE(t,e),r=new HE(t,e+1),i=[];return this.ws.forEachInRange([n,r],e=>{this.ys(e),i.push(e.key)}),i}Ts(){this.fs.forEach(e=>this.ys(e))}ys(e){this.fs=this.fs.delete(e),this.ws=this.ws.delete(e)}Es(e){var t=new aw(new rw([])),n=new HE(t,e),t=new HE(t,e+1);let r=YI();return this.ws.forEachInRange([n,t],e=>{r=r.add(e.key)}),r}containsKey(e){var t=new HE(e,0),t=this.fs.firstAfterOrEqual(t);return null!==t&&e.isEqual(t.key)}}class HE{constructor(e,t){this.key=e,this.As=t}static ds(e,t){return aw.comparator(e.key,t.key)||J_(e.As,t.As)}static _s(e,t){return J_(e.As,t.As)||aw.comparator(e.key,t.key)}}class QE{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.vs=1,this.Rs=new gb(HE.ds)}checkEmpty(e){return _w.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,n,r){var i=this.vs;this.vs++,0<this.mutationQueue.length&&this.mutationQueue[this.mutationQueue.length-1];var s=new ST(i,t,n,r);this.mutationQueue.push(s);for(const t of r)this.Rs=this.Rs.add(new HE(t.key,i)),this.indexManager.addToCollectionParentIndex(e,t.key.path.popLast());return _w.resolve(s)}lookupMutationBatch(e,t){return _w.resolve(this.Ps(t))}getNextMutationBatchAfterBatchId(e,t){var n=this.bs(t+1),n=n<0?0:n;return _w.resolve(this.mutationQueue.length>n?this.mutationQueue[n]:null)}getHighestUnacknowledgedBatchId(){return _w.resolve(0===this.mutationQueue.length?-1:this.vs-1)}getAllMutationBatches(e){return _w.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const n=new HE(t,0),r=new HE(t,Number.POSITIVE_INFINITY),i=[];return this.Rs.forEachInRange([n,r],e=>{var t=this.Ps(e.As);i.push(t)}),_w.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new gb(J_);return t.forEach(e=>{var t=new HE(e,0),n=new HE(e,Number.POSITIVE_INFINITY);this.Rs.forEachInRange([t,n],e=>{r=r.add(e.As)})}),_w.resolve(this.Vs(r))}getAllMutationBatchesAffectingQuery(e,t){const n=t.path,r=n.length+1;let i=n;aw.isDocumentKey(i)||(i=i.child(""));var s=new HE(new aw(i),0);let a=new gb(J_);return this.Rs.forEachWhile(e=>{var t=e.key.path;return!!n.isPrefixOf(t)&&(t.length===r&&(a=a.add(e.As)),!0)},s),_w.resolve(this.Vs(a))}Vs(e){const n=[];return e.forEach(e=>{var t=this.Ps(e);null!==t&&n.push(t)}),n}removeMutationBatch(n,r){U_(0===this.Ss(r.batchId,"removed")),this.mutationQueue.shift();let i=this.Rs;return _w.forEach(r.mutations,e=>{var t=new HE(e.key,r.batchId);return i=i.delete(t),this.referenceDelegate.markPotentiallyOrphaned(n,e.key)}).next(()=>{this.Rs=i})}Cn(e){}containsKey(e,t){var n=new HE(t,0),n=this.Rs.firstAfterOrEqual(n);return _w.resolve(t.isEqual(n&&n.key))}performConsistencyCheck(e){return this.mutationQueue.length,_w.resolve()}Ss(e,t){return this.bs(e)}bs(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}Ps(e){var t=this.bs(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class YE{constructor(e){this.Ds=e,this.docs=new db(aw.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.Ds(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 _w.resolve(n?n.document.mutableCopy():Qb.newInvalidDocument(t))}getEntries(e,t){let n=zI;return t.forEach(e=>{const t=this.docs.get(e);n=n.insert(e,t?t.document.mutableCopy():Qb.newInvalidDocument(e))}),_w.resolve(n)}getDocumentsMatchingQuery(e,t,n,r){let i=zI;const s=t.path,a=new aw(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||gw(pw(a),n)<=0||(r.has(a.key)||VI(t,a))&&(i=i.insert(a.key,a.mutableCopy()))}return _w.resolve(i)}getAllFromCollectionGroup(e,t,n,r){F_()}Cs(e,t){return _w.forEach(this.docs,e=>t(e))}newChangeBuffer(e){return new JE(this)}getSize(e){return _w.resolve(this.size)}}class JE extends OE{constructor(e){super(),this.os=e}applyChanges(n){const r=[];return this.changes.forEach((e,t)=>{t.isValidDocument()?r.push(this.os.addEntry(n,t)):this.os.removeEntry(e)}),_w.waitFor(r)}getFromCache(e,t){return this.os.getEntry(e,t)}getAllFromCache(e,t){return this.os.getEntries(e,t)}}class XE{constructor(e){this.persistence=e,this.xs=new jI(e=>_I(e),wI),this.lastRemoteSnapshotVersion=tw.min(),this.highestTargetId=0,this.Ns=0,this.ks=new GE,this.targetCount=0,this.Ms=TE.kn()}forEachTarget(e,n){return this.xs.forEach((e,t)=>n(t)),_w.resolve()}getLastRemoteSnapshotVersion(e){return _w.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return _w.resolve(this.Ns)}allocateTargetId(e){return this.highestTargetId=this.Ms.next(),_w.resolve(this.highestTargetId)}setTargetsMetadata(e,t,n){return n&&(this.lastRemoteSnapshotVersion=n),t>this.Ns&&(this.Ns=t),_w.resolve()}Fn(e){this.xs.set(e.target,e);var t=e.targetId;t>this.highestTargetId&&(this.Ms=new TE(t),this.highestTargetId=t),e.sequenceNumber>this.Ns&&(this.Ns=e.sequenceNumber)}addTargetData(e,t){return this.Fn(t),this.targetCount+=1,_w.resolve()}updateTargetData(e,t){return this.Fn(t),_w.resolve()}removeTargetData(e,t){return this.xs.delete(t.target),this.ks.Is(t.targetId),--this.targetCount,_w.resolve()}removeTargets(n,r,i){let s=0;const a=[];return this.xs.forEach((e,t)=>{t.sequenceNumber<=r&&null===i.get(t.targetId)&&(this.xs.delete(e),a.push(this.removeMatchingKeysForTargetId(n,t.targetId)),s++)}),_w.waitFor(a).next(()=>s)}getTargetCount(e){return _w.resolve(this.targetCount)}getTargetData(e,t){var n=this.xs.get(t)||null;return _w.resolve(n)}addMatchingKeys(e,t,n){return this.ks.gs(t,n),_w.resolve()}removeMatchingKeys(t,e,n){this.ks.ps(e,n);const r=this.persistence.referenceDelegate,i=[];return r&&e.forEach(e=>{i.push(r.markPotentiallyOrphaned(t,e))}),_w.waitFor(i)}removeMatchingKeysForTargetId(e,t){return this.ks.Is(t),_w.resolve()}getMatchingKeysForTargetId(e,t){var n=this.ks.Es(t);return _w.resolve(n)}containsKey(e,t){return _w.resolve(this.ks.containsKey(t))}}class ZE{constructor(e,t){this.$s={},this.overlays={},this.Os=new Dw(0),this.Fs=!1,this.Fs=!0,this.referenceDelegate=e(this),this.Bs=new XE(this),this.indexManager=new sE,this.remoteDocumentCache=(e=e=>this.referenceDelegate.Ls(e),new YE(e)),this.serializer=new C0(t),this.qs=new KE(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.Fs=!1,Promise.resolve()}get started(){return this.Fs}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new WE,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let n=this.$s[e.toKey()];return n||(n=new QE(t,this.referenceDelegate),this.$s[e.toKey()]=n),n}getTargetCache(){return this.Bs}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.qs}runTransaction(e,t,n){x_("MemoryPersistence","Starting transaction:",e);const r=new eC(this.Os.next());return this.referenceDelegate.Us(),n(r).next(e=>this.referenceDelegate.Ks(r).next(()=>e)).toPromise().then(e=>(r.raiseOnCommittedEvent(),e))}Gs(t,n){return _w.or(Object.values(this.$s).map(e=>()=>e.containsKey(t,n)))}}class eC extends vw{constructor(e){super(),this.currentSequenceNumber=e}}class tC{constructor(e){this.persistence=e,this.Qs=new GE,this.js=null}static zs(e){return new tC(e)}get Ws(){if(this.js)return this.js;throw F_()}addReference(e,t,n){return this.Qs.addReference(n,t),this.Ws.delete(n.toString()),_w.resolve()}removeReference(e,t,n){return this.Qs.removeReference(n,t),this.Ws.add(n.toString()),_w.resolve()}markPotentiallyOrphaned(e,t){return this.Ws.add(t.toString()),_w.resolve()}removeTarget(e,t){this.Qs.Is(t.targetId).forEach(e=>this.Ws.add(e.toString()));const n=this.persistence.getTargetCache();return n.getMatchingKeysForTargetId(e,t.targetId).next(e=>{e.forEach(e=>this.Ws.add(e.toString()))}).next(()=>n.removeTargetData(e,t))}Us(){this.js=new Set}Ks(n){const r=this.persistence.getRemoteDocumentCache().newChangeBuffer();return _w.forEach(this.Ws,e=>{const t=aw.fromPath(e);return this.Hs(n,t).next(e=>{e||r.removeEntry(t,tw.min())})}).next(()=>(this.js=null,r.apply(n)))}updateLimboDocument(e,t){return this.Hs(e,t).next(e=>{e?this.Ws.delete(t.toString()):this.Ws.add(t.toString())})}Ls(e){return 0}Hs(e,t){return _w.or([()=>_w.resolve(this.Qs.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Gs(e,t)])}}class nC{constructor(e){this.serializer=e}O(t,e,n,r){const i=new ww("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",Uw,{unique:!0}),s.createObjectStore("documentMutations"),rC(t),t.createObjectStore("remoteDocuments"));let a=_w.resolve();return n<3&&3<=r&&(0!==n&&((s=t).deleteObjectStore("targetDocuments"),s.deleteObjectStore("targets"),s.deleteObjectStore("targetGlobal"),rC(t)),a=a.next(()=>function(){const e=i.store("targetGlobal"),t={highestTargetId:0,highestListenSequenceNumber:0,lastRemoteSnapshotVersion:tw.min().toTimestamp(),targetCount:0};return e.put("targetGlobalKey",t)}())),n<4&&4<=r&&(0!==n&&(a=a.next(()=>function(r,i){return i.store("mutations").j().next(e=>{r.deleteObjectStore("mutations"),r.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",Uw,{unique:!0});const t=i.store("mutations"),n=e.map(e=>t.put(e));return _w.waitFor(n)})}(t,i))),a=a.next(()=>{t.createObjectStore("clientMetadata",{keyPath:"clientId"})})),n<5&&5<=r&&(a=a.next(()=>this.Ys(i))),n<6&&6<=r&&(a=a.next(()=>(t.createObjectStore("remoteDocumentGlobal"),this.Xs(i)))),n<7&&7<=r&&(a=a.next(()=>this.Zs(i))),n<8&&8<=r&&(a=a.next(()=>this.ti(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.ei(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(){const e=t.createObjectStore("documentOverlays",{keyPath:Zw});e.createIndex("collectionPathOverlayIndex",eb,{unique:!1}),e.createIndex("collectionGroupOverlayIndex",tb,{unique:!1})}()})),n<13&&13<=r&&(a=a.next(()=>function(){const e=t.createObjectStore("remoteDocumentsV14",{keyPath:jw});e.createIndex("documentKeyIndex",zw),e.createIndex("collectionGroupIndex",$w)}()).next(()=>this.ni(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:Qw}).createIndex("sequenceNumberIndex",Yw,{unique:!1}),e.createObjectStore("indexEntries",{keyPath:Jw}).createIndex("documentKeyIndex",Xw,{unique:!1})}(t))),a}Xs(t){let n=0;return t.store("remoteDocuments").X((e,t)=>{n+=vE(t)}).next(()=>{var e={byteSize:n};return t.store("remoteDocumentGlobal").put("remoteDocumentGlobalKey",e)})}Ys(r){const e=r.store("mutationQueues"),t=r.store("mutations");return e.j().next(e=>_w.forEach(e,n=>{var e=IDBKeyRange.bound([n.userId,-1],[n.userId,n.lastAcknowledgedBatchId]);return t.j("userMutationsIndex",e).next(e=>_w.forEach(e,e=>{U_(e.userId===n.userId);var t=R0(this.serializer,e);return mE(r,n.userId,t).next(()=>{})}))}))}Zs(e){const a=e.store("targetDocuments"),t=e.store("remoteDocuments");return e.store("targetGlobal").get("targetGlobalKey").next(i=>{const s=[];return t.X((e,t)=>{const n=new rw(e),r=[0,Mw(n)];s.push(a.get(r).next(e=>e?_w.resolve():(e=>a.put({targetId:0,path:Mw(e),sequenceNumber:i.highestListenSequenceNumber}))(n)))}).next(()=>_w.waitFor(s))})}ti(e,t){e.createObjectStore("collectionParents",{keyPath:Hw});const n=t.store("collectionParents"),r=new aE,i=e=>{if(r.add(e)){const t=e.lastSegment(),r=e.popLast();return n.put({collectionId:t,parent:Mw(r)})}};return t.store("remoteDocuments").X({Y:!0},(e,t)=>{const n=new rw(e);return i(n.popLast())}).next(()=>t.store("documentMutations").X({Y:!0},([,e],t)=>{const n=Fw(e);return i(n.popLast())}))}ei(e){const r=e.store("targets");return r.X((e,t)=>{var n=D0(t),n=P0(this.serializer,n);return r.put(n)})}ni(e,s){const t=s.store("remoteDocuments"),a=[];return t.X((e,t)=>{const n=s.store("remoteDocumentsV14"),r=((i=t).document?new aw(rw.fromString(i.document.name).popFirst(5)):i.noDocument?aw.fromSegments(i.noDocument.path):i.unknownDocument?aw.fromSegments(i.unknownDocument.path):F_()).path.toArray();var 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};a.push(n.put(i))}).next(()=>_w.waitFor(a))}si(e,s){const t=s.store("mutations"),a=LE(this.serializer),o=new ZE(tC.zs,this.serializer.fe);return t.j().next(e=>{const r=new Map;return e.forEach(e=>{var t;let n=null!==(t=r.get(e.userId))&&void 0!==t?t:YI();R0(this.serializer,e).keys().forEach(e=>n=n.add(e)),r.set(e.userId,n)}),_w.forEach(r,(e,t)=>{var n=new N_(t),r=q0.de(this.serializer,n),i=o.getIndexManager(n),n=yE.de(n,this.serializer,i,o.referenceDelegate);return new $E(a,n,r,i).recalculateAndSaveOverlaysForDocumentKeys(new ob(s,Dw.ct),e).next()})})}}function rC(e){e.createObjectStore("targetDocuments",{keyPath:Ww}).createIndex("documentTargetsIndex",Gw,{unique:!0}),e.createObjectStore("targets",{keyPath:"targetId"}).createIndex("queryTargetsIndex",Kw,{unique:!0}),e.createObjectStore("targetGlobal")}const iC="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 sC{constructor(e,t,n,r,i,s,a,o,c,l,u=15){if(this.allowTabSynchronization=e,this.persistenceKey=t,this.clientId=n,this.ii=i,this.window=s,this.document=a,this.ri=c,this.oi=l,this.ui=u,this.Os=null,this.Fs=!1,this.isPrimary=!1,this.networkEnabled=!0,this.ci=null,this.inForeground=!1,this.ai=null,this.hi=null,this.li=Number.NEGATIVE_INFINITY,this.fi=e=>Promise.resolve(),!sC.D())throw new q_(V_.UNIMPLEMENTED,"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.");this.referenceDelegate=new PE(this,r),this.di=t+"main",this.serializer=new C0(o),this.wi=new bw(this.di,this.ui,new nC(this.serializer)),this.Bs=new EE(this.referenceDelegate,this.serializer),this.remoteDocumentCache=LE(this.serializer),this.qs=new F0,this.window&&this.window.localStorage?this._i=this.window.localStorage:(this._i=null,!1===l&&O_("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.mi().then(()=>{if(!this.isPrimary&&!this.allowTabSynchronization)throw new q_(V_.FAILED_PRECONDITION,iC);return this.gi(),this.yi(),this.pi(),this.runTransaction("getHighestListenSequenceNumber","readonly",e=>this.Bs.getHighestSequenceNumber(e))}).then(e=>{this.Os=new Dw(e,this.ri)}).then(()=>{this.Fs=!0}).catch(e=>(this.wi&&this.wi.close(),Promise.reject(e)))}Ii(t){return this.fi=async e=>{if(this.started)return t(e)},t(this.isPrimary)}setDatabaseDeletedListener(t){this.wi.B(async e=>{null===e.newVersion&&await t()})}setNetworkEnabled(e){this.networkEnabled!==e&&(this.networkEnabled=e,this.ii.enqueueAndForget(async()=>{this.started&&await this.mi()}))}mi(){return this.runTransaction("updateClientMetadataAndTryBecomePrimary","readwrite",t=>oC(t).put({clientId:this.clientId,updateTimeMs:Date.now(),networkEnabled:this.networkEnabled,inForeground:this.inForeground}).next(()=>{if(this.isPrimary)return this.Ti(t).next(e=>{e||(this.isPrimary=!1,this.ii.enqueueRetryable(()=>this.fi(!1)))})}).next(()=>this.Ei(t)).next(e=>this.isPrimary&&!e?this.Ai(t).next(()=>!1):!!e&&this.vi(t).next(()=>!0))).catch(e=>{if(Ew(e))return x_("IndexedDbPersistence","Failed to extend owner lease: ",e),this.isPrimary;if(!this.allowTabSynchronization)throw e;return x_("IndexedDbPersistence","Releasing owner lease after error during lease refresh",e),!1}).then(e=>{this.isPrimary!==e&&this.ii.enqueueRetryable(()=>this.fi(e)),this.isPrimary=e})}Ti(e){return aC(e).get("owner").next(e=>_w.resolve(this.Ri(e)))}Pi(e){return oC(e).delete(this.clientId)}async bi(){if(this.isPrimary&&!this.Vi(this.li,18e5)){this.li=Date.now();var e=await this.runTransaction("maybeGarbageCollectMultiClientState","readwrite-primary",e=>{const r=cb(e,"clientMetadata");return r.j().next(e=>{const t=this.Si(e,18e5),n=e.filter(e=>-1===t.indexOf(e));return _w.forEach(n,e=>r.delete(e.clientId)).next(()=>n)})}).catch(()=>[]);if(this._i)for(const t of e)this._i.removeItem(this.Di(t.clientId))}}pi(){this.hi=this.ii.enqueueAfterDelay("client_metadata_refresh",4e3,()=>this.mi().then(()=>this.bi()).then(()=>this.pi()))}Ri(e){return!!e&&e.ownerId===this.clientId}Ei(t){return this.oi?_w.resolve(!0):aC(t).get("owner").next(e=>{if(null!==e&&this.Vi(e.leaseTimestampMs,5e3)&&!this.Ci(e.ownerId)){if(this.Ri(e)&&this.networkEnabled)return!0;if(!this.Ri(e)){if(!e.allowTabSynchronization)throw new q_(V_.FAILED_PRECONDITION,iC);return!1}}return!(!this.networkEnabled||!this.inForeground)||oC(t).j().next(e=>void 0===this.Si(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&&x_("IndexedDbPersistence",`Client ${e?"is":"is not"} eligible for a primary lease.`),e))}async shutdown(){this.Fs=!1,this.xi(),this.hi&&(this.hi.cancel(),this.hi=null),this.Ni(),this.ki(),await this.wi.runTransaction("shutdown","readwrite",["owner","clientMetadata"],e=>{const t=new ob(e,Dw.ct);return this.Ai(t).next(()=>this.Pi(t))}),this.wi.close(),this.Mi()}Si(e,t){return e.filter(e=>this.Vi(e.updateTimeMs,t)&&!this.Ci(e.clientId))}$i(){return this.runTransaction("getActiveClients","readonly",e=>oC(e).j().next(e=>this.Si(e,18e5).map(e=>e.clientId)))}get started(){return this.Fs}getMutationQueue(e,t){return yE.de(e,this.serializer,t,this.referenceDelegate)}getTargetCache(){return this.Bs}getRemoteDocumentCache(){return this.remoteDocumentCache}getIndexManager(e){return new cE(e,this.serializer.fe.databaseId)}getDocumentOverlayCache(e){return q0.de(this.serializer,e)}getBundleCache(){return this.qs}runTransaction(t,n,r){x_("IndexedDbPersistence","Starting transaction:",t);var e,i="readonly"===n?"readonly":"readwrite",e=15===(e=this.ui)?ab:14===e?sb:13===e?ib:12===e?rb:11===e?nb:void F_();let s;return this.wi.runTransaction(t,i,e,e=>(s=new ob(e,this.Os?this.Os.next():Dw.ct),"readwrite-primary"===n?this.Ti(s).next(e=>!!e||this.Ei(s)).next(e=>{if(!e)throw O_(`Failed to obtain primary lease for action '${t}'.`),this.isPrimary=!1,this.ii.enqueueRetryable(()=>this.fi(!1)),new q_(V_.FAILED_PRECONDITION,mw);return r(s)}).next(e=>this.vi(s).next(()=>e)):this.Oi(s).next(()=>r(s)))).then(e=>(s.raiseOnCommittedEvent(),e))}Oi(e){return aC(e).get("owner").next(e=>{if(null!==e&&this.Vi(e.leaseTimestampMs,5e3)&&!this.Ci(e.ownerId)&&!this.Ri(e)&&!(this.oi||this.allowTabSynchronization&&e.allowTabSynchronization))throw new q_(V_.FAILED_PRECONDITION,iC)})}vi(e){var t={ownerId:this.clientId,allowTabSynchronization:this.allowTabSynchronization,leaseTimestampMs:Date.now()};return aC(e).put("owner",t)}static D(){return bw.D()}Ai(e){const t=aC(e);return t.get("owner").next(e=>this.Ri(e)?(x_("IndexedDbPersistence","Releasing primary lease."),t.delete("owner")):_w.resolve())}Vi(e,t){var n=Date.now();return!(e<n-t||n<e&&(O_(`Detected an update time that is in the future: ${e} > ${n}`),1))}gi(){null!==this.document&&"function"==typeof this.document.addEventListener&&(this.ai=()=>{this.ii.enqueueAndForget(()=>(this.inForeground="visible"===this.document.visibilityState,this.mi()))},this.document.addEventListener("visibilitychange",this.ai),this.inForeground="visible"===this.document.visibilityState)}Ni(){this.ai&&(this.document.removeEventListener("visibilitychange",this.ai),this.ai=null)}yi(){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]/;I()||!navigator.userAgent.includes("Safari")||navigator.userAgent.includes("Chrome")||!navigator.appVersion.match(e)&&!navigator.userAgent.match(e)||this.ii.enterRestrictedMode(!0),this.ii.enqueueAndForget(()=>this.shutdown())},this.window.addEventListener("pagehide",this.ci))}ki(){this.ci&&(this.window.removeEventListener("pagehide",this.ci),this.ci=null)}Ci(e){var t;try{var n=null!==(null===(t=this._i)||void 0===t?void 0:t.getItem(this.Di(e)));return x_("IndexedDbPersistence",`Client '${e}' ${n?"is":"is not"} zombied in LocalStorage`),n}catch(e){return O_("IndexedDbPersistence","Failed to get zombied client id.",e),!1}}xi(){if(this._i)try{this._i.setItem(this.Di(this.clientId),String(Date.now()))}catch(e){O_("Failed to set zombie client id.",e)}}Mi(){if(this._i)try{this._i.removeItem(this.Di(this.clientId))}catch(e){}}Di(e){return`firestore_zombie_${this.persistenceKey}_${e}`}}function aC(e){return cb(e,"owner")}function oC(e){return cb(e,"clientMetadata")}function cC(e,t){let n=e.projectId;return e.isDefaultDatabase||(n+="."+e.database),"firestore/"+t+"/"+n+"/"}class lC{constructor(e,t,n,r){this.targetId=e,this.fromCache=t,this.Fi=n,this.Bi=r}static Li(e,t){let n=YI(),r=YI();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 lC(e,t.fromCache,n,r)}}class uC{constructor(){this.qi=!1}initialize(e,t){this.Ui=e,this.indexManager=t,this.qi=!0}getDocumentsMatchingQuery(t,n,r,i){return this.Ki(t,n).next(e=>e||this.Gi(t,n,i,r)).next(e=>e||this.Qi(t,n))}Ki(i,s){if(AI(s))return _w.resolve(null);let t=xI(s);return this.indexManager.getIndexType(i,t).next(e=>0===e?null:(null!==s.limit&&1===e&&(s=MI(s,null,"F"),t=xI(s)),this.indexManager.getDocumentsMatchingTarget(i,t).next(e=>{const r=YI(...e);return this.Ui.getDocuments(i,r).next(n=>this.indexManager.getMinOffset(i,t).next(e=>{var t=this.ji(s,n);return this.zi(s,t,r,e.readTime)?this.Ki(i,MI(s,null,"F")):this.Wi(i,t,s,e)}))})))}Gi(n,r,i,s){return AI(r)||s.isEqual(tw.min())?this.Qi(n,r):this.Ui.getDocuments(n,i).next(e=>{var t=this.ji(r,e);return this.zi(r,t,i,s)?this.Qi(n,r):(P_()<=m.DEBUG&&x_("QueryEngine","Re-using previous result from %s to execute query: %s",s.toString(),UI(r)),this.Wi(n,t,r,dw(s,-1)))})}ji(n,e){let r=new gb(BI(n));return e.forEach((e,t)=>{VI(n,t)&&(r=r.add(t))}),r}zi(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))}Qi(e,t){return P_()<=m.DEBUG&&x_("QueryEngine","Using full collection scan to execute query:",UI(t)),this.Ui.getDocumentsMatchingQuery(e,t,fw.min())}Wi(e,n,t,r){return this.Ui.getDocumentsMatchingQuery(e,t,r).next(t=>(n.forEach(e=>{t=t.insert(e.key,e)}),t))}}class hC{constructor(e,t,n,r){this.persistence=e,this.Hi=t,this.serializer=r,this.Ji=new db(J_),this.Yi=new jI(e=>_I(e),wI),this.Xi=new Map,this.Zi=e.getRemoteDocumentCache(),this.Bs=e.getTargetCache(),this.qs=e.getBundleCache(),this.tr(n)}tr(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new $E(this.Zi,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.Zi.setIndexManager(this.indexManager),this.Hi.initialize(this.localDocuments,this.indexManager)}collectGarbage(t){return this.persistence.runTransaction("Collect garbage","readwrite-primary",e=>t.collect(e,this.Ji))}}function dC(e,t,n,r){return new hC(e,t,n,r)}async function pC(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.tr(t),a.mutationQueue.getAllMutationBatches(i))).next(e=>{const t=[],n=[];let r=YI();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=>({er:e,removedBatchIds:t,addedBatchIds:n}))})})}function fC(e){const t=e;return t.persistence.runTransaction("Get last remote snapshot version","readonly",e=>t.Bs.getLastRemoteSnapshotVersion(e))}function gC(e,l){const u=e,h=l.snapshotVersion;let d=u.Ji;return u.persistence.runTransaction("Apply remote event","readwrite-primary",o=>{const e=u.Zi.newChangeBuffer({trackRemovals:!0});d=u.Ji;const c=[];l.targetChanges.forEach((t,n)=>{const r=d.get(n);if(r){c.push(u.Bs.removeMatchingKeys(o,t.removedDocuments,n).next(()=>u.Bs.addMatchingKeys(o,t.addedDocuments,n)));let e=r.withSequenceNumber(o.currentSequenceNumber);var i,s,a;null!==l.targetMismatches.get(n)?e=e.withResumeToken(wb.EMPTY_BYTE_STRING,tw.min()).withLastLimboFreeSnapshotVersion(tw.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.Bs.updateTargetData(o,e))}});let t=zI,n=YI();if(l.documentUpdates.forEach(e=>{l.resolvedLimboDocuments.has(e)&&c.push(u.persistence.referenceDelegate.updateLimboDocument(o,e))}),c.push(mC(o,e,l.documentUpdates).next(e=>{t=e.nr,n=e.sr})),!h.isEqual(tw.min())){const l=u.Bs.getLastRemoteSnapshotVersion(o).next(e=>u.Bs.setTargetsMetadata(o,o.currentSequenceNumber,h));c.push(l)}return _w.waitFor(c).next(()=>e.apply(o)).next(()=>u.localDocuments.getLocalViewOfDocuments(o,t,n)).next(()=>t)}).then(e=>(u.Ji=d,e))}function mC(e,s,t){let n=YI(),a=YI();return t.forEach(e=>n=n.add(e)),s.getEntries(e,n).next(r=>{let i=zI;return t.forEach((e,t)=>{const n=r.get(e);t.isFoundDocument()!==n.isFoundDocument()&&(a=a.add(e)),t.isNoDocument()&&t.version.isEqual(tw.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)):x_("LocalStore","Ignoring outdated watch update for ",e,". Current version:",n.version," Watch version:",t.version)}),{nr:i,sr:a}})}function vC(e,r){const i=e;return i.persistence.runTransaction("Allocate target","readwrite",t=>{let n;return i.Bs.getTargetData(t,r).next(e=>e?(n=e,_w.resolve(n)):i.Bs.allocateTargetId(t).next(e=>(n=new E0(r,e,"TargetPurposeListen",t.currentSequenceNumber),i.Bs.addTargetData(t,n).next(()=>n))))}).then(e=>{var t=i.Ji.get(e.targetId);return(null===t||0<e.snapshotVersion.compareTo(t.snapshotVersion))&&(i.Ji=i.Ji.insert(e.targetId,e),i.Yi.set(r,e.targetId)),e})}async function yC(e,t,n){const r=e,i=r.Ji.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(!Ew(e))throw e;x_("LocalStore",`Failed to update sequence numbers for target ${t}: ${e}`)}r.Ji=r.Ji.remove(t),r.Yi.delete(i.target)}function _C(e,n,r){const i=e;let s=tw.min(),a=YI();return i.persistence.runTransaction("Execute query","readonly",t=>function(e,t,n){const r=e,i=r.Yi.get(n);return void 0!==i?_w.resolve(r.Ji.get(i)):r.Bs.getTargetData(t,n)}(i,t,xI(n)).next(e=>{if(e)return s=e.lastLimboFreeSnapshotVersion,i.Bs.getMatchingKeysForTargetId(t,e.targetId).next(e=>{a=e})}).next(()=>i.Hi.getDocumentsMatchingQuery(t,n,r?s:tw.min(),r?a:YI())).next(e=>(IC(i,qI(n),e),{documents:e,ir:a})))}function wC(e,t){const n=e,r=n.Bs,i=n.Ji.get(t);return i?Promise.resolve(i.target):n.persistence.runTransaction("Get target data","readonly",e=>r.le(e,t).next(e=>e?e.target:null))}function bC(e,t){const n=e,r=n.Xi.get(t)||tw.min();return n.persistence.runTransaction("Get new document changes","readonly",e=>n.Zi.getAllFromCollectionGroup(e,t,dw(r,-1),Number.MAX_SAFE_INTEGER)).then(e=>(IC(n,t,e),e))}function IC(e,t,n){let r=e.Xi.get(t)||tw.min();n.forEach((e,t)=>{0<t.readTime.compareTo(r)&&(r=t.readTime)}),e.Xi.set(t,r)}function TC(e,t){return`firestore_clients_${e}_${t}`}function EC(e,t,n){let r=`firestore_mutations_${e}_${n}`;return t.isAuthenticated()&&(r+=`_${t.uid}`),r}function CC(e,t){return`firestore_targets_${e}_${t}`}class kC{constructor(e,t,n,r){this.user=e,this.batchId=t,this.state=n,this.error=r}static ar(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 q_(r.error.code,r.error.message))),s?new kC(e,t,r.state,i):(O_("SharedClientState",`Failed to parse mutation state for ID '${t}': ${n}`),null)}hr(){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 SC{constructor(e,t,n){this.targetId=e,this.state=t,this.error=n}static ar(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 q_(n.error.code,n.error.message))),i?new SC(e,n.state,r):(O_("SharedClientState",`Failed to parse target state for ID '${e}': ${t}`),null)}hr(){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 AC{constructor(e,t){this.clientId=e,this.activeTargetIds=t}static ar(e,t){var n=JSON.parse(t);let r="object"==typeof n&&n.activeTargetIds instanceof Array,i=JI;for(let s=0;r&&s<n.activeTargetIds.length;++s)r=Ow(n.activeTargetIds[s]),i=i.add(n.activeTargetIds[s]);return r?new AC(e,i):(O_("SharedClientState",`Failed to parse client data for instance '${e}': ${t}`),null)}}class NC{constructor(e,t){this.clientId=e,this.onlineState=t}static ar(e){var t=JSON.parse(e);return"object"==typeof t&&-1!==["Unknown","Online","Offline"].indexOf(t.onlineState)&&"string"==typeof t.clientId?new NC(t.clientId,t.onlineState):(O_("SharedClientState",`Failed to parse online state: ${e}`),null)}}class RC{constructor(){this.activeTargetIds=JI}lr(e){this.activeTargetIds=this.activeTargetIds.add(e)}dr(e){this.activeTargetIds=this.activeTargetIds.delete(e)}hr(){var e={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(e)}}class DC{constructor(e,t,n,r,i){this.window=e,this.ii=t,this.persistenceKey=n,this.wr=r,this.syncEngine=null,this.onlineStateHandler=null,this.sequenceNumberHandler=null,this._r=this.mr.bind(this),this.gr=new db(J_),this.started=!1,this.yr=[];var s=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");this.storage=this.window.localStorage,this.currentUser=i,this.pr=TC(this.persistenceKey,this.wr),this.Ir=`firestore_sequence_number_${this.persistenceKey}`,this.gr=this.gr.insert(this.wr,new RC),this.Tr=new RegExp(`^firestore_clients_${s}_([^_]*)$`),this.Er=new RegExp(`^firestore_mutations_${s}_(\\d+)(?:_(.*))?$`),this.Ar=new RegExp(`^firestore_targets_${s}_(\\d+)$`),this.vr=`firestore_online_state_${this.persistenceKey}`,this.Rr=`firestore_bundle_loaded_v2_${this.persistenceKey}`,this.window.addEventListener("storage",this._r)}static D(e){return!(!e||!e.localStorage)}async start(){const e=await this.syncEngine.$i();for(const n of e)if(n!==this.wr){const e=this.getItem(TC(this.persistenceKey,n));var t;!e||(t=AC.ar(n,e))&&(this.gr=this.gr.insert(t.clientId,t))}this.Pr();const n=this.storage.getItem(this.vr);if(n){const e=this.br(n);e&&this.Vr(e)}for(const e of this.yr)this.mr(e);this.yr=[],this.window.addEventListener("pagehide",()=>this.shutdown()),this.started=!0}writeSequenceNumber(e){this.setItem(this.Ir,JSON.stringify(e))}getAllActiveQueryTargets(){return this.Sr(this.gr)}isActiveQueryTarget(n){let r=!1;return this.gr.forEach((e,t)=>{t.activeTargetIds.has(n)&&(r=!0)}),r}addPendingMutation(e){this.Dr(e,"pending")}updateMutationState(e,t,n){this.Dr(e,t,n),this.Cr(e)}addLocalQueryTarget(e){let t="not-current";var n;return this.isActiveQueryTarget(e)&&(!(n=this.storage.getItem(CC(this.persistenceKey,e)))||(n=SC.ar(e,n))&&(t=n.state)),this.Nr.lr(e),this.Pr(),t}removeLocalQueryTarget(e){this.Nr.dr(e),this.Pr()}isLocalQueryTarget(e){return this.Nr.activeTargetIds.has(e)}clearQueryState(e){this.removeItem(CC(this.persistenceKey,e))}updateQueryState(e,t,n){this.kr(e,t,n)}handleUserChange(e,t,n){t.forEach(e=>{this.Cr(e)}),this.currentUser=e,n.forEach(e=>{this.addPendingMutation(e)})}setOnlineState(e){this.Mr(e)}notifyBundleLoaded(e){this.$r(e)}shutdown(){this.started&&(this.window.removeEventListener("storage",this._r),this.removeItem(this.pr),this.started=!1)}getItem(e){var t=this.storage.getItem(e);return x_("SharedClientState","READ",e,t),t}setItem(e,t){x_("SharedClientState","SET",e,t),this.storage.setItem(e,t)}removeItem(e){x_("SharedClientState","REMOVE",e),this.storage.removeItem(e)}mr(e){const i=e;i.storageArea===this.storage&&(x_("SharedClientState","EVENT",i.key,i.newValue),i.key!==this.pr?this.ii.enqueueRetryable(async()=>{if(this.started){if(null!==i.key)if(this.Tr.test(i.key)){if(null==i.newValue){var e=this.Or(i.key);return this.Fr(e,null)}e=this.Br(i.key,i.newValue);if(e)return this.Fr(e.clientId,e)}else if(this.Er.test(i.key)){if(null!==i.newValue){var t=this.Lr(i.key,i.newValue);if(t)return this.qr(t)}}else if(this.Ar.test(i.key)){if(null!==i.newValue){t=this.Ur(i.key,i.newValue);if(t)return this.Kr(t)}}else if(i.key===this.vr){if(null!==i.newValue){var n=this.br(i.newValue);if(n)return this.Vr(n)}}else if(i.key===this.Ir){n=function(e){let t=Dw.ct;if(null!=e)try{var n=JSON.parse(e);U_("number"==typeof n),t=n}catch(e){O_("SharedClientState","Failed to read sequence number from WebStorage",e)}return t}(i.newValue);n!==Dw.ct&&this.sequenceNumberHandler(n)}else if(i.key===this.Rr){const r=this.Gr(i.newValue);await Promise.all(r.map(e=>this.syncEngine.Qr(e)))}}else this.yr.push(i)}):O_("Received WebStorage notification for local change. Another client might have garbage-collected our state"))}get Nr(){return this.gr.get(this.wr)}Pr(){this.setItem(this.pr,this.Nr.hr())}Dr(e,t,n){const r=new kC(this.currentUser,e,t,n),i=EC(this.persistenceKey,this.currentUser,e);this.setItem(i,r.hr())}Cr(e){var t=EC(this.persistenceKey,this.currentUser,e);this.removeItem(t)}Mr(e){var t={clientId:this.wr,onlineState:e};this.storage.setItem(this.vr,JSON.stringify(t))}kr(e,t,n){const r=CC(this.persistenceKey,e),i=new SC(e,t,n);this.setItem(r,i.hr())}$r(e){var t=JSON.stringify(Array.from(e));this.setItem(this.Rr,t)}Or(e){var t=this.Tr.exec(e);return t?t[1]:null}Br(e,t){var n=this.Or(e);return AC.ar(n,t)}Lr(e,t){var n=this.Er.exec(e),r=Number(n[1]),n=void 0!==n[2]?n[2]:null;return kC.ar(new N_(n),r,t)}Ur(e,t){var n=this.Ar.exec(e),n=Number(n[1]);return SC.ar(n,t)}br(e){return NC.ar(e)}Gr(e){return JSON.parse(e)}async qr(e){if(e.user.uid===this.currentUser.uid)return this.syncEngine.jr(e.batchId,e.state,e.error);x_("SharedClientState",`Ignoring mutation for non-active user ${e.user.uid}`)}Kr(e){return this.syncEngine.zr(e.targetId,e.state,e.error)}Fr(e,t){const n=t?this.gr.insert(e,t):this.gr.remove(e),r=this.Sr(this.gr),i=this.Sr(n),s=[],a=[];return i.forEach(e=>{r.has(e)||s.push(e)}),r.forEach(e=>{i.has(e)||a.push(e)}),this.syncEngine.Wr(s,a).then(()=>{this.gr=n})}Vr(e){this.gr.get(e.clientId)&&this.onlineStateHandler(e.onlineState)}Sr(e){let n=JI;return e.forEach((e,t)=>{n=n.unionWith(t.activeTargetIds)}),n}}class PC{constructor(){this.Hr=new RC,this.Jr={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,n){}addLocalQueryTarget(e){return this.Hr.lr(e),this.Jr[e]||"not-current"}updateQueryState(e,t,n){this.Jr[e]=t}removeLocalQueryTarget(e){this.Hr.dr(e)}isLocalQueryTarget(e){return this.Hr.activeTargetIds.has(e)}clearQueryState(e){delete this.Jr[e]}getAllActiveQueryTargets(){return this.Hr.activeTargetIds}isActiveQueryTarget(e){return this.Hr.activeTargetIds.has(e)}start(){return this.Hr=new RC,Promise.resolve()}handleUserChange(e,t,n){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class xC{Yr(e){}shutdown(){}}class OC{constructor(){this.Xr=()=>this.Zr(),this.eo=()=>this.no(),this.so=[],this.io()}Yr(e){this.so.push(e)}shutdown(){window.removeEventListener("online",this.Xr),window.removeEventListener("offline",this.eo)}io(){window.addEventListener("online",this.Xr),window.addEventListener("offline",this.eo)}Zr(){x_("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.so)e(0)}no(){x_("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const e of this.so)e(1)}static D(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}let MC=null;function LC(){return null===MC?MC=268435456+Math.round(2147483648*Math.random()):MC++,"0x"+MC.toString(16)}const FC={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class UC{constructor(e){this.ro=e.ro,this.oo=e.oo}uo(e){this.co=e}ao(e){this.ho=e}onMessage(e){this.lo=e}close(){this.oo()}send(e){this.ro(e)}fo(){this.co()}wo(e){this.ho(e)}_o(e){this.lo(e)}}const VC="WebChannelConnection";class qC extends class{constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;var t=e.ssl?"https":"http";this.mo=t+"://"+e.host,this.yo="projects/"+this.databaseId.projectId+"/databases/"+this.databaseId.database+"/documents"}get po(){return!1}Io(t,e,n,r,i){const s=LC(),a=this.To(t,e);x_("RestConnection",`Sending RPC '${t}' ${s}:`,a,n);var o={};return this.Eo(o,r,i),this.Ao(t,a,o,n).then(e=>(x_("RestConnection",`Received RPC '${t}' ${s}: `,e),e),e=>{throw M_("RestConnection",`RPC '${t}' ${s} failed with error: `,e,"url: ",a,"request:",n),e})}vo(e,t,n,r,i,s){return this.Io(e,t,n,r,i)}Eo(n,e,t){n["X-Goog-Api-Client"]="gl-js/ fire/"+R_,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)}To(e,t){var n=FC[e];return`${this.mo}/v1/${t}:${n}`}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}Ao(o,t,n,r){const c=LC();return new Promise((i,s)=>{const a=new C_;a.setWithCredentials(!0),a.listenOnce(__.COMPLETE,()=>{try{switch(a.getLastErrorCode()){case y_.NO_ERROR:var e=a.getResponseJson();x_(VC,`XHR for RPC '${o}' ${c} received:`,JSON.stringify(e)),i(e);break;case y_.TIMEOUT:x_(VC,`RPC '${o}' ${c} timed out`),s(new q_(V_.DEADLINE_EXCEEDED,"Request time out"));break;case y_.HTTP_ERROR:var t=a.getStatus();if(x_(VC,`RPC '${o}' ${c} failed with status:`,t,"response text:",a.getResponseText()),0<t){let e=a.getResponseJson();Array.isArray(e)&&(e=e[0]);var n=null==e?void 0:e.error;if(n&&n.status&&n.message){const o=(r=n.status.toLowerCase().replace(/_/g,"-"),0<=Object.values(V_).indexOf(r)?r:V_.UNKNOWN);s(new q_(o,n.message))}else s(new q_(V_.UNKNOWN,"Server responded with status "+a.getStatus()))}else s(new q_(V_.UNAVAILABLE,"Connection failed."));break;default:F_()}}finally{x_(VC,`RPC '${o}' ${c} completed.`)}var r});var e=JSON.stringify(r);x_(VC,`RPC '${o}' ${c} sending request:`,r),a.send(t,"POST",e,n,15)})}Ro(i,e,t){const s=LC(),n=[this.mo,"/","google.firestore.v1.Firestore","/",i,"/channel"],r=new Wy,a=v_(),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.xmlHttpFactory=new T_({})),this.Eo(o.initMessageHeaders,e,t),o.encodeInitMessageHeaders=!0;var l=n.join("");x_(VC,`Creating RPC '${i}' stream ${s}: ${l}`,o);const u=r.createWebChannel(l,o);let h=!1,d=!1;const p=new UC({ro:e=>{d?x_(VC,`Not sending because RPC '${i}' stream ${s} is closed:`,e):(h||(x_(VC,`Opening RPC '${i}' stream ${s} transport.`),u.open(),h=!0),x_(VC,`RPC '${i}' stream ${s} sending:`,e),u.send(e))},oo:()=>u.close()}),f=(e,t,n)=>{e.listen(t,e=>{try{n(e)}catch(e){setTimeout(()=>{throw e},0)}})};return f(u,E_.EventType.OPEN,()=>{d||x_(VC,`RPC '${i}' stream ${s} transport opened.`)}),f(u,E_.EventType.CLOSE,()=>{d||(d=!0,x_(VC,`RPC '${i}' stream ${s} transport closed`),p.wo())}),f(u,E_.EventType.ERROR,e=>{d||(d=!0,M_(VC,`RPC '${i}' stream ${s} transport errored:`,e),p.wo(new q_(V_.UNAVAILABLE,"The operation could not be completed")))}),f(u,E_.EventType.MESSAGE,n=>{if(!d){var e=n.data[0];U_(!!e);var r=e.error||(null===(r=e[0])||void 0===r?void 0:r.error);if(r){x_(VC,`RPC '${i}' stream ${s} received error:`,r);const n=r.status;let e=function(e){var t=m_[e];if(void 0!==t)return PT(t)}(n),t=r.message;void 0===e&&(e=V_.INTERNAL,t="Unknown error status: "+n+" with message "+r.message),d=!0,p.wo(new q_(e,t)),u.close()}else x_(VC,`RPC '${i}' stream ${s} received:`,e),p._o(e)}}),f(a,w_.STAT_EVENT,e=>{e.stat===b_?x_(VC,`RPC '${i}' stream ${s} detected buffering proxy`):e.stat===I_&&x_(VC,`RPC '${i}' stream ${s} detected no buffering proxy`)}),setTimeout(()=>{p.fo()},0),p}}function BC(){return"undefined"!=typeof window?window:null}function jC(){return"undefined"!=typeof document?document:null}function zC(e){return new ZT(e,!0)}class $C{constructor(e,t,n=1e3,r=1.5,i=6e4){this.ii=e,this.timerId=t,this.Po=n,this.bo=r,this.Vo=i,this.So=0,this.Do=null,this.Co=Date.now(),this.reset()}reset(){this.So=0}xo(){this.So=this.Vo}No(e){this.cancel();var t=Math.floor(this.So+this.ko()),n=Math.max(0,Date.now()-this.Co),r=Math.max(0,t-n);0<r&&x_("ExponentialBackoff",`Backing off for ${r} ms (base delay: ${this.So} ms, delay with jitter: ${t} ms, last attempt: ${n} ms ago)`),this.Do=this.ii.enqueueAfterDelay(this.timerId,r,()=>(this.Co=Date.now(),e())),this.So*=this.bo,this.So<this.Po&&(this.So=this.Po),this.So>this.Vo&&(this.So=this.Vo)}Mo(){null!==this.Do&&(this.Do.skipDelay(),this.Do=null)}cancel(){null!==this.Do&&(this.Do.cancel(),this.Do=null)}ko(){return(Math.random()-.5)*this.So}}class KC{constructor(e,t,n,r,i,s,a,o){this.ii=e,this.$o=n,this.Oo=r,this.connection=i,this.authCredentialsProvider=s,this.appCheckCredentialsProvider=a,this.listener=o,this.state=0,this.Fo=0,this.Bo=null,this.Lo=null,this.stream=null,this.qo=new $C(e,t)}Uo(){return 1===this.state||5===this.state||this.Ko()}Ko(){return 2===this.state||3===this.state}start(){4!==this.state?this.auth():this.Go()}async stop(){this.Uo()&&await this.close(0)}Qo(){this.state=0,this.qo.reset()}jo(){this.Ko()&&null===this.Bo&&(this.Bo=this.ii.enqueueAfterDelay(this.$o,6e4,()=>this.zo()))}Wo(e){this.Ho(),this.stream.send(e)}async zo(){if(this.Ko())return this.close(0)}Ho(){this.Bo&&(this.Bo.cancel(),this.Bo=null)}Jo(){this.Lo&&(this.Lo.cancel(),this.Lo=null)}async close(e,t){this.Ho(),this.Jo(),this.qo.cancel(),this.Fo++,4!==e?this.qo.reset():t&&t.code===V_.RESOURCE_EXHAUSTED?(O_(t.toString()),O_("Using maximum backoff delay to prevent overloading the backend."),this.qo.xo()):t&&t.code===V_.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.Yo(),this.stream.close(),this.stream=null),this.state=e,await this.listener.ao(t)}Yo(){}auth(){this.state=1;const e=this.Xo(this.Fo),n=this.Fo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([e,t])=>{this.Fo===n&&this.Zo(e,t)},t=>{e(()=>{var e=new q_(V_.UNKNOWN,"Fetching auth token failed: "+t.message);return this.tu(e)})})}Zo(e,t){const n=this.Xo(this.Fo);this.stream=this.eu(e,t),this.stream.uo(()=>{n(()=>(this.state=2,this.Lo=this.ii.enqueueAfterDelay(this.Oo,1e4,()=>(this.Ko()&&(this.state=3),Promise.resolve())),this.listener.uo()))}),this.stream.ao(e=>{n(()=>this.tu(e))}),this.stream.onMessage(e=>{n(()=>this.onMessage(e))})}Go(){this.state=5,this.qo.No(async()=>{this.state=0,this.start()})}tu(e){return x_("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}Xo(t){return e=>{this.ii.enqueueAndForget(()=>this.Fo===t?e():(x_("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class WC extends KC{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}eu(e,t){return this.connection.Ro("Listen",e,t)}onMessage(e){this.qo.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:F_(),i=t.targetChange.targetIds||[],s=(p=t.targetChange.resumeToken,e.useProto3Json?(U_(void 0===p||"string"==typeof p),wb.fromBase64String(p||"")):(U_(void 0===p||p instanceof Uint8Array),wb.fromUint8Array(p||new Uint8Array))),a=t.targetChange.cause,o=a&&(o=void 0===(p=a).code?V_.UNKNOWN:PT(p.code),new q_(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=o0(e,c.document.name),o=r0(c.document.updateTime),l=c.document.createTime?r0(c.document.createTime):tw.min(),u=new Hb({mapValue:{fields:c.document.fields}}),l=Qb.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=o0(e,u.document),l=u.readTime?r0(u.readTime):tw.min(),l=Qb.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=o0(e,h.document),h=h.removedTargetIds||[];n=new zT([],h,d,null)}else{if(!("filter"in t))return F_();{t.filter;const e=t.filter;e.targetId;var{count:h=0,unchangedNames:d}=e,h=new RT(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 tw.min();var t=e.targetChange;return(!t.targetIds||!t.targetIds.length)&&t.readTime?r0(t.readTime):tw.min()}(e);return this.listener.nu(t,n)}su(e){const t={};t.database=u0(this.serializer),t.addTarget=function(e,t){let n;const r=t.target;if(n=bI(r)?{documents:m0(e,r)}:{query:v0(e,r)},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(tw.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,r,r=(this.serializer,n=e,null==(r=function(){switch(n.purpose){case"TargetPurposeListen":return null;case"TargetPurposeExistenceFilterMismatch":return"existence-filter-mismatch";case"TargetPurposeExistenceFilterMismatchBloom":return"existence-filter-mismatch-bloom";case"TargetPurposeLimboResolution":return"limbo-document";default:return F_()}}())?null:{"goog-listen-tags":r});r&&(t.labels=r),this.Wo(t)}iu(e){const t={};t.database=u0(this.serializer),t.removeTarget=e,this.Wo(t)}}class GC extends KC{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.ru=!1}get ou(){return this.ru}start(){this.ru=!1,this.lastStreamToken=void 0,super.start()}Yo(){this.ru&&this.uu([])}eu(e,t){return this.connection.Ro("Write",e,t)}onMessage(e){if(U_(!!e.streamToken),this.lastStreamToken=e.streamToken,this.ru){this.qo.reset();var t=(r=e.writeResults,i=e.commitTime,r&&0<r.length?(U_(void 0!==i),r.map(e=>function(e,t){let n=e.updateTime?r0(e.updateTime):r0(t);return n.isEqual(tw.min())&&(n=r0(t)),new dT(n,e.transformResults||[])}(e,i))):[]),n=r0(e.commitTime);return this.listener.cu(n,t)}var r,i;return U_(!e.writeResults||0===e.writeResults.length),this.ru=!0,this.listener.au()}hu(){const e={};e.database=u0(this.serializer),this.Wo(e)}uu(e){var t={streamToken:this.lastStreamToken,writes:e.map(e=>f0(this.serializer,e))};this.Wo(t)}}class HC extends class{}{constructor(e,t,n,r){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=n,this.serializer=r,this.lu=!1}fu(){if(this.lu)throw new q_(V_.FAILED_PRECONDITION,"The client has already been terminated.")}Io(n,r,i){return this.fu(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.Io(n,r,i,e,t)).catch(e=>{throw"FirebaseError"===e.name?(e.code===V_.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new q_(V_.UNKNOWN,e.toString())})}vo(n,r,i,s){return this.fu(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.vo(n,r,i,e,t,s)).catch(e=>{throw"FirebaseError"===e.name?(e.code===V_.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new q_(V_.UNKNOWN,e.toString())})}terminate(){this.lu=!0}}class QC{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.wu=0,this._u=null,this.mu=!0}gu(){0===this.wu&&(this.yu("Unknown"),this._u=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,()=>(this._u=null,this.pu("Backend didn't respond within 10 seconds."),this.yu("Offline"),Promise.resolve())))}Iu(e){"Online"===this.state?this.yu("Unknown"):(this.wu++,1<=this.wu&&(this.Tu(),this.pu(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.yu("Offline")))}set(e){this.Tu(),this.wu=0,"Online"===e&&(this.mu=!1),this.yu(e)}yu(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}pu(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.mu?(O_(t),this.mu=!1):x_("OnlineStateTracker",t)}Tu(){null!==this._u&&(this._u.cancel(),this._u=null)}}class YC{constructor(e,t,n,r,i){this.localStore=e,this.datastore=t,this.asyncQueue=n,this.remoteSyncer={},this.Eu=[],this.Au=new Map,this.vu=new Set,this.Ru=[],this.Pu=i,this.Pu.Yr(e=>{n.enqueueAndForget(async()=>{sk(this)&&(x_("RemoteStore","Restarting streams for network reachability change."),await async function(e){const t=e;t.vu.add(4),await XC(t),t.bu.set("Unknown"),t.vu.delete(4),await JC(t)}(this))})}),this.bu=new QC(n,r)}}async function JC(e){if(sk(e))for(const t of e.Ru)await t(!0)}async function XC(e){for(const t of e.Ru)await t(!1)}function ZC(e,t){const n=e;n.Au.has(t.targetId)||(n.Au.set(t.targetId,t),ik(n)?rk(n):fk(n).Ko()&&tk(n,t))}function ek(e,t){const n=e,r=fk(n);n.Au.delete(t),r.Ko()&&nk(n,t),0===n.Au.size&&(r.Ko()?r.jo():sk(n)&&n.bu.set("Unknown"))}function tk(e,t){var n;e.Vu.qt(t.targetId),(0<t.resumeToken.approximateByteSize()||0<t.snapshotVersion.compareTo(tw.min()))&&(n=e.remoteSyncer.getRemoteKeysForTarget(t.targetId).size,t=t.withExpectedCount(n)),fk(e).su(t)}function nk(e,t){e.Vu.qt(t),fk(e).iu(t)}function rk(t){t.Vu=new GT({getRemoteKeysForTarget:e=>t.remoteSyncer.getRemoteKeysForTarget(e),le:e=>t.Au.get(e)||null,ue:()=>t.datastore.serializer.databaseId}),fk(t).start(),t.bu.gu()}function ik(e){return sk(e)&&!fk(e).Uo()&&0<e.Au.size}function sk(e){return 0===e.vu.size}function ak(e){e.Vu=void 0}async function ok(e,t,n){if(!Ew(t))throw t;e.vu.add(1),await XC(e),e.bu.set("Offline"),n=n||(()=>fC(e.localStore)),e.asyncQueue.enqueueRetryable(async()=>{x_("RemoteStore","Retrying IndexedDB access"),await n(),e.vu.delete(1),await JC(e)})}function ck(t,n){return n().catch(e=>ok(t,e,n))}async function lk(e){const t=e,n=gk(t);let r=0<t.Eu.length?t.Eu[t.Eu.length-1].batchId:-1;for(;sk(i=t)&&i.Eu.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.Eu.length&&n.jo();break}r=e.batchId,function(e,t){e.Eu.push(t);const n=gk(e);n.Ko()&&n.ou&&n.uu(t.mutations)}(t,e)}catch(e){await ok(t,e)}var i;uk(t)&&hk(t)}function uk(e){return sk(e)&&!gk(e).Uo()&&0<e.Eu.length}function hk(e){gk(e).start()}async function dk(e,t){const n=e;n.asyncQueue.verifyOperationInProgress(),x_("RemoteStore","RemoteStore received new credentials");var r=sk(n);n.vu.add(3),await XC(n),r&&n.bu.set("Unknown"),await n.remoteSyncer.handleCredentialChange(t),n.vu.delete(3),await JC(n)}async function pk(e,t){const n=e;t?(n.vu.delete(2),await JC(n)):(n.vu.add(2),await XC(n),n.bu.set("Unknown"))}function fk(t){return t.Su||(t.Su=function(e,t,n){const r=e;return r.fu(),new WC(t,r.connection,r.authCredentials,r.appCheckCredentials,r.serializer,n)}(t.datastore,t.asyncQueue,{uo:(async function(n){n.Au.forEach((e,t)=>{tk(n,e)})}).bind(null,t),ao:(async function(e,t){ak(e),ik(e)?(e.bu.Iu(t),rk(e)):e.bu.set("Unknown")}).bind(null,t),nu:(async function(e,r,t){if(e.bu.set("Online"),r instanceof KT&&2===r.state&&r.cause)try{await async function(e){var t=r.cause;for(const n of r.targetIds)e.Au.has(n)&&(await e.remoteSyncer.rejectListen(n,t),e.Au.delete(n),e.Vu.removeTarget(n))}(e)}catch(t){x_("RemoteStore","Failed to remove targets %s: %s ",r.targetIds.join(","),t),await ok(e,t)}else if(r instanceof zT?e.Vu.Ht(r):r instanceof $T?e.Vu.ne(r):e.Vu.Xt(r),!t.isEqual(tw.min()))try{const r=await fC(e.localStore);0<=t.compareTo(r)&&await function(i,r){const e=i.Vu.ce(r);return e.targetChanges.forEach((e,t)=>{if(0<e.resumeToken.approximateByteSize()){const n=i.Au.get(t);n&&i.Au.set(t,n.withResumeToken(e.resumeToken,r))}}),e.targetMismatches.forEach((e,t)=>{const n=i.Au.get(e);var r;n&&(i.Au.set(e,n.withResumeToken(wb.EMPTY_BYTE_STRING,n.snapshotVersion)),nk(i,e),r=new E0(n.target,e,t,n.sequenceNumber),tk(i,r))}),i.remoteSyncer.applyRemoteEvent(e)}(e,t)}catch(r){x_("RemoteStore","Failed to raise snapshot:",r),await ok(e,r)}}).bind(null,t)}),t.Ru.push(async e=>{e?(t.Su.Qo(),ik(t)?rk(t):t.bu.set("Unknown")):(await t.Su.stop(),ak(t))})),t.Su}function gk(t){return t.Du||(t.Du=function(e,t,n){const r=e;return r.fu(),new GC(t,r.connection,r.authCredentials,r.appCheckCredentials,r.serializer,n)}(t.datastore,t.asyncQueue,{uo:(async function(e){gk(e).hu()}).bind(null,t),ao:(async function(e,t){t&&gk(e).ou&&await async function(e,t){if(DT(n=t.code)&&n!==V_.ABORTED){const n=e.Eu.shift();gk(e).Qo(),await ck(e,()=>e.remoteSyncer.rejectFailedWrite(n.batchId,t)),await lk(e)}var n}(e,t),uk(e)&&hk(e)}).bind(null,t),au:(async function(e){const t=gk(e);for(const n of e.Eu)t.uu(n.mutations)}).bind(null,t),cu:(async function(e,t,n){const r=e.Eu.shift(),i=AT.from(r,t,n);await ck(e,()=>e.remoteSyncer.applySuccessfulWrite(i)),await lk(e)}).bind(null,t)}),t.Ru.push(async e=>{e?(t.Du.Qo(),await lk(t)):(await t.Du.stop(),0<t.Eu.length&&(x_("RemoteStore",`Stopping write stream with ${t.Eu.length} pending writes`),t.Eu=[]))})),t.Du}class mk{constructor(e,t,n,r,i){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=n,this.op=r,this.removalCallback=i,this.deferred=new B_,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch(e=>{})}static createAndSchedule(e,t,n,r,i){const s=Date.now()+n,a=new mk(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 q_(V_.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 vk(e,t){if(O_("AsyncQueue",`${t}: ${e}`),Ew(e))return new q_(V_.UNAVAILABLE,`${t}: ${e}`);throw e}class yk{constructor(n){this.comparator=n?(e,t)=>n(e,t)||aw.comparator(e.key,t.key):(e,t)=>aw.comparator(e.key,t.key),this.keyedMap=KI(),this.sortedSet=new db(this.comparator)}static emptySet(e){return new yk(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 yk))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 yk;return n.comparator=this.comparator,n.keyedMap=e,n.sortedSet=t,n}}class _k{constructor(){this.Cu=new db(aw.comparator)}track(e){var t=e.doc.key,n=this.Cu.get(t);!n||0!==e.type&&3===n.type?this.Cu=this.Cu.insert(t,e):3===e.type&&1!==n.type?this.Cu=this.Cu.insert(t,{type:n.type,doc:e.doc}):2===e.type&&2===n.type?this.Cu=this.Cu.insert(t,{type:2,doc:e.doc}):2===e.type&&0===n.type?this.Cu=this.Cu.insert(t,{type:0,doc:e.doc}):1===e.type&&0===n.type?this.Cu=this.Cu.remove(t):1===e.type&&2===n.type?this.Cu=this.Cu.insert(t,{type:1,doc:n.doc}):0===e.type&&1===n.type?this.Cu=this.Cu.insert(t,{type:2,doc:e.doc}):F_()}xu(){const n=[];return this.Cu.inorderTraversal((e,t)=>{n.push(t)}),n}}class wk{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 wk(e,t,yk.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)&&LI(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 bk{constructor(){this.Nu=void 0,this.listeners=[]}}class Ik{constructor(){this.queries=new jI(e=>FI(e),LI),this.onlineState="Unknown",this.ku=new Set}}async function Tk(e,t){const n=e,r=t.query;let i=!1,s=n.queries.get(r);if(s||(i=!0,s=new bk),i)try{s.Nu=await n.onListen(r)}catch(e){const n=vk(e,`Initialization of query '${UI(t.query)}' failed`);return void t.onError(n)}n.queries.set(r,s),s.listeners.push(t),t.Mu(n.onlineState),!s.Nu||t.$u(s.Nu)&&Ck(n)}async function Ek(e,t){const n=e,r=t.query;let i=!1;const s=n.queries.get(r);if(s){const e=s.listeners.indexOf(t);0<=e&&(s.listeners.splice(e,1),i=0===s.listeners.length)}if(i)return n.queries.delete(r),n.onUnlisten(r)}function Ck(e){e.ku.forEach(e=>{e.next()})}class kk{constructor(e,t,n){this.query=e,this.Ou=t,this.Fu=!1,this.Bu=null,this.onlineState="Unknown",this.options=n||{}}$u(e){if(!this.options.includeMetadataChanges){const t=[];for(const n of e.docChanges)3!==n.type&&t.push(n);e=new wk(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.Fu?this.Lu(e)&&(this.Ou.next(e),t=!0):this.qu(e,this.onlineState)&&(this.Uu(e),t=!0),this.Bu=e,t}onError(e){this.Ou.error(e)}Mu(e){this.onlineState=e;let t=!1;return this.Bu&&!this.Fu&&this.qu(this.Bu,e)&&(this.Uu(this.Bu),t=!0),t}qu(e,t){return!e.fromCache||(!this.options.Ku||!("Offline"!==t))&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t)}Lu(e){if(0<e.docChanges.length)return!0;var t=this.Bu&&this.Bu.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&!0===this.options.includeMetadataChanges}Uu(e){e=wk.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.Fu=!0,this.Ou.next(e)}}class Sk{constructor(e,t){this.Gu=e,this.byteLength=t}Qu(){return"metadata"in this.Gu}}class Ak{constructor(e){this.serializer=e}rr(e){return o0(this.serializer,e)}ur(e){return e.metadata.exists?p0(this.serializer,e.document,!1):Qb.newNoDocument(this.rr(e.metadata.name),this.cr(e.metadata.readTime))}cr(e){return r0(e)}}class Nk{constructor(e,t,n){this.ju=e,this.localStore=t,this.serializer=n,this.queries=[],this.documents=[],this.collectionGroups=new Set,this.progress=Rk(e)}zu(e){this.progress.bytesLoaded+=e.byteLength;let t=this.progress.documentsLoaded;if(e.Gu.namedQuery)this.queries.push(e.Gu.namedQuery);else if(e.Gu.documentMetadata){this.documents.push({metadata:e.Gu.documentMetadata}),e.Gu.documentMetadata.exists||++t;const n=rw.fromString(e.Gu.documentMetadata.name);this.collectionGroups.add(n.get(n.length-2))}else e.Gu.document&&(this.documents[this.documents.length-1].document=e.Gu.document,++t);return t!==this.progress.documentsLoaded?(this.progress.documentsLoaded=t,Object.assign({},this.progress)):null}Wu(e){const t=new Map,n=new Ak(this.serializer);for(const i of e)if(i.metadata.queries){const e=n.rr(i.metadata.name);for(const n of i.metadata.queries){var r=(t.get(n)||YI()).add(e);t.set(n,r)}}return t}async complete(){const e=await async function(e,t,n,r){const i=e;let s=YI(),a=zI;for(const e of n){const n=t.rr(e.metadata.name);e.document&&(s=s.add(n));const l=t.ur(e);l.setReadTime(t.cr(e.metadata.readTime)),a=a.insert(n,l)}const o=i.Zi.newChangeBuffer({trackRemovals:!0}),c=await vC(i,(r=r,xI(SI(rw.fromString(`__bundle__/docs/${r}`)))));return i.persistence.runTransaction("Apply bundle documents","readwrite",t=>mC(t,o,a).next(e=>(o.apply(t),e)).next(e=>i.Bs.removeMatchingKeysForTargetId(t,c.targetId).next(()=>i.Bs.addMatchingKeys(t,s,c.targetId)).next(()=>i.localDocuments.getLocalViewOfDocuments(t,e.nr,e.sr)).next(()=>e.nr)))}(this.localStore,new Ak(this.serializer),this.documents,this.ju.id),t=this.Wu(this.documents);for(const e of this.queries)await async function(e,n,r=YI()){const i=await vC(e,xI(x0(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.qs.saveNamedQuery(e,n);t=i.withResumeToken(wb.EMPTY_BYTE_STRING,t);return s.Ji=s.Ji.insert(t.targetId,t),s.Bs.updateTargetData(e,t).next(()=>s.Bs.removeMatchingKeysForTargetId(e,i.targetId)).next(()=>s.Bs.addMatchingKeys(e,r,i.targetId)).next(()=>s.qs.saveNamedQuery(e,n))})}(this.localStore,e,t.get(e.name));return this.progress.taskState="Success",{progress:this.progress,Hu:this.collectionGroups,Ju:e}}}function Rk(e){return{taskState:"Running",documentsLoaded:0,bytesLoaded:0,totalDocuments:e.totalDocuments,totalBytes:e.totalBytes}}class Dk{constructor(e){this.key=e}}class Pk{constructor(e){this.key=e}}class xk{constructor(e,t){this.query=e,this.Yu=t,this.Xu=null,this.hasCachedResults=!1,this.current=!1,this.Zu=YI(),this.mutatedKeys=YI(),this.tc=BI(e),this.ec=new yk(this.tc)}get nc(){return this.Yu}sc(e,t){const o=t?t.ic:new _k,c=(t||this).ec;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=VI(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.rc(n,r)||(o.track({type:2,doc:r}),a=!0,(d&&0<this.tc(r,d)||p&&this.tc(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{ec:u,ic:o,zi:h,mutatedKeys:l}}rc(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,n){var r=this.ec;this.ec=e.ec,this.mutatedKeys=e.mutatedKeys;const i=e.ic.xu();i.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 F_()}};return n(e)-n(t)}(e.type,t.type)||this.tc(e.doc,t.doc)),this.oc(n);var s=t?this.uc():[],a=0===this.Zu.size&&this.current?1:0,o=a!==this.Xu;return this.Xu=a,0!==i.length||o?{snapshot:new wk(this.query,e.ec,r,i,e.mutatedKeys,0==a,o,!1,!!n&&0<n.resumeToken.approximateByteSize()),cc:s}:{cc:s}}Mu(e){return this.current&&"Offline"===e?(this.current=!1,this.applyChanges({ec:this.ec,ic:new _k,mutatedKeys:this.mutatedKeys,zi:!1},!1)):{cc:[]}}ac(e){return!this.Yu.has(e)&&!!this.ec.has(e)&&!this.ec.get(e).hasLocalMutations}oc(e){e&&(e.addedDocuments.forEach(e=>this.Yu=this.Yu.add(e)),e.modifiedDocuments.forEach(e=>{}),e.removedDocuments.forEach(e=>this.Yu=this.Yu.delete(e)),this.current=e.current)}uc(){if(!this.current)return[];const t=this.Zu;this.Zu=YI(),this.ec.forEach(e=>{this.ac(e.key)&&(this.Zu=this.Zu.add(e.key))});const n=[];return t.forEach(e=>{this.Zu.has(e)||n.push(new Pk(e))}),this.Zu.forEach(e=>{t.has(e)||n.push(new Dk(e))}),n}hc(e){this.Yu=e.ir,this.Zu=YI();var t=this.sc(e.documents);return this.applyChanges(t,!0)}lc(){return wk.fromInitialDocuments(this.query,this.ec,this.mutatedKeys,0===this.Xu,this.hasCachedResults)}}class Ok{constructor(e,t,n){this.query=e,this.targetId=t,this.view=n}}class Mk{constructor(e){this.key=e,this.fc=!1}}class Lk{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.dc={},this.wc=new jI(e=>FI(e),LI),this._c=new Map,this.mc=new Set,this.gc=new db(aw.comparator),this.yc=new Map,this.Ic=new GE,this.Tc={},this.Ec=new Map,this.Ac=TE.Mn(),this.onlineState="Unknown",this.vc=void 0}get isPrimaryClient(){return!0===this.vc}}async function Fk(n,e,t,r,i){n.Rc=(e,s,t)=>async function(e,t,n){let r=t.view.sc(s);r.zi&&(r=await _C(e.localStore,t.query,!1).then(({documents:e})=>t.view.sc(e,r)));var i=n&&n.targetChanges.get(t.targetId),i=t.view.applyChanges(r,e.isPrimaryClient,i);return Wk(e,t.targetId,i.cc),i.snapshot}(n,e,t);const s=await _C(n.localStore,e,!0),a=new xk(e,s.ir),o=a.sc(s.documents),c=jT.createSynthesizedTargetChangeForCurrentChange(t,r&&"Offline"!==n.onlineState,i),l=a.applyChanges(o,n.isPrimaryClient,c);Wk(n,t,l.cc);var u=new Ok(e,t,a);return n.wc.set(e,u),n._c.has(t)?n._c.get(t).push(e):n._c.set(t,[e]),l.snapshot}async function Uk(e,t,n){const r=Zk(e);try{const e=await function(e,i){const s=e,a=ew.now(),o=i.reduce((e,t)=>e.add(t.key),YI());let c,l;return s.persistence.runTransaction("Locally write mutations","readwrite",n=>{let t=zI,r=YI();return s.Zi.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=nT(r.transform,e||null);null!=i&&(null===n&&(n=Hb.empty()),n.set(r.field,i))}return n||null}(n,c.get(n.key).overlayedDocument);null!=i&&t.push(new bT(n.key,i,function r(e){const i=[];return ub(e.fields,(e,t)=>{const n=new sw([e]);if(zb(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 yb(i)}(i.value.mapValue),pT.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:WI(c)}))}(r.localStore,t);r.sharedClientState.addPendingMutation(e.batchId),function(e,t,n){let r=e.Tc[e.currentUser.toKey()];r=r||new db(J_),r=r.insert(t,n),e.Tc[e.currentUser.toKey()]=r}(r,e.batchId,n),await Hk(r,e.changes),await lk(r.remoteStore)}catch(e){const t=vk(e,"Failed to persist write");n.reject(t)}}async function Vk(e,t){const r=e;try{const e=await gC(r.localStore,t);t.targetChanges.forEach((e,t)=>{const n=r.yc.get(t);n&&(U_(e.addedDocuments.size+e.modifiedDocuments.size+e.removedDocuments.size<=1),0<e.addedDocuments.size?n.fc=!0:0<e.modifiedDocuments.size?U_(n.fc):0<e.removedDocuments.size&&(U_(n.fc),n.fc=!1))}),await Hk(r,e,t)}catch(e){await yw(e)}}function qk(r,i,e){const t=r;if(t.isPrimaryClient&&0===e||!t.isPrimaryClient&&1===e){const r=[];t.wc.forEach((e,t)=>{var n=t.view.Mu(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.listeners)e.Mu(n)&&(r=!0)}),r&&Ck(t)}(t.eventManager,i),r.length&&t.dc.nu(r),t.onlineState=i,t.isPrimaryClient&&t.sharedClientState.setOnlineState(i)}}async function Bk(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.Zi.newChangeBuffer({trackRemovals:!0});return function(e,t,r,i){const s=r.batch,n=s.keys();let a=_w.resolve();return n.forEach(n=>{a=a.next(()=>i.getEntry(t,n)).next(e=>{var t=r.docVersions.get(n);U_(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=YI();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);zk(n,r,null),jk(n,r),n.sharedClientState.updateMutationState(r,"acknowledged"),await Hk(n,e)}catch(e){await yw(e)}}function jk(e,t){(e.Ec.get(t)||[]).forEach(e=>{e.resolve()}),e.Ec.delete(t)}function zk(e,t,n){const r=e;let i=r.Tc[r.currentUser.toKey()];if(i){const e=i.get(t);e&&(n?e.reject(n):e.resolve(),i=i.remove(t)),r.Tc[r.currentUser.toKey()]=i}}function $k(t,e,n=null){t.sharedClientState.removeLocalQueryTarget(e);for(const r of t._c.get(e))t.wc.delete(r),n&&t.dc.Pc(r,n);t._c.delete(e),t.isPrimaryClient&&t.Ic.Is(e).forEach(e=>{t.Ic.containsKey(e)||Kk(t,e)})}function Kk(e,t){e.mc.delete(t.path.canonicalString());var n=e.gc.get(t);null!==n&&(ek(e.remoteStore,n),e.gc=e.gc.remove(t),e.yc.delete(n),Gk(e))}function Wk(e,t,n){for(const r of n)r instanceof Dk?(e.Ic.addReference(r.key,t),function(e,t){const n=t.key,r=n.path.canonicalString();e.gc.get(n)||e.mc.has(r)||(x_("SyncEngine","New document in limbo: "+n),e.mc.add(r),Gk(e))}(e,r)):r instanceof Pk?(x_("SyncEngine","Document no longer in limbo: "+r.key),e.Ic.removeReference(r.key,t),e.Ic.containsKey(r.key)||Kk(e,r.key)):F_()}function Gk(e){for(;0<e.mc.size&&e.gc.size<e.maxConcurrentLimboResolutions;){var t=e.mc.values().next().value;e.mc.delete(t);var n=new aw(rw.fromString(t)),t=e.Ac.next();e.yc.set(t,new Mk(n)),e.gc=e.gc.insert(n,t),ZC(e.remoteStore,new E0(xI(SI(n.path)),t,"TargetPurposeLimboResolution",Dw.ct))}}async function Hk(e,t,r){const i=e,s=[],a=[],o=[];i.wc.isEmpty()||(i.wc.forEach((e,n)=>{o.push(i.Rc(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=lC.Li(n.targetId,e),a.push(t))}))}),await Promise.all(o),i.dc.nu(s),await async function(e,t){const r=e;try{await r.persistence.runTransaction("notifyLocalViewChanges","readwrite",n=>_w.forEach(t,t=>_w.forEach(t.Fi,e=>r.persistence.referenceDelegate.addReference(n,t.targetId,e)).next(()=>_w.forEach(t.Bi,e=>r.persistence.referenceDelegate.removeReference(n,t.targetId,e)))))}catch(e){if(!Ew(e))throw e;x_("LocalStore","Failed to update sequence numbers: "+e)}for(const e of t){const t=e.targetId;if(!e.fromCache){const e=r.Ji.get(t),n=e.snapshotVersion,i=e.withLastLimboFreeSnapshotVersion(n);r.Ji=r.Ji.insert(t,i)}}}(i.localStore,a))}async function Qk(r,e){const i=r;if(Xk(i),Zk(i),!0===e&&!0!==i.vc){const r=i.sharedClientState.getAllActiveQueryTargets(),e=await Yk(i,r.toArray());i.vc=!0,await pk(i.remoteStore,!0);for(const r of e)ZC(i.remoteStore,r)}else if(!1===e&&!1!==i.vc){const r=[];let n=Promise.resolve();i._c.forEach((e,t)=>{i.sharedClientState.isLocalQueryTarget(t)?r.push(t):n=n.then(()=>($k(i,t),yC(i.localStore,t,!0))),ek(i.remoteStore,t)}),await n,await Yk(i,r),function(){const n=i;n.yc.forEach((e,t)=>{ek(n.remoteStore,t)}),n.Ic.Ts(),n.yc=new Map,n.gc=new db(aw.comparator)}(),i.vc=!1,await pk(i.remoteStore,!1)}}async function Yk(t,n){const r=t,i=[],s=[];for(const t of n){let e;const u=r._c.get(t);if(u&&0!==u.length){e=await vC(r.localStore,xI(u[0]));for(const t of u){const n=r.wc.get(t),u=(a=r,o=n,l=c=void 0,l=await _C((c=a).localStore,o.query,!0),l=o.view.hc(l),c.isPrimaryClient&&Wk(c,o.targetId,l.cc),await l);u.snapshot&&s.push(u.snapshot)}}else{const u=await wC(r.localStore,t);e=await vC(r.localStore,u),await Fk(r,Jk(u),t,!1,e.resumeToken)}i.push(e)}var a,o,c,l;return r.dc.nu(s),i}function Jk(e){return kI(e.path,e.collectionGroup,e.orderBy,e.filters,e.limit,"F",e.startAt,e.endAt)}function Xk(e){const t=e;return t.remoteStore.remoteSyncer.applyRemoteEvent=Vk.bind(null,t),t.remoteStore.remoteSyncer.getRemoteKeysForTarget=(function(e,t){const n=e,r=n.yc.get(t);if(r&&r.fc)return YI().add(r.key);{let e=YI();const r=n._c.get(t);if(!r)return e;for(const t of r){const r=n.wc.get(t);e=e.unionWith(r.view.nc)}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.yc.get(t),s=i&&i.key;if(s){let e=new db(aw.comparator);e=e.insert(s,Qb.newNoDocument(s,tw.min()));const n=YI().add(s),i=new BT(tw.min(),new Map,new db(J_),e,n);await Vk(r,i),r.gc=r.gc.remove(s),r.yc.delete(t),Gk(r)}else await yC(r.localStore,t,!1).then(()=>$k(r,t,n)).catch(yw)}).bind(null,t),t.dc.nu=(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.listeners)t.$u(e)&&(r=!0);i.Nu=e}}r&&Ck(n)}).bind(null,t.eventManager),t.dc.Pc=(function(e,t,n){const r=e,i=r.queries.get(t);if(i)for(const e of i.listeners)e.onError(n);r.queries.delete(t)}).bind(null,t.eventManager),t}function Zk(e){const t=e;return t.remoteStore.remoteSyncer.applySuccessfulWrite=Bk.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=>(U_(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);zk(r,t,n),jk(r,t),r.sharedClientState.updateMutationState(t,"rejected",n),await Hk(r,e)}catch(n){await yw(n)}}).bind(null,t),t}class eS{constructor(){this.synchronizeTabs=!1}async initialize(e){this.serializer=zC(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 dC(this.persistence,new uC,e.initialUser,this.serializer)}createPersistence(e){return new ZE(tC.zs,this.serializer)}createSharedClientState(e){return new PC}async terminate(){this.gcScheduler&&this.gcScheduler.stop(),await this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class tS extends eS{constructor(e,t,n){super(),this.Vc=e,this.cacheSizeBytes=t,this.forceOwnership=n,this.synchronizeTabs=!1}async initialize(e){await super.initialize(e),await this.Vc.initialize(this,e),await Zk(this.Vc.syncEngine),await lk(this.Vc.remoteStore),await this.persistence.Ii(()=>(this.gcScheduler&&!this.gcScheduler.started&&this.gcScheduler.start(),this.indexBackfillerScheduler&&!this.indexBackfillerScheduler.started&&this.indexBackfillerScheduler.start(),Promise.resolve()))}createLocalStore(e){return dC(this.persistence,new uC,e.initialUser,this.serializer)}createGarbageCollectionScheduler(e,t){var n=this.persistence.referenceDelegate.garbageCollector;return new RE(n,e.asyncQueue,t)}createIndexBackfillerScheduler(e,t){var n=new Rw(t,this.persistence);return new Nw(e.asyncQueue,n)}createPersistence(e){var t=cC(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey),n=void 0!==this.cacheSizeBytes?gE.withCacheSize(this.cacheSizeBytes):gE.DEFAULT;return new sC(this.synchronizeTabs,t,e.clientId,n,e.asyncQueue,BC(),jC(),this.serializer,this.sharedClientState,!!this.forceOwnership)}createSharedClientState(e){return new PC}}class nS extends tS{constructor(e,t){super(e,t,!1),this.Vc=e,this.cacheSizeBytes=t,this.synchronizeTabs=!0}async initialize(e){await super.initialize(e);var t=this.Vc.syncEngine;this.sharedClientState instanceof DC&&(this.sharedClientState.syncEngine={jr:(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.Sn(t,n).next(e=>e?r.localDocuments.getDocuments(t,e):_w.resolve(null)))}(i.localStore,t);null!==s?("pending"===n?await lk(i.remoteStore):"acknowledged"===n||"rejected"===n?(zk(i,t,r||null),jk(i,t),i.localStore.mutationQueue.Cn(t)):F_(),await Hk(i,s)):x_("SyncEngine","Cannot apply mutation batch with id: "+t)}).bind(null,t),zr:(async function(e,t,n,r){const i=e;if(i.vc)x_("SyncEngine","Ignoring unexpected query state notification.");else{var s=i._c.get(t);if(s&&0<s.length)switch(n){case"current":case"not-current":{const e=await bC(i.localStore,qI(s[0])),r=BT.createSynthesizedRemoteEventForCurrentChange(t,"current"===n,wb.EMPTY_BYTE_STRING);await Hk(i,e,r);break}case"rejected":await yC(i.localStore,t,!0),$k(i,t,r);break;default:F_()}}}).bind(null,t),Wr:(async function(e,t,n){const r=Xk(e);if(r.vc){for(const e of t)if(r._c.has(e))x_("SyncEngine","Adding an already active target "+e);else{const t=await wC(r.localStore,e),n=await vC(r.localStore,t);await Fk(r,Jk(t),n.targetId,!1,n.resumeToken),ZC(r.remoteStore,n)}for(const e of n)r._c.has(e)&&await yC(r.localStore,e,!1).then(()=>{ek(r.remoteStore,e),$k(r,e)}).catch(yw)}}).bind(null,t),$i:(function(e){return e.localStore.persistence.$i()}).bind(null,t),Qr:(async function(e,t){const n=e;return bC(n.localStore,t).then(e=>Hk(n,e))}).bind(null,t)},await this.sharedClientState.start()),await this.persistence.Ii(async e=>{await Qk(this.Vc.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=BC();if(!DC.D(t))throw new q_(V_.UNIMPLEMENTED,"IndexedDB persistence is only available on platforms that support LocalStorage.");var n=cC(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey);return new DC(t,e.asyncQueue,n,e.clientId,e.initialUser)}}class rS{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=>qk(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=(async function(e,t){const n=e;if(!n.currentUser.isEqual(t)){x_("SyncEngine","User change. New user:",t.toKey());const r=await pC(n.localStore,t);n.currentUser=t,(e=n).Ec.forEach(e=>{e.forEach(e=>{e.reject(new q_(V_.CANCELLED,"'waitForPendingWrites' promise is rejected due to a user change."))})}),e.Ec.clear(),n.sharedClientState.handleUserChange(t,r.removedBatchIds,r.addedBatchIds),await Hk(n,r.er)}}).bind(null,this.syncEngine),await pk(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new Ik}createDatastore(e){var t,n,r,i,s=zC(e.databaseInfo.databaseId),t=(t=e.databaseInfo,new qC(t));return n=e.authCredentials,r=e.appCheckCredentials,i=t,e=s,new HC(n,r,i,e)}createRemoteStore(e){return t=this.localStore,n=this.datastore,r=e.asyncQueue,i=e=>qk(this.syncEngine,e,0),s=new(OC.D()?OC:xC),new YC(t,n,r,i,s);var t,n,r,i,s}createSyncEngine(e,t){return function(e,t,n,r,i,s,a){const o=new Lk(e,t,n,r,i,s);return a&&(o.vc=!0),o}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}terminate(){return async function(e){const t=e;x_("RemoteStore","RemoteStore shutting down."),t.vu.add(5),await XC(t),t.Pu.shutdown(),t.bu.set("Unknown")}(this.remoteStore)}}function iS(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 sS{constructor(e){this.observer=e,this.muted=!1}next(e){this.observer.next&&this.Sc(this.observer.next,e)}error(e){this.observer.error?this.Sc(this.observer.error,e):O_("Uncaught Error in snapshot listener:",e.toString())}Dc(){this.muted=!0}Sc(e,t){this.muted||setTimeout(()=>{this.muted||e(t)},0)}}class aS{constructor(e,t){this.Cc=e,this.serializer=t,this.metadata=new B_,this.buffer=new Uint8Array,this.xc=new TextDecoder("utf-8"),this.Nc().then(e=>{e&&e.Qu()?this.metadata.resolve(e.Gu.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.Gu)}`))},e=>this.metadata.reject(e))}close(){return this.Cc.cancel()}async getMetadata(){return this.metadata.promise}async bc(){return await this.getMetadata(),this.Nc()}async Nc(){var e=await this.kc();if(null===e)return null;var t=this.xc.decode(e),n=Number(t);isNaN(n)&&this.Mc(`length string (${t}) is not valid number`);t=await this.$c(n);return new Sk(JSON.parse(t),e.length+n)}Oc(){return this.buffer.findIndex(e=>e==="{".charCodeAt(0))}async kc(){for(;this.Oc()<0&&!await this.Fc(););if(0===this.buffer.length)return null;var e=this.Oc();e<0&&this.Mc("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 $c(e){for(;this.buffer.length<e;)await this.Fc()&&this.Mc("Reached the end of bundle when more is expected.");var t=this.xc.decode(this.buffer.slice(0,e));return this.buffer=this.buffer.slice(e),t}Mc(e){throw this.Cc.cancel(),new Error(`Invalid bundle format: ${e}`)}async Fc(){var e=await this.Cc.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 oS{constructor(e){this.datastore=e,this.readVersions=new Map,this.mutations=[],this.committed=!1,this.lastWriteError=null,this.writtenDocs=new Set}async lookup(e){if(this.ensureCommitNotCalled(),0<this.mutations.length)throw new q_(V_.INVALID_ARGUMENT,"Firestore transactions require all reads to be executed before all writes.");const t=await async function(e,t){const r=e,n=u0(r.serializer)+"/documents",i={documents:t.map(e=>a0(r.serializer,e))},s=await r.vo("BatchGetDocuments",n,i,t.length),a=new Map;s.forEach(e=>{const t=(n=r.serializer,"found"in(e=e)?function(e,t){U_(!!t.found),t.found.name,t.found.updateTime;var n=o0(e,t.found.name),r=r0(t.found.updateTime),i=t.found.createTime?r0(t.found.createTime):tw.min(),s=new Hb({mapValue:{fields:t.found.fields}});return Qb.newFoundDocument(n,r,i,s)}(n,e):"missing"in e?function(e,t){U_(!!t.missing),U_(!!t.readTime);var n=o0(e,t.missing),r=r0(t.readTime);return Qb.newNoDocument(n,r)}(n,e):F_());var n;a.set(t.key.toString(),t)});const o=[];return t.forEach(e=>{var t=a.get(e.toString());U_(!!t),o.push(t)}),o}(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.lastWriteError=e}this.writtenDocs.add(e.toString())}delete(e){this.write(new CT(e,this.precondition(e))),this.writtenDocs.add(e.toString())}async commit(){if(this.ensureCommitNotCalled(),this.lastWriteError)throw this.lastWriteError;const t=this.readVersions;this.mutations.forEach(e=>{t.delete(e.key.toString())}),t.forEach((e,t)=>{var n=aw.fromPath(t);this.mutations.push(new kT(n,this.precondition(n)))}),await async function(e,t){const n=e,r=u0(n.serializer)+"/documents",i={writes:t.map(e=>f0(n.serializer,e))};await n.Io("Commit",r,i)}(this.datastore,this.mutations),this.committed=!0}recordVersion(e){let t;if(e.isFoundDocument())t=e.version;else{if(!e.isNoDocument())throw F_();t=tw.min()}var n=this.readVersions.get(e.key.toString());if(n){if(!t.isEqual(n))throw new q_(V_.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(tw.min())?pT.exists(!1):pT.updateTime(t):pT.none()}preconditionForUpdate(e){const t=this.readVersions.get(e.toString());if(this.writtenDocs.has(e.toString())||!t)return pT.exists(!0);if(t.isEqual(tw.min()))throw new q_(V_.INVALID_ARGUMENT,"Can't update a document that doesn't exist.");return pT.updateTime(t)}write(e){this.ensureCommitNotCalled(),this.mutations.push(e)}ensureCommitNotCalled(){}}class cS{constructor(e,t,n,r,i){this.asyncQueue=e,this.datastore=t,this.options=n,this.updateFunction=r,this.deferred=i,this.Bc=n.maxAttempts,this.qo=new $C(this.asyncQueue,"transaction_retry")}run(){--this.Bc,this.Lc()}Lc(){this.qo.No(async()=>{const t=new oS(this.datastore),e=this.qc(t);e&&e.then(e=>{this.asyncQueue.enqueueAndForget(()=>t.commit().then(()=>{this.deferred.resolve(e)}).catch(e=>{this.Uc(e)}))}).catch(e=>{this.Uc(e)})})}qc(e){try{var t=this.updateFunction(e);return!Pw(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}}Uc(e){0<this.Bc&&this.Kc(e)?(--this.Bc,this.asyncQueue.enqueueAndForget(()=>(this.Lc(),Promise.resolve()))):this.deferred.reject(e)}Kc(e){if("FirebaseError"!==e.name)return!1;var t=e.code;return"aborted"===t||"failed-precondition"===t||"already-exists"===t||!DT(t)}}class lS{constructor(e,t,n,r){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=n,this.databaseInfo=r,this.user=N_.UNAUTHENTICATED,this.clientId=Y_.A(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(n,async e=>{x_("FirestoreClient","Received user=",e.uid),await this.authCredentialListener(e),this.user=e}),this.appCheckCredentials.start(n,e=>(x_("FirestoreClient","Received new app check token=",e),this.appCheckCredentialListener(e,this.user)))}async getConfiguration(){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 q_(V_.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const n=new B_;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=vk(e,"Failed to shutdown persistence");n.reject(t)}}),n.promise}}async function uS(e,t){e.asyncQueue.verifyOperationInProgress(),x_("FirestoreClient","Initializing OfflineComponentProvider");var n=await e.getConfiguration();await t.initialize(n);let r=n.initialUser;e.setCredentialChangeListener(async e=>{r.isEqual(e)||(await pC(t.localStore,e),r=e)}),t.persistence.setDatabaseDeletedListener(()=>e.terminate()),e._offlineComponents=t}async function hS(e,n){e.asyncQueue.verifyOperationInProgress();var t=await pS(e);x_("FirestoreClient","Initializing OnlineComponentProvider");var r=await e.getConfiguration();await n.initialize(t,r),e.setCredentialChangeListener(e=>dk(n.remoteStore,e)),e.setAppCheckTokenChangeListener((e,t)=>dk(n.remoteStore,t)),e._onlineComponents=n}function dS(e){return"FirebaseError"===e.name?e.code===V_.FAILED_PRECONDITION||e.code===V_.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&e instanceof DOMException)||22===e.code||20===e.code||11===e.code}async function pS(t){if(!t._offlineComponents)if(t._uninitializedComponentsProvider){x_("FirestoreClient","Using user provided OfflineComponentProvider");try{await uS(t,t._uninitializedComponentsProvider._offline)}catch(e){var n=e;if(!dS(n))throw n;M_("Error using user provided cache. Falling back to memory cache: "+n),await uS(t,new eS)}}else x_("FirestoreClient","Using default OfflineComponentProvider"),await uS(t,new eS);return t._offlineComponents}async function fS(e){return e._onlineComponents||(e._uninitializedComponentsProvider?(x_("FirestoreClient","Using user provided OnlineComponentProvider"),await hS(e,e._uninitializedComponentsProvider._online)):(x_("FirestoreClient","Using default OnlineComponentProvider"),await hS(e,new rS))),e._onlineComponents}function gS(e){return pS(e).then(e=>e.persistence)}function mS(e){return pS(e).then(e=>e.localStore)}function vS(e){return fS(e).then(e=>e.remoteStore)}function yS(e){return fS(e).then(e=>e.syncEngine)}async function _S(e){const t=await fS(e),n=t.eventManager;return n.onListen=(async function(e,t){const n=Xk(e);let r,i;const s=n.wc.get(t);if(s)r=s.targetId,n.sharedClientState.addLocalQueryTarget(r),i=s.view.lc();else{const e=await vC(n.localStore,xI(t)),s=n.sharedClientState.addLocalQueryTarget(e.targetId);r=e.targetId,i=await Fk(n,t,r,"current"===s,e.resumeToken),n.isPrimaryClient&&ZC(n.remoteStore,e)}return i}).bind(null,t.syncEngine),n.onUnlisten=(async function(e,t){const n=e,r=n.wc.get(t),i=n._c.get(r.targetId);if(1<i.length)return n._c.set(r.targetId,i.filter(e=>!LI(e,t))),void n.wc.delete(t);n.isPrimaryClient?(n.sharedClientState.removeLocalQueryTarget(r.targetId),n.sharedClientState.isActiveQueryTarget(r.targetId)||await yC(n.localStore,r.targetId,!1).then(()=>{n.sharedClientState.clearQueryState(r.targetId),ek(n.remoteStore,r.targetId),$k(n,r.targetId)}).catch(yw)):($k(n,r.targetId),await yC(n.localStore,r.targetId,!0))}).bind(null,t.syncEngine),n}function wS(e,t,n={}){const r=new B_;return e.asyncQueue.enqueueAndForget(async()=>function(n,r,i,s,a){const e=new sS({next:e=>{r.enqueueAndForget(()=>Ek(n,o));var t=e.docs.has(i);!t&&e.fromCache?a.reject(new q_(V_.UNAVAILABLE,"Failed to get document because the client is offline.")):t&&e.fromCache&&s&&"server"===s.source?a.reject(new q_(V_.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 kk(SI(i.path),e,{includeMetadataChanges:!0,Ku:!0});return Tk(n,o)}(await _S(e),e.asyncQueue,t,n,r)),r.promise}function bS(e,t,n={}){const r=new B_;return e.asyncQueue.enqueueAndForget(async()=>function(t,n,e,r,i){const s=new sS({next:e=>{n.enqueueAndForget(()=>Ek(t,a)),e.fromCache&&"server"===r.source?i.reject(new q_(V_.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 kk(e,s,{includeMetadataChanges:!0,Ku:!0});return Tk(t,a)}(await _S(e),e.asyncQueue,t,n,r)),r.promise}function IS(e,t,n,r){const i=(n=n,t=zC(t),s="string"==typeof n?MT().encode(n):n,n=function(e){if(e instanceof Uint8Array)return iS(e,void 0);if(e instanceof ArrayBuffer)return iS(new Uint8Array(e),void 0);if(e instanceof ReadableStream)return e.getReader();throw new Error("Source of `toByteStreamReader` has to be a ArrayBuffer or ReadableStream")}(s),t=t,new aS(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.qs.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(Rk(i));const a=new Nk(i,t.localStore,n.serializer);let e=await n.bc();for(;e;){const t=await a.zu(e);t&&r._updateProgress(t),e=await n.bc()}var s=await a.complete();return await Hk(t,s.Ju,void 0),await function(e,t){const n=e;return n.persistence.runTransaction("Save bundle","readwrite",e=>n.qs.saveBundleMetadata(e,t))}(t.localStore,i),r._completeWith(s.progress),Promise.resolve(s.Hu)}catch(t){return M_("SyncEngine",`Loading bundle failed with ${t}`),r._failWith(t),Promise.resolve(new Set)}}(r,t,n).then(e=>{r.sharedClientState.notifyBundleLoaded(e)})}(await yS(e),i,r)})}function TS(e){const t={};return void 0!==e.timeoutSeconds&&(t.timeoutSeconds=e.timeoutSeconds),t}const ES=new Map;function CS(e,t,n){if(!n)throw new q_(V_.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function kS(e,t,n,r){if(!0===t&&!0===r)throw new q_(V_.INVALID_ARGUMENT,`${e} and ${n} cannot be used together.`)}function SS(e){if(!aw.isDocumentKey(e))throw new q_(V_.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function AS(e){if(aw.isDocumentKey(e))throw new q_(V_.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function NS(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":F_();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 RS(e,t){if((e="_delegate"in e?e._delegate:e)instanceof t)return e;if(t.name===e.constructor.name)throw new q_(V_.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");var n=NS(e);throw new q_(V_.INVALID_ARGUMENT,`Expected type '${t.name}', but it was: ${n}`)}function DS(e,t){if(t<=0)throw new q_(V_.INVALID_ARGUMENT,`Function ${e}() requires a positive number, but it was: ${t}.`)}class PS{constructor(e){var t;if(void 0===e.host){if(void 0!==e.ssl)throw new q_(V_.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.cache=e.localCache,void 0===e.cacheSizeBytes)this.cacheSizeBytes=41943040;else{if(-1!==e.cacheSizeBytes&&e.cacheSizeBytes<1048576)throw new q_(V_.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}kS("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=TS(null!==(t=e.experimentalLongPollingOptions)&&void 0!==t?t:{}),function(e){if(void 0!==e.timeoutSeconds){if(isNaN(e.timeoutSeconds))throw new q_(V_.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (must not be NaN)`);if(e.timeoutSeconds<5)throw new q_(V_.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (minimum allowed value is 5)`);if(30<e.timeoutSeconds)throw new q_(V_.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 xS{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 PS({}),this._settingsFrozen=!1}get app(){if(!this._app)throw new q_(V_.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 q_(V_.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 PS(e),void 0!==e.credentials&&(this._authCredentials=function(e){if(!e)return new z_;switch(e.type){case"firstParty":return new G_(e.sessionIndex||"0",e.iamToken||null,e.authTokenFactory||null);case"provider":return e.client;default:throw new q_(V_.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=ES.get(e);t&&(x_("ComponentProvider","Removing Datastore"),ES.delete(e),t.terminate())}(this),Promise.resolve()}}class OS{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 LS(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new OS(this.firestore,e,this._key)}}class MS{constructor(e,t,n){this.converter=t,this._query=n,this.type="query",this.firestore=e}withConverter(e){return new MS(this.firestore,e,this._query)}}class LS extends MS{constructor(e,t,n){super(e,t,SI(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 OS(this.firestore,null,new aw(e))}withConverter(e){return new LS(this.firestore,e,this._path)}}function FS(e,t,...n){if(e=ae(e),CS("collection","path",t),e instanceof xS){var r=rw.fromString(t,...n);return AS(r),new LS(e,null,r)}if(!(e instanceof OS||e instanceof LS))throw new q_(V_.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");r=e._path.child(rw.fromString(t,...n));return AS(r),new LS(e.firestore,null,r)}function US(e,t,...n){if(e=ae(e),CS("doc","path",t=1===arguments.length?Y_.A():t),e instanceof xS){var r=rw.fromString(t,...n);return SS(r),new OS(e,null,new aw(r))}if(!(e instanceof OS||e instanceof LS))throw new q_(V_.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");r=e._path.child(rw.fromString(t,...n));return SS(r),new OS(e.firestore,e instanceof LS?e.converter:null,new aw(r))}function VS(e,t){return e=ae(e),t=ae(t),(e instanceof OS||e instanceof LS)&&(t instanceof OS||t instanceof LS)&&e.firestore===t.firestore&&e.path===t.path&&e.converter===t.converter}function qS(e,t){return e=ae(e),t=ae(t),e instanceof MS&&t instanceof MS&&e.firestore===t.firestore&&LI(e._query,t._query)&&e.converter===t.converter}class BS{constructor(){this.Gc=Promise.resolve(),this.Qc=[],this.jc=!1,this.zc=[],this.Wc=null,this.Hc=!1,this.Jc=!1,this.Yc=[],this.qo=new $C(this,"async_queue_retry"),this.Xc=()=>{var e=jC();e&&x_("AsyncQueue","Visibility state changed to "+e.visibilityState),this.qo.Mo()};const e=jC();e&&"function"==typeof e.addEventListener&&e.addEventListener("visibilitychange",this.Xc)}get isShuttingDown(){return this.jc}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.Zc(),this.ta(e)}enterRestrictedMode(e){if(!this.jc){this.jc=!0,this.Jc=e||!1;const t=jC();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this.Xc)}}enqueue(e){if(this.Zc(),this.jc)return new Promise(()=>{});const t=new B_;return this.ta(()=>this.jc&&this.Jc?Promise.resolve():(e().then(t.resolve,t.reject),t.promise)).then(()=>t.promise)}enqueueRetryable(e){this.enqueueAndForget(()=>(this.Qc.push(e),this.ea()))}async ea(){if(0!==this.Qc.length){try{await this.Qc[0](),this.Qc.shift(),this.qo.reset()}catch(e){if(!Ew(e))throw e;x_("AsyncQueue","Operation failed with retryable error: "+e)}0<this.Qc.length&&this.qo.No(()=>this.ea())}}ta(e){var t=this.Gc.then(()=>(this.Hc=!0,e().catch(e=>{throw this.Wc=e,this.Hc=!1,O_("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.Hc=!1,e))));return this.Gc=t}enqueueAfterDelay(e,t,n){this.Zc(),-1<this.Yc.indexOf(e)&&(t=0);var r=mk.createAndSchedule(this,e,t,n,e=>this.na(e));return this.zc.push(r),r}Zc(){this.Wc&&F_()}verifyOperationInProgress(){}async sa(){for(var e;await(e=this.Gc),e!==this.Gc;);}ia(e){for(const t of this.zc)if(t.timerId===e)return!0;return!1}ra(t){return this.sa().then(()=>{this.zc.sort((e,t)=>e.targetTimeMs-t.targetTimeMs);for(const e of this.zc)if(e.skipDelay(),"all"!==t&&e.timerId===t)break;return this.sa()})}oa(e){this.Yc.push(e)}na(e){var t=this.zc.indexOf(e);this.zc.splice(t,1)}}function jS(e){return function(e){if("object"==typeof e&&null!==e){var t=e;for(const e of["next","error","complete"])if(e in t&&"function"==typeof t[e])return 1}}(e)}class zS{constructor(){this._progressObserver={},this._taskCompletionResolver=new B_,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 $S,KS,WS,GS;class HS extends xS{constructor(e,t,n,r){super(e,t,n,r),this.type="firestore",this._queue=new BS,this._persistenceKey=(null==r?void 0:r.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||YS(this),this._firestoreClient.terminate()}}function QS(e){return e._firestoreClient||YS(e),e._firestoreClient.verifyNotTerminated(),e._firestoreClient}function YS(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 Ab(n,r,i,s.host,s.ssl,s.experimentalForceLongPolling,s.experimentalAutoDetectLongPolling,TS(s.experimentalLongPollingOptions),s.useFetchStreams));e._firestoreClient=new lS(e._authCredentials,e._appCheckCredentials,e._queue,o),null!==(o=a.cache)&&void 0!==o&&o._offlineComponentProvider&&null!==(t=a.cache)&&void 0!==t&&t._onlineComponentProvider&&(e._firestoreClient._uninitializedComponentsProvider={_offlineKind:a.cache.kind,_offline:a.cache._offlineComponentProvider,_online:a.cache._onlineComponentProvider})}function JS(e,t,n){const r=new B_;return e.asyncQueue.enqueue(async()=>{try{await uS(e,n),await hS(e,t),r.resolve()}catch(e){const t=e;if(!dS(t))throw t;M_("Error enabling indexeddb cache. Falling back to memory cache: "+t),r.reject(t)}}).then(()=>r.promise)}function XS(e){return function(e){const t=new B_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t){const n=e;sk(n.remoteStore)||x_("SyncEngine","The network is disabled. The task returned by 'awaitPendingWrites()' will not complete until the network is enabled.");try{const e=await function(){const t=n.localStore;return t.persistence.runTransaction("Get highest unacknowledged batch id","readonly",e=>t.mutationQueue.getHighestUnacknowledgedBatchId(e))}();if(-1===e)return void t.resolve();const r=n.Ec.get(e)||[];r.push(t),n.Ec.set(e,r)}catch(e){const n=vk(e,"Initialization of waitForPendingWrites() operation failed");t.reject(n)}}(await yS(e),t)),t.promise}(QS(e=RS(e,HS)))}function ZS(e){return(n=QS(e=RS(e,HS))).asyncQueue.enqueue(async()=>{const e=await gS(n),t=await vS(n);return e.setNetworkEnabled(!0),function(){const e=t;return e.vu.delete(0),JC(e)}()});var n}function eA(e){return(n=QS(e=RS(e,HS))).asyncQueue.enqueue(async()=>{const e=await gS(n),t=await vS(n);return e.setNetworkEnabled(!1),async function(){const e=t;e.vu.add(0),await XC(e),e.bu.set("Offline")}()});var n}function tA(t,e){return n=QS(t=RS(t,HS)),r=e,n.asyncQueue.enqueue(async()=>function(e,t){const n=e;return n.persistence.runTransaction("Get named query","readonly",e=>n.qs.getNamedQuery(e,t))}(await mS(n),r)).then(e=>e?new MS(t,null,e.query):null);var n,r}function nA(e){if(e._initialized||e._terminated)throw new q_(V_.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 rA{constructor(e){this._byteString=e}static fromBase64String(e){try{return new rA(wb.fromBase64String(e))}catch(e){throw new q_(V_.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new rA(wb.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 iA{constructor(...e){for(let t=0;t<e.length;++t)if(0===e[t].length)throw new q_(V_.INVALID_ARGUMENT,"Invalid field name at argument $(i + 1). Field names must not be empty.");this._internalPath=new sw(e)}isEqual(e){return this._internalPath.isEqual(e._internalPath)}}class sA{constructor(e){this._methodName=e}}class aA{constructor(e,t){if(!isFinite(e)||e<-90||90<e)throw new q_(V_.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||180<t)throw new q_(V_.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 J_(this._lat,e._lat)||J_(this._long,e._long)}}const oA=/^__.*__$/;class cA{constructor(e,t,n){this.data=e,this.fieldMask=t,this.fieldTransforms=n}toMutation(e,t){return null!==this.fieldMask?new bT(e,this.data,this.fieldMask,t,this.fieldTransforms):new wT(e,this.data,t,this.fieldTransforms)}}class lA{constructor(e,t,n){this.data=e,this.fieldMask=t,this.fieldTransforms=n}toMutation(e,t){return new bT(e,this.data,this.fieldMask,t,this.fieldTransforms)}}function uA(e){switch(e){case 0:case 2:case 1:return 1;case 3:case 4:return;default:throw F_()}}class hA{constructor(e,t,n,r,i,s){this.settings=e,this.databaseId=t,this.serializer=n,this.ignoreUndefinedProperties=r,void 0===i&&this.ua(),this.fieldTransforms=i||[],this.fieldMask=s||[]}get path(){return this.settings.path}get ca(){return this.settings.ca}aa(e){return new hA(Object.assign(Object.assign({},this.settings),e),this.databaseId,this.serializer,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}ha(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),r=this.aa({path:n,la:!1});return r.fa(e),r}da(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),r=this.aa({path:n,la:!1});return r.ua(),r}wa(e){return this.aa({path:void 0,la:!0})}_a(e){return DA(e,this.settings.methodName,this.settings.ma||!1,this.path,this.settings.ga)}contains(t){return void 0!==this.fieldMask.find(e=>t.isPrefixOf(e))||void 0!==this.fieldTransforms.find(e=>t.isPrefixOf(e.field))}ua(){if(this.path)for(let e=0;e<this.path.length;e++)this.fa(this.path.get(e))}fa(e){if(0===e.length)throw this._a("Document fields must not be empty");if(uA(this.ca)&&oA.test(e))throw this._a('Document fields cannot begin and end with "__"')}}class dA{constructor(e,t,n){this.databaseId=e,this.ignoreUndefinedProperties=t,this.serializer=n||zC(e)}ya(e,t,n,r=!1){return new hA({ca:e,methodName:t,ga:n,path:sw.emptyPath(),la:!1,ma:r},this.databaseId,this.serializer,this.ignoreUndefinedProperties)}}function pA(e){var t=e._freezeSettings(),n=zC(e._databaseId);return new dA(e._databaseId,!!t.ignoreUndefinedProperties,n)}function fA(e,t,n,r,i,s={}){const a=e.ya(s.merge||s.mergeFields?2:0,t,n,i);SA("Data must be an object, but it was:",a,r);var o=CA(r,a);let c,l;if(s.merge)c=new yb(a.fieldMask),l=a.fieldTransforms;else if(s.mergeFields){const e=[];for(const r of s.mergeFields){const i=AA(t,r,n);if(!a.contains(i))throw new q_(V_.INVALID_ARGUMENT,`Field '${i}' is specified in your field mask but missing from your input data.`);PA(e,i)||e.push(i)}c=new yb(e),l=a.fieldTransforms.filter(e=>c.covers(e.field))}else c=null,l=a.fieldTransforms;return new cA(new Hb(o),c,l)}class gA extends sA{_toFieldTransform(e){if(2!==e.ca)throw 1===e.ca?e._a(`${this._methodName}() can only appear at the top level of your update data`):e._a(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return e.fieldMask.push(e.path),null}isEqual(e){return e instanceof gA}}function mA(e,t,n){return new hA({ca:3,ga:t.settings.ga,methodName:e._methodName,la:n},t.databaseId,t.serializer,t.ignoreUndefinedProperties)}class vA extends sA{_toFieldTransform(e){return new hT(e.path,new rT)}isEqual(e){return e instanceof vA}}class yA extends sA{constructor(e,t){super(e),this.pa=t}_toFieldTransform(e){const t=mA(this,e,!0),n=this.pa.map(e=>EA(e,t)),r=new iT(n);return new hT(e.path,r)}isEqual(e){return this===e}}class _A extends sA{constructor(e,t){super(e),this.pa=t}_toFieldTransform(e){const t=mA(this,e,!0),n=this.pa.map(e=>EA(e,t)),r=new aT(n);return new hT(e.path,r)}isEqual(e){return this===e}}class wA extends sA{constructor(e,t){super(e),this.Ia=t}_toFieldTransform(e){var t=new cT(e.serializer,eT(e.serializer,this.Ia));return new hT(e.path,t)}isEqual(e){return this===e}}function bA(e,i,s,t){const a=e.ya(1,i,s);SA("Data must be an object, but it was:",a,t);const o=[],c=Hb.empty();ub(t,(e,t)=>{var n=RA(i,e,s);t=ae(t);var r=a.da(n);if(t instanceof gA)o.push(n);else{const e=EA(t,r);null!=e&&(o.push(n),c.set(n,e))}});var n=new yb(o);return new lA(c,n,a.fieldTransforms)}function IA(e,t,n,r,i,s){const a=e.ya(1,t,n),o=[AA(t,r,n)],c=[i];if(s.length%2!=0)throw new q_(V_.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(AA(t,s[p])),c.push(s[p+1]);const l=[],u=Hb.empty();for(let f=o.length-1;0<=f;--f)if(!PA(l,o[f])){const t=o[f];var h=ae(h=c[f]);const r=a.da(t);if(h instanceof gA)l.push(t);else{const e=EA(h,r);null!=e&&(l.push(t),u.set(t,e))}}var d=new yb(l);return new lA(u,d,a.fieldTransforms)}function TA(e,t,n,r=!1){return EA(n,e.ya(r?4:3,t))}function EA(s,e){if(kA(s=ae(s)))return SA("Unsupported field value:",e,s),CA(s,e);if(s instanceof sA)return function(e,t){if(!uA(t.ca))throw t._a(`${e._methodName}() can only be used with update() and set()`);if(!t.path)throw t._a(`${e._methodName}() is not currently supported inside arrays`);var n=e._toFieldTransform(t);n&&t.fieldTransforms.push(n)}(s,e),null;if(void 0===s&&e.ignoreUndefinedProperties)return null;if(e.path&&e.fieldMask.push(e.path),s instanceof Array){if(e.settings.la&&4!==e.ca)throw e._a("Nested arrays are not supported");return function(t){const n=[];let r=0;for(const i of s){let e=EA(i,t.wa(r));null==e&&(e={nullValue:"NULL_VALUE"}),n.push(e),r++}return{arrayValue:{values:n}}}(e)}return function(e,t){if(null===(e=ae(s)))return{nullValue:"NULL_VALUE"};if("number"==typeof e)return eT(t.serializer,e);if("boolean"==typeof e)return{booleanValue:e};if("string"==typeof e)return{stringValue:e};if(e instanceof Date){var n=ew.fromDate(e);return{timestampValue:t0(t.serializer,n)}}if(e instanceof ew){n=new ew(e.seconds,1e3*Math.floor(e.nanoseconds/1e3));return{timestampValue:t0(t.serializer,n)}}if(e instanceof aA)return{geoPointValue:{latitude:e.latitude,longitude:e.longitude}};if(e instanceof rA)return{bytesValue:n0(t.serializer,e._byteString)};if(e instanceof OS){const r=t.databaseId,i=e.firestore._databaseId;if(!i.isEqual(r))throw t._a(`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._a(`Unsupported field value: ${NS(e)}`)}(0,e)}function CA(e,r){const i={};return hb(e)?r.path&&0<r.path.length&&r.fieldMask.push(r.path):ub(e,(e,t)=>{var n=EA(t,r.ha(e));null!=n&&(i[e]=n)}),{mapValue:{fields:i}}}function kA(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof ew||e instanceof aA||e instanceof rA||e instanceof OS||e instanceof sA)}function SA(e,t,n){if(!kA(n)||("object"!=typeof(i=n)||null===i||Object.getPrototypeOf(i)!==Object.prototype&&null!==Object.getPrototypeOf(i))){var r=NS(n);throw"an object"===r?t._a(e+" a custom object"):t._a(e+" "+r)}var i}function AA(e,t,n){if((t=ae(t))instanceof iA)return t._internalPath;if("string"==typeof t)return RA(e,t);throw DA("Field path arguments must be of type string or ",e,!1,void 0,n)}const NA=new RegExp("[~\\*/\\[\\]]");function RA(t,n,r){if(0<=n.search(NA))throw DA(`Invalid field path (${n}). Paths must not contain '~', '*', '/', '[', or ']'`,t,!1,void 0,r);try{return new iA(...n.split("."))._internalPath}catch(e){throw DA(`Invalid field path (${n}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,t,!1,void 0,r)}}function DA(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 q_(V_.INVALID_ARGUMENT,o+e+c)}function PA(e,t){return e.some(e=>e.isEqual(t))}class xA{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 OS(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){var e=new OA(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(MA("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class OA extends xA{data(){return super.data()}}function MA(e,t){return"string"==typeof t?RA(e,t):(t instanceof iA?t:t._delegate)._internalPath}function LA(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new q_(V_.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class FA{}class UA extends FA{}function VA(e,t,...n){let r=[];t instanceof FA&&r.push(t),r=r.concat(n),function(e){var t=e.filter(e=>e instanceof BA).length,n=e.filter(e=>e instanceof qA).length;if(1<t||0<t&&0<n)throw new q_(V_.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 qA extends UA{constructor(e,t,n){super(),this._field=e,this._op=t,this._value=n,this.type="where"}static _create(e,t,n){return new qA(e,t,n)}_apply(e){var t=this._parse(e);return QA(e._query,t),new MS(e.firestore,e.converter,OI(e._query,t))}_parse(e){var t=pA(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 q_(V_.INVALID_ARGUMENT,`Invalid Query. You can't perform '${s}' queries on documentId().`);if("in"===s||"not-in"===s){HA(a,s);const t=[];for(const n of a)t.push(GA(r,e,n));o={arrayValue:{values:t}}}else o=GA(r,e,a)}else"in"!==s&&"not-in"!==s&&"array-contains-any"!==s||HA(a,s),o=TA(n,t,a,"in"===s||"not-in"===s);return tI.create(i,s,o)}(e._query,"where",t,e.firestore._databaseId,this._field,this._op,this._value)}}class BA extends FA{constructor(e,t){super(),this.type=e,this._queryConstraints=t}static _create(e,t){return new BA(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]:nI.create(e,this._getOperator())}_apply(e){const n=this._parse(e);return 0===n.getFilters().length?e:(function(e){let t=e;for(const e of n.getFlattenedFilters())QA(t,e),t=OI(t,e)}(e._query),new MS(e.firestore,e.converter,OI(e._query,n)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return"and"===this.type?"and":"or"}}class jA extends UA{constructor(e,t){super(),this._field=e,this._direction=t,this.type="orderBy"}static _create(e,t){return new jA(e,t)}_apply(e){var t=function(e,t,n){if(null!==e.startAt)throw new q_(V_.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(null!==e.endAt)throw new q_(V_.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");var r,i=new Zb(t,n);return n=i,null!==NI(e=e)||null!==(r=RI(e))&&YA(0,r,n.field),i}(e._query,this._field,this._direction);return new MS(e.firestore,e.converter,(e=e._query,t=e.explicitOrderBy.concat([t]),new CI(e.path,e.collectionGroup,t,e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)))}}class zA extends UA{constructor(e,t,n){super(),this.type=e,this._limit=t,this._limitType=n}static _create(e,t,n){return new zA(e,t,n)}_apply(e){return new MS(e.firestore,e.converter,MI(e._query,this._limit,this._limitType))}}class $A extends UA{constructor(e,t,n){super(),this.type=e,this._docOrFields=t,this._inclusive=n}static _create(e,t,n){return new $A(e,t,n)}_apply(e){var t,n=WA(e,this.type,this._docOrFields,this._inclusive);return new MS(e.firestore,e.converter,(t=e._query,e=n,new CI(t.path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,e,t.endAt)))}}class KA extends UA{constructor(e,t,n){super(),this.type=e,this._docOrFields=t,this._inclusive=n}static _create(e,t,n){return new KA(e,t,n)}_apply(e){var t,n=WA(e,this.type,this._docOrFields,this._inclusive);return new MS(e.firestore,e.converter,(t=e._query,e=n,new CI(t.path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,e)))}}function WA(e,t,n,r){if(n[0]=ae(n[0]),n[0]instanceof xA)return function(e,t,n,r,i){if(!r)throw new q_(V_.NOT_FOUND,`Can't use a DocumentSnapshot that doesn't exist for ${n}().`);const s=[];for(const n of PI(e))if(n.field.isKeyField())s.push(Ub(t,r.key));else{const e=r.data.field(n.field);if(Cb(e))throw new q_(V_.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 q_(V_.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 Yb(s,i)}(e._query,e.firestore._databaseId,t,n[0]._document,r);var i=pA(e.firestore);return function(e,t,n,r,i,s){const a=e.explicitOrderBy;if(i.length>a.length)throw new q_(V_.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 q_(V_.INVALID_ARGUMENT,`Invalid query. Expected a string for document ID in ${r}(), but got a ${typeof l}`);if(!DI(e)&&-1!==l.indexOf("/"))throw new q_(V_.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(rw.fromString(l));if(!aw.isDocumentKey(n))throw new q_(V_.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 aw(n);o.push(Ub(t,i))}else{const e=TA(n,r,l);o.push(e)}}return new Yb(o,s)}(e._query,e.firestore._databaseId,i,t,n,r)}function GA(e,t,n){if("string"==typeof(n=ae(n))){if(""===n)throw new q_(V_.INVALID_ARGUMENT,"Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.");if(!DI(t)&&-1!==n.indexOf("/"))throw new q_(V_.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(rw.fromString(n));if(!aw.isDocumentKey(r))throw new q_(V_.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 Ub(e,new aw(r))}if(n instanceof OS)return Ub(e,n._key);throw new q_(V_.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${NS(n)}.`)}function HA(e,t){if(!Array.isArray(e)||0===e.length)throw new q_(V_.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${t.toString()}' filters.`)}function QA(e,t){if(t.isInequality()){const r=RI(e),i=t.field;if(null!==r&&!r.isEqual(i))throw new q_(V_.INVALID_ARGUMENT,`Invalid query. All where filters with an inequality (<, <=, !=, not-in, >, or >=) must be on the same field. But you have inequality filters on '${r.toString()}' and '${i.toString()}'`);var n=NI(e);null!==n&&YA(0,i,n)}const r=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(){switch(t.op){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[]}}());if(null!==r)throw r===t.op?new q_(V_.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new q_(V_.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${r.toString()}' filters.`)}function YA(e,t,n){if(!n.isEqual(t))throw new q_(V_.INVALID_ARGUMENT,`Invalid query. You have a where filter with an inequality (<, <=, !=, not-in, >, or >=) on field '${t.toString()}' and so you must also use '${t.toString()}' as your first argument to orderBy(), but your first orderBy() is on field '${n.toString()}' instead.`)}class JA{convertValue(e,t="none"){switch(Pb(e)){case 0:return null;case 1:return e.booleanValue;case 2:return Tb(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(Eb(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 F_()}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,n="none"){const r={};return ub(e,(e,t)=>{r[e]=this.convertValue(t,n)}),r}convertGeoPoint(e){return new aA(Tb(e.latitude),Tb(e.longitude))}convertArray(e,t){return(e.values||[]).map(e=>this.convertValue(e,t))}convertServerTimestamp(e,t){switch(t){case"previous":var n=kb(e);return null==n?null:this.convertValue(n,t);case"estimate":return this.convertTimestamp(Sb(e));default:return null}}convertTimestamp(e){var t=Ib(e);return new ew(t.seconds,t.nanos)}convertDocumentKey(e,t){const n=rw.fromString(e);U_(T0(n));const r=new Nb(n.get(1),n.get(3)),i=new aw(n.popFirst(5));return r.isEqual(t)||O_(`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 XA(e,t,n){return e?n&&(n.merge||n.mergeFields)?e.toFirestore(t,n):e.toFirestore(t):t}class ZA extends JA{constructor(e){super(),this.firestore=e}convertBytes(e){return new rA(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new OS(this.firestore,null,t)}}class eN{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class tN extends xA{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 nN(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(MA("DocumentSnapshot.get",e));if(null!==n)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}}class nN extends tN{data(e={}){return super.data(e)}}class rN{constructor(e,t,n,r){this._firestore=e,this._userDataWriter=t,this._snapshot=r,this.metadata=new eN(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 nN(this._firestore,this._userDataWriter,e.key,e,new eN(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 q_(V_.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 nN(s._firestore,s._userDataWriter,e.doc.key,e.doc,new eN(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 nN(s._firestore,s._userDataWriter,e.doc.key,e.doc,new eN(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 F_()}}(e.type),doc:t,oldIndex:n,newIndex:r}})}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}function iN(e,t){return e instanceof tN&&t instanceof tN?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 rN&&t instanceof rN&&e._firestore===t._firestore&&qS(e.query,t.query)&&e.metadata.isEqual(t.metadata)&&e._snapshot.isEqual(t._snapshot)}class sN extends JA{constructor(e){super(),this.firestore=e}convertBytes(e){return new rA(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new OS(this.firestore,null,t)}}function aN(t){t=RS(t,OS);const n=RS(t.firestore,HS),e=QS(n),r=new sN(n);return function(e,t){const n=new B_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await function(t){const n=e;return n.persistence.runTransaction("read document","readonly",e=>n.localDocuments.getDocument(e,t))}(t);i.isFoundDocument()?n.resolve(i):i.isNoDocument()?n.resolve(null):n.reject(new q_(V_.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=vk(e,`Failed to get document '${t} from cache`);n.reject(r)}}(await mS(e),t,n)),n.promise}(e,t._key).then(e=>new tN(n,r,t._key,e,new eN(null!==e&&e.hasLocalMutations,!0),t.converter))}function oN(t){t=RS(t,MS);const n=RS(t.firestore,HS),e=QS(n),r=new sN(n);return function(e,t){const n=new B_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await _C(e,t,!0),s=new xk(t,i.ir),a=s.sc(i.documents),o=s.applyChanges(a,!1);n.resolve(o.snapshot)}catch(e){var r=vk(e,`Failed to execute query '${t} against cache`);n.reject(r)}}(await mS(e),t,n)),n.promise}(e,t._query).then(e=>new rN(n,r,t,e))}function cN(e,t,n){e=RS(e,OS);var r=RS(e.firestore,HS),i=XA(e.converter,t,n);return dN(r,[fA(pA(r),"setDoc",e._key,i,null!==e.converter,n).toMutation(e._key,pT.none())])}function lN(e,t,n,...r){e=RS(e,OS);var i=RS(e.firestore,HS),s=pA(i);let a;return a="string"==typeof(t=ae(t))||t instanceof iA?IA(s,"updateDoc",e._key,t,n,r):bA(s,"updateDoc",e._key,t),dN(i,[a.toMutation(e._key,pT.exists(!0))])}function uN(t,...n){var e;t=ae(t);let r={includeMetadataChanges:!1},i=0;"object"!=typeof n[i]||jS(n[i])||(r=n[i],i++);var s={includeMetadataChanges:r.includeMetadataChanges};if(jS(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 OS)o=RS(t.firestore,HS),c=SI(t._key.path),a={next:e=>{n[i]&&n[i](pN(o,t,e))},error:n[i+1],complete:n[i+2]};else{const l=RS(t,MS);o=RS(l.firestore,HS),c=l._query;const u=new sN(o);a={next:e=>{n[i]&&n[i](new rN(o,u,l,e))},error:n[i+1],complete:n[i+2]},LA(t._query)}return function(e,t,n,r){const i=new sS(r),s=new kk(t,i,n);return e.asyncQueue.enqueueAndForget(async()=>Tk(await _S(e),s)),()=>{i.Dc(),e.asyncQueue.enqueueAndForget(async()=>Ek(await _S(e),s))}}(QS(o),c,s,a)}function hN(e,t){return function(e,t){const n=new sS(t);return e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.ku.add(t),t.next()}(await _S(e),n)),()=>{n.Dc(),e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.ku.delete(t)}(await _S(e),n))}}(QS(e=RS(e,HS)),jS(t)?t:{next:t})}function dN(e,t){return function(e,t){const n=new B_;return e.asyncQueue.enqueueAndForget(async()=>Uk(await yS(e),t,n)),n.promise}(QS(e),t)}function pN(e,t,n){var r=n.docs.get(t._key),i=new sN(e);return new tN(e,i,t._key,r,new eN(n.hasPendingWrites,n.fromCache),t.converter)}const fN={maxAttempts:5};class gN{constructor(e,t){this._firestore=e,this._commitHandler=t,this._mutations=[],this._committed=!1,this._dataReader=pA(e)}set(e,t,n){this._verifyNotCommitted();const r=mN(e,this._firestore),i=XA(r.converter,t,n),s=fA(this._dataReader,"WriteBatch.set",r._key,i,null!==r.converter,n);return this._mutations.push(s.toMutation(r._key,pT.none())),this}update(e,t,n,...r){this._verifyNotCommitted();var i=mN(e,this._firestore);let s;return s="string"==typeof(t=ae(t))||t instanceof iA?IA(this._dataReader,"WriteBatch.update",i._key,t,n,r):bA(this._dataReader,"WriteBatch.update",i._key,t),this._mutations.push(s.toMutation(i._key,pT.exists(!0))),this}delete(e){this._verifyNotCommitted();var t=mN(e,this._firestore);return this._mutations=this._mutations.concat(new CT(t._key,pT.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 q_(V_.FAILED_PRECONDITION,"A write batch can no longer be used after commit() has been called.")}}function mN(e,t){if((e=ae(e)).firestore!==t)throw new q_(V_.INVALID_ARGUMENT,"Provided document reference is from a different Firestore instance.");return e}class vN extends class{constructor(e,t){this._firestore=e,this._transaction=t,this._dataReader=pA(e)}get(e){const n=mN(e,this._firestore),r=new ZA(this._firestore);return this._transaction.lookup([n._key]).then(e=>{if(!e||1!==e.length)return F_();const t=e[0];if(t.isFoundDocument())return new xA(this._firestore,r,t.key,t,n.converter);if(t.isNoDocument())return new xA(this._firestore,r,n._key,null,n.converter);throw F_()})}set(e,t,n){var r=mN(e,this._firestore),i=XA(r.converter,t,n),i=fA(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=mN(e,this._firestore),s="string"==typeof(t=ae(t))||t instanceof iA?IA(this._dataReader,"Transaction.update",i._key,t,n,r):bA(this._dataReader,"Transaction.update",i._key,t);return this._transaction.update(i._key,s),this}delete(e){var t=mN(e,this._firestore);return this._transaction.delete(t._key),this}}{constructor(e,t){super(e,t),this._firestore=e}get(e){const t=mN(e,this._firestore),n=new sN(this._firestore);return super.get(e).then(e=>new tN(this._firestore,n,t._key,e._document,new eN(!1,!1),t.converter))}}function yN(t,n,e){t=RS(t,HS);var r=Object.assign(Object.assign({},fN),e);return function(){if(r.maxAttempts<1)throw new q_(V_.INVALID_ARGUMENT,"Max attempts must be at least 1")}(),function(t,n,r){const i=new B_;return t.asyncQueue.enqueueAndForget(async()=>{var e=await fS(t).then(e=>e.datastore);new cS(t.asyncQueue,e,r,n,i).run()}),i.promise}(QS(t),e=>n(new vN(t,e)),r)}sR=Ye,R_=sR,We(new oe("firestore",(e,{instanceIdentifier:t,options:n})=>{const r=e.getProvider("app").getImmediate(),i=new HS(new K_(e.getProvider("auth-internal")),new Q_(e.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new q_(V_.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new Nb(e.options.projectId,t)}(r,t),r);return n=Object.assign({useFetchStreams:!0},n),i._setSettings(n),i},"PUBLIC").setMultipleInstances(!0)),et(A_,"3.13.0",void 0),et(A_,"3.13.0","esm2017");function _N(e,t){if(void 0===t)return{merge:!1};if(void 0!==t.mergeFields&&void 0!==t.merge)throw new q_("invalid-argument",`Invalid options passed to function ${e}(): You cannot `+'specify both "merge" and "mergeFields".');return t}function wN(){if("undefined"==typeof Uint8Array)throw new q_("unimplemented","Uint8Arrays are not available in this environment.")}function bN(){if("undefined"==typeof atob)throw new q_("unimplemented","Blobs are unavailable in Firestore in this environment.")}class IN{constructor(e){this._delegate=e}static fromBase64String(e){return bN(),new IN(rA.fromBase64String(e))}static fromUint8Array(e){return wN(),new IN(rA.fromUint8Array(e))}toBase64(){return bN(),this._delegate.toBase64()}toUint8Array(){return wN(),this._delegate.toUint8Array()}isEqual(e){return this._delegate.isEqual(e._delegate)}toString(){return"Blob(base64: "+this.toBase64()+")"}}function TN(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 EN{enableIndexedDbPersistence(e,t){return function(e,t){nA(e=RS(e,HS));var n=QS(e);if(n._uninitializedComponentsProvider)throw new q_(V_.FAILED_PRECONDITION,"SDK cache is already specified.");M_("enableIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.");var r=e._freezeSettings(),i=new rS;return JS(n,i,new tS(i,r.cacheSizeBytes,null==t?void 0:t.forceOwnership))}(e._delegate,{forceOwnership:t})}enableMultiTabIndexedDbPersistence(e){return function(e){nA(e=RS(e,HS));var t=QS(e);if(t._uninitializedComponentsProvider)throw new q_(V_.FAILED_PRECONDITION,"SDK cache is already specified.");M_("enableMultiTabIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.");var n=e._freezeSettings(),r=new rS;return JS(t,r,new nS(r,n.cacheSizeBytes))}(e._delegate)}clearIndexedDbPersistence(e){return function(e){if(e._initialized&&!e._terminated)throw new q_(V_.FAILED_PRECONDITION,"Persistence can only be cleared before a Firestore instance is initialized or after it is terminated.");const t=new B_;return e._queue.enqueueAndForgetEvenWhileRestricted(async()=>{try{await async function(e){if(!bw.D())return Promise.resolve();var t=e+"main";await bw.delete(t)}(cC(e._databaseId,e._persistenceKey)),t.resolve()}catch(e){t.reject(e)}}),t.promise}(e._delegate)}}class CN{constructor(e,t,n){this._delegate=t,this._persistenceProvider=n,this.INTERNAL={delete:()=>this.terminate()},e instanceof Nb||(this._appCompat=e)}get _databaseId(){return this._delegate._databaseId}settings(e){var t=this._delegate._getSettings();e.merge||t.host===e.host||M_("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=RS(n,xS))._getSettings(),a=`${e}:${t}`;if("firestore.googleapis.com"!==s.host&&s.host!==a&&M_("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=N_.MOCK_USER;else{e=_(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 q_(V_.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");t=new N_(s)}n._authCredentials=new $_(new j_(e,t))}}(this._delegate,e,t,n)}enableNetwork(){return ZS(this._delegate)}disableNetwork(){return eA(this._delegate)}enablePersistence(e){let t=!1,n=!1;return e&&(t=!!e.synchronizeTabs,n=!!e.experimentalForceOwningTab,kS("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 XS(this._delegate)}onSnapshotsInSync(e){return hN(this._delegate,e)}get app(){if(!this._appCompat)throw new q_("failed-precondition","Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._appCompat}collection(e){try{return new VN(this,FS(this._delegate,e))}catch(e){throw DN(e,"collection()","Firestore.collection()")}}doc(e){try{return new RN(this,US(this._delegate,e))}catch(e){throw DN(e,"doc()","Firestore.doc()")}}collectionGroup(e){try{return new LN(this,function(e,t){if(e=RS(e,xS),CS("collectionGroup","collection id",t),0<=t.indexOf("/"))throw new q_(V_.INVALID_ARGUMENT,`Invalid collection ID '${t}' passed to function collectionGroup(). Collection IDs must not contain '/'.`);return new MS(e,null,(t=t,new CI(rw.emptyPath(),t)))}(this._delegate,e))}catch(e){throw DN(e,"collectionGroup()","Firestore.collectionGroup()")}}runTransaction(t){return yN(this._delegate,e=>t(new SN(this,e)))}batch(){return QS(this._delegate),new AN(new gN(this._delegate,e=>dN(this._delegate,e)))}loadBundle(e){return t=this._delegate,e=e,n=QS(t=RS(t,HS)),r=new zS,IS(n,t._databaseId,e,r),r;var t,n,r}namedQuery(e){return tA(this._delegate,e).then(e=>e?new LN(this,e):null)}}class kN extends JA{constructor(e){super(),this.firestore=e}convertBytes(e){return new IN(new rA(e))}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return RN.forKey(t,this.firestore,null)}}class SN{constructor(e,t){this._firestore=e,this._delegate=t,this._userDataWriter=new kN(e)}get(e){const t=qN(e);return this._delegate.get(t).then(e=>new ON(this._firestore,new tN(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,t.converter)))}set(e,t,n){var r=qN(e);return n?(_N("Transaction.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=qN(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=qN(e);return this._delegate.delete(t),this}}class AN{constructor(e){this._delegate=e}set(e,t,n){var r=qN(e);return n?(_N("WriteBatch.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=qN(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=qN(e);return this._delegate.delete(t),this}commit(){return this._delegate.commit()}}class NN{constructor(e,t,n){this._firestore=e,this._userDataWriter=t,this._delegate=n}fromFirestore(e,t){var n=new nN(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,null);return this._delegate.fromFirestore(new MN(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=NN.INSTANCES;let r=n.get(e);r||(r=new WeakMap,n.set(e,r));let i=r.get(t);return i||(i=new NN(e,new kN(e),t),r.set(t,i)),i}}NN.INSTANCES=new WeakMap;class RN{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new kN(e)}static forPath(e,t,n){if(e.length%2!=0)throw new q_("invalid-argument","Invalid document reference. Document references must have an even number of segments, but "+`${e.canonicalString()} has ${e.length}`);return new RN(t,new OS(t._delegate,n,new aw(e)))}static forKey(e,t,n){return new RN(t,new OS(t._delegate,n,e))}get id(){return this._delegate.id}get parent(){return new VN(this.firestore,this._delegate.parent)}get path(){return this._delegate.path}collection(e){try{return new VN(this.firestore,FS(this._delegate,e))}catch(e){throw DN(e,"collection()","DocumentReference.collection()")}}isEqual(e){return(e=ae(e))instanceof OS&&VS(this._delegate,e)}set(e,t){t=_N("DocumentReference.set",t);try{return t?cN(this._delegate,e,t):cN(this._delegate,e)}catch(e){throw DN(e,"setDoc()","DocumentReference.set()")}}update(e,t,...n){try{return 1===arguments.length?lN(this._delegate,e):lN(this._delegate,e,t,...n)}catch(e){throw DN(e,"updateDoc()","DocumentReference.update()")}}delete(){return dN(RS((e=this._delegate).firestore,HS),[new CT(e._key,pT.none())]);var e}onSnapshot(...e){var t=PN(e),n=xN(e,e=>new ON(this.firestore,new tN(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)));return uN(this._delegate,t,n)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?aN:"server"===(null==e?void 0:e.source)?function(t){t=RS(t,OS);const n=RS(t.firestore,HS);return wS(QS(n),t._key,{source:"server"}).then(e=>pN(n,t,e))}:function(t){t=RS(t,OS);const n=RS(t.firestore,HS);return wS(QS(n),t._key).then(e=>pN(n,t,e))})(this._delegate),t.then(e=>new ON(this.firestore,new tN(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)))}withConverter(e){return new RN(this.firestore,e?this._delegate.withConverter(NN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function DN(e,t,n){return e.message=e.message.replace(t,n),e}function PN(e){for(const t of e)if("object"==typeof t&&!TN(t))return t;return{}}function xN(e,t){var n;let r;return r=TN(e[0])?e[0]:TN(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 ON{constructor(e,t){this._firestore=e,this._delegate=t}get ref(){return new RN(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 iN(this._delegate,e._delegate)}}class MN extends ON{data(e){var t=this._delegate.data(e);return void 0!==t||F_(),t}}class LN{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new kN(e)}where(e,t,n){try{return new LN(this.firestore,VA(this._delegate,(r=n,i=t,s=MA("where",e),qA._create(s,i,r))))}catch(e){throw DN(e,/(orderBy|where)\(\)/,"Query.$1()")}var r,i,s}orderBy(e,t){try{return new LN(this.firestore,VA(this._delegate,([n,r="asc"]=[e,t],i=r,s=MA("orderBy",n),jA._create(s,i))))}catch(e){throw DN(e,/(orderBy|where)\(\)/,"Query.$1()")}var n,r,i,s}limit(e){try{return new LN(this.firestore,VA(this._delegate,(DS("limit",t=e),zA._create("limit",t,"F"))))}catch(e){throw DN(e,"limit()","Query.limit()")}var t}limitToLast(e){try{return new LN(this.firestore,VA(this._delegate,(DS("limitToLast",t=e),zA._create("limitToLast",t,"L"))))}catch(e){throw DN(e,"limitToLast()","Query.limitToLast()")}var t}startAt(...e){try{return new LN(this.firestore,VA(this._delegate,function(...e){return $A._create("startAt",e,!0)}(...e)))}catch(e){throw DN(e,"startAt()","Query.startAt()")}}startAfter(...e){try{return new LN(this.firestore,VA(this._delegate,function(...e){return $A._create("startAfter",e,!1)}(...e)))}catch(e){throw DN(e,"startAfter()","Query.startAfter()")}}endBefore(...e){try{return new LN(this.firestore,VA(this._delegate,function(...e){return KA._create("endBefore",e,!1)}(...e)))}catch(e){throw DN(e,"endBefore()","Query.endBefore()")}}endAt(...e){try{return new LN(this.firestore,VA(this._delegate,function(...e){return KA._create("endAt",e,!0)}(...e)))}catch(e){throw DN(e,"endAt()","Query.endAt()")}}isEqual(e){return qS(this._delegate,e._delegate)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?oN:"server"===(null==e?void 0:e.source)?function(t){t=RS(t,MS);const n=RS(t.firestore,HS),e=QS(n),r=new sN(n);return bS(e,t._query,{source:"server"}).then(e=>new rN(n,r,t,e))}:function(t){t=RS(t,MS);const n=RS(t.firestore,HS),e=QS(n),r=new sN(n);return LA(t._query),bS(e,t._query).then(e=>new rN(n,r,t,e))})(this._delegate),t.then(e=>new UN(this.firestore,new rN(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)))}onSnapshot(...e){var t=PN(e),n=xN(e,e=>new UN(this.firestore,new rN(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)));return uN(this._delegate,t,n)}withConverter(e){return new LN(this.firestore,e?this._delegate.withConverter(NN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}class FN{constructor(e,t){this._firestore=e,this._delegate=t}get type(){return this._delegate.type}get doc(){return new MN(this._firestore,this._delegate.doc)}get oldIndex(){return this._delegate.oldIndex}get newIndex(){return this._delegate.newIndex}}class UN{constructor(e,t){this._firestore=e,this._delegate=t}get query(){return new LN(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 MN(this._firestore,e))}docChanges(e){return this._delegate.docChanges(e).map(e=>new FN(this._firestore,e))}forEach(t,n){this._delegate.forEach(e=>{t.call(n,new MN(this._firestore,e))})}isEqual(e){return iN(this._delegate,e._delegate)}}class VN extends LN{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 RN(this.firestore,e):null}doc(e){try{return void 0===e?new RN(this.firestore,US(this._delegate)):new RN(this.firestore,US(this._delegate,e))}catch(e){throw DN(e,"doc()","CollectionReference.doc()")}}add(e){return function(e,t){const n=RS(e.firestore,HS),r=US(e),i=XA(e.converter,t);return dN(n,[fA(pA(e.firestore),"addDoc",r._key,i,null!==e.converter,{}).toMutation(r._key,pT.exists(!1))]).then(()=>r)}(this._delegate,e).then(e=>new RN(this.firestore,e))}isEqual(e){return VS(this._delegate,e._delegate)}withConverter(e){return new VN(this.firestore,e?this._delegate.withConverter(NN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function qN(e){return RS(e,OS)}const BN={Firestore:CN,GeoPoint:aA,Timestamp:ew,Blob:IN,Transaction:SN,WriteBatch:AN,DocumentReference:RN,DocumentSnapshot:ON,Query:LN,QueryDocumentSnapshot:MN,QuerySnapshot:UN,CollectionReference:VN,FieldPath:class Y1{constructor(...e){this._delegate=new iA(...e)}static documentId(){return new Y1(sw.keyField().canonicalString())}isEqual(e){return(e=ae(e))instanceof iA&&this._delegate._internalPath.isEqual(e._internalPath)}},FieldValue:class J1{constructor(e){this._delegate=e}static serverTimestamp(){const e=new vA("serverTimestamp");return e._methodName="FieldValue.serverTimestamp",new J1(e)}static delete(){const e=new gA("deleteField");return e._methodName="FieldValue.delete",new J1(e)}static arrayUnion(...e){const t=function(...e){return new yA("arrayUnion",e)}(...e);return t._methodName="FieldValue.arrayUnion",new J1(t)}static arrayRemove(...e){const t=function(...e){return new _A("arrayRemove",e)}(...e);return t._methodName="FieldValue.arrayRemove",new J1(t)}static increment(e){const t=new wA("increment",e);return t._methodName="FieldValue.increment",new J1(t)}isEqual(e){return this._delegate.isEqual(e._delegate)}},setLogLevel:function(e){e=e,D_.setLogLevel(e)},CACHE_SIZE_UNLIMITED:-1};$S=wt,KS=(e,t)=>new CN(e,t,new EN),$S.INTERNAL.registerComponent(new oe("firestore-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("firestore").getImmediate();return KS(t,n)},"PUBLIC").setServiceProps(Object.assign({},BN))),$S.registerVersion("@firebase/firestore-compat","0.3.12");const jN="type.googleapis.com/google.protobuf.Int64Value",zN="type.googleapis.com/google.protobuf.UInt64Value";function $N(e,t){const n={};for(const r in e)e.hasOwnProperty(r)&&(n[r]=t(e[r]));return n}function KN(e){if(null==e)return e;if(e["@type"])switch(e["@type"]){case jN:case zN: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=>KN(e)):"function"==typeof e||"object"==typeof e?$N(e,e=>KN(e)):e}const WN="functions",GN={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 HN extends R{constructor(e,t,n){super(`${WN}/${e}`,t||""),this.details=n}}function QN(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(!GN[e])return new HN("internal","internal");n=GN[e],r=e}var a=s.message;"string"==typeof a&&(r=a),i=s.details,void 0!==i&&(i=KN(i))}}catch(e){}return"ok"===n?null:new HN(n,r,i)}class YN{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 JN="us-central1";class XN{constructor(e,t,n,r,i=JN,s){this.app=e,this.fetchImpl=s,this.emulatorOrigin=null,this.contextProvider=new YN(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=JN}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 ZN(i,s,a){return e=>{return t=e,n=a||{},r=(e=i)._url(s),eR(e,r,t,n);var t,n,r}}async function eR(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 $N(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 HN("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 HN("cancelled","Firebase Functions instance was deleted.");i=QN(a.status,a.json);if(i)throw i;if(!a.json)throw new HN("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 HN("internal","Response is missing data field.");return{data:KN(c)}}const tR="@firebase/functions";function nR(e,t,n){ae(e).emulatorOrigin=`http://${t}:${n}`}function rR(e,t,n){return r=ae(e),i=t,s=n,e=>eR(r,i,e,s||{});var r,i,s}WS=fetch.bind(self),We(new oe(WN,(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 XN(n,r,i,s,t,WS)},"PUBLIC").setMultipleInstances(!0)),et(tR,"0.10.0",GS),et(tR,"0.10.0","esm2017");var iR,sR,aR,oR,cR;class lR{constructor(e,t){this.app=e,this._delegate=t,this._region=this._delegate.region,this._customDomain=this._delegate.customDomain}httpsCallable(e,t){return ZN(ae(this._delegate),e,t)}httpsCallableFromURL(e,t){return rR(this._delegate,e,t)}useFunctionsEmulator(e){var t=e.match("[a-zA-Z]+://([a-zA-Z0-9.-]+)(?::([0-9]+))?");if(null==t)throw new R("functions","No origin provided to useFunctionsEmulator()");if(null==t[2])throw new R("functions","Port missing in origin provided to useFunctionsEmulator()");return nR(this._delegate,t[1],Number(t[2]))}useEmulator(e,t){return nR(this._delegate,e,t)}}const uR="us-central1",hR=(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("functions").getImmediate({identifier:null!=t?t:uR});return new lR(n,r)};iR={Functions:lR},wt.INTERNAL.registerComponent(new oe("functions-compat",hR,"PUBLIC").setServiceProps(iR).setMultipleInstances(!0)),wt.registerVersion("@firebase/functions-compat","0.3.5");const dR="/firebase-messaging-sw.js",pR="/firebase-cloud-messaging-push-scope",fR="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",gR="https://fcmregistrations.googleapis.com/v1",mR="google.c.a.c_id",vR="google.c.a.e";function yR(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(sR=Px=Px||{})[sR.DATA_MESSAGE=1]="DATA_MESSAGE",sR[sR.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(il=aR=aR||{}).PUSH_RECEIVED="push-received",il.NOTIFICATION_CLICKED="notification-clicked";const _R="fcm_token_details_db",wR="fcm_token_object_Store";async function bR(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(_R))return null}let l=null;const e=await Re(_R,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(wR)){const o=r.objectStore(wR);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:yR(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:yR(s.auth),p256dh:yR(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:yR(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:yR(a.auth),p256dh:yR(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:yR(a.vapidKey)}}))}}});return e.close(),await De(_R),await De("fcm_vapid_details_db"),await De("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 IR="firebase-messaging-database",TR=1,ER="firebase-messaging-store";let CR=null;function kR(){return CR=CR||Re(IR,TR,{upgrade:(e,t)=>{0===t&&e.createObjectStore(ER)}}),CR}async function SR(e){var t=NR(e);const n=await kR();t=await n.transaction(ER).objectStore(ER).get(t);if(t)return t;t=await bR(e.appConfig.senderId);return t?(await AR(e,t),t):void 0}async function AR(e,t){var n=NR(e);const r=await kR(),i=r.transaction(ER,"readwrite");return await i.objectStore(ER).put(t,n),await i.done,t}function NR({appConfig:e}){return e.appId}const RR=new D("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 DR(e,t){var n={method:"DELETE",headers:await xR(e)};try{const s=await fetch(`${PR(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw RR.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw RR.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function PR({projectId:e}){return`${gR}/projects/${e}/registrations`}async function xR({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 OR({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==fR&&(i.web.applicationPubKey=r),i}const MR=6048e5;async function LR(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:yR(t.getKey("auth")),p256dh:yR(t.getKey("p256dh"))},c=await SR(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+MR?async function(t,e){try{var n=await async function(e,t){var n=await xR(e),r=OR(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${PR(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw RR.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw RR.create("token-update-failed",{errorInfo:r})}if(!i.token)throw RR.create("token-update-no-token");return i.token}(t.firebaseDependencies,e),r=Object.assign(Object.assign({},e),{token:n,createTime:Date.now()});return await AR(t.firebaseDependencies,r),n}catch(e){throw await FR(t),e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await DR(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return UR(e.firebaseDependencies,o)}return UR(e.firebaseDependencies,o)}async function FR(e){var t=await SR(e.firebaseDependencies);t&&(await DR(e.firebaseDependencies,t.token),await async function(e){var t=NR(e);const n=await kR(),r=n.transaction(ER,"readwrite");await r.objectStore(ER).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function UR(e,t){var n={token:await async function(e,t){var n=await xR(e),r=OR(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(PR(e.appConfig),r);i=await s.json()}catch(e){throw RR.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw RR.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw RR.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await AR(e,n),n.token}function VR(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 qR(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 BR(e){return RR.create("missing-app-config-values",{valueName:e})}qR("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),qR("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class jR{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 BR("App Configuration Object");if(!e.name)throw BR("App Name");var t=e["options"];for(const n of["projectId","apiKey","appId","messagingSenderId"])if(!t[n])throw BR(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 zR(e){try{e.swRegistration=await navigator.serviceWorker.register(dR,{scope:pR}),e.swRegistration.update().catch(()=>{})}catch(e){throw RR.create("failed-service-worker-registration",{browserErrorMessage:null==e?void 0:e.message})}}async function $R(e,t){if(!navigator)throw RR.create("only-available-in-window");if("default"===Notification.permission&&await Notification.requestPermission(),"granted"!==Notification.permission)throw RR.create("permission-blocked");var n,r;return n=e,await((r=null==t?void 0:t.vapidKey)?n.vapidKey=r:n.vapidKey||(n.vapidKey=fR)),await async function(e,t){if(t||e.swRegistration||await zR(e),t||!e.swRegistration){if(!(t instanceof ServiceWorkerRegistration))throw RR.create("invalid-sw-registration");e.swRegistration=t}}(e,null==t?void 0:t.serviceWorkerRegistration),LR(e)}async function KR(e,t,n){var r=function(e){switch(e){case aR.NOTIFICATION_CLICKED:return"notification_open";case aR.PUSH_RECEIVED:return"notification_foreground";default:throw new Error}}(t);const i=await e.firebaseDependencies.analyticsProvider.get();i.logEvent(r,{message_id:n[mR],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 WR(e,t){var n,r=t.data;r.isFirebaseMessaging&&(e.onMessageHandler&&r.messageType===aR.PUSH_RECEIVED&&("function"==typeof e.onMessageHandler?e.onMessageHandler(VR(r)):e.onMessageHandler.next(VR(r))),n=r.data,"object"==typeof(t=n)&&t&&mR in t&&"1"===n[vR]&&await KR(e,r.messageType,n))}const GR="@firebase/messaging",HR=e=>{const t=new jR(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return navigator.serviceWorker.addEventListener("message",e=>WR(t,e)),t},QR=e=>{const t=e.getProvider("messaging").getImmediate();return{getToken:e=>$R(t,e)}};function YR(e){return async function(e){if(!navigator)throw RR.create("only-available-in-window");return e.swRegistration||await zR(e),FR(e)}(e=ae(e))}function JR(e,t){return function(e,t){if(!navigator)throw RR.create("only-available-in-window");return e.onMessageHandler=t,()=>{e.onMessageHandler=null}}(e=ae(e),t)}We(new oe("messaging",HR,"PUBLIC")),We(new oe("messaging-internal",QR,"PRIVATE")),et(GR,"0.12.4"),et(GR,"0.12.4","esm2017");const XR="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",ZR="https://fcmregistrations.googleapis.com/v1",eD="FCM_MSG",tD="google.c.a.c_id",nD=3,rD=1;function iD(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(il=oR=oR||{})[il.DATA_MESSAGE=1]="DATA_MESSAGE",il[il.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(il=cR=cR||{}).PUSH_RECEIVED="push-received",il.NOTIFICATION_CLICKED="notification-clicked";const sD="fcm_token_details_db",aD="fcm_token_object_Store";async function oD(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(sD))return null}let l=null;const e=await Re(sD,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(aD)){const o=r.objectStore(aD);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:iD(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:iD(s.auth),p256dh:iD(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:iD(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:iD(a.auth),p256dh:iD(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:iD(a.vapidKey)}}))}}});return e.close(),await De(sD),await De("fcm_vapid_details_db"),await De("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 cD="firebase-messaging-database",lD=1,uD="firebase-messaging-store";let hD=null;function dD(){return hD=hD||Re(cD,lD,{upgrade:(e,t)=>{0===t&&e.createObjectStore(uD)}}),hD}async function pD(e){var t=gD(e);const n=await dD();t=await n.transaction(uD).objectStore(uD).get(t);if(t)return t;t=await oD(e.appConfig.senderId);return t?(await fD(e,t),t):void 0}async function fD(e,t){var n=gD(e);const r=await dD(),i=r.transaction(uD,"readwrite");return await i.objectStore(uD).put(t,n),await i.done,t}function gD({appConfig:e}){return e.appId}const mD=new D("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 vD(e,t){var n={method:"DELETE",headers:await _D(e)};try{const s=await fetch(`${yD(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw mD.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw mD.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function yD({projectId:e}){return`${ZR}/projects/${e}/registrations`}async function _D({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 wD({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==XR&&(i.web.applicationPubKey=r),i}async function bD(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:iD(t.getKey("auth")),p256dh:iD(t.getKey("p256dh"))},c=await pD(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 _D(e),r=wD(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${yD(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw mD.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw mD.create("token-update-failed",{errorInfo:r})}if(!i.token)throw mD.create("token-update-no-token");return i.token}(t.firebaseDependencies,e),r=Object.assign(Object.assign({},e),{token:n,createTime:Date.now()});return await fD(t.firebaseDependencies,r),n}catch(e){throw await ID(t),e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await vD(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return TD(e.firebaseDependencies,o)}return TD(e.firebaseDependencies,o)}async function ID(e){var t=await pD(e.firebaseDependencies);t&&(await vD(e.firebaseDependencies,t.token),await async function(e){var t=gD(e);const n=await dD(),r=n.transaction(uD,"readwrite");await r.objectStore(uD).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function TD(e,t){var n={token:await async function(e,t){var n=await _D(e),r=wD(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(yD(e.appConfig),r);i=await s.json()}catch(e){throw mD.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw mD.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw mD.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await fD(e,n),n.token}async function ED(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=oR.DISPLAY_NOTIFICATION.toString():r.message_type=oR.DATA_MESSAGE.toString();r.sdk_platform=nD.toString(),r.package_name=self.origin.replace(/(^\w+:|^)\/\//,""),e.collapse_key&&(r.collapse_key=e.collapse_key);r.event=rD.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){const n={};n.event_time_ms=Math.floor(Date.now()).toString(),n.source_extension_json_proto3=JSON.stringify(t),e.logEvents.push(n)}(e,n)}function CD(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 kD(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 ED(t,n);var r,i,s,a,o=await AD();if(o.some(e=>"visible"===e.visibilityState&&!e.url.startsWith("chrome-extension://")))return function(e,t){t.isFirebaseMessaging=!0,t.messageType=cR.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={[eD]: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 SD(e){const t=null===(s=null===(i=e.notification)||void 0===i?void 0:i.data)||void 0===s?void 0:s[eD];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&&tD 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 AD();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=cR.NOTIFICATION_CLICKED,t.isFirebaseMessaging=!0,e.postMessage(t)}}}}function AD(){return self.clients.matchAll({type:"window",includeUncontrolled:!0})}function ND(e){return mD.create("missing-app-config-values",{valueName:e})}CD("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),CD("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class RD{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 ND("App Configuration Object");if(!e.name)throw ND("App Name");var t=e["options"];for(const n of["projectId","apiKey","appId","messagingSenderId"])if(!t[n])throw ND(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 DD=e=>{const t=new RD(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return self.addEventListener("push",e=>{e.waitUntil(kD(e,t))}),self.addEventListener("pushsubscriptionchange",e=>{e.waitUntil(async function(e,t){var n;(n=e["newSubscription"])?(n=await pD(t.firebaseDependencies),await ID(t),t.vapidKey=null!==(n=null===(n=null==n?void 0:n.subscriptionOptions)||void 0===n?void 0:n.vapidKey)&&void 0!==n?n:XR,await bD(t)):await ID(t)}(e,t))}),self.addEventListener("notificationclick",e=>{e.waitUntil(SD(e))}),t};function PD(e,t){return function(e,t){if(void 0!==self.document)throw mD.create("only-available-in-sw");return e.onBackgroundMessageHandler=t,()=>{e.onBackgroundMessageHandler=null}}(e=ae(e),t)}We(new oe("messaging-sw",DD,"PUBLIC"));var xD,OD,MD,LD;class FD{constructor(e,t){this.app=e,this._delegate=t,this.app=e,this._delegate=t}async getToken(e){return async function(e,t){return $R(e=ae(e),t)}(this._delegate,e)}async deleteToken(){return YR(this._delegate)}onMessage(e){return JR(this._delegate,e)}onBackgroundMessage(e){return PD(this._delegate,e)}}const UD=e=>self&&"ServiceWorkerGlobalScope"in self?new FD(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging-sw").getImmediate()):new FD(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging").getImmediate()),VD={isSupported:function(){return self&&"ServiceWorkerGlobalScope"in self?S()&&"PushManager"in self&&"Notification"in self&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey"):"undefined"!=typeof window&&S()&&N()&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&"fetch"in window&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")}};wt.INTERNAL.registerComponent(new oe("messaging-compat",UD,"PUBLIC").setServiceProps(VD)),wt.registerVersion("@firebase/messaging-compat","0.2.4");const qD="firebasestorage.googleapis.com",BD="storageBucket";class jD extends R{constructor(e,t,n=0){super(zD(e),`Firebase Storage: ${t} (${zD(e)})`),this.status_=n,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,jD.prototype)}get status(){return this.status_}set status(e){this.status_=e}_codeEquals(e){return zD(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 zD(e){return"storage/"+e}function $D(){return new jD(xD.UNKNOWN,"An unknown error occurred, please check the error payload for server response.")}function KD(){return new jD(xD.RETRY_LIMIT_EXCEEDED,"Max retry time for operation exceeded, please try again.")}function WD(){return new jD(xD.CANCELED,"User canceled the upload/download.")}function GD(){return new jD(xD.CANNOT_SLICE_BLOB,"Cannot slice blob for upload. Please retry the upload.")}function HD(e){return new jD(xD.INVALID_ARGUMENT,e)}function QD(){return new jD(xD.APP_DELETED,"The Firebase app was deleted.")}function YD(e){return new jD(xD.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 JD(e,t){return new jD(xD.INVALID_FORMAT,"String does not match format '"+e+"': "+t)}function XD(e){throw new jD(xD.INTERNAL_ERROR,"Internal error: "+e)}(It=xD=xD||{}).UNKNOWN="unknown",It.OBJECT_NOT_FOUND="object-not-found",It.BUCKET_NOT_FOUND="bucket-not-found",It.PROJECT_NOT_FOUND="project-not-found",It.QUOTA_EXCEEDED="quota-exceeded",It.UNAUTHENTICATED="unauthenticated",It.UNAUTHORIZED="unauthorized",It.UNAUTHORIZED_APP="unauthorized-app",It.RETRY_LIMIT_EXCEEDED="retry-limit-exceeded",It.INVALID_CHECKSUM="invalid-checksum",It.CANCELED="canceled",It.INVALID_EVENT_NAME="invalid-event-name",It.INVALID_URL="invalid-url",It.INVALID_DEFAULT_BUCKET="invalid-default-bucket",It.NO_DEFAULT_BUCKET="no-default-bucket",It.CANNOT_SLICE_BLOB="cannot-slice-blob",It.SERVER_FILE_WRONG_SIZE="server-file-wrong-size",It.NO_DOWNLOAD_URL="no-download-url",It.INVALID_ARGUMENT="invalid-argument",It.INVALID_ARGUMENT_COUNT="invalid-argument-count",It.APP_DELETED="app-deleted",It.INVALID_ROOT_OPERATION="invalid-root-operation",It.INVALID_FORMAT="invalid-format",It.INTERNAL_ERROR="internal-error",It.UNSUPPORTED_ENVIRONMENT="unsupported-environment";class ZD{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=ZD.makeFromUrl(t,e)}catch(e){return new ZD(t,"")}if(""===n.path)return n;throw t=t,new jD(xD.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===qD?"(?: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 ZD(u,e),d.postModify(n);break}}if(null==n)throw t=e,new jD(xD.INVALID_URL,"Invalid URL '"+t+"'.");return n}}class eP{constructor(e){this.promise_=Promise.reject(e)}getPromise(){return this.promise_}cancel(e=0){}}function tP(e){return"string"==typeof e||e instanceof String}function nP(e){return rP()&&e instanceof Blob}function rP(){return"undefined"!=typeof Blob&&!I()}function iP(e,t,n,r){if(r<t)throw HD(`Invalid value for '${e}'. Expected ${t} or greater.`);if(n<r)throw HD(`Invalid value for '${e}'. Expected ${n} or less.`)}function sP(e,t,n){let r=null==n?`https://${t}`:t;return`${n}://${r}/v0${e}`}function aP(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 oP(e,t){var n=500<=e&&e<600,r=-1!==[408,429].indexOf(e),i=-1!==t.indexOf(e);return n||r||i}(It=OD=OD||{})[It.NO_ERROR=0]="NO_ERROR",It[It.NETWORK_ERROR=1]="NETWORK_ERROR",It[It.ABORT=2]="ABORT";class cP{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 lP(!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()===OD.NO_ERROR,t=r.getStatus();!e||oP(t,this.additionalRetryCodes_)&&this.retry?(e=r.getErrorCode()===OD.ABORT,n(!1,new lP(!1,null,e))):(t=-1!==this.successCodes_.indexOf(t),n(!0,new lP(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=$D();o.serverResponse=i.getErrorText(),this.errorCallback_?r(this.errorCallback_(i,o)):r(o)}else{var a;t.canceled?(a=(this.appDelete_?QD:WD)(),r(a)):(a=KD(),r(a))}};this.canceled_?t(0,new lP(!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 lP{constructor(e,t,n){this.wasSuccessCode=e,this.connection=t,this.canceled=!!n}}function uP(...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(rP())return new Blob(t);throw new jD(xD.UNSUPPORTED_ENVIRONMENT,"This browser doesn't seem to support creating Blobs")}function hP(e){if("undefined"==typeof atob)throw new jD(xD.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 dP={RAW:"raw",BASE64:"base64",BASE64URL:"base64url",DATA_URL:"data_url"};class pP{constructor(e,t){this.data=e,this.contentType=t||null}}function fP(e,t){switch(e){case dP.RAW:return new pP(gP(t));case dP.BASE64:case dP.BASE64URL:return new pP(mP(e,t));case dP.DATA_URL:return new pP((n=t,(r=new vP(n)).base64?mP(dP.BASE64,r.rest):function(e){let t;try{t=decodeURIComponent(e)}catch(e){throw JD(dP.DATA_URL,"Malformed data URL.")}return gP(t)}(r.rest)),(n=t,new vP(n).contentType))}var n,r;throw $D()}function gP(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 mP(t,e){switch(t){case dP.BASE64:var n=-1!==e.indexOf("-"),r=-1!==e.indexOf("_");if(n||r)throw JD(t,"Invalid character '"+(n?"-":"_")+"' found: is it base64url encoded?");break;case dP.BASE64URL:r=-1!==e.indexOf("+"),n=-1!==e.indexOf("/");if(r||n)throw JD(t,"Invalid character '"+(r?"+":"/")+"' found: is it base64 encoded?");e=e.replace(/-/g,"+").replace(/_/g,"/")}let i;try{i=hP(e)}catch(e){if(e.message.includes("polyfill"))throw e;throw JD(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 vP{constructor(e){this.base64=!1,this.contentType=null;var t,n,r=e.match(/^data:([^,]+)?,/);if(null===r)throw JD(dP.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 yP{constructor(e,t){let n=0,r="";nP(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(nP(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 yP(n)}var r,i,s,n=new Uint8Array(this.data_.buffer,e,t-e);return new yP(n,!0)}static getBlob(...e){if(rP()){var t=e.map(e=>e instanceof yP?e.data_:e);return new yP(uP.apply(null,t))}{const r=e.map(e=>tP(e)?fP(dP.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 yP(i,!0)}}uploadData(){return this.data_}}function _P(e){let t;try{t=JSON.parse(e)}catch(e){return null}return"object"!=typeof(e=t)||Array.isArray(e)?null:t}function wP(e){var t=e.lastIndexOf("/",e.length-2);return-1===t?e:e.slice(t+1)}function bP(e,t){return t}class IP{constructor(e,t,n,r){this.server=e,this.local=t||e,this.writable=!!n,this.xform=r||bP}}let TP=null;function EP(){if(TP)return TP;const e=[];e.push(new IP("bucket")),e.push(new IP("generation")),e.push(new IP("metageneration")),e.push(new IP("name","fullPath",!0));const t=new IP("name");t.xform=function(e,t){return!tP(t=t)||t.length<2?t:wP(t)},e.push(t);const n=new IP("size");return n.xform=function(e,t){return void 0!==t?Number(t):t},e.push(n),e.push(new IP("timeCreated")),e.push(new IP("updated")),e.push(new IP("md5Hash",null,!0)),e.push(new IP("cacheControl",null,!0)),e.push(new IP("contentDisposition",null,!0)),e.push(new IP("contentEncoding",null,!0)),e.push(new IP("contentLanguage",null,!0)),e.push(new IP("contentType",null,!0)),e.push(new IP("metadata","customMetadata",!0)),TP=e,TP}function CP(n,r){Object.defineProperty(n,"ref",{get:function(){var e=n.bucket,t=n.fullPath,t=new ZD(e,t);return r._makeStorageReference(t)}})}function kP(e,t,n){var r=_P(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 CP(r,e),r}(e,r,n)}function SP(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 AP="prefixes";function NP(e,t,n){var r=_P(n);return null===r?null:function(e,t,n){const r={prefixes:[],items:[],nextPageToken:n.nextPageToken};if(n[AP])for(const a of n[AP]){var i=a.replace(/\/$/,""),i=e._makeStorageReference(new ZD(t,i));r.prefixes.push(i)}if(n.items)for(const o of n.items){var s=e._makeStorageReference(new ZD(t,o.name));r.items.push(s)}return r}(e,t,r)}class RP{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 DP(e){if(!e)throw $D()}function PP(r,i){return function(e,t){var n=kP(r,t,i);return DP(null!==n),n}}function xP(r,i){return function(e,t){var n=NP(r,i,t);return DP(null!==n),n}}function OP(r,i){return function(e,t){var n=kP(r,t,i);return DP(null!==n),function(r,e,i,s){var t=_P(e);if(null===t)return null;if(!tP(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 sP("/b/"+a(t)+"/o/"+a(n),i,s)+aP({alt:"media",token:e})})[0]}(n,t,r.host,r._protocol)}}function MP(i){return function(e,t){let n;var r;return n=401===e.getStatus()?e.getErrorText().includes("Firebase App Check token is invalid")?new jD(xD.UNAUTHORIZED_APP,"This app does not have permission to access Firebase Storage on this project."):new jD(xD.UNAUTHENTICATED,"User is not authenticated, please authenticate using Firebase Authentication and try again."):402===e.getStatus()?(r=i.bucket,new jD(xD.QUOTA_EXCEEDED,"Quota for bucket '"+r+"' exceeded, please view quota on https://firebase.google.com/pricing/.")):403===e.getStatus()?(r=i.path,new jD(xD.UNAUTHORIZED,"User does not have permission to access '"+r+"'.")):t,n.status=e.getStatus(),n.serverResponse=t.serverResponse,n}}function LP(r){const i=MP(r);return function(e,t){let n=i(e,t);return 404===e.getStatus()&&(n=(e=r.path,new jD(xD.OBJECT_NOT_FOUND,"Object '"+e+"' does not exist."))),n.serverResponse=t.serverResponse,n}}function FP(e,t,n){var r=sP(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime;const s=new RP(r,"GET",PP(e,n),i);return s.errorHandler=LP(t),s}function UP(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 VP(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=UP(t,r,i),l="--"+o+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+SP(c,n)+"\r\n--"+o+"\r\nContent-Type: "+c.contentType+"\r\n\r\n",o="\r\n--"+o+"--";const u=yP.getBlob(l,r,o);if(null===u)throw GD();o={name:c.fullPath},c=sP(s,e.host,e._protocol),s=e.maxUploadRetryTime;const h=new RP(c,"POST",PP(e,n),s);return h.urlParams=o,h.headers=a,h.body=u.uploadData(),h.errorHandler=MP(t),h}class qP{constructor(e,t,n,r){this.current=e,this.total=t,this.finalized=!!n,this.metadata=r||null}}function BP(e,t){let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Status")}catch(e){DP(!1)}const r=t||["active"];return DP(!!n&&-1!==r.indexOf(n)),n}function jP(e,t,n,r,i){var s=t.bucketOnlyServerUrl(),a=UP(t,r,i),o={name:a.fullPath},c=sP(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=SP(a,n),a=e.maxUploadRetryTime;const u=new RP(c,"POST",function(e){BP(e);let t;try{t=e.getResponseHeader("X-Goog-Upload-URL")}catch(e){DP(!1)}return DP(tP(t)),t},a);return u.urlParams=o,u.headers=l,u.body=s,u.errorHandler=MP(t),u}function zP(e,t,n,i){var r=e.maxUploadRetryTime;const s=new RP(n,"POST",function(e){var t=BP(e,["active","final"]);let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Size-Received")}catch(e){DP(!1)}n||DP(!1);var r=Number(n);return DP(!isNaN(r)),new qP(r,i.size(),"final"===t)},r);return s.headers={"X-Goog-Upload-Command":"query"},s.errorHandler=MP(t),s}function $P(e,a,t,o,n,c,r,i){const l=new qP(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 jD(xD.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 GD();d=a.maxUploadRetryTime;const g=new RP(t,"POST",function(e,t){var n=BP(e,["active","final"]),r=l.current+u,i=o.size();let s;return s="final"===n?PP(a,c)(e,t):null,new qP(r,i,"final"===n,s)},d);return g.headers=s,g.body=f.uploadData(),g.progressCallback=i||null,g.errorHandler=MP(e),g}const KP={STATE_CHANGED:"state_changed"},WP={RUNNING:"running",PAUSED:"paused",SUCCESS:"success",CANCELED:"canceled",ERROR:"error"};function GP(e){switch(e){case"running":case"pausing":case"canceling":return WP.RUNNING;case"paused":return WP.PAUSED;case"success":return WP.SUCCESS;case"canceled":return WP.CANCELED;default:return WP.ERROR}}class HP{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 QP(t){return(...e)=>{Promise.resolve().then(()=>t(...e))}}class YP extends class{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=OD.NO_ERROR,this.sendPromise_=new Promise(e=>{this.xhr_.addEventListener("abort",()=>{this.errorCode_=OD.ABORT,e()}),this.xhr_.addEventListener("error",()=>{this.errorCode_=OD.NETWORK_ERROR,e()}),this.xhr_.addEventListener("load",()=>{e()})})}send(e,t,n,r){if(this.sent_)throw XD("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 XD("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw XD("cannot .getStatus() before sending");try{return this.xhr_.status}catch(e){return-1}}getResponse(){if(!this.sent_)throw XD("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw XD("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 JP(){return new YP}class XP{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=EP(),this._resumable=this._shouldDoResumable(this._blob),this._state="running",this._errorHandler=e=>{if(this._request=void 0,this._chunkMultiplier=1,e._codeEquals(xD.CANCELED))this._needToFetchStatus=!0,this.completeTransitions_();else{var t=this.isExponentialBackoffExpired();if(oP(e.status,[])){if(!t)return this.sleepTime=Math.max(2*this.sleepTime,1e3),this._needToFetchStatus=!0,void this.completeTransitions_();e=KD()}this._error=e,this._transition("error")}},this._metadataErrorHandler=e=>{this._request=void 0,e._codeEquals(xD.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=jP(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,JP,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=zP(this._ref.storage,this._ref._location,i,this._blob);const r=this._ref.storage._makeRequest(n,JP,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 qP(this._transferred,this._blob.size()),a=this._uploadUrl;this._resolveToken((e,t)=>{let n;try{n=$P(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,JP,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=FP(this._ref.storage,this._ref._location,this._mappings);const r=this._ref.storage._makeRequest(n,JP,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=VP(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,JP,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=WD(),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=GP(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 HP(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(GP(this._state)){case WP.SUCCESS:QP(this._resolve.bind(null,this.snapshot))();break;case WP.CANCELED:case WP.ERROR:const t=this._reject;QP(t.bind(null,this._error))();break;default:e=!1}e&&(this._resolve=void 0,this._reject=void 0)}}_notifyObserver(e){switch(GP(this._state)){case WP.RUNNING:case WP.PAUSED:e.next&&QP(e.next.bind(e,this.snapshot))();break;case WP.SUCCESS:e.complete&&QP(e.complete.bind(e))();break;case WP.CANCELED:case WP.ERROR:default:e.error&&QP(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 ZP{constructor(e,t){this._service=e,t instanceof ZD?this._location=t:this._location=ZD.makeFromUrl(t,e.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(e,t){return new ZP(e,t)}get root(){var e=new ZD(this._location.bucket,"");return this._newRef(this._service,e)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return wP(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 ZD(this._location.bucket,e);return new ZP(this._service,e)}_throwIfRoot(e){if(""===this._location.path)throw YD(e)}}function ex(e){const t={prefixes:[],items:[]};return async function e(t,n,r){const i={pageToken:r};const s=await tx(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 tx(e,t){null!=t&&"number"==typeof t.maxResults&&iP("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=sP(t.bucketOnlyServerUrl(),e.host,e._protocol),o=e.maxOperationRetryTime;const c=new RP(a,"GET",xP(e,t.bucket),o);return c.urlParams=s,c.errorHandler=MP(t),c}(e.storage,e._location,"/",n.pageToken,n.maxResults);return e.storage.makeRequestWithTokens(n,JP)}function nx(e,t){e._throwIfRoot("updateMetadata");var n=function(e,t,n,r){var i=sP(t.fullServerUrl(),e.host,e._protocol),s=SP(n,r),a=e.maxOperationRetryTime;const o=new RP(i,"PATCH",PP(e,r),a);return o.headers={"Content-Type":"application/json; charset=utf-8"},o.body=s,o.errorHandler=LP(t),o}(e.storage,e._location,t,EP());return e.storage.makeRequestWithTokens(n,JP)}function rx(e){e._throwIfRoot("getDownloadURL");var t=function(e,t,n){var r=sP(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime;const s=new RP(r,"GET",OP(e,n),i);return s.errorHandler=LP(t),s}(e.storage,e._location,EP());return e.storage.makeRequestWithTokens(t,JP).then(e=>{if(null===e)throw new jD(xD.NO_DOWNLOAD_URL,"The given file does not have any download URLs.");return e})}function ix(e){e._throwIfRoot("deleteObject");var t=function(e,t){var n=sP(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime;const i=new RP(n,"DELETE",function(e,t){},r);return i.successCodes=[200,204],i.errorHandler=LP(t),i}(e.storage,e._location);return e.storage.makeRequestWithTokens(t,JP)}function sx(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 ZD(e._location.bucket,r);return new ZP(e.storage,r)}function ax(e,t){if(e instanceof lx){var n=e;if(null==n._bucket)throw new jD(xD.NO_DEFAULT_BUCKET,"No default bucket found. Did you set the '"+BD+"' property when initializing the app?");n=new ZP(n,n._bucket);return null!=t?ax(n,t):n}return void 0!==t?sx(e,t):e}function ox(e,t){if(t&&/^[A-Za-z]+:\/\//.test(t)){if(e instanceof lx)return n=e,r=t,new ZP(n,r);throw HD("To use ref(service, url), the first argument must be a Storage instance.")}return ax(e,t);var n,r}function cx(e,t){var n=null==t?void 0:t[BD];return null==n?null:ZD.makeFromBucketSpec(n,e)}class lx{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=qD,this._protocol="https",this._appId=null,this._deleted=!1,this._maxOperationRetryTime=12e4,this._maxUploadRetryTime=6e5,this._requests=new Set,this._bucket=null!=r?ZD.makeFromBucketSpec(r,this._host):cx(this._host,this.app.options)}get host(){return this._host}set host(e){this._host=e,null!=this._url?this._bucket=ZD.makeFromBucketSpec(this._url,e):this._bucket=cx(e,this.app.options)}get maxUploadRetryTime(){return this._maxUploadRetryTime}set maxUploadRetryTime(e){iP("time",0,Number.POSITIVE_INFINITY,e),this._maxUploadRetryTime=e}get maxOperationRetryTime(){return this._maxOperationRetryTime}set maxOperationRetryTime(e){iP("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 ZP(this,e)}_makeRequest(e,t,n,r,i=!0){if(this._deleted)return new eP(QD());{const u=([s,a,o,e,n,r,t=!0]=[e,this._appId,n,r,t,this._firebaseVersion,i],c=aP(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 cP(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 ux="@firebase/storage";function hx(e,t,n){return e=ae(e),t=t,n=n,(e=e)._throwIfRoot("uploadBytesResumable"),new XP(e,new yP(t),n)}function dx(e){return function(e){e._throwIfRoot("getMetadata");var t=FP(e.storage,e._location,EP());return e.storage.makeRequestWithTokens(t,JP)}(e=ae(e))}function px(e,t){return ox(e=ae(e),t)}function fx(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:_(i,e.app.options.projectId))}(e,t,n,r)}function gx(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("app-check-internal");return new lx(n,r,i,t,Ye)}We(new oe("storage",gx,"PUBLIC").setMultipleInstances(!0)),et(ux,"0.11.2",""),et(ux,"0.11.2","esm2017");class mx{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 vx{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 mx(this._delegate.snapshot,this,this._ref)}then(t,e){return this._delegate.then(e=>{if(t)return t(new mx(e,this,this._ref))},e)}on(e,t,n,r){let i=void 0;return t&&(i="function"==typeof t?e=>t(new mx(e,this,this._ref)):{next:t.next?e=>t.next(new mx(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 yx{constructor(e,t){this._delegate=e,this._service=t}get prefixes(){return this._delegate.prefixes.map(e=>new _x(e,this._service))}get items(){return this._delegate.items.map(e=>new _x(e,this._service))}get nextPageToken(){return this._delegate.nextPageToken||null}}class _x{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=sx(this._delegate,e);return new _x(t,this.storage)}get root(){return new _x(this._delegate.root,this.storage)}get parent(){var e=this._delegate.parent;return null==e?null:new _x(e,this.storage)}put(e,t){return this._throwIfRoot("put"),new vx(hx(this._delegate,e,t),this)}putString(e,t=dP.RAW,n){this._throwIfRoot("putString");var r=fP(t,e);const i=Object.assign({},n);return null==i.contentType&&null!=r.contentType&&(i.contentType=r.contentType),new vx(new XP(this._delegate,new yP(r.data,!0),i),this)}listAll(){return ex(ae(this._delegate)).then(e=>new yx(e,this.storage))}list(e){return t=this._delegate,e=e||void 0,tx(t=ae(t),e).then(e=>new yx(e,this.storage));var t}getMetadata(){return dx(this._delegate)}updateMetadata(e){return nx(ae(this._delegate),e)}getDownloadURL(){return rx(ae(this._delegate))}delete(){return this._throwIfRoot("delete"),ix(ae(this._delegate))}_throwIfRoot(e){if(""===this._delegate._location.path)throw YD(e)}}class wx{constructor(e,t){this.app=e,this._delegate=t}get maxOperationRetryTime(){return this._delegate.maxOperationRetryTime}get maxUploadRetryTime(){return this._delegate.maxUploadRetryTime}ref(e){if(bx(e))throw HD("ref() expected a child path but got a URL, use refFromURL instead.");return new _x(px(this._delegate,e),this)}refFromURL(e){if(!bx(e))throw HD("refFromURL() expected a full URL but got a child path, use ref() instead.");try{ZD.makeFromUrl(e,this._delegate.host)}catch(e){throw HD("refFromUrl() expected a valid full URL but got an invalid one.")}return new _x(px(this._delegate,e),this)}setMaxUploadRetryTime(e){this._delegate.maxUploadRetryTime=e}setMaxOperationRetryTime(e){this._delegate.maxOperationRetryTime=e}useEmulator(e,t,n={}){fx(this._delegate,e,t,n)}}function bx(e){return/^[A-Za-z]+:\/\//.test(e)}function Ix(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("storage").getImmediate({identifier:t});return new wx(n,r)}MD=wt,LD={TaskState:WP,TaskEvent:KP,StringFormat:dP,Storage:wx,Reference:_x},MD.INTERNAL.registerComponent(new oe("storage-compat",Ix,"PUBLIC").setServiceProps(LD).setMultipleInstances(!0)),MD.registerVersion("@firebase/storage-compat","0.3.2");const Tx="@firebase/performance",Ex="0.6.4",Cx=Ex,kx="FB-PERF-TRACE-MEASURE",Sx="@firebase/performance/config",Ax="@firebase/performance/configexpire";var Nx,Rx,Dx,Px="Performance";const xx=new D("performance",Px,{"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."}),Ox=new me(Px);Ox.logLevel=m.INFO;let Mx,Lx;class Fx{constructor(e){if(!(this.window=e))throw xx.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&&N()?!!S()||(Ox.info("IndexedDB is not supported by current browser"),!1):(Ox.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===Mx&&(Mx=new Fx(Lx)),Mx}}let Ux;function Vx(e,t){var n=e.length-t.length;if(n<0||1<n)throw xx.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 qx;class Bx{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=Vx("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=Vx("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===qx&&(qx=new Bx),qx}}(It=Nx=Nx||{})[It.UNKNOWN=0]="UNKNOWN",It[It.VISIBLE=1]="VISIBLE",It[It.HIDDEN=2]="HIDDEN";const jx=["firebase_","google_","ga_"],zx=new RegExp("^[a-zA-Z]\\w*$");function $x(){switch(Fx.getInstance().document.visibilityState){case"visible":return Nx.VISIBLE;case"hidden":return Nx.HIDDEN;default:return Nx.UNKNOWN}}function Kx(e){var t=null===(t=e.options)||void 0===t?void 0:t.appId;if(!t)throw xx.create("no app id");return t}const Wx="0.0.1",Gx={loggingEnabled:!0},Hx="FIREBASE_INSTALLATIONS_AUTH";function Qx(e,t){var r,i,n=function(){const e=Fx.getInstance().localStorage;if(e){var t=e.getItem(Ax);if(t&&function(e){return Number(e)>Date.now()}(t)){t=e.getItem(Sx);if(t)try{return JSON.parse(t)}catch(e){return}}}}();return n?(Jx(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 xx.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 xx.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:`${Hx} ${e}`},body:JSON.stringify({app_instance_id:i,app_instance_id_token:e,app_id:Kx(r.app),app_version:Cx,sdk_version:Wx})});return fetch(n).then(e=>{if(e.ok)return e.json();throw xx.create("RC response not ok")})}).catch(()=>{Ox.info(Yx)}).then(Jx).then(e=>function(e){const t=Fx.getInstance().localStorage;e&&t&&(t.setItem(Sx,JSON.stringify(e)),t.setItem(Ax,String(Date.now()+60*Bx.getInstance().configTimeToLive*60*1e3)))}(e),()=>{}))}const Yx="Could not fetch config, will use default configs";function Jx(e){if(!e)return e;const t=Bx.getInstance();var n=e.entries||{};return void 0!==n.fpr_enabled?t.loggingEnabled="true"===String(n.fpr_enabled):t.loggingEnabled=Gx.loggingEnabled,n.fpr_log_source?t.logSource=Number(n.fpr_log_source):Gx.logSource&&(t.logSource=Gx.logSource),n.fpr_log_endpoint_url?t.logEndPointUrl=n.fpr_log_endpoint_url:Gx.logEndPointUrl&&(t.logEndPointUrl=Gx.logEndPointUrl),n.fpr_log_transport_key?t.transportKey=n.fpr_log_transport_key:Gx.transportKey&&(t.transportKey=Gx.transportKey),void 0!==n.fpr_vc_network_request_sampling_rate?t.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):void 0!==Gx.networkRequestsSamplingRate&&(t.networkRequestsSamplingRate=Gx.networkRequestsSamplingRate),void 0!==n.fpr_vc_trace_sampling_rate?t.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):void 0!==Gx.tracesSamplingRate&&(t.tracesSamplingRate=Gx.tracesSamplingRate),t.logTraceAfterSampling=Xx(t.tracesSamplingRate),t.logNetworkAfterSampling=Xx(t.networkRequestsSamplingRate),e}function Xx(e){return Math.random()<=e}let Zx=1,e1;function t1(e){var t;return Zx=2,e1=e1||(t=e,function(){const n=Fx.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=>{Ux=e}),t}(t.installations)).then(e=>Qx(t,e)).then(()=>n1(),()=>n1())),e1}function n1(){Zx=3}const r1=1e4,i1=3,s1=1e3;let a1=i1,o1=[],c1=!1;function l1(e){setTimeout(()=>{if(0!==a1)return o1.length?void function(){const e=o1.splice(0,s1),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:Bx.getInstance().logSource,log_event:t};!function(e,r){return function(e){var t=Bx.getInstance().getFlTransportFullUrl();return fetch(t,{method:"POST",body:JSON.stringify(e)})}(e).then(e=>(e.ok||Ox.info("Call to Firebase backend failed."),e.json())).then(e=>{var t=Number(e.nextRequestWaitMillis);let n=r1;isNaN(t)||(n=Math.max(t,n));t=e.logResponseDetails;Array.isArray(t)&&0<t.length&&"RETRY_REQUEST_LATER"===t[0].responseAction&&(o1=[...r,...o1],Ox.info("Retry transport request later.")),a1=i1,l1(n)})}(n,e).catch(()=>{o1=[...e,...o1],a1--,Ox.info(`Tries left: ${a1}.`),l1(r1)})}():l1(r1)},e)}function u1(t){return(...e)=>{!function(e){if(!e.eventTime||!e.message)throw xx.create("invalid cc log");o1=[...o1,e]}({message:t(...e),eventTime:Date.now()})}}let h1;function d1(e,t){h1=h1||u1(g1),h1(e,t)}function p1(e){var t=Bx.getInstance();!t.instrumentationEnabled&&e.isAuto||(t.dataCollectionEnabled||e.isAuto)&&Fx.getInstance().requiredApisAvailable()&&(e.isAuto&&$x()!==Nx.VISIBLE||(3===Zx?f1(e):t1(e.performanceController).then(()=>f1(e),()=>f1(e))))}function f1(e){var t;!Ux||(t=Bx.getInstance()).loggingEnabled&&t.logTraceAfterSampling&&setTimeout(()=>d1(e,1),0)}function g1(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:m1(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:m1(e.performanceController.app),trace_metric:t};return JSON.stringify(n)}(e);var n}function m1(e){return{google_app_id:Kx(e),app_instance_id:Ux,web_app_info:{sdk_version:Cx,page_url:Fx.getInstance().getUrl(),service_worker_status:null!=(t=Fx.getInstance().navigator)&&t.serviceWorker?t.serviceWorker.controller?2:3:1,visibility_state:$x(),effective_connection_type:function(){var e=Fx.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 v1=["_fp","_fcp","_fid"];class y1{constructor(e,t,n=!1,r){this.performanceController=e,this.name=t,this.isAuto=n,this.state=1,this.customAttributes={},this.counters={},this.api=Fx.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||`${kx}-${this.randomId}-${this.name}`,r&&this.calculateTraceMetrics())}start(){if(1!==this.state)throw xx.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(2!==this.state)throw xx.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(),p1(this)}record(e,t,n){if(e<=0)throw xx.create("nonpositive trace startTime",{traceName:this.name});if(t<=0)throw xx.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])));p1(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<v1.indexOf(r))&&r.startsWith("_"))throw xx.create("invalid custom metric name",{customMetricName:e});var n,r,i;this.counters[e]=(t=null!=t?t:0,(n=Math.floor(t))<t&&Ox.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)&&(!jx.some(e=>n.startsWith(e))&&!!n.match(zx)),s=0!==(r=t).length&&r.length<=100;if(i&&s)this.customAttributes[e]=t;else{if(!i)throw xx.create("invalid attribute name",{attributeName:e});if(!s)throw xx.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=Fx.getInstance().getUrl();if(i){const s=new y1(e,"_wt_"+i,!0);i=Math.floor(1e3*Fx.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))),p1(s)}}static createUserTimingTrace(e,t){p1(new y1(e,t,!1,t))}}function _1(e,t){const n=t;var r,i,s;n&&void 0!==n.responseStart&&(s=Fx.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=Bx.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(()=>d1(e,0),0))}({performanceController:e,url:n.name&&n.name.split("?")[0],responsePayloadBytes:n.transferSize,startTimeUs:r,timeToResponseInitiatedUs:i,timeToResponseCompletedUs:s}))}const w1=5e3;function b1(e){Ux&&(setTimeout(()=>function(n){const e=Fx.getInstance(),r=e.getEntriesByType("navigation"),i=e.getEntriesByType("paint");if(e.onFirstInputDelay){let t=setTimeout(()=>{y1.createOobTrace(n,r,i),t=void 0},w1);e.onFirstInputDelay(e=>{t&&(clearTimeout(t),y1.createOobTrace(n,r,i,e))})}else y1.createOobTrace(n,r,i)}(e),0),setTimeout(()=>function(t){const e=Fx.getInstance(),n=e.getEntriesByType("resource");for(const r of n)_1(t,r);e.setupObserver("resource",e=>_1(t,e))}(e),0),setTimeout(()=>function(t){const e=Fx.getInstance(),n=e.getEntriesByType("measure");for(const r of n)I1(t,r);e.setupObserver("measure",e=>I1(t,e))}(e),0))}function I1(e,t){const n=t.name;n.substring(0,kx.length)!==kx&&y1.createUserTimingTrace(e,n)}class T1{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),Fx.getInstance().requiredApisAvailable()?A().then(e=>{e&&(c1||(l1(5500),c1=!0),t1(this).then(()=>b1(this),()=>b1(this)),this.initialized=!0)}).catch(e=>{Ox.info(`Environment doesn't support IndexedDB: ${e}`)}):Ox.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){Bx.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return Bx.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){Bx.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return Bx.getInstance().dataCollectionEnabled}}const E1="[DEFAULT]";const C1=(e,{options:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if(n.name!==E1)throw xx.create("FB not default");if("undefined"==typeof window)throw xx.create("no window");e=window,Lx=e;const i=new T1(n,r);return i._init(t),i};We(new oe("performance",C1,"PUBLIC")),et(Tx,Ex),et(Tx,Ex,"esm2017");class k1{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=ae(t),new y1(t,e);var t}}function S1(e){var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("performance").getImmediate();return new k1(t,n)}(Rx=wt).INTERNAL.registerComponent(new oe("performance-compat",S1,"PUBLIC")),Rx.registerVersion("@firebase/performance-compat","0.2.4");const A1="@firebase/remote-config";class N1{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}const R1=new D("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 D1=["1","true","t","yes","y","on"];class P1{constructor(e,t=""){this._source=e,this._value=t}asString(){return this._value}asBoolean(){return"static"!==this._source&&0<=D1.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 x1(e){const t=ae(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 O1(e){const t=ae(e);return t._initializePromise||(t._initializePromise=t._storageCache.loadFromStorage().then(()=>{t._isInitializationComplete=!0})),t._initializePromise}async function M1(t){const n=ae(t),e=new N1;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 R&&-1!==t.code.indexOf(i)?"throttle":"failure");throw await n._storageCache.setLastFetchStatus(r),e}var i}function L1(n){const e=ae(n);return[t={},r={}]=[e._storageCache.getActiveConfig(),e.defaultConfig],Object.keys(Object.assign(Object.assign({},t),r)).reduce((e,t)=>(e[t]=F1(n,t),e),{});var t,r}function F1(e,t){const n=ae(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 P1("remote",r[t]):n.defaultConfig&&void 0!==n.defaultConfig[t]?new P1("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 P1("static"))}class U1{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 V1{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"),R1.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 R1.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 R1.create("fetch-status",{httpStatus:o});return{status:o,eTag:i,config:c}}}class q1{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(R1.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 R&&e.customData){var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}}(e))throw e;r={throttleEndTimeMillis:Date.now()+se(n),backoffCount:n+1};return await this.storage.setThrottleMetadata(r),this.attemptFetch(t,r)}}}class B1{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 j1(e,t){var n=e.target.error||void 0;return R1.create(t,{originalErrorMessage:n&&(null==n?void 0:n.message)})}const z1="app_namespace_store";class $1{constructor(e,t,n,r=function(){return new Promise((t,n)=>{try{const e=indexedDB.open("firebase_remote_config",1);e.onerror=e=>{n(j1(e,"storage-open"))},e.onsuccess=e=>{t(e.target.result)},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(z1,{keyPath:"compositeKey"})}}catch(e){n(R1.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([z1],"readonly"),r=e.objectStore(z1);var i=this.createCompositeKey(a);try{const s=r.get(i);s.onerror=e=>{t(j1(e,"storage-get"))},s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)}}catch(e){t(R1.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([z1],"readwrite"),r=n.objectStore(z1);var i=this.createCompositeKey(a);try{const s=r.put({compositeKey:i,value:o});s.onerror=e=>{t(j1(e,"storage-set"))},s.onsuccess=()=>{e()}}catch(e){t(R1.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([z1],"readwrite"),r=n.objectStore(z1);var i=this.createCompositeKey(a);try{const s=r.delete(i);s.onerror=e=>{t(j1(e,"storage-delete"))},s.onsuccess=()=>{e()}}catch(e){t(R1.create("storage-delete",{originalErrorMessage:null==e?void 0:e.message}))}})}createCompositeKey(e){return[this.appId,this.appName,this.namespace,e].join()}}class K1{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 W1(){if(!S())return!1;try{return await A()}catch(e){return!1}}We(new oe("remote-config",function(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if("undefined"==typeof window)throw R1.create("registration-window");if(!S())throw R1.create("indexed-db-unavailable");var{projectId:i,apiKey:s,appId:a}=n.options;if(!i)throw R1.create("registration-project-id");if(!s)throw R1.create("registration-api-key");if(!a)throw R1.create("registration-app-id");t=t||"firebase";const o=new $1(a,n.name,t),c=new K1(o),l=new me(A1);l.logLevel=m.ERROR;a=new V1(r,Ye,t,i,s,a),a=new q1(a,o),a=new U1(a,o,c,l),a=new B1(n,a,c,o,l);return O1(a),a},"PUBLIC").setMultipleInstances(!0)),et(A1,"0.4.4"),et(A1,"0.4.4","esm2017");class G1{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 x1(this._delegate)}ensureInitialized(){return O1(this._delegate)}fetch(){return M1(this._delegate)}fetchAndActivate(){return async function(e){return await M1(e=ae(e)),x1(e)}(this._delegate)}getAll(){return L1(this._delegate)}getBoolean(e){return F1(ae(this._delegate),e).asBoolean()}getNumber(e){return F1(ae(this._delegate),e).asNumber()}getString(e){return F1(ae(this._delegate),e).asString()}getValue(e){return F1(this._delegate,e)}setLogLevel(e){!function(e,t){const n=ae(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 H1(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("remote-config").getImmediate({identifier:t});return new G1(n,r)}return(Dx=wt).INTERNAL.registerComponent(new oe("remoteConfig-compat",H1,"PUBLIC").setMultipleInstances(!0).setServiceProps({isSupported:W1})),Dx.registerVersion("@firebase/remote-config-compat","0.2.4"),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"),wt.registerVersion("firebase","9.23.0","compat-cdn"),wt});
- //# sourceMappingURL=firebase-compat.js.map
|