{"version":3,"sources":["webpack:///firebase-app.js","webpack:/webpack/bootstrap 7522161e6896447ad4eb","webpack:///util/dist/cjs/index.js","webpack:///app/dist/esm/src/firebaseApp.js","webpack:///app/dist/esm/index.js","webpack:///(webpack)/buildin/global.js","webpack:///util/dist/cjs/src/constants.js","webpack:///usr/local/google/home/jshcrowthe/Repos/firebase-js-sdk/node_modules/process/browser.js","webpack:///util/dist/cjs/src/assert.js","webpack:///util/dist/cjs/src/crypt.js","webpack:///util/dist/cjs/src/json.js","webpack:///util/dist/cjs/src/obj.js","webpack:///app/index.js","webpack:///polyfill/dist/esm/index.js","webpack:///polyfill/dist/esm/src/polyfills/promise.js","webpack:///usr/local/google/home/jshcrowthe/Repos/firebase-js-sdk/node_modules/promise-polyfill/promise.js","webpack:///usr/local/google/home/jshcrowthe/Repos/firebase-js-sdk/node_modules/node-libs-browser/node_modules/timers-browserify/main.js","webpack:///usr/local/google/home/jshcrowthe/Repos/firebase-js-sdk/node_modules/setimmediate/setImmediate.js","webpack:///polyfill/dist/esm/src/shims/find.js","webpack:///polyfill/dist/esm/src/shims/findIndex.js","webpack:///util/dist/cjs/src/deepCopy.js","webpack:///util/dist/cjs/src/deferred.js","webpack:///util/dist/cjs/src/environment.js","webpack:///util/dist/cjs/src/errors.js","webpack:///util/dist/cjs/src/jwt.js","webpack:///util/dist/cjs/src/query.js","webpack:///util/dist/cjs/src/sha1.js","webpack:///util/dist/cjs/src/hash.js","webpack:///util/dist/cjs/src/subscribe.js","webpack:///util/dist/cjs/src/validation.js","webpack:///util/dist/cjs/src/utf8.js","webpack:///firebase-auth.js","webpack:///auth/index.js","webpack:///auth/dist/auth.js","webpack:///firebase-database.js","webpack:///database/dist/cjs/src/core/util/util.js","webpack:///database/dist/cjs/src/core/util/Path.js","webpack:///database/dist/cjs/src/core/snap/indexes/PriorityIndex.js","webpack:///database/dist/cjs/src/core/snap/ChildrenNode.js","webpack:///database/dist/cjs/src/core/snap/Node.js","webpack:///database/dist/cjs/src/core/util/validation.js","webpack:///database/dist/cjs/src/core/operation/Operation.js","webpack:///database/dist/cjs/src/core/view/Change.js","webpack:///database/dist/cjs/src/core/snap/indexes/KeyIndex.js","webpack:///database/dist/cjs/src/core/snap/nodeFromJSON.js","webpack:///database/dist/cjs/src/core/storage/storage.js","webpack:///database/dist/cjs/src/realtime/Constants.js","webpack:///database/dist/cjs/src/core/snap/indexes/Index.js","webpack:///database/dist/cjs/src/core/snap/LeafNode.js","webpack:///database/dist/cjs/src/core/util/SortedMap.js","webpack:///database/dist/cjs/src/core/Repo.js","webpack:///database/dist/cjs/src/core/view/CacheNode.js","webpack:///database/dist/cjs/src/api/Reference.js","webpack:///database/dist/cjs/src/api/DataSnapshot.js","webpack:///database/dist/cjs/src/core/util/ImmutableTree.js","webpack:///database/dist/cjs/src/core/view/filter/IndexedFilter.js","webpack:///database/dist/cjs/src/core/stats/StatsManager.js","webpack:///database/dist/cjs/src/core/RepoManager.js","webpack:///database/dist/cjs/src/api/Database.js","webpack:///database/dist/cjs/src/core/util/libs/parser.js","webpack:///database/dist/cjs/src/core/RepoInfo.js","webpack:///database/dist/cjs/src/api/onDisconnect.js","webpack:///database/dist/cjs/src/api/Query.js","webpack:///database/dist/cjs/src/core/snap/snap.js","webpack:///database/dist/cjs/src/core/snap/indexes/ValueIndex.js","webpack:///database/dist/cjs/src/core/snap/IndexMap.js","webpack:///database/dist/cjs/src/core/snap/childSet.js","webpack:///database/dist/cjs/src/core/snap/comparators.js","webpack:///database/dist/cjs/src/core/snap/indexes/PathIndex.js","webpack:///database/dist/cjs/src/core/util/ServerValues.js","webpack:///database/dist/cjs/src/core/SparseSnapshotTree.js","webpack:///database/dist/cjs/src/core/util/CountedSet.js","webpack:///database/dist/cjs/src/core/operation/Overwrite.js","webpack:///database/dist/cjs/src/core/SyncPoint.js","webpack:///database/dist/cjs/src/core/view/ViewCache.js","webpack:///database/dist/cjs/src/core/stats/StatsListener.js","webpack:///database/dist/cjs/src/core/PersistentConnection.js","webpack:///database/dist/cjs/src/core/util/EventEmitter.js","webpack:///database/dist/cjs/src/realtime/Connection.js","webpack:///database/dist/cjs/src/realtime/BrowserPollConnection.js","webpack:///database/dist/cjs/src/realtime/WebSocketConnection.js","webpack:///database/dist/cjs/src/core/ServerActions.js","webpack:///database/dist/cjs/src/core/view/filter/RangedFilter.js","webpack:///database/index.js","webpack:///database/dist/cjs/index.js","webpack:///database/dist/cjs/src/core/storage/DOMStorageWrapper.js","webpack:///database/dist/cjs/src/core/storage/MemoryStorage.js","webpack:///database/dist/cjs/src/api/TransactionResult.js","webpack:///database/dist/cjs/src/core/util/NextPushId.js","webpack:///database/dist/cjs/src/core/view/EventRegistration.js","webpack:///database/dist/cjs/src/core/view/Event.js","webpack:///database/dist/cjs/src/core/SyncTree.js","webpack:///database/dist/cjs/src/core/operation/AckUserWrite.js","webpack:///database/dist/cjs/src/core/operation/ListenComplete.js","webpack:///database/dist/cjs/src/core/operation/Merge.js","webpack:///database/dist/cjs/src/core/view/View.js","webpack:///database/dist/cjs/src/core/view/ViewProcessor.js","webpack:///database/dist/cjs/src/core/view/ChildChangeAccumulator.js","webpack:///database/dist/cjs/src/core/view/CompleteChildSource.js","webpack:///database/dist/cjs/src/core/view/EventGenerator.js","webpack:///database/dist/cjs/src/core/WriteTree.js","webpack:///database/dist/cjs/src/core/CompoundWrite.js","webpack:///database/dist/cjs/src/core/SnapshotHolder.js","webpack:///database/dist/cjs/src/core/AuthTokenProvider.js","webpack:///database/dist/cjs/src/core/stats/StatsCollection.js","webpack:///database/dist/cjs/src/core/stats/StatsReporter.js","webpack:///database/dist/cjs/src/core/view/EventQueue.js","webpack:///database/dist/cjs/src/core/util/VisibilityMonitor.js","webpack:///database/dist/cjs/src/core/util/OnlineMonitor.js","webpack:///database/dist/cjs/src/realtime/TransportManager.js","webpack:///database/dist/cjs/src/realtime/polling/PacketReceiver.js","webpack:///database/dist/cjs/src/core/ReadonlyRestClient.js","webpack:///database/dist/cjs/src/core/view/QueryParams.js","webpack:///database/dist/cjs/src/core/view/filter/LimitedFilter.js","webpack:///database/dist/cjs/src/core/Repo_transaction.js","webpack:///database/dist/cjs/src/core/util/Tree.js","webpack:///database/dist/cjs/src/api/internal.js","webpack:///database/dist/cjs/src/api/test_access.js","webpack:///firebase-messaging.js","webpack:///messaging/index.js","webpack:///messaging/dist/esm/src/helpers/array-buffer-to-base64.js","webpack:///messaging/dist/esm/index.js","webpack:///messaging/dist/esm/src/models/errors.js","webpack:///messaging/dist/esm/src/models/fcm-details.js","webpack:///messaging/dist/esm/src/models/token-manager.js","webpack:///messaging/dist/esm/src/controllers/controller-interface.js","webpack:///messaging/dist/esm/src/models/worker-page-message.js","webpack:///messaging/dist/esm/src/models/default-sw.js","webpack:///messaging/dist/esm/src/controllers/window-controller.js","webpack:///messaging/dist/esm/src/controllers/sw-controller.js","webpack:///firebase-storage.js","webpack:///storage/index.js","webpack:///storage/dist/esm/src/implementation/error.js","webpack:///storage/dist/esm/src/implementation/string.js","webpack:///storage/dist/esm/src/implementation/taskenums.js","webpack:///storage/dist/esm/src/implementation/object.js","webpack:///storage/dist/esm/src/implementation/promise_external.js","webpack:///storage/dist/esm/src/implementation/type.js","webpack:///storage/dist/esm/src/implementation/json.js","webpack:///storage/dist/esm/src/implementation/path.js","webpack:///storage/dist/esm/src/implementation/url.js","webpack:///storage/dist/esm/src/implementation/metadata.js","webpack:///storage/dist/esm/src/implementation/args.js","webpack:///storage/dist/esm/src/implementation/fs.js","webpack:///storage/dist/esm/src/implementation/array.js","webpack:///storage/dist/esm/src/implementation/requests.js","webpack:///storage/dist/esm/src/implementation/async.js","webpack:///storage/dist/esm/src/implementation/backoff.js","webpack:///storage/dist/esm/src/implementation/request.js","webpack:///storage/dist/esm/index.js","webpack:///storage/dist/esm/src/implementation/xhrio.js","webpack:///storage/dist/esm/src/implementation/constants.js","webpack:///storage/dist/esm/src/implementation/xhrio_network.js","webpack:///storage/dist/esm/src/implementation/xhriopool.js","webpack:///storage/dist/esm/src/implementation/location.js","webpack:///storage/dist/esm/src/implementation/blob.js","webpack:///storage/dist/esm/src/implementation/requestinfo.js","webpack:///storage/dist/esm/src/implementation/observer.js","webpack:///storage/dist/esm/src/tasksnapshot.js","webpack:///storage/dist/esm/src/task.js","webpack:///storage/dist/esm/src/reference.js","webpack:///storage/dist/esm/src/implementation/failrequest.js","webpack:///storage/dist/esm/src/implementation/requestmap.js","webpack:///storage/dist/esm/src/implementation/authwrapper.js","webpack:///storage/dist/esm/src/service.js"],"names":["firebase","window","self","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","5","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","setTimeout","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","__export","value","__webpack_exports__","createFirebaseNamespace","removeApp","callAppHooks","apps_","app","DEFAULT_ENTRY_NAME","contains","initializeApp","options","firebaseApp_FirebaseAppImpl","namespace","getApps","keys","map","registerService","createService","serviceProperties","appHook","allowMultipleInstances","factories","appHooks","forEach","serviceNamespace","appArg","cjs","args","_i","arguments","this","_getService","bind","apply","extendNamespace","props","eventName","serviceName","factoryName","useAsService","useService","apps","SDK_VERSION","INTERNAL","createSubscribe","ErrorFactory","deepExtend","code","appErrors","create","obj","key","tokenListeners","FirebaseAppImpl","firebase_","isDeleted_","services_","name_","options_","getUid","getToken","addAuthTokenListener","callback","removeAuthTokenListener","filter","listener","checkDestroyed_","delete","_this","then","services","serviceKey","instanceKey","all","service","instanceIdentifier","instanceSpecifier","extendApp","log","errors","no-app","bad-app-name","duplicate-app","app-deleted","duplicate-service","sa-not-supported","invalid-app-argument","g","Function","eval","CONSTANTS","NODE_CLIENT","NODE_ADMIN","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","len","run","Item","array","noop","process","nextTick","Array","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","constants_1","assert","assertion","message","assertionError","stringToByteArray","str","output","charCodeAt","byteArrayToString","bytes","String","fromCharCode","slice","base64","y","b","_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","input","opt_webSafe","isArray","init_","byteToCharMap","byteToCharMapWebSafe_","byteToCharMap_","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","join","encodeString","btoa","decodeString","decodeStringToByteArray","charToByteMap","charToByteMapWebSafe_","charToByteMap_","charAt","haveByte4","byte4","O","base64Encode","utf8Bytes","base64Decode","jsonEval","JSON","parse","stringify","data","safeGet","fn","extend","objTo","objFrom","clone","isNonNullObject","isEmpty","getCount","rv","f","opt_obj","res","findKey","opt_this","findValue","getAnyKey","getValues","every","default","__WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__","__WEBPACK_IMPORTED_MODULE_1__src_shims_find__","__WEBPACK_IMPORTED_MODULE_2__src_shims_findIndex__","global","__global","setImmediate","root","thisArg","TypeError","_state","_handled","_value","_deferreds","doResolve","handle","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","newValue","finale","_unhandledRejectionFn","Handler","done","reason","ex","setTimeoutFunc","prom","arr","val","remaining","constructor","race","values","warn","_setImmediateFn","_setUnhandledRejectionFn","Timeout","id","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","task","tasksByHandle","nextHandle","registerImmediate","runIfPresent","currentlyRunningATask","doc","attachTo","getPrototypeOf","toString","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","messagePrefix","Math","random","onGlobalMessage","event","source","indexOf","addEventListener","attachEvent","MessageChannel","channel","port1","port2","html","documentElement","onreadystatechange","removeChild","find","predicate","k","kValue","findIndex","deepCopy","target","Date","dateValue","getTime","prop","patchProperty","Deferred","wrapCallback","catch","getUA","navigator","isMobileCordova","test","isReactNative","isNodeSdk","patchCapture","captureFake","captureStackTrace","ERROR_NAME","FirebaseError","err_1","stack","pattern","template","fullCode","replace","match","crypt_1","json_1","decode","token","header","claims","signature","parts","split","isValidTimestamp","validSince","validUntil","now","floor","issuedAtTime","isValidFormat","decoded","isAdmin","obj_1","querystring","querystringParams","params","arrayVal","encodeURIComponent","querystringDecode","__extends","extendStatics","setPrototypeOf","__proto__","__","hash_1","Sha1","_super","chain_","buf_","W_","pad_","inbuf_","total_","blockSize","reset","compress_","buf","opt_offset","W","t","a","update","opt_length","lengthMinusBlock","inbuf","digest","totalBits","j","Hash","executor","onNoObservers","proxy","ObserverProxy","subscribe","onError","implementsAnyMethods","methods","methods_1","method","observers","unsubscribes","observerCount","finalized","next","forEachObserver","observer","complete","nextOrObserver","unsub","unsubscribeOne","finalError","sendOne","errorPrefix","fnName","argumentNumber","optional","argName","validateNamespace","validateCallback","validateContextObject","context","validateArgCount","minCount","maxCount","argCount","argError","assert_1","out","high","stringLength","webpackJsonpFirebase","76","77","ba","ca","da","splice","propertyIsEnumerable","ea","fa","ha","q","ka","la","unshift","r","ma","ib","Nc","u","oa","qa","ra","sa","ta","ua","va","wa","xa","v","ya","za","Aa","Ca","Fa","Ga","Ha","Ba","Ia","Ja","Ka","La","x","Ma","Pa","Qa","Ra","Sa","Ta","Ua","Wa","Va","Xa","Ya","Za","eb","documentMode","jb","pa","fb","max","exec","parseInt","mb","$goog_Thenable","nb","ob","pb","sb","tb","qb","ub","xb","style","display","contentWindow","open","write","location","protocol","host","origin","parentNode","yb","zb","Ab","Bb","rb","set","Cb","Window","wb","z","Db","h","Eb","Fb","Gb","Hb","Ib","Kb","Jb","A","B","Lb","Mb","Nb","Ob","Qb","Rb","Sb","Tb","Ub","Vb","Pb","D","wc","xc","Wb","Xb","Yb","Zb","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","pc","ja","oc","qc","rc","sc","uc","vc","getElementById","cssText","className","htmlFor","yc","lastIndexOf","zc","$b","Ac","createTextNode","nodeType","w","Bc","Cc","Dc","Ec","Number","Boolean","Fc","valueOf","isFinite","isNaN","Hc","Gc","substr","Ic","Jc","Kc","ia","Lc","C","Qc","relatedTarget","button","screenY","screenX","clientY","clientX","metaKey","shiftKey","altKey","ctrlKey","pointerId","pointerType","changedTouches","srcElement","nodeName","fromElement","toElement","pageX","pageY","Rc","defaultPrevented","Uc","capture","Tc","Vc","Wc","Xc","Yc","Zc","cd","dd","ed","Sc","fd","gd","hd","$c","Pc","jd","bd","kd","ld","E","md","removeEventListener","detachEvent","ad","nd","od","keyCode","returnValue","pd","handleEvent","F","G","qd","rd","sd","td","vd","wd","Ad","Dd","Cd","Bd","yd","Ed","S","P","Fd","Gd","H","zd","Hd","Da","Kd","Ld","Jd","Md","Id","Nd","Qd","Rd","Pd","Sd","Td","Ud","Vd","Ea","Wd","Xd","Od","Yd","Zd","$d","Uint8Array","Int32Array","ae","be","ge","vb","tc","Bj","he","ie","je","ke","le","me","substring","decodeURIComponent","pe","qe","re","se","te","ne","ue","Ae","ve","Be","I","Ce","De","Ee","decodeURI","encodeURI","Fe","Ge","He","Ie","Je","Ke","Le","Me","toLowerCase","Ne","Oe","Qe","Re","XMLHttpRequest","ActiveXObject","Se","headers","Te","N","Ye","toUpperCase","Pe","J","Ze","$e","FormData","Xe","setRequestHeader","responseType","withCredentials","af","bf","ontimeout","send","abort","cf","df","ef","aa","ff","gf","We","statusText","xd","readyState","status","hf","responseText","kf","lf","mf","nf","of","Oc","pf","attributes","qf","tagName","rf","sf","XDomainRequest","responseXML","onprogress","tf","uf","kb","vf","href","wf","xf","yf","zf","Af","Bf","Cf","Df","screen","availHeight","availWidth","width","height","top","left","resizable","statusbar","toolbar","Ef","scrollbars","standalone","noreferrer","createEvent","initMouseEvent","dispatchEvent","bb","opener","focus","Ff","closed","Hf","If","Jf","Kf","Lf","K","Mf","Of","Nf","sort","userAgent","L","Pf","localStorage","Qf","setItem","removeItem","indexedDB","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","___jsl","CP","Zf","onLine","connection","$f","ag","visibilityState","bg","cg","toUTCString","M","eg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","continueUrl","canHandleCodeInApp","androidPackageName","androidMinimumVersion","androidInstallApp","iOSBundleId","Gg","sub","na","provider_id","sign_in_provider","Hg","iss","aud","exp","Lg","Kg","Na","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","isNewUser","rawUserInfo","providerId","profile","login","screenName","Vg","Wg","idToken","accessToken","oauthToken","oauthTokenSecret","Yg","id_token","access_token","secret","oauth_token_secret","postBody","requestUri","ah","isOAuthProvider","Jg","bh","ch","credential","dh","eh","fh","gh","hh","Ig","ih","jh","mh","nh","Oa","Y","oh","temporaryProof","phoneNumber","sessionInfo","rh","auth","th","uh","oauthAccessToken","oauthIdToken","vh","wh","xh","eventId","urlResponse","sessionId","yh","zh","Ah","email","Bh","Ch","node","secureTokenEndpoint","secureTokenTimeout","Dh","secureTokenHeaders","Eh","firebaseEndpoint","firebaseTimeout","Fh","firebaseHeaders","Gh","Ih","Jh","Kh","Hh","Lh","gapi","client","request","Nh","Mh","Oh","grant_type","refresh_token","Ph","Qh","Rh","jf","Sh","Th","Q","Uh","identifier","continueUri","allProviders","Vh","Wh","authorizedDomains","Xh","Yh","sh","di","fi","gi","deleteProvider","hi","ii","needConfirmation","errorMessage","ji","Xg","returnIdpCredential","ki","Zg","li","$g","autoCreate","mi","ni","oobCode","T","returnSecureToken","endpoint","ga","keyInvalid","ipRefererBlocked","INVALID_CUSTOM_TOKEN","CREDENTIAL_MISMATCH","MISSING_CUSTOM_TOKEN","INVALID_IDENTIFIER","MISSING_CONTINUE_URI","INVALID_EMAIL","INVALID_PASSWORD","USER_DISABLED","MISSING_PASSWORD","EMAIL_EXISTS","PASSWORD_LOGIN_DISABLED","INVALID_IDP_RESPONSE","FEDERATED_USER_ID_ALREADY_LINKED","INVALID_MESSAGE_PAYLOAD","INVALID_RECIPIENT_EMAIL","INVALID_SENDER","EMAIL_NOT_FOUND","EXPIRED_OOB_CODE","INVALID_OOB_CODE","MISSING_OOB_CODE","CREDENTIAL_TOO_OLD_LOGIN_AGAIN","INVALID_ID_TOKEN","TOKEN_EXPIRED","USER_NOT_FOUND","CORS_UNSUPPORTED","DYNAMIC_LINK_NOT_ACTIVATED","INVALID_APP_ID","TOO_MANY_ATTEMPTS_TRY_LATER","WEAK_PASSWORD","OPERATION_NOT_ALLOWED","USER_CANCELLED","CAPTCHA_CHECK_FAILED","INVALID_APP_CREDENTIAL","INVALID_CODE","INVALID_PHONE_NUMBER","INVALID_SESSION_INFO","INVALID_TEMPORARY_PROOF","MISSING_APP_CREDENTIAL","MISSING_CODE","MISSING_PHONE_NUMBER","MISSING_SESSION_INFO","QUOTA_EXCEEDED","SESSION_EXPIRED","INVALID_CONTINUE_URI","MISSING_ANDROID_PACKAGE_NAME","MISSING_IOS_BUNDLE_ID","UNAUTHORIZED_DOMAIN","INVALID_OAUTH_CLIENT_ID","INVALID_CERT_HASH","xi","wi","ab","zi","Ai","Bi","where","body","url","messageHandlersFilter","position","dontclear","restyle","setHideOnLeave","Ci","ping","Di","Ei","register","Hi","Gi","Fi","Ii","Ji","Ki","Li","Mi","Gf","RegExp","Ni","Oi","Qi","Ri","authEvent","Pi","webStorageSupport","Si","reactNative","AsyncStorage","Ti","Ui","Wi","errorCode","onupgradeneeded","createObjectStore","keyPath","onsuccess","Xi","Yi","objectStore","Zi","transaction","$i","aj","cancel","bj","cj","dj","ej","fj","gj","hj","sessionStorage","ij","Browser","jj","Node","kj","ReactNative","lj","oj","nj","pj","mj","Vi","rj","qj","sj","tj","uj","X","vj","getItem","wj","xj","yj","zj","Aj","oldValue","Cj","Ej","Dj","Fj","Gj","Hj","Ij","Jj","fe","Lj","ibi","apn","appDisplayName","Nj","Kj","Oj","Mj","handleOpenURL","Pj","Rj","Qj","Sj","Tj","Uj","Vj","Wj","unknown","signInViaRedirect","linkViaRedirect","reauthViaRedirect","signInViaPopup","linkViaPopup","reauthViaPopup","Xj","yi","Yj","Zj","ak","bk","ek","gk","fk","hk","ik","jk","kk","user","lk","dk","mk","nk","ok","pk","rk","qk","sk","tk","uk","refreshToken","vk","expiresIn","wk","expires_in","expirationTime","xk","lastSignInTime","creationTime","yk","zk","uid","displayName","photoURL","Ak","Bk","apiKey","appName","authDomain","Ck","Dk","Ek","U","R","Fk","V","Gk","Hk","Ik","Jk","start","Kk","Lk","Mk","Nk","emailVerified","isAnonymous","metadata","createdAt","lastLoginAt","providerData","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","ti","Yk","providerUserInfo","rawId","photoUrl","$k","Zk","additionalUserInfo","operationType","al","reload","bl","cl","dl","Z","el","fl","gl","hl","stsTokenManager","redirectEventId","il","jl","kl","ll","ml","ol","pl","ql","nl","rl","sl","tl","ul","vl","wl","xl","yl","logFramework","zl","Al","Bl","$","Cl","Dl","El","Fl","Gl","currentUser","Il","_lat","Hl","Jl","Kl","Ll","Ml","Nl","Ol","Element","Pl","Ql","App","Rl","Sl","Tl","verify","Ul","theme","Vl","Wl","hasChildNodes","Xl","Yl","Zl","$l","am","dm","fm","grecaptcha","Infinity","bm","render","em","cm","gm","hm","im","jm","trim","some","$a","db","gb","hb","parseFloat","lb","compatMode","cellpadding","cellspacing","colspan","frameborder","maxlength","nonce","role","rowspan","usemap","valign","\"","\\","/","\b","\f","\n","\r","\t","\u000b","Mc","freeze","2","3","4","preventDefault","ud","timeStamp","msWriteProfilerMark","clear","ce","de","ee","we","xe","ye","ze","Ue","Ve","getResponse","response","mozResponseArrayBuffer","getResponseHeader","contentType","getAllResponseHeaders","dg","fg","abcd","toJSON","argument-error","app-not-authorized","app-not-installed","captcha-check-failed","code-expired","cordova-not-ready","cors-unsupported","credential-already-in-use","custom-token-mismatch","requires-recent-login","dynamic-link-not-activated","email-already-in-use","expired-action-code","cancelled-popup-request","internal-error","invalid-app-credential","invalid-app-id","invalid-user-token","invalid-auth-event","invalid-verification-code","invalid-continue-uri","invalid-cordova-configuration","invalid-custom-token","invalid-email","invalid-api-key","invalid-cert-hash","invalid-credential","invalid-persistence-type","invalid-message-payload","invalid-oauth-provider","invalid-oauth-client-id","unauthorized-domain","invalid-action-code","wrong-password","invalid-phone-number","invalid-recipient-email","invalid-sender","invalid-verification-id","missing-android-pkg-name","auth-domain-config-required","missing-app-credential","missing-verification-code","missing-continue-uri","missing-iframe-start","missing-ios-bundle-id","missing-phone-number","missing-verification-id","account-exists-with-different-credential","network-request-failed","no-auth-event","no-such-provider","operation-not-allowed","operation-not-supported-in-this-environment","popup-blocked","popup-closed-by-user","provider-already-linked","quota-exceeded","redirect-cancelled-by-user","redirect-operation-pending","user-token-expired","too-many-requests","unauthorized-continue-uri","unsupported-persistence-type","user-cancelled","user-not-found","user-disabled","user-mismatch","user-signed-out","weak-password","web-storage-unsupported","kh","password","lh","PROVIDER_ID","ph","operation","qh","verificationId","verificationCode","recaptchaToken","Content-Type","setApiKey","setToken","path","authType","Zh","$h","ai","deleteAttribute","requestType","bi","ci","ei","oi","newPassword","pi","qi","ri","si","ui","recaptchaSiteKey","vi","put","add","getAll","openCursor","NONE","unsubscribe","ck","confirm","users","localId","passwordHash","languages","language","userLanguage","execute","firstChild","Persistence","LOCAL","SESSION","Auth","User","util_1","util_2","util_3","util_4","util_5","util_6","storage_1","util_7","LUIDGenerator","sha1","sha1Bytes","buildLogMessage_","var_args","logger","firstLog_","enableLogging","logger_","persistent","SessionStorage","remove","logWrapper","prefix","fatal","warnIfPageIsSecure","warnAboutUnsupportedMethod","methodName","isInvalidJSONNumber","POSITIVE_INFINITY","NEGATIVE_INFINITY","executeWhenDOMReady","called_1","wrappedFn_1","MIN_NAME","MAX_NAME","nameCompare","aAsInt","tryParseInt","bAsInt","stringCompare","requireKey","ObjectToUniqueKey","splitStringBySize","segsize","dataSegs","each","bindCallback","doubleToIEEE754String","ln","bits","abs","pow","min","LN2","round","reverse","hexByteString","hexByte","isChromeExtensionContentScript","isWindowsStoreApp","Windows","UI","errorForServerCode","query","INTEGER_REGEXP_","intVal","exceptionGuard","callUserCallback","beingCrawled","search","exportPropGetter","fnGet","setTimeoutNonBlocking","time","Path","pathOrString","pieceNum","pieces_","copyTo","pieceNum_","getFront","getLength","popFront","getBack","pathString","toUrlEncodedString","begin","parent","pieces","child","childPathObj","childPieces","relativePath","outerPath","innerPath","outer","inner","comparePaths","right","leftKeys","rightKeys","cmp","equals","other","ValidationPath","errorPrefix_","parts_","byteLength_","checkValid_","pop","last","MAX_PATH_LENGTH_BYTES","MAX_PATH_DEPTH","toErrorString","setNodeFromJSON","nodeFromJSON","setMaxNode","MAX_NODE","Index_1","Node_1","LeafNode_1","PriorityIndex","compare","aPriority","getPriority","bPriority","indexCmp","compareTo","isDefinedOn","indexedValueChanged","oldNode","newNode","minPost","NamedNode","MIN","maxPost","LeafNode","makePost","indexValue","priorityNode","Index","PRIORITY_INDEX","EMPTY_NODE","SortedMap_1","snap_1","PriorityIndex_1","KeyIndex_1","IndexMap_1","comparators_1","ChildrenNode","children_","priorityNode_","indexMap_","lazyHash_","validatePriorityNode","SortedMap","NAME_COMPARATOR","IndexMap","Default","isLeafNode","updatePriority","newPriorityNode","getImmediateChild","childName","getChild","front","hasChild","updateImmediateChild","newChildNode","namedNode","newChildren","newIndexMap","newPriority","removeFromIndexes","insert","addToIndexes","updateChild","newImmediateChild","numChildren","count","exportFormat","numKeys","maxKey","allIntegerKeys","forEachChild","childNode","hash","toHash_1","priorityHashText","childHash","getPredecessorChildName","index","idx","resolveIndex_","predecessor","getPredecessorKey","getFirstChildName","indexDefinition","minKey","getFirstChild","getLastChildName","getLastChild","action","inorderTraversal","wrappedNode","getIterator","getIteratorFrom","startPost","iterator","Wrap","peek","getNext","getReverseIterator","getReverseIteratorFrom","endPost","withIndex","KEY_INDEX","hasIndex","addIndex","isIndexed","otherChildrenNode","thisIter","otherIter","thisCurrent","otherCurrent","MaxNode","defineProperties","MAX","KeyIndex","__EMPTY_NODE","__childrenNodeConstructor","Path_1","INVALID_KEY_REGEX_","INVALID_PATH_REGEX_","MAX_LEAF_SIZE_","isValidKey","isValidPathString","isValidRootPathString","isValidPriority","priority","validateFirebaseDataArg","validateFirebaseData","path_","hasDotValue_1","hasActualChild_1","validateFirebaseMergePaths","mergePaths","curPath","prevPath","validateFirebaseMergeDataArg","validatePriority","validateEventType","eventType","validateKey","validatePathString","validateRootPathString","validateWritablePath","validateUrl","parsedUrl","repoInfo","validateCredential","cred","validateBoolean","bool","validateString","string","validateObject","validateObjectContainsKey","opt_type","OperationType","OperationSource","fromUser","fromServer","queryId","tagged","Server","forServerTaggedQuery","Change","snapshotNode","oldSnap","prevName","valueChange","snapshot","VALUE","childAddedChange","childKey","CHILD_ADDED","childRemovedChange","CHILD_REMOVED","childChangedChange","newSnapshot","oldSnapshot","CHILD_CHANGED","childMovedChange","CHILD_MOVED","json","ChildrenNode_1","jsonLeaf","USE_HINZE","node_1","jsonObj_1","childData","children_1","childrenHavePriority_1","hinzeJsonObj_1","childSet","childSet_1","buildChildSet","NAME_ONLY_COMPARATOR","sortedChildSet","getCompare",".priority","DOMStorageWrapper_1","MemoryStorage_1","createStoragefor","domStorageName","domStorage","DOMStorageWrapper","MemoryStorage","PersistentStorage","PROTOCOL_VERSION","VERSION_PARAM","TRANSPORT_SESSION_PARAM","REFERER_PARAM","FORGE_REF","FORGE_DOMAIN","LAST_SESSION_PARAM","WEBSOCKET","LONG_POLLING","oldWrapped","newWrapped","value_",".value","getValue","toHash","compareToLeafNode_","otherLeaf","otherLeafType","thisLeafType","otherIndex","VALUE_TYPE_ORDER","thisIndex","SortedMapIterator","startKey","comparator","isReverse_","resultGenerator_","nodeStack_","hasNext","LLRBNode","color","RED","copy","reverseTraversal","min_","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","nr","checkMaxDepth_","blackDepth","check_","BLACK","LLRBEmptyNode","comparator_","root_","rightParent","resultGenerator","ServerValues_1","nodeFromJSON_1","SparseSnapshotTree_1","SyncTree_1","SnapshotHolder_1","AuthTokenProvider_1","StatsManager_1","StatsReporter_1","StatsListener_1","EventQueue_1","PersistentConnection_1","ReadonlyRestClient_1","Database_1","Repo","repoInfo_","forceRestClient","dataUpdateCount","statsListener_","eventQueue_","EventQueue","nextWriteId_","interceptServerDataCallback_","onDisconnect_","SparseSnapshotTree","persistentConnection_","authTokenProvider","AuthTokenProvider","stats_","StatsManager","getCollection","server_","ReadonlyRestClient","onDataUpdate_","onConnectStatus_","authOverride","PersistentConnection","onServerInfoUpdate_","addTokenChangeListener","refreshAuthToken","statsReporter_","getOrCreateReporter","StatsReporter","transactions_init_","infoData_","SnapshotHolder","infoSyncTree_","SyncTree","startListening","tag","currentHashFn","onComplete","infoEvents","getNode","applyServerOverwrite","stopListening","updateInfo_","serverSyncTree_","listen","events","raiseEventsForChangedPath","unlisten","secure","serverTime","offsetNode","offset","generateServerValues","generateWithValues","timestamp","isMerge","taggedChildren","raw","applyTaggedQueryMerge","taggedSnap","applyTaggedQueryOverwrite","changedChildren","applyServerMerge","snap","affectedPath","rerunTransactions_","interceptServerData_","connectStatus","runOnDisconnectEvents_","updates","updateSnapshot","getNextWriteId_","setWithPriority","newVal","log_","serverValues","newNodeUnresolved","resolveDeferredValueSnapshot","writeId","applyUserOverwrite","queueEvents","errorReason","success","clearEvents","ackUserWrite","callOnCompleteCallback","abortTransactions_","childrenToMerge","empty","changedKey","changedValue","writeId_1","applyUserMerge","merge","changedPath","resolvedOnDisconnectTree","resolveDeferredValueTree","forEachTree","Empty","onDisconnectCancel","forget","onDisconnectSet","onDisconnectPut","remember","onDisconnectSetWithPriority","onDisconnectUpdate","onDisconnectMerge","addEventCallbackForQuery","eventRegistration","addEventRegistration","raiseEventsAtPath","removeEventCallbackForQuery","removeEventRegistration","interrupt","resume","stats","showDelta","StatsListener","longestName","reduce","previousValue","currentValue","stat","statsIncrementCounter","metric","incrementCounter","includeStat","__database","Database","CacheNode","node_","fullyInitialized_","filtered_","isFullyInitialized","isFiltered","isCompleteForPath","isCompleteForChild","onDisconnect_1","TransactionResult_1","NextPushId_1","Query_1","Repo_1","QueryParams_1","validation_1","SyncPoint_1","Reference","repo","QueryParams","DEFAULT","getKey","getParent","parentPath","getRoot","databaseProp","database","objectToMerge","newObjectToMerge","transactionUpdate","applyLocally","promiseComplete","committed","TransactionResult","startTransaction","setPriority","nextPushId","thennablePushRef","pushRef","onDisconnect","OnDisconnect","Query","__referenceConstructor","SyncPoint","DataSnapshot","ref_","index_","exportVal","exists","childPathString","childPath","childRef","hasChildren","getRef","emptyChildrenSingleton","EmptyChildren","ImmutableTree","children","fromObject","tree","childSnap","findRootMostMatchingPathAndValue","childExistingPathAndValue","findRootMostValueAndPath","subtree","childTree","toSet","newChild","setTree","newTree","fold","fold_","pathSoFar","accum","findOnPath","findOnPath_","pathToFollow","nextChild","foreachOnPath","foreachOnPath_","currentRelativePath","foreach","foreach_","foreachChild","Change_1","IndexedFilter","optChangeAccumulator","oldChild","trackChildChange","updateFullNode","newSnap","filtersNodes","getIndexedFilter","getIndex","StatsCollection_1","hashString","collections_","StatsCollection","creatorFunction","reporters_","parser_1","_staticInstance","RepoManager","repos_","useRestClient_","getInstance","dbUrl","databaseFromApp","parseRepoInfo","createRepo","deleteRepo","appRepos","toURLString","Reference_1","RepoManager_1","repo_","DatabaseInternals","checkDeleted_","refFromURL","apiName","parsedURL","goOffline","goOnline","ServerValue","TIMESTAMP",".sv","decodePath","pathStringDecoded","piece","RepoInfo_1","dataURL","parseURL","subdomain","domain","webSocketOnly","scheme","RepoInfo","port","colonInd","slashInd","Constants_1","persistenceKey","internalHost","needsQueryParam","isCacheableHost","isDemoHost","isCustomHost","updateHost","newHost","connectionURL","connURL","pairs","ValueIndex_1","PathIndex_1","EventRegistration_1","queryParams_","orderByCalled_","validateQueryEndpoints_","startNode","endNode","hasStart","getIndexStartValue","hasEnd","getIndexEndValue","tooManyArgsError","wrongArgTypeError","getIndexStartName","getIndexEndName","PathIndex","VALUE_INDEX","validateLimit_","hasLimit","hasAnchoredLimit","validateNoPreviousOrderByCall_","getQueryParams","cancelCallbackOrContext","getCancelAndContextArgs_","onValueEvent","callbacks","onChildEvent","cancelCallback","container","ValueEventRegistration","ChildEventRegistration","valueCallback","userCallback","cancelOrContext","firstCall","onceCallback","limitToFirst","limit","limitToLast","orderByChild","parsedPath","newParams","orderBy","orderByKey","orderByPriority","orderByValue","startAt","endAt","equalTo","queryObject","getQueryObject","queryIdentifier","isEqual","sameRepo","samePath","sameQueryIdentifier","ValueIndex","valueNode","_defaultIndexMap","fallbackObject","indexes_","indexSet_","indexKey","sortedMap","existingChildren","childList","sawIndexedValue","iter","newIndex","indexName","newIndexSet","newIndexes","indexedChildren","existingSnap","SortedMap_2","LOG_2","Base12Num","num","current_","mask","bits_","nextBitIsOne","keyFn","mapSortFn","buildBalancedTree","low","middle","base12","buildPennant","chunkSize","attachPennant","pennant","isOne","indexPath_","extractChild","aChild","bChild","resolveDeferredValue","resolvedTree","rawPri","leafNode","childrenNode","CountedSet_1","CountedSet","self_1","prefixPath","func","Operation_1","Overwrite","OVERWRITE","operationForChild","CacheNode_1","ViewCache_1","View_1","views_","applyOperation","writesCache","optCompleteServerCache","view","events_1","serverCache","serverCacheComplete","eventCache","calcCompleteEventCache","eventCacheComplete","calcCompleteEventChildren","viewCache","ViewCache","View","getInitialEvents","cancelError","removed","cancelEvents","hadCompleteView","hasCompleteView","viewQueryId","getQuery","loadsAllData","getQueryViews","getCompleteServerCache","viewForQuery","getCompleteView","viewExistsForQuery","eventCache_","serverCache_","updateEventSnap","eventSnap","filtered","updateServerSnap","serverSnap","getEventCache","getCompleteEventSnap","getServerCache","getCompleteServerSnap","collection_","last_","newStats","delta","app_1","VisibilityMonitor_1","OnlineMonitor_1","Connection_1","ServerActions_1","RECONNECT_MIN_DELAY","RECONNECT_MAX_DELAY_DEFAULT","authTokenProvider_","authOverride_","nextPersistentConnectionId_","interruptReasons_","listens_","outstandingPuts_","outstandingPutCount_","onDisconnectRequestQueue_","connected_","reconnectDelay_","maxReconnectDelay_","securityDebugCallback_","lastSessionId","establishConnectionTimer_","visible_","requestCBHash_","requestNumber_","realtime_","authToken_","forceTokenRefresh_","invalidAuthTokenCount_","firstConnection_","lastConnectionAttemptTime_","lastConnectionEstablishedTime_","scheduleConnect_","VisibilityMonitor","onVisible_","OnlineMonitor","onOnline_","sendRequest","onResponse","curReqNum","msg","isDefault","listenSpec","hashFn","sendListen_","req","payload","warnOnListenWarnings_","removeListen_","warnings","indexSpec","indexPath","tryAuth","reduceReconnectDelayIfAdminCredential_","token_1","authMethod","requestData","onAuthRevoked_","sendUnlisten_","queryObj","sendOnDisconnect_","putInternal","sendPut_","queued","reportStats","onDataMessage_","reqNum","onDataPush_","onListenRevoked_","onSecurityDebugPacket_","onReady_","handleTimestamp_","sendConnectStats_","restoreState_","establishConnection_","visible","online","onRealtimeDisconnect_","cancelSentTransactions_","shouldReconnect_","timeSinceLastConnectSucceeded","timeSinceLastConnectAttempt","reconnectDelay","onDataMessage_1","onReady_1","connId_1","nextConnectionId_","lastSessionId_1","canceled_1","connection_1","closeFn_1","sendRequestFn","forceRefresh","Connection","serverTimeOffset","normalizedPathString","statusCode","explanation","notifyForInvalidToken","queries","clientName","currentlyOnline","ServerActions","EventEmitter","allowedEvents_","listeners_","trigger","validateEventType_","eventData","getInitialEvent","et","TransportManager_1","onMessage_","onKill_","connectionCount","pendingDataMessages","state_","transportManager_","TransportManager","start_","conn","initialTransport","conn_","nextTransportId_","primaryResponsesRequired_","onMessageReceived","connReceiver_","onConnectionLost","disconnReceiver_","tx_","rx_","secondaryConn_","isHealthy_","healthyTimeout_ms","healthyTimeout_","bytesReceived","markConnectionHealthy","bytesSent","everConnected","onConnectionLost_","onSecondaryConnectionLost_","onPrimaryMessageReceived_","onSecondaryMessageReceived_","dataMsg","sendData_","tryCleanupConnection","connId","onSecondaryControl_","controlData","cmd","upgradeIfSecondaryHealthy_","secondaryResponsesRequired_","parsedData","layer","proceedWithUpgrade_","onControl_","onPrimaryResponse_","onHandshake_","onConnectionShutdown_","onReset_","sendPingOnPrimaryIfNecessary_","handshake","ts","onConnectionEstablished_","tryStartUpgrade_","upgradeTransport","startUpgrade_","onMessage","closeConnections_","PacketReceiver_1","FIREBASE_LONGPOLL_START_PARAM","FIREBASE_LONGPOLL_CLOSE_COMMAND","FIREBASE_LONGPOLL_COMMAND_CB_NAME","FIREBASE_LONGPOLL_DATA_CB_NAME","FIREBASE_LONGPOLL_ID_PARAM","FIREBASE_LONGPOLL_PW_PARAM","FIREBASE_LONGPOLL_SERIAL_PARAM","FIREBASE_LONGPOLL_CALLBACK_ID_PARAM","FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM","FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET","FIREBASE_LONGPOLL_DATA_PARAM","FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM","FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM","BrowserPollConnection","transportSessionId","everConnected_","urlFn","curSegmentNum","myPacketOrderer","PacketReceiver","isClosed_","connectTimeoutTimer_","onClosed_","scriptTagHolder","FirebaseIFrameScriptHolder","command","arg1","arg2","incrementIncomingBytes_","sendNewPolls","closeAfter","pN","handleResponse","urlParams","uniqueCallbackIdentifier","connectURL","addTag","startLongPoll","addDisconnectPingFrame","forceAllow","forceAllow_","forceDisallow","forceDisallow_","isAvailable","shutdown_","myDisconnFrame","dataStr","base64data","MAX_URL_DATA_SIZE","enqueueSegment","pw","commandCB","onMessageCB","outstandingRequests","pendingSegs","currentSerial","myIFrame","createIFrame_","iframeContents","iframe","contentDocument","alive","innerHTML","myID","myPW","theURL","nodeRestRequest","newRequest_","curDataString","theSeg","seg","addLongPollTag_","segnum","totalsegs","serial","doNewRequest","keepaliveTimeout","readyStateCB","loadCB","doNodeLongPoll","newScript_1","rstate","setWebSocketImpl","impl","WebSocketImpl","MozWebSocket","WebSocket","WebSocketConnection","keepaliveTimer","frames","totalFrames","connectionURL_","device","User-Agent","platform","mySock","onopen","onclose","handleIncomingFrame","isOldAndroid","oldAndroidRegex","oldAndroidMatch","previouslyFailed","isInMemoryStorage","appendFrame_","fullMess","jsonMess","handleNewFrameCount_","frameCount","extractFrameCount_","mess","resetKeepAlive","remainingData","sendString_","responsesRequiredToBeHealthy","healthyTimeout","IndexedFilter_1","RangedFilter","indexedFilter_","startPost_","getStartPost_","endPost_","getEndPost_","getStartPost","getEndPost","matches","startName","endName","registerDatabase","instance","unused","TEST_ACCESS","DataSnapshot_1","domStorage_","prefix_","prefixedName_","storedVal","cache_","PUSH_CHARS","lastPushTime","lastRandChars","duplicateTime","timeStampChars","Event_1","callback_","cancelCallback_","context_","respondsTo","change","DataEvent","getEventRunner","ctx","getEventType","cancelCB_1","cb_1","createCancelEvent","CancelEvent","hasAnyCallback","callbacks_","eventToCheck","cancelCB_2","cb_2","otherCount","otherKey","thisKey","getPath","AckUserWrite_1","ImmutableTree_1","ListenComplete_1","Merge_1","Overwrite_1","WriteTree_1","listenProvider_","syncPointTree_","pendingWriteTree_","WriteTree","tagToQueryMap_","queryToTagMap_","newData","addOverwrite","applyOperationToSyncPoints_","addMerge","changeTree","Merge","revert","getWrite","removeWrite","affectedTree_1","AckUserWrite","applyListenComplete","ListenComplete","queryKey","queryKeyForTag_","parseQueryKey_","queryPath","op","applyTaggedOperation_","applyTaggedListenComplete","foundAncestorDefaultView","pathToSyncPoint","sp","syncPoint","childSyncPoint","completeCache","viewAlreadyExists","makeQueryKey_","getNextQueryTag_","childWrites","setupListener_","maybeSyncPoint","removedAndEvents","removingDefault","covered","parentSyncPoint","newViews","collectDistinctViewsForSubTree_","newQuery","createListenerForView_","queryForListening_","tagForQuery_","queryToRemove","tagToRemove","removeTags_","writeIdsToExclude","writeTree","maybeChildSyncPoint","childMap","views_1","childViews","removedQuery","removedQueryKey","removedQueryTag","queriesToStop","queries_1","childQueries","queryToStop","splitIndex","nextQueryTag_","applyOperationHelper_","syncPointTree","applyOperationDescendantsHelper_","childOperation","childServerCache","childWritesCache","affectedTree","ACK_USER_WRITE","LISTEN_COMPLETE","MERGE","ViewProcessor_1","EventGenerator_1","query_","initialViewCache","eventRegistrations_","indexFilter","getNodeFilter","processor_","ViewProcessor","initialServerCache","initialEventCache","newServerCache","newEventCache","viewCache_","eventGenerator_","EventGenerator","cache","path_1","registration","maybeEvent","existing","completeServerCache","oldViewCache","assertIndexed","generateEventsForChanges_","changes","initialChanges","registrations","generateEventsForChanges","ChildChangeAccumulator_1","CompleteChildSource_1","ProcessorResult","filter_","newViewCache","filterServerNode","accumulator","ChildChangeAccumulator","overwrite","applyUserOverwrite_","applyServerOverwrite_","applyUserMerge_","applyServerMerge_","revertUserWrite_","ackUserWrite_","listenComplete_","getChanges","maybeAddValueEvent_","isLeafOrEmpty","oldCompleteSnap","generateEventCacheAfterServerEvent_","changePath","oldEventSnap","shadowingWrite","serverNode","completeChildren","completeEventChildren","completeNode","oldEventNode","updatedPriority","calcEventCacheAfterServerOverwrite","childChangePath","newEventChild","eventChildUpdate","calcCompleteChild","changedSnap","oldServerSnap","serverFilter","newServerNode","NO_COMPLETE_CHILD_SOURCE","WriteTreeCompleteChildSource","getCompleteChild","newEventSnap","cacheHasChild_","curViewCache","writePath","applyMerge_","viewMergeTree","serverChild","childMergeTree","isUnknownDeepMerge","ackPath","changedChildren_1","changedChildren_2","mergePath","serverCachePath","oldServerNode","oldEventCache","serverChildren","changeMap_","oldChange","oldType","NoCompleteChildSource_","getChildAfterChild","writes_","optCompleteServerCache_","completeServerData","nodes","calcIndexedSlice","eventRegistrations","moves","generateEventsForType_","filteredChanges","compareChanges_","materializedChange","materializeSingleChange_","aWrapped","bWrapped","CompoundWrite_1","visibleWrites_","CompoundWrite","allWrites_","lastWriteId_","WriteTreeRef","addWrite","addWrites","record","writeToRemove","removedWriteWasVisible","removedWriteOverlapsWithOtherWrites","currentWrite","recordContainsPath_","resetTree_","getCompleteWriteData","getCompleteNode","treePath","includeHiddenWrites","childCompoundWrite","hasCompleteWrite","mergeAtPath","layerTree_","layeredCache","shadowingNode","subMerge","completeServerChildren","topLevelSet","merge_1","getCompleteChildren","existingEventSnap","existingServerSnap","childMerge","toIterate","writeRecord","DefaultFilter_","writes","treeRoot","compoundWrite","deepNode","treePath_","writeTree_","existingServerCache","rootmost","rootMostPath","newWrite","applySubtreeWrite_","priorityWrite_1","rootNode_","newSnapshotNode","app_","removeTokenChangeListener","counters_","amount","FIRST_STATS_MIN_TIME","FIRST_STATS_MAX_TIME","collection","statsToReport_","reportStats_","reportedStats","haveStatsToReport","eventLists_","recursionDepth_","eventDataList","currList","eventPath","EventList","raiseQueuedEventsMatchingPredicate_","sentAll","eventList","raise","events_","eventFn","EventEmitter_1","hidden","visibilityChange","online_","BrowserPollConnection_1","WebSocketConnection_1","initTransports_","isWebSocketsAvailable","isSkipPollConnection","transports_","transports_1","ALL_TRANSPORTS","transport","pendingResponses","currentResponseNum","closeAfterResponse","onClose","responseNum","requestNum","this_1","toProcess","getListenId_","listenId","thisListen","queryStringParamaters","toRestQueryStringParameters","restRequest_","status_1","queryStringParameters","authTokenData","authToken","xhr","LimitedFilter_1","RangedFilter_1","limitSet_","startSet_","startNameSet_","endSet_","endNameSet_","limit_","viewFrom_","indexStartValue_","indexStartName_","indexEndValue_","indexEndName_","isViewFromLeft","WIRE_PROTOCOL_CONSTANTS_","VIEW_FROM_LEFT","getLimit","copy_","newLimit","VIEW_FROM_RIGHT","WIRE_PROTOCOL_CONSTANTS","INDEX_START_VALUE","INDEX_START_NAME","INDEX_END_VALUE","INDEX_END_NAME","LIMIT","viewFrom","VIEW_FROM","INDEX","LimitedFilter","REST_CONSTANTS","REST_QUERY_CONSTANTS_","qs","ORDER_BY","START_AT","END_AT","LIMIT_TO_FIRST","LIMIT_TO_LAST","rangedFilter_","reverse_","fullLimitUpdateChild_","inRange","indexCompare_1","foundStartPost","changeAccumulator","indexCmp_1","newChildNamedNode","windowBoundary","oldChildSnap","compareNext","TransactionStatus","Tree_1","MAX_TRANSACTION_RETRIES_","transactionQueueTree_","Tree","watchRef","unwatcher","order","retryCount","abortReason","currentWriteId","currentInputSnapshot","currentOutputSnapshotRaw","currentOutputSnapshotResolved","currentState","getLatestState_","RUN","queueNode","subTree","nodeQueue","setValue","priorityForNode","sendReadyTransactions_","excludeSets","pruneCompletedTransactionsBelowNode_","buildTransactionQueue_","sendTransactionQueue_","setsToIgnore","txn","latestState","snapToSend","latestHash","SENT","dataToSend","pathToSend","COMPLETED","SENT_NEEDS_ABORT","NEEDS_ABORT","rootMostTransactionNode","getAncestorTransactionNode_","rerunTransactionQueue_","txnsToRerun","abortTransaction","currentNode","newDataNode","hasExplicitPriority","oldWriteId","newNodeResolved","lastInput","transactionNode","transactionQueue","aggregateTransactionQueuesForNode_","to","from","forEachAncestor","abortTransactionsOnNode_","forEachDescendant","lastSent","TreeNode","childCount","parent_","pathObj","updateParents_","includeSelf","childrenFirst","forEachImmediateDescendantWithValue","updateChild_","childEmpty","childExists","forceLongPolling","forceWebSockets","setSecurityDebugCallback","interceptServerData","DataConnection","simpleListen","echo","onEcho","RealTimeConnection","hijackHash","newHash","oldPut","opt_onComplete","opt_hash","ConnectionTarget","listens","firebaseRef","116","117","toBase64","arrayBuffer","uint8Version","registerMessaging","factoryMethod","sw_controller","window_controller","namespaceExports","Messaging","_a","CODES","AVAILABLE_IN_WINDOW","AVAILABLE_IN_SW","SHOULD_BE_INHERITED","BAD_SENDER_ID","INCORRECT_GCM_SENDER_ID","PERMISSION_DEFAULT","PERMISSION_BLOCKED","UNSUPPORTED_BROWSER","NOTIFICATIONS_BLOCKED","FAILED_DEFAULT_REGISTRATION","SW_REGISTRATION_EXPECTED","GET_SUBSCRIPTION_FAILED","INVALID_SAVED_TOKEN","SW_REG_REDUNDANT","TOKEN_SUBSCRIBE_FAILED","TOKEN_SUBSCRIBE_NO_TOKEN","TOKEN_SUBSCRIBE_NO_PUSH_SET","USE_SW_BEFORE_GET_TOKEN","INVALID_DELETE_TOKEN","DELETE_TOKEN_NOT_FOUND","DELETE_SCOPE_NOT_FOUND","BG_HANDLER_FUNCTION_EXPECTED","NO_WINDOW_CLIENT_TO_MSG","UNABLE_TO_RESUBSCRIBE","NO_FCM_TOKEN_FOR_RESUBSCRIBE","FAILED_TO_DELETE_TOKEN","NO_SW_IN_REG","BAD_SCOPE","BAD_VAPID_KEY","BAD_SUBSCRIPTION","BAD_TOKEN","BAD_PUSH_SET","FAILED_DELETE_VAPID_KEY","ERROR_MAP","codes","array_buffer_to_base64","FCM_APPLICATION_SERVER_KEY","SUBSCRIPTION_DETAILS","userVisibleOnly","applicationServerKey","fcm_details","ENDPOINT","APPLICATION_SERVER_KEY","SUBSCRIPTION_OPTIONS","FCM_TOKEN_OBJ_STORE","token_manager_TokenManager","TokenManager","errorFactory_","openDbPromise_","openDatabase_","DB_NAME","createIndex","unique","closeDatabase","getTokenDetailsFromToken","fcmToken","getTokenDetailsFromSWScope_","swScope","scopeRequest","getAllTokenDetailsForSenderId_","senderId","senderIdTokens","cursorRequest","cursor","continue","subscribeToFCM","subscription","pushSet","p256dh","fcmSubscribeBody","Headers","append","subscribeOptions","fetch","fcmTokenResponse","isSameSubscription_","masterTokenDetails","saveTokenDetails_","swRegistration","fcmPushSet","details","scope","fcmSenderId","getSavedToken","ServiceWorkerRegistration","allTokenDetails","tokenDetails","pushManager","getSubscription","createToken","fcmTokenDetails","deleteToken","token_manager","SENDER_ID_OPTION_NAME","controller_interface_ControllerInterface","ControllerInterface","messagingSenderId_","tokenManager_","currentPermission","getNotificationPermission_","notification_permission","getSWRegistration_","requestPermission","useServiceWorker","optError","optCompleted","onTokenRefresh","setBackgroundMessageHandler","Notification","permission","getTokenManager","controller_interface","PARAMS","TYPE_OF_MSG","DATA","msgType","PUSH_MSG_RECEIVED","NOTIFICATION_CLICKED","createNewMsg","msgData","worker_page_message","TYPES_OF_MSG","default_sw","window_controller_WindowController","WindowController","registrationToUse_","manifestCheckPromise_","messageObserver_","tokenRefreshObserver_","onTokenRefresh_","setupSWMessageListener_","isSupported_","manifestCheck_","manifestTag","querySelector","manifestContent","managePermissionResult","permissionPromise","waitForRegistrationToActivate_","serviceWorker","installing","waiting","state","stateChangeListener","browserErrorMessage","workerPageMessage","pushMessage","PushSubscription","sw_controller___extends","sw_controller_SWController","SWController","onPush_","onSubChange_","onNotificationClick_","bgMessageHandler_","msgPayload","handleMsgPromise","hasVisibleClients_","hasVisibleClients","notification","sendMessageToWindowClients_","notificationDetails","getNotificationData_","notificationTitle","showNotification","waitUntil","promiseChain","tokenManager","newSubscription","stopImmediatePropagation","clickAction","getWindowClient_","windowClient","clients","openWindow","internalMsg","attemptToMessageClient_","notificationInformation","assign","URL","matchAll","includeUncontrolled","clientList","suitableClient","esm","118","119","prependCode","FirebaseStorageError","Code","UNKNOWN","objectNotFound","OBJECT_NOT_FOUND","quotaExceeded","bucket","unauthenticated","UNAUTHENTICATED","unauthorized","UNAUTHORIZED","retryLimitExceeded","RETRY_LIMIT_EXCEEDED","error_canceled","CANCELED","invalidUrl","INVALID_URL","invalidDefaultBucket","INVALID_DEFAULT_BUCKET","cannotSliceBlob","CANNOT_SLICE_BLOB","serverFileWrongSize","SERVER_FILE_WRONG_SIZE","noDownloadURL","NO_DOWNLOAD_URL","invalidArgument","INVALID_ARGUMENT","invalidArgumentCount","argMin","argMax","real","countPart","plural","INVALID_ARGUMENT_COUNT","appDeleted","APP_DELETED","invalidRootOperation","INVALID_ROOT_OPERATION","invalidFormat","format","INVALID_FORMAT","internalError","INTERNAL_ERROR","formatValidator","stringFormat","StringFormat","RAW","BASE64","BASE64URL","DATA_URL","dataFromString","StringData","utf8Bytes_","base64Bytes_","dataURLBytes_","dataURLContentType_","valid","lo","percentEncodedBytes_","hasMinus","hasUnder","invalidChar","hasPlus","hasSlash","string_DataURLParts","rest","endsWith","end","taskStateFromInternalTaskState","InternalTaskState","RUNNING","PAUSING","CANCELING","TaskState","PAUSED","SUCCESS","ERROR","make","resolver","promise_external_resolve","promise_external_reject","isDef","isJustDef","isFunction","isObject","isNonArrayObject","isString","isNumber","isNativeBlob","isNativeBlobDefined","Blob","jsonObjectOrNull","path_parent","canonicalChildPath","component","lastComponent","makeNormalUrl","urlPart","domainBase","apiBaseUrl","makeDownloadUrl","downloadBase","makeUploadUrl","apiUploadBaseUrl","makeQueryString","encode","queryPart","nextPart","noXform_","xformPath","fullPath","getMappings","mappingsXformPath","xformSize","size","xformTokens","tokens","alt","mappings_","mappings","Mapping","nameMapping","xform","sizeMapping","addRef","authWrapper","generateRef","loc","location_Location","makeStorageReference","fromResource","resource","mapping","local","server","fromResourceString","resourceString","toResourceString","writable","metadataValidator","validate","specs","passed","minArgs","maxArgs","validator","and_","v1","v2","stringSpec","opt_validator","opt_optional","stringValidator","args_ArgSpec","uploadDataSpec","ArrayBuffer","metadataSpec","nonNegativeNumberSpec","looseObjectSpec","nullFunctionSpec","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","getBlob","sliceBlob","blob","webkitSlice","mozSlice","array_contains","elem","array_clone","arraylike","handlerCheck","cndn","metadataHandler","handler","text","sharedErrorHandler","errorHandler","newErr","getStatus","setServerResponseProp","serverResponseProp","objectErrorHandler","shared","getMetadata","fullServerUrl","maxOperationRetryTime","requestInfo","RequestInfo","updateMetadata","deleteObject","successCodes","determineContentType_","metadataForUpload_","opt_metadata","multipartUpload","bucketOnlyServerUrl","X-Goog-Upload-Protocol","boundary","metadataString","preBlobPart","postBlobPart","blob_FbsBlob","maxUploadRetryTime","uploadData","checkResumeHeader_","opt_allowed","createResumableUpload","X-Goog-Upload-Command","X-Goog-Upload-Header-Content-Length","X-Goog-Upload-Header-Content-Type","getResumableUploadStatus","sizeString","ResumableUploadStatus","continueResumableUpload","opt_status","opt_progressCallback","uploadStatus","newCurrent","current","bytesToUpload","total","bytesLeft","startByte","endByte","uploadCommand","X-Goog-Upload-Offset","progressCallback","async_async","argsToForward","canceled","cancelState","triggerCallback","triggeredCallback","callWithDelay","millis","timeoutId","hitTimeout","waitSeconds","waitMillis","stop","wasTimeout","stopped","addAuthHeader_","addVersionHeader_","number","makeRequest","pool","request_NetworkRequest","additionalRetryCodes","factory","opt_url","service_Service","xhriopool_XhrIoPool","registerStorage","TaskEvent","Storage","reference_Reference","STORAGE_TYPE","ErrorCode","defaultMaxOperationRetryTime","defaultMaxUploadRetryTime","minSafeInteger","code_","message_","serverResponse_","codeProp","codeEquals","serverResponse","BUCKET_NOT_FOUND","PROJECT_NOT_FOUND","INVALID_CHECKSUM","INVALID_EVENT_NAME","NO_DEFAULT_BUCKET","opt_contentType","DataURLParts","STATE_CHANGED","xhrio_network_NetworkXhrIo","NetworkXhrIo","sent_","xhr_","errorCode_","NO_ERROR","sendPromise_","ABORT","NETWORK_ERROR","opt_body","opt_headers","getErrorCode","getResponseText","addUploadProgressListener","upload","removeUploadProgressListener","XhrIoPool","createXhrIo","Location","makeFromBucketSpec","bucketString","bucketLocation","makeFromUrl","gsModify","httpModify","gsRegex","gsIndices","httpRegex","httpIndices","groups","regex","indices","postModify","group","captures","bucketValue","pathValue","opt_local","opt_writable","opt_xform","ArgSpec","FbsBlob","opt_elideCopy","blobType","data_","byteLength","size_","type_","realBlob","sliced","buffer","blobby","uint8Arrays","finalLength_1","merged_1","index_1","observer_Observer","Observer","opt_error","opt_complete","UploadTaskSnapshot","bytesTransferred","totalBytes","urls","task_UploadTask","UploadTask","transferred_","needToFetchStatus_","needToFetchMetadata_","observers_","error_","uploadUrl_","request_","chunkMultiplier_","resolve_","reject_","authWrapper_","location_","blob_","metadata_","resumable_","shouldDoResumable_","errorHandler_","completeTransitions_","transition_","metadataErrorHandler_","promise_","makeProgressCallback_","sizeBefore","loaded","updateProgress_","createResumable_","fetchStatus_","fetchMetadata_","continueUpload_","oneShotUpload_","resolveToken_","getAuthToken","createRequest","getPromise","statusRequest","uploadRequest","newStatus","increaseMultiplier_","metadataRequest","multipartRequest","transferred","old","notifyObservers_","wasPaused","externalState","completed","typeValidator","_p","nextOrObserverValidator","nextValidator","observerValidator","nextOrObserverMessage","makeBinder","binder","addObserver_","removeObserver_","binderNextOrObserverValidator","binderSpecs","notifyObserver_","finishPromise_","triggered","pause","newRef","newPath","throwIfRoot_","putString","getDownloadURL","failrequest_FailRequest","FailRequest","appDelete","requestmap_RequestMap","RequestMap","map_","id_","addRequest","unmap","authwrapper_AuthWrapper","AuthWrapper","maker","requestMaker","bucket_","deleted_","extractBucket_","storageRefMaker_","requestMaker_","pool_","service_","maxOperationRetryTime_","maxUploadRetryTime_","requestMap_","config","_error","deleteApp","setMaxUploadRetryTime","setMaxOperationRetryTime","NetworkRequest","errorCallback","pendingXhr_","backoffId_","canceled_","appDelete_","url_","method_","headers_","body_","successCodes_","additionalRetryCodes_","errorCallback_","progressCallback_","timeout_","doTheRequest","backoffCallback","progressListener","progressEvent","lengthComputable","RequestEndStatus","hitServer","isRetryStatusCode_","wasCanceled","successCode","backoffDone","requestWentThrough","wasSuccessCode","isFiveHundredCode","extraRetryCodes","isExtraRetryCode","isRequestSpecificRetryCode","opt_canceled","Service","authWrapperBucket","internals_","service_ServiceInternals","ServiceInternals"],"mappings":";;;;;AAKA,GAAIA,UAAW,WACL,GAAIC,OAA2B,KAAXA,EAAyBC,KAAOD,CACtD,OAAgB,UAAUE,GCgClC,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QA1DA,GAAAK,GAAAX,EAAA,oBACAA,GAAA,8BAAAY,EAAAC,EAAAC,GAIA,IADA,GAAAV,GAAAW,EAAAC,EAAAR,EAAA,EAAAS,KACQT,EAAAI,EAAAM,OAAoBV,IAC5BO,EAAAH,EAAAJ,GACAW,EAAAJ,IACAE,EAAAG,KAAAD,EAAAJ,GAAA,IAEAI,EAAAJ,GAAA,CAEA,KAAAX,IAAAS,GACAQ,OAAAC,UAAAC,eAAAb,KAAAG,EAAAT,KACAF,EAAAE,GAAAS,EAAAT,GAIA,KADAO,KAAAC,EAAAC,EAAAC,GACAG,EAAAC,QACAD,EAAAO,SAEA,IAAAV,EACA,IAAAN,EAAA,EAAYA,EAAAM,EAAAI,OAA2BV,IACvCQ,EAAAb,IAAAsB,EAAAX,EAAAN,GAGA,OAAAQ,GAIA,IAAAX,MAGAc,GACAO,EAAA,EAiHA,OApFAvB,GAAAwB,EAAA,SAAAZ,GA+BA,QAAAa,KAEAC,EAAAC,QAAAD,EAAAE,OAAA,KACAC,aAAAC,EACA,IAAAC,GAAAf,EAAAJ,EACA,KAAAmB,IACAA,GACAA,EAAA,GAAAC,MAAA,iBAAApB,EAAA,aAEAI,EAAAJ,OAAAqB,IAvCA,GAAAC,GAAAlB,EAAAJ,EACA,QAAAsB,EACA,UAAAC,SAAA,SAAAC,GAA0CA,KAI1C,IAAAF,EACA,MAAAA,GAAA,EAIA,IAAAG,GAAA,GAAAF,SAAA,SAAAC,EAAAE,GACAJ,EAAAlB,EAAAJ,IAAAwB,EAAAE,IAEAJ,GAAA,GAAAG,CAGA,IAAAE,GAAAC,SAAAC,qBAAA,WACAf,EAAAc,SAAAE,cAAA,SACAhB,GAAAiB,KAAA,kBACAjB,EAAAkB,QAAA,QACAlB,EAAAmB,OAAA,EACAnB,EAAAI,QAAA,KAEA9B,EAAA8C,IACApB,EAAAqB,aAAA,QAAA/C,EAAA8C,IAEApB,EAAAsB,IAAAhD,EAAAiD,EAAA,GAAArC,EAAA,KACA,IAAAkB,GAAAoB,WAAAzB,EAAA,KAgBA,OAfAC,GAAAC,QAAAD,EAAAE,OAAAH,EAaAc,EAAAY,YAAAzB,GAEAW,GAIArC,EAAAoD,EAAArD,EAGAC,EAAAqD,EAAAnD,EAGAF,EAAAsD,EAAA,SAAAnD,EAAAoD,EAAAC,GACAxD,EAAAyD,EAAAtD,EAAAoD,IACArC,OAAAwC,eAAAvD,EAAAoD,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAxD,EAAA8D,EAAA,SAAA1D,GACA,GAAAoD,GAAApD,KAAA2D,WACA,WAA2B,MAAA3D,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAAsD,EAAAE,EAAA,IAAAA,GACAA,GAIAxD,EAAAyD,EAAA,SAAAO,EAAAC,GAAsD,MAAA/C,QAAAC,UAAAC,eAAAb,KAAAyD,EAAAC,IAGtDjE,EAAAiD,EAAA,GAGAjD,EAAAkE,GAAA,SAAAC,GAA8D,KAApBC,SAAAC,MAAAF,GAAoBA,GAG9DnE,IAAAsB,EAAA,MDaM,SAAUlB,EAAQD,EAASH,GAEjC,YEnJA,SAAAsE,GAAAlB,GACA,OAAAH,KAAAG,GAAAjD,EAAAiB,eAAA6B,KAAA9C,EAAA8C,GAAAG,EAAAH,IAEA/B,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,IAC9CD,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,KACAsE,EAAAtE,EAAA,MF0KO,CACA,CACA,CACA,CACA,CAED,SAAUI,EAAQoE,EAAqBxE,GAE7C,YG7CA,SAAAyE,KA8CA,QAAAC,GAAAnB,GAEAoB,EADAC,EAAArB,GACA,gBACAqB,GAAArB,GAKA,QAAAsB,GAAAtB,GAKA,MAJAA,MAAAuB,EACAC,EAAAH,EAAArB,IACAc,EAAA,UAA6Bd,SAE7BqB,EAAArB,GAMA,QAAAyB,GAAAC,EAAA1B,OACAtB,KAAAsB,EACAA,EAAAuB,EAGA,gBAAAvB,IAAA,KAAAA,GACAc,EAAA,gBAAuCd,OAAA,KAGvCwB,EAAAH,EAAArB,IACAc,EAAA,iBAAoCd,QAEpC,IAAAsB,GAAA,GAAAK,GAAAD,EAAA1B,EAAA4B,EAGA,OAFAP,GAAArB,GAAAsB,EACAF,EAAAE,EAAA,UACAA,EAKA,QAAAO,KAEA,MAAAlE,QAAAmE,KAAAT,GAAAU,IAAA,SAAA/B,GAAuD,MAAAqB,GAAArB,KASvD,QAAAgC,GAAAhC,EAAAiC,EAAAC,EAAAC,EAAAC,GAEAC,EAAArC,IACAc,EAAA,qBAAwCd,SAGxCqC,EAAArC,GAAAiC,EAEAE,IACAG,EAAAtC,GAAAmC,EAEAN,IAAAU,QAAA,SAAAjB,GACAa,EAAA,SAAAb,KAIA,IAAAkB,GAAA,SAAAC,GAQA,WAPA,KAAAA,IAAoCA,EAAAnB,KACpC,kBAAAmB,GAAAzC,IAGAc,EAAA,wBAA+Cd,SAG/CyC,EAAAzC,KAiBA,YAdAtB,KAAAwD,GACAvE,OAAA+E,EAAA,YAAAF,EAAAN,GAGAN,EAAA5B,GAAAwC,EAEAb,EAAA/D,UAAAoC,GAAA,WAEA,OADA2C,MACAC,EAAA,EAA4BA,EAAAC,UAAArF,OAAuBoF,IACnDD,EAAAC,GAAAC,UAAAD,EAGA,OADAE,MAAAC,EAAAC,KAAAF,KAAA9C,GACAiD,MAAAH,KAAAV,EAAAO,OAEAH,EAOA,QAAAU,GAAAC,GACAxF,OAAA+E,EAAA,YAAAd,EAAAuB,GAEA,QAAA/B,GAAAE,EAAA8B,GACAzF,OAAAmE,KAAAO,GAAAE,QAAA,SAAAc,GAEA,GAAAC,GAAAC,EAAAjC,EAAA+B,EACA,QAAAC,GAGAhB,EAAAgB,IACAhB,EAAAgB,GAAAF,EAAA9B,KAMA,QAAAiC,GAAAjC,EAAAtB,GACA,kBAAAA,EACA,WAEA,IAAAwD,GAAAxD,CAEA,OADAsB,GAAAI,QACA8B,EAtKA,GAAAnC,MACAgB,KACAC,KAEAV,GAGApB,YAAA,EACAiB,gBACAH,MACAmC,KAAA,KACA7E,gBACA8E,YAAA,QACAC,UACA3B,kBACAd,0BACAgC,kBACAU,gBAAAlB,EAAA,gBACAmB,aAAAnB,EAAA,aACAvB,YACAkB,YACAkB,eACA3E,gBACAkF,WAAApB,EAAA,YAiJA,OApIA/E,QAAA+E,EAAA,eAAAd,EAAA,UAAAA,GAEAjE,OAAAwC,eAAAyB,EAAA,QACAtB,IAAAuB,IAqBAlE,OAAA+E,EAAA,eAAApB,EAAA,MAAAK,GA4GAC,EAEA,QAAAd,GAAAiD,EAAApB,GACA,KAAAqB,GAAAC,OAAAF,EAAApB,GH9HAhF,OAAOwC,eAAec,EAAqB,cAAgBD,OAAO,GAGlE,IAAI0B,GAAMjG,EAAoB,GGvM9B+E,EAAA,SAAA0C,EAAAC,GACA,MAAAxG,QAAAC,UAAAC,eAAAb,KAAAkH,EAAAC,IAEA5C,EAAA,YAGA6C,KAKAzC,EAAA,WACA,QAAA0C,GAAA3C,EAAA1B,EAAAsE,GACAxB,KAAAwB,IACAxB,KAAAyB,GAAA,EACAzB,KAAA0B,KACA1B,KAAA2B,EAAAzE,EACA8C,KAAA4B,EAAA/G,OAAA+E,EAAA,UAAAhB,GACAoB,KAAAa,UACAgB,OAAA,WAAiC,aACjCC,SAAA,WAAmC,MAAAhG,SAAAC,QAAA,OACnCgG,qBAAA,SAAAC,GACAV,EAAA1G,KAAAoH,GAEAnF,WAAA,WAAwC,MAAAmF,GAAA,OAAyB,IAEjEC,wBAAA,SAAAD,GACAV,IAAAY,OAAA,SAAAC,GAA4E,MAAAA,KAAAH,MA6G5E,MAzGAnH,QAAAwC,eAAAkE,EAAAzG,UAAA,QACA0C,IAAA,WAEA,MADAwC,MAAAoC,IACApC,KAAA2B,GAEApE,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAkE,EAAAzG,UAAA,WACA0C,IAAA,WAEA,MADAwC,MAAAoC,IACApC,KAAA4B,GAEArE,YAAA,EACAD,cAAA,IAEAiE,EAAAzG,UAAAuH,OAAA,WACA,GAAAC,GAAAtC,IACA,WAAAlE,SAAA,SAAAC,GACAuG,EAAAF,IACArG,MAEAwG,KAAA,WACAD,EAAAd,EAAAX,SAAAxC,UAAAiE,EAAAX,EACA,IAAAa,KAMA,OALA3H,QAAAmE,KAAAsD,EAAAZ,GAAAjC,QAAA,SAAAgD,GACA5H,OAAAmE,KAAAsD,EAAAZ,EAAAe,IAAAhD,QAAA,SAAAiD,GACAF,EAAA5H,KAAA0H,EAAAZ,EAAAe,GAAAC,QAGA5G,QAAA6G,IAAAH,EAAAvD,IAAA,SAAA2D,GACA,MAAAA,GAAA/B,SAAAwB,cAGAE,KAAA,WACAD,EAAAb,GAAA,EACAa,EAAAZ,QAiBAH,EAAAzG,UAAAmF,EAAA,SAAA/C,EAAA2F,GAMA,OALA,KAAAA,IAA4CA,EAAApE,GAC5CuB,KAAAoC,IACApC,KAAA0B,EAAAxE,KACA8C,KAAA0B,EAAAxE,QAEA8C,KAAA0B,EAAAxE,GAAA2F,GAAA,CAKA,GAAAC,GAAAD,IAAApE,EACAoE,MACAjH,GACAgH,EAAA5C,KAAAwB,EAAAX,SAAAtB,UAAArC,GAAA8C,UAAA+C,UAAA7C,KAAAF,MAAA8C,EACA9C,MAAA0B,EAAAxE,GAAA2F,GAAAD,EAEA,MAAA5C,MAAA0B,EAAAxE,GAAA2F,IAMAtB,EAAAzG,UAAAiI,UAAA,SAAA1C,GACA,GAAAiC,GAAAtC,IAEAnF,QAAA+E,EAAA,YAAAI,KAAAK,GAUAA,EAAAQ,UAAAR,EAAAQ,SAAAkB,uBACAT,EAAA7B,QAAA,SAAA0C,GACAG,EAAAzB,SAAAkB,qBAAAI,KAEAb,OAOAC,EAAAzG,UAAAsH,EAAA,WACApC,KAAAyB,GACAzD,EAAA,eAAkCd,KAAA8C,KAAA2B,KAGlCJ,IAIA1C,GAAA/D,UAAAoC,MAAA2B,EAAA/D,UAAA8D,SACAC,EAAA/D,UAAAuH,QACAtE,QAAAiF,IAAA,KAwLA,IAAAC,IACAC,SAAA,iFAEAC,eAAA,6BACAC,gBAAA,8CACAC,cAAA,+CACAC,oBAAA,sDACAC,mBAAA,0LAIAC,uBAAA,2EAGAtC,EAAA,GAAAtB,GAAA,8BAAAqD,ECrWAtJ,GAAAsD,EAAAkB,EAAA,4BAAA5E,IAgBA,IAAAA,GAAA6E,GACAD,GAAA,WJ+kBO,CACA,CACA,CACC,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAAUpE,EAAQD,GK7mBxB,GAAA2J,EAGAA,GAAA,WACA,MAAAzD,QAGA,KAEAyD,KAAAC,SAAA,qBAAAC,MAAA,QACC,MAAAxI,GAED,gBAAA3B,KACAiK,EAAAjK,GAOAO,EAAAD,QAAA2J,GLonBM,SAAU1J,EAAQD,EAASH,GAEjC,YM1nBAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,IAI9CpE,EAAA8J,WAIAC,aAAA,EAIAC,YAAA,EAIAlD,YAAA,sBNkpBQ,CACA,CACA,CACA,CACA,CACA,CAEF,SAAU7G,EAAQD,GO9qBxB,QAAAiK,KACA,KAAApI,OAAA,mCAEA,QAAAqI,KACA,KAAArI,OAAA,qCAsBA,QAAAsI,GAAAC,GACA,GAAAC,IAAAtH,WAEA,MAAAA,YAAAqH,EAAA,EAGA,KAAAC,IAAAJ,IAAAI,IAAAtH,WAEA,MADAsH,GAAAtH,WACAA,WAAAqH,EAAA,EAEA,KAEA,MAAAC,GAAAD,EAAA,GACK,MAAA/I,GACL,IAEA,MAAAgJ,GAAAjK,KAAA,KAAAgK,EAAA,GACS,MAAA/I,GAET,MAAAgJ,GAAAjK,KAAA8F,KAAAkE,EAAA,KAMA,QAAAE,GAAAC,GACA,GAAAC,IAAA9I,aAEA,MAAAA,cAAA6I,EAGA,KAAAC,IAAAN,IAAAM,IAAA9I,aAEA,MADA8I,GAAA9I,aACAA,aAAA6I,EAEA,KAEA,MAAAC,GAAAD,GACK,MAAAlJ,GACL,IAEA,MAAAmJ,GAAApK,KAAA,KAAAmK,GACS,MAAAlJ,GAGT,MAAAmJ,GAAApK,KAAA8F,KAAAqE,KAYA,QAAAE,KACAC,GAAAC,IAGAD,GAAA,EACAC,EAAA/J,OACAgK,EAAAD,EAAAE,OAAAD,GAEAE,GAAA,EAEAF,EAAAhK,QACAmK,KAIA,QAAAA,KACA,IAAAL,EAAA,CAGA,GAAA/I,GAAAwI,EAAAM,EACAC,IAAA,CAGA,KADA,GAAAM,GAAAJ,EAAAhK,OACAoK,GAAA,CAGA,IAFAL,EAAAC,EACAA,OACAE,EAAAE,GACAL,GACAA,EAAAG,GAAAG,KAGAH,IAAA,EACAE,EAAAJ,EAAAhK,OAEA+J,EAAA,KACAD,GAAA,EACAJ,EAAA3I,IAiBA,QAAAuJ,GAAAd,EAAAe,GACAjF,KAAAkE,MACAlE,KAAAiF,QAYA,QAAAC,MAhKA,GAOAf,GACAG,EARAa,EAAApL,EAAAD,YAgBA,WACA,IAEAqK,EADA,kBAAAtH,YACAA,WAEAkH,EAEK,MAAA5I,GACLgJ,EAAAJ,EAEA,IAEAO,EADA,kBAAA9I,cACAA,aAEAwI,EAEK,MAAA7I,GACLmJ,EAAAN,KAuDA,IAEAS,GAFAC,KACAF,GAAA,EAEAI,GAAA,CAyCAO,GAAAC,SAAA,SAAAlB,GACA,GAAArE,GAAAwF,MAAAtF,UAAArF,OAAA,EACA,IAAAqF,UAAArF,OAAA,EACA,OAAAV,GAAA,EAAuBA,EAAA+F,UAAArF,OAAsBV,IAC7C6F,EAAA7F,EAAA,GAAA+F,UAAA/F,EAGA0K,GAAA9J,KAAA,GAAAoK,GAAAd,EAAArE,IACA,IAAA6E,EAAAhK,QAAA8J,GACAP,EAAAY,IASAG,EAAAlK,UAAAiK,IAAA,WACA/E,KAAAkE,IAAA/D,MAAA,KAAAH,KAAAiF,QAEAE,EAAAG,MAAA,UACAH,EAAAI,SAAA,EACAJ,EAAAK,OACAL,EAAAM,QACAN,EAAAO,QAAA,GACAP,EAAAQ,YAIAR,EAAAS,GAAAV,EACAC,EAAAU,YAAAX,EACAC,EAAAW,KAAAZ,EACAC,EAAAY,IAAAb,EACAC,EAAAa,eAAAd,EACAC,EAAAc,mBAAAf,EACAC,EAAAe,KAAAhB,EACAC,EAAAgB,gBAAAjB,EACAC,EAAAiB,oBAAAlB,EAEAC,EAAAkB,UAAA,SAAAnJ,GAAqC,UAErCiI,EAAAmB,QAAA,SAAApJ,GACA,KAAAvB,OAAA,qCAGAwJ,EAAAoB,IAAA,WAA2B,WAC3BpB,EAAAqB,MAAA,SAAAC,GACA,KAAA9K,OAAA,mCAEAwJ,EAAAuB,MAAA,WAA4B,WPgsBtB,SAAU3M,EAAQD,EAASH,GAEjC,YQz2BAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAyI,GAAAhN,EAAA,GAMAG,GAAA8M,OAAA,SAAAC,EAAAC,GACA,IAAAD,EACA,KAAA/M,GAAAiN,eAAAD,IAQAhN,EAAAiN,eAAA,SAAAD,GACA,MAAAnL,OAAA,sBACAgL,EAAA/C,UAAAhD,YACA,6BACAkG,KRk4BM,SAAU/M,EAAQD,EAASH,GAEjC,YSz5BAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA8I,GAAA,SAAAC,GAEA,OADAC,MAAAtK,EAAA,EACA5C,EAAA,EAAmBA,EAAAiN,EAAAvM,OAAgBV,IAAA,CAEnC,IADA,GAAAgD,GAAAiK,EAAAE,WAAAnN,GACAgD,EAAA,KACAkK,EAAAtK,KAAA,IAAAI,EACAA,IAAA,CAEAkK,GAAAtK,KAAAI,EAEA,MAAAkK,IAQAE,EAAA,SAAAC,GAGA,GAAAA,EAAA3M,OAFA,KAGA,MAAA4M,QAAAC,aAAApH,MAAA,KAAAkH,EAMA,QADAJ,GAAA,GACAjN,EAAA,EAAmBA,EAAAqN,EAAA3M,OAAkBV,GATrC,KASqC,CACrC,GAAA0B,GAAA2L,EAAAG,MAAAxN,IAVA,KAWAiN,IAAAK,OAAAC,aAAApH,MAAA,KAAAzE,GAEA,MAAAuL,GAGAnN,GAAA2N,QAMAC,EAAA,KAMAC,EAAA,KAMAC,EAAA,KAMAnE,EAAA,KAMAoE,kBAAA,iEAKAC,mBACA,MAAA9H,MAAA6H,kBAAA,OAMAE,2BACA,MAAA/H,MAAA6H,kBAAA,OAUAG,mBAAA,kBAAAC,MAUAC,gBAAA,SAAAC,EAAAC,GACA,IAAA/C,MAAAgD,QAAAF,GACA,KAAAxM,OAAA,gDAEAqE,MAAAsI,GAKA,QAJAC,GAAAH,EACApI,KAAAwI,EACAxI,KAAAyI,EACAvB,KACAlN,EAAA,EAAuBA,EAAAmO,EAAAzN,OAAkBV,GAAA,GACzC,GAAA0O,GAAAP,EAAAnO,GACA2O,EAAA3O,EAAA,EAAAmO,EAAAzN,OACAkO,EAAAD,EAAAR,EAAAnO,EAAA,KACA6O,EAAA7O,EAAA,EAAAmO,EAAAzN,OACAoO,EAAAD,EAAAV,EAAAnO,EAAA,KACA+O,EAAAL,GAAA,EACAM,GAAA,EAAAN,IAAA,EAAAE,GAAA,EACAK,GAAA,GAAAL,IAAA,EAAAE,GAAA,EACAI,EAAA,GAAAJ,CACAD,KACAK,EAAA,GACAP,IACAM,EAAA,KAGA/B,EAAAtM,KAAA2N,EAAAQ,GAAAR,EAAAS,GAAAT,EAAAU,GAAAV,EAAAW,IAEA,MAAAhC,GAAAiC,KAAA,KAUAC,aAAA,SAAAjB,EAAAC,GAGA,MAAApI,MAAAgI,qBAAAI,EACAiB,KAAAlB,GAEAnI,KAAAkI,gBAAAlB,EAAAmB,GAAAC,IAUAkB,aAAA,SAAAnB,EAAAC,GAGA,MAAApI,MAAAgI,qBAAAI,EACAH,KAAAE,GAEAf,EAAApH,KAAAuJ,wBAAApB,EAAAC,KAiBAmB,wBAAA,SAAApB,EAAAC,GACApI,KAAAsI,GAKA,QAJAkB,GAAApB,EACApI,KAAAyJ,EACAzJ,KAAA0J,EACAxC,KACAlN,EAAA,EAAuBA,EAAAmO,EAAAzN,QAAkB,CACzC,GAAAgO,GAAAc,EAAArB,EAAAwB,OAAA3P,MACA2O,EAAA3O,EAAAmO,EAAAzN,OACAkO,EAAAD,EAAAa,EAAArB,EAAAwB,OAAA3P,IAAA,IACAA,CACA,IAAA6O,GAAA7O,EAAAmO,EAAAzN,OACAoO,EAAAD,EAAAW,EAAArB,EAAAwB,OAAA3P,IAAA,KACAA,CACA,IAAA4P,GAAA5P,EAAAmO,EAAAzN,OACAmP,EAAAD,EAAAJ,EAAArB,EAAAwB,OAAA3P,IAAA,EAEA,MADAA,EACA,MAAA0O,GAAA,MAAAE,GAAA,MAAAE,GAAA,MAAAe,EACA,KAAAlO,QAEA,IAAAoN,GAAAL,GAAA,EAAAE,GAAA,CAEA,IADA1B,EAAAtM,KAAAmO,GACA,IAAAD,EAAA,CACA,GAAAE,GAAAJ,GAAA,MAAAE,GAAA,CAEA,IADA5B,EAAAtM,KAAAoO,GACA,IAAAa,EAAA,CACA,GAAAZ,GAAAH,GAAA,MAAAe,CACA3C,GAAAtM,KAAAqO,KAIA,MAAA/B,IAOA4C,EAAA,WACA,IAAA9J,KAAAyI,EAAA,CACAzI,KAAAyI,KACAzI,KAAA0J,KACA1J,KAAAwI,KACAxI,KAAAyJ,IAEA,QAAAzP,GAAA,EAA2BA,EAAAgG,KAAA8H,aAAApN,OAA8BV,IACzDgG,KAAAyI,EAAAzO,GAAAgG,KAAA8H,aAAA6B,OAAA3P,GACAgG,KAAA0J,EAAA1J,KAAAyI,EAAAzO,MACAgG,KAAAwI,EAAAxO,GAAAgG,KAAA+H,qBAAA4B,OAAA3P,GACAgG,KAAAyJ,EAAAzJ,KAAAwI,EAAAxO,MAEAA,GAAAgG,KAAA6H,kBAAAnN,SACAsF,KAAA0J,EAAA1J,KAAA+H,qBAAA4B,OAAA3P,MACAgG,KAAAyJ,EAAAzJ,KAAA8H,aAAA6B,OAAA3P,UAWAF,EAAAiQ,aAAA,SAAA9C,GACA,GAAA+C,GAAAhD,EAAAC,EACA,OAAAnN,GAAA2N,OAAAS,gBAAA8B,GAAA,IAWAlQ,EAAAmQ,aAAA,SAAAhD,GACA,IACA,MAAAnN,GAAA2N,OAAA6B,aAAArC,GAAA,GAEA,MAAA9L,GACA4C,QAAAC,MAAA,wBAAA7C,GAEA,cTk7BM,SAAUpB,EAAQD,EAASH,GAEjC,YUhrCA,SAAAuQ,GAAAjD,GACA,MAAAkD,MAAAC,MAAAnD,GAQA,QAAAoD,GAAAC,GACA,MAAAH,MAAAE,UAAAC,GAjBAzP,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,IAU9CpE,EAAAoQ,WASApQ,EAAAuQ,aV+sCM,SAAUtQ,EAAQD,EAASH,GAEjC,YWpuCAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,IAE9CpE,EAAA4E,SAAA,SAAA0C,EAAAC,GACA,MAAAxG,QAAAC,UAAAC,eAAAb,KAAAkH,EAAAC,IAEAvH,EAAAyQ,QAAA,SAAAnJ,EAAAC,GACA,GAAAxG,OAAAC,UAAAC,eAAAb,KAAAkH,EAAAC,GACA,MAAAD,GAAAC,IAUAvH,EAAA2F,QAAA,SAAA2B,EAAAoJ,GACA,OAAAnJ,KAAAD,GACAvG,OAAAC,UAAAC,eAAAb,KAAAkH,EAAAC,IACAmJ,EAAAnJ,EAAAD,EAAAC,KAUAvH,EAAA2Q,OAAA,SAAAC,EAAAC,GAIA,MAHA7Q,GAAA2F,QAAAkL,EAAA,SAAAtJ,EAAAnD,GACAwM,EAAArJ,GAAAnD,IAEAwM,GAOA5Q,EAAA8Q,MAAA,SAAAxJ,GACA,MAAAtH,GAAA2Q,UAA4BrJ,IAS5BtH,EAAA+Q,gBAAA,SAAAzJ,GACA,sBAAAA,IAAA,OAAAA,GAEAtH,EAAAgR,QAAA,SAAA1J,GACA,OAAAC,KAAAD,GACA,QAEA,WAEAtH,EAAAiR,SAAA,SAAA3J,GACA,GAAA4J,GAAA,CACA,QAAA3J,KAAAD,GACA4J,GAEA,OAAAA,IAEAlR,EAAAmF,IAAA,SAAAmC,EAAA6J,EAAAC,GACA,GAAAC,KACA,QAAA9J,KAAAD,GACA+J,EAAA9J,GAAA4J,EAAA/Q,KAAAgR,EAAA9J,EAAAC,KAAAD,EAEA,OAAA+J,IAEArR,EAAAsR,QAAA,SAAAhK,EAAAoJ,EAAAa,GACA,OAAAhK,KAAAD,GACA,GAAAoJ,EAAAtQ,KAAAmR,EAAAjK,EAAAC,KAAAD,GACA,MAAAC,IAKAvH,EAAAwR,UAAA,SAAAlK,EAAAoJ,EAAAa,GACA,GAAAhK,GAAAvH,EAAAsR,QAAAhK,EAAAoJ,EAAAa,EACA,OAAAhK,IAAAD,EAAAC,IAEAvH,EAAAyR,UAAA,SAAAnK,GACA,OAAAC,KAAAD,GACA,MAAAC,IAGAvH,EAAA0R,UAAA,SAAApK,GACA,GAAA+J,MACAnR,EAAA,CACA,QAAAqH,KAAAD,GACA+J,EAAAnR,KAAAoH,EAAAC,EAEA,OAAA8J,IAUArR,EAAA2R,MAAA,SAAArK,EAAAoJ,GACA,OAAAnJ,KAAAD,GACA,GAAAvG,OAAAC,UAAAC,eAAAb,KAAAkH,EAAAC,KACAmJ,EAAAnJ,EAAAD,EAAAC,IACA,QAIA,YX4vCQ,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAAUtH,EAAQD,EAASH,GYz4CjCA,EAAA,IACAI,EAAAD,QAAAH,EAAA,GAAA+R,SZg6CM,SAAU3R,EAAQoE,EAAqBxE,GAE7C,YACAkB,QAAOwC,eAAec,EAAqB,cAAgBD,OAAO,GAC7C,IAAIyN,GAAuDhS,EAAoB,IAE3EiS,GAD+DjS,EAAoB8D,EAAEkO,GACrChS,EAAoB,Kav7C7FkS,Gbw7CiFlS,EAAoB8D,EAAEmO,Gax7CvGjS,EAAA,IAAAA,GAAA8D,EAAAoO,Ibm9CM,SAAU9R,EAAQD,EAASH,Icn9CjC,SAAAmS,GAeA,GAAAC,GAAA,WACA,YAAAD,EACA,MAAAA,EAEA,aAAAtS,EACA,MAAAA,EAEA,uBAAAC,MACA,MAAAA,KAEA,MAAAkC,OAAA,oCAGA,oBAAAG,WAEAiQ,EAAA,QAAAjQ,QAAAnC,EAAA,Od09C6BO,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,Ie5/CjC,SAAAqS,IAAA,SAAAC,GAMA,QAAA/G,MAGA,QAAAhF,GAAAsK,EAAA0B,GACA,kBACA1B,EAAArK,MAAA+L,EAAAnM,YAIA,QAAAjE,GAAA0O,GACA,mBAAAxK,MAAA,SAAAmM,WAAA,uCACA,sBAAA3B,GAAA,SAAA2B,WAAA,iBACAnM,MAAAoM,OAAA,EACApM,KAAAqM,UAAA,EACArM,KAAAsM,WAAA1Q,GACAoE,KAAAuM,KAEAC,EAAAhC,EAAAxK,MAGA,QAAAyM,GAAAhT,EAAAiT,GACA,SAAAjT,EAAA2S,QACA3S,IAAA6S,MAEA,QAAA7S,EAAA2S,OAEA,WADA3S,GAAA8S,EAAA3R,KAAA8R,EAGAjT,GAAA4S,UAAA,EACAvQ,EAAA6Q,EAAA,WACA,GAAAC,GAAA,IAAAnT,EAAA2S,OAAAM,EAAAG,YAAAH,EAAAI,UACA,WAAAF,EAEA,YADA,IAAAnT,EAAA2S,OAAArQ,EAAAE,GAAAyQ,EAAA1Q,QAAAvC,EAAA6S,OAGA,IAAAS,EACA,KACAA,EAAAH,EAAAnT,EAAA6S,QACO,MAAAnR,GAEP,WADAc,GAAAyQ,EAAA1Q,QAAAb,GAGAY,EAAA2Q,EAAA1Q,QAAA+Q,KAIA,QAAAhR,GAAAtC,EAAAuT,GACA,IAEA,GAAAA,IAAAvT,EAAA,SAAA0S,WAAA,4CACA,IAAAa,IAAA,gBAAAA,IAAA,kBAAAA,IAAA,CACA,GAAAzK,GAAAyK,EAAAzK,IACA,IAAAyK,YAAAlR,GAIA,MAHArC,GAAA2S,OAAA,EACA3S,EAAA6S,OAAAU,MACAC,GAAAxT,EAES,sBAAA8I,GAET,WADAiK,GAAAtM,EAAAqC,EAAAyK,GAAAvT,GAIAA,EAAA2S,OAAA,EACA3S,EAAA6S,OAAAU,EACAC,EAAAxT,GACK,MAAA0B,GACLc,EAAAxC,EAAA0B,IAIA,QAAAc,GAAAxC,EAAAuT,GACAvT,EAAA2S,OAAA,EACA3S,EAAA6S,OAAAU,EACAC,EAAAxT,GAGA,QAAAwT,GAAAxT,GACA,IAAAA,EAAA2S,QAAA,IAAA3S,EAAA8S,EAAA7R,QACAoB,EAAA6Q,EAAA,WACAlT,EAAA4S,UACAvQ,EAAAoR,EAAAzT,EAAA6S,SAKA,QAAAtS,GAAA,EAAA8K,EAAArL,EAAA8S,EAAA7R,OAAiDV,EAAA8K,EAAS9K,IAC1DyS,EAAAhT,IAAA8S,EAAAvS,GAEAP,GAAA8S,EAAA,KAGA,QAAAY,GAAAN,EAAAC,EAAA9Q,GACAgE,KAAA6M,YAAA,kBAAAA,KAAA,KACA7M,KAAA8M,WAAA,kBAAAA,KAAA,KACA9M,KAAAhE,UASA,QAAAwQ,GAAAhC,EAAA/Q,GACA,GAAA2T,IAAA,CACA,KACA5C,EAAA,SAAAtM,GACAkP,IACAA,GAAA,EACArR,EAAAtC,EAAAyE,KACO,SAAAmP,GACPD,IACAA,GAAA,EACAnR,EAAAxC,EAAA4T,MAEK,MAAAC,GACL,GAAAF,EAAA,MACAA,IAAA,EACAnR,EAAAxC,EAAA6T,IAxHA,GAAAC,GAAA1Q,UA4HAf,GAAAhB,UAAA,eAAAgS,GACA,MAAA9M,MAAAuC,KAAA,KAAAuK,IAGAhR,EAAAhB,UAAAyH,KAAA,SAAAsK,EAAAC,GACA,GAAAU,GAAA,GAAAxN,MAAA,YAAAkF,EAGA,OADAuH,GAAAzM,KAAA,GAAAmN,GAAAN,EAAAC,EAAAU,IACAA,GAGA1R,EAAA6G,IAAA,SAAA8K,GACA,GAAA5N,GAAAwF,MAAAvK,UAAA0M,MAAAtN,KAAAuT,EAEA,WAAA3R,GAAA,SAAAC,EAAAE,GAIA,QAAAkP,GAAAnR,EAAA0T,GACA,IACA,GAAAA,IAAA,gBAAAA,IAAA,kBAAAA,IAAA,CACA,GAAAnL,GAAAmL,EAAAnL,IACA,sBAAAA,GAIA,WAHAA,GAAArI,KAAAwT,EAAA,SAAAA,GACAvC,EAAAnR,EAAA0T,IACezR,GAIf4D,EAAA7F,GAAA0T,EACA,KAAAC,GACA5R,EAAA8D,GAES,MAAAyN,GACTrR,EAAAqR,IAnBA,OAAAzN,EAAAnF,OAAA,MAAAqB,MAuBA,QAtBA4R,GAAA9N,EAAAnF,OAsBAV,EAAA,EAAqBA,EAAA6F,EAAAnF,OAAiBV,IACtCmR,EAAAnR,EAAA6F,EAAA7F,OAKA8B,EAAAC,QAAA,SAAAmC,GACA,MAAAA,IAAA,gBAAAA,MAAA0P,cAAA9R,EACAoC,EAGA,GAAApC,GAAA,SAAAC,GACAA,EAAAmC,MAIApC,EAAAG,OAAA,SAAAiC,GACA,UAAApC,GAAA,SAAAC,EAAAE,GACAA,EAAAiC,MAIApC,EAAA+R,KAAA,SAAAC,GACA,UAAAhS,GAAA,SAAAC,EAAAE,GACA,OAAAjC,GAAA,EAAA8K,EAAAgJ,EAAApT,OAA0CV,EAAA8K,EAAS9K,IACnD8T,EAAA9T,GAAAuI,KAAAxG,EAAAE,MAMAH,EAAA6Q,EAAA,kBAAAX,IAAA,SAAAxB,GAA+EwB,EAAAxB,KAC/E,SAAAA,GACA+C,EAAA/C,EAAA,IAGA1O,EAAAoR,EAAA,SAAApP,GACA,mBAAAC,mBACAA,QAAAgQ,KAAA,wCAAAjQ,IASAhC,EAAAkS,EAAA,SAAAxD,GACA1O,EAAA6Q,EAAAnC,GAQA1O,EAAAmS,EAAA,SAAAzD,GACA1O,EAAAoR,EAAA1C,OAGA,KAAAzQ,KAAAD,QACAC,EAAAD,QAAAgC,EACGmQ,EAAAnQ,UACHmQ,EAAAnQ,YAGCkE,QfggD4B9F,KAAKJ,EAASH,EAAoB,IAAIqS,eAI7D,SAAUjS,EAAQD,EAASH,GgB3tDjC,QAAAuU,GAAAC,EAAAC,GACApO,KAAAqO,EAAAF,EACAnO,KAAAsO,SAAAF,EAnBA,GAAAjO,GAAAuD,SAAA5I,UAAAqF,KAIArG,GAAA+C,WAAA,WACA,UAAAqR,GAAA/N,EAAAjG,KAAA2C,WAAArD,EAAAuG,WAAAvE,eAEA1B,EAAAyU,YAAA,WACA,UAAAL,GAAA/N,EAAAjG,KAAAqU,YAAA/U,EAAAuG,WAAAyO,gBAEA1U,EAAA0B,aACA1B,EAAA0U,cAAA,SAAA/S,GACAA,GACAA,EAAAgT,SAQAP,EAAApT,UAAA4T,MAAAR,EAAApT,UAAA6T,IAAA,aACAT,EAAApT,UAAA2T,MAAA,WACAzO,KAAAsO,SAAApU,KAAAV,EAAAwG,KAAAqO,IAIAvU,EAAA8U,OAAA,SAAAC,EAAAC,GACAtT,aAAAqT,EAAAE,GACAF,EAAAG,EAAAF,GAGAhV,EAAAmV,SAAA,SAAAJ,GACArT,aAAAqT,EAAAE,GACAF,EAAAG,GAAA,GAGAlV,EAAAoV,EAAApV,EAAAqV,OAAA,SAAAN,GACArT,aAAAqT,EAAAE,EAEA,IAAAD,GAAAD,EAAAG,CACAF,IAAA,IACAD,EAAAE,EAAAlS,WAAA,WACAgS,EAAAO,GACAP,EAAAO,KACKN,KAKLnV,EAAA,IACAG,EAAAkS,0BACAlS,EAAAuV,+BhBmvDM,SAAUtV,EAAQD,EAASH,IiBvyDjC,SAAAmS,EAAA3G,IAAA,SAAA2G,EAAAlQ,GACA,YAYA,SAAAoQ,GAAAhK,GAEA,kBAAAA,KACAA,EAAA0B,SAAA,GAAA1B,GAIA,QADAnC,GAAAwF,MAAAtF,UAAArF,OAAA,GACAV,EAAA,EAAqBA,EAAA6F,EAAAnF,OAAiBV,IACtC6F,EAAA7F,GAAA+F,UAAA/F,EAAA,EAGA,IAAAsV,IAAkBtN,WAAAnC,OAGlB,OAFA0P,GAAAC,GAAAF,EACAG,EAAAD,GACAA,IAGA,QAAAH,GAAA5C,SACA8C,GAAA9C,GAGA,QAAA1H,GAAAuK,GACA,GAAAtN,GAAAsN,EAAAtN,SACAnC,EAAAyP,EAAAzP,IACA,QAAAA,EAAAnF,QACA,OACAsH,GACA,MACA,QACAA,EAAAnC,EAAA,GACA,MACA,QACAmC,EAAAnC,EAAA,GAAAA,EAAA,GACA,MACA,QACAmC,EAAAnC,EAAA,GAAAA,EAAA,GAAAA,EAAA,GACA,MACA,SACAmC,EAAA7B,MAAAvE,EAAAiE,IAKA,QAAA6P,GAAAjD,GAGA,GAAAkD,EAGA9S,WAAA6S,EAAA,EAAAjD,OACS,CACT,GAAA6C,GAAAC,EAAA9C,EACA,IAAA6C,EAAA,CACAK,GAAA,CACA,KACA5K,EAAAuK,GACiB,QACjBD,EAAA5C,GACAkD,GAAA,KApEA,IAAA7D,EAAAE,aAAA,CAIA,GAIAyD,GAJAD,EAAA,EACAD,KACAI,GAAA,EACAC,EAAA9D,EAAA3P,SAoJA0T,EAAAhV,OAAAiV,gBAAAjV,OAAAiV,eAAAhE,EACA+D,QAAAhT,WAAAgT,EAAA/D,EAGU,wBAAAiE,SAAA7V,KAAA4R,EAAA3G,SArFV,WACAsK,EAAA,SAAAhD,GACAtH,EAAAC,SAAA,WAA0CsK,EAAAjD,SAI1C,WAGA,GAAAX,EAAAkE,cAAAlE,EAAAmE,cAAA,CACA,GAAAC,IAAA,EACAC,EAAArE,EAAAsE,SAMA,OALAtE,GAAAsE,UAAA,WACAF,GAAA,GAEApE,EAAAkE,YAAA,QACAlE,EAAAsE,UAAAD,EACAD,MAIA,WAKA,GAAAG,GAAA,gBAAAC,KAAAC,SAAA,IACAC,EAAA,SAAAC,GACAA,EAAAC,SAAA5E,GACA,gBAAA2E,GAAAnG,MACA,IAAAmG,EAAAnG,KAAAqG,QAAAN,IACAX,GAAAe,EAAAnG,KAAA9C,MAAA6I,EAAA3V,SAIAoR,GAAA8E,iBACA9E,EAAA8E,iBAAA,UAAAJ,GAAA,GAEA1E,EAAA+E,YAAA,YAAAL,GAGAf,EAAA,SAAAhD,GACAX,EAAAkE,YAAAK,EAAA5D,EAAA,SAmDKX,EAAAgF,eA/CL,WACA,GAAAC,GAAA,GAAAD,eACAC,GAAAC,MAAAZ,UAAA,SAAAK,GAEAf,EADAe,EAAAnG,OAIAmF,EAAA,SAAAhD,GACAsE,EAAAE,MAAAjB,YAAAvD,OA2CKmD,GAAA,sBAAAA,GAAAvT,cAAA,UAvCL,WACA,GAAA6U,GAAAtB,EAAAuB,eACA1B,GAAA,SAAAhD,GAGA,GAAApR,GAAAuU,EAAAvT,cAAA,SACAhB,GAAA+V,mBAAA,WACA1B,EAAAjD,GACApR,EAAA+V,mBAAA,KACAF,EAAAG,YAAAhW,GACAA,EAAA,MAEA6V,EAAApU,YAAAzB,OAIA,WACAoU,EAAA,SAAAhD,GACA5P,WAAA6S,EAAA,EAAAjD,OA8BAoD,EAAA7D,eACA6D,EAAAR,mBACC,mBAAA5V,UAAA,KAAAqS,EAAA9L,KAAA8L,EAAArS,QjB2yD4BS,KAAKJ,EAASH,EAAoB,IAAKA,EAAoB,MAIlF,SAAUI,EAAQD,GkBp9DxBuL,MAAAvK,UAAAwW,MACAzW,OAAAwC,eAAAgI,MAAAvK,UAAA,QACAoD,MAAA,SAAAqT,GAEA,SAAAvR,KACA,SAAAmM,WAAA,gCAEA,IAAA/O,GAAAvC,OAAAmF,MAEA8E,EAAA1H,EAAA1C,SAAA,CAEA,sBAAA6W,GACA,SAAApF,WAAA,+BAOA,KAJA,GAAAD,GAAAnM,UAAA,GAEAyR,EAAA,EAEAA,EAAA1M,GAAA,CAKA,GAAA2M,GAAArU,EAAAoU,EACA,IAAAD,EAAArX,KAAAgS,EAAAuF,EAAAD,EAAApU,GACA,MAAAqU,EAGAD,UlBu/DM,SAAUzX,EAAQD,GmBphExBuL,MAAAvK,UAAA4W,WACA7W,OAAAwC,eAAAgI,MAAAvK,UAAA,aACAoD,MAAA,SAAAqT,GAEA,SAAAvR,KACA,SAAAmM,WAAA,gCAEA,IAAA/O,GAAAvC,OAAAmF,MAEA8E,EAAA1H,EAAA1C,SAAA,CAEA,sBAAA6W,GACA,SAAApF,WAAA,+BAOA,KAJA,GAAAD,GAAAnM,UAAA,GAEAyR,EAAA,EAEAA,EAAA1M,GAAA,CAKA,GAAA2M,GAAArU,EAAAoU,EACA,IAAAD,EAAArX,KAAAgS,EAAAuF,EAAAD,EAAApU,GACA,MAAAoU,EAGAA,KAGA,anBojEM,SAAUzX,EAAQD,EAASH,GAEjC,YoBtlEA,SAAAgY,GAAAzT,GACA,MAAA8C,OAAApF,GAAAsC,GAeA,QAAA8C,GAAA4Q,EAAAlB,GACA,KAAAA,YAAA7V,SACA,MAAA6V,EAEA,QAAAA,EAAA9C,aACA,IAAAiE,MAGA,GAAAC,GAAApB,CACA,WAAAmB,MAAAC,EAAAC,UACA,KAAAlX,YACAe,KAAAgW,IACAA,KAEA,MACA,KAAAvM,OAEAuM,IACA,MACA,SAEA,MAAAlB,GAEA,OAAAsB,KAAAtB,GACAA,EAAA3V,eAAAiX,KAGAJ,EAAAI,GAAAhR,EAAA4Q,EAAAI,GAAAtB,EAAAsB,IAEA,OAAAJ,GAIA,QAAAK,GAAA7Q,EAAA4Q,EAAA9T,GACAkD,EAAA4Q,GAAA9T,EAtDArD,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,IAO9CpE,EAAA6X,WA4CA7X,EAAAkH,aAKAlH,EAAAmY,iBpBknEM,SAAUlY,EAAQD,EAASH,GAEjC,YqB5qEAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAgU,GAAA,WACA,QAAAA,KACA,GAAA5P,GAAAtC,IACAA,MAAAhE,QAAA,GAAAF,SAAA,SAAAC,EAAAE,GACAqG,EAAAvG,UACAuG,EAAArG,WAkCA,MAxBAiW,GAAApX,UAAAqX,aAAA,SAAAnQ,GACA,GAAAM,GAAAtC,IACA,iBAAAhC,EAAAE,GACAF,EACAsE,EAAArG,OAAA+B,GAGAsE,EAAAvG,QAAAmC,GAEA,kBAAA8D,KAGAM,EAAAtG,QAAAoW,MAAA,cAGA,IAAApQ,EAAAtH,OACAsH,EAAAhE,GAGAgE,EAAAhE,EAAAE,MAKAgU,IAEApY,GAAAoY,YrBosEM,SAAUnY,EAAQD,EAASH,GAEjC,YsBhvEAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAyI,GAAAhN,EAAA,GAKAG,GAAAuY,MAAA,WACA,yBAAAC,YACA,gBAAAA,WAAA,UACAA,UAAA,UAGA,IAWAxY,EAAAyY,gBAAA,WACA,gBAAA/Y,MACAA,EAAA,SAAAA,EAAA,UAAAA,EAAA,WACA,oDAAAgZ,KAAA1Y,EAAAuY,UAOAvY,EAAA2Y,cAAA,WACA,sBAAAH,YAAA,gBAAAA,UAAA,SAOAxY,EAAA4Y,UAAA,WACA,WAAA/L,EAAA/C,UAAAC,cAAA,IAAA8C,EAAA/C,UAAAE,atBywEM,SAAU/J,EAAQD,EAASH,GAEjC,YuB/zEA,SAAAgZ,GAAAC,GACA,GAAApY,GAAAqY,CAEA,OADAA,GAAAD,EACApY,EARAK,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA4U,GAAA,gBACAD,EAAAlX,MACAkX,iBAOA/Y,GAAA6Y,cACA,IAAAI,GAAA,WACA,QAAAA,GAAA9R,EAAA6F,GAKA,GAJA9G,KAAAiB,OACAjB,KAAA8G,UAGA+L,EAEAA,EAAA7S,KAAAe,EAAAjG,UAAAqG,YAEA,CACA,GAAA6R,GAAArX,MAAAwE,MAAAH,KAAAD,UACAC,MAAA9C,KAAA4V,EAEAjY,OAAAwC,eAAA2C,KAAA,SACAxC,IAAA,WACA,MAAAwV,GAAAC,UAKA,MAAAF,KAEAjZ,GAAAiZ,gBAEAA,EAAAjY,UAAAD,OAAAsG,OAAAxF,MAAAb,WACAiY,EAAAjY,UAAA8S,YAAAmF,EACAA,EAAAjY,UAAAoC,KAAA4V,CACA,IAAA/R,GAAA,WACA,QAAAA,GAAA6B,EAAArC,EAAA0C,GACAjD,KAAA4C,UACA5C,KAAAO,cACAP,KAAAiD,SAEAjD,KAAAkT,QAAA,gBAgCA,MA7BAnS,GAAAjG,UAAAqG,OAAA,SAAAF,EAAAqJ,OACA1O,KAAA0O,IACAA,KAEA,IAEAxD,GAFAqM,EAAAnT,KAAAiD,OAAAhC,GACAmS,EAAApT,KAAA4C,QAAA,IAAA3B,CAGA6F,OADAlL,KAAAuX,EACA,QAGAA,EAAAE,QAAArT,KAAAkT,QAAA,SAAAI,EAAAjS,GACA,GAAAnD,GAAAoM,EAAAjJ,EACA,YAAAzF,KAAAsC,OAAA,IAAAmD,EAAA,OAIAyF,EAAA9G,KAAAO,YAAA,KAAAuG,EAAA,KAAAsM,EAAA,IACA,IAAAtV,GAAA,GAAAiV,GAAAK,EAAAtM,EAGA,QAAAkL,KAAA1H,GACAA,EAAAvP,eAAAiX,IAAA,MAAAA,EAAAxK,OAAA,KAGA1J,EAAAkU,GAAA1H,EAAA0H,GAEA,OAAAlU,IAEAiD,IAEAjH,GAAAiH,gBvB60EM,SAAUhH,EAAQD,EAASH,GAEjC,YwB/4EAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAqV,GAAA5Z,EAAA,IACA6Z,EAAA7Z,EAAA,GAWAG,GAAA2Z,OAAA,SAAAC,GACA,GAAAC,MAAmBC,KAAatJ,KAAWuJ,EAAA,EAC3C,KACA,GAAAC,GAAAJ,EAAAK,MAAA,IACAJ,GAAAH,EAAAtJ,SAAAqJ,EAAAtJ,aAAA6J,EAAA,SACAF,EAAAJ,EAAAtJ,SAAAqJ,EAAAtJ,aAAA6J,EAAA,SACAD,EAAAC,EAAA,GACAxJ,EAAAsJ,EAAA,YACAA,GAAA,EAEA,MAAAzY,IACA,OACAwY,SACAC,SACAtJ,OACAuJ,cAcA/Z,EAAAka,iBAAA,SAAAN,GACA,GAAAO,GAAAC,EAAAN,EAAA9Z,EAAA2Z,OAAAC,GAAAE,OAAAO,EAAA7D,KAAA8D,OAAA,GAAAvC,OAAAE,UAAA,IAgBA,OAfA,gBAAA6B,KACAA,EAAA7Y,eAAA,OACAkZ,EAAAL,EAAA,IAEAA,EAAA7Y,eAAA,SACAkZ,EAAAL,EAAA,KAGAM,EADAN,EAAA7Y,eAAA,OACA6Y,EAAA,IAIAK,EAAA,OAGAE,GAAAF,GAAAC,GAAAC,GAAAF,GAAAE,GAAAD,GAYApa,EAAAua,aAAA,SAAAX,GACA,GAAAE,GAAA9Z,EAAA2Z,OAAAC,GAAAE,MACA,uBAAAA,MAAA7Y,eAAA,OACA6Y,EAAA,IAEA,MAaA9Z,EAAAwa,cAAA,SAAAZ,GACA,GAAAa,GAAAza,EAAA2Z,OAAAC,GAAAE,EAAAW,EAAAX,MACA,SAAAW,EAAAV,aACAD,GACA,gBAAAA,IACAA,EAAA7Y,eAAA,QAYAjB,EAAA0a,QAAA,SAAAd,GACA,GAAAE,GAAA9Z,EAAA2Z,OAAAC,GAAAE,MACA,uBAAAA,KAAA,IAAAA,EAAA,QxBw6EM,SAAU7Z,EAAQD,EAASH,GAEjC,YyBthFAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuW,GAAA9a,EAAA,GASAG,GAAA4a,YAAA,SAAAC,GACA,GAAAC,KAWA,OAVAH,GAAAhV,QAAAkV,EAAA,SAAAtT,EAAAnD,GACAmH,MAAAgD,QAAAnK,GACAA,EAAAuB,QAAA,SAAAoV,GACAD,EAAAha,KAAAka,mBAAAzT,GAAA,IAAAyT,mBAAAD,MAIAD,EAAAha,KAAAka,mBAAAzT,GAAA,IAAAyT,mBAAA5W,MAGA0W,EAAAla,OAAA,IAAAka,EAAAzL,KAAA,SAQArP,EAAAib,kBAAA,SAAAL,GACA,GAAAtT,KAQA,OAPAsT,GAAArB,QAAA,UAAAU,MAAA,KACAtU,QAAA,SAAAiU,GACA,GAAAA,EAAA,CACA,GAAArS,GAAAqS,EAAAK,MAAA,IACA3S,GAAAC,EAAA,IAAAA,EAAA,MAGAD,IzB+iFM,SAAUrH,EAAQD,EAASH,GAEjC,Y0BxlFA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAmX,GAAA1b,EAAA,IAyBA2b,EAAA,SAAAC,GAEA,QAAAD,KACA,GAAAhT,GAAAiT,EAAArb,KAAA8F,WAOAsC,GAAAkT,KAMAlT,EAAAmT,KAOAnT,EAAAoT,KAMApT,EAAAqT,KAIArT,EAAAsT,EAAA,EAIAtT,EAAAuT,EAAA,EACAvT,EAAAwT,UAAA,GACAxT,EAAAqT,EAAA,MACA,QAAA3b,GAAA,EAAuBA,EAAAsI,EAAAwT,YAAqB9b,EAC5CsI,EAAAqT,EAAA3b,GAAA,CAGA,OADAsI,GAAAyT,QACAzT,EAkLA,MA7NA0S,GAAAM,EAAAC,GA6CAD,EAAAxa,UAAAib,MAAA,WACA/V,KAAAwV,EAAA,cACAxV,KAAAwV,EAAA,cACAxV,KAAAwV,EAAA,cACAxV,KAAAwV,EAAA,aACAxV,KAAAwV,EAAA,cACAxV,KAAA4V,EAAA,EACA5V,KAAA6V,EAAA,GAQAP,EAAAxa,UAAAkb,EAAA,SAAAC,EAAAC,GACAA,IACAA,EAAA,EAEA,IAAAC,GAAAnW,KAAA0V,CAEA,oBAAAO,GACA,OAAAjc,GAAA,EAA2BA,EAAA,GAAQA,IASnCmc,EAAAnc,GACAic,EAAA9O,WAAA+O,IAAA,GACAD,EAAA9O,WAAA+O,EAAA,OACAD,EAAA9O,WAAA+O,EAAA,MACAD,EAAA9O,WAAA+O,EAAA,GACAA,GAAA,MAIA,QAAAlc,GAAA,EAA2BA,EAAA,GAAQA,IACnCmc,EAAAnc,GACAic,EAAAC,IAAA,GACAD,EAAAC,EAAA,OACAD,EAAAC,EAAA,MACAD,EAAAC,EAAA,GACAA,GAAA,CAIA,QAAAlc,GAAA,GAAwBA,EAAA,GAAQA,IAAA,CAChC,GAAAoc,GAAAD,EAAAnc,EAAA,GAAAmc,EAAAnc,EAAA,GAAAmc,EAAAnc,EAAA,IAAAmc,EAAAnc,EAAA,GACAmc,GAAAnc,GAAA,YAAAoc,GAAA,EAAAA,IAAA,IASA,OAFAnL,GAAAuG,EALA6E,EAAArW,KAAAwV,EAAA,GACA7N,EAAA3H,KAAAwV,EAAA,GACAxY,EAAAgD,KAAAwV,EAAA,GACAvY,EAAA+C,KAAAwV,EAAA,GACAra,EAAA6E,KAAAwV,EAAA,GAGAxb,EAAA,EAAuBA,EAAA,GAAQA,IAAA,CAC/BA,EAAA,GACAA,EAAA,IACAiR,EAAAhO,EAAA0K,GAAA3K,EAAAC,GACAuU,EAAA,aAGAvG,EAAAtD,EAAA3K,EAAAC,EACAuU,EAAA,YAIAxX,EAAA,IACAiR,EAAAtD,EAAA3K,EAAAC,GAAA0K,EAAA3K,GACAwU,EAAA,aAGAvG,EAAAtD,EAAA3K,EAAAC,EACAuU,EAAA,WAGA,IAAA4E,IAAAC,GAAA,EAAAA,IAAA,IAAApL,EAAA9P,EAAAqW,EAAA2E,EAAAnc,GAAA,UACAmB,GAAA8B,EACAA,EAAAD,EACAA,EAAA,YAAA2K,GAAA,GAAAA,IAAA,GACAA,EAAA0O,EACAA,EAAAD,EAEApW,KAAAwV,EAAA,GAAAxV,KAAAwV,EAAA,GAAAa,EAAA,WACArW,KAAAwV,EAAA,GAAAxV,KAAAwV,EAAA,GAAA7N,EAAA,WACA3H,KAAAwV,EAAA,GAAAxV,KAAAwV,EAAA,GAAAxY,EAAA,WACAgD,KAAAwV,EAAA,GAAAxV,KAAAwV,EAAA,GAAAvY,EAAA,WACA+C,KAAAwV,EAAA,GAAAxV,KAAAwV,EAAA,GAAAra,EAAA,YAEAma,EAAAxa,UAAAwb,OAAA,SAAAjP,EAAAkP,GAEA,SAAAlP,EAAA,KAGAzL,KAAA2a,IACAA,EAAAlP,EAAA3M,OAQA,KANA,GAAA8b,GAAAD,EAAAvW,KAAA8V,UACArY,EAAA,EAEAwY,EAAAjW,KAAAyV,EACAgB,EAAAzW,KAAA4V,EAEAnY,EAAA8Y,GAAA,CAKA,MAAAE,EACA,KAAAhZ,GAAA+Y,GACAxW,KAAAgW,EAAA3O,EAAA5J,GACAA,GAAAuC,KAAA8V,SAGA,oBAAAzO,IACA,KAAA5J,EAAA8Y,GAIA,GAHAN,EAAAQ,GAAApP,EAAAF,WAAA1J,KACAgZ,IACAhZ,EACAgZ,GAAAzW,KAAA8V,UAAA,CACA9V,KAAAgW,EAAAC,GACAQ,EAAA,CAEA,YAKA,MAAAhZ,EAAA8Y,GAIA,GAHAN,EAAAQ,GAAApP,EAAA5J,KACAgZ,IACAhZ,EACAgZ,GAAAzW,KAAA8V,UAAA,CACA9V,KAAAgW,EAAAC,GACAQ,EAAA,CAEA,QAKAzW,KAAA4V,EAAAa,EACAzW,KAAA6V,GAAAU,IAGAjB,EAAAxa,UAAA4b,OAAA,WACA,GAAAA,MACAC,EAAA,EAAA3W,KAAA6V,CAEA7V,MAAA4V,EAAA,GACA5V,KAAAsW,OAAAtW,KAAA2V,EAAA,GAAA3V,KAAA4V,GAGA5V,KAAAsW,OAAAtW,KAAA2V,EAAA3V,KAAA8V,WAAA9V,KAAA4V,EAAA,IAGA,QAAA5b,GAAAgG,KAAA8V,UAAA,EAAwC9b,GAAA,GAASA,IACjDgG,KAAAyV,EAAAzb,GAAA,IAAA2c,EACAA,GAAA,GAEA3W,MAAAgW,EAAAhW,KAAAyV,EAEA,QADAhY,GAAA,EACAzD,EAAA,EAAuBA,EAAA,EAAOA,IAC9B,OAAA4c,GAAA,GAA4BA,GAAA,EAAQA,GAAA,EACpCF,EAAAjZ,GAAAuC,KAAAwV,EAAAxb,IAAA4c,EAAA,MACAnZ,CAGA,OAAAiZ,IAEApB,GACCD,EAAAwB,KACD/c,GAAAwb,Q1BgnFM,SAAUvb,EAAQD,EAASH,GAEjC,Y2Bt3FAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GA0B9C,IAAA2Y,GAAA,WACA,QAAAA,KAKA7W,KAAA8V,WAAA,EAEA,MAAAe,KAEA/c,GAAA+c,Q3B84FM,SAAU9c,EAAQD,EAASH,GAEjC,Y4B17FA,SAAAmH,GAAAgW,EAAAC,GACA,GAAAC,GAAA,GAAAC,GAAAH,EAAAC,EACA,OAAAC,GAAAE,UAAAhX,KAAA8W,GA0KA,QAAAxa,GAAAgO,EAAA2M,GACA,kBAEA,OADAtX,MACAC,EAAA,EAAwBA,EAAAC,UAAArF,OAAuBoF,IAC/CD,EAAAC,GAAAC,UAAAD,EAEAhE,SAAAC,SAAA,GACAwG,KAAA,WACAiI,EAAArK,UAAA,GAAAN,KAEAuS,MAAA,SAAApU,GACAmZ,GACAA,EAAAnZ,MASA,QAAAoZ,GAAAhW,EAAAiW,GACA,mBAAAjW,IAAA,OAAAA,EACA,QAEA,QAAAtB,GAAA,EAAAwX,EAAAD,EAAyCvX,EAAAwX,EAAA5c,OAAuBoF,IAAA,CAChE,GAAAyX,GAAAD,EAAAxX,EACA,IAAAyX,IAAAnW,IAAA,kBAAAA,GAAAmW,GACA,SAGA,SAEA,QAAArS,MAtNArK,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,IAa9CpE,EAAAgH,iBAKA,IAAAmW,GAAA,WAMA,QAAAA,GAAAH,EAAAC,GACA,GAAAzU,GAAAtC,IACAA,MAAAwX,aACAxX,KAAAyX,gBACAzX,KAAA0X,cAAA,EAEA1X,KAAAsP,KAAAxT,QAAAC,UACAiE,KAAA2X,WAAA,EACA3X,KAAA+W,gBAIA/W,KAAAsP,KACA/M,KAAA,WACAuU,EAAAxU,KAEA8P,MAAA,SAAAjX,GACAmH,EAAAtE,MAAA7C,KAyIA,MAtIA8b,GAAAnc,UAAA8c,KAAA,SAAA1Z,GACA8B,KAAA6X,gBAAA,SAAAC,GACAA,EAAAF,KAAA1Z,MAGA+Y,EAAAnc,UAAAkD,MAAA,SAAAA,GACAgC,KAAA6X,gBAAA,SAAAC,GACAA,EAAA9Z,WAEAgC,KAAAyO,MAAAzQ,IAEAiZ,EAAAnc,UAAAid,SAAA,WACA/X,KAAA6X,gBAAA,SAAAC,GACAA,EAAAC,aAEA/X,KAAAyO,SAQAwI,EAAAnc,UAAAoc,UAAA,SAAAc,EAAAha,EAAA+Z,GACA,GACAD,GADAxV,EAAAtC,IAEA,QAAApE,KAAAoc,OACApc,KAAAoC,OACApC,KAAAmc,EACA,KAAApc,OAAA,oBAIAmc,GADAV,EAAAY,GAAA,4BACAA,GAIAJ,KAAAI,EACAha,QACA+Z,gBAGAnc,KAAAkc,EAAAF,OACAE,EAAAF,KAAA1S,OAEAtJ,KAAAkc,EAAA9Z,QACA8Z,EAAA9Z,MAAAkH,OAEAtJ,KAAAkc,EAAAC,WACAD,EAAAC,SAAA7S,EAEA,IAAA+S,GAAAjY,KAAAkY,eAAAhY,KAAAF,UAAAwX,UAAA9c,OAqBA,OAjBAsF,MAAA2X,WACA3X,KAAAsP,KAAA/M,KAAA,WACA,IACAD,EAAA6V,WACAL,EAAA9Z,MAAAsE,EAAA6V,YAGAL,EAAAC,WAGA,MAAA5c,OAMA6E,KAAAwX,UAAA5c,KAAAkd,GACAG,GAIAhB,EAAAnc,UAAAod,eAAA,SAAAle,OACA4B,KAAAoE,KAAAwX,eAAA5b,KAAAoE,KAAAwX,UAAAxd,WAGAgG,MAAAwX,UAAAxd,GACAgG,KAAA0X,eAAA,EACA,IAAA1X,KAAA0X,mBAAA9b,KAAAoE,KAAA+W,eACA/W,KAAA+W,cAAA/W,QAGAiX,EAAAnc,UAAA+c,gBAAA,SAAArN,GACA,IAAAxK,KAAA2X,UAMA,OAAA3d,GAAA,EAAuBA,EAAAgG,KAAAwX,UAAA9c,OAA2BV,IAClDgG,KAAAoY,QAAApe,EAAAwQ,IAMAyM,EAAAnc,UAAAsd,QAAA,SAAApe,EAAAwQ,GACA,GAAAlI,GAAAtC,IAEAA,MAAAsP,KAAA/M,KAAA,WACA,OAAA3G,KAAA0G,EAAAkV,eAAA5b,KAAA0G,EAAAkV,UAAAxd,GACA,IACAwQ,EAAAlI,EAAAkV,UAAAxd,IAEA,MAAAmB,GAIA,mBAAA4C,kBAAAC,OACAD,QAAAC,MAAA7C,OAMA8b,EAAAnc,UAAA2T,MAAA,SAAA3Q,GACA,GAAAwE,GAAAtC,IACAA,MAAA2X,YAGA3X,KAAA2X,WAAA,MACA/b,KAAAkC,IACAkC,KAAAmY,WAAAra,GAGAkC,KAAAsP,KAAA/M,KAAA,WACAD,EAAAkV,cAAA5b,GACA0G,EAAAyU,kBAAAnb,OAGAqb,IAoBAnd,GAAA0C,S5B89FM,SAAUzC,EAAQD,EAASH,GAEjC,Y6BlnGA,SAAA0e,GAAAC,EAAAC,EAAAC,GACA,GAAAC,GAAA,EACA,QAAAF,GACA,OACAE,EAAAD,EAAA,eACA,MACA,QACAC,EAAAD,EAAA,iBACA,MACA,QACAC,EAAAD,EAAA,eACA,MACA,QACAC,EAAAD,EAAA,iBACA,MACA,SACA,KAAA7c,OAAA,mEAEA,GAAAqC,GAAAsa,EAAA,WAEA,OADAta,IAAAya,EAAA,aAUA,QAAAC,GAAAJ,EAAAC,EAAAzZ,EAAA0Z,GACA,KAAAA,GAAA1Z,IAEA,gBAAAA,GAEA,KAAAnD,OAAA0c,EAAAC,EAAAC,EAAAC,GACA,uCAIA,QAAAG,GAAAL,EAAAC,EAAAvW,EAAAwW,GACA,KAAAA,GAAAxW,IAEA,kBAAAA,GACA,KAAArG,OAAA0c,EAAAC,EAAAC,EAAAC,GACA,6BAGA,QAAAI,GAAAN,EAAAC,EAAAM,EAAAL,GACA,KAAAA,GAAAK,KAEA,gBAAAA,IAAA,OAAAA,GACA,KAAAld,OAAA0c,EAAAC,EAAAC,EAAAC,GACA,mCAzFA3d,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,IAU9CpE,EAAAgf,iBAAA,SAAAR,EAAAS,EAAAC,EAAAC,GACA,GAAAC,EAOA,IANAD,EAAAF,EACAG,EAAA,YAAAH,EAEAE,EAAAD,IACAE,EAAA,IAAAF,EAAA,uBAAAA,GAEAE,EAAA,CACA,GAAAlb,GAAAsa,EACA,4BACAW,GACA,IAAAA,EAAA,4BACA,YACAC,EACA,GACA,MAAAvd,OAAAqC,KAiCAlE,EAAAue,cAgBAve,EAAA4e,oBAQA5e,EAAA6e,mBAQA7e,EAAA8e,yB7B+qGM,SAAU7e,EAAQD,EAASH,GAEjC,Y8B5wGAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAib,GAAAxf,EAAA,GAcAG,GAAAkN,kBAAA,SAAAC,GAEA,OADAmS,MAAAxc,EAAA,EACA5C,EAAA,EAAmBA,EAAAiN,EAAAvM,OAAgBV,IAAA,CACnC,GAAAgD,GAAAiK,EAAAE,WAAAnN,EAEA,IAAAgD,GAAA,OAAAA,GAAA,OACA,GAAAqc,GAAArc,EAAA,KACAhD,KACAmf,EAAAvS,OAAA5M,EAAAiN,EAAAvM,OAAA,2CAEAsC,EAAA,OAAAqc,GAAA,KADApS,EAAAE,WAAAnN,GAAA,OAGAgD,EAAA,IACAoc,EAAAxc,KAAAI,EAEAA,EAAA,MACAoc,EAAAxc,KAAAI,GAAA,MACAoc,EAAAxc,KAAA,GAAAI,EAAA,KAEAA,EAAA,OACAoc,EAAAxc,KAAAI,GAAA,OACAoc,EAAAxc,KAAAI,GAAA,SACAoc,EAAAxc,KAAA,GAAAI,EAAA,MAGAoc,EAAAxc,KAAAI,GAAA,OACAoc,EAAAxc,KAAAI,GAAA,UACAoc,EAAAxc,KAAAI,GAAA,SACAoc,EAAAxc,KAAA,GAAAI,EAAA,KAGA,MAAAoc,IAOAtf,EAAAwf,aAAA,SAAArS,GAEA,OADArK,GAAA,EACA5C,EAAA,EAAmBA,EAAAiN,EAAAvM,OAAgBV,IAAA,CACnC,GAAAgD,GAAAiK,EAAAE,WAAAnN,EACAgD,GAAA,IACAJ,IAEAI,EAAA,KACAJ,GAAA,EAEAI,GAAA,OAAAA,GAAA,OAEAJ,GAAA,EACA5C,KAGA4C,GAAA,EAGA,MAAAA,U9BqyGa8O;;;;;;;A+Bx3Gb,IACQ6N,sBAAsB,IAExBC,GACA,SAAUzf,EAAQD,EAASH,GCOjCA,EAAA,KDgBM8f,GACA,SAAU1f,EAAQD,EAASH,IEjCjC,SAAAmS,IAAA,WAEyB,QAAA/O,GAAAsZ,GAAc,sBAAAA,GAAyB,QAAAqD,GAAArD,GAAe,uBAAAA,GAA0B,QAAAsD,MACzG,QAAAC,GAAAvD,GAAe,GAAA1O,SAAA0O,EAAe,cAAA1O,EAAA,KAAA0O,EAAye,YAApd,IAAAA,YAAAhR,OAAA,aAAoC,IAAAgR,YAAAxb,QAAA,MAAA8M,EAAgC,IAAA3K,GAAAnC,OAAAC,UAAAiV,SAAA7V,KAAAmc,EAAwC,uBAAArZ,EAAA,cAAuC,sBAAAA,GAAA,gBAAAqZ,GAAA3b,YAAA,KAAA2b,EAAAwD,YAAA,KAAAxD,EAAAyD,uBAAAzD,EAAAyD,qBAAA,uBAA6K,yBAAA9c,OAAA,KAAAqZ,EAAAnc,UAAA,KAAAmc,EAAAyD,uBAAAzD,EAAAyD,qBAAA,6BACnX,gBAAAnS,OAAA,KAAA0O,EAAAnc,KAAA,cAAiE,OAAAyN,GAAS,QAAAoS,GAAA1D,GAAe,cAAAA,EAAgB,QAAA2D,GAAA3D,GAAe,eAAAuD,EAAAvD,GAAqB,QAAA4D,GAAA5D,GAAe,GAAA1O,GAAAiS,EAAAvD,EAAY,gBAAA1O,GAAA,UAAAA,GAAA,gBAAA0O,GAAA3b,OAAyD,QAAAkC,GAAAyZ,GAAc,kBAAAuD,EAAAvD,GAAwB,QAAA6D,GAAA7D,GAAc,GAAA1O,SAAA0O,EAAe,iBAAA1O,GAAA,MAAA0O,GAAA,YAAA1O,EAA6F,QAAAwS,GAAA9D,EAAA1O,EAAA3K,GAAmB,MAAAqZ,GAAAnc,KAAAiG,MAAAkW,EAAAnW,KAAAH,WACpZ,QAAAqa,GAAA/D,EAAA1O,EAAA3K,GAAmB,IAAAqZ,EAAA,KAAA1a,QAAoB,MAAAoE,UAAArF,OAAA,CAAuB,GAAAuC,GAAAoI,MAAAvK,UAAA0M,MAAAtN,KAAA6F,UAAA,EAA8C,mBAAkB,GAAA/C,GAAAqI,MAAAvK,UAAA0M,MAAAtN,KAAA6F,UAA+E,OAAnCsF,OAAAvK,UAAAuf,QAAAla,MAAAnD,EAAAC,GAAmCoZ,EAAAlW,MAAAwH,EAAA3K,IAAqB,kBAAkB,MAAAqZ,GAAAlW,MAAAwH,EAAA5H,YAA6B,QAAAua,GAAAjE,EAAA1O,EAAA3K,GAAmH,MAAjGsd,GAAA5W,SAAA5I,UAAAoF,OAAA,IAAAwD,YAAA5I,UAAAoF,MAAAyQ,QAAA,eAAAwJ,EAAAC,EAAiGE,EAAAna,MAAA,KAAAJ,WACpY,QAAAwa,GAAAlE,EAAA1O,GAAiB,GAAA3K,GAAAqI,MAAAvK,UAAA0M,MAAAtN,KAAA6F,UAAA,EAA8C,mBAAkB,GAAA4H,GAAA3K,EAAAwK,OAA0C,OAA1BG,GAAA/M,KAAAuF,MAAAwH,EAAA5H,WAA0BsW,EAAAlW,MAAAH,KAAA2H,IAAqE,QAAAyO,GAAAC,EAAA1O,GAAgB,QAAA3K,MAAcA,EAAAlC,UAAA6M,EAAA7M,UAAwBub,EAAAmE,GAAA7S,EAAA7M,UAAiBub,EAAAvb,UAAA,GAAAkC,GAAkBqZ,EAAAvb,UAAA8S,YAAAyI,EAA0BA,EAAAoE,GAAA,SAAApE,EAAArZ,EAAAiO,GAAqB,OAAAhO,GAAAoI,MAAAtF,UAAArF,OAAA,GAAAS,EAAA,EAAwCA,EAAA4E,UAAArF,OAAmBS,IAAA8B,EAAA9B,EAAA,GAAA4E,UAAA5E,EAAwB,OAAAwM,GAAA7M,UAAAkC,GAAAmD,MAAAkW,EAAApZ,IAAmC,QAAAyd,GAAArE,GAAc,GAAA1a,MAAAkX,kBAAAlX,MAAAkX,kBAAA7S,KAAA0a,OAA2D,CAAK,GAAA/S,GAAAhM,QAAAsX,KAAoBtL,KAAA3H,KAAAiT,MAAAtL,GAAkB0O,IAAArW,KAAA8G,QAAAuP,EAAA/O,IAAsE,QAAAqT,GAAAtE,EAAA1O,GAAiB,OAAA3K,GAAAqZ,EAAAtC,MAAA,MAAA9W,EAAA,GAAA9B,EAAAkK,MAAAvK,UAAA0M,MAAAtN,KAAA6F,UAAA,GAAuE5E,EAAAT,QAAA,EAAAsC,EAAAtC,QAAqBuC,GAAAD,EAAAhC,QAAAG,EAAAH,OAAwB,OAAAiC,GAAAD,EAAAmM,KAAA,MAC7vB,QAAAyR,GAAAvE,GAAe,MAAAwE,IAAArI,KAAA6D,KAAwB,GAAAA,EAAA1F,QAAA,OAAA0F,IAAAhD,QAAAyH,GAAA,WAA8C,GAAAzE,EAAA1F,QAAA,OAAA0F,IAAAhD,QAAA0H,GAAA,UAA6C,GAAA1E,EAAA1F,QAAA,OAAA0F,IAAAhD,QAAA2H,GAAA,UAA6C,GAAA3E,EAAA1F,QAAA,OAAA0F,IAAAhD,QAAA4H,GAAA,YAA+C,GAAA5E,EAAA1F,QAAA,OAAA0F,IAAAhD,QAAA6H,GAAA,WAA8C,GAAA7E,EAAA1F,QAAA,QAAA0F,IAAAhD,QAAA8H,GAAA,SAAgD9E,GAA7SA,EAA8X,QAAA+E,GAAA/E,EAAA1O,GAAgB,UAAA0O,EAAA1F,QAAAhJ,GAAuB,QAAA0T,GAAAhF,EAAA1O,GAAiB,MAAA0O,GAAA1O,GAAA,EAAA0O,EAAA1O,EAAA,IAAuB,QAAA2T,GAAAjF,EAAA1O,GAAiBA,EAAA0S,QAAAhE,GAAaqE,EAAAxgB,KAAA8F,KAAA2a,EAAAxa,MAAA,KAAAwH,IAA8BA,EAAA3M,QAAqD,QAAAugB,GAAAlF,EAAA1O,GAAiB,SAAA2T,GAAA,WAAAjF,EAAA,KAAAA,EAAA,IAAAhR,MAAAvK,UAAA0M,MAAAtN,KAAA6F,UAAA,IAC9lB,QAAAyb,GAAAnF,EAAA1O,GAAiB,GAAA3K,GAAAqZ,EAAA3b,OAAAuC,EAAAF,EAAAsZ,KAAAtC,MAAA,IAAAsC,CAAoC,OAAArZ,EAAQ,GAAAA,IAAKA,MAAAC,IAAA0K,EAAAzN,SAAA,GAAA+C,EAAAD,KAAAqZ,GAClE,QAAAoF,GAAApF,GAAeA,EAAA,CAAY,OAAT1O,GAAA+T,GAAS1e,EAAAqZ,EAAA3b,OAAAuC,EAAAF,EAAAsZ,KAAAtC,MAAA,IAAAsC,EAAAlb,EAAA,EAA4CA,EAAA6B,EAAI7B,IAAA,GAAAA,IAAA8B,IAAA0K,EAAAzN,SAAA,GAAA+C,EAAA9B,KAAAkb,GAAA,CAAwC1O,EAAAxM,CAAI,MAAAkb,GAAQ1O,GAAA,EAAK,SAAAA,EAAA,KAAA5K,EAAAsZ,KAAA1M,OAAAhC,GAAA0O,EAAA1O,GAAsC,QAAAgU,GAAAtF,EAAA1O,GAAiB,UAAAiU,GAAAvF,EAAA1O,GAAkB,QAAAkU,GAAAxF,EAAA1O,GAAiBA,EAAAiU,GAAAvF,EAAA1O,EAAU,IAAA3K,EAAmD,QAA7CA,EAAA,GAAA2K,IAAAtC,MAAAvK,UAAA+e,OAAA3f,KAAAmc,EAAA1O,EAAA,GAA6C3K,EAAS,QAAA8e,GAAAzF,EAAA1O,GAAiB,GAAA3K,GAAA,CAAQwe,GAAAnF,EAAA,SAAApZ,EAAA9B,GAAmBwM,EAAAzN,SAAA,GAAA+C,EAAA9B,EAAAkb,IAAA,GAAAhR,MAAAvK,UAAA+e,OAAA3f,KAAAmc,EAAAlb,EAAA,GAAAT,QAAAsC,MAA0E,QAAA+e,GAAA1F,GAAe,MAAAhR,OAAAvK,UAAA6J,OAAAxE,SAAAJ,WACza,QAAAic,GAAA3F,GAAe,GAAA1O,GAAA0O,EAAA3b,MAAe,MAAAiN,EAAA,CAAQ,OAAA3K,GAAAqI,MAAAsC,GAAA1K,EAAA,EAAuBA,EAAA0K,EAAI1K,IAAAD,EAAAC,GAAAoZ,EAAApZ,EAAc,OAAAD,GAAS,SAA8F,QAAAif,GAAA5F,GAAc,MAAA+E,GAAAc,GAAA7F,GAAgB,QAAA8F,GAAA9F,EAAA1O,GAAiB,OAAA3K,KAAAqZ,GAAA1O,EAAAzN,SAAA,GAAAmc,EAAArZ,KAAAqZ,GAAuC,QAAA+F,GAAA/F,GAAe,GAAApZ,GAAA0K,KAAA3K,EAAA,CAAe,KAAAC,IAAAoZ,GAAA1O,EAAA3K,KAAAqZ,EAAApZ,EAAuB,OAAA0K,GAAS,QAAA0U,GAAAhG,GAAe,GAAApZ,GAAA0K,KAAA3K,EAAA,CAAe,KAAAC,IAAAoZ,GAAA1O,EAAA3K,KAAAC,CAAoB,OAAA0K,GAAS,QAAA2U,GAAAjG,GAAe,OAAA1O,KAAA0O,GAAA,QAAwB,UAAS,QAAAkG,GAAAlG,EAAA1O,GAAiB,OAAA3K,KAAAqZ,GAAA,KAAArZ,IAAA2K,KAAA0O,EAAArZ,KAAA2K,EAAA3K,GAAA,QAAkD,KAAAA,IAAA2K,GAAA,KAAA3K,IAAAqZ,IAAA,QAAiC,UAAS,QAAAmG,GAAAnG,GAAe,GAAQrZ,GAAR2K,IAAW,KAAA3K,IAAAqZ,GAAA1O,EAAA3K,GAAAqZ,EAAArZ,EAAqB,OAAA2K,GACjlB,QAAA8U,GAAApG,EAAA1O,GAAiB,OAAA3K,GAAAC,EAAA9B,EAAA,EAAgBA,EAAA4E,UAAArF,OAAmBS,IAAA,CAAK8B,EAAA8C,UAAA5E,EAAe,KAAA6B,IAAAC,GAAAoZ,EAAArZ,GAAAC,EAAAD,EAAqB,QAAAiO,GAAA,EAAYA,EAAAyR,GAAAhiB,OAAYuQ,IAAAjO,EAAA0f,GAAAzR,GAAApQ,OAAAC,UAAAC,eAAAb,KAAA+C,EAAAD,KAAAqZ,EAAArZ,GAAAC,EAAAD,KAAqE,QAAA2f,GAAAtG,GAA0B,MAAXsG,GAAA,KAAAtG,GAAWA,EAAoB,QAAAuG,GAAAvG,EAAA1O,GAAiB,GAAA3K,GAAA6f,EAAS,OAAAhiB,QAAAC,UAAAC,eAAAb,KAAA8C,EAAAqZ,GAAArZ,EAAAqZ,GAAArZ,EAAAqZ,GAAA1O,EAAA0O,GAAkR,QAAAyG,KAAc,GAAAzG,GAAA7E,GAAArV,QAAiB,OAAAka,KAAA0G,iBAAA,GAEnjB,QAAAC,GAAA3G,GAAe,MAAAuG,GAAAvG,EAAA,WAAuB,OAAA1O,GAAA,EAAA3K,EAAAigB,GAAAC,GAAA5V,IAAAyM,MAAA,KAAA9W,EAAAggB,GAAA5G,EAAA/O,IAAAyM,MAAA,KAAA5Y,EAAAmV,KAAA6M,IAAAngB,EAAAtC,OAAAuC,EAAAvC,QAAAuQ,EAAA,EAAqG,GAAAtD,GAAAsD,EAAA9P,EAAU8P,IAAA,CAAK,GAAAxH,GAAAzG,EAAAiO,IAAA,GAAAhR,EAAAgD,EAAAgO,IAAA,EAA0B,IAAuF,GAApFxH,EAAA,iBAAA2Z,KAAA3Z,KAAA,aAA0CxJ,EAAA,iBAAAmjB,KAAAnjB,KAAA,aAA0C,GAAAwJ,EAAA,GAAA/I,QAAA,GAAAT,EAAA,GAAAS,OAAA,KAAwCiN,GAAA0T,EAAA,GAAA5X,EAAA,GAAA/I,OAAA,EAAA2iB,SAAA5Z,EAAA,UAAAxJ,EAAA,GAAAS,OAAA,EAAA2iB,SAAApjB,EAAA,SAAAohB,EAAA,GAAA5X,EAAA,GAAA/I,OAAA,GAAAT,EAAA,GAAAS,SAAA2gB,EAAA5X,EAAA,GAAAxJ,EAAA,IAA8HwJ,IAAA,GAAOxJ,IAAA,SAAO,GAAA0N,GAAY,UAAAA,IACrY,QAAA2V,GAAAjH,GAAeA,EAAAvb,UAAAyH,KAAA8T,EAAAvb,UAAAyH,KAAkC8T,EAAAvb,UAAAyiB,gBAAA,EAA8B,QAAAC,GAAAnH,GAAe,IAAAA,EAAA,QAAe,KAAI,QAAAA,EAAAkH,eAAyB,MAAA5V,GAAS,UAAW,QAAA8V,GAAApH,EAAA1O,EAAA3K,GAAmBgD,KAAAiL,EAAAjO,EAASgD,KAAAhD,EAAAqZ,EAASrW,KAAAyD,EAAAkE,EAAS3H,KAAA2H,EAAA,EAAS3H,KAAAqW,EAAA,KAA+H,QAAAqH,GAAArH,EAAA1O,GAAiB0O,EAAA5S,EAAAkE,GAAO0O,EAAA1O,EAAA0O,EAAApL,IAAAoL,EAAA1O,MAAAiQ,KAAAvB,QAAA1O,GAAuG,QAAAgW,KAAc,GAAAtH,GAAAuH,GAAAjW,EAAA,IAAsE,OAAtD0O,OAAA1O,EAAA0O,YAAAuB,KAAAvB,QAAA1O,EAAA,MAAAA,EAAAiQ,KAAA,MAAsDjQ,EAAS,QAAAkW,KAAc7d,KAAA4X,KAAA5X,KAAA2H,EAAA3H,KAAAqW,EAAA,KAA0J,QAAAyH,GAAAzH,GAAe7E,GAAA3U,WAAA,WAAwB,KAAAwZ,IAAS,GAC90B,QAAA0H,KAAc,GAAA1H,GAAA7E,GAAAV,cAC6H,QADtG,KAAAuF,GAAA,mBAAA7c,gBAAAwW,aAAAxW,OAAAoX,mBAAAqL,EAAA,YAAA5F,EAAA,WAA8H,GAAAA,GAAAla,SAAAE,cAAA,SAAuCga,GAAA2H,MAAAC,QAAA,OAAuB5H,EAAA1Z,IAAA,GAASR,SAAAgV,gBAAArU,YAAAuZ,EAAwC,IAAA1O,GAAA0O,EAAA6H,aAAsB7H,GAAA1O,EAAAxL,SAAaka,EAAA8H,OAAS9H,EAAA+H,MAAA,IAAY/H,EAAA5H,OAAU,IAAAzR,GAAA,gBAAAsT,KAAAC,SAAAtT,EAAA,SAAA0K,EAAA0W,SAAAC,SAAA,IAAA3W,EAAA0W,SAAAC,SAAA,KAAA3W,EAAA0W,SAAAE,IAAgHlI,GAAAiE,EAAA,SAAAjE,GAAgB,KAAApZ,GAAAoZ,EAAAmI,QAAAvhB,GAAAoZ,EAAA/L,MACpdtN,GAAAgD,KAAAgR,MAAAZ,aAAyBpQ,MAAO2H,EAAAiJ,iBAAA,UAAAyF,GAAA,GAAmCrW,KAAAgR,SAAchR,KAAAiR,OAAYjB,YAAA,WAAuBrI,EAAAqI,YAAAhT,EAAAC,WAAuB,KAAAoZ,IAAA4F,EAAA,aAAAA,EAAA,SAAsD,GAAAtU,GAAA,GAAA0O,GAAArZ,KAAgBC,EAAAD,CAA0F,OAArF2K,GAAAqJ,MAAAZ,UAAA,WAA6B,YAAApT,EAAA4a,KAAA,CAAoB5a,IAAA4a,IAAS,IAAAvB,GAAArZ,EAAA0gB,EAAW1gB,GAAA0gB,GAAA,KAAUrH,MAAM,SAAAA,GAAmBpZ,EAAA2a,MAAQ8F,GAAArH,GAAMpZ,IAAA2a,KAASjQ,EAAAsJ,MAAAjB,YAAA,IAAwB,yBAAA7T,WAAA,sBAAAA,UAAAE,cAAA,mBAAAga,GAAyG,GAAA1O,GAAAxL,SAAAE,cAAA,SACtdsL,GAAAyJ,mBAAA,WAAgCzJ,EAAAyJ,mBAAA,KAA0BzJ,EAAA8W,WAAApN,YAAA1J,GAA4BA,EAAA,KAAO0O,IAAIA,EAAA,MAAQla,SAAAgV,gBAAArU,YAAA6K,IAAwC,SAAA0O,GAAa7E,GAAA3U,WAAAwZ,EAAA,IAAoB,QAAAqI,GAAArI,EAAA1O,GAAiBgX,IAAAC,IAASC,KAAAF,KAAAE,IAAA,EAAiB,IAAA7hB,GAAA4gB,GAAA3gB,EAAA6hB,GAAAthB,KAAoBP,GAAA8hB,IAAA1I,EAAA1O,GAAW3K,EAAA2K,EAAA3K,EAAA2K,EAAAiQ,KAAA3a,EAAAD,EAAAqZ,EAAApZ,EAAqBD,EAAA2K,EAAA1K,EAAa,QAAA2hB,KAAc,QAAApN,GAAA1V,QAAAwL,IAAAqJ,QAAA,kBAAmD,GAAA0F,GAAA7E,GAAA1V,QAAAC,YAAA,GAAgC4iB,IAAA,WAActI,EAAA9T,KAAAyc,QAAYL,IAAA,WAAmB,GAAAtI,GAAA2I,GAASpiB,EAAA4U,GAAAxF,eAAAwF,GAAAyN,QAAAzN,GAAAyN,OAAAnkB,YAAAmhB,EAAA,SAAAzK,GAAAyN,OAAAnkB,UAAAkR,cAAAwF,GAAAxF,cAAAkT,QAAAnB,KAAAmB,GAAA7I,IAAA7E,GAAAxF,aAAAqK,IACrb,QAAA2I,KAAc,OAAA3I,GAAUA,EAAAsH,KAAO,CAAE,IAAItH,IAAAnc,KAAAmc,EAAA1O,GAAc,MAAAA,GAASmW,EAAAnW,GAAM+V,EAAAoB,GAAAzI,GAASwI,IAAA,EAAO,QAAAM,GAAA9I,EAAA1O,GAAmF,GAAnE3H,KAAAqW,EAAA+I,GAAUpf,KAAAhG,MAAA,GAAcgG,KAAAiL,EAAAjL,KAAA2H,EAAA3H,KAAAhD,EAAA,KAA0BgD,KAAAyD,EAAAzD,KAAAqf,GAAA,EAAiBhJ,GAAAsD,EAAA,IAAa,GAAA3c,GAAAgD,IAAWqW,GAAAnc,KAAAyN,EAAA,SAAA0O,GAAqBiJ,GAAAtiB,EAAAuiB,GAAAlJ,IAAW,SAAAA,GAAa,KAAAA,YAAAmJ,KAAA,IAA0B,GAAAnJ,YAAA1a,OAAA,KAAA0a,EAA8B,MAAA1a,OAAA,qBAAkC,MAAAR,IAAUmkB,GAAAtiB,EAAAyiB,GAAApJ,KAAa,MAAApZ,GAASqiB,GAAAtf,KAAAyf,GAAAxiB,IAAkC,QAAAyiB,KAAc1f,KAAA4X,KAAA5X,KAAAiL,EAAAjL,KAAA2H,EAAA3H,KAAAyD,EAAAzD,KAAAqW,EAAA,KAA2CrW,KAAAhD,GAAA,EAC3X,QAAA2iB,IAAAtJ,EAAA1O,EAAA3K,GAAmB,GAAAC,GAAA2iB,GAAApiB,KAAiC,OAAlBP,GAAAwG,EAAA4S,EAAMpZ,EAAA0K,IAAM1K,EAAAgO,EAAAjO,EAAMC,EAAS,QAAA4iB,IAAAxJ,GAAc,GAAAA,YAAA8I,GAAA,MAAA9I,EAA2B,IAAA1O,GAAA,GAAAwX,GAAAxF,EAA2B,OAAX2F,IAAA3X,EAAA4X,GAAAlJ,GAAW1O,EAAS,QAAAmY,IAAAzJ,GAAc,UAAA8I,GAAA,SAAAxX,EAAA3K,GAA2BA,EAAAqZ,KAAO,QAAA0J,IAAA1J,EAAA1O,EAAA3K,GAAmBgjB,GAAA3J,EAAA1O,EAAA3K,EAAA,OAAA0hB,EAAAnE,EAAA5S,EAAA0O,IAA4B,QAAA4J,IAAA5J,GAAe,UAAA8I,GAAA,SAAAxX,EAAA3K,GAA2B,GAAAC,GAAAoZ,EAAA3b,OAAAS,IAAoB,IAAA8B,EAAA,OAAuEQ,GAAvEwN,EAAA,SAAAoL,EAAArZ,GAA6BC,IAAI9B,EAAAkb,GAAArZ,EAAO,GAAAC,GAAA0K,EAAAxM,IAAWsI,EAAA,SAAA4S,GAAerZ,EAAAqZ,IAAKpc,EAAA,EAAOA,EAAAoc,EAAA3b,OAAWT,IAAAwD,EAAA4Y,EAAApc,GAAA8lB,GAAAtiB,EAAA8c,EAAAtP,EAAAhR,GAAAwJ,OAA2BkE,GAAAxM,KAC/d,QAAA+kB,IAAA7J,GAAe,UAAA8I,GAAA,SAAAxX,GAAyB,GAAA3K,GAAAqZ,EAAA3b,OAAAuC,IAAoB,IAAAD,EAAA,OAAsFyG,GAAtFtI,EAAA,SAAAkb,EAAAlb,EAAA8P,GAA+BjO,IAAIC,EAAAoZ,GAAAlb,GAAQglB,IAAA,EAAAjiB,MAAA+M,IAAgBkV,IAAA,EAAA9S,OAAApC,GAAgB,GAAAjO,GAAA2K,EAAA1K,IAAWgO,EAAA,EAAOA,EAAAoL,EAAA3b,OAAWuQ,IAAAxH,EAAA4S,EAAApL,GAAA8U,GAAAtc,EAAA8W,EAAApf,EAAA8P,GAAA,GAAAsP,EAAApf,EAAA8P,GAAA,QAAuCtD,GAAA1K,KAA8F,QAAAkjB,IAAA9J,EAAA1O,GAAiD,MAAhCA,GAAAgY,GAAAhY,QAAA,IAAiBA,EAAA3K,GAAA,EAAOojB,GAAA/J,EAAA1O,GAAQ0O,EAC1V,QAAAgK,IAAAhK,EAAA1O,GAAiB,GAAA0O,KAAA+I,GAAA,GAAA/I,EAAArZ,EAAA,CAAmB,GAAAA,GAAAqZ,EAAArZ,CAAU,IAAAA,EAAA2K,EAAA,CAAQ,OAAA1K,GAAA,EAAA9B,EAAA,KAAA8P,EAAA,KAAAxH,EAAAzG,EAAA2K,EAAgClE,MAAAzG,IAAAC,IAAAwG,EAAA4S,OAAAlb,EAAAsI,KAAAtI,GAAA,EAAA8B,KAAwCwG,IAAAmU,KAAAzc,IAAA8P,EAAAxH,EAAkBtI,KAAA6B,EAAAqZ,GAAA+I,IAAA,GAAAniB,EAAAojB,GAAArjB,EAAA2K,IAAAsD,GAAAhO,EAAAgO,EAAAhO,EAAA2a,MAAA5a,EAAAiO,IAAAjO,EAAAiO,EAAAhO,KAAA2a,KAAA3a,EAAA2a,WAAA0I,GAAAtjB,GAAAujB,GAAAvjB,EAAA7B,EAAAskB,GAAA9X,KAAgG0O,EAAArZ,EAAA,SAASsiB,IAAAjJ,EAAAoJ,GAAA9X,GAAgB,QAAAyY,IAAA/J,EAAA1O,GAAiB0O,EAAA1O,GAAA0O,KAAAkJ,IAAAlJ,KAAAoJ,IAAAe,GAAAnK,GAA6BA,EAAApL,EAAAoL,EAAApL,EAAA2M,KAAAjQ,EAAA0O,EAAA1O,IAAqB0O,EAAApL,EAAAtD,EAC5U,QAAA8Y,IAAApK,EAAA1O,EAAA3K,EAAAC,GAAqB,GAAA9B,GAAAwkB,GAAA,eAAkO,OAAzMxkB,GAAAkb,EAAA,GAAA8I,GAAA,SAAA9I,EAAA5S,GAAwBtI,EAAAsI,EAAAkE,EAAA,SAAA3K,GAAkB,IAAI,GAAA7B,GAAAwM,EAAAzN,KAAA+C,EAAAD,EAAkBqZ,GAAAlb,GAAK,MAAAulB,GAASjd,EAAAid,KAAMrK,EAAGlb,EAAAwM,EAAA3K,EAAA,SAAA2K,GAAkB,IAAI,GAAAxM,GAAA6B,EAAA9C,KAAA+C,EAAA0K,OAAkB,KAAAxM,GAAAwM,YAAA6X,IAAA/b,EAAAkE,GAAA0O,EAAAlb,GAAsC,MAAAulB,GAASjd,EAAAid,KAAMjd,IAAKtI,EAAAkb,EAAArZ,EAAAqZ,EAAQ+J,GAAA/J,EAAAlb,GAAQA,EAAAkb,EACvP,QAAAiJ,IAAAjJ,EAAA1O,EAAA3K,GAAmBqZ,KAAA+I,KAAA/I,IAAArZ,IAAA2K,EAAA8X,GAAAziB,EAAA,GAAAmP,WAAA,qCAAAkK,IAAA,EAAA2J,GAAAhjB,EAAAqZ,EAAAsK,GAAAtK,EAAAuK,GAAAvK,OAAArc,EAAAgD,EAAAqZ,IAAA1O,EAAA0O,EAAArZ,EAAA,KAAAwjB,GAAAnK,GAAA1O,GAAA8X,IAAAziB,YAAAwiB,KAAAqB,GAAAxK,EAAArZ,KAAmK,QAAAgjB,IAAA3J,EAAA1O,EAAA3K,EAAAC,GAAqB,GAAAoZ,YAAA8I,GAAA,MAAAiB,IAAA/J,EAAAsJ,GAAAhY,GAAAgS,EAAA3c,GAAA,KAAAC,KAAA,CAAsD,IAAAugB,EAAAnH,GAAA,MAAAA,GAAA9T,KAAAoF,EAAA3K,EAAAC,IAAA,CAAiC,IAAAid,EAAA7D,GAAA,IAAY,GAAAlb,GAAAkb,EAAA9T,IAAa,IAAA3F,EAAAzB,GAAA,MAAA2lB,IAAAzK,EAAAlb,EAAAwM,EAAA3K,EAAAC,IAAA,EAAgC,MAAAgO,GAAS,MAAAjO,GAAA9C,KAAA+C,EAAAgO,IAAA,EAAsB,SAC1X,QAAA6V,IAAAzK,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB,QAAA8P,GAAAoL,GAAcpc,OAAA,EAAAgD,EAAA/C,KAAAiB,EAAAkb,IAAsB,QAAA5S,GAAA4S,GAAcpc,OAAA,EAAA+C,EAAA9C,KAAAiB,EAAAkb,IAAsB,GAAApc,IAAA,CAAS,KAAI0N,EAAAzN,KAAAmc,EAAA5S,EAAAwH,GAAc,MAAAxN,GAASwN,EAAAxN,IAAM,QAAA+iB,IAAAnK,GAAeA,EAAAgJ,IAAAhJ,EAAAgJ,GAAA,EAAAX,EAAArI,EAAA2J,GAAA3J,IAAyB,QAAAiK,IAAAjK,GAAe,GAAA1O,GAAA,IAA+D,OAApD0O,GAAA1O,MAAA0O,EAAA1O,EAAA0O,EAAA1O,IAAAiQ,KAAAjQ,EAAAiQ,KAAA,MAAoCvB,EAAA1O,IAAA0O,EAAApL,EAAA,MAAgBtD,EAC/P,QAAA4Y,IAAAlK,EAAA1O,EAAA3K,EAAAC,GAAqB,GAAAD,GAAAyiB,IAAA9X,QAAA3K,EAAA,KAAyBqZ,KAAA5S,EAAO4S,IAAArZ,EAAAqZ,EAAA5S,GAAA,CAAa,IAAAkE,EAAA0O,EAAA1O,EAAA0O,EAAArZ,EAAA,KAAA+jB,GAAApZ,EAAA3K,EAAAC,OAA4B,KAAS0K,EAAA3K,EAAA2K,EAAAlE,EAAAvJ,KAAAyN,EAAAsD,GAAA8V,GAAApZ,EAAA3K,EAAAC,GAA4B,MAAA9B,GAAS6lB,GAAA9mB,KAAA,KAAAiB,GAAgBuiB,EAAAkC,GAAAjY,GAAS,QAAAoZ,IAAA1K,EAAA1O,EAAA3K,GAAmB2K,GAAA4X,GAAAlJ,EAAA5S,EAAAvJ,KAAAmc,EAAApL,EAAAjO,GAAAqZ,EAAA1O,GAAA0O,EAAA1O,EAAAzN,KAAAmc,EAAApL,EAAAjO,GAA2C,QAAA6jB,IAAAxK,EAAA1O,GAAiB0O,EAAA5S,GAAA,EAAOib,EAAA,WAAcrI,EAAA5S,GAAAud,GAAA9mB,KAAA,KAAAyN,KAAiC,QAAA6X,IAAAnJ,GAAeqE,EAAAxgB,KAAA8F,KAAAqW,GAA2E,QAAA4K,MAAcjhB,KAAAqW,EAAA,GAAUrW,KAAA2H,EAAAuZ,GAAmI,QAAAC,IAAA9K,GAAe,MAAAA,aAAA4K,KAAA5K,EAAAzI,cAAAqT,IAAA5K,EAAA1O,IAAAuZ,GAAA7K,KAA4DkF,EAAA,uCAAAlF,EAAA,KAAiD,oBAAmC,QAAA+K,IAAA/K,GAAe,GAAA1O,GAAA,GAAAsZ,GAAmB,OAANtZ,GAAA0O,IAAM1O,EAAgB,QAAA0Z,MAAcrhB,KAAAqW,EAAA,GAAUrW,KAAA2H,EAAA2Z,GAAgJ,QAAAC,IAAAlL,GAAe,MAAAA,aAAAgL,KAAAhL,EAAAzI,cAAAyT,IAAAhL,EAAA1O,IAAA2Z,GAAAjL,KAA4DkF,EAAA,oDAAAlF,EAAA,aAAAuD,EAAAvD,IAA6E,iCAAsC,QAAAmL,IAAAnL,EAAA1O,GAA0C,MAAzB0O,GAAAoL,GAAApL,EAAA1O,GAAUA,EAAA,GAAA0Z,IAAS1Z,EAAA0O,IAAM1O,EAChoC,QAAA8Z,IAAApL,EAAA1O,GAAiB,GAAA3K,GAAAmkB,GAAA9K,EAAY,KAAAqL,GAAAlP,KAAAxV,GAAA,KAAArB,OAAA,sCAAAqB,EAAoE,OAAAA,GAAAqW,QAAAsO,GAAA,SAAAtL,EAAAlb,GAAkC,IAAAN,OAAAC,UAAAC,eAAAb,KAAAyN,EAAAxM,GAAA,KAAAQ,OAAA,kBAAAR,EAAA,yBAAA6B,EAAA,gDAAAmN,KAAAE,UAAA1C,GAAmL,OAAP0O,GAAA1O,EAAAxM,GAAOkb,YAAA4K,IAAAE,GAAA9K,GAAAvB,mBAAAuB,EAAA/O,MAA2J,QAAAsa,MAAc5hB,KAAAqW,EAAA,GAAUrW,KAAA2H,EAAAka,GAAqI,QAAAplB,IAAA4Z,GAAe,MAAAA,aAAAuL,KAAAvL,EAAAzI,cAAAgU,IAAAvL,EAAA1O,IAAAka,GAAAxL,KAA4DkF,EAAA,yCAAAlF,EAAA,aAAAuD,EAAAvD,IAAkE,sBAC3vB,QAAAyL,IAAAzL,GAAe,MAAAA,aAAAuL,IAAAvL,GAA4BA,IAAA+D,GAAA/D,EAAA0L,KAAA1L,EAAA/O,GAAwB0a,GAAAxP,KAAA6D,OAAA,2BAA0C4L,GAAA5L,IAAuB,QAAA4L,IAAA5L,GAAe,GAAA1O,GAAA,GAAAia,GAAmB,OAANja,GAAA0O,IAAM1O,EAA2B,QAAAua,MAAcliB,KAAAqW,EAAA,GAAUrW,KAAA2H,EAAAwa,GAAsI,QAAAC,IAAA/L,GAAe,MAAAA,aAAA6L,KAAA7L,EAAAzI,cAAAsU,IAAA7L,EAAA1O,IAAAwa,GAAA9L,KAA4DkF,EAAA,0CAAAlF,EAAA,aAAAuD,EAAAvD,IAAmE,uBAAsC,QAAAgM,IAAAhM,GAAe,GAAA1O,GAAA,GAAAua,GAAmB,OAANva,GAAA0O,IAAM1O,EAAiD,QAAAgZ,IAAAtK,GAAe,GAAA1O,GAAAxL,QAAe,OAAAY,GAAAsZ,GAAA1O,EAAA2a,eAAAjM,KAAkC,QAAAuK,IAAAvK,EAAA1O,GAAiBwU,EAAAxU,EAAA,SAAAA,EAAA1K,GAAmB0K,KAAAyS,KAAAzS,IAAAoa,MAAoB,SAAA9kB,EAAAoZ,EAAA2H,MAAAuE,QAAA5a,EAAA,SAAA1K,EAAAoZ,EAAAmM,UAAA7a,EAAA,OAAA1K,EAAAoZ,EAAAoM,QAAA9a,EAAA+a,GAAA3nB,eAAAkC,GAAAoZ,EAAA3Z,aAAAgmB,GAAAzlB,GAAA0K,GAAA,GAAA1K,EAAA0lB,YAAA,eAAA1lB,EAAA0lB,YAAA,WAAAtM,EAAA3Z,aAAAO,EAAA0K,GAAA0O,EAAApZ,GAAA0K,IAE9tB,QAAAib,IAAAvM,EAAA1O,EAAA3K,GAAmB,GAAAC,GAAA8C,UAAA5E,EAAAgB,SAAA8O,EAAAhO,EAAA,GAAAqK,GAAA7D,EAAAxG,EAAA,EAAiD,KAAA4lB,IAAApf,MAAAvG,MAAAuG,EAAAnH,MAAA,CAAgF,GAAnD2O,GAAA,IAAAA,GAAUxH,EAAAvG,MAAA+N,EAAArQ,KAAA,UAAAggB,EAAAnX,EAAAvG,MAAA,KAAyCuG,EAAAnH,KAAA,CAAW2O,EAAArQ,KAAA,UAAAggB,EAAAnX,EAAAnH,MAAA,IAAiC,IAAArC,KAASwiB,GAAAxiB,EAAAwJ,SAAQxJ,GAAAqC,KAAcmH,EAAAxJ,EAAIgR,EAAArQ,KAAA,KAAYqQ,IAAA9B,KAAA,IAAsH,MAAzG8B,GAAA9P,EAAAkB,cAAA4O,GAAqBxH,IAAA1G,EAAA0G,GAAAwH,EAAAuX,UAAA/e,EAAAuW,EAAAvW,GAAAwH,EAAAuX,UAAA/e,EAAA0F,KAAA,KAAAyX,GAAA3V,EAAAxH,IAA8D,EAAAxG,EAAAvC,QAAAooB,GAAA3nB,EAAA8P,EAAAhO,GAAsBgO,EACrW,QAAA6X,IAAAzM,EAAA1O,EAAA3K,GAAmB,QAAAC,GAAAD,GAAcA,GAAA2K,EAAA7K,YAAAC,EAAAC,GAAAqZ,EAAA0M,eAAA/lB,MAA6C,OAAA7B,GAAA,EAAYA,EAAA6B,EAAAtC,OAAWS,IAAA,CAAK,GAAA8P,GAAAjO,EAAA7B,IAAW8e,EAAAhP,IAAAiP,EAAAjP,IAAA,EAAAA,EAAA+X,SAAA/lB,EAAAgO,GAAAgY,GAAAC,GAAAjY,GAAA+Q,EAAA/Q,KAAAhO,IAAoD,QAAAimB,IAAA7M,GAAe,GAAAA,GAAA,gBAAAA,GAAA3b,OAAA,CAAiC,GAAAwf,EAAA7D,GAAA,wBAAAA,GAAAxH,MAAA,gBAAAwH,GAAAxH,IAAiE,IAAAjS,EAAAyZ,GAAA,wBAAAA,GAAAxH,KAAwC,SAAU,QAAAsU,IAAA9M,GAAe,GAAA1O,KAAwB,OAAfyb,IAAA,GAAAC,IAAAhN,EAAA1O,GAAeA,EAAAwB,KAAA,IAAkB,QAAAka,OACrY,QAAAD,IAAA/M,EAAA1O,EAAA3K,GAAmB,SAAA2K,EAAA3K,EAAApC,KAAA,YAA0B,CAAK,mBAAA+M,GAAA,CAAuB,GAAAqS,EAAArS,GAAA,CAAU,GAAA1K,GAAA0K,CAAQA,GAAA1K,EAAAvC,OAAWsC,EAAApC,KAAA,IAAY,QAAAO,GAAA,GAAA8P,EAAA,EAAiBA,EAAAtD,EAAIsD,IAAAjO,EAAApC,KAAAO,GAAAioB,GAAA/M,EAAApZ,EAAAgO,GAAAjO,GAAA7B,EAAA,GAA6C,YAAZ6B,GAAApC,KAAA,KAAmB,KAAA+M,YAAAL,SAAAK,YAAA2b,SAAA3b,YAAA4b,UAAgF,CAAKvmB,EAAApC,KAAA,KAAYO,EAAA,EAAK,KAAA8B,IAAA0K,GAAA9M,OAAAC,UAAAC,eAAAb,KAAAyN,EAAA1K,IAAA,mBAAAgO,EAAAtD,EAAA1K,MAAAD,EAAApC,KAAAO,GAAAqoB,GAAAvmB,EAAAD,KAAApC,KAAA,KAAAwoB,GAAA/M,EAAApL,EAAAjO,GAAA7B,EAAA,IAAiJ,YAAZ6B,GAAApC,KAAA,KAA3O+M,IAAA8b,UAA+P,aAAA9b,IAAiB,aAAA6b,GAAA7b,EAAA3K,EAAsB,MAAM,cAAAA,EAAApC,KAAA8oB,SAAA/b,KACvegc,MAAAhc,KAAAL,GAAA,OAA4B,MAAM,eAAAtK,EAAApC,KAAA+M,EAAAL,GAAiC,MAAM,gBAAAtK,EAAApC,KAAA,OAA+B,MAAM,cAAAe,OAAA,uBAAAgM,MAC9G,QAAA6b,IAAAnN,EAAA1O,GAAiBA,EAAA/M,KAAA,IAAAyb,EAAAhD,QAAAuQ,GAAA,SAAAvN,GAAoC,GAAA1O,GAAAkc,GAAAxN,EAAgF,OAApE1O,OAAA,aAAA0O,EAAAlP,WAAA,IAAA4I,SAAA,IAAA+T,OAAA,GAAAD,GAAAxN,GAAA1O,GAAoEA,IAAS,KAAQ,QAAAoc,MAAc,GAAAC,KAAAC,GAAAjkB,KAAAkkB,MAAAlkB,KAAAkkB,MAAAnC,KAAA/hB,MAA4CA,KAAA2a,GAAA3a,KAAA2a,GAAgB3a,KAAAyb,GAAAzb,KAAAyb,GAAkD,QAAA0I,IAAA9N,GAAeA,EAAAsE,KAAAtE,EAAAsE,IAAA,EAAAtE,EAAA0E,KAAA,GAAAiJ,KAAA3N,IAAA6N,MAAA7N,EAAA6N,MAAAnC,UAAAkC,IAAA5N,KAAgc,QAAA+N,IAAA/N,EAAA1O,GAAgB3H,KAAA1D,KAAA+Z,EAAYrW,KAAA2H,EAAA3H,KAAA4R,OAAAjK,EAAqB3H,KAAA4e,IAAA,EAAgD,QAAAyF,IAAAhO,EAAA1O,GAA2Q,GAA1Pyc,GAAAlqB,KAAA8F,KAAAqW,IAAA/Z,KAAA,IAAyB0D,KAAAskB,cAAAtkB,KAAA2H,EAAA3H,KAAA4R,OAAA,KAA2C5R,KAAAukB,OAAAvkB,KAAAwkB,QAAAxkB,KAAAykB,QAAAzkB,KAAA0kB,QAAA1kB,KAAA2kB,QAAA,EAAkE3kB,KAAAqB,IAAA,GAAYrB,KAAA4kB,QAAA5kB,KAAA6kB,SAAA7kB,KAAA8kB,OAAA9kB,KAAA+kB,SAAA,EAAuD/kB,KAAAglB,UAAA,EAAiBhlB,KAAAilB,YAAA,GAAoBjlB,KAAAqW,EAAA,KAAYA,EAAA,CAAM,GAAArZ,GAAAgD,KAAA1D,KAAA+Z,EAAA/Z,KAAAW,EAAAoZ,EAAA6O,eAAA7O,EAAA6O,eAAA,OAA+G,IAA5CllB,KAAA4R,OAAAyE,EAAAzE,QAAAyE,EAAA8O,WAAmCnlB,KAAA2H,IAASA,EAAA0O,EAAAiO,eAAsB,GAAA1X,GAAA,CAAOyJ,EAAA,CAAG,IAAIsG,EAAAhV,EAAAyd,SAAe,IAAAjqB,IAAA,CAAS,MAAAkb,GAAQ,MAAApL,IAAU9P,GAAA,EAAKA,IAAAwM,EAAA,WAAa,aAAA3K,EAAA2K,EAClyC0O,EAAAgP,YAAA,YAAAroB,IAAA2K,EAAA0O,EAAAiP,UAA6CtlB,MAAAskB,cAAA3c,EAAqB,OAAA1K,GAAA+C,KAAA2kB,YAAA,KAAAtO,EAAAsO,QAAAtO,EAAAsO,QAAAtO,EAAAkP,MAAAvlB,KAAA0kB,YAAA,KAAArO,EAAAqO,QAAArO,EAAAqO,QAAArO,EAAAmP,MAAAxlB,KAAAykB,QAAApO,EAAAoO,SAAA,EAAAzkB,KAAAwkB,QAAAnO,EAAAmO,SAAA,IAAAxkB,KAAA2kB,YAAA,KAAA1nB,EAAA0nB,QAAA1nB,EAAA0nB,QAAA1nB,EAAAsoB,MAAAvlB,KAAA0kB,YAAA,KAAAznB,EAAAynB,QAAAznB,EAAAynB,QAAAznB,EAAAuoB,MAAAxlB,KAAAykB,QAAAxnB,EAAAwnB,SAAA,EAAAzkB,KAAAwkB,QAAAvnB,EAAAunB,SAAA,GAA6TxkB,KAAAukB,OAAAlO,EAAAkO,OAAqBvkB,KAAAqB,IAAAgV,EAAAhV,KAAA,GAAmBrB,KAAA+kB,QAAA1O,EAAA0O,QAAuB/kB,KAAA8kB,OAAAzO,EAAAyO,OAAqB9kB,KAAA6kB,SAAAxO,EAAAwO,SAAyB7kB,KAAA4kB,QAC5evO,EAAAuO,QAAU5kB,KAAAglB,UAAA3O,EAAA2O,WAAA,EAA8BhlB,KAAAilB,YAAAloB,EAAAsZ,EAAA4O,aAAA5O,EAAA4O,YAAAQ,GAAApP,EAAA4O,cAAA,GAAsEjlB,KAAAqW,IAASA,EAAAqP,kBAAA1lB,KAAAhD,KAAuX,QAAA2oB,IAAAtP,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB6E,KAAAmC,SAAAkU,EAAgBrW,KAAAqW,EAAA,KAAYrW,KAAArD,IAAAgL,EAAW3H,KAAA1D,KAAAU,EAAYgD,KAAA4lB,UAAA3oB,EAAiB+C,KAAAgc,GAAA7gB,EAAU6E,KAAAqB,MAAAwkB,GAAc7lB,KAAAua,GAAAva,KAAA2b,IAAA,EAAmB,QAAAmK,IAAAzP,GAAeA,EAAAkE,IAAA,EAAQlE,EAAAlU,SAAA,KAAgBkU,IAAA,KAASA,EAAA1Z,IAAA,KAAW0Z,EAAA2F,GAAA,KAAW,QAAA+J,IAAA1P,GAAerW,KAAArD,IAAA0Z,EAAWrW,KAAAqW,KAAUrW,KAAA2H,EAAA,EAAS,QAAAqe,IAAA3P,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAAyB,GAAAxH,GAAAkE,MAAmBA,EAAA0O,IAAA5S,MAASkE,EAAA0O,IAAA5S,MAAA4S,EAAA1O,IAAuB,IAAA1N,GAAAgsB,GAAAte,EAAA3K,EAAA7B,EAAA8P,EAA0F,QAAxE,EAAAhR,GAAAoc,EAAA1O,EAAA1N,GAAAgD,IAAAoZ,EAAAsF,IAAA,KAAAtF,EAAA,GAAAsP,IAAA3oB,EAAAqZ,EAAA1Z,IAAA8G,IAAAtI,EAAA8P,GAAAoL,EAAAsF,GAAA1e,EAAA0K,EAAA/M,KAAAyb,IAAwEA,EAAS,QAAA6P,IAAA7P,EAAA1O,GAAiB,GAAA3K,GAAA2K,EAAArL,IAAaU,KAAAqZ,MAAAwF,EAAAxF,IAAArZ,GAAA2K,KAAAme,GAAAne,GAAA,GAAA0O,IAAArZ,GAAAtC,eAAA2b,KAAArZ,GAAAqZ,EAAA1O,MAAwE,QAAAse,IAAA5P,EAAA1O,EAAA3K,EAAAC,GAAqB,OAAA9B,GAAA,EAAYA,EAAAkb,EAAA3b,SAAWS,EAAA,CAAK,GAAA8P,GAAAoL,EAAAlb,EAAW,KAAA8P,EAAAsP,IAAAtP,EAAA9I,UAAAwF,GAAAsD,EAAA2a,WAAA5oB,GAAAiO,EAAA+Q,IAAA/e,EAAA,MAAA9B,GAA0D,SAAgE,QAAAgrB,IAAA9P,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB,GAAA8B,KAAA6I,KAAAsgB,GAAA/P,EAAA1O,EAAA3K,EAAAC,EAAA9B,OAA2B,IAAA6e,EAAArS,GAAA,OAAAsD,GAAA,EAA0BA,EAAAtD,EAAAjN,OAAWuQ,IAAAkb,GAAA9P,EAAA1O,EAAAsD,GAAAjO,EAAAC,EAAA9B,OAAqB6B,GAAAqpB,GAAArpB,GAAAqZ,KAAAiQ,IAAAC,GAAAlQ,EAAA1O,EAAA3K,EAAAkd,EAAAjd,OAAA2oB,UAAA3oB,EAAA9B,GAAAqrB,GAAAnQ,EAAA1O,EAAA3K,GAAA,EAAAC,EAAA9B,GAC9xC,QAAAqrB,IAAAnQ,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAAyB,IAAAtD,EAAA,KAAAhM,OAAA,qBAAwC,IAAA8H,GAAAyW,EAAA/e,OAAAyqB,UAAAzqB,EAAAlB,EAAAwsB,GAAApQ,EAA4E,IAAzCpc,IAAAoc,EAAAqQ,IAAAzsB,EAAA,GAAA8rB,IAAA1P,IAAuBrZ,EAAAgpB,GAAA/rB,EAAA0N,EAAA3K,EAAAC,EAAAwG,EAAAwH,IAAkBjO,EAAAqZ,EAAA,CAA2C,GAAlCpZ,EAAAkR,KAAOnR,EAAAqZ,EAAApZ,EAAMA,EAAAN,IAAA0Z,EAAQpZ,EAAAkF,SAAAnF,EAAaqZ,EAAAzF,iBAAA+V,KAAAxrB,EAAAsI,OAAA,KAAAtI,OAAA,GAAAkb,EAAAzF,iBAAAjJ,KAAA1K,EAAA9B,OAAwF,KAAAkb,EAAAxF,YAAwD,KAAAlV,OAAA,oDAAxD0a,GAAAxF,YAAA+V,GAAAjf,MAAA1K,GAA8H4pB,MAC9Y,QAAA1Y,MAAc,GAAAkI,GAAAyQ,GAAAnf,EAAA8S,GAAA,SAAAzd,GAA0B,MAAAqZ,GAAAnc,KAAAyN,EAAAhL,IAAAgL,EAAAxF,SAAAnF,IAAkC,SAAAA,GAA0C,KAA7BA,EAAAqZ,EAAAnc,KAAAyN,EAAAhL,IAAAgL,EAAAxF,SAAAnF,IAA6B,MAAAA,GAAgB,OAAA2K,GAAS,QAAAye,IAAA/P,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB,GAAA6e,EAAArS,GAAA,OAAAsD,GAAA,EAAqBA,EAAAtD,EAAAjN,OAAWuQ,IAAAmb,GAAA/P,EAAA1O,EAAAsD,GAAAjO,EAAAC,EAAA9B,OAAqB6B,GAAAqpB,GAAArpB,GAAAqZ,KAAAiQ,IAAAS,GAAA1Q,EAAA1O,EAAA3K,EAAAkd,EAAAjd,OAAA2oB,UAAA3oB,EAAA9B,GAAAqrB,GAAAnQ,EAAA1O,EAAA3K,GAAA,EAAAC,EAAA9B,GACzN,QAAA6rB,IAAA3Q,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAsB,GAAA6e,EAAArS,GAAA,OAAAsD,GAAA,EAAqBA,EAAAtD,EAAAjN,OAAWuQ,IAAA+b,GAAA3Q,EAAA1O,EAAAsD,GAAAjO,EAAAC,EAAA9B,OAAoB8B,GAAAid,EAAAjd,OAAA2oB,UAAA3oB,EAAAD,EAAAqpB,GAAArpB,GAAAqZ,KAAAiQ,KAAAjQ,IAAAqE,GAAA/S,GAAAL,KAAA+O,OAAApL,EAAAoL,IAAA1O,IAAA,GAAA3K,EAAAipB,GAAAhb,EAAAjO,EAAAC,EAAA9B,MAAA2qB,GAAA7a,EAAAjO,IAAAqI,MAAAvK,UAAA+e,OAAA3f,KAAA+Q,EAAAjO,EAAA,MAAAiO,EAAAvQ,eAAA2b,KAAA1O,GAAA0O,EAAA1O,QAAA0O,MAAAoQ,GAAApQ,MAAA1O,EAAA0O,IAAA1O,MAAA0O,GAAA,EAAA1O,IAAA0O,EAAA4P,GAAAte,EAAA3K,EAAAC,EAAA9B,KAAA6B,GAAA,EAAAqZ,EAAA1O,EAAA0O,GAAA,OAAA4Q,GAAAjqB,IAC1E,QAAAiqB,IAAA5Q,GAAe,mBAAAA,UAAAkE,GAAA,CAAiC,GAAA5S,GAAA0O,EAAA1Z,GAAY,IAAAgL,KAAA2e,IAAAJ,GAAAve,EAAA+S,EAAArE,OAAsB,CAAK,GAAArZ,GAAAqZ,EAAA/Z,KAAAW,EAAAoZ,GAAmB1O,GAAAuf,oBAAAvf,EAAAuf,oBAAAlqB,EAAAC,EAAAoZ,EAAAuP,SAAAje,EAAAwf,aAAAxf,EAAAwf,YAAAP,GAAA5pB,GAAAC,GAAiG4pB,MAAK7pB,EAAAypB,GAAA9e,KAAAue,GAAAlpB,EAAAqZ,GAAA,GAAArZ,EAAA2K,IAAA3K,EAAAL,IAAA,KAAAgL,EAAA+e,IAAA,OAAAZ,GAAAzP,KAA4D,QAAAuQ,IAAAvQ,GAAe,MAAAA,KAAA+Q,OAAA/Q,GAAA+Q,GAAA/Q,GAAA,KAAAA,EAAkC,QAAAgR,IAAAhR,EAAA1O,EAAA3K,EAAAC,GAAqB,GAAA9B,IAAA,CAAS,KAAAkb,EAAAoQ,GAAApQ,MAAA1O,EAAA0O,IAAA1O,OAAA,IAAAA,IAAAhD,SAAA0R,EAAA,EAAuDA,EAAA1O,EAAAjN,OAAW2b,IAAA,CAAK,GAAApL,GAAAtD,EAAA0O,EAAWpL,MAAA2a,SAAA5oB,IAAAiO,EAAAsP,KAAAtP,EAAAqc,GAAArc,EAAAhO,GAAA9B,MAAA,IAAA8P,GAAgD,MAAA9P,GAC7d,QAAAmsB,IAAAjR,EAAA1O,GAAiB,GAAA3K,GAAAqZ,EAAAlU,SAAAlF,EAAAoZ,EAAA2F,IAAA3F,EAAA1Z,GAA2C,OAAZ0Z,GAAAsF,IAAAsL,GAAA5Q,GAAYrZ,EAAA9C,KAAA+C,EAAA0K,GAC5D,QAAAmf,IAAAzQ,EAAA1O,GAAiB,GAAA0O,EAAAkE,GAAA,QAAiB,KAAAE,GAAA,CAAQ,IAAA9S,EAAA0O,EAAA,CAAS1O,GAAA,iBAAqB,QAAA3K,GAAAwU,GAAAvU,EAAA,EAAgBA,EAAA0K,EAAAjN,OAAWuC,IAAA,UAAAD,IAAA2K,EAAA1K,KAAA,CAA0B0K,EAAA,IAAO,MAAA0O,GAAQ1O,EAAA3K,EAA8B,GAA1BC,EAAA0K,EAAIA,EAAA,GAAA0c,IAAApnB,EAAA+C,MAAiBhD,GAAA,IAAK,EAAAC,EAAAsqB,aAAA,IAAAtqB,EAAAuqB,aAAA,CAA0CnR,EAAA,CAAG,GAAAlb,IAAA,CAAS,OAAA8B,EAAAsqB,QAAA,IAAoBtqB,EAAAsqB,SAAA,CAAa,MAAAlR,GAAQ,MAAA5S,GAAStI,GAAA,GAAKA,OAAA,IAAA8B,EAAAuqB,eAAAvqB,EAAAuqB,aAAA,GAAkD,IAALvqB,KAAK9B,EAAAwM,IAAUxM,EAAEA,IAAAsjB,WAAAxhB,EAAArC,KAAAO,EAAkC,KAATkb,IAAA/Z,KAASnB,EAAA8B,EAAAvC,OAAA,EAAiB,GAAAS,EAAKA,IAAA,CAAKwM,IAAA1K,EAAA9B,EAAS,IAAA8P,GAAAoc,GAAApqB,EAAA9B,GAAAkb,GAAA,EAAA1O,EAAsB3K,MAAAiO,EAAO,IAAA9P,EAAA,EAAQA,EAAA8B,EAAAvC,OAAWS,IAAAwM,IAAA1K,EAAA9B,GAAA8P,EAAAoc,GAAApqB,EAAA9B,GAAAkb,GAAA,EAAA1O,GAAA3K,KAAAiO,EAAsC,MAAAjO,GAAS,MAAAsqB,IAAAjR,EAC1f,GAAAgO,IAAA1c,EAAA3H,OAAgB,QAAAymB,IAAApQ,GAAuB,MAARA,KAAAqQ,IAAQrQ,YAAA0P,IAAA1P,EAAA,KAAoF,QAAAgQ,IAAAhQ,GAAe,MAAAzZ,GAAAyZ,MAAiBA,EAAAoR,MAAApR,EAAAoR,IAAA,SAAA9f,GAA0B,MAAA0O,GAAAqR,YAAA/f,KAA0B0O,EAAAoR,KAAc,QAAAE,MAAa5D,GAAA7pB,KAAA8F,MAAcA,KAAA0a,EAAA,GAAAqL,IAAA/lB,MAAoBA,KAAAsf,GAAAtf,KAAaA,KAAAqc,GAAA,KACzR,QAAAuL,IAAAvR,EAAA1O,GAAgB,GAAA3K,GAAAC,EAAAoZ,EAAAgG,EAAa,IAAApf,EAAA,IAAAD,KAAcC,EAAEA,IAAAof,GAAArf,EAAApC,KAAAqC,EAAoC,IAAnBoZ,IAAAiJ,GAAOriB,EAAA0K,EAAArL,MAAAqL,EAAY5K,EAAA4K,KAAA,GAAAyc,IAAAzc,EAAA0O,OAAqB,IAAA1O,YAAAyc,IAAAzc,EAAAiK,OAAAjK,EAAAiK,QAAAyE,MAA4C,CAAK,GAAAlb,GAAAwM,CAAQA,GAAA,GAAAyc,IAAAnnB,EAAAoZ,GAAaoG,EAAA9U,EAAAxM,GAAa,GAALA,GAAA,EAAK6B,EAAA,OAAAiO,GAAAjO,EAAAtC,OAAA,EAA0B,GAAAuQ,EAAKA,IAAA,CAAK,GAAAxH,GAAAkE,IAAA3K,EAAAiO,EAAe9P,GAAA0sB,GAAApkB,EAAAxG,GAAA,EAAA0K,IAAAxM,EAA8D,GAA5CsI,EAAAkE,IAAA0O,EAAQlb,EAAA0sB,GAAApkB,EAAAxG,GAAA,EAAA0K,IAAAxM,EAAkBA,EAAA0sB,GAAApkB,EAAAxG,GAAA,EAAA0K,IAAAxM,EAAkB6B,EAAA,IAAAiO,EAAA,EAAaA,EAAAjO,EAAAtC,OAAWuQ,IAAAxH,EAAAkE,IAAA3K,EAAAiO,GAAA9P,EAAA0sB,GAAApkB,EAAAxG,GAAA,EAAA0K,IAAAxM,EACrJ,QAAAorB,IAAAlQ,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB6qB,GAAA3P,EAAAqE,EAAA/S,EAAAL,GAAAtK,GAAA,EAAAC,EAAA9B,GAA2B,QAAA4rB,IAAA1Q,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB6qB,GAAA3P,EAAAqE,EAAA/S,EAAAL,GAAAtK,GAAA,EAAAC,EAAA9B,GAA2B,QAAA0sB,IAAAxR,EAAA1O,EAAA3K,EAAAC,GAAwC,KAAnB0K,EAAA0O,EAAAqE,EAAArE,EAAA1O,EAAAL,KAAmB,QAAeK,KAAAhD,QAAa,QAAAxJ,IAAA,EAAA8P,EAAA,EAAiBA,EAAAtD,EAAAjN,SAAWuQ,EAAA,CAAK,GAAAxH,GAAAkE,EAAAsD,EAAW,IAAAxH,MAAA8W,IAAA9W,EAAAmiB,SAAA5oB,EAAA,CAA2B,GAAA/C,GAAAwJ,EAAAtB,SAAA1E,EAAAgG,EAAAuY,IAAAvY,EAAA9G,GAA+B8G,GAAAkY,IAAAuK,GAAA7P,EAAAqE,EAAAjX,GAAgBtI,GAAA,IAAAlB,EAAAC,KAAAuD,EAAAR,IAAA9B,GAAuB,MAAAA,IAAA,GAAA8B,EAAA2hB,GAAmB,QAAAkJ,IAAAzR,EAAA1O,EAAA3K,GAAmB,GAAAJ,EAAAyZ,GAAArZ,IAAAqZ,EAAAiE,EAAAjE,EAAArZ,QAAsB,KAAAqZ,GAAA,kBAAAA,GAAAqR,YAAiE,KAAA/rB,OAAA,4BAAjE0a,GAAAiE,EAAAjE,EAAAqR,YAAArR,GAA+G,mBAAA1O,GAAA,EAAA6J,GAAA3U,WAAAwZ,EAAA1O,GAAA,GAAoD,QAAAogB,IAAA1R,GAAe,GAAA1O,GAAA,IAAW,WAAAwX,GAAA,SAAAniB,EAAAC,IAAyD,IAA9B0K,EAAAmgB,GAAA,WAAgB9qB,MAAA,KAAUqZ,KAAIpZ,EAAAtB,MAAA,gCAA6CV,EAAA,SAAAob,GAAmC,KAAlB7E,IAAAhW,aAAAmM,GAAkB0O,IAAY,QAAA2R,IAAA3R,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB6E,KAAA+V,MAAAM,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAmJ,QAAA8sB,IAAA5R,GAAerW,KAAAiL,EAAAoL,EAASrW,KAAA2H,EAAA3H,KAAAhD,EAAAgD,KAAAqW,EAAA,KAA0B,QAAA6R,IAAA7R,EAAA1O,GAAiB3H,KAAA9C,KAAAmZ,EAAYrW,KAAA9B,MAAAyJ,EAA0I,QAAAwgB,IAAA9R,GAAe,MAAAA,GAAArZ,EAAAqZ,EAAArZ,EAAkBqZ,IAAA8R,GAAA9R,MAAsBkF,EAAA,iCAAoC,MAC7lC,QAAA6M,IAAA/R,GAAegS,QAAA,GAAAJ,IAAA,IAAAK,GAAA,IAAAD,MAAArrB,EAAAurB,GAAsC,IAAA5gB,EAAM,MAAAA,EAAA2gB,GAAAjS,IAAA,CAAe1O,EAAA,GAAAsgB,IAAA5R,EAAY,IAAArZ,GAAAqZ,EAAAsM,YAAA,KAAA1lB,EAAAoZ,EAAAyN,OAAA9mB,EAAA,EAAyCA,GAAAorB,GAAA/R,EAAAyN,OAAA,EAAA9mB,IAAoBA,EAAA2K,IAAA3K,EAAA2K,MAAc3K,EAAA2K,EAAA1K,GAAA0K,EAASA,EAAA0O,EAAArZ,EAAMsrB,GAAAjS,GAAA1O,EAAQ,MAAAA,GAAU,QAAA6gB,IAAAnS,EAAA1O,GAAiB3H,KAAA2H,KAAU3H,KAAAqW,KAAUrW,KAAAhD,EAAA,CAAS,IAAAA,GAAA+C,UAAArF,MAAuB,MAAAsC,EAAA,CAAQ,GAAAA,EAAA,OAAArB,OAAA,6BAAiD,QAAAsB,GAAA,EAAYA,EAAAD,EAAIC,GAAA,EAAA+C,KAAA+e,IAAAhf,UAAA9C,GAAA8C,UAAA9C,EAAA,QAA2C,IAAAoZ,EAAA,CAAWA,YAAAmS,KAAAxrB,EAAAqZ,EAAAoS,IAAAxrB,EAAAoZ,EAAAqS,MAAA1rB,EAAAqf,EAAAhG,GAAApZ,EAAAmf,EAAA/F,GAAoD,QAAAlb,GAAA,EAAYA,EAAA6B,EAAAtC,OAAWS,IAAA6E,KAAA+e,IAAA/hB,EAAA7B,GAAA8B,EAAA9B,KAC7oB,QAAAwtB,IAAAtS,GAAe,GAAAA,EAAArZ,GAAAqZ,IAAA3b,OAAA,CAAoB,OAAAiN,GAAA,EAAA3K,EAAA,EAAgB2K,EAAA0O,IAAA3b,QAAa,CAAE,GAAAuC,GAAAoZ,IAAA1O,EAAaihB,IAAAvS,EAAA1O,EAAA1K,KAAAoZ,IAAArZ,KAAAC,GAAwB0K,IAAI0O,IAAA3b,OAAAsC,EAAa,GAAAqZ,EAAArZ,GAAAqZ,IAAA3b,OAAA,CAAoB,GAAAS,KAAS,KAAA6B,EAAA2K,EAAA,EAAUA,EAAA0O,IAAA3b,QAAauC,EAAAoZ,IAAA1O,GAAAihB,GAAAztB,EAAA8B,KAAAoZ,IAAArZ,KAAAC,EAAA9B,EAAA8B,GAAA,GAAA0K,GAA2C0O,KAAA3b,OAAAsC,GAC/J,QAAA4rB,IAAAvS,EAAA1O,GAAiB,MAAA9M,QAAAC,UAAAC,eAAAb,KAAAmc,EAAA1O,GAAkD,QAAAkhB,IAAAxS,EAAA1O,GAAgB0O,KAAArT,IAAA8lB,GAAAnhB,MAAA,IAAuB,QAAAohB,IAAA1S,GAAe,MAAA2S,IAAA3S,EAAA,SAAAA,GAAyC,MAAjBA,KAAAtG,SAAA,IAAiB,EAAAsG,EAAA3b,OAAA2b,EAAA,IAAAA,IAA0BlN,KAAA,IAAgC,QAAA8f,IAAA5S,GAAe,GAAA1O,GAAA,EAAsD,OAA7CuhB,IAAA7S,EAAA,SAAAA,GAAiB1O,GAAAL,OAAAC,aAAA8O,KAA4B1O,EAAS,QAAAuhB,IAAA7S,EAAA1O,GAAiB,QAAA3K,GAAA2K,GAAc,KAAK1K,EAAAoZ,EAAA3b,QAAW,CAAE,GAAAsC,GAAAqZ,EAAA1M,OAAA1M,KAAA9B,EAAAguB,GAAAnsB,EAA4B,UAAA7B,EAAA,MAAAA,EAAoB,mBAAAqX,KAAAxV,GAAA,KAAArB,OAAA,oCAAAqB,GAA8E,MAAA2K,GAASyhB,IAAK,QAAAnsB,GAAA,IAAa,CAAE,GAAA9B,GAAA6B,GAAA,GAAAiO,EAAAjO,EAAA,GAAAyG,EAAAzG,EAAA,IAAA/C,EAAA+C,EAAA,GAAmC,SAAA/C,IAAA,IAAAkB,EAAA,KAAwBwM,GAAAxM,GAAA,EAAA8P,GAAA,GAAa,IAAAxH,IAAAkE,EAAAsD,GAAA,MAAAxH,GAAA,OAAAxJ,GAAA0N,EAAAlE,GAAA,MAAAxJ,KAC3qB,QAAAmvB,MAAc,IAAAC,GAAA,CAAQA,MAAMF,KAAM,QAAA9S,GAAA,EAAY,GAAAA,EAAKA,IAAAgT,GAAAhT,GAAA,oEAAA1M,OAAA0M,GAAA8S,GAAAE,GAAAhT,MAAA,IAAAA,IAAA8S,GAAA,oEAAAxf,OAAA0M,QAKnD,QAAAiT,IAAAjT,EAAA1O,GAAiB3H,KAAAyD,KAAUzD,KAAAob,EAAA/E,EAASrW,KAAA5C,EAAAuK,GAAA,KAAe3H,KAAAiL,EAAAjL,KAAAqW,GAAA,EAAiBrW,KAAAhD,MAAA,GAAcgD,KAAA0a,EAAA1a,KAAAijB,EAAAjjB,KAAAhG,GAAA,EAAwBgG,KAAAqf,EAAA,EAASrf,KAAA2H,EAAA,KAAY3H,KAAA/F,EAAA,EAAwT,QAAAsvB,IAAAlT,EAAA1O,EAAA3K,GAAmBqZ,KAAA,EAAOA,EAAArZ,IAAMqZ,EAAApL,GAAAtD,EAAO6hB,GAAAnT,GAC9d,QAAAoT,IAAApT,GAAe,GAAAA,IAAA,CAAQ,IAAAA,EAAAqE,EAAA,SAAAgP,GAAqBrT,GAAAqE,GAAA,GAA2D,QAAAiP,IAAAtT,EAAA1O,GAAiBiiB,GAAAvT,EAAA,KAAA1O,MAAA,IAAoB,QAAAiiB,IAAAvT,EAAA1O,EAAA3K,EAAAC,GAAqBoZ,EAAA5S,EAAA7I,MAAA+M,EAAA3K,EAAAC,IAAkBoZ,KAAAmT,GAAAnT,GAA0K,QAAAwT,IAAAxT,GAAe,MAAAyT,IAAAzT,EAAA5S,EAAA,SAAA4S,GAA0B,MAAAzZ,GAAAyZ,EAAA,MACtY,QAAAmT,IAAAnT,GAAe,GAAAA,EAAAgJ,GAAAhJ,KAAAwT,GAAAxT,GAAA,CAAoB,GAAA1O,GAAA0O,EAAAgJ,EAAAriB,EAAA+sB,GAAApiB,EAAkB3K,KAAAwU,GAAAhW,aAAAwB,EAAAqZ,SAAA0T,IAAApiB,IAAsC0O,EAAAgJ,EAAA,EAAMhJ,EAAA1O,IAAA0O,EAAA1O,EAAA1N,UAAAoc,GAAA1O,GAA0BA,EAAA0O,EAAArZ,CAAM,QAAAC,GAAAD,GAAA,EAAeqZ,EAAA5S,EAAA/I,SAAA2b,EAAArc,GAAiB,CAAE,GAAAmB,GAAAkb,EAAA5S,EAAAzI,QAAAiQ,EAAA9P,EAAA,GAAAsI,EAAAtI,EAAA,EAAuC,IAAPA,IAAA,GAAO8P,EAAAoL,EAAApL,EAAAxH,EAAAwH,EAAA,IAAiB,GAAAhR,GAAAgR,EAAA/Q,KAAAiB,GAAAkb,EAAAjZ,EAAAuK,OAAuB,KAAA1N,IAAAoc,EAAApL,EAAAoL,EAAApL,IAAAhR,GAAA0N,GAAA1N,YAAA0B,QAAA0a,EAAArZ,EAAA2K,EAAA1N,IAA0DujB,EAAA7V,IAAA,kBAAA6J,IAAA1V,SAAA6L,YAAA6J,IAAA1V,WAAAmB,GAAA,EAAAoZ,EAAArc,GAAA,GAA4E,MAAAyD,GAASkK,EAAAlK,EAAA4Y,EAAApL,GAAA,EAAA4e,GAAAxT,KAAArZ,GAAA,IAA0BqZ,EAAArZ,EAAA2K,EAAM1K,IAAAhD,EAAAqgB,EAAAjE,EAAAtZ,EAAAsZ,GAAA,GAAApZ,EAAAqd,EAAAjE,EAAAtZ,EAAAsZ,GAAA,GAAA1O,YAAA2hB,KAAAM,GAAAjiB,EAAA1N,EAAAgD,GAAA0K,EAAAsb,GAAA,GAAAtb,EAAApF,KAAAtI,EAAAgD,IAAgFD,IAAA2K,EACjf,GAAAqiB,IAAAriB,GAAAoiB,GAAApiB,EAAA0O,GAAA1O,EAAA0O,EAAAgJ,EAAA1X,EAAA0O,GAA6B,QAAAqT,MAAchP,EAAAxgB,KAAA8F,MAA8G,QAAAiqB,MAAcvP,EAAAxgB,KAAA8F,MAAoG,QAAAgqB,IAAA3T,GAAerW,KAAAqW,EAAA7E,GAAA3U,WAAAyd,EAAAta,KAAAhD,EAAAgD,MAAA,GAAsCA,KAAA2H,EAAA0O,EAA8E,QAAA6T,MAAclqB,KAAA2H,GAAA,EAAW,QAAAwiB,IAAA9T,EAAA1O,GAAiB3H,KAAA2H,GAAA,EAAU3H,KAAA2H,EAAAyiB,GAAUpqB,KAAAiL,EAAAuG,GAAA6Y,WAAA,GAAAA,YAAArqB,KAAA2H,GAAAtC,MAAArF,KAAA2H,GAAyD3H,KAAAyD,EAAAzD,KAAAhD,EAAA,EAAgBgD,KAAAqW,KAAUrW,KAAAhG,EAAAqc,EAASrW,KAAAqf,EAAA1X,EAAS3H,KAAA/F,EAAAuX,GAAA8Y,WAAA,GAAAA,YAAA,IAAAjlB,MAAA,IAAiDklB,QAAA/Y,GAAA8Y,WAAA,GAAAA,YAAAE,QAA+CxqB,KAAA+V,QACjpB,QAAA0U,IAAApU,GAAe,OAAA1O,GAAA0O,EAAApL,EAAAjO,EAAAqZ,EAAApc,EAAAgD,EAAA,EAAA9B,EAAA,EAA4BA,EAAAwM,EAAAjN,QAAWsC,EAAAC,KAAA0K,EAAAxM,IAAA,GAAAwM,EAAAxM,EAAA,OAAAwM,EAAAxM,EAAA,MAAAwM,EAAAxM,EAAA,GAAAA,EAAA,EAAA8B,CAAmD,KAAA0K,EAAA,GAAS,GAAAA,EAAKA,IAAA,CAAKxM,EAAA,EAAA6B,EAAA2K,EAAA,IAAY1K,EAAA,EAAAD,EAAA2K,EAAA,EAAW,IAAAsD,IAAA,EAAAjO,EAAA2K,EAAA,OAAAxM,IAAA,EAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,IAAAA,IAAA,KAAAsI,GAAA,EAAAzG,EAAA2K,EAAA,MAAA1K,IAAA,GAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,IAAAA,IAAA,KAA+GD,GAAA2K,GAAAsD,EAAAxH,EAAA,EAAWxG,EAAA,EAAAoZ,IAAA,GAAWlb,EAAA,EAAAkb,IAAA,EAAW,IAAApc,GAAA,EAAAoc,IAAA,GAAA5Y,EAAA,EAAA4Y,IAAA,GAAAqK,EAAA,EAAArK,IAAA,GAAAqU,EAAA,EAAArU,IAAA,GAAAsU,EAAA,EAAAtU,IAAA,EAAwE,KAAXpL,EAAA,EAAAoL,IAAA,GAAW1O,EAAA,EAAQ,GAAAA,EAAKA,IAAA,CAAK,GAAAijB,KAAA3tB,IAAA,EAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,MAAAA,EAAA9B,EAAA8B,EAAAhD,EAAAkB,EAAAlB,GAAA,CAAqEwJ,GAAAid,EAAAgK,GAAAhK,EAAAiK,EAAa1f,MAAAyV,IAAA,EAAAA,GAAA,KAAAA,IAAA,GAAAA,GAAA,KAAAA,IAC/c,GAAAA,GAAA,MAAYjd,KAAA,EAAA8mB,GAAA5iB,IAAA,EAAgBlE,EAAAwH,GAAAxH,GAAA,EAAAzG,EAAA2K,IAAA,KAAqBsD,EAAA0f,EAAKA,EAAAD,EAAMA,EAAAhK,EAAKA,EAAAjjB,EAAAgG,EAAA,EAAQhG,EAAAxD,EAAIA,EAAAkB,EAAIA,EAAA8B,EAAIA,EAAAwG,EAAAmnB,EAAA,EAASvU,IAAA,GAAAA,IAAA,GAAApZ,EAAA,EAAkBoZ,IAAA,GAAAA,IAAA,GAAAlb,EAAA,EAAkBkb,IAAA,GAAAA,IAAA,GAAApc,EAAA,EAAkBoc,IAAA,GAAAA,IAAA,GAAA5Y,EAAA,EAAkB4Y,IAAA,GAAAA,IAAA,GAAAqK,EAAA,EAAkBrK,IAAA,GAAAA,IAAA,GAAAqU,EAAA,EAAmBrU,IAAA,GAAAA,IAAA,GAAAsU,EAAA,EAAmBtU,IAAA,GAAAA,IAAA,GAAApL,EAAA,EAC9N,QAAA4f,IAAAxU,EAAA1O,EAAA3K,OAAmB,KAAAA,MAAA2K,EAAAjN,OAAyB,IAAAuC,GAAA,EAAA9B,EAAAkb,EAAArZ,CAAc,IAAAD,EAAA4K,GAAA,KAAa1K,EAAAD,GAAIqZ,EAAApL,EAAA9P,KAAAwM,EAAAR,WAAAlK,KAAA9B,GAAAkb,EAAA1O,IAAA8iB,GAAApU,GAAAlb,EAAA,OAAgD,KAAA8e,EAAAtS,GAAkK,KAAAhM,OAAA,kCAAlK,MAAmBsB,EAAAD,GAAI,CAAE,GAAAiO,GAAAtD,EAAA1K,IAAa,sBAAAgO,IAAA,GAAAA,GAAA,KAAAA,OAAA,EAAAA,IAAA,KAAAtP,OAAA,+BAA6F0a,GAAApL,EAAA9P,KAAA8P,EAAW9P,GAAAkb,EAAA1O,IAAA8iB,GAAApU,GAAAlb,EAAA,IAAwEkb,EAAArZ,EAAA7B,EAAMkb,EAAA5S,GAAAzG,EAEtJ,QAAA8tB,MAAcX,GAAAjwB,KAAA8F,KAAA,EAAA+qB,IAA4H,QAAAC,IAAA3U,GAAe,GAAAA,EAAAqS,GAAA,kBAAArS,GAAAqS,EAAA,MAAArS,GAAAqS,GAA4C,IAAA3rB,EAAAsZ,GAAA,MAAAA,GAAAtC,MAAA,GAA2B,IAAAkG,EAAA5D,GAAA,CAAU,OAAA1O,MAAA3K,EAAAqZ,EAAA3b,OAAAuC,EAAA,EAA4BA,EAAAD,EAAIC,IAAA0K,EAAA/M,KAAAyb,EAAApZ,GAAiB,OAAA0K,GAAS,MAAAyU,GAAA/F,GAAa,QAAA4U,IAAA5U,GAAe,GAAAA,EAAAoS,GAAA,kBAAApS,GAAAoS,EAAA,MAAApS,GAAAoS,GAA4C,KAAApS,EAAAqS,GAAA,kBAAArS,GAAAqS,EAAA,CAAiC,GAAAzO,EAAA5D,IAAAtZ,EAAAsZ,GAAA,CAAgB,GAAA1O,KAAS0O,KAAA3b,MAAW,QAAAsC,GAAA,EAAYA,EAAAqZ,EAAIrZ,IAAA2K,EAAA/M,KAAAoC,EAAc,OAAA2K,GAAS,MAAA0U,GAAAhG,IACzpB,QAAA6U,IAAA7U,EAAA1O,GAAiB,GAAA0O,EAAA5W,SAAA,kBAAA4W,GAAA5W,QAAA4W,EAAA5W,QAAAkI,MAAA,QAA+D,IAAAsS,EAAA5D,IAAAtZ,EAAAsZ,GAAA4M,GAAA5M,EAAA1O,MAAA,QAAkC,QAAA3K,GAAAiuB,GAAA5U,GAAApZ,EAAA+tB,GAAA3U,GAAAlb,EAAA8B,EAAAvC,OAAAuQ,EAAA,EAA4CA,EAAA9P,EAAI8P,IAAAtD,EAAAzN,SAAA,GAAA+C,EAAAgO,GAAAjO,KAAAiO,GAAAoL,GAAiK,QAAAxY,IAAAwY,EAAA1O,GAAiB,GAAA0O,EAAA,CAAMA,IAAAtC,MAAA,IAAe,QAAA/W,GAAA,EAAYA,EAAAqZ,EAAA3b,OAAWsC,IAAA,CAAK,GAAAC,GAAAoZ,EAAArZ,GAAA2T,QAAA,KAAAxV,EAAA,IAA+B,OAAA8B,EAAA,CAAS,GAAAgO,GAAAoL,EAAArZ,GAAAmuB,UAAA,EAAAluB,EAA0B9B,GAAAkb,EAAArZ,GAAAmuB,UAAAluB,EAAA,OAAsBgO,GAAAoL,EAAArZ,EAAY2K,GAAAsD,EAAA9P,EAAAiwB,mBAAAjwB,EAAAkY,QAAA,kBAAsD,QAAAgY,IAAAhV,EAAA1O,GAAgF,GAA/D3H,KAAA2H,EAAA3H,KAAA/F,EAAA+F,KAAAhD,EAAA,GAAwBgD,KAAAhG,EAAA,KAAYgG,KAAAqf,EAAArf,KAAAyD,EAAA,GAAiBzD,KAAAiL,GAAA,EAAUoL,YAAAgV,IAAA,CAAoBrrB,KAAAiL,MAAA,KAAAtD,IAAA0O,EAAApL,EAAwBqgB,GAAAtrB,KAAAqW,EAAArZ,GAAagD,KAAA/F,EAAAoc,EAAApc,EAAW+F,KAAA2H,EAAA0O,EAAA1O,EAAW4jB,GAAAvrB,KAAAqW,EAAArc,GAAagG,KAAAyD,EAAA4S,EAAA5S,EAAWkE,EAAA0O,GAAM,IAAArZ,GAAA,GAAAwuB,GAAaxuB,KAAA2K,EAAA3K,EAAQ2K,EAAA0O,IAAArZ,EAAAqZ,EAAA,GAAAmS,IAAA7gB,EAAA0O,GAAArZ,EAAA2K,OAA+B8jB,GAAAzrB,KAAAhD,GAAWgD,KAAAqf,EAAAhJ,EAAAgJ,MAAWhJ,KAAArZ,GAAAqZ,EAAA/O,IAAAgM,MAAAoY,MAAA1rB,KAAAiL,IAAAtD,EAAA2jB,GAAAtrB,KAAAhD,EAAA,WAAAgD,KAAA/F,EAAA0xB,GAAA3uB,EAAA,QAAAgD,KAAA2H,EAAAgkB,GAAA3uB,EAAA,WAAAuuB,GAAAvrB,KAAAhD,EAAA,IAAAgD,KAAAyD,EAAAkoB,GAAA3uB,EAAA,WAAAyuB,GAAAzrB,KAAAhD,EAAA,WAAAgD,KAAAqf,EAAAsM,GAAA3uB,EAAA,UAAAgD,KAAAiL,IAAAtD,EAAA3H,KAAAqW,EAAA,GAAAmV,IAAA,OAAAxrB,KAAAiL,IAEtyB,QAAAqgB,IAAAjV,EAAA1O,EAAA3K,GAAmBqZ,EAAArZ,IAAA2uB,GAAAhkB,GAAA,GAAAA,EAAiB0O,EAAArZ,IAAAqZ,EAAArZ,EAAAqZ,EAAArZ,EAAAqW,QAAA,UAAgC,QAAAkY,IAAAlV,EAAA1O,GAAiB,GAAAA,EAAA,CAAkB,GAAZA,KAAYgc,MAAAhc,IAAA,EAAAA,EAAA,KAAAhM,OAAA,mBAAAgM,EAAmD0O,GAAArc,EAAA2N,MAAM0O,GAAArc,EAAA,KAAc,QAAAyxB,IAAApV,EAAA1O,EAAA3K,GAAmB2K,YAAA6jB,KAAAnV,IAAA1O,EAAAikB,GAAAvV,MAAApL,KAAAjO,IAAA2K,EAAAkkB,GAAAlkB,EAAAmkB,KAAAzV,IAAA,GAAAmV,IAAA7jB,EAAA,EAAA0O,EAAApL,IAA0E,QAAA8gB,IAAA1V,EAAA1O,EAAA3K,GAAkBqZ,IAAA0I,IAAApX,EAAA3K,GAAa,QAAAgvB,IAAA3V,EAAA1O,GAAiB,MAAA0O,KAAA7Y,IAAAmK,GAAkB,QAAAskB,IAAA5V,GAAe,MAAAA,aAAAgV,IAAA,GAAAA,IAAAhV,GAAA,GAAAgV,IAAAhV,MAAA,IAAkD,QAAA6V,IAAA7V,EAAA1O,GAAiB,GAAA3K,GAAA,GAAAquB,IAAA,YAA8D,OAApCC,IAAAtuB,EAAA,SAAcqZ,IAAArZ,EAAA2K,EAAA0O,GAAW1O,IAAA3K,EAAAyG,EAAAkE,GAAW3K,EAC7d,QAAA2uB,IAAAtV,EAAA1O,GAAiB,MAAA0O,GAAA1O,EAAAwkB,UAAA9V,EAAAhD,QAAA,iBAAA+X,mBAAA/U,GAAA,GAAyE,QAAAwV,IAAAxV,EAAA1O,EAAA3K,GAAmB,MAAAD,GAAAsZ,MAAA+V,UAAA/V,GAAAhD,QAAA1L,EAAA0kB,IAAArvB,IAAAqZ,IAAAhD,QAAA,uBAA6E,QAAAgD,GAAA,KAAoB,QAAAgW,IAAAhW,GAAiC,MAAlBA,KAAAlP,WAAA,GAAkB,KAAAkP,GAAA,MAAAtG,SAAA,QAAAsG,GAAAtG,SAAA,IAAyH,QAAAyb,IAAAnV,EAAA1O,EAAA3K,GAAmBgD,KAAA2H,EAAA3H,KAAAqW,EAAA,KAAmBrW,KAAAhD,EAAAqZ,GAAA,KAAerW,KAAAiL,IAAAjO,EAC7Z,QAAAsvB,IAAAjW,GAAeA,UAAA,GAAAmS,IAAAnS,EAAA1O,EAAA,EAAA0O,EAAArZ,GAAAa,GAAAwY,EAAArZ,EAAA,SAAA2K,EAAA3K,GAAiDuvB,GAAAlW,EAAA+U,mBAAAzjB,EAAA0L,QAAA,YAAArW,MAAoD,QAAAwvB,IAAAnW,GAAe,GAAA1O,GAAAsjB,GAAA5U,EAAY,aAAA1O,EAAA,KAAAhM,OAAA,qBAA2D,IAAAqB,GAAA,GAAAwuB,IAAA,cAA4BnV,GAAA2U,GAAA3U,EAAQ,QAAApZ,GAAA,EAAYA,EAAA0K,EAAAjN,OAAWuC,IAAA,CAAK,GAAA9B,GAAAwM,EAAA1K,GAAAgO,EAAAoL,EAAApZ,EAAkB+c,GAAA/O,GAAAwhB,GAAAzvB,EAAA7B,EAAA8P,GAAAshB,GAAAvvB,EAAA7B,EAAA8P,GAA0B,MAAAjO,GAAS,QAAAuvB,IAAAlW,EAAA1O,EAAA3K,GAAmBsvB,GAAAjW,GAAMA,EAAArZ,EAAA,KAAS2K,EAAA+kB,GAAArW,EAAA1O,EAAU,IAAA1K,GAAAoZ,IAAA7Y,IAAAmK,EAAiB1K,IAAAoZ,IAAA0I,IAAApX,EAAA1K,MAAmBA,EAAArC,KAAAoC,GAAUqZ,EAAA1O,GAAA,EACzZ,QAAAglB,IAAAtW,EAAA1O,GAAiB2kB,GAAAjW,GAAM1O,EAAA+kB,GAAArW,EAAA1O,GAAUihB,GAAAvS,IAAA1O,OAAA0O,EAAArZ,EAAA,KAAAqZ,EAAA1O,GAAA0O,IAAA7Y,IAAAmK,GAAAjN,OAAA2b,MAAAuS,GAAAvS,EAAA1O,aAAA0O,GAAA1O,KAAA0O,EAAArZ,IAAAqZ,IAAA3b,OAAA,EAAA2b,EAAArZ,GAAA2rB,GAAAtS,KAA6K,QAAAuW,IAAAvW,EAAA1O,GAAiC,MAAhB2kB,IAAAjW,GAAM1O,EAAA+kB,GAAArW,EAAA1O,GAAUihB,GAAAvS,IAAA1O,KAC6H,QAAA8kB,IAAApW,EAAA1O,EAAA3K,GAAmB2vB,GAAAtW,EAAA1O,GAAQ,EAAA3K,EAAAtC,SAAA2b,EAAArZ,EAAA,KAAAqZ,IAAA0I,IAAA2N,GAAArW,EAAA1O,GAAAqU,EAAAhf,IAAAqZ,EAAA1O,GAAA3K,EAAAtC,QACjG,QAAAgyB,IAAArW,EAAA1O,GAAsD,MAArCA,IAAAL,GAAY+O,EAAApL,IAAAtD,IAAAklB,eAAyBllB,EAAS,QAAAikB,IAAAvV,EAAA1O,GAAiBA,IAAA0O,EAAApL,IAAAqhB,GAAAjW,KAAArZ,EAAA,KAAAqZ,IAAA5W,QAAA,SAAA4W,EAAA1O,GAAmD,GAAA3K,GAAA2K,EAAAklB,aAAsBllB,IAAA3K,IAAA2vB,GAAA3sB,KAAA2H,GAAA8kB,GAAAzsB,KAAAhD,EAAAqZ,KAAgCA,IAAKA,EAAApL,EAAAtD,EAAO,QAAAmlB,OAAmC,QAAAC,IAAA1W,GAAe,MAAAA,GAAArZ,IAAAqZ,EAAArZ,EAAAqZ,EAAA1O,KAAgC,QAAAqlB,OAC7jB,QAAAC,IAAA5W,GAAe,IAAAA,EAAApL,GAAA,mBAAAiiB,iBAAA,mBAAAC,eAAA,CAAgF,OAAAxlB,IAAA,gFAAA3K,EAAA,EAA+FA,EAAA2K,EAAW3K,IAAA,CAAK,GAAAC,GAAA0K,EAAA3K,EAAW,KAAI,UAAAmwB,eAAAlwB,GAAAoZ,EAAApL,EAAAhO,EAAkC,MAAA9B,KAAW,KAAAQ,OAAA,8FAA2G,MAAA0a,GAAApL,EAAqB,QAAAmiB,IAAA/W,GAAesR,GAAAztB,KAAA8F,MAAaA,KAAAqtB,QAAA,GAAA7E,IAAoBxoB,KAAAijB,EAAA5M,GAAA,KAAerW,KAAA2H,GAAA,EAAU3H,KAAAob,EAAApb,KAAAqW,EAAA,KAAmBrW,KAAAyD,EAAAzD,KAAA+rB,EAAA/rB,KAAAhG,EAAA,GAAwBgG,KAAAhD,EAAAgD,KAAA4nB,EAAA5nB,KAAAqf,EAAArf,KAAA6f,GAAA,EAA+B7f,KAAAiL,EAAA,EAASjL,KAAAjD,EAAA,KAAYiD,KAAA/F,EAAAqzB,GAAUttB,KAAA5C,EAAA4C,KAAAutB,GAAA,EAC5jB,QAAAC,IAAAnX,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB,GAAAkb,IAAA,KAAA1a,OAAA,0DAAA0a,EAAArc,EAAA,YAAmF2N,EAAa3K,OAAAywB,cAAA,MAA0BpX,EAAArc,EAAA2N,EAAM0O,EAAA5S,EAAA,GAAO4S,EAAA0V,EAAA/uB,EAAMqZ,EAAAwJ,GAAA,EAAOxJ,EAAA1O,GAAA,EAAO0O,MAAA4M,EAAA5M,EAAA4M,EAAA5M,IAAAqX,GAAArX,IAAuBA,EAAA+E,EAAA2R,GAAA1W,EAAA4M,EAAA5M,EAAA4M,EAAAyK,IAAuBrX,IAAAjF,mBAAAkJ,EAAAjE,EAAAsI,GAAAtI,EAAiC,KAAIwS,GAAAxS,EAAAsX,EAAAC,GAAAvX,EAAA,gBAAAA,EAAAuR,GAAA,EAAAvR,IAAA8H,KAAAnhB,EAAA2K,EAAAL,IAAA,GAAA+O,EAAAuR,GAAA,EAAkE,MAAAnkB,GAA8D,MAArDolB,IAAAxS,EAAAsX,EAAAC,GAAAvX,EAAA,sBAAA5S,EAAAqD,cAA6C+mB,IAAAxX,EAAA5S,GAAekE,EAAA1K,GAAA,EAAQ,IAAAgO,GAAA,GAAAud,IAAAnS,EAAAgX,QAAwBlyB,IAAA+vB,GAAA/vB,EAAA,SAAAkb,EAAA1O,GAAsBsD,EAAA8T,IAAApX,EAAA0O,KAAalb,EAAAsgB,EAAAxQ,EAAAwd,KAAYxrB,EAAAuU,GAAAsc,UAAAnmB,YAC3d6J,IAAAsc,UAAWnS,EAAAoS,GAAA/wB,IAAA7B,GAAA8B,GAAAgO,EAAA8T,IAAA,kEAAyF9T,EAAAxL,QAAA,SAAA4W,EAAA1O,GAAwB3H,KAAAqW,EAAA2X,iBAAArmB,EAAA0O,IAA6BA,GAAIA,EAAApc,IAAAoc,IAAA4X,aAAA5X,EAAApc,GAA4B,mBAAAoc,UAAA6X,kBAAA7X,EAAAkX,IAAAlX,IAAA6X,gBAAA7X,EAAAkX,EAA8E,KAAIY,GAAA9X,GAAA,EAAAA,EAAApL,IAAAoL,EAAAjZ,EAAAgxB,GAAA/X,KAAAwS,GAAAxS,EAAAsX,EAAAC,GAAAvX,EAAA,oBAAAA,EAAApL,EAAA,0BAAAoL,EAAAjZ,IAAAiZ,EAAAjZ,GAAAiZ,IAAA5a,QAAA4a,EAAApL,EAAAoL,IAAAgY,UAAA/T,EAAAjE,EAAAyT,GAAAzT,MAAAtZ,EAAA+qB,GAAAzR,EAAAyT,GAAAzT,EAAApL,EAAAoL,IAAAwS,GAAAxS,EAAAsX,EAAAC,GAAAvX,EAAA,oBAAAA,EAAAgJ,GAAA,EAAAhJ,IAAAiY,KAAA3mB,GAAA0O,EAAAgJ,GAAA,EAAwN,MAAA5b,GAASolB,GAAAxS,EAAAsX,EAAAC,GAAAvX,EAC5e,eAAA5S,EAAAqD,UAAA+mB,GAAAxX,EAAA5S,IAAoC,QAAA2qB,IAAA/X,GAAe,MAAA3O,KAAAsV,EAAA,oBAAA3G,GAAA5a,aAAA,KAAA4a,EAAAgY,UAAkE,QAAA3S,IAAArF,GAAe,sBAAAA,EAAAwW,cAAkN,QAAAgB,IAAAxX,EAAA1O,GAAiB0O,EAAA1O,GAAA,EAAO0O,QAAArZ,GAAA,EAAAqZ,IAAAkY,QAAAlY,EAAArZ,GAAA,GAAiCqZ,EAAA5S,EAAAkE,EAAM6mB,GAAAnY,GAAMoY,GAAApY,GAAM,QAAAmY,IAAAnY,GAAeA,EAAAwJ,IAAAxJ,EAAAwJ,GAAA,EAAA+H,GAAAvR,EAAA,YAAAuR,GAAAvR,EAAA,UAEhb,QAAAqY,IAAArY,GAAe,GAAAA,EAAA1O,OAAA,KAAAgnB,GAAA,GAAAtY,EAAA+E,EAAA,OAAAwT,GAAAvY,IAAA,GAAAwY,GAAAxY,GAAAwS,GAAAxS,EAAAsX,EAAAC,GAAAvX,EAAA,iDAAqH,IAAAA,EAAAgJ,GAAA,GAAAuP,GAAAvY,GAAAyR,GAAAzR,EAAAsI,GAAA,EAAAtI,OAAmC,IAAAuR,GAAAvR,EAAA,uBAAAuY,GAAAvY,GAAA,CAA0CwS,GAAAxS,EAAAsX,EAAAC,GAAAvX,EAAA,qBAAgCA,EAAA1O,GAAA,CAAO,KAAI,GAAAA,GAAAknB,GAAAxY,EAAYA,GAAA,OAAA1O,GAAY,mEAAA3K,IAAA,CAAyE,MAAAqZ,EAAQ,SAAArZ,GAAA,EAAa,GAAAC,EAAM,MAAAA,EAAAD,GAAA,CAAW,GAAA7B,EAAM,IAAAA,EAAA,IAAAwM,EAAA,CAAY,GAAAsD,IAAAoL,EAAArc,EAAAsN,IAAAgM,MAAAoY,IAAA,QAAqC,KAAAzgB,GAAAuG,GAAA/X,MAAA+X,GAAA/X,KAAA4kB,SAAA,CAAgC,GAAA5a,GAAA+N,GAAA/X,KAAA4kB,SAAAC,QAC1drT,GAAAxH,EAAAqgB,OAAA,EAAArgB,EAAA/I,OAAA,GAAyBS,GAAA2zB,GAAAtc,KAAAvH,IAAA4hB,cAAA,IAAiC5vB,EAAA9B,EAAI,GAAA8B,EAAA2qB,GAAAvR,EAAA,YAAAuR,GAAAvR,EAAA,eAAoC,CAAK,IAAI,GAAApc,GAAA,EAAA20B,GAAAvY,OAAA0Y,WAAA,GAAgC,MAAAtxB,GAASorB,GAAAxS,EAAAsX,EAAA,uBAAAlwB,EAAAqJ,SAAA7M,EAAA,GAA6Coc,EAAA5S,EAAAxJ,EAAA,KAAA40B,GAAAxY,GAAA,IAAqBmY,GAAAnY,IAAO,QAAQoY,GAAApY,KAAQ,QAAAoY,IAAApY,EAAA1O,GAAiB,GAAA0O,IAAA,CAAQ8X,GAAA9X,EAAM,IAAArZ,GAAAqZ,IAAApZ,EAAAoZ,EAAA+E,EAAA,GAAAzB,EAAA,IAA2BtD,KAAA,KAASA,EAAA+E,EAAA,KAASzT,GAAAigB,GAAAvR,EAAA,QAAgB,KAAIrZ,EAAAoU,mBAAAnU,EAAuB,MAAA9B,IAASkb,IAAAsX,IAAAtX,EAAArT,IAAAgsB,GAAA,qDAAA7zB,EAAA2L,YAAA,MAC7W,QAAAqnB,IAAA9X,GAAeA,OAAAjZ,IAAAiZ,IAAAgY,UAAA,MAA+B,gBAAAhY,GAAAtZ,IAAAyU,GAAAhW,aAAA6a,EAAAtZ,GAAAsZ,EAAAtZ,EAAA,MAAqD,QAAA6xB,IAAAvY,GAAe,MAAAA,SAAA4Y,WAAA,EAA4B,QAAAJ,IAAAxY,GAAe,IAAI,SAAAuY,GAAAvY,OAAA6Y,QAAA,EAA6B,MAAAvnB,GAAS,UAAU,QAAAwnB,IAAA9Y,GAAe,IAAI,MAAAA,SAAA+Y,aAAA,GAA+B,MAAAznB,GAAS,MAAAkhB,IAAAxS,EAAAsX,EAAA,6BAAAhmB,EAAAb,SAAA,IAC8J,QAAA8mB,IAAAvX,EAAA1O,GAAiB,MAAAA,GAAA,KAAA0O,EAAA0V,EAAA,IAAA1V,EAAArc,EAAA,IAAA60B,GAAAxY,GAAA,IAA0H,QAAAgZ,IAAAhZ,GAAe,GAAA1O,MAAQ3K,EAAA2K,EAAAxL,mBAAAc,EAAAskB,GAAAlL,GAAAlb,EAAAgB,SAAAE,cAAA,UAAA4O,GAAsE4T,GAAA1jB,EAAA2uB,OAAA,IAAermB,EAAA,GAAA6lB,IAAAgG,GAAArkB,GAAAhR,EAAA,KAAAwD,EAAA,MAAAkK,EAAAlM,QAAAkM,EAAAlM,QAAA,GACjiB,OADwlB,GAAAgC,IAAAxD,EAAAT,OAAAqD,WAAA,WAAqC0yB,GAAAp0B,GAAA,EAAS,IAAAkb,GAAA,GAAAmZ,IAAAC,GAAA,sCAAAxyB,EAAyDwsB,IAAAhmB,GAAM8lB,GAAA9lB,GAAA,EAAA4S,IAAW5Y,GAAAwN,EAAA6e,GAAA7vB,GAAYkB,EAAAI,OAAAJ,EAAAiW,mBAAA,WAAyCjW,EAAA8zB,YAAA,UAAA9zB,EAAA8zB,YAAA,YAAA9zB,EAAA8zB,aAAAM,GAAAp0B,EAAAwM,EAAA+nB,KAAA,EAAAz1B,GAAAwJ,EAAAoc,EAAA,QAA8F1kB,EAAAG,QAAA,WAAqBi0B,GAAAp0B,GAAA,EAAAlB,EAAW,IAAAoc,GAAA,GAAAmZ,IAAAG,GAAA,8BACngC1yB,EAAGwsB,IAAAhmB,GAAM8lB,GAAA9lB,GAAA,EAAA4S,IAAYpL,EAAAtD,EAAAioB,eAAmBnT,EAAAxR,GAAM3O,KAAA,kBAAAC,QAAA,UAAyCqkB,GAAAzlB,EAAA8P,GAAQ9P,EAAAwB,IAAA4kB,GAAAlL,GAAYwZ,GAAA7yB,GAAAF,YAAA3B,GAAqBsI,EAAS,QAAAosB,IAAAxZ,GAAe,GAAA1O,EAAM,QAAAA,GAAA0O,GAAAla,UAAAC,qBAAA,aAAAuL,EAAAjN,OAAAiN,EAAA,GAAA0O,EAAAlF,gBAAyF,QAAAme,MAAc,GAAAtvB,WAAA6e,GAAA,CAAkB,GAAAxI,GAAArW,KAAA6e,EAAcxI,IAAA,UAAAA,EAAAyZ,SAAAP,GAAAlZ,GAAA,EAAArW,KAAA8pB,KACrS,QAAAyF,IAAAlZ,EAAA1O,EAAA3K,GAAmB,MAAAA,GAAAwU,GAAAhW,aAAAwB,GAA2BqZ,EAAA9a,OAAAoe,EAAYtD,EAAA/a,QAAAqe,EAAatD,EAAAjF,mBAAAuI,EAAwBhS,GAAAnO,OAAAqD,WAAA,WAAgCwZ,KAAAoI,YAAApI,EAAAoI,WAAApN,YAAAgF,IAA6C,GAAkB,QAAAmZ,IAAAnZ,EAAA1O,GAAiB,GAAA3K,GAAA,yBAAAqZ,EAAA,GAAqC1O,KAAA3K,GAAA,KAAA2K,GAAe+S,EAAAxgB,KAAA8F,KAAAhD,GAAegD,KAAAiB,KAAAoV,EAAoB,QAAA0Z,OACtS,QAAAC,MAAchwB,KAAAqW,EAAA,GAAA4Z,gBAA0BjwB,KAAAivB,WAAA,EAAkBjvB,KAAAoR,mBAAA,KAA6BpR,KAAAovB,aAAA,GAAqBpvB,KAAAkvB,QAAA,EAAelvB,KAAA+uB,WAAA/uB,KAAAkwB,YAAA,KAAsClwB,KAAAqW,EAAA9a,OAAA+e,EAAAta,KAAAqgB,GAAArgB,MAA8BA,KAAAqW,EAAA/a,QAAAgf,EAAAta,KAAAkf,GAAAlf,MAA+BA,KAAAqW,EAAA8Z,WAAA7V,EAAAta,KAAAsgB,GAAAtgB,MAAkCA,KAAAqW,EAAAgY,UAAA/T,EAAAta,KAAAugB,GAAAvgB,MAEpN,QAAAowB,IAAA/Z,EAAA1O,GAAiB0O,EAAA4Y,WAAAtnB,EAAe0O,EAAAjF,oBAAAiF,EAAAjF,qBAA6H,QAAAif,MAAc,GAAAha,GAAAsX,IAAU,OAAAjmB,OAAA4oB,IAAA,IAAAA,IAAA,YAAA9d,KAAA6D,GAA4C,QAAAka,MAAc,MAAA/e,IAAAhY,QAAAgY,GAAAhY,OAAA6kB,SAAAmS,MAAA,GAA4C,QAAAC,IAAApa,EAAA1O,GAAiBA,KAAA6J,GAAAhY,MAAc,IAAAwD,GAAA,aAAoBqZ,KAAArZ,EAAAP,GAAAqlB,GAAAzL,KAAiB1O,EAAA0W,SAAAmS,KAAAxzB,EAAkB,QAAA0zB,IAAAra,EAAA1O,GAAiB,GAAA1K,GAAAD,IAAW,KAAAC,IAAAoZ,GAAApZ,IAAA0K,SAAA0O,GAAApZ,UAAA0K,GAAA1K,GAAAD,EAAApC,KAAAqC,GAAA+c,EAAA3D,EAAApZ,IAAAsf,EAAAlG,EAAApZ,GAAA0K,EAAA1K,KAAAD,EAAApC,KAAAqC,GAAA,gBAAAoZ,GAAApZ,IAAA,MAAAoZ,EAAApZ,IAAA,MAAA0K,EAAA1K,GAAA,EAAAyzB,GAAAra,EAAApZ,GAAA0K,EAAA1K,IAAAvC,QAAAsC,EAAApC,KAAAqC,GAAAoZ,EAAApZ,KAAA0K,EAAA1K,IAAAD,EAAApC,KAAAqC,GAAAD,EAAApC,KAAAqC,EAAwM,KAAAA,IAAA0K,GAAA1K,IAAAoZ,IAAArZ,EAAApC,KAAAqC,EAA6B,OAAAD,GAC9pB,QAAA2zB,MAAc,GAAAta,GAAAsX,IAA+F,UAArFtX,EAAAua,GAAAva,IAAAwa,GAAA,MAAAxa,IAAA/C,MAAA,yBAAA+C,EAAA3b,OAAA2iB,SAAAhH,EAAA,cAAqF,GAAAA,GAAA3O,IAAA4oB,MAAA,EAAAA,KAAgC,QAAAQ,IAAAza,GAAwC,MAAzBA,OAAAsX,MAAAd,iBAAyBxW,EAAA/C,MAAA,YAAA+C,EAAA/C,MAAA,UAAA+C,EAAA/C,MAAA,qBAAA+C,EAAA/C,MAAA,eAAA+C,EAAA/C,MAAA,kBAAA+C,EAAA/C,MAAA,aAAqJ,QAAAyd,IAAA1a,GAAeA,KAAA7E,GAAAhY,MAAc,KAAI6c,EAAA5H,QAAU,MAAA9G,KACrX,QAAAqpB,IAAA3a,EAAA1O,EAAA3K,GAAmB,GAAAC,GAAAqT,QAAA8D,MAAA,IAAA9D,KAAAC,SAA+C5I,MAAA,IAAS3K,KAAA,GAAS,IAAA7B,IAAA3B,OAAAy3B,OAAAC,YAAAl0B,GAAA,EAAAiO,GAAAzR,OAAAy3B,OAAAE,WAAAxpB,GAAA,CAAuEA,IAAGypB,MAAAzpB,EAAA0pB,OAAAr0B,EAAAs0B,IAAA,EAAAn2B,IAAA,EAAAo2B,KAAA,EAAAtmB,IAAA,EAAAoT,UAAA,EAAAmT,WAAA,EAAAC,WAAA,EAAAC,SAAA,GAA4F10B,EAAA2wB,KAAAd,cAAoB5vB,IAAA0K,EAAAiK,OAAA3U,EAAAme,EAAApe,EAAA,YAAA2K,EAAAiK,OAAA,WAAmDgf,GAAAjD,OAAAgE,KAAAtb,KAAA,mBAAA1O,EAAAiqB,YAAA,GAAuD50B,EAAAqZ,GAAA,IAAQpZ,EAAA0K,KAAA1K,MAAcoZ,EAAA7c,OAASmO,EAAA3K,YAAA4kB,IAAA5kB,EAAA8kB,OAAA,KAAA9kB,EAAAwzB,KAAAxzB,EAAAwzB,KAAAxzB,EAAAsK,IAAoEtK,EAAAC,EAAA2U,QAAA5U,EAAA4U,OAAqBzW,IAChf,KAAAsI,IAAAxG,GAAA,OAAAwG,GAAqB,8CAAAtI,EAAAP,KAAA6I,EAAA,IAAAxG,EAAAwG,GAAqE,MAAM,oCAAsC,SAAAtI,EAAAP,KAAA6I,EAAA,KAAAxG,EAAAwG,GAAA,MAAiC,GAAAA,GAAAtI,EAAAgO,KAAA,IACoO,KADlN8S,EAAA,YAAAA,EAAA,UAAAA,EAAA,SAAAA,EAAA,SAAAA,EAAA,UAAA5F,EAAA/D,WAAA+D,EAAA/D,UAAAuf,YAAA70B,GAAA,SAAAA,GAAAyG,EAAA4S,EAAAla,SAAAE,cAAA,KAAAsL,YAAAia,KAAAja,YAAAia,MAAAja,IAAAyS,GAAAzS,EAAAoa,KAAApa,EAAAL,GAAA0a,GAAAxP,KAAA7K,OAAA,2BAAAA,EAAAsa,GAAAta,IAAAlE,EAAA+sB,KAAA/zB,GAAAkL,GAAAlE,EAAA/G,aAAA,SAAAM,GAAAC,EAAA60B,YAAAruB,EAAA/G,aAAA,MACzL,cAAAO,EAAAd,SAAA41B,YAAA,cAAA90B,EAAA+0B,eAAA,cAAA3b,EAAA,GAAA5S,EAAAwuB,cAAAh1B,GAAAwG,MAA8GxG,EAAA60B,YAAAruB,EAAA4S,EAAA8H,KAAA,GAAAnhB,EAAAyG,GAAA4S,EAAA5Z,GAAAkL,GAAAlE,IAAAyuB,IAAA9W,EAAA/E,EAAA,OAAuDA,EAAA,IAAAA,EAAAhD,QAAA,iBAAA5P,EAAA0uB,OAAA,KAAA/Q,GAAA,2CAAA/K,EAAA,8CAA2IuE,EAAAvE,GAAA,KAAAA,EAAAgM,GAAAhM,GAAA5S,EAAAtH,SAAAiiB,MAAAgE,GAAA/L,IAAA5S,EAAAtH,SAAAsS,UAAAhL,EAAA4S,EAAA8H,KAAA1hB,GAAAkL,GAAA3K,EAAAyG,GAA2FA,EAAA,IAASA,EAAA2uB,QAAU,MAAAn4B,IAAU,MAAAwJ,GACxa,QAAA4uB,IAAAhc,GAAe,UAAA8I,GAAA,SAAAxX,GAAyB,QAAA3K,KAAa+qB,GAAA,KAAAxlB,KAAA,WAAwB,GAAA8T,MAAAic,OAAoB,MAAAt1B,IAApB2K,OAAsC,MAAA3K,OAA2D,QAAAu1B,MAAc,GAAAlc,GAAA,IAAW,WAAA8I,GAAA,SAAAxX,GAAyB,YAAA6J,GAAArV,SAAA8yB,WAAAtnB,KAAA0O,EAAA,WAAoD1O,KAAIye,GAAA5sB,OAAA,OAAA6c,MAAsBpb,EAAA,SAAA0M,GAAoC,KAAnBqf,IAAAxtB,OAAA,OAAA6c,GAAmB1O,IAClV,QAAA6qB,MAAc,MAAAC,QAAA,IAAAF,KAAAhwB,KAAA,WAAuC,UAAA4c,GAAA,SAAA9I,EAAA1O,GAA2B,GAAA3K,GAAAwU,GAAArV,SAAAc,EAAAJ,WAAA,WAAyC8K,EAAAhM,MAAA,qCAA4C,IAAMqB,GAAA4T,iBAAA,yBAA4CpV,aAAAyB,GAAgBoZ,MAAI,OAAOyJ,GAAAnkB,MAAA,uDAAiE,QAAA82B,IAAApc,GAAwB,MAATA,MAAAsX,OAAS,UAAA+E,OAAArc,EAAAwW,cAAAvZ,MAAA,6BAA4E,QAAAqf,MAAc,GAAAtc,GAAA7E,GAAAhY,MAAe,KAAI,SAAA6c,QAAAib,KAAsB,MAAA3pB,GAAS,UACvd,QAAAirB,MAAa,MAAAr5B,IAAAsH,SAAA9F,eAAA,6BAAAxB,GAAAsH,SAAA9F,eAAA,yBAA+H,QAAA83B,MAAc,GAAAxc,GAAAuc,IAAU,uBAAAvc,GAAA,SAAAA,EACpK,QAAAua,IAAAva,GAAe,GAAA1O,GAAA0O,EAAAwW,aAAsB,OAAAzR,GAAAzT,EAAA,WAAAyT,EAAAzT,EAAA,SAAAyT,EAAAzT,EAAA,kBAA2DyT,EAAAzT,EAAA,uBAAoCyT,EAAAzT,EAAA,SAAAyT,EAAAzT,EAAA,iBAA2CyT,EAAAzT,EAAA,gBAA6ByT,EAAAzT,EAAA,YAAAgqB,GAA6BvW,EAAAzT,EAAA,gBAA6ByT,EAAAzT,EAAA,2BAAwCyT,EAAAzT,EAAA,kBAA8ByT,EAAAzT,EAAA,YAAAyT,EAAAzT,EAAA,YAAAyT,EAAAzT,EAAA,WAAAyT,EAAAzT,EAAA,YAAAyT,EAAAzT,EAAA,aAAAyT,EAAAzT,EAAA,WAAAyT,EAAAzT,EAAA,SAAoHyT,EAAAzT,EAAA,sBAAkC0O,IAAA/C,MAAA,qCACle,GAAA+C,EAAA3b,OAAA2b,EAAA,GAA2D,QAAnCwa,GAAe,SAAqF,QAAAiC,IAAAzc,EAAA1O,GAAiBA,OAAQ,IAAaxM,GAAb6B,KAAAC,IAAgB,KAAA9B,IAAA43B,IAAA91B,EAAA81B,GAAA53B,KAAA,CAAwB,KAAAA,EAAA,EAAQA,EAAAwM,EAAAjN,OAAWS,QAAA,KAAA8B,EAAA0K,EAAAxM,YAAA8B,GAAA0K,EAAAxM,IAAA6B,EAAApC,KAAA+M,EAAAxM,IAAuJ,OAAvF6B,GAAAg2B,OAASrrB,EAAA3K,EAAI2K,EAAAjN,SAAAiN,GAAA,qBAAmC3K,EAAA41B,KAAM31B,EAAA,IAAKA,EAAA,YAAAD,EAAA4zB,GAAAjD,MAAA3wB,GAA4B,WAAAqZ,EAAA,IAAA1O,EAAAwB,KAAA,KAAsC,QAAAwkB,MAAa,MAAAnc,IAAAc,WAAAd,GAAAc,UAAA2gB,WAAA,GAC1Z,QAAAC,IAAA7c,EAAA1O,GAAgB0O,IAAAtC,MAAA,KAAepM,KAAA6J,EAAO,QAAAxU,GAAA,EAAYA,EAAAqZ,EAAA3b,QAAA,gBAAAiN,IAAA,MAAAA,EAAwC3K,IAAA2K,IAAA0O,EAAArZ,GAAsC,OAAxBA,IAAAqZ,EAAA3b,SAAAiN,MAAA,IAAwBA,EAAS,QAAAwrB,MAAc,IAAI,GAAA9c,GAAA7E,GAAA4hB,aAAAzrB,EAAA0rB,IAA4B,IAAAhd,EAAA,MAAAA,GAAAid,QAAA3rB,EAAA,KAAA0O,EAAAkd,WAAA5rB,IAAA0oB,QAAA7e,GAAAgiB,UAAmE,MAAAx2B,IAAU,SAAS,QAAAy2B,MAAc,OAAAC,MAAA,sBAAAhB,MAAAD,QAAAI,MAAAM,KAA4D,QAAAO,MAAc,gBAAAhB,MAAA,WAAAA,KAAsC,QAAAA,MAAc,MAAAlhB,IAAA6M,UAAA7M,GAAA6M,SAAAC,UAAA,KACzZ,QAAAqV,IAAAtd,GAAwB,MAATA,MAAAsX,MAASmD,GAAAza,IAAAua,GAAAva,IAAAsb,GAA8B,QAAAiC,IAAAvd,GAAe,gBAAAA,EAAA,KAAA8M,GAAA9M,GAAwC,QAAAwd,IAAAxd,GAAe,GAAQrZ,GAAR2K,IAAW,KAAA3K,IAAAqZ,KAAAtb,eAAAiC,IAAA,OAAAqZ,EAAArZ,QAAA,KAAAqZ,EAAArZ,KAAA2K,EAAA3K,GAAAqZ,EAAArZ,GAAwE,OAAA2K,GAAS,QAAAmsB,IAAAzd,GAAe,UAAAA,EAAA,MAAAlM,MAAAC,MAAAiM,GAAiC,QAAAgd,IAAAhd,GAAe,MAAAA,IAAA/F,QAAA8D,MAAA,IAAA9D,KAAAC,UAAuD,QAAAwjB,IAAA1d,GAAwB,MAATA,MAAAsX,KAAS,UAAAiD,GAAAva,OAAAwW,cAAAvZ,MAAA,oBACtW,QAAA0gB,MAAc,GAAA3d,GAAA7E,GAAAyiB,MAAe,IAAA5d,KAAAwS,EAAA,OAAAlhB,KAAA0O,GAAAwS,EAAA,GAAAxS,EAAAwS,EAAAlhB,GAAA2S,EAAAjE,EAAAwS,EAAAlhB,GAAA2S,MAAAjE,EAAAwS,EAAAlhB,GAAAurB,EAAA7c,EAAAwS,EAAAlhB,GAAAurB,MAAA7c,EAAAwS,EAAAlhB,GAAA2S,EAAAjE,EAAAwS,EAAAlhB,GAAAurB,EAAAvuB,SAAA0R,EAAA6d,GAAA,OAAAl3B,GAAA,EAAsHA,EAAAqZ,EAAA6d,GAAAx5B,OAAcsC,IAAAqZ,EAAA6d,GAAAl3B,GAAA,KAAiB,QAAAm3B,MAAc,GAAA9d,GAAA7E,GAAAc,SAAkB,QAAA+D,GAAA,iBAAAA,GAAA+d,SAAAV,MAAA,sBAAAhB,UAAA,KAAArc,EAAAge,YAAAhe,EAAA+d,OAAyH,QAAAE,IAAAje,EAAA1O,EAAA3K,EAAAC,GAAqB,GAAAoZ,EAAA1O,EAAA,KAAAhM,OAAA,8CAAkEqE,MAAAhD,EAAAqZ,EAASrW,KAAA2H,IAAS0O,EAAArZ,GAAA2wB,KAAS1wB,KAAA21B,KAAS5yB,KAAAqW,EAAAya,GAAAza,IAAA,gBAAApZ,EAC7Y,QAAAs3B,MAAc,GAAAle,GAAA7E,GAAArV,QAAiB,QAAAka,OAAA,KAAAA,EAAAme,iBAAA,WAAAne,EAAAme,gBAAiF,QAAAC,MAAc,GAAApe,GAAA7E,GAAArV,SAAAwL,EAAA,IAAwB,OAAA4sB,QAAAle,EAAAwJ,KAAA,GAAAV,GAAA,SAAAniB,GAAuC2K,EAAA,WAAa4sB,OAAAle,EAAA6Q,oBAAA,mBAAAvf,GAAA,GAAA3K,MAA4DqZ,EAAAzF,iBAAA,mBAAAjJ,GAAA,KAA4C1M,EAAA,SAAA+B,GAAgE,KAA/CqZ,GAAA6Q,oBAAA,mBAAAvf,GAAA,GAA+C3K,IAC3a,QAAA03B,IAAAre,GAAe,IAAI,GAAA1O,GAAA,GAAAkK,MAAAwL,SAAAhH,EAAA,IAA+B,KAAAsN,MAAAhc,EAAAoK,aAAA,SAAAS,KAAA6D,GAAA,MAAA1O,GAAAgtB,cAAiE,MAAA33B,IAAU,YAA2N,QAAA43B,IAAAve,EAAA1O,EAAA3K,GAAkB63B,GAAAh6B,OAAAwC,eAAAgZ,EAAA1O,GAA8BrK,cAAA,EAAAC,YAAA,EAAAW,MAAAlB,IAAsCqZ,EAAA1O,GAAA3K,EAAS,QAAA83B,IAAAze,EAAA1O,GAAiB,GAAAA,EAAA,OAAA3K,KAAA2K,KAAA5M,eAAAiC,IAAA43B,GAAAve,EAAArZ,EAAA2K,EAAA3K,IAAqD,QAAA+3B,IAAA1e,GAAe,GAAA1O,KAAiB,OAARmtB,IAAAntB,EAAA0O,GAAQ1O,EAAS,QAAAqtB,IAAA3e,GAAe,GAAQrZ,GAAR2K,IAAW,KAAA3K,IAAAqZ,KAAAtb,eAAAiC,KAAA2K,EAAA3K,GAAAqZ,EAAArZ,GAA4C,OAAA2K,GAC5mB,QAAAstB,IAAA5e,EAAA1O,GAAiB,IAAAA,MAAAjN,OAAA,QAA0B,KAAA2b,EAAA,QAAe,QAAArZ,GAAA,EAAYA,EAAA2K,EAAAjN,OAAWsC,IAAA,CAAK,GAAAC,GAAAoZ,EAAA1O,EAAA3K,GAAc,aAAAC,GAAA,OAAAA,GAAA,KAAAA,EAAA,SAAyC,SAAS,QAAAi4B,IAAA7e,GAAe,GAAA1O,GAAA0O,CAAQ,oBAAAA,IAAA,MAAAA,EAAA,CAAgC1O,EAAA,UAAA0O,QAAqB,QAAArZ,KAAAqZ,GAAAue,GAAAjtB,EAAA3K,EAAAk4B,GAAA7e,EAAArZ,KAA+B,MAAA2K,GAAU,QAAAwtB,IAAA9e,GAAe,GAAA1O,MAAQ3K,EAAAqZ,EAAA+e,IAAAn4B,EAAAoZ,EAAAgf,GAAyB,IAARhf,IAAAif,KAAQt4B,IAAAqZ,EAAA,KAAA1a,OAAA,8BAAqDgM,GAAA4tB,IAAAt4B,GAAA,KAAc0K,EAAA6tB,IAAAx4B,EAAQ43B,GAAA50B,KAAAy1B,GAAApf,GAAaue,GAAA50B,KAAA01B,GAAAR,GAAAvtB,IAAkH,QAAA4lB,IAAAlX,EAAA1O,GAAgB3H,KAAAiB,KAAA00B,GAAAtf,EAAerW,KAAA8G,QAAAa,GAAAiuB,GAAAvf,IAAA,GAA0J,QAAAwf,IAAAxf,GAAe,GAAA1O,GAAA0O,KAAApV,IAAgB,OAAA0G,GAAA,GAAA4lB,IAAA5lB,EAAAwjB,UAAAwK,GAAAj7B,QAAA2b,EAAAvP,SAAA,KActQ,QAAAgvB,IAAAzf,GAAe,GAAA1O,GAAA0O,EAAA0f,GAAY,aAAApuB,EAAA,SAAA4lB,IAAA,uBAA8D,oBAAA5lB,IAAA,gBAAAA,OAAAjN,OAAA,SAAA6yB,IAAA,uBAA2FvtB,MAAAqf,EAAA1X,EAAS3H,KAAAhD,EAAAgD,KAAAqW,EAAA,KAAmBrW,KAAAyD,GAAA,CAAU,IAAAzG,GAAAqZ,EAAA2f,GAAY,IAAAh5B,GAAA,gBAAAA,GAAA,CAA2B2K,EAAA3K,EAAAi5B,GAAQ,IAAAh5B,GAAAD,EAAAk5B,GAAoB,IAARl5B,IAAAm5B,IAAQ,gBAAAxuB,MAAAjN,OAAA,CAA2C,GAATsF,KAAAqW,EAAA1O,MAAS,KAAA1K,GAAA,iBAAAA,GAAA,SAAAswB,IAAA,iBAAA2I,GAAA,8CAA0I,IAAXl2B,KAAAyD,IAAAxG,MAAW,KAAAD,IAAA,gBACz6BA,IAAA,gBAAAA,OAAAtC,QAAA,SAAA6yB,IAAA,iBAAA4I,GAAA,uDAAkIn2B,MAAAhD,KAAA,SAAe,CAAK,YAAA2K,EAAA,SAAA4lB,IAAA,iBAAA0I,GAAA,uDAAkH,aAAAh5B,OAAA,KAAAD,EAAA,SAAAuwB,IAAA,iCAA4F,aAAAvwB,EAAA,SAAAuwB,IAAA,iBAAAyI,GAAA,sDAAkI,IAAZh2B,KAAA2H,EAAA,MAAYA,EAAA0O,EAAA+f,MAAA,gBACtezuB,IAAA,oBAAAA,IAAA0uB,MAAA1uB,EAAAjN,OAAAsF,KAAA2H,QAAgE,aAAAA,EAAA,SAAA4lB,IAAA,iBAAA8I,GAAA,4DAAmH,aAAA1uB,EAAA,SAAA4lB,IAAA,iBAAA6I,GAAA,sDAA8H,cAAR/f,IAAAigB,MAAQ,iBAAAjgB,GAAA,SAAAkX,IAAA,iBAAA+I,GAAA,8CAA+H,KAAAt2B,KAAAiL,IAAAoL,KAAArW,KAAA2H,IAAA3H,KAAAqW,EAAA,SAAAkX,IAAA,iBAAA+I,GAAA,mEACpT,QAAAC,IAAAlgB,GAAe,GAAA1O,KAASA,GAAA6uB,YAAAngB,EAAAgJ,EAAkB1X,EAAA8uB,mBAAApgB,EAAApL,GAAyBtD,EAAA+uB,mBAAArgB,OAAA1O,EAAAgvB,sBAAAtgB,EAAArZ,EAAA2K,EAAAivB,kBAAAvgB,EAAA5S,GAAgFkE,EAAAkvB,YAAAxgB,EAAA1O,CAAkB,QAAA3K,KAAA2K,GAAA,OAAAA,EAAA3K,UAAA2K,GAAA3K,EAAwC,OAAA2K,GAAU,QAAAmvB,IAAAzgB,GAAerW,KAAA2H,EAAA0O,EAAA0gB,IAAaC,KAAKh3B,KAAAqW,IAAA4gB,aAAA5gB,EAAA9c,UAAA8c,EAAA9c,SAAA29B,kBAAA,KAAoE,QAAAC,IAAA9gB,GAA8B,GAAfA,IAAAtC,MAAA,KAAe,GAAAsC,EAAA3b,OAAA,WAA2B2b,KAAA,EAAO,QAAA1O,IAAA,EAAA0O,EAAA3b,OAAA,KAAAsC,EAAA,EAA+BA,EAAA2K,EAAI3K,IAAAqZ,GAAA,GAAW,KAAI,GAAApZ,GAAAkN,KAAAC,MAAA6e,GAAA5S,GAAwB,IAAApZ,EAAA85B,KAAA95B,EAAAm6B,KAAAn6B,EAAAo6B,KAAAp6B,EAAAq6B,IAAA,UAAAR,IAAA75B,GAA+C,MAAA9B,IAAU,YAAma,QAAAo8B,IAAAlhB,GAAe,OAAA1O,KAAA6vB,IAAA,GAAAA,GAAA7vB,GAAA8vB,IAAAphB,EAAA,MAAAmhB,IAAA7vB,EAA4C,aAAa,QAAA+vB,IAAArhB,GAAe,GAAA1O,KAASA,GAAA,gBAAAgwB,GAAqBhwB,EAAA,cAAAiwB,GAAmBjwB,EAAA,cAAAkwB,GAAmBlwB,EAAA,eAAAmwB,EAAoB,IAAA96B,GAAAqZ,KAAA0hB,GAAe,KAAI,GAAA/6B,EAAA,MAAA2K,GAAA3K,GAAA,GAAA2K,GAAA3K,GAAAqZ,GAAA,GAAA2hB,IAAA3hB,EAAuC,aAAAA,EAAA4hB,IAAA,UAAAC,IAAA7hB,GAA+C,MAAApZ,IAAU,YAA6C,QAAAi7B,IAAA7hB,GAAe,GAAA1O,GAAA0O,EAAA0hB,GAAY,KAAApwB,GAAA0O,EAAA4hB,IAAA,CAAc,GAAAj7B,GAAAm6B,GAAA9gB,EAAA4hB,IAAgBj7B,MAAAqZ,IAAA1O,EAAA3K,EAAAqZ,GAAgB,IAAA1O,EAAA,KAAAhM,OAAA,gCAAmD0a,OAAA8hB,UAAgBvD,GAAA50B,KAAA,aAAA2H,GAAuBitB,GAAA50B,KAAA,YAAAqW,GAChhD,QAAA2hB,IAAA3hB,GAAe6hB,GAAAh+B,KAAA8F,KAAAqW,GAAgBA,EAAAyd,GAAAzd,EAAA+hB,aAAA,MAA0BxD,GAAA50B,KAAA,UAAAk1B,GAAA7e,QAAqC,QAAAshB,IAAAthB,GAA+B,GAAhB2hB,GAAA99B,KAAA8F,KAAAqW,GAAgB,gBAAArW,KAAAq4B,WAAA,KAAA18B,OAAA,wBAAiF,QAAAk8B,IAAAxhB,GAA+B,GAAhB2hB,GAAA99B,KAAA8F,KAAAqW,GAAgB,cAAArW,KAAAq4B,WAAA,KAAA18B,OAAA,uBAAqEi5B,IAAA50B,KAAA,WAAAA,KAAAs4B,SAAAt4B,KAAAs4B,QAAAC,OAAA,MAAmE,QAAAX,IAAAvhB,GAA+B,GAAhB2hB,GAAA99B,KAAA8F,KAAAqW,GAAgB,cAAArW,KAAAq4B,WAAA,KAAA18B,OAAA,wBACpZ,QAAAm8B,IAAAzhB,GAA+B,GAAhB2hB,GAAA99B,KAAA8F,KAAAqW,GAAgB,eAAArW,KAAAq4B,WAAA,KAAA18B,OAAA,uBAAsEi5B,IAAA50B,KAAA,WAAAqW,EAAAmiB,YAAA,MAA+C,QAAAC,IAAApiB,EAAA1O,GAAiB,MAAA0O,GAAA9T,KAAA,SAAA8T,GAA0B,GAAAA,EAAAvM,IAAA,CAAS,GAAA9M,GAAAm6B,GAAA9gB,EAAAvM,IAAe,KAAA9M,GAAA2K,GAAA3K,EAAA2K,EAAA,SAAA4lB,IAAA,gBAA2C,OAAAlX,GAAS,SAAAkX,IAAA,mBAA8BtyB,EAAA,SAAAob,GAAgB,KAAAA,MAAApV,MAAAoV,EAAApV,MAAA00B,GAAA,oBAAApI,IAAA,iBAAAlX,IACzT,QAAAqiB,IAAAriB,EAAA1O,GAAiB,GAAAA,EAAAgxB,SAAAhxB,EAAAixB,YAAAjxB,EAAAgxB,SAAA/D,GAAA50B,KAAA,UAAA2H,EAAAgxB,SAAAhxB,EAAAixB,aAAAhE,GAAA50B,KAAA,cAAA2H,EAAAixB,iBAAsH,KAAAjxB,EAAAkxB,aAAAlxB,EAAAmxB,iBAAgH,SAAAvL,IAAA,oDAAhHqH,IAAA50B,KAAA,cAAA2H,EAAAkxB,YAAAjE,GAAA50B,KAAA,SAAA2H,EAAAmxB,kBAAsLlE,GAAA50B,KAAA,aAAAqW,GAC3P,QAAA0iB,IAAA1iB,GAAe,GAAA1O,KAA6J,OAApJ0O,GAAAsiB,UAAAhxB,EAAAqxB,SAAA3iB,EAAAsiB,SAAkCtiB,EAAAuiB,cAAAjxB,EAAAsxB,aAAA5iB,EAAAuiB,aAA8CviB,EAAA6iB,SAAAvxB,EAAAwxB,mBAAA9iB,EAAA6iB,QAA0CvxB,EAAA0wB,WAAAhiB,EAAAgiB,YAAiCe,SAAA5M,MAAA7kB,GAAA0xB,WAAA,oBAC5B,QAAAC,IAAAjjB,EAAA1O,GAAiB3H,KAAAvD,GAAAkL,MAAcmtB,GAAA90B,MAASq4B,WAAAhiB,EAAAkjB,iBAAA,IAAkCv5B,KAAA6d,MAAW7d,KAAAyc,IAAA8a,GAAAlhB,QAAkB6F,IAAA,KAAWlc,KAAAwc,GAAA,KAAoE,QAAAkM,IAAArS,GAAcijB,GAAAp/B,KAAA8F,KAAAqW,EAAAmjB,IAAmBx5B,KAAAqW,KACnG,QAAAojB,MAAc/Q,GAAAxuB,KAAA8F,KAAA,gBAC3V,QAAA05B,IAAArjB,GAAe,IAAAA,EAAA,SAAAkX,IAAA,oFAAuG,IAAA5lB,GAAA0O,CAAgC,OAAxB6D,GAAA7D,KAAA1O,EAAA0O,EAAAuiB,cAAwB,GAAAa,KAAAE,WAAA,KAAAhyB,GAAkC,QAAAiyB,MAAclR,GAAAxuB,KAAA8F,KAAA,cAAmE,QAAA65B,IAAAxjB,GAAe,IAAAA,EAAA,SAAAkX,IAAA,oFAAuG,IAAA5lB,GAAA0O,CAAgC,OAAxB6D,GAAA7D,KAAA1O,EAAA0O,EAAAuiB,cAAwB,GAAAgB,KAAAD,WAAA,KAAAhyB,GAC/Z,QAAAmyB,MAAcpR,GAAAxuB,KAAA8F,KAAA,cAA0BA,KAAA8a,GAAA,WAA4D,QAAAif,IAAA1jB,EAAA1O,GAAiB,GAAA3K,GAAAqZ,CAA4C,OAApC6D,GAAA7D,KAAArZ,EAAAqZ,EAAAsiB,QAAAhxB,EAAA0O,EAAAuiB,cAAoC,GAAAkB,KAAAH,WAAA38B,EAAA2K,GAA+B,QAAAqyB,MAAcV,GAAAp/B,KAAA8F,KAAA,cAAAi6B,IAC9M,QAAAC,IAAA7jB,EAAA1O,GAAiB,GAAA3K,GAAAqZ,CAAoD,IAA5C6D,EAAAld,QAAU67B,WAAAxiB,EAAAyiB,iBAAAnxB,KAAkC3K,EAAA67B,aAAA77B,EAAA87B,iBAAA,SAAAvL,IAAA,gGAAmJ,WAAAmL,IAAA,cAAA17B,GAA+B,QAAAm9B,IAAA9jB,EAAA1O,GAAiB3H,KAAAqW,IAASrW,KAAAiL,EAAAtD,EAASitB,GAAA50B,KAAA,yBACpK,QAAAo6B,MAActF,GAAA90B,MAASq4B,WAAA,WAAAkB,iBAAA,IAA2E,QAAAc,IAAAhkB,GAAe,KAAAA,EAAA8F,IAAA9F,EAAAikB,IAAAjkB,EAAA2S,IAAA3S,EAAAkkB,GAAA,SAAAhN,IAAA,iBAA0DvtB,MAAAqW,IAASue,GAAA50B,KAAA,sBACe,QAAAw6B,IAAAnkB,GAAe,MAAAA,KAAA2S,IAAA3S,IAAAkkB,GAAsBE,eAAApkB,IAAA2S,GAAA0R,YAAArkB,IAAAkkB,IAA0CI,YAAAtkB,IAAA8F,GAAAlb,KAAAoV,IAAAikB,IACxY,QAAAM,IAAAvkB,GAAe,IAAIrW,KAAAqW,KAAA9c,GAAAshC,OAA0B,MAAAlzB,GAAS,SAAA4lB,IAAA,sOAAmPuH,GAAA90B,MAASq4B,WAAA,QAAAkB,iBAAA,IAEnN,QAAAuB,IAAAzkB,EAAA1O,GAAiB,IAAA0O,EAAA,SAAAkX,IAAA,0BAA6C,KAAA5lB,EAAA,SAAA4lB,IAAA,4BAA+C,WAAA8M,KAAele,GAAA9F,EAAAikB,GAAA3yB,IAC3N,QAAAozB,IAAA1kB,GAAe,GAAAA,EAAAokB,gBAAApkB,EAAAqkB,YAAA,UAAAL,KAAkDrR,GAAA3S,EAAAokB,eAAAF,EAAAlkB,EAAAqkB,aAAsC,IAAA/yB,GAAA0O,KAAAgiB,UAAsB,KAAA1wB,GAAA,aAAAA,EAAA,WAAkC,IAAA3K,GAAAqZ,KAAA2kB,iBAAA/9B,EAAAoZ,KAAAyiB,gBAAoDziB,QAAA4kB,YAAoB,KAAI,OAAAtzB,GAAU,uBAAAoyB,IAAA1jB,EAAArZ,EAAiC,0BAAA08B,IAAA18B,EAAiC,wBAAA68B,IAAA78B,EAA+B,yBAAAk9B,IAAAl9B,EAAAC,EAAkC,mBAAAyrB,IAAA/gB,GAAAgyB,WAAAtjB,EAAArZ,IAA0C,MAAA7B,GAAS,aAC3a,QAAA+/B,IAAA7kB,GAAe,IAAAA,EAAAkjB,gBAAA,SAAAhM,IAAA,0BAA8D,QAAA4N,IAAA9kB,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAA4F,GAArE6E,KAAA2H,EAAA0O,EAASrW,KAAAhD,EAAA2K,GAAA,KAAe3H,KAAAiL,EAAAjO,GAAA,KAAegD,KAAAyD,EAAAxG,GAAA,KAAe+C,KAAAqW,EAAAlb,GAAA,MAAe6E,KAAAiL,IAAAjL,KAAAqW,EAA6H,SAAAkX,IAAA,qBAA1G,IAAAvtB,KAAAiL,GAAAjL,KAAAqW,EAAA,SAAAkX,IAAA,qBAAoD,IAAAvtB,KAAAiL,IAAAjL,KAAAyD,EAAA,SAAA8pB,IAAA,sBAAyN,QAAA6N,IAAA/kB,GAAuB,MAARA,SAAQA,EAAA/Z,KAAA,GAAA6+B,IAAA9kB,EAAA/Z,KAAA+Z,EAAAglB,QAAAhlB,EAAAilB,YAAAjlB,EAAAklB,UAAAllB,EAAArY,OAAA63B,GAAAxf,EAAArY,QAAA,KAA4F,QAAAw9B,IAAAnlB,GAAe,GAAA1O,GAAA,sBAAA3K,MAAA,GAAAC,EAAAgvB,GAAA5V,EAA6CA,GAAApZ,EAAA0K,EAAM1K,IAAAD,EAAM,oBAAAC,EAAAD,EAAA2d,EAAA,qMAAAtE,GAAA,QAAApZ,GAAA,SAAAA,EAAAD,EAAA2d,EAAA,qKAAAtE,GAAA1O,EAAA,8CACpoB4lB,GAAArzB,KAAA8F,KAAA2H,EAAA3K,GAAyB,QAAAy+B,IAAAplB,EAAA1O,EAAA3K,GAAmBuwB,GAAArzB,KAAA8F,KAAAqW,EAAArZ,GAAiBqZ,EAAA1O,MAAQ0O,EAAAyI,IAAA8V,GAAA50B,KAAA,QAAAqW,EAAAyI,IAA2BzI,EAAAkkB,GAAA3F,GAAA50B,KAAA,cAAAqW,EAAAkkB,GAA+BlkB,EAAAsjB,YAAA/E,GAAA50B,KAAA,aAAAqW,EAAAsjB,YAC/H,QAAA+B,IAAArlB,GAAe,GAAAA,EAAApV,KAAA,CAAW,GAAA0G,GAAA0O,EAAApV,MAAA,EAAiB,IAAA0G,EAAAgJ,QAAAglB,MAAAhuB,IAAAwjB,UAAAwK,GAAAj7B,QAA6C,IAAAsC,IAAO28B,WAAAoB,GAAA1kB,GAAkB,IAAAA,EAAAslB,MAAA3+B,EAAA8hB,GAAAzI,EAAAslB,UAAwB,KAAAtlB,EAAAqkB,YAAwC,UAAAnN,IAAA5lB,EAAA0O,EAAAvP,aAAA,GAAxC9J,GAAAu9B,EAAAlkB,EAAAqkB,YAA+E,UAAAe,IAAA9zB,EAAA3K,EAAAqZ,EAAAvP,SAA6B,YAAa,QAAA80B,IAAAvlB,GAAerW,KAAAiL,EAAAoL,EACjR,QAAAwlB,IAAAxlB,EAAA1O,EAAA3K,GAAmB,GAAAC,GAAA,QAAA21B,IAAuG,MAArF31B,EAAAuU,GAAA0b,gBAAAjwB,GAAA1D,GAAAsH,SAAAi7B,MAAAviC,GAAAsH,SAAAi7B,KAAA5O,gBAAqF,SAAAK,IAAA,2EAA8FvtB,MAAA2H,EAAA0O,EAASA,EAAA1O,MAAQ3H,KAAAhG,EAAAqc,EAAA0lB,qBAAA,8CAA4E/7B,KAAA/F,EAAAoc,EAAA2lB,oBAAAC,GAAgCj8B,KAAAhD,EAAAwf,EAAAnG,EAAA6lB,oBAAAC,IAAoCn8B,KAAAyD,EAAA4S,EAAA+lB,kBAAA,8DAAyFp8B,KAAAqf,EAAAhJ,EAAAgmB,iBAAAC,GAA6Bt8B,KAAAqW,EAC/emG,EAAAnG,EAAAkmB,iBAAAC,IAA0Bx/B,IAAAgD,KAAAqW,EAAA,oBAAArZ,EAAAgD,KAAAhD,EAAA,oBAAAA,GAA+DgD,KAAAiL,EAAA,GAAA8kB,IAAc/vB,KAAA5C,EAAA,GAAAw+B,IAAA3+B,GAAyK,QAAAw/B,IAAApmB,EAAA1O,GAAiBA,EAAA0O,IAAA,qBAAA1O,QAAA0O,KAAA,qBAA6D,QAAAqmB,IAAArmB,EAAA1O,GAAiBA,GAAA0O,IAAA,oBAAA1O,EAAA0O,EAAArZ,EAAA,oBAAA2K,UAAA0O,KAAA,0BAAAA,GAAArZ,EAAA,qBAC/W,QAAA2/B,IAAAtmB,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,EAAAxH,GAA2B0wB,MAAAxD,KAAAta,EAAAiE,EAAAjE,EAAAtZ,EAAAsZ,IAAAumB,QAAA,GAAAzd,GAAA,SAAA9I,EAAA1O,GAAmDk1B,GAAAxmB,EAAA1O,MAAQ0O,EAAAiE,EAAAjE,EAAAqE,EAAArE,MAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,EAAAxH,IAAAzG,KAAA,MAEiC,QAAA6/B,IAAAxmB,EAAA1O,KAAiBnO,OAAAsjC,UAAoBC,YAAYC,QAAA3mB,KAAmB7E,GAAAyrB,IAAA,aAAiBzjC,OAAAsjC,UAAiBC,YAAYC,QAAA3mB,IAAA1O,EAAAhM,MAAA,sBAAqEguB,GAAA0F,GAAzB7N,GAAA0b,IAAa3hC,OAAA0hC,MAAY,WAAoBt1B,EAAAhM,MAAA,wBAElU,QAAAwhC,IAAA9mB,EAAA1O,GAAiB,UAAAwX,GAAA,SAAAniB,EAAAC,GAA2B,iBAAA0K,EAAAy1B,YAAAz1B,EAAA01B,eAAA,sBAAA11B,EAAAy1B,YAAAz1B,EAAA1G,KAAA07B,GAAAtmB,IAAArc,EAAA,QAAA8a,mBAAAuB,EAAA1O,GAAA,SAAA0O,GAAgJA,IAAArY,MAAAf,EAAAqgC,GAAAjnB,MAAA4iB,cAAA5iB,EAAAgnB,cAAArgC,EAAAqZ,GAAApZ,EAAA,GAAAswB,IAAA,mBAAAtwB,EAAA,GAAAswB,IAAA,4BAAsH,OAAAf,MAAA7kB,GAAA0O,EAAArZ,EAAAqZ,EAAApc,EAAAuD,OAAAP,EAAA,GAAAswB,IAAA,qBAClT,QAAAgQ,IAAAlnB,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAAyB,GAAAxH,GAAAwoB,GAAA5V,EAAA5S,EAAAkE,EAAgBokB,IAAAtoB,EAAA,MAAA4S,EAAA1O,GAAesD,GAAA8gB,GAAAtoB,EAAA,KAAAuzB,QAA6B,IAAA/8B,GAAA,OAAA+C,CAAe,IAAA/C,EAAA,OAAAwD,KAAAR,KAAAlC,eAAA0C,IAAAsuB,GAAAtoB,EAAAhG,EAAAR,EAAAQ,GAAqD,WAAA0hB,GAAA,SAAAxX,EAAAsD,GAA2B0xB,GAAAtmB,EAAA5S,KAAA,SAAA4S,GAA8BA,IAAArY,MAAAiN,EAAAqyB,GAAAjnB,EAAAlb,QAAsBwM,EAAA0O,GAAApL,EAAA,GAAAsiB,IAAA,4BAA2CvwB,EAAA/C,MAAA,GAAAkpB,GAAA0Q,GAAA52B,IAAAoZ,MAAAgJ,EAAA7hB,SAAuC,QAAAggC,IAAAnnB,GAAe,IAAAonB,GAAAjrB,KAAA6D,EAAAslB,OAAA,SAAApO,IAAA,iBAAmD,QAAAmQ,IAAArnB,GAAe,SAAAA,IAAAmnB,GAAAnnB,GAC3Y,QAAAsnB,IAAAtnB,EAAA1O,GAAiB,MAAAi2B,IAAAvnB,EAAAwnB,IAAeC,WAAAn2B,EAAAo2B,YAAArK,KAAAnD,KAAA,qBAAsDhuB,KAAA,SAAA8T,GAAmB,MAAAA,GAAA2nB,mBAA4B,QAAAC,IAAA5nB,GAAe,MAAAunB,IAAAvnB,EAAA6nB,OAAgB37B,KAAA,SAAA8T,GAAmB,MAAAA,GAAA8nB,wBAAiC,QAAAC,IAAA/nB,GAAe,IAAAA,EAAAvM,IAAA,SAAAyjB,IAAA,kBACvO,QAAA8Q,IAAAhoB,GAAe,GAAAA,EAAAqkB,aAAArkB,EAAAokB,gBAAoC,IAAApkB,EAAAqkB,cAAArkB,EAAAokB,eAAA,SAAAlN,IAAA,sBAAoE,CAAK,IAAAlX,EAAAskB,YAAA,SAAApN,IAAA,0BAAyD,KAAAlX,EAAApV,KAAA,SAAAssB,IAAA,8BACiK,QAAA+Q,IAAAjoB,EAAA1O,GAAiB,MAAAi2B,IAAAvnB,EAAAkoB,GAAA52B,GAAuD,QAAA62B,IAAAnoB,EAAA1O,EAAA3K,GAAmB,MAAA4gC,IAAAvnB,EAAAooB,IAAe9F,QAAAhxB,EAAA+2B,eAAA1hC,IAChc,QAAA2hC,IAAAtoB,GAAe,IAAAA,EAAAgjB,aAAAhjB,EAAAklB,YAAAllB,EAAA+iB,SAAA,SAAA7L,IAAA,kBAA2E,QAAAqR,IAAAvoB,GAAe,GAAA1O,GAAA,IAAwS,IAA7R0O,EAAAwoB,kBAAAxoB,EAAApV,KAAA,2CAAA0G,EAAA+zB,GAAArlB,IAAA,oCAAAA,EAAAyoB,cAAAzoB,EAAApV,KAAA,4BAAA0G,EAAA+zB,GAAArlB,IAAA,gBAAAA,EAAAyoB,cAAAzoB,EAAApV,KAAA,uBAAA0G,EAAA+zB,GAAArlB,MAAAyoB,eAAAn3B,EAAAo3B,GAAA1oB,EAAAyoB,eAA6Rn3B,EAAA,KAAAA,EAAa,KAAA0O,EAAAvM,IAAA,SAAAyjB,IAAA,kBAC9Z,QAAAyR,IAAA3oB,EAAA1O,GAA0C,MAAzBA,GAAAs3B,qBAAA,EAAyBrB,GAAAvnB,EAAA6oB,GAAAv3B,GAAiB,QAAAw3B,IAAA9oB,EAAA1O,GAA0C,MAAzBA,GAAAs3B,qBAAA,EAAyBrB,GAAAvnB,EAAA+oB,GAAAz3B,GAAiB,QAAA03B,IAAAhpB,EAAA1O,GAA0D,MAAzCA,GAAAs3B,qBAAA,EAAyBt3B,EAAA23B,YAAA,EAAgB1B,GAAAvnB,EAAAkpB,GAAA53B,GAAiB,QAAA63B,IAAAnpB,GAAe,IAAAA,EAAAopB,QAAA,SAAAlS,IAAA,uBAMhN,QAAAqQ,IAAAvnB,EAAA1O,EAAA3K,GAAkB,IAAAi4B,GAAAj4B,EAAA2K,EAAAoS,IAAA,MAAA+F,IAAA,GAAAyN,IAAA,kBAAiD,IAAApyB,GAAA8B,EAAA0K,EAAA+W,IAAA,MAAqB,OAAAmB,IAAA7iB,GAAAuF,KAAAoF,EAAA+Y,GAAAne,KAAA,WAAoE,MAA9BoF,GAAA+3B,IAAA1iC,EAAA2iC,mBAAA,GAA8BpC,GAAAlnB,EAAA1O,EAAAi4B,SAAA3iC,EAAAD,EAAA2K,EAAAoY,GAAApY,EAAA6V,KAAA,KAA0Cjb,KAAA,SAAA8T,GAAmB,MAAAlb,GAAAkb,IAAW9T,KAAAoF,EAAAmC,GAAAvH,KAAA,WAA4B,IAAAoF,EAAAk4B,GAAA,MAAA1kC,EAAkB,MAAAwM,EAAAk4B,KAAA1kC,IAAA,SAAAoyB,IAAA,iBAA8C,OAAApyB,GAAAwM,EAAAk4B,MAAiB,QAAAd,IAAA1oB,GAAe,MAAAinB,KAAWt/B,OAAOiF,SAAS6D,QAAAuP,IAAUpV,KAAA,IAAA6F,QAAAuP,KACrY,QAAAinB,IAAAjnB,EAAA1O,GAAiB,GAAA3K,IAAAqZ,EAAArY,OAAAqY,EAAArY,MAAAiF,QAAAoT,EAAArY,MAAAiF,OAAA,QAAqDoK,QAAA,GAAapQ,GAAO6iC,WAAA,kBAAAC,iBAAA,qBAAoE,IAAA/iC,EAAAC,EAAAD,GAAA,GAAAuwB,IAAAtwB,EAAAD,IAAA,WAAAA,EAAoCA,GAAAqZ,EAAArY,OAAAqY,EAAArY,MAAA8I,SAAA,GAA+B7J,GAAG+iC,qBAAA,uBAAAC,oBAAA,wBAAAC,qBAAA,iBAAAC,mBAAA,gBAAAC,qBAAA,iBAAAC,cAAA,gBAAAC,iBAAA,iBAAAC,cAAA,gBACpOC,iBAAA,iBAAAC,aAAA,uBAAAC,wBAAA,wBAAAC,qBAAA,qBAAAC,iCAAA,4BAAAC,wBAAA,0BAAAC,wBAAA,0BAAAC,eAAA,iBAAAC,gBAAA,iBAAAC,iBAAA,sBAAAC,iBAAA,sBAAAC,iBAAA,iBAAAC,+BAAA,wBACAC,iBAAA,qBAAAC,cAAA,qBAAAC,eAAA,qBAAAC,iBAAA,mBAAAC,2BAAA,6BAAAC,eAAA,iBAAAC,4BAAA,oBAAAC,cAAA,gBAAAC,sBAAA,wBAAAC,eAAA,iBAAAC,qBAAA,uBAAAC,uBAAA,yBAAAC,aAAA,4BACAC,qBAAA,uBAAAC,qBAAA,0BAAAC,wBAAA,qBAAAC,uBAAA,yBAAAC,aAAA,4BAAAC,qBAAA,uBAAAC,qBAAA,0BAAAC,eAAA,iBAAAC,gBAAA,eAAAC,qBAAA,uBAAAC,6BAAA,2BAAAC,sBAAA,wBACAC,oBAAA,4BAAAC,wBAAA,0BAAAC,kBAAA,qBAAyIvmB,EAAAxf,EAAA0K,OAAYA,KAAA3K,EAAAsW,MAAA,2BAAA3L,EAAAjN,OAAAiN,EAAA,SAA6D,QAAAxM,KAAA8B,GAAA,OAAAD,EAAA2T,QAAAxV,GAAA,UAAAoyB,IAAAtwB,EAAA9B,GAAAwM,EAAyE,QAAjBA,GAAA0O,IAAA1O,EAAAisB,GAAAvd,IAAiB,GAAAkX,IAAA,iBAAA5lB,GAC3R,QAAAs7B,IAAA5sB,GAAe,OAAA1O,KAAAu7B,IAAA,GAAAA,GAAAv7B,GAAAwG,KAAAkI,EAAA,MAAAA,GAAA6sB,GAAAv7B,IAAgDy0B,iBAAA/lB,EAAAqG,GAAAqf,oBAAA1lB,EAAA8sB,GAAgD,aAAqD,QAAAC,IAAA/sB,GAAerW,KAAA2H,EAAA0O,EAASrW,KAAAqW,EAAA,KAAYrW,KAAA4c,GAAAymB,GAAArjC,MACxM,QAAAqjC,IAAAhtB,GAAe,MAAAitB,MAAA/gC,KAAA,WAA4B,UAAA4c,GAAA,SAAAxX,EAAA3K,GAA2Bk2B,GAAA,6BAAA/U,MAAqColB,MAAApnC,SAAAqnC,KAAAC,IAAAptB,EAAA1O,EAAA+7B,sBAAAxQ,GAAA,4CAAAtD,YAA4G5R,OAAO2lB,SAAA,WAAArS,IAAA,SAAAF,MAAA,MAAAC,OAAA,QAA2DuS,WAAA,GAAc,SAAA3mC,GAAa,QAAA9B,KAAaK,aAAAyP,GAAgBtD,IAAI0O,IAAApZ,EAAMoZ,IAAAwtB,SAAaC,gBAAA,GAAoB,IAAA74B,GAAApO,WAAA,WAA4BG,EAAArB,MAAA,mBAA0BooC,GAAAvmC,MAAWP,GAAA+mC,KAAA7oC,GAAAoH,KAAApH,EAAA,WAA4B6B,EAAArB,MAAA,0BACzd,QAAAsoC,IAAA5tB,EAAA1O,GAAiB,MAAA0O,GAAAuG,GAAAra,KAAA,WAA4B,UAAA4c,GAAA,SAAAniB,GAAyBqZ,IAAAiY,KAAA3mB,EAAArL,KAAAqL,EAAA3K,EAAAk2B,GAAA,iDAAuE,QAAAgR,IAAA7tB,EAAA1O,GAAiB0O,EAAAuG,GAAAra,KAAA,WAAqB8T,IAAA8tB,SAAA,YAAAx8B,EAAAurB,GAAA,+CACnL,QAAAoQ,MAAc,MAAAc,SAAA,GAAAjlB,GAAA,SAAA9I,EAAA1O,GAAqC,GAAAwsB,KAAA,CAAS,GAAAn3B,GAAA,WAAiBg3B,KAAKd,GAAA,6BAA+BlxB,SAAAqU,EAAAgY,UAAA,WAAgC2F,KAAKrsB,EAAAhM,MAAA,mBAA0BF,QAAA4oC,GAAA7mC,QAAqB,IAAA01B,GAAA,uBAAA7c,QAAgC,IAAA6c,GAAA,aAAAl2B,QAA2B,CAAK,GAAAC,GAAA,cAAAqT,KAAA8D,MAAA,IAAA9D,KAAAC,SAA6DiB,IAAAvU,GAAA,WAAgBi2B,GAAA,aAAAl2B,IAAA2K,EAAAhM,MAAA,mBAA8CsB,EAAAukB,GAAA8iB,IAAS/oC,OAAA0B,IAAW4iB,GAAAwP,GAAApyB,IAAAhC,EAAA,WAAsB0M,EAAAhM,MAAA,yBAA6BgM,GAAAhM,MAAA,oBAA+BV,EAAA,SAAAob,GACje,KADkf+tB,IACvf,KAAK/tB,KAAY,QAAAkuB,IAAAluB,EAAA1O,EAAA3K,GAAmBgD,KAAAhG,EAAAqc,EAASrW,KAAAyD,EAAAkE,EAAS3H,KAAAqf,EAAAriB,EAASgD,KAAAiL,EAAA,KAAYjL,KAAAqW,EAAA6V,GAAAlsB,KAAAhG,EAAA,mBAAoC+xB,GAAA/rB,KAAAqW,EAAA,SAAArW,KAAAyD,GAA0BsoB,GAAA/rB,KAAAqW,EAAA,UAAArW,KAAAqf,GAA2Brf,KAAA2H,EAAA,KAAY3H,KAAAhD,KAAmO,QAAAwnC,IAAAnuB,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB6E,KAAAjD,EAAAsZ,EAASrW,KAAA0a,EAAA/S,EAAS3H,KAAAhD,IAASgD,KAAA/F,EAAAgD,EAAS+C,KAAAhG,EAAAgG,KAAAyD,EAAAzD,KAAAqf,EAAA,KAA0Brf,KAAAqW,EAAAlb,EAAS6E,KAAAiL,EAAA,KAExH,QAAAw5B,IAAApuB,GAAe,IAAI,MAAA9c,IAAAiF,IAAA6X,GAAAwkB,OAAA9e,KAAmC,MAAApU,GAAS,UACxb,QAAA+8B,IAAAruB,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB6E,KAAA0a,EAAArE,EAASrW,KAAAiL,EAAAtD,EAAS3H,KAAA2H,EAAA3K,EAASgD,KAAAhD,EAAAC,GAAA,KAAe+C,KAAAqf,EAAAlkB,GAAA,KAAe6E,KAAAjD,EAAAiD,KAAA5C,EAAA4C,KAAAob,EAAA,KAA0Bpb,KAAAyD,KAAUzD,KAAA/F,EAAA+F,KAAAqW,EAAA,KACpH,QAAAsuB,IAAAtuB,GAAe,GAAA1O,GAAA4oB,IAAW,OAAA0N,IAAA5nB,GAAA9T,KAAA,SAAA8T,GAA8BA,EAAA,CAAG,GAAArZ,GAAAivB,GAAAtkB,GAAAxM,EAAA6B,GAAkBA,KAAA2K,CAAM,QAAAsD,GAAA,EAAYA,EAAAoL,EAAA3b,OAAWuQ,IAAA,CAAK,GAAAxH,GAAA4S,EAAApL,GAAWhR,EAAA+C,EAAQS,EAAAtC,CAA6M,IAArM,GAAAsI,EAAAkN,QAAA,uBAAA1W,EAAAgyB,GAAAxoB,GAAAkE,GAAA1N,GAAA,oBAAAwD,EAAA,QAAAA,GAAA,SAAAA,EAAAxD,GAAA,EAAA2qC,GAAApyB,KAAA/O,GAAAxJ,KAAAwJ,OAAAsQ,MAAA,KAAA5K,KAAA,OAAAlP,EAAA4qC,OAAA,UAAAphC,EAAA,IAAAA,EAAA,UAAA+O,KAAAvY,IAAqMA,EAAA,CAAMoc,GAAA,CAAK,MAAAA,IAASA,GAAA,EAAK,IAAAA,EAAA,SAAAmlB,IAAAjL,QACxW,QAAAuU,IAAAzuB,GAAe,MAAAA,GAAApc,EAAAoc,EAAApc,GAAkBoc,EAAApc,EAAAs4B,KAAAhwB,KAAA,WAAyB,IAAA8T,EAAAjZ,EAAA,CAAS,GAAAuK,GAAA0O,EAAArZ,IAAAqZ,EAAAgJ,EAAApiB,EAAAwnC,GAAApuB,EAAA1O,GAAAxM,EAAA,GAAAopC,IAAAluB,EAAAqE,EAAArE,EAAApL,EAAAoL,EAAA1O,EAAgDxM,GAAA8P,EAAAtD,EAAMxM,EAAAwM,EAAA3K,EAAM7B,EAAA6B,EAAAgf,EAAA/e,OAAcoZ,EAAAjZ,EAAAjC,KAAiBkb,EAAArc,EAAA,GAAAopC,IAAA/sB,EAAAjZ,GAAgB2nC,GAAA1uB,KAAQA,EAAApc,GAGtL,QAAA+qC,IAAA3uB,GAA+E,MAAhEA,GAAAtZ,IAAAsZ,EAAA+E,EAAA/E,EAAArZ,EAAA81B,GAAAzc,EAAArZ,EAAAynC,GAAApuB,EAAA1O,IAAA,KAAA0O,EAAAtZ,EAAA,GAAA8+B,IAAAxlB,EAAApL,EAAAg4B,GAAA5sB,EAAAgJ,GAAAhJ,EAAA+E,IAAgE/E,EAAAtZ,EAC/E,QAAAkoC,IAAA5uB,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,EAAAxH,EAAAxJ,EAAAwD,EAAAijB,GAA6F,MAA5DrK,GAAA,GAAAmuB,IAAAnuB,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAoBkb,EAAAgJ,EAAApU,EAAMoL,EAAA5S,IAAM4S,EAAArc,EAAAC,EAAMoc,EAAA1O,EAAA6U,EAAA/e,GAAA,MAAgB4Y,EAAApL,EAAAyV,EAAMrK,KAAoB,QAAA0uB,IAAA1uB,GAAe,IAAAA,EAAArc,EAAA,KAAA2B,OAAA,kCAAuDuoC,IAAA7tB,EAAArc,EAAA,SAAA2N,GAAmB,GAAA3K,KAAS,IAAA2K,KAAAu9B,UAAA,CAAmB,GAAAjoC,IAAA,CAA2B,KAAlB0K,EAAAyzB,GAAAzzB,EAAAu9B,WAAkBloC,EAAA,EAAQA,EAAAqZ,EAAA5S,EAAA/I,OAAasC,IAAAC,EAAAoZ,EAAA5S,EAAAzG,GAAA2K,IAAA1K,CAAiD,OAA9BD,MAAKA,EAAAkyB,OAAAjyB,EAAA,cAAyB4iB,GAAA7iB,GAA6B,MAAjBA,GAAAkyB,OAAA,QAAiBrP,GAAA7iB,KACpW,QAAAmoC,IAAA9uB,GAAe,GAAA1O,IAAOrL,KAAA,oBAA0B,OAAAwoC,IAAAzuB,GAAA9T,KAAA,WAA6B,MAAA0hC,IAAA5tB,EAAArc,EAAA2N,KAAiBpF,KAAA,SAAA8T,GAAmB,GAAAA,KAAA3b,YAAA,KAAA2b,EAAA,GAAA+uB,kBAAA,MAAA/uB,GAAA,GAAA+uB,iBAA0F,MAAAzpC,WAAwG,QAAA0pC,IAAAhvB,GAAmG,GAApFrW,KAAAqW,KAAA9c,GAAAsH,SAAAykC,aAAA/rC,GAAAsH,SAAAykC,YAAAC,cAAoFvlC,KAAAqW,EAAA,SAAAkX,IAAA,0EAA8U,QAAAiY,MAAcxlC,KAAAqW,KAA6L,QAAAovB,IAAApvB,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAAyB,IAAI,GAAAxH,KAAA+N,GAAAgiB,UAAoB,MAAAv5B,GAASwJ,GAAA,EAAK,IAAAA,EAAA,SAAA8pB,IAAA,0BAA6CvtB,MAAA0a,EAAArE,EAASrW,KAAAqf,EAAA1X,EAAS3H,KAAAyD,EAAAzG,EAASgD,KAAA/F,EAAAgD,EAAS+C,KAAAjD,EAAA5B,EAAS6E,KAAAiL,KAAUjL,KAAAhD,KAAUgD,KAAAqW,EAAA,EAASrW,KAAA5C,EAAA6N,GAAAuG,GAAAgiB,UAA6B,QAAAkS,IAAArvB,GAAe,UAAA8I,GAAA,SAAAxX,EAAA3K,GAA2B,GAAAC,GAAAoZ,EAAAjZ,EAAA+gB,KAAA9H,EAAAqE,EAAArE,EAAAtZ,EAAwBE,GAAA3B,QAAA,SAAA+a,GAAsBrZ,EAAArB,MAAA0a,EAAAzE,OAAA+zB,aAA8B1oC,EAAA2oC,gBAAA,SAAAj+B,GAA8BA,IAAAiK,OAAApX,MAAkB,KAAImN,EAAAk+B,kBAAAxvB,EAAAgJ,GAAyBymB,QAAAzvB,EAAA5S,IAAc,MAAAwH,GAASjO,EAAAiO,KAAOhO,EAAA8oC,UAAA,SAAA1vB,GAAwB1O,EAAA0O,EAAAzE,OAAApX,WAC33C,QAAAwrC,IAAA3vB,GAAgC,MAAjBA,GAAArc,IAAAqc,EAAArc,EAAA0rC,GAAArvB,IAAiBA,EAAArc,EAAW,QAAAisC,IAAA5vB,EAAA1O,GAAiB,MAAAA,GAAAu+B,YAAA7vB,EAAAgJ,GAA0B,QAAA8mB,IAAA9vB,EAAA1O,EAAA3K,GAAmB,MAAA2K,GAAAy+B,aAAA/vB,EAAAgJ,GAAAriB,EAAA,wBAAqD,QAAAqpC,IAAAhwB,GAAe,UAAA8I,GAAA,SAAAxX,EAAA3K,GAA2BqZ,EAAA0vB,UAAA,SAAA1vB,GAAwBA,KAAAzE,OAAAjK,EAAA0O,EAAAzE,OAAApX,QAAAmN,KAAoC0O,EAAA/a,QAAA,SAAA+a,GAAsBrZ,EAAArB,MAAA0a,EAAAzE,OAAA+zB,eAI9K,QAAAW,IAAAjwB,GAAe,QAAA1O,KAAsJ,MAAzI0O,GAAA1O,EAAAogB,GAAA,KAAAxlB,KAAA+X,EAAAjE,EAAAgM,GAAAhM,IAAA9T,KAAA,SAAAoF,GAA6C,EAAAA,EAAAjN,QAAAuoB,GAAA5M,EAAArZ,EAAA,SAAAqZ,GAA8BA,EAAA1O,OAAOpF,KAAAoF,GAAA1M,EAAA,SAAAob,GAAwB,cAAAA,EAAAvP,SAAAa,MAA+B0O,EAAA1O,EAAW0O,EAAA1O,GAAA0O,EAAA1O,EAAA4+B,OAAA,cAA8B5+B,IAAK,QAAA6+B,MAAc,IAAAC,KAAA,CAAU,WAAA7T,KAAA,SAAArF,IAAA,yEAAqG,UAAAA,IAAA,2BAAwCvtB,KAAAqW,EAAAqwB,MAAAntC,GAAAsH,SAAAi7B,KAAA1I,aAAiD,QAAAsT,MAAc,IAAI,GAAArwB,GAAA7E,GAAA4hB,aAAAzrB,EAAA0rB,IAAkE,OAAtChd,OAAAid,QAAA3rB,EAAA,KAAA0O,EAAAkd,WAAA5rB,IAAsC0O,EAAS,MAAArZ,GAAS,aAC3nB,QAAAypC,MAAc,GAAApwB,GAAA,QAAAuc,IAAyF,MAAvEvc,EAAAqwB,MAAArwB,GAAA9c,GAAAsH,SAAAi7B,MAAAviC,GAAAsH,SAAAi7B,KAAA1I,cAAuE,QAAe,KAAI,MAAA/c,GAAAid,QAAA,aAAAjd,EAAAkd,WAAA,YAAuD,MAAA5rB,GAAS,UACjF,QAAAg/B,OAA2J,QAAAC,MAAc,IAAAC,KAAA,CAAU,WAAAjU,KAAA,SAAArF,IAAA,2EAAuG,UAAAA,IAAA,2BAAwCvtB,KAAAqW,EAAAywB,MAAAvtC,GAAAsH,SAAAi7B,KAAAiL,eAAmD,QAAAD,MAAc,IAAI,GAAAzwB,GAAA7E,GAAAu1B,eAAAp/B,EAAA0rB,IAAoE,OAAtChd,OAAAid,QAAA3rB,EAAA,KAAA0O,EAAAkd,WAAA5rB,IAAsC0O,EAAS,MAAArZ,GAAS,aACtkB,QAAA6pC,MAAc,GAAAxwB,GAAA,QAAAuc,IAA2F,MAAzEvc,EAAAywB,MAAAzwB,GAAA9c,GAAAsH,SAAAi7B,MAAAviC,GAAAsH,SAAAi7B,KAAAiL,gBAAyE,QAAe,KAAI,MAAA1wB,GAAAid,QAAA,aAAAjd,EAAAkd,WAAA,YAAuD,MAAA5rB,GAAS,UAC1K,QAAAq/B,MAAc,GAAA3wB,KAASA,GAAA4wB,QAAAC,GAAa7wB,EAAA8wB,KAAAC,GAAU/wB,EAAAgxB,YAAAC,GAAiBtnC,KAAAqW,IAAAuc,MAAkH,QAAA2U,IAAAlxB,GAAe,GAAA1O,GAAA,GAAA4lB,IAAA,4BAAAvwB,EAAA,GAAAuwB,IAAA,+BAAgFlX,GAAA,CAAG,IAAApZ,IAAAuqC,IAAA,GAAAA,GAAAvqC,IAAAoZ,EAAA,CAAyB,GAAApZ,IAAA,CAAS,MAAAoZ,GAAQpZ,GAAA,EAAK,IAAAA,GAAA,gBAAAoZ,GAAA,KAAA1O,EAAmC,QAAAirB,MAAY,iCAAAvc,EAAA,KAAArZ,EAA4C,MAAM,wBAAAqZ,EAAA,KAAArZ,EAAkC,MAAM,aAAAm2B,MAAA,SAAA9c,EAAA,KAAArZ,IAC7d,QAAAyqC,IAAApxB,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB6E,KAAAhG,EAAAqc,EAASrW,KAAAyD,EAAAkE,EAAS3H,KAAA6f,EAAA7iB,EAASgD,KAAA0a,EAAAzd,EAAS+C,KAAAob,EAAAjgB,EAAS6E,KAAAqW,KAAUqxB,QAAA,GAAAV,KAAgB3wB,EAAAqxB,EAAK,KAAI,GAAArX,KAAA,CAASsX,QAAA,GAAAlC,IAAA,uEAAuF,IAAAx6B,GAAA08B,OAAS18B,GAAA,GAAAoL,KAAA+N,CAAiBpkB,MAAA/F,EAAAgR,EAAS,MAAAxH,GAASzD,KAAA/F,EAAA,GAAAurC,IAAAxlC,KAAA0a,GAAA,EAAwB,IAAI1a,KAAA5C,EAAA,GAAAiZ,KAAA2G,GAAkB,MAAAvZ,GAASzD,KAAA5C,EAAA,GAAAooC,IAAcxlC,KAAAijB,EAAA,GAAAuiB,IAAcxlC,KAAAqf,EAAA/E,EAAAta,KAAAjD,EAAAiD,MAAsBA,KAAA2H,KAAiB,QAAAigC,MAA6E,MAA/DC,SAAA,GAAAJ,IAAA,iBAAA1T,GAAApG,QAAAgF,MAAAgB,KAAAR,OAA+D0U,GAC1b,QAAAC,IAAAzxB,EAAA1O,GAAiB,OAAAA,GAAU,oBAAA0O,GAAAjZ,CAA0B,kBAAAiZ,GAAA4M,CAAuB,eAAA5M,GAAApc,GAAoB,QAAA8tC,IAAA1xB,EAAA1O,EAAA3K,GAAmB,MAAAqZ,GAAArc,EAAAqc,EAAA5S,EAAAkE,EAAAzK,MAAAF,EAAAqZ,EAAA5S,EAAAzG,EAAA,IAAyG,QAAAgrC,IAAA3xB,EAAA1O,EAAA3K,GAA2D,MAAxCA,GAAA+qC,GAAA1xB,EAAA1O,EAAA3K,GAAY,SAAA2K,EAAAyc,IAAA/N,EAAA1O,EAAA3K,GAAA,MAA4B8qC,GAAAzxB,EAAA1O,EAAAyc,GAAA6jB,EAAAjrC,GACvR,QAAAkrC,IAAA7xB,EAAA1O,EAAA3K,EAAAC,GAAqB0K,EAAAogC,GAAA1xB,EAAA1O,EAAA3K,GAAYqZ,EAAA+E,IAAA/E,EAAA1O,KAAA6J,GAAA4hB,aAAA+U,QAAAxgC,IAAwC2U,EAAAjG,OAAAyxB,GAAAzxB,EAAA,SAAA6N,GAAA7N,EAAAgJ,GAAAhJ,EAAAqE,GAAA2V,OAAAha,EAAA+E,GAAAgtB,GAAA/xB,IAAwDA,IAAA1O,KAAA0O,IAAA1O,OAAoB0O,IAAA1O,GAAA/M,KAAAqC,GAAe,QAAAorC,IAAAhyB,EAAA1O,EAAA3K,GAAmB2K,EAAAogC,GAAA1xB,EAAAiyB,GAAA,SAAA3gC,GAAsB0O,IAAA1O,KAAAmU,EAAAzF,IAAA1O,GAAA,SAAA0O,GAA+B,MAAAA,IAAArZ,IAAY,GAAAqZ,IAAA1O,GAAAjN,cAAA2b,KAAA1O,IAAmC2U,EAAAjG,MAAAkyB,GAAAlyB,GAC3R,QAAA+xB,IAAA/xB,GAAemyB,GAAAnyB,GAAMA,EAAApL,EAAAsD,YAAA,WAA2B,OAAA5G,KAAA0O,KAAA,CAAkB,GAAArZ,GAAAwU,GAAA4hB,aAAA+U,QAAAxgC,GAAA1K,EAAAoZ,EAAA1O,IAAyC3K,IAAAC,IAAAoZ,EAAA1O,KAAA3K,IAAA,GAAAqnB,KAA0B/nB,KAAA,UAAA+E,IAAAsG,EAAAiK,OAAApY,OAAAivC,SAAAxrC,EAAA+P,SAAAhQ,EAAAqZ,GAAA,IAA8DA,EAAAtZ,EAAAC,MAAW,KAAM,QAAAwrC,IAAAnyB,GAAeA,EAAApL,IAAAuD,cAAA6H,EAAApL,GAAAoL,EAAApL,EAAA,MAAmC,QAAAs9B,IAAAlyB,GAAeyxB,GAAAzxB,EAAA,SAAAuD,GAAAvD,EAAAgJ,GAAsBmpB,GAAAnyB,GAEuB,QAAAqyB,IAAAryB,GAAerW,KAAAqW,IAASrW,KAAA2H,EAAAigC,KAAgD,QAAAe,IAAAtyB,GAAe,MAAAA,GAAA1O,EAAAnK,IAAAorC,GAAAvyB,KAAA9T,KAAA,SAAA8T,GAAwC,MAAA+kB,IAAA/kB,KAAgB,QAAAwyB,MAAc7oC,KAAAqW,EAAAuxB,KAAa,QAAAkB,IAAAzyB,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,EAAAxH,GAA2BzD,KAAA0a,EAAArE,EAASrW,KAAAhG,EAAA2N,EAAS3H,KAAA/F,EAAA+C,EAASgD,KAAAjD,EAAAE,GAAA,KAAe+C,KAAA5C,EAAAqG,GAAA,KAAezD,KAAAqf,EAAA1X,EAAA,IAAA3K,EAAegD,KAAA6f,EAAA,GAAAgpB,IAAc7oC,KAAAyD,EAAA,GAAAilC,IAAA1oC,KAAAqf,GAAsBrf,KAAAiL,EAAA,KAAYjL,KAAA2H,KAAU3H,KAAAob,EAAAjgB,GAAA,IAAc6E,KAAAijB,EAAAhY,GAAA,IAAcjL,KAAAqW,EAAArW,KAAAhD,EAAA,KAAmB,QAAA+rC,IAAA1yB,GAAe,UAAAkX,IAAA,gCAAAlX,GAErpB,QAAA2yB,MAAc,OAAA3yB,GAAA,GAAA1O,KAAkB,EAAA0O,GAAI1O,EAAA/M,KAAA,iEAAA+O,OAAA2G,KAAA8D,MAAA,GAAA9D,KAAAC,YAAA8F,GAAmH,OAAA1O,GAAAwB,KAAA,IAAkB,QAAA8/B,IAAA5yB,GAAe,GAAA1O,GAAA,GAAAmjB,GAAaD,IAAAljB,EAAA0O,GAAQA,IAAK,IAAArZ,GAAA,EAAA2K,EAAAlE,CAAY,IAAAkE,EAAA3K,EAAA6tB,GAAAljB,EAAAuhC,GAAA,GAAAvhC,EAAA3K,GAAA6tB,GAAAljB,EAAAuhC,GAAAvhC,OAAA3K,EAAA,IAA6C,QAAAC,GAAA,GAAa,IAAAA,EAAMA,IAAA0K,EAAAsD,EAAAhO,GAAA,IAAAD,KAAA,GAA8B,KAANytB,GAAA9iB,GAAM1K,EAAAD,EAAA,EAAUC,EAAA0K,EAAA3N,EAAMiD,IAAA,OAAA9B,GAAA,GAAiB,GAAAA,EAAKA,GAAA,EAAAkb,EAAArZ,KAAA2K,EAAA0O,EAAApZ,IAAA9B,EAAA,GAA0B,OAAA4tB,IAAA1S,GAI9a,QAAA8yB,IAAA9yB,EAAA1O,EAAA3K,EAAAC,GAAqB,GAAA9B,GAAA6tC,KAAA/9B,EAAA,GAAAkwB,IAAAxzB,EAAA1K,EAAA,KAAA9B,EAAA,GAAAoyB,IAAA,kBAAA9pB,EAAAyvB,GAAA,wBAAA1hB,GAAsF,oBAAA/N,GAAA,SAAA8pB,IAAA,gCAAoE,IAAAtzB,GAAAi5B,GAAA,wBAAA1hB,IAAA/T,IAAwC,IAAAkwB,KAAAd,cAAAvZ,MAAA,oBAAA7V,EAAA2rC,IAAA3lC,MAAuD,KAAAkqB,KAAAd,cAAAvZ,MAAA,WAAmD,MAAAwM,IAAA,GAAAyN,IAAA,+CAAnD9vB,GAAA4rC,IAAA5lC,EAAuHxJ,IAAAwD,EAAA6rC,eAAArvC,GAAwBkB,EAAA8tC,GAAA9tC,GAAQsC,EAAA89B,UAAApgC,CAAc,IAAAulB,GAAAukB,GAAA5uB,EAAAqE,EAAArE,EAAArc,EAAAqc,EAAApc,EAAA0N,EAAA3K,EAAA,KAAAC,EAAAoZ,EAAAtZ,EAAAU,EAAA4Y,EAAAjZ,EAA2C,OAAAiZ,GAAAqD,KAAAnX,KAAA,WAA8B,GAAAoF,GAC5f0O,EAAAgJ,CAAI,OAAAhJ,GAAAwJ,EAAAxJ,EAAA0I,IAAA6pB,GAAA39B,EAAA6U,IAAAnY,KAA6BpF,KAAA,WAAkB,GAAAoF,GAAAurB,GAAA,yCAAA1hB,GAAoD,sBAAA7J,GAAA,SAAA4lB,IAAA,gCAAsE,IAAAvwB,GAAA,IAAW2K,GAAA,SAAAA,GAAc,GAAAA,EAAA,CAAkD,sBAA5C3K,EAAAk2B,GAAA,qCAAA1hB,KAA4C,SAAA+b,IAAA,gCAAsEvwB,GAAA0jB,OAAK,CAAwC,sBAAnC1jB,EAAAk2B,GAAA,4BAAA1hB,KAAmC,SAAA+b,IAAA,gCAAsE5lB,GAAAgmB,KAAMhmB,OAAA2L,MAAA,kCAAA3L,EAAA2L,MAAA,iCACvb+C,IAAArZ,EAAA0jB,EAAA/Y,EAAA,wCAAkD,QAAA4hC,IAAAlzB,EAAA1O,GAAiB,OAAA3K,GAAA,EAAYA,EAAAqZ,EAAA1O,EAAAjN,OAAasC,IAAA,IAAQqZ,EAAA1O,EAAA3K,GAAA2K,GAAU,MAAA1K,KAAW,QAAAusC,IAAAnzB,GAAgI,MAAjHA,GAAApL,IAAAoL,EAAApL,EAAAoL,EAAAqD,KAAAnX,KAAA,WAAiC,UAAA4c,GAAA,SAAAxX,GAAyB,QAAA3K,GAAAC,GAA2B,MAAb0K,GAAA1K,GAAKoZ,EAAAyF,GAAA9e,IAAQ,EAASqZ,EAAA2E,GAAAhe,GAAQysC,GAAApzB,QAAWA,EAAApL,EAAW,QAAAy+B,IAAArzB,GAAe,GAAA1O,GAAA,IAAW,OAAAghC,IAAAtyB,EAAA5S,GAAAlB,KAAA,SAAAvF,GAA0C,MAAV2K,GAAA3K,EAAIA,EAAAqZ,EAAA5S,EAAMukC,GAAAhrC,EAAA2K,EAAAihC,GAAA5rC,EAAAqZ,KAAsB9T,KAAA,WAAkB,MAAAoF,KAChX,QAAA8hC,IAAApzB,GAAe,QAAA1O,MAAcxM,GAAA,EAAK8P,KAAAs7B,SAAcmD,GAAArzB,GAAA9T,KAAA,SAAAvF,GAAuB,GAAA7B,GAAA8B,CAAQ,IAAAD,GAAA2K,KAAA87B,IAAA,CAAgBtoC,EAAA,IAAO,IAAA8P,GAAAtD,EAAA87B,IAAYhgC,EAAAwoB,GAAAhhB,GAAAhR,EAAA+xB,GAAAvoB,EAAA,QAAAhG,EAAAuuB,GAAAC,GAAAhyB,GAAA,OAA8CwJ,GAAAuoB,GAAAvoB,EAAA,gBAAuBwH,EAAA+gB,GAAAC,GAAAxoB,GAAA,SAAAA,GAAAhG,GAAAxD,GAAAgR,GAA+B,GAAAA,EAAA0F,QAAA,uBAAAxV,EAAA8wB,GAAAhhB,GAAA9P,EAAA24B,GAAA9H,GAAA7wB,EAAA,wBAAAA,KAAA,gBAAAA,GAAA06B,GAAA16B,GAAA,SAAAggC,IAAAn+B,EAAA2K,EAAA3K,IAAA,UAAA7B,GAAA,GAAAggC,IAAAn+B,EAAA2K,EAAA3K,IAAAiO,EAAAjO,EAAAyG,IAAuKtI,KAAA8B,EAAOssC,GAAAlzB,EAAAlb,KAAU,GAAA6B,GAAAk2B,GAAA,2BAAA1hB,GAAsC,sBAAAxU,GAAA,SAAAuwB,IAAA,gCACpb,IAAAtwB,GAAA,GAAAk+B,IAAA,4BAAA5N,IAAA,kBAAApyB,GAAA,EAAA8P,EAAA8c,GAAA1R,EAAA+E,GAAA7Y,KAAA,WAA6F,MAAAmnC,IAAArzB,GAAA9T,KAAA,WAA6BpH,GAAAouC,GAAAlzB,EAAApZ,OAAawG,EAAA+N,GAAAm4B,aAAoBn4B,IAAAm4B,cAAA,SAAAtzB,GAAqH,GAAzF,GAAAA,EAAAwW,cAAAlc,QAAAuiB,GAAA,wBAAA1hB,IAAAqb,cAAA,QAAAllB,GAAiF87B,IAAAptB,IAAQ,kBAAA5S,GAAA,IAA6BA,EAAA4S,GAAK,MAAA5Y,GAASM,QAAAC,MAAAP,KAAmBT,EAAA,KAAA2K,GAC9G,QAAAiiC,IAAAvzB,GAAerW,KAAAqW,IAASrW,KAAA2H,EAAAigC,KAAwD,QAAAiC,IAAAxzB,GAAe,MAAAA,GAAA1O,EAAAoX,IAAA+qB,GAAA,UAAAzzB,KAAiC,QAAA0zB,IAAA1zB,GAAe,MAAA2xB,IAAA3xB,EAAA1O,EAAAmiC,GAAAzzB,KAAsB,QAAA2zB,IAAA3zB,GAAe,MAAAA,GAAA1O,EAAAnK,IAAAssC,GAAAzzB,KAAA9T,KAAA,SAAA8T,GAAwC,iBAAAA,IAAsB,QAAA4zB,IAAA5zB,EAAA1O,EAAA3K,GAAmBgD,KAAAob,EAAA/E,EAASrW,KAAA/F,EAAA0N,EAAS3H,KAAA0a,EAAA1d,EAASgD,KAAAqf,KAAUrf,KAAAiL,GAAA,EAAUjL,KAAAhG,EAAAsgB,EAAAta,KAAAjD,EAAAiD,MAAsBA,KAAAhD,EAAA,GAAAktC,IAAclqC,KAAA5C,EAAA,GAAA+sC,IAAcnqC,KAAAyD,EAAA,GAAAmmC,IAAA5pC,KAAA/F,EAAA,IAAA+F,KAAA0a,GAAiC1a,KAAA2H,KAAU3H,KAAA2H,EAAAyiC,QAAApqC,KAAAhD,EAAsBgD,KAAA2H,EAAA0iC,kBAAArqC,KAAAhD,EAAgCgD,KAAA2H,EAAA2iC,gBAAAtqC,KAAAhD,EAA8BgD,KAAA2H,EAAA4iC,kBAAAvqC,KAAAhD,EAAgCgD,KAAA2H,EAAA6iC,eAAAxqC,KAAA5C,EAA6B4C,KAAA2H,EAAA8iC,aAAAzqC,KAAA5C,EAA2B4C,KAAA2H,EAAA+iC,eAAA1qC,KAAA5C,EAA6B4C,KAAAqW,EAAAs0B,GAAA3qC,KAAAob,EAAApb,KAAA/F,EAAA+F,KAAA0a,EAAAkwB,IAC1zB,QAAAD,IAAAt0B,EAAA1O,EAAA3K,EAAAC,GAAqB,GAAA9B,GAAA5B,GAAAqH,aAAA,IAAiC,OAAA6xB,MAAA,GAAAqW,IAAAzyB,EAAA1O,EAAA3K,EAAA7B,MAAA,UAAA8B,GAAA,GAAAynC,IAAAruB,EAAA1O,EAAA3K,EAAA7B,EAAA8B,GAAyJ,QAAA4tC,IAAAx0B,GAAeA,EAAApL,IAAAoL,EAAApL,GAAA,EAAAoL,IAAA2E,GAAA3E,EAAArc,GAA0B,IAAA2N,GAAA0O,GAAU,OAAAA,KAAAqD,KAAAze,EAAA,SAAA+B,GAAgD,KAAlBqZ,MAAA1O,GAAA0O,EAAAN,QAAkB/Y,IAAW,QAAA8tC,IAAAz0B,GAAeA,IAAA2I,MAAA6rB,GAAAx0B,GAAApb,EAAA,SAAA0M,GAA8B,GAAA3K,GAAA,GAAAm+B,IAAA,4BAAA5N,IAAA,+CAA4Fwd,IAAApjC,IAAA0O,EAAAtZ,EAAAC,KAAgBqZ,IAAA0H,MAAAitB,GAAA30B,EAAArZ,GAEvL,QAAAiuC,IAAA50B,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAAyB,MAAAoL,KAAAyH,GAAAnW,EAAA3K,EAAAC,EAAA,WAA+BoZ,EAAApL,IAAAoL,EAAApL,GAAA,EAAAoL,IAAA2E,GAAA3E,EAAArc,KAA0B,WAAYqc,EAAAN,SAAU5a,EAAA8P,GAAM,QAAA8/B,IAAA10B,GAAe,SAAAA,GAAA,0BAAAA,EAAApV,MAE5Z,QAAAiqC,IAAA70B,EAAA1O,EAAA3K,GAAmB,GAAAC,GAAA0K,EAAA,IAAA3K,CAA2C,OAA7BmuC,IAAAluC,KAAAkuC,GAAAluC,GAAA,GAAAgtC,IAAA5zB,EAAA1O,EAAA3K,IAA6BmuC,GAAAluC,GAAa,QAAAitC,MAAclqC,KAAA2H,EAAA,KAAY3H,KAAAiL,KAAUjL,KAAAhD,KAAUgD,KAAAqW,EAAA,KAAYrW,KAAAyD,GAAA,EACmP,QAAAunC,IAAA30B,GAAeA,EAAA5S,IAAA4S,EAAA5S,GAAA,EAAA2nC,GAAA/0B,GAAA,cACvY,QAAAg1B,IAAAh1B,EAAA1O,EAAA3K,GAAmBA,IAAAie,GAAAtT,MAAA3K,EAAgB,IAAAC,GAAA0K,EAAAsD,EAAA9P,EAAAwM,EAAAlE,EAAAwH,IAAAtD,IAAA2L,MAAA,YAA2C,OAAAtW,GAAAC,EAAA9B,GAAAoH,KAAA,SAAAoF,GAA+ByjC,GAAA/0B,EAAApL,EAAAtD,EAAA,QAAe1M,EAAA,SAAA0M,GAAgByjC,GAAA/0B,EAAApL,EAAA,KAAAtD,KAAiB,QAAA2jC,IAAAj1B,EAAA1O,GAA6C,GAA5B0O,EAAA1O,EAAA,WAAe,MAAAmY,IAAAnY,IAAa0O,EAAArZ,EAAAtC,OAAA,OAAAsC,GAAA,EAA0BA,EAAAqZ,EAAArZ,EAAAtC,OAAasC,IAAAqZ,EAAArZ,KAAA2K,GAAc,QAAA4jC,IAAAl1B,EAAA1O,GAA6C,GAA5B0O,EAAA1O,EAAA,WAAe,MAAAkY,IAAAlY,IAAa0O,EAAApL,EAAAvQ,OAAA,OAAAsC,GAAA,EAA0BA,EAAAqZ,EAAApL,EAAAvQ,OAAasC,IAAAqZ,EAAApL,EAAAjO,GAAA2K,GAAc,QAAAyjC,IAAA/0B,EAAA1O,EAAA3K,EAAAC,GAAqB0K,EAAA1K,EAAAquC,GAAAj1B,EAAApZ,GAAAsuC,GAAAl1B,EAAArZ,GAAAuuC,GAAAl1B,GAA0Bm1B,KAAA,OAAYn1B,EAAApL,KAAOoL,EAAArZ,KAC3S,QAAAyuC,IAAAp1B,GAAe,GAAA1O,GAAA,GAAA4lB,IAAA,UAAuBlX,UAAAkwB,SAAkBlwB,IAAA0R,GAAA2jB,GAAAluC,OAAA+E,KAAA,WAAiC8T,EAAA1O,GAAAyjC,GAAA/0B,GAAA,OAAA1O,KAAuB,QAAAwiC,OACxO,QAAAwB,IAAAt1B,EAAA1O,GAAiB,GAAA3K,GAAAqZ,EAAArZ,EAAAC,EAAAoZ,EAAA1O,CAAgB,OAAAA,GAAAsT,GAAAhe,EAAAD,GAAAqZ,EAAApL,EAAAoL,EAAA5S,GAAAlB,KAAA,SAAA8T,GAA2C1O,EAAAqS,GAAA/c,EAAAoZ,EAAA,KAAArZ,KAAiB/B,EAAA,SAAAob,GAAgB1O,EAAAqS,GAAA/c,EAAA,KAAAoZ,EAAArZ,KAAoB,QAAA4uC,IAAAv1B,EAAA1O,GAAiB3H,KAAAqW,EAAA1O,EAASitB,GAAA50B,KAAA,iBAAAqW,GAA0G,QAAAw1B,IAAAx1B,EAAA1O,EAAA3K,EAAAC,GAAqB,UAAA29B,IAAAvkB,GAAA+F,GAAAzU,EAAA3K,GAAAuF,KAAA,SAAA8T,GAA2C,UAAAu1B,IAAAv1B,EAAApZ,KAAsB,QAAA6uC,IAAAz1B,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAA2G,GAAlFjL,KAAAqf,EAAAhJ,EAASrW,KAAAhG,EAAA2N,EAAS3H,KAAAyD,EAAAzG,EAASgD,KAAAhD,EAAAC,EAAS+C,KAAAiL,EAAA9P,EAAS6E,KAAA/F,IAAAgR,EAAWjL,KAAA2H,EAAA,KAAY3H,KAAAqW,EAAArW,KAAAhD,EAAcgD,KAAAiL,EAAAjL,KAAAhD,EAAA,KAAArB,OAAA,2DAAkJ,QAAAowC,IAAA11B,EAAA1O,GAAiB,MAAAA,IAAA0O,MAAArZ,EAAAqZ,EAAA5S,MAA0BkE,EAAA0O,IAAMA,KAAA,EAAOA,MAAApL,IAAAoL,MAAApL,GAAmBtD,GACnqB,QAAAqkC,IAAA31B,EAAA1O,GAAiBskC,GAAA51B,GAAMA,EAAA1O,EAAAogB,GAAAgkB,GAAA11B,EAAA1O,IAAApF,KAAA,WAAgC,MAAA8T,GAAApc,EAAA4lB,KAAA4U,OAAoBlyB,KAAA,WAAkB,MAAA8T,GAAAgJ,MAAa9c,KAAA,WAAkBypC,GAAA31B,GAAA,KAASpb,EAAA,SAAA0M,GAAgB0O,EAAArc,EAAA2N,IAAAqkC,GAAA31B,GAAA,KAAmB,QAAA41B,IAAA51B,GAAeA,EAAA1O,IAAA0O,EAAA1O,EAAA4+B,SAAAlwB,EAAA1O,EAAA,MAA8B,QAAAukC,IAAA71B,GAAerW,KAAAiL,EAAAoL,EAASrW,KAAA2H,EAAA3H,KAAAqW,EAAA,KAAmBrW,KAAAhD,EAAA,EAAyH,QAAAmvC,IAAA91B,EAAA1O,GAAiB,GAAA3K,GAAA2K,EAAAmC,IAAA7M,EAAA0K,EAAAykC,YAA4BzkC,GAAA0kC,GAAA1kC,EAAA2kC,WAAkBj2B,EAAA1O,EAAA3K,EAAMqZ,EAAArZ,EAAA2K,EAAM0O,IAAApZ,EAAM,QAAAovC,IAAAh2B,GAAe,MAAA2gB,MAAA,IAAA3Z,SAAAhH,EAAA,IACzd,QAAAk2B,IAAAl2B,EAAA1O,GAAiB,MAAAw1B,IAAA9mB,EAAApL,EAAAtD,GAAApF,KAAA,SAAAoF,GAA8F,MAA5D0O,GAAA1O,IAAAsxB,aAAmB5iB,EAAArZ,EAAAqvC,GAAA1kC,EAAA6kC,YAAqBn2B,IAAA1O,EAAA01B,eAA2BzE,YAAAviB,EAAA1O,EAAA8kC,eAAAp2B,EAAArZ,EAAAovC,aAAA/1B,OAAqDpb,EAAA,SAAA0M,GAA8D,KAA9C,2BAAAA,EAAA1G,OAAAoV,IAAA,MAA8C1O,IAAkR,QAAA+kC,IAAAr2B,EAAA1O,GAAiB3H,KAAAqW,KAAA,KAAerW,KAAA2H,KAAA,KAAemtB,GAAA90B,MAAS2sC,eAAAjY,GAAA/sB,GAAA,MAAAilC,aAAAlY,GAAAre,GAAA,QAAsD,QAAAw2B,IAAAx2B,GAAe,UAAAq2B,IAAAr2B,MAAA1O,GAA8F,QAAAmlC,IAAAz2B,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAAyB6pB,GAAA90B,MAAS+sC,IAAA12B,EAAA22B,YAAA/vC,GAAA,KAAAgwC,SAAA9xC,GAAA,KAAAwgC,MAAA3+B,GAAA,KAAA09B,YAAAzvB,GAAA,KAAAotB,WAAA1wB,IAA4F,QAAAulC,IAAA72B,EAAA1O,GAAiByc,GAAAlqB,KAAA8F,KAAAqW,EAAe,QAAArZ,KAAA2K,GAAA3H,KAAAhD,GAAA2K,EAAA3K,GACp3B,QAAAmwC,IAAA92B,EAAA1O,EAAA3K,GAAmBgD,KAAA6f,KAAU7f,KAAA4nB,EAAAvR,EAAA+2B,OAAgBptC,KAAA5C,EAAAiZ,EAAAg3B,QAAiBrtC,KAAAijB,EAAA5M,EAAAi3B,YAAA,KAA0Bj3B,EAAA9c,GAAAqH,YAAAkyB,GAAAv5B,GAAAqH,aAAA,KAAqDZ,KAAAhD,EAAA,GAAA6+B,IAAA77B,KAAA4nB,EAAAqb,GAAA2H,IAAAv0B,GAA+BrW,KAAAqf,EAAA,GAAA6sB,IAAAlsC,KAAAhD,GAAsBuwC,GAAAvtC,KAAA2H,EAAAmC,KAAcqiC,GAAAnsC,KAAAqf,EAAA1X,GAAaitB,GAAA50B,KAAA,eAAAA,KAAAqf,EAAAhJ,GAAgCm3B,GAAAxtC,KAAAhD,OAAe2qB,GAAAztB,KAAA8F,MAAaA,KAAA+rB,GAAA,EAAU/rB,KAAAijB,GAAAwQ,OAAAzzB,KAAAqW,EAAA60B,GAAAlrC,KAAAijB,EAAAjjB,KAAA4nB,EAAA5nB,KAAA5C,IAAgD4C,KAAAutB,KAAUvtB,KAAAhG,EAAA,KAAYgG,KAAA/F,EAAAwzC,GAAAztC,MAAgBA,KAAA0tC,EAAApzB,EAAAta,KAAA0b,GAAA1b,KAAuB,IAAA/C,GAAA+C,IAAWA,MAAAia,GAAA,KAAaja,KAAA6a,GAAA,SAAAxE,GAAoBpZ,EAAA+5B,GAAA3gB,EAAAgJ,IAAWrf,KAAAmW,EAAA,KAAYnW,KAAA2tC,KAAU3tC,KAAA4a,GAAA,SAAAvE,GAAoBu3B,GAAA3wC,EACjfoZ,EAAApL,IAAMjL,KAAA6tC,EAAA,KAAkH,QAAAC,IAAAz3B,EAAA1O,GAAiB0O,EAAAF,GAAA6Q,GAAA3Q,EAAAF,EAAA,sBAAAE,EAAAwE,KAAuCxE,EAAAF,EAAAxO,IAAAwe,GAAAxe,EAAA,sBAAA0O,EAAAwE,IAA0C,QAAA+yB,IAAAv3B,EAAA1O,GAAiB0O,EAAAs3B,EAAAhmC,EAAM+0B,GAAArmB,EAAArZ,EAAAzD,GAAAqH,YAAAkyB,GAAAv5B,GAAAqH,YAAAyV,EAAAs3B,GAAA,MAA6G,QAAAI,IAAA13B,EAAA1O,GAAiB0O,EAAAw3B,GAAA7mB,GAAA3Q,EAAAw3B,EAAA,mBAAAx3B,EAAAuE,KAAoCvE,EAAAw3B,EAAAlmC,IAAAwe,GAAAxe,EAAA,mBAAA0O,EAAAuE,IACnZ,QAAAozB,IAAA33B,GAAe,IAAI,MAAA9c,IAAAiF,IAAA6X,EAAAjZ,GAAAy9B,OAAgC,MAAAlzB,GAAS,SAAA4lB,IAAA,sFAAAlX,EAAAjZ,EAAA,OAA8G,QAAAqwC,IAAAp3B,GAAe,UAAAy1B,IAAA,WAAyB,MAAAz1B,GAAAsR,GAAA,IAAe,SAAAtR,GAAa,SAAAA,GAAA,+BAAAA,EAAApV,OAAsD,WAAY,GAAA0G,GAAA0O,EAAAgJ,EAAAriB,EAAAg6B,KAAA,GAAqB,UAAArvB,IAAA,GAAe,aAAc,QAAAsmC,IAAA53B,GAAeA,EAAAtZ,GAAAsZ,EAAApc,EAAA0N,IAAA0O,EAAApc,EAAAi0C,QAAAlnB,GAAA3Q,EAAA,eAAAA,EAAAq3B,GAAAvnB,GAAA9P,EAAA,eAAAA,EAAAq3B,IAA2E,QAAAS,IAAA93B,GAAe2Q,GAAA3Q,EAAA,eAAAA,EAAAq3B,GAAwBzB,GAAA51B,EAAApc,GACne,QAAAszC,IAAAl3B,EAAA1O,GAAiB0O,EAAA4G,GAAAtV,EAAOitB,GAAAve,EAAA,OAAA1O,GAAc,QAAAymC,IAAA/3B,EAAA1O,GAAiBmU,EAAAzF,EAAAkX,EAAA,SAAAlX,GAAmB,MAAAA,IAAA1O,IAAc,QAAA0mC,IAAAh4B,GAAe,OAAA1O,MAAA3K,EAAA,EAAiBA,EAAAqZ,EAAAkX,EAAA7yB,OAAasC,IAAA2K,EAAA/M,KAAAyb,EAAAkX,EAAAvwB,GAAAqZ,GAAsB,OAAA6J,IAAAvY,GAAApF,KAAA,WAA6B,MAAA8T,KAAW,QAAAi4B,IAAAj4B,GAAeA,QAAA0V,IAAA1V,EAAA0V,GAAA,EAAA1V,IAAAa,UAAAb,IAClN,QAAAm3B,IAAAn3B,EAAA1O,GAAiBmtB,GAAAze,GAAM02B,IAAAplC,EAAAolC,IAAAC,YAAArlC,EAAAqlC,aAAA,KAAAC,SAAAtlC,EAAAslC,UAAA,KAAAtR,MAAAh0B,EAAAg0B,OAAA,KAAA4S,cAAA5mC,EAAA4mC,gBAAA,EAAA7T,YAAA/yB,EAAA+yB,aAAA,KAAA8T,YAAA7mC,EAAA6mC,cAAA,EAAAC,SAAA,GAAA/B,IAAA/kC,EAAA+mC,UAAA/mC,EAAAgnC,aAAAC,kBAA6R,QAAAC,OAAe,QAAAC,IAAAz4B,GAAe,MAAAwJ,MAAAtd,KAAA,WAA2B,GAAA8T,EAAAtZ,EAAA,SAAAwwB,IAAA,iBAAqC,QAAAwhB,IAAA14B,GAAe,MAAA2S,IAAA3S,EAAAu4B,aAAA,SAAAv4B,GAAqC,MAAAA,GAAAgiB,aACtc,QAAA2W,IAAA34B,EAAA1O,GAAiBA,IAAAsnC,GAAA54B,EAAA1O,EAAA0wB,YAAAhiB,EAAAu4B,aAAAh0C,KAAA+M,IAA+C,QAAAsnC,IAAA54B,EAAA1O,GAAiBmU,EAAAzF,EAAAu4B,aAAA,SAAAv4B,GAA8B,MAAAA,GAAAgiB,YAAA1wB,IAAyB,QAAAunC,IAAA74B,EAAA1O,EAAA3K,IAAmB,OAAA2K,GAAA3K,IAAAqZ,EAAAtb,eAAA4M,IAAAitB,GAAAve,EAAA1O,EAAA3K,GAC3J,QAAAmyC,IAAA94B,EAAA1O,GAAiB0O,GAAA1O,IAAAmtB,GAAAze,GAAa02B,IAAAplC,EAAAolC,IAAAC,YAAArlC,EAAAqlC,YAAAC,SAAAtlC,EAAAslC,SAAAtR,MAAAh0B,EAAAg0B,MAAA4S,cAAA5mC,EAAA4mC,cAAA7T,YAAA/yB,EAAA+yB,YAAA8T,YAAA7mC,EAAA6mC,YAAAI,kBAAwKjnC,EAAA8mC,SAAA7Z,GAAAve,EAAA,WAAAw2B,GAAAllC,EAAA8mC,WAAA7Z,GAAAve,EAAA,cAAAq2B,KAAAzpB,GAAAtb,EAAAinC,aAAA,SAAAjnC,GAAgGqnC,GAAA34B,EAAA1O,KAAQ0O,EAAAgJ,EAAA1X,EAAA0X,EAAAuV,GAAAve,EAAA,eAAAA,EAAAgJ,EAAAhJ,IAC9S,QAAA+4B,IAAA/4B,GAAe,MAAAA,GAAAsR,IAAAplB,KAAA,SAAAoF,GAA8B,GAAA3K,GAAAqZ,EAAAm4B,WAAoB,OAAAa,IAAAh5B,EAAA1O,GAAApF,KAAA,WAAyD,MAA1BvF,IAAAkyC,GAAA74B,EAAA,kBAA0B1O,MAE1H,QAAA2nC,IAAAj5B,EAAA1O,GAAiBA,EAAAmC,KAAAuM,EAAA4G,IAAAtV,EAAAmC,MAAAqiC,GAAA91B,EAAAgJ,EAAA1X,GAAAigB,GAAAvR,EAAA,GAAA62B,IAAA,iBAAAK,GAAAl3B,EAAA1O,EAAAmC,KAAAolC,GAAA74B,EAAA,eAAAA,EAAAgJ,EAAAhJ,IAAgG,QAAAg5B,IAAAh5B,EAAA1O,GAAiB,MAAAi2B,IAAAvnB,EAAArZ,EAAAuyC,IAAiB5W,QAAAhxB,IAAUpF,KAAA+X,EAAAjE,EAAAkL,GAAAlL,IAE7J,QAAAm5B,IAAAn5B,GAAe,OAAAA,IAAAo5B,mBAAAp5B,EAAA3b,OAAAsuB,GAAA3S,EAAA,SAAAA,GAAwD,UAAAy2B,IAAAz2B,EAAAq5B,MAAAr5B,EAAAgiB,WAAAhiB,EAAAslB,MAAAtlB,EAAA22B,YAAA32B,EAAAs5B,SAAAt5B,EAAAqkB,kBACvE,QAAAkV,IAAAv5B,EAAA1O,GAAiB,MAAAynC,IAAA/4B,GAAA9T,KAAA,WAA6B,GAAAoZ,EAAAozB,GAAA14B,GAAA1O,GAAA,MAAA0mC,IAAAh4B,GAAA9T,KAAA,WAA4C,SAAAgrB,IAAA,+BAC4H,QAAAsiB,IAAAx5B,EAAA1O,EAAA3K,GAAmB,GAAAC,GAAA89B,GAAApzB,EAAoB,OAARA,GAAA+vB,GAAA/vB,GAAQotB,IAAWyW,KAAAn1B,EAAAsjB,WAAA18B,EAAA6yC,mBAAAnoC,EAAAooC,cAAA/yC,IAA2D,QAAAgzC,IAAA35B,EAAA1O,GAAyB,MAAR2nC,IAAAj5B,EAAA1O,GAAQ0O,EAAA45B,SAAA1tC,KAAA,WAAkC,MAAA8T,KAO9X,QAAA65B,IAAA75B,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB,IAAAs4B,KAAA,MAAA3T,IAAA,GAAAyN,IAAA,+CAAwE,IAAAlX,EAAArc,IAAAmB,EAAA,MAAA2kB,IAAAzJ,EAAArc,EAAyB,IAAAiR,GAAAssB,GAAAv6B,EAAAq7B,YAAA50B,EAAA4vB,GAAAhd,EAAA02B,IAAA,OAAA9yC,EAAA,OAAgD05B,MAAAhB,OAAAtc,EAAA4M,GAAAjmB,EAAAu8B,kBAAAt/B,EAAAgrC,GAAA5uB,EAAA4M,EAAA5M,EAAAuR,EAAAvR,EAAAjZ,EAAAuK,EAAA3K,EAAA,KAAAyG,EAAAlK,GAAAqH,aAAA,MAAiG,IAAAnD,GAAAuzB,GAAA/2B,EAAAgR,KAAAqQ,GAAArQ,KAAAoQ,GAC7I,OADyKpe,OAAAsF,KAAA,WAA4B,GAAN4tC,GAAA95B,IAAMlb,EAAA,MAAAkb,GAAAsR,IAAAplB,KAAA,gBAAsCA,KAAA,WAAkB,MAAA0oC,IAAA50B,IAAA5Y,EAAAkK,EAAA3K,EAAAyG,IAAAxJ,KAA2BsI,KAAA,WAAkB,UAAA4c,GAAA,SAAAniB,EAAAC,GAA2BoZ,EAAA2D,GAAArS,EAAA,QAAA4lB,IAAA,2BAAAlX,EAAA5S,GAAA,MACjc4S,EAAApL,EAAAjO,EAAMqZ,EAAA+E,EAAAne,EAAMoZ,EAAA5S,IAAM4S,EAAA1O,EAAA0O,IAAAmF,GAAAnF,EAAA1O,EAAAlK,EAAAgG,OAAsBlB,KAAA,SAAA8T,GAA4B,MAAT5Y,IAAAszB,GAAAtzB,GAAS4Y,EAAA0e,GAAA1e,GAAA,OAAoBpb,EAAA,SAAAob,GAAyB,KAAT5Y,IAAAszB,GAAAtzB,GAAS4Y,IAAWs3B,GAAAt3B,EAAApZ,EAAA9B,GAC5H,QAAAi1C,IAAA/5B,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuB,IAAAs4B,KAAA,MAAA3T,IAAA,GAAAyN,IAAA,+CAAwE,IAAAlX,EAAArc,IAAAmB,EAAA,MAAA2kB,IAAAzJ,EAAArc,EAAyB,IAAAiR,GAAA,KAAAxH,EAAA4vB,GAAAhd,EAAA02B,IAAA,MAAqU,OAAxS9vC,OAAAsF,KAAA,WAA4B,GAAN4tC,GAAA95B,IAAMlb,EAAA,MAAAkb,GAAAsR,IAAAplB,KAAA,gBAAsCA,KAAA,WAAwB,MAAN8T,GAAAg6B,EAAA5sC,EAAM4qC,GAAAh4B,KAAa9T,KAAA,SAAAoF,GAA0D,MAAvC0O,GAAAsD,KAAAhS,EAAA0O,EAAAsD,GAAAhS,MAAAoX,IAAAuxB,GAAAj6B,EAAAyJ,IAAAnY,EAAA0O,IAAuC1O,IAASpF,KAAA,WAAkB,MAAA8T,KAAAkF,GAAA5T,EAAA3K,EAAAyG,KAAqBxI,EAAA,SAAA0M,GAAoB,GAAJsD,EAAAtD,EAAI0O,EAAAsD,GAAA,MAAA42B,IAAAl6B,EAAAsD,GAAwB,MAAA1O,KAAS1I,KAAA,WAAkB,GAAA0I,EAAA,KAAAA,KAAgB0iC,GAAAt3B,EAAApZ,EAAA9B,GAC7b,QAAAg1C,IAAA95B,GAAe,IAAAA,QAAA0V,EAAA,CAAe,GAAA1V,QAAA0V,EAAA,SAAAwB,IAAA,iBAA2C,UAAAA,IAAA,gCAEzE,QAAAogB,IAAAt3B,EAAA1O,EAAA3K,GAAkB,GAAAC,GAAAuzC,GAAAn6B,EAAA1O,EAAA3K,EAAwD,OAAxCqZ,GAAAwJ,EAAAjlB,KAAAqC,GAAYkjB,GAAAljB,EAAA,WAAgB4e,EAAAxF,EAAAwJ,EAAA5iB,KAAYA,EAAS,QAAAuzC,IAAAn6B,EAAA1O,EAAA3K,GAAmB,MAAAqZ,GAAArc,IAAAgD,GAAA2K,EAAA4+B,SAAAzmB,GAAAzJ,EAAArc,IAAA2N,EAAA1M,EAAA,SAAA0M,GAAoK,MAAjHA,GAAA,sBAAAA,EAAA1G,MAAA,2BAAA0G,EAAA1G,OAAAoV,EAAArc,GAAA4tB,GAAAvR,EAAA,GAAA62B,IAAA,oBAAA72B,EAAArc,EAAA2N,GAAiHA,IAE1Q,QAAA8oC,IAAAp6B,GAAe,IAAAA,EAAA+2B,OAAA,WAAyB,IAAAzlC,IAAOylC,OAAA/2B,EAAA+2B,OAAAE,WAAAj3B,EAAAi3B,WAAAD,QAAAh3B,EAAAg3B,SAA0DrwC,IAAM,MAAAqZ,EAAAq6B,iBAAAr6B,EAAAq6B,gBAAA9X,aAAAviB,EAAAq6B,gBAAAjE,gBAAqO,WAArOzvC,GAAA8M,IAAAuM,EAAAq6B,gBAAA9X,YAAA57B,EAAAovC,aAAA/1B,EAAAq6B,gBAAAtE,cAAA,KAAApvC,EAAAsvC,WAAAj2B,EAAAq6B,gBAAAjE,eAAAzV,MAAA,GAAsP,IAAA/5B,GAAA,GAAAkwC,IAAAxlC,EAAA3K,EAAAqZ,EAA6H,OAAzGA,GAAAu4B,cAAA3rB,GAAA5M,EAAAu4B,aAAA,SAAAv4B,GAA6CA,GAAA24B,GAAA/xC,EAAA83B,GAAA1e,MAAiBA,EAAAs6B,kBAAA1zC,EAAAozC,EAAAh6B,EAAAs6B,iBAA2C1zC,EACle,QAAA2zC,IAAAv6B,EAAA1O,EAAA3K,EAAAC,GAAqB,GAAA9B,GAAA,GAAAgyC,IAAA92B,EAAA1O,EAAyC,OAAvB3K,KAAA7B,EAAAwe,GAAA3c,GAAYC,GAAA2wC,GAAAzyC,EAAA8B,GAAW9B,EAAA80C,SAAA1tC,KAAA,WAAkC,MAAApH,KAAY,QAAA01C,IAAAx6B,GAAerW,KAAAqW,IAASrW,KAAA2H,EAAAigC,KAAqD,QAAA2I,IAAAl6B,GAAe,MAAA2xB,IAAA3xB,EAAA1O,EAAA2oC,GAAAj6B,KAAsB,QAAAy6B,IAAAz6B,EAAA1O,GAAiB,MAAA0O,GAAA1O,EAAAnK,IAAA8yC,GAAAj6B,KAAA9T,KAAA,SAAA8T,GAA+D,MAAvBA,IAAA1O,IAAA0O,EAAAi3B,WAAA3lC,GAAuB8oC,GAAAp6B,SAAoB,QAAA06B,IAAA16B,EAAA1O,GAAiB3H,KAAAqW,IAASrW,KAAA2H,KAAAigC,KAAe5nC,KAAAhD,EAAA,KAAYgD,KAAAiL,EAAA+lC,GAAAhxC,MAAgBkoC,GAAAloC,KAAA2H,EAAA2gC,GAAA,SAAAtoC,KAAAqW,EAAAiE,EAAAta,KAAAyD,EAAAzD,OAAuQ,QAAAixC,IAAA56B,EAAA1O,GAAiB,GAAA1K,GAAAD,IAAW,KAAAC,IAAAuqC,OAAAvqC,KAAA0K,GAAA3K,EAAApC,KAAAotC,GAAA3xB,EAAA1O,EAAA2gC,GAAAd,GAAAvqC,IAAAoZ,KAA4E,OAAvBrZ,GAAApC,KAAAotC,GAAA3xB,EAAA1O,EAAAupC,GAAA76B,MAAuB4J,GAAAjjB,GACtvB,QAAAg0C,IAAA36B,GAAe,GAAA1O,GAAA2gC,GAAA,SAAAtrC,EAAAsrC,GAAA,WAAArrC,EAAAqrC,GAAA,OAA+C,OAAAjyB,GAAA1O,EAAAnK,IAAAR,EAAAqZ,KAAA9T,KAAA,SAAApH,GAAuC,MAAAA,GAAA6B,EAAAqZ,EAAA1O,EAAAnK,IAAAP,EAAAoZ,KAAA9T,KAAA,SAAAvF,GAA2C,MAAAA,GAAAC,EAAAoZ,EAAA1O,EAAAnK,IAAAmK,EAAA0O,KAAA9T,KAAA,SAAAvF,GAA2C,MAAAA,GAAA2K,EAAA0O,EAAA1O,EAAAnK,IAAA0zC,GAAA76B,KAAA9T,KAAA,SAAA8T,GAA4C,MAAAA,GAAAiyB,GAAAjyB,GAAA1O,UAAuBpF,KAAA,SAAAoF,GAAyB,MAAN0O,GAAArZ,EAAA2K,EAAMspC,GAAA56B,EAAA1O,EAAAyc,KAAiBnpB,EAAA,WAAeob,EAAArZ,IAAAqZ,EAAArZ,EAAA2K,KAAuD,QAAA2gC,IAAAjyB,GAAe,OAAOnZ,KAAA,WAAAknB,EAAA/N,GAC7K,QAAA86B,IAAA96B,GAAe,MAAA+6B,IAAA/6B,EAAA,WAAuB,MAAAA,GAAA1O,EAAAoX,IAAAmyB,GAAA76B,EAAArZ,EAAAonB,EAAA/N,OAA+B,QAAAg7B,IAAAh7B,EAAA1O,GAAiB,MAAAypC,IAAA/6B,EAAA,WAAuB,MAAAA,GAAA1O,EAAAoX,IAAA1I,EAAArZ,EAAA2K,EAAAmY,IAAAzJ,OAAgC,QAAAi7B,IAAAj7B,GAAe,MAAA+6B,IAAA/6B,EAAA,WAAuB,MAAA2xB,IAAA3xB,EAAA1O,EAAA0O,EAAArZ,EAAAqZ,OAC1Y,QAAAk7B,IAAAl7B,EAAA1O,GAAiB,MAAAypC,IAAA/6B,EAAA,WAAuB,MAAAA,GAAA1O,EAAAnK,IAAA6Y,EAAArZ,EAAAqZ,KAAA9T,KAAA,SAAA8T,GAAgE,MAAvBA,IAAA1O,IAAA0O,EAAAi3B,WAAA3lC,GAAuB8oC,GAAAp6B,WAAqB,QAAA+6B,IAAA/6B,EAAA1O,GAAmC,MAAlB0O,GAAApL,EAAAoL,EAAApL,EAAA1I,KAAAoF,KAAkB0O,EAAApL,EAAY,QAAAumC,IAAAn7B,GAAyC,GAA1BrW,KAAA/F,GAAA,EAAU26B,GAAA50B,KAAA,MAAAqW,IAAgBoS,GAAAzoB,MAAApB,UAAA6pB,GAAAzoB,MAAApB,QAAAwuC,OAAgK,SAAA7f,IAAA,kBAAhKlX,GAAA9c,GAAAqH,YAAAkyB,GAAAv5B,GAAAqH,aAAA,KAAAZ,KAAAhD,EAAA,GAAA6+B,IAAApT,GAAAzoB,MAAApB,SAAA6pB,GAAAzoB,MAAApB,QAAAwuC,OAAAnK,GAAA2H,IAAAv0B,GAAoMrW,KAAAutB,KAAUvtB,KAAAjD,KAAUiD,KAAA+rB,KAAU/rB,KAAAwf,GAAAjmB,GAAAsH,SAAAC,gBAAAwZ,EAAAta,KAAA8gB,GAAA9gB,OAA2DA,KAAA2tC,MAAA,GAAc3tC,KAAAyf,GAAAlmB,GAAAsH,SAAAC,gBAAAwZ,EAAAta,KAAA+gB,GAAA/gB,OAA2DyxC,GAAAzxC,KAAA,MAAcA,KAAAqf,EAAA,GAAA0xB,IAAAtoB,GAAAzoB,MAAApB,QAAAwuC,OAAA,IAAA3kB,GAAAzoB,MAAA9C,MAAuD8C,KAAA4nB,EAAA,GAAAipB,IAAApoB,GAAAzoB,MAAApB,QAAAwuC,OAChoB,IAAA3kB,GAAAzoB,MAAA9C,MAAkB8C,KAAA0tC,EAAAhO,GAAA1/B,KAAA0xC,GAAA1xC,OAAwBA,KAAAhG,EAAA0lC,GAAA1/B,KAAA2xC,GAAA3xC,OAAwBA,KAAAmW,GAAA,EAAUnW,KAAAia,GAAAK,EAAAta,KAAAoiB,GAAApiB,MAAwBA,KAAA0b,GAAApB,EAAAta,KAAAma,GAAAna,MAAwBA,KAAAid,GAAA3C,EAAAta,KAAAygB,GAAAzgB,MAAwBA,KAAA4a,GAAAN,EAAAta,KAAAwgB,GAAAxgB,MAAwBA,KAAA6a,GAAAP,EAAAta,KAAA6gB,GAAA7gB,MAAwB4xC,GAAA5xC,MAASA,KAAAa,YAAiBb,KAAAa,SAAA,OAAAyZ,EAAAta,KAAAqC,OAAArC,MAA4CA,KAAAa,SAAAgxC,aAAAv3B,EAAAta,KAAAmhB,GAAAnhB,MAA2CA,KAAA5C,EAAA,EAASuqB,GAAAztB,KAAA8F,MAAa8xC,GAAA9xC,MAASA,KAAA6f,KAAkB,QAAAkyB,IAAA17B,GAAe+N,GAAAlqB,KAAA8F,KAAA,uBAAmCA,KAAAqf,EAAAhJ,EAAiB,QAAA27B,IAAA37B,GAAe+N,GAAAlqB,KAAA8F,KAAA,oBAAgCA,KAAAiL,EAAAoL,EAExd,QAAAy7B,IAAAz7B,GAAexb,OAAAwC,eAAAgZ,EAAA,MAA8B7Y,IAAA,WAAe,MAAAwC,MAAAiyC,KAAgBlzB,IAAA,SAAA1I,GAAiBrW,KAAAg3B,GAAA3gB,IAAW9Y,YAAA,IAAiB8Y,EAAAw3B,EAAA,KAAgK,QAAAqE,IAAA77B,GAAe,MAAAA,GAAAkJ,IAAAO,GAAA,GAAAyN,IAAA,gCACxS,QAAAqkB,IAAAv7B,GAAe,GAAA1O,GAAA8gB,GAAApS,GAAAzX,QAAA0uC,WAAAtwC,EAAAyrB,GAAApS,GAAAzX,QAAAwuC,MAAoDzlC,IAAA8rB,OAAApd,EAAAkJ,GAAAlJ,EAAAq3B,EAAAnrC,KAAA,WAAmC,IAAA8T,EAAApc,EAAA,CAA+D,GAAtDoc,IAAA60B,GAAAvjC,EAAA3K,EAAAyrB,GAAApS,GAAAnZ,MAAsBmZ,IAAAa,UAAAb,GAAiBq3B,GAAAr3B,IAAAi4B,GAAAZ,GAAAr3B,IAAeA,EAAA4M,EAAA,CAAQqrB,GAAAj4B,EAAA4M,EAAQ,IAAAhmB,GAAAoZ,EAAA4M,CAAUhmB,GAAA+5B,GAAA3gB,EAAA47B,KAAYnE,GAAA7wC,EAAAoZ,GAAQpZ,EAAAoZ,EAAA4M,EAAM2qB,GAAA3wC,EAAAoZ,EAAAwJ,GAAUkuB,GAAA9wC,EAAAoZ,GAAQA,EAAA4M,EAAA,KAAS,MAAA5M,SAK3C,QAAA87B,IAAA97B,EAAA1O,GAAiB,GAAA3K,KAA+F,OAAtFA,GAAAowC,OAAA3kB,GAAApS,GAAAzX,QAAAwuC,OAA6BpwC,EAAAswC,WAAA7kB,GAAApS,GAAAzX,QAAA0uC,WAAqCtwC,EAAAqwC,QAAA5kB,GAAApS,GAAAnZ,KAAoBmZ,EAAAq3B,EAAAnrC,KAAA,WAA2B,MAAAquC,IAAA5zC,EAAA2K,EAAA0O,EAAAuR,EAAAvR,EAAA0F,QAA0BxZ,KAAA,SAAAoF,GAAmB,MAAA+lC,IAAAr3B,IAAA1O,EAAAolC,KAAAW,GAAAr3B,GAAA02B,KAAAoC,GAAAzB,GAAAr3B,GAAA1O,GAAA0O,EAAA8D,GAAAxS,KAAmD8pC,GAAAp7B,EAAA1O,GAAQ2mC,GAAA3mC,GAAM0O,EAAA8D,GAAAxS,MAAepF,KAAA,WAAkB6vC,GAAA/7B,KACne,QAAAo7B,IAAAp7B,EAAA1O,GAAiB+lC,GAAAr3B,KAAA+3B,GAAAV,GAAAr3B,KAAAqF,IAAAsL,GAAA0mB,GAAAr3B,GAAA,eAAAA,EAAA4G,IAAA+J,GAAA0mB,GAAAr3B,GAAA,cAAAA,EAAAuE,IAAAoM,GAAA0mB,GAAAr3B,GAAA,kBAAAA,EAAAwE,IAAAszB,GAAAT,GAAAr3B,KAAqH1O,MAAA4lB,EAAA3yB,KAAAyb,EAAAqF,IAAAyK,GAAAxe,EAAA,eAAA0O,EAAA4G,IAAAkJ,GAAAxe,EAAA,cAAA0O,EAAAuE,IAAAuL,GAAAxe,EAAA,kBAAA0O,EAAAwE,IAAA,EAAAxE,EAAAjZ,GAAA6wC,GAAAtmC,IAAiHitB,GAAAve,EAAA,cAAA1O,GAAqBA,MAAAqvB,GAAA3gB,EAAA47B,KAAAnE,GAAAnmC,EAAA0O,GAAAu3B,GAAAjmC,EAAA0O,EAAAwJ,GAAAkuB,GAAApmC,EAAA0O,IAC5Q,QAAAg8B,IAAAh8B,GAAe,GAAA1O,GAAAmpC,GAAAz6B,EAAAuR,EAAAa,GAAApS,GAAAzX,QAAA0uC,YAAA/qC,KAAA,SAAAoF,GAAyE,OAAlB0O,EAAA4M,EAAAtb,OAAAgS,GAAAtD,EAAAuR,GAAkB2oB,GAAAl6B,EAAAuR,IAAiB,OAAA8X,IAAArpB,EAAA1O,GAAc,QAAA+pC,IAAAr7B,GAAe,GAAA1O,GAAA8gB,GAAApS,GAAAzX,QAAA0uC,WAAAtwC,EAAAq1C,GAAAh8B,GAAA9T,KAAA,WAAsD,MAAAgvC,IAAAl7B,EAAAgJ,EAAA1X,KAAiBpF,KAAA,SAAAoF,GAAmB,MAAAA,MAAAgS,GAAAtD,EAAAuR,EAAAvR,EAAA4M,IAAA5M,EAAA4M,EAAAotB,GAAA,QAAA1oC,EAAA0oC,GAAA,MAAA1oC,IAAAsoC,SAAA1tC,KAAA,WAAgF,MAAA8uC,IAAAh7B,EAAAgJ,EAAA1X,GAAApF,KAAA,WAAiC,MAAAoF,OAAW1M,EAAA,SAAA+B,GAAgB,qCAAAA,EAAAiE,KAAA0G,EAAA2pC,GAAAj7B,EAAAgJ,MAAsD,OAAQ9c,KAAA,SAAAoF,GAAmB8pC,GAAAp7B,EAAA1O,GAAA,OAAgB,OAAA+3B,IAAArpB,EAAArZ,GAC7c,QAAA20C,IAAAt7B,GAAe,MAAAA,GAAAq3B,EAAAnrC,KAAA,WAA2B,MAAA8T,GAAAsY,OAAc1zB,EAAA,cAAgBsH,KAAA,WAAkB,IAAA8T,EAAApc,EAAA,MAAAoc,GAAA4D,OAAsBhf,EAAA,cAAgBsH,KAAA,WAAkB,IAAA8T,EAAApc,EAAA,CAASoc,EAAAF,GAAA,CAAO,IAAAxO,GAAA0O,EAAAgJ,CAAU6oB,IAAAvgC,IAAA2gC,GAAA,SAAA3gC,EAAA0O,IAAA4D,OAE5K,QAAAq4B,IAAAj8B,EAAA1O,GAAiB,GAAA3K,GAAA,KAAAC,EAAA,IAAkB,OAAAyiC,IAAArpB,EAAA1O,EAAApF,KAAA,SAAAoF,GAA8C,MAAhB3K,GAAA+9B,GAAApzB,GAAQ1K,EAAAy6B,GAAA/vB,GAAQwqC,GAAA97B,EAAA1O,KAAepF,KAAA,WAAkB,MAAAwyB,KAAWyW,KAAAkC,GAAAr3B,GAAAsjB,WAAA38B,EAAA8yC,mBAAA7yC,EAAA8yC,cAAA,cAGmF,QAAAtnB,IAAApS,GAAc,MAAAA,GAAA7X,IAAa,QAAAkvC,IAAAr3B,GAAc,MAAAA,GAAAk8B,YAA4E,QAAAC,IAAAn8B,GAAe,MAAAq3B,IAAAr3B,IAAAq3B,GAAAr3B,GAAAo8B,MAAA,KACpV,QAAAL,IAAA/7B,GAAe,GAAAA,EAAAF,EAAA,CAAQ,OAAAxO,GAAA,EAAYA,EAAA0O,EAAAtZ,EAAArC,OAAaiN,IAAA0O,EAAAtZ,EAAA4K,IAAA0O,EAAAtZ,EAAA4K,GAAA6qC,GAAAn8B,GAA4B,IAAAA,EAAAs3B,IAAAt3B,EAAAxU,UAAAwU,EAAA0V,EAAArxB,OAAA,IAAA2b,EAAAs3B,EAAAt3B,EAAAxU,SAAA8F,EAAA,EAAuDA,EAAA0O,EAAA0V,EAAArxB,OAAaiN,IAAA0O,EAAA0V,EAAApkB,IAAA0O,EAAA0V,EAAApkB,GAAA6qC,GAAAn8B,KACmD,QAAAq8B,IAAAr8B,EAAA1O,GAAiB0O,EAAA0V,EAAAnxB,KAAA+M,GAAY+3B,GAAArpB,IAAArc,EAAAuI,KAAA,YAAwB8T,EAAApc,GAAA0hB,EAAAtF,EAAA0V,EAAApkB,IAAA0O,EAAAs3B,IAAAt3B,EAAAxU,WAAAwU,EAAAs3B,EAAAt3B,EAAAxU,SAAA8F,EAAA6qC,GAAAn8B,QACxP,QAAAqpB,IAAArpB,EAAA1O,GAAwD,MAAxC0O,GAAAkX,EAAA3yB,KAAA+M,GAAYwY,GAAAxY,EAAA,WAAgBkU,EAAAxF,EAAAkX,EAAA5lB,KAAYA,EAC0L,QAAAgrC,IAAAt8B,EAAA1O,EAAA3K,EAAAC,GAAqBoZ,EAAA,CAAGrZ,EAAAqI,MAAAvK,UAAA0M,MAAAtN,KAAA8C,EAAwC,QAAR7B,GAAA,EAAQ8P,GAAA,EAAAxH,EAAA,EAAiBA,EAAAkE,EAAAjN,OAAW+I,IAAA,GAAAkE,EAAAlE,GAAA+U,SAAAvN,GAAA,MAA0B,CAAK,GAAAA,EAAA,SAAAsiB,IAAA,kGAAoHpyB,KAAe,GAAX8P,EAAAtD,EAAAjN,OAAWsC,EAAAtC,OAAAS,GAAA8P,EAAAjO,EAAAtC,OAAAuC,EAAA,aAAA9B,GAAA8P,EAAA,GAAA9P,EAAA,aAAAA,EAAA,aAAAA,EAAA,IAAA8P,EAAA,0BAAAjO,EAAAtC,OAAA,QAA8H,CAAK,IAAAS,EAAA,EAAQA,EAAA6B,EAAAtC,OAAWS,IAAA,GAAA8P,EAAAtD,EAAAxM,GAAAqd,cAAA,KAAAxb,EAAA7B,IAAAwM,EAAAxM,GAAAy5B,EAAA53B,EAAA7B,MAAA8P,EAAA,CAAgE,GAAPtD,IAAAxM,GAAO,EAAAA,MAAAy3C,GAAAl4C,OAAA,SAAA6yB,IAAA,iBACtsB,kEAAmEvwB,GAAA41C,GAAAz3C,GAAQ8B,KAAA,GAAAD,EAAA,eAAA2K,EAAAzK,KAAA,IAAAyK,EAAAzK,KAAA,oBAAAyK,EAAAirB,EAAA,GAAuE,MAAAvc,GAAQpZ,EAAA,MAAQ,GAAAA,EAAA,SAAAswB,IAAA,iBAAAlX,EAAA,YAAApZ,GAAmI,QAAA4wC,IAAAx3B,EAAA1O,GAAgB,OAAOzK,KAAAmZ,GAAA,GAAAuc,EAAA,iBAAApa,WAAA7Q,EAAAitB,EAAA73B,GAAgD,QAAA81C,MAAc,OAAO31C,KAAA,mBAAA01B,EAAA,YAAApa,UAAA,EAAAoc,EAAAlb,GACjY,QAAAvD,IAAAE,EAAA1O,GAAgB,OAAOzK,KAAAmZ,GAAA,GAAAuc,EAAA,iBAAApa,WAAA7Q,EAAAitB,EAAA1a,GAAgD,QAAA44B,IAAAz8B,EAAA1O,GAAiB,OAAOzK,KAAAmZ,GAAA,GAAAuc,EAAA,aAAApa,WAAA7Q,EAAAitB,EAAAh4B,GAA4C,QAAAm2C,IAAA18B,EAAA1O,GAAiB,OAAOzK,KAAAmZ,GAAA,GAAAuc,EAAA,OAAApa,WAAA7Q,EAAAitB,EAAA7a,GAAuC,QAAAi5B,MAAc,OAAO91C,KAAA,GAAA01B,EAAA,kBAAApa,UAAA,EAAAoc,EAAA,SAAAve,GAAsD,SAAAA,eAAA48B,YAAoC,QAAAC,MAAc,OAAOh2C,KAAA,OAAA01B,EAAA,+BAAApa,UAAA,EAAAoc,EAAA,SAAAve,GAAuE,SAAAA,eAAAm7B,OACrZ,QAAA2B,MAAc,OAAOj2C,KAAA,MAAA01B,EAAA,8BAAApa,UAAA,EAAAoc,EAAA,SAAAve,GAAqE,SAAAA,eAAA9c,IAAAiF,IAAA40C,OAA6C,QAAAC,IAAAh9B,GAAe,OAAOnZ,KAAAmZ,IAAA,0BAAAuc,EAAAvc,EAAA,WAAAA,EAAA,mCAAAmC,UAAA,EAAAoc,EAAA,SAAAjtB,GAAiH,IAAAA,EAAA,QAAe,IAAA3K,IAAAqZ,GAAA1O,EAAA0wB,aAAAhiB,CAA2B,UAAA1O,EAAAuT,KAAAle,KACxT,QAAAs2C,MAAc,OAAOp2C,KAAA,eAAA01B,EAAA,wBAAApa,UAAA,EAAAoc,EAAA,SAAAve,GAAwE,SAAAA,KAAAgiB,YAAAhiB,EAAAtb,gBAAAsb,EAAAtb,eAAA,sBAAmF,QAAAw4C,MAAc,OAAOr2C,KAAA,sBAAA01B,EAAA,yDAAApa,UAAA,EAAAoc,EAAA,SAAAve,GAAgH,SAAAA,GAAAtZ,EAAAsZ,EAAA/Z,OAAAM,EAAAyZ,EAAAm9B,WAAsC,QAAAvL,IAAA5xB,EAAA1O,EAAA3K,EAAAC,GAAoB,OAAOC,KAAAF,GAAA,GAAA41B,EAAAvc,EAAAuc,EAAA,OAAAjrB,EAAAirB,EAAApa,WAAAvb,EAAA23B,EAAA,SAAA53B,GAAuD,MAAAqZ,GAAAue,EAAA53B,IAAA2K,EAAAitB,EAAA53B,KAAyB,QAAAy2C,IAAAp9B,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAA2I,GAAlH2pB,GAAA50B,KAAA,oBAA2BA,KAAA2H,EAAA3H,KAAAhD,EAAA,KAAmBgD,KAAAjD,GAAA,EAAUiD,KAAA/F,EAAA0N,EAAS3H,KAAAqW,EAAArZ,IAAW02C,MAAA,QAAAp3C,KAAA,SAA4B0D,KAAAyD,KAAUzD,KAAAqW,EAAAs9B,IAAA,SAAApmB,IAAA,6HAAwL,IAAhCvtB,KAAAqf,EAAA,cAAArf,KAAAqW,EAAAu9B,KAAgCjzB,GAAAhZ,KAAA3H,KAAAqf,GAAAsB,GAAAhZ,GAAAksC,gBAAA,SAAAtmB,IAAA,+FAAsJvtB,MAAA0a,EAAA,GAAAmhB,IAAAxlB,EAAApL,GAAA,KAAA9P,GAAA,MAC/5B6E,KAAA5C,EAAAH,GAAA,WAAqB,YAAa,IAAAwG,GAAAzD,IAAWA,MAAAhG,IAAU,IAAAC,GAAA+F,KAAAqW,EAAAy9B,GAAiB9zC,MAAAqW,EAAAy9B,IAAA,SAAAz9B,GAA+B,GAAR09B,GAAAtwC,EAAA4S,GAAQ,kBAAApc,KAAAoc,OAA8B,oBAAApc,GAAA,CAA6B,GAAA0N,GAAAurB,GAAAj5B,EAAAuX,GAAa,mBAAA7J,MAAA0O,IAA8B,IAAA5Y,GAAAuC,KAAAqW,EAAA29B,GAAiBh0C,MAAAqW,EAAA29B,IAAA,WAAiC,GAAXD,GAAAtwC,EAAA,MAAW,kBAAAhG,WAA6B,oBAAAA,GAAA,CAA6B,GAAA4Y,GAAA6c,GAAAz1B,EAAA+T,GAAa,mBAAA6E,UAA4F,QAAA09B,IAAA19B,EAAA1O,GAAiB,OAAA3K,GAAA,EAAYA,EAAAqZ,EAAArc,EAAAU,OAAasC,IAAA,IAAQqZ,EAAArc,EAAAgD,GAAA2K,GAAU,MAAA1K,KAC9d,QAAAg3C,IAAA59B,EAAA1O,GAAiBmU,EAAAzF,EAAArc,EAAA,SAAAqc,GAAmB,MAAAA,IAAA1O,IAAc,QAAAusC,IAAA79B,EAAA1O,GAAyD,MAAxC0O,GAAA5S,EAAA7I,KAAA+M,GAAYwY,GAAAxY,EAAA,WAAgBkU,EAAAxF,EAAA5S,EAAAkE,KAAYA,EAG3G,QAAAwsC,IAAA99B,GAAe,GAAAA,EAAAtZ,EAAA,SAAAwwB,IAAA,mEACf,QAAA6mB,MAAcp0C,KAAA2H,EAAA6J,GAAA6iC,WAAAC,IAAA,EAA+Bt0C,KAAAhD,EAAA,KAAYgD,KAAAqW,EAAA,QAAA/F,KAAA8D,MAAA,IAAA9D,KAAAC,UACzD,QAAAgkC,IAAAl+B,EAAA1O,GAAiB,UAAAwX,GAAA,SAAAniB,EAAAC,GAA2B,GAAAk3B,KAAA,IAAA3iB,GAAA6iC,YAAA1sC,IAAA0O,EAAArZ,IAAAqZ,EAAA1O,EAAA,CAAyC6J,GAAA6E,KAAA,WAAkB,GAAA7E,GAAA6iC,WAAA,CAAiBh+B,EAAArZ,EAAA2K,CAAM,IAAAxM,GAAAqW,GAAA6iC,WAAAG,MAA0BhjC,IAAA6iC,WAAAG,OAAA,SAAA7sC,EAAA3K,GAAiD,MAAf2K,GAAAxM,EAAAwM,EAAA3K,GAASqZ,EAAA1O,IAAMA,GAAU3K,QAAIC,GAAA,GAAAswB,IAAA,yBAAgC/b,IAAA6E,KAAe,IAAAlb,GAAAqmB,GAAAizB,IAAal5C,OAAA8a,IAAAo6B,GAAA9oC,GAAA,IAAsBkY,IAAAwP,GAAAl0B,IAAAF,EAAA,WAAsBgC,EAAA,GAAAswB,IAAA,2EAA+EvwB,SAASC,GAAA,GAAAswB,IAAA,6BACvZ,QAAAmnB,MAA8B,MAAhBC,SAAA,GAAAP,KAAgBO,GAAU,QAAAC,IAAAv+B,EAAA1O,EAAA3K,GAAmB,IAAIgD,KAAAiL,EAAAjO,GAAAzD,GAAAiF,MAAyB,MAAAyM,GAAS,SAAAsiB,IAAA,2EAAwF,IAAAvtB,KAAAiL,EAAArM,UAAAoB,KAAAiL,EAAArM,QAAAwuC,OAAiE,SAAA7f,IAAA,kBAAjEvwB,GAAAgD,KAAAiL,EAAArM,QAAAwuC,MAAqG,IAAAnwC,GAAA+C,KAAA7E,EAAA,IAAkB,KAAIA,EAAA6E,KAAAiL,EAAA4vB,OAAA9e,KAAqB,MAAA9Q,IAAU9P,EAAA5B,GAAAqH,YAAAkyB,GAAAv5B,GAAAqH,YAAAzF,GAAA,KAAuDs4C,GAAAv5C,KAAA8F,KAAAhD,EAAAqZ,EAAA1O,EAAA,WAA8B,IAAI,GAAA0O,GAAApZ,EAAAgO,EAAA4vB,OAAAoX,IAAqB,MAAAxuC,GAAS4S,EAAA,KAAO,MAAAA,IAASlb,EAAA8nC,GAAA2H,KAAoB,QAAArQ,IAAAlkB,EAAA1O,GAAgB,OAAA3K,KAAA2K,GAAA,CAAgB,GAAA1K,GAAA0K,EAAA3K,GAAAE,IAAgBmZ,GAAApZ,GAAA43C,GAAA53C,EAAAoZ,EAAArZ,GAAA2K,EAAA3K,GAAA4Z,IAAwB,QAAAy5B,IAAAh6B,EAAA1O,EAAA3K,EAAAC,GAAoBoZ,EAAA1O,GAAAktC,GAAAltC,EAAA3K,EAAAC,GAAe,QAAA43C,IAAAx+B,EAAA1O,EAAA3K,GAAmB,QAAAC,KAAa,GAAAoZ,GAAAhR,MAAAvK,UAAA0M,MAAAtN,KAAA6F,UAAsD,OAAV4yC,IAAAx3C,EAAA6B,EAAAqZ,GAAU1O,EAAAxH,MAAAH,KAAAqW,GAAuB,IAAArZ,EAAA,MAAA2K,EAAe,IAAAsD,GAAA9P,EAAA25C,GAAAz+B,EAAc,KAAApL,IAAAtD,GAAA1K,EAAAgO,GAAAtD,EAAAsD,EAAqB,KAAAA,IAAAtD,GAAA7M,UAAAmC,EAAAnC,UAAAmQ,GAAAtD,EAAA7M,UAAAmQ,EAAmD,OAAAhO,GAAS,QAAA63C,IAAAz+B,GAA8B,MAAfA,KAAAtC,MAAA,KAAesC,IAAA3b,OAAA,GAjRl1B,GACA2kB,IADA9lB,GAAAI,EAAA,GAAA+R,QACAijB,UAAiBnd,GAAAxR,KAE6TkkB,GAAA,oBAAA5T,KAAAC,WAAA,GAAAwR,GAAA,EAE3LiV,GAAAnlB,KAAAsC,KAAA,WAA4B,UAAAtC,MAA+ZuE,GAAAsE,EAAA/e,OAAW+e,EAAA5f,UAAAoC,KAAA,aAA0L,IAAA+f,IAAA3V,OAAAxM,UAAAi6C,KAAA,SAAA1+B,GAAyC,MAAAA,GAAA0+B,QAAgB,SAAA1+B,GAAa,MAAAA,GAAAhD,QAAA,8BACphByH,GAAA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GAAA,KAAAC,GAAA,QAAAN,GAAA,aAA6NzE,GAAAkF,EAAAZ,GAAQY,EAAAxgB,UAAAoC,KAAA,gBAAoI,IAG5kBgf,IAH4kBN,GAAAvW,MAAAvK,UAAA6V,QAAA,SAAA0F,EAAA1O,EAAA3K,GAA+C,MAAAqI,OAAAvK,UAAA6V,QAAAzW,KAAAmc,EAAA1O,EAAA3K,IAA2C,SAAAqZ,EAAA1O,EAAA3K,GAA0D,GAAzCA,EAAA,MAAAA,EAAA,IAAAA,EAAAsT,KAAA6M,IAAA,EAAA9G,EAAA3b,OAAAsC,KAAyCD,EAAAsZ,GAAA,MAAAtZ,GAAA4K,IAAA,GAAAA,EAAAjN,OAAA2b,EAAA1F,QAAAhJ,EAAA3K,IAAA,CAAmD,MAAKA,EAAAqZ,EAAA3b,OAAWsC,IAAA,GAAAA,IAAAqZ,MAAArZ,KAAA2K,EAAA,MAAA3K,EAAiC,WAASimB,GAAA5d,MAAAvK,UAAA2E,QAAA,SAAA4W,EAAA1O,EAAA3K,GAA2CqI,MAAAvK,UAAA2E,QAAAvF,KAAAmc,EAAA1O,EAAA3K,IAAoC,SAAAqZ,EAAA1O,EAAA3K,GAAiB,OAAAC,GAAAoZ,EAAA3b,OAAAS,EAAA4B,EAAAsZ,KAAAtC,MAAA,IAAAsC,EAAApL,EAAA,EAA4CA,EAAAhO,EAAIgO,QAAA9P,IAAAwM,EAAAzN,KAAA8C,EAAA7B,EAAA8P,KAAAoL,IACz9B2S,GAAA3jB,MAAAvK,UAAAmE,IAAA,SAAAoX,EAAA1O,EAAA3K,GAA2C,MAAAqI,OAAAvK,UAAAmE,IAAA/E,KAAAmc,EAAA1O,EAAA3K,IAAuC,SAAAqZ,EAAA1O,EAAA3K,GAAiB,OAAAC,GAAAoZ,EAAA3b,OAAAS,EAAAkK,MAAApI,GAAAgO,EAAAlO,EAAAsZ,KAAAtC,MAAA,IAAAsC,EAAA5S,EAAA,EAAuDA,EAAAxG,EAAIwG,QAAAwH,KAAA9P,EAAAsI,GAAAkE,EAAAzN,KAAA8C,EAAAiO,EAAAxH,KAAA4S,GAAsC,OAAAlb,IAAS2uB,GAAAzkB,MAAAvK,UAAAk6C,KAAA,SAAA3+B,EAAA1O,EAAA3K,GAAyC,MAAAqI,OAAAvK,UAAAk6C,KAAA96C,KAAAmc,EAAA1O,EAAA3K,IAAwC,SAAAqZ,EAAA1O,EAAA3K,GAAiB,OAAAC,GAAAoZ,EAAA3b,OAAAS,EAAA4B,EAAAsZ,KAAAtC,MAAA,IAAAsC,EAAApL,EAAA,EAA4CA,EAAAhO,EAAIgO,IAAA,GAAAA,IAAA9P,IAAAwM,EAAAzN,KAAA8C,EAAA7B,EAAA8P,KAAAoL,GAAA,QAA2C,UAEvYA,GAAA,CAAG,GAAAohB,IAAAjmB,GAAAc,SAAmB,IAAAmlB,GAAA,CAAO,GAAA6C,IAAA7C,GAAAxE,SAAoB,IAAAqH,GAAA,CAAOpe,GAAAoe,EAAM,MAAAjkB,IAAS6F,GAAA,GAA0a,GAAAQ,IAAA,gGAAA3I,MAAA,IAC7X4I,GAAA,KAAAhD,CAAsG,IAA+QuD,IAA/Q+3B,GAAAh5B,EAAA,SAAAvU,GAAAuU,EAAA,YAAAA,EAAA,QAAAknB,GAAAlnB,EAAA,QAAAiW,GAAAiR,IAAAz7B,GAAAkF,GAAAqP,EAAA,YAAAb,EAAAc,GAAA2Q,cAAA,YAAA5Q,EAAA,YAAAA,EAAA,YAAAA,EAAA,WAAAA,EAAA,QAAAi5B,GAAA95B,EAAAc,GAAA2Q,cAAA,YAAA5Q,EAAA,OACnU5F,GAAA,CAAG,GAAA8+B,IAAA,GAAAC,GAAA,WAAwB,GAAA/+B,GAAA6F,EAAS,OAAAtP,IAAA,sBAA+BwQ,KAAA/G,GAAW8sB,GAAA,kBAAA/lB,KAAA/G,GAAsC3O,GAAA,mCAA2C0V,KAAA/G,GAAW6+B,GAAA,gBAAA93B,KAAA/G,GAAoC4+B,GAAA,yBAAA73B,KAAA/G,OAAA,KAAqE,IAArB++B,KAAAD,GAAAC,MAAA,OAAqB1tC,GAAA,CAAM,GAAA8S,IAAAsC,GAAY,UAAAtC,OAAA66B,WAAAF,IAAA,CAAgCj4B,GAAA1C,GAAAlT,EAAc,MAAA+O,IAAS6G,GAAAi4B,GAAM,GACuH7kB,IADvHzT,MAC8Hy4B,GAAA9jC,GAAArV,QAChem0B,IAAAglB,IAAA5tC,GAAAoV,MAAA,cAAAw4B,GAAAC,WAAAl4B,SAAAH,GAAA,cAAuSO,EAAA3iB,UAAA0C,IAAA,WAA4B,KAAAwC,KAAA2H,EAAA,CAAa3H,KAAA2H,GAAS,IAAA0O,GAAArW,KAAAqW,CAAarW,MAAAqW,IAAAuB,KAAcvB,EAAAuB,KAAA,SAAYvB,GAAArW,KAAAhD,GAAgB,OAAAqZ,GAAqE,IAAAyI,IAAA,GAAArB,GAAA,WAAyB,UAAAI,IAAc,SAAAxH,GAAaA,EAAAN,SAAU,IAA8I8H,GAAA/iB,UAAAikB,IAAA,SAAA1I,EAAA1O,GAA+B3H,KAAAqW,IAASrW,KAAA2H,IAAS3H,KAAA4X,KAAA,MAAgBiG,EAAA/iB,UAAAib,MAAA,WAA8B/V,KAAA4X,KAAA5X,KAAA2H,EAAA3H,KAAAqW,EAAA,KAAkF,IAAA6I,IAG3jBP,GAAqTE,IAAA,EAAAjB,GAAA,eAA4B5d,KAAA2H,EAAA3H,KAAAqW,EAAA,MACrP+I,GAAA,EAAAG,GAAA,EAAAE,GAAA,CAAsFC,GAAA5kB,UAAAib,MAAA,WAA8B/V,KAAAiL,EAAAjL,KAAA2H,EAAA3H,KAAAyD,EAAAzD,KAAAqW,EAAA,KAAiCrW,KAAAhD,GAAA,EACxgB,IAAA4iB,IAAA,GAAAnC,GAAA,WAAyB,UAAAiC,IAAc,SAAArJ,GAAaA,EAAAN,SAAU,IACyJoJ,GAAArkB,UAAAyH,KAAA,SAAA8T,EAAA1O,EAAA3K,GAAiC,MAAAyjB,IAAAzgB,KAAApD,EAAAyZ,KAAA,KAAAzZ,EAAA+K,KAAA,KAAA3K,IAA2CsgB,EAAA6B,GAAgEE,GAAAF,EAAArkB,UAAcukB,GAAApkB,EAAA,SAAAob,EAAA1O,GAAkB,MAAA8Y,IAAAzgB,KAAA,KAAAqW,EAAA1O,IAA0B0X,GAAAknB,OAAA,SAAAlwB,GAAqBrW,KAAAqW,GAAA+I,IAAAV,EAAA,WAA0C2B,GAAArgB,KAAhB,GAAAwf,IAAAnJ,KAA2BrW,OAErOqf,GAAAsB,GAAA,SAAAtK,GAAiBrW,KAAAqW,EAAA+I,GAAUE,GAAAtf,KAAAuf,GAAAlJ,IAAegJ,GAAAuB,GAAA,SAAAvK,GAAiBrW,KAAAqW,EAAA+I,GAAUE,GAAAtf,KAAAyf,GAAApJ,IAE/DgJ,GAAAW,GAAA,WAAgB,OAAA3J,GAAUA,EAAAiK,GAAAtgB,OAAWugB,GAAAvgB,KAAAqW,EAAArW,KAAAqW,EAAArW,KAAAhG,EAA0BgG,MAAAqf,GAAA,EACvC,IAAA2B,IAAAlD,CAAwC1H,GAAAoJ,GAAA9E,GAAQ8E,GAAA1kB,UAAAoC,KAAA,QAA2B,IAAA2lB,KAAAnb,IAAA,IAAA4oB,EAA2DrP,IAAAnmB,UAAAsf,IAAA,EAAmB6G,GAAAnmB,UAAAinB,GAAA,WAA2B,MAAA/hB,MAAAqW,GAAe4K,GAAAnmB,UAAAiV,SAAA,WAAiC,eAAa/P,KAAAqW,EAAA,IAAmK,IAAA6K,MAAqDE,IAAA,IAAyCC,GAAAvmB,UAAAsf,IAAA,EAAmBiH,GAAAvmB,UAAAinB,GAAA,WAA2B,MAAA/hB,MAAAqW,GAAegL,GAAAvmB,UAAAiV,SAAA,WAAiC,4BAA0B/P,KAAAqW,EAAA,IACvhB,IAAAsL,IAAA,YAAgBD,GAAA,kEAAAJ,KAAgHM,IAAA9mB,UAAAsf,IAAA,EAAmBwH,GAAA9mB,UAAAinB,GAAA,WAA2B,MAAA/hB,MAAAqW,GAAeuL,GAAA9mB,UAAAiV,SAAA,WAAiC,iBAAe/P,KAAAqW,EAAA,IAAsL,IAAA2L,IAAA,qDAC5pBH,KAAqDI,IAAA,eAAoDC,GAAApnB,UAAAsf,IAAA,EAAmB8H,GAAApnB,UAAAinB,GAAA,WAA2B,MAAA/hB,MAAAqW,GAAe6L,GAAApnB,UAAAiV,SAAA,WAAiC,kBAAgB/P,KAAAqW,EAAA,IAAwL,IAAA8L,MAAqDE,IAAA,mBAAsBA,GAAA,IAAOA,GAAA,OAC3lB,IAAAK,KAAQ8yB,YAAA,cAAAC,YAAA,cAAAC,QAAA,UAAAC,YAAA,cAAAtkB,OAAA,SAAAukB,UAAA,YAAAC,MAAA,QAAAC,KAAA,OAAAC,QAAA,UAAAz5C,KAAA,OAAA05C,OAAA,SAAAC,OAAA,SAAA7kB,MAAA,SAIwJvN,IAAQqyB,IAAA,MAAAC,KAAA,OAAAC,IAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,WAAwG9yB,GAAA,SAAApR,KAAA,+DAChCwR,GAAA,EAAAC,KAAeF,IAAAjpB,UAAA6f,IAAA,EAAqGoJ,GAAAjpB,UAAAigB,GAAA,WAA2B,GAAA/a,KAAAyb,GAAA,KAAgBzb,KAAAyb,GAAA/gB,QAAesF,KAAAyb,GAAAzgB,UAAoB,IAAA27C,IAAA97C,OAAA+7C,QAAA,SAAAvgC,GAAkC,MAAAA,IAAUoE,IAAA/S,IAAA,IAAA4oB,GAAAZ,GAAAhoB,KAAAsV,EAAA,KAAA2J,GAAA,WAAsD,IAAAnV,GAAAZ,mBAAA/V,OAAAwC,eAAA,QAAwD,IAAAgZ,IAAA,EAAA1O,EAAA9M,OAAAwC,kBAAmC,WAAYG,IAAA,WAAe6Y,GAAA,IAA2E,OAAnE7E,IAAAZ,iBAAA,OAAA+I,EAAAhS,GAAgC6J,GAAA0V,oBAAA,OAAAvN,EAAAhS,GAAmC0O,IAAwE+N,IAAAtpB,UAAAkC,EAAA,WAAyBgD,KAAA4e,IAAA,GAEjqBxI,EAAAiO,GAAAD,GAAQ,IAAAqB,IAAAkxB,IAAWE,EAAA,QAAAC,EAAA,MAAAC,EAAA,SAA8B1yB,IAAAvpB,UAAAkC,EAAA,WAA0BqnB,GAAA7J,GAAAxd,EAAA9C,KAAA8F,KAAmB,IAAAqW,GAAArW,KAAAqW,CAAa,IAAAA,EAAA2gC,eAAA3gC,EAAA2gC,qBAAuC,IAAA3gC,EAAAmR,aAAA,EAAAkI,GAAA,KAAgCrZ,EAAA0O,SAAA,KAAA1O,EAAAkR,SAAA,KAAAlR,EAAAkR,WAAAlR,EAAAkR,SAAA,GAA0D,MAAA5f,MAAY0c,GAAAvpB,UAAA2I,EAAA,WAA0B,MAAAzD,MAAAqW,EAAe,IAAAiQ,IAAA,2BAAAhW,KAAAC,SAAA,GAAAsV,GAAA,EAAssBa,GAAA,mBAAApW,KAAAC,SAAA,GAAA6W,MAAgDP,GAAA,EAOvmCY,GAAA,4BAAAnX,KAAAC,WAAA,EAAiO6F,GAAAuR,GAAA5D,IAAQ4D,GAAA7sB,UAAAwrB,KAAA,EAAmBqB,GAAA7sB,UAAAosB,oBAAA,SAAA7Q,EAAA1O,EAAA3K,EAAAC,GAAkD+pB,GAAAhnB,KAAAqW,EAAA1O,EAAA3K,EAAAC,IAEnX0qB,GAAA7sB,UAAAigB,GAAA,WAA6C,GAAnB4M,GAAAnN,GAAAO,GAAA7gB,KAAA8F,MAAmBA,KAAA0a,EAAA,CAAW,GAAA1d,GAAAqZ,EAAArW,KAAA0a,EAAA/S,EAAA,CAAmB,KAAA3K,IAAAqZ,KAAA,CAAc,OAAApZ,GAAAoZ,IAAArZ,GAAA7B,EAAA,EAAqBA,EAAA8B,EAAAvC,OAAWS,MAAAwM,EAAAme,GAAA7oB,EAAA9B,UAAiBkb,KAAArZ,GAAcqZ,EAAA1O,KAAO3H,KAAAqc,GAAA,MAA8vB2L,GAAAltB,UAAAub,EAAA,IAAoB,IAAA4gC,IAAA,CAASjvB,IAAAltB,UAAAib,MAAA,SAAAM,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAuC,gBAAAA,IAAA87C,KAAyBh6C,GAAA+5B,KAAQh3B,KAAA2H,UAAS3H,MAAAqW,GAA2G6R,GAAAptB,UAAAiV,SAAA,WAAiC,MAAA/P,MAAA9C,KAAkB,IAAA8xB,IAAA,GAAA9G,IAAA,cAAAK,GAAA,GAAAL,IAAA,cAAAY,GAAA,GAAAZ,IAAA,WACzqCD,IAAAntB,UAAAkI,IAAA,SAAAqT,EAAA1O,EAAA3K,GAAiC,GAAAqZ,EAAAnY,OAAAiqB,GAAAnoB,MAAA9B,MAAA,IAAAtB,EAAA+K,YAAA0O,EAAA,GAAA2R,IAAA3R,EAAA1O,EAAAL,GAAAtH,KAAAiL,GAAAjO,IAAAqZ,IAAArZ,KAAA,OAAAqZ,EAAA1O,GAAA0O,EAAA7E,GAAAzT,UAAAsY,EAAA6gC,WAAA7gC,EAAA6gC,UAAAl6C,IAAAqZ,EAAA7E,GAAA2lC,sBAAA9gC,EAAArZ,KAAAgD,KAAoLhD,GAAEA,IAAAqZ,EAAQ,IAAAiS,OAASD,GAAA,IAAmfhJ,IAAAmJ,GAAA1tB,UAAeukB,GAAAqJ,EAAA,WAAeC,GAAA3oB,KAAS,QAAAqW,MAAA1O,EAAA,EAAiBA,EAAA3H,KAAAqW,EAAA3b,OAAgBiN,IAAA0O,EAAAzb,KAAAoF,KAAA2H,EAAA3H,KAAAqW,EAAA1O,IAA8B,OAAA0O,IAAUgJ,GAAAoJ,EAAA,WAAwB,MAATE,IAAA3oB,MAASA,KAAAqW,EAAA1R,UACn2B0a,GAAA+3B,MAAA,WAAmBp3C,KAAA2H,KAAU3H,KAAAhD,EAAAgD,KAAAqW,EAAA3b,OAAA,GAA6P2kB,GAAA7hB,IAAA,SAAA6Y,EAAA1O,GAAoB,MAAAihB,IAAA5oB,KAAA2H,EAAA0O,GAAArW,KAAA2H,EAAA0O,GAAA1O,GAAiC0X,GAAAN,IAAA,SAAA1I,EAAA1O,GAAoBihB,GAAA5oB,KAAA2H,EAAA0O,KAAArW,KAAAhD,IAAAgD,KAAAqW,EAAAzb,KAAAyb,IAAwCrW,KAAA2H,EAAA0O,GAAA1O,GAC3Y0X,GAAA5f,QAAA,SAAA4W,EAAA1O,GAAwB,OAAA3K,GAAAgD,KAAAyoB,IAAAxrB,EAAA,EAAuBA,EAAAD,EAAAtC,OAAWuC,IAAA,CAAK,GAAA9B,GAAA6B,EAAAC,GAAAgO,EAAAjL,KAAAxC,IAAArC,EAAyBkb,GAAAnc,KAAAyN,EAAAsD,EAAA9P,EAAA6E,OAA6N,IAAAqpB,IAAA,KAAAF,GAAA,IAM7KG,IAAAxuB,UAAAyrC,OAAA,SAAAlwB,GAAgC,GAAArW,KAAAqW,EAAArW,KAAAhD,YAAAssB,KAAAtpB,KAAAhD,EAAAupC,aAAgD,CAAK,GAAAvmC,KAAA2H,EAAA,CAAW,GAAAA,GAAA3H,KAAA2H,QAAa3H,MAAA2H,EAAc0O,EAAA1O,EAAA4+B,OAAAlwB,GAAA,KAAA1O,EAAA1N,GAAA0N,EAAA4+B,SAAyCvmC,KAAAob,EAAApb,KAAAob,EAAAlhB,KAAA8F,KAAA5C,EAAA4C,WAAA0a,GAAA,EAA0C1a,KAAAqW,MAAA,GAAA4T,IAAAR,GAAAzpB,MAAAupB,GAAAvpB,MAAA,EAAAqW,MAA4CiT,GAAAxuB,UAAAiC,EAAA,SAAAsZ,EAAA1O,GAA6B3H,KAAAhG,GAAA,EAAUuvB,GAAAvpB,KAAAqW,EAAA1O,IACrX2hB,GAAAxuB,UAAA+kB,EAAA,SAAAxJ,GAA2BoT,GAAAzpB,MAASupB,GAAAvpB,MAAA,EAAAqW,IAAsGiT,GAAAxuB,UAAAyH,KAAA,SAAA8T,EAAA1O,EAAA3K,GAAkC,GAAAC,GAAA9B,EAAA8P,EAAA,GAAAkU,GAAA,SAAA9I,EAAA1O,GAA8B1K,EAAAoZ,EAAIlb,EAAAwM,GAA8D,OAAxDiiB,IAAA5pB,KAAA/C,EAAA,SAAAoZ,GAAsBA,YAAA4T,IAAAhf,EAAAs7B,SAAAprC,EAAAkb,KAAkCpL,EAAA1I,KAAA8T,EAAA1O,EAAA3K,IAAsBsgB,EAAAgM,IAE9RlT,EAAAsT,GAAAhP,GAAQgP,GAAA5uB,UAAAgM,QAAA,6BAAkD4iB,GAAA5uB,UAAAoC,KAAA,qBAAkEkZ,EAAA6T,GAAAvP,GAAQuP,GAAAnvB,UAAAgM,QAAA,wBAA6CmjB,GAAAnvB,UAAAoC,KAAA,gBAAgG8sB,GAAAlvB,UAAAkC,EAAA,WAA4C,YAAlB+sB,IAAA/pB,KAAAqW,GAAkBrW,KAAA2H,EAAe,IAA0R4iB,IAA1RR,KAAiS3T,GAAA+T,GAAAD,GAAS,QAAAE,IAAA,GAAAitB,GAAAjtB,GAAA,EAAAktB,MAAAC,GAAA,EAAiCA,GAAAF,GAAME,KAAAD,GAAAC,IAAA,CAAc,IAAArO,IAAAntB,EAAA,IAAAu7B,GAAkBntB,IAAArvB,UAAAib,MAAA,WAA8B/V,KAAAyD,EAAAzD,KAAAhD,EAAA,EAAgBgD,KAAAqW,EAAA7E,GAAA8Y,WAAA,GAAAA,YAAAtqB,KAAAqf,GAAArD,EAAAhc,KAAAqf,GAInyB,IAAAmL,KAAA,gfACA,gMAAkOpU,GAAA0U,GAAAX,GAAS,IAAAY,KAAA,wFACtCW,GAAA,0HACrML,IAAAvwB,UAAAiV,SAAA,WAAiC,GAAAsG,MAAA1O,EAAA3H,KAAAhD,CAAkB2K,IAAA0O,EAAAzb,KAAAixB,GAAAlkB,EAAA6vC,IAAA,OAA2B,IAAAx6C,GAAAgD,KAAA2H,CAAkW,QAArV3K,GAAA,QAAA2K,KAAA0O,EAAAzb,KAAA,OAAA+M,EAAA3H,KAAA/F,IAAAoc,EAAAzb,KAAAixB,GAAAlkB,EAAA6vC,IAAA,QAAAnhC,EAAAzb,KAAAka,mBAAA9X,EAAAsK,IAAA+L,QAAA,uBAAiI,eAAArW,EAAAgD,KAAAhG,IAAAqc,EAAAzb,KAAA,IAAAoC,EAAAsK,MAAoDtK,EAAAgD,KAAAyD,KAAAzD,KAAA2H,GAAA,KAAA3K,EAAA2M,OAAA,IAAA0M,EAAAzb,KAAA,KAAAyb,EAAAzb,KAAAixB,GAAA7uB,EAAA,KAAAA,EAAA2M,OAAA,GAAA8tC,GAAAC,IAAA,MAA0F16C,EAAAgD,QAAAqW,MAAAzb,KAAA,IAAAoC,IAAqCA,EAAAgD,KAAAqf,IAAAhJ,EAAAzb,KAAA,IAAAixB,GAAA7uB,EAAA26C,KAAiCthC,EAAAlN,KAAA,IAE5I,IAAAquC,IAAA,YAAAE,GAAA,WAAAD,GAAA,UAAA3rB,GAAA,WAAA6rB,GAAA,IAErJt4B,IAAAmM,GAAA1wB,UAAeukB,GAAA+3B,MAAA,WAAmBp3C,KAAAqW,EAAArW,KAAAhD,EAAA,KAAmBgD,KAAA2H,EAAA,GAA8D0X,GAAA5f,QAAA,SAAA4W,EAAA1O,GAAwB2kB,GAAAtsB,MAASA,KAAAqW,EAAA5W,QAAA,SAAAzC,EAAAC,GAA6BgmB,GAAAjmB,EAAA,SAAAA,GAAgBqZ,EAAAnc,KAAAyN,EAAA3K,EAAAC,EAAA+C,OAAmBA,OAAOA,OAAQqf,GAAAoJ,EAAA,WAAe6D,GAAAtsB,KAAS,QAAAqW,GAAArW,KAAAqW,EAAAqS,IAAA/gB,EAAA3H,KAAAqW,EAAAoS,IAAAzrB,KAAAC,EAAA,EAA2CA,EAAA0K,EAAAjN,OAAWuC,IAAA,OAAA9B,GAAAkb,EAAApZ,GAAAgO,EAAA,EAAuBA,EAAA9P,EAAAT,OAAWuQ,IAAAjO,EAAApC,KAAA+M,EAAA1K,GAAiB,OAAAD,IACnfqiB,GAAAqJ,EAAA,SAAArS,GAAgBiW,GAAAtsB,KAAS,IAAA2H,KAAS,IAAA5K,EAAAsZ,GAAAuW,GAAA5sB,KAAAqW,KAAA1O,EAAAoU,EAAApU,EAAA3H,KAAAqW,EAAA7Y,IAAAkvB,GAAA1sB,KAAAqW,UAAqD,CAAKA,EAAArW,KAAAqW,EAAAqS,GAAa,QAAA1rB,GAAA,EAAYA,EAAAqZ,EAAA3b,OAAWsC,IAAA2K,EAAAoU,EAAApU,EAAA0O,EAAArZ,IAAiB,MAAA2K,IAAU0X,GAAAN,IAAA,SAAA1I,EAAA1O,GAA6H,MAAzG2kB,IAAAtsB,MAASA,KAAAhD,EAAA,KAAYqZ,EAAAqW,GAAA1sB,KAAAqW,GAAauW,GAAA5sB,KAAAqW,KAAArW,KAAA2H,GAAA3H,KAAAqW,EAAA7Y,IAAA6Y,GAAA3b,QAA2CsF,KAAAqW,EAAA0I,IAAA1I,GAAA1O,IAAkB3H,KAAA2H,GAAA,EAAU3H,MAAaqf,GAAA7hB,IAAA,SAAA6Y,EAAA1O,GAAqC,MAAjB0O,KAAArW,KAAA0oB,EAAArS,MAAiB,EAAAA,EAAA3b,OAAA2b,EAAA,GAAA/O,GAAAK,GAC1U0X,GAAAtP,SAAA,WAAsB,GAAA/P,KAAAhD,EAAA,MAAAgD,MAAAhD,CAAwB,KAAAgD,KAAAqW,EAAA,QAAoB,QAAAA,MAAA1O,EAAA3H,KAAAqW,EAAAoS,IAAAzrB,EAAA,EAA8BA,EAAA2K,EAAAjN,OAAWsC,IAAA,CAAK,GAAAC,GAAA0K,EAAA3K,GAAA7B,EAAA2Z,mBAAA7X,EAAAqK,GAA2CrK,GAAA+C,KAAA0oB,EAAAzrB,EAAY,QAAAgO,GAAA,EAAYA,EAAAhO,EAAAvC,OAAWuQ,IAAA,CAAK,GAAAxH,GAAAtI,CAAQ,MAAA8B,EAAAgO,KAAAxH,GAAA,IAAAqR,mBAAA7X,EAAAgO,GAAA3D,KAAqD+O,EAAAzb,KAAA6I,IAAW,MAAAzD,MAAAhD,EAAAqZ,EAAAlN,KAAA,MAA+O2jB,GAAAhyB,UAAAkC,EAAA,IAA4D,IAAA0wB,GAAsBtX,GAAA4W,GAAAF,IAASE,GAAAlyB,UAAAub,EAAA,WAA0B,GAAAA,GAAA4W,GAAAjtB,KAAe,OAAAqW,GAAA,GAAA8W,eAAA9W,GAAA,GAAA6W,iBAAkDF,GAAAlyB,UAAA6M,EAAA,WAA0B,GAAA0O,KAAqC,OAA5B4W,IAAAjtB,QAAAqW,EAAA,MAAAA,EAAA,OAA4BA,GAC/WqX,GAAA,GAAAV,IAA6M5W,EAAAgX,GAAAzF,GAAQ,IAAA2F,IAAA,GAAAsqB,GAAAxqB,GAAAtyB,UAAA+8C,GAAAzvB,GAAA,iBAAkDwvB,IAAAjqB,EAAAkqB,EAAQ,IAAA/oB,IAAA,YAAAf,IAAA,aAGre1O,IAAA+N,GAAAtyB,UAAeukB,GAAAyK,GAAA,eAAgB,KAAA6E,IAAA3uB,KAAAqW,IAAArW,KAAAyD,EAAA,mBAAAzD,KAAAiL,EAAA,eAAA4d,GAAA7oB,KAAA2tB,EAAAC,GAAA5tB,UAAAyD,IAAAmkB,GAAA5nB,KAAA,WAAAA,KAAAuuB,MAAA,KACzMlP,GAAAkP,MAAA,WAAmBvuB,KAAAqW,GAAArW,KAAA2H,IAAAkhB,GAAA7oB,KAAA2tB,EAAAC,GAAA5tB,KAAA,aAAAA,KAAA2H,GAAA,EAAA3H,KAAAhD,GAAA,EAAAgD,KAAAqW,EAAAkY,QAAAvuB,KAAAhD,GAAA,EAAA4qB,GAAA5nB,KAAA,YAAA4nB,GAAA5nB,KAAA,SAAAyuB,GAAAzuB,QAA0Iqf,GAAAtE,GAAA,WAAgB/a,KAAAqW,IAAArW,KAAA2H,IAAA3H,KAAA2H,GAAA,EAAA3H,KAAAhD,GAAA,EAAAgD,KAAAqW,EAAAkY,QAAAvuB,KAAAhD,GAAA,GAAAyxB,GAAAzuB,MAAA,IAA6EotB,GAAA5S,GAAAO,GAAA7gB,KAAA8F,OAAqBqf,GAAAV,GAAA,WAAgB3e,KAAA2a,KAAA3a,KAAA4nB,GAAA5nB,KAAAqf,GAAArf,KAAAhD,EAAA0xB,GAAA1uB,WAAAshB,OAAsDjC,GAAAiC,GAAA,WAAgBoN,GAAA1uB,OAIrWqf,GAAAy4B,YAAA,WAAyB,IAAI,IAAA93C,KAAAqW,EAAA,WAAuB,gBAAArW,MAAAqW,EAAA,MAAArW,MAAAqW,EAAA0hC,QAA8C,QAAA/3C,KAAA/F,GAAe,IAAAqzB,IAAA,iBAAAttB,MAAAqW,EAAA+Y,YAA+C,gDAAApvB,MAAAqW,EAAA,MAAArW,MAAAqW,EAAA2hC,uBAA6F,GAAA3hC,GAAArW,KAAA2tB,CAA6F,OAAhFtX,MAAArT,IAAAgsB,GAAA,iBAAAhvB,KAAA/F,EAAA,4CAAgF,KAAY,MAAA0N,GAAS,MAAAkhB,IAAA7oB,KAAA2tB,EAAA,yBAAAhmB,EAAAb,SAAA,MAAqH,IAAA22B,IAAA,0EAEpT9N,GAAA,EAAAF,GAAA,CAA8GrZ,GAAAoZ,GAAA9U,GAAuBtE,EAAA2Z,GAAAjD,IAASiD,GAAAj1B,UAAAub,EAAA,WAA0B,GAAAA,GAAA,GAAA6W,eAAyB,uBAAA7W,GAAA,MAAAA,EAAkC,uBAAA4Z,gBAAA,UAAAD,GAAoD,MAAAr0B,OAAA,wBAAqCo0B,GAAAj1B,UAAA6M,EAAA,WAA0B,UACrO0X,GAAA2Q,GAAAl1B,UAAeukB,GAAAlB,KAAA,SAAA9H,EAAA1O,EAAA3K,GAAuB,SAAAA,MAAA,KAAArB,OAAA,qCAAiEqE,MAAAqW,EAAA8H,KAAA9H,EAAA1O,IACxY0X,GAAAiP,KAAA,SAAAjY,GAAmB,GAAAA,EAAA,oBAAAA,GAA0C,KAAA1a,OAAA,gCAA1CqE,MAAAqW,EAAAiY,KAAAjY,OAA4FrW,MAAAqW,EAAAiY,QAAoBjP,GAAAkP,MAAA,WAAmBvuB,KAAAqW,EAAAkY,SAAgBlP,GAAA2O,iBAAA,aAAgC3O,GAAA44B,kBAAA,SAAA5hC,GAAgC,sBAAAA,EAAAwW,cAAA7sB,KAAAqW,EAAA6hC,YAAA,IAA6D74B,GAAAgB,GAAA,WAAgBrgB,KAAAkvB,OAAA,IAAgBlvB,KAAAovB,aAAApvB,KAAAqW,EAAA+Y,aAAsCgB,GAAApwB,KAAA,IAAYqf,GAAAH,GAAA,WAAgBlf,KAAAkvB,OAAA,IAAgBlvB,KAAAovB,aAAA,GAAqBgB,GAAApwB,KAAA,IAAYqf,GAAAkB,GAAA,WAAgBvgB,KAAAkf,MACtcG,GAAAiB,GAAA,WAAgBtgB,KAAAkvB,OAAA,IAAgBkB,GAAApwB,KAAA,IAA2Fqf,GAAA84B,sBAAA,WAAmC,uBAAAn4C,KAAAqW,EAAA6hC,YAK9B,IAAAtT,IAAA,uCAEwEjT,GAAA,UAAAd,GAAA,SAE/HkC,IAAQ5P,GAAA,mBAAAE,GAAA,iBAIjFiR,IAAAx5B,UAAA0C,IAAA,WAA4B,MAAAwC,MAAAqW,EAAArW,KAAA2H,EAAA3H,KAAAhD,EAC8G,IAAU63B,IAAVujB,KAAiB,KAAI,GAAAC,MAAUx9C,QAAAwC,eAAAg7C,GAAA,QAAiC/6C,cAAA,EAAAC,YAAA,EAAAW,MAAA,IAAwCrD,OAAAwC,eAAAg7C,GAAA,QAAiC/6C,cAAA,EAAAC,YAAA,EAAAW,MAAA,IAAwC22B,GAAA,GAAAwjB,GAAAC,KAAc,MAAAjiC,GAASwe,IAAA,EACkF,GAAAO,IAAA,QAAAC,GAAA,WAAAC,GAAA,cAAAE,GAAA,QAAAD,GAAA,YAAAG,GAAA,OAAAD,GAAA,WAA0Jrf,GAAAmX,GAAA5xB,OAAW4xB,GAAAzyB,UAAAglB,EAAA,WAAyB,OAAO7e,KAAAjB,KAAAiB,KAAA6F,QAAA9G,KAAA8G,UAAsCymB,GAAAzyB,UAAAy9C,OAAA,WAA8B,MAAAv4C,MAAA8f,IAC7qB,IAAA6V,IAAA,QAAAC,IAAmB4iB,iBAAA,GAAAC,qBAAA,6LAAAC,oBAAA,qJAAAC,uBAAA,kKACnBC,eAAA,+EAAAC,oBAAA,kCAAAC,mBAAA,iCAAAC,4BAAA,uEAAAC,wBAAA,wDAAAC,wBAAA,6GACAC,6BAAA,+FAAAC,uBAAA,0DAAAC,sBAAA,gCAAAC,0BAAA,mFAAAC,iBAAA,kCAAAC,yBAAA,sIACAC,iBAAA,qEAAAC,qBAAA,yEAAAC,qBAAA,kCAAAC,4BAAA,qLAAAC,uBAAA,uDACAC,gCAAA,gOAAAC,uBAAA,wEAAAC,gBAAA,wCAAAC,kBAAA,sEAAAC,oBAAA,kDACAC,qBAAA,4DAAAC,2BAAA,oFAAAC,0BAAA,+KAAAC,yBAAA,uGACAC,0BAAA,0FAAAC,sBAAA,+IAAAC,sBAAA,2GAAAC,iBAAA,gEAAAC,uBAAA,gPACAC,0BAAA,4GAAAC,iBAAA,6KAAAC,0BAAA,2EAAAC,2BAAA,2FACAC,8BAAA,8HAAAC,yBAAA,gIAAAC,4BAAA,6EAAAC,uBAAA,kDAAAC,uBAAA,kCACAC,wBAAA,oEAAAC,uBAAA,wEAAAC,0BAAA,uEAAAj4C,cAAA,iDAAAk4C,2CAAA,wJACAC,yBAAA,8FAAAC,gBAAA,kCAAAC,mBAAA,6DAAAC,wBAAA,yJAAAC,8CAAA,kLACAC,gBAAA,4FAAAC,uBAAA,yEAAAC,0BAAA,kEAAAC,iBAAA,4DAAAC,6BAAA,2EAAAC,6BAAA,mDACAzgD,QAAA,+BAAA0gD,qBAAA,yEAAAC,oBAAA,0FAAAC,4BAAA,2GAAAC,+BAAA,2EAAAC,iBAAA,oEACAC,iBAAA,4FAAAC,gBAAA,0DAAAC,gBAAA,+EAAAC,kBAAA,GAAAC,gBAAA,kDAAAC,0BAAA,gFAGC7mB,GAAA,UAAAM,GAAA,kBAAAF,GAAA,MAAAL,GAAA,MAAAG,GAAA,aAAAC,GAAA,iBAAAF,GAAA,cAAAI,GAAA,WAAuoB4D,GAAA,kHAAAlmB,MAAA,KAAAylB,IAAA,4DAAAhC,IAAwMpU,IAAIlH,GAAA,SAAAZ,GAAA,IAAAD,GAAA,IAAAoc,GAAA,eAAAwd,GAAAzb,IAAkDhW,IAAKtH,GAAA,KAAAZ,GAAA,IAAAD,GAAA,IAAAoc,GAAA,aAAAwd,GAAAzb,IAA4C3V,IAAK3H,GAAA,KAAAZ,GAAA,IAAAD,GAAA,IAAAoc,GAAA,aAAAwd,GAAAzb,IAA4Cmd,IAAKz6B,GAAA,OAAAZ,GAAA,IAAAD,GAAA,IAAAoc,GAAA,cAAAwd,GAAAhb,KAA+VhC,GAAA,UAAAF,GAAA,YACvvC3hB,GAAA4hB,GAAAE,IAAgH9hB,EAAAuhB,GAAAK,IAAuK5hB,EAAAyhB,GAAAG,IAA8G5hB,EAAAwhB,GAAAI,IAC/U5hB,EAAA0hB,GAAAE,IACyMU,GAAA59B,UAAAogB,GAAA,SAAA7E,GAA4B,MAAA2oB,IAAA3oB,EAAA0iB,GAAA/4B,QAAuB04B,GAAA59B,UAAA6M,EAAA,SAAA0O,EAAA1O,GAA6B,GAAA3K,GAAA+7B,GAAA/4B,KAA2B,OAAZhD,GAAA27B,QAAAhxB,EAAYw3B,GAAA9oB,EAAArZ,IAC/b07B,GAAA59B,UAAAkC,EAAA,SAAAqZ,EAAA1O,GAA4C,MAAA8wB,IAAA4G,GAAAhpB,EAAf0iB,GAAA/4B,OAAe2H,IAC5C+wB,GAAA59B,UAAAglB,EAAA,WAA0B,GAAAzJ,IAAOgiB,WAAAr4B,KAAAq4B,WAA8K,OAAlJr4B,MAAA24B,UAAAtiB,EAAA4kB,aAAAj7B,KAAA24B,SAA4C34B,KAAA44B,cAAAviB,EAAA2kB,iBAAAh7B,KAAA44B,aAAwD54B,KAAAk5B,SAAA7iB,EAAAyiB,iBAAA94B,KAAAk5B,QAA8C7iB,GAAyIijB,GAAAx+B,UAAA8gB,GAAA,SAAAvF,GAA0C,MAAdrW,MAAA6d,GAAArB,EAAAnG,GAAcrW,MAAwDoW,EAAAsS,GAAA4Q,IAC1b5Q,GAAA5tB,UAAAggB,GAAA,SAAAzE,GAAwD,MAA7BsF,GAAA3b,KAAAqW,MAAArW,KAAAqW,EAAAzb,KAAAyb,GAA6BrW,MAAa0oB,GAAA5tB,UAAA4vB,GAAA,WAA0B,MAAA1O,GAAAhc,KAAAqW,IAAmBqS,GAAA5tB,UAAA6+B,WAAA,SAAAtjB,EAAA1O,GAAqC,IAAA0O,IAAA1O,EAAA,SAAA4lB,IAAA,yFAAgH,WAAAmL,IAAA14B,KAAAq4B,YAA+BM,QAAAtiB,GAAA,KAAAuiB,YAAAjxB,GAAA,QAAiFyO,EAAAqjB,GAAA/Q,IAAQkM,GAAA6E,GAAA,8BAC/JrjB,EAAAwjB,GAAAlR,IAAQkM,GAAAgF,GAAA,4BAC7KxjB,EAAA0jB,GAAApR,IAAQkM,GAAAkF,GAAA,4BAA0K1jB,EAAA4jB,GAAAV,IAAS1E,GAAAoF,GAAA,6BACoEG,GAAAr/B,UAAAogB,GAAA,SAAA7E,GAA4B,MAAAunB,IAAAvnB,EAAAymC,IAAenhB,MAAA37B,KAAAqW,EAAA0mC,SAAA/8C,KAAAiL,KAAgCkvB,GAAAr/B,UAAA6M,EAAA,SAAA0O,EAAA1O,GAA6B,MAAAi2B,IAAAvnB,EAAA2mC,IAAerkB,QAAAhxB,EAAAg0B,MAAA37B,KAAAqW,EAAA0mC,SAAA/8C,KAAAiL,KACjbkvB,GAAAr/B,UAAAkC,EAAA,SAAAqZ,EAAA1O,GAA6B,MAAA8wB,IAAAz4B,KAAAkb,GAAA7E,GAAA1O,IAAyBwyB,GAAAr/B,UAAAglB,EAAA,WAA0B,OAAO6b,MAAA37B,KAAAqW,EAAA0mC,SAAA/8C,KAAAiL,IAAiG6pB,GAAAsF,IAAO6iB,YAAA,aAAwI5iB,GAAAv/B,UAAAogB,GAAA,SAAA7E,GAA4B,MAAAA,GAAA+F,GAAAoe,GAAAx6B,QAAuBq6B,GAAAv/B,UAAA6M,EAAA,SAAA0O,EAAA1O,GAA6B,GAAA3K,GAAAw9B,GAAAx6B,KAA2B,OAAZhD,GAAA27B,QAAAhxB,EAAYi2B,GAAAvnB,EAAA6mC,GAAAlgD,IAClbq9B,GAAAv/B,UAAAkC,EAAA,SAAAqZ,EAAA1O,GAA6B,GAAA3K,GAAAw9B,GAAAx6B,KAAgD,OAAjChD,GAAAmgD,UAAA,SAAqB9mC,EAAAunB,GAAAvnB,EAAA+mC,GAAApgD,GAAYy7B,GAAApiB,EAAA1O,IAAgB0yB,GAAAv/B,UAAAglB,EAAA,WAA0B,GAAAzJ,IAAOgiB,WAAA,QAAiL,OAA7Jr4B,MAAAqW,EAAA8F,KAAA9F,EAAAgnC,eAAAr9C,KAAAqW,EAAA8F,IAAwCnc,KAAAqW,EAAAikB,KAAAjkB,EAAAinC,iBAAAt9C,KAAAqW,EAAAikB,IAA0Ct6B,KAAAqW,EAAA2S,KAAA3S,EAAAokB,eAAAz6B,KAAAqW,EAAA2S,IAAwChpB,KAAAqW,EAAAkkB,IAAAlkB,EAAAqkB,YAAA16B,KAAAqW,EAAAkkB,GAAmClkB,GAE/SukB,GAAA9/B,UAAAshB,GAAA,SAAA/F,EAAA1O,GAA8B,GAAA3K,GAAAgD,KAAAqW,EAAArZ,CAAe,OAAA6iB,IAAAlY,EAAA6rC,UAAAjxC,KAAA,SAAAtF,GAAsC,IAAAF,EAAAE,GAAA,SAAAswB,IAAA,yJAA+K,QAAA5lB,EAAArL,MAAe,sBAAAgiC,IAAAthC,GAA8B09B,YAAArkB,EAAAknC,eAAAtgD,IAA+BsF,KAAA,SAAA8T,GAA0D,MAAvC,kBAAA1O,GAAAoO,OAAApO,EAAAoO,QAAuCM,GAAS,SAAAA,GAAoD,KAAvC,kBAAA1O,GAAAoO,OAAApO,EAAAoO,QAAuCM,GAAW,kBAAAkX,IAAA,iBAChd,8FAAuOuH,GAAA8F,IAAOqiB,YAAA,UAEgG9hB,GAAArgC,UAAAglB,EAAA,WAA0B,OAAOxjB,KAAA0D,KAAA2H,EAAA0zB,QAAAr7B,KAAAhD,EAAAs+B,YAAAt7B,KAAAiL,EAAAswB,UAAAv7B,KAAAyD,EAAAzF,MAAAgC,KAAAqW,GAAArW,KAAAqW,EAAAyJ,MAC9V1J,EAAAolB,GAAAjO,IAA8JnX,EAAAqlB,GAAAlO,IAAQkO,GAAA3gC,UAAAglB,EAAA,WAA0B,GAAAzJ,IAAOpV,KAAAjB,KAAAiB,KAAA6F,QAAA9G,KAAA8G,QAAqC9G,MAAA27B,QAAAtlB,EAAAslB,MAAA37B,KAAA27B,OAAiC37B,KAAA06B,cAAArkB,EAAAqkB,YAAA16B,KAAA06B,YAAmD,IAAA/yB,GAAA3H,KAAA25B,YAAA35B,KAAA25B,WAAA7Z,GAAsD,OAAXnY,IAAA8U,EAAApG,EAAA1O,GAAW0O,GAAUolB,GAAA3gC,UAAAy9C,OAAA,WAA+B,MAAAv4C,MAAA8f,KACtJ1J,EAAAwlB,GAAA9O,IAAS8O,GAAA9gC,UAAAub,EAAA,WAA0B,UAAArW,MAAAiL,GAAmB2wB,GAAA9gC,UAAA6M,EAAA,WAA0B,SAElP,IAAAi1B,IAAA9yB,GAAA,UAAAmyB,GAAA,GAAA3H,IAAA,SAAA6H,IAA0CqhB,eAAA,qCAAmDlhB,GAAA,GAAAhI,IAAA,SAAAkI,IAAwBghB,eAAA,mBAE7O3hB,IAAA/gC,UAAAiC,EAAA,SAAAsZ,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,GAAqC,GAAAxH,GAAA,QAAAmvB,KAAA34B,EAAA44B,KAAApvB,EAAA,GAAA2pB,IAAAptB,KAAA5C,GAAA,GAAAgwB,IAAA,GAAAA,IAAAptB,KAAAiL,EAAgE,IAAAA,EAAA,CAAMhR,EAAAgR,EAAAqF,KAAA6M,IAAA,EAAAlS,EAAkB,IAAAxN,GAAAZ,WAAA,WAA4B+qB,GAAA3tB,EAAA,YAAegR,GAAIsb,GAAAtsB,EAAA,sBAA2BwD,GAAAjC,aAAAiC,EAAmB,IAAA4Y,GAAA,IAAW,KAAIA,EAAAlM,KAAAC,MAAA+kB,GAAAnvB,QAAA,KAA6B,MAAA0qB,GAAUrU,EAAA,KAAO1O,KAAA0O,KAAU0Q,GAAA9sB,EAAA,mBAAwBwD,GAAAjC,aAAAiC,GAAmB0mB,GAAAnkB,QAAW+mB,GAAA9sB,EAAA,qBAA0BwD,GAAAjC,aAAAiC,GAAmB0mB,GAAAnkB,MAAS2H,KAAA,QAAa6lB,GAAAvzB,EAAAoc,EAAArZ,EAAAC,EAAA9B,GAC1Z,IAAA+hC,IAAA9b,GAAA,yDAAgE6b,GAAA,QAAA3sB,KAAA8D,MAAA,IAAA9D,KAAAC,SAChEsrB,IAAA/gC,UAAA4f,EAAA,SAAArE,EAAA1O,EAAA3K,EAAAC,EAAA9B,GAAmC,GAAA8P,GAAAjL,IAAW48B,IAAAr6B,KAAA,WAAmB/I,OAAAsjC,KAAAC,OAAA0gB,UAAAxyC,EAAAtD,EAAkC,IAAAlE,GAAAjK,OAAAsjC,KAAAjC,KAAA/4B,UAAkCtI,QAAAsjC,KAAAjC,KAAA6iB,SAAA,MAAgClkD,OAAAsjC,KAAAC,OAAAC,SAA4B2gB,KAAAtnC,EAAAkB,OAAAva,EAAAwmC,KAAAvmC,EAAAowB,QAAAlyB,EAAAyiD,SAAA,OAAA57C,SAAA,SAAAqU,GAAsE7c,OAAAsjC,KAAAjC,KAAA6iB,SAAAj6C,GAA6BkE,KAAA0O,QAAWpb,EAAA,SAAAob,GAAgB1O,MAAM3J,OAAO8I,QAAAuP,KAAAvP,SAAA,yBAIjG+0B,GAAA/gC,UAAAq6C,GAAA,WAA2B,MAAAvX,IAAA59B,KAAA69C,QAAsBhiB,GAAA/gC,UAAAw1B,GAAA,SAAAja,EAAA1O,GAA8B,MAAAi2B,IAAA59B,KAAA89C,IAAkBnlB,QAAAtiB,EAAAslB,MAAAh0B,KAAqBk0B,GAAA/gC,UAAAw6C,GAAA,SAAAj/B,EAAA1O,GAA8B,MAAAi2B,IAAA59B,KAAAg9C,IAAkBrkB,QAAAtiB,EAAA0mC,SAAAp1C,IAAwB,IAAAo2C,KAAQ/Q,YAAA,eAAA2C,SAAA,YAAiDtwB,IAAAwc,GAAA/gC,UACleukB,GAAA/B,GAAA,SAAAjH,EAAA1O,GAAmB,GAAA3K,IAAO27B,QAAAtiB,GAAUpZ,IAA2G,OAArGkf,GAAA4hC,GAAA,SAAA1nC,EAAApL,GAAoB,GAAA9P,GAAAwM,EAAAsD,EAAW,QAAA9P,EAAA8B,EAAArC,KAAAyb,GAAApL,IAAAtD,KAAA3K,EAAAiO,GAAA9P,KAAsC8B,EAAAvC,SAAAsC,EAAAghD,gBAAA/gD,GAAgC2gC,GAAA59B,KAAA89C,GAAA9gD,IAAqBqiB,GAAAzS,GAAA,SAAAyJ,EAAA1O,GAAoE,MAAjD0O,IAAG4nC,YAAA,iBAAAtiB,MAAAtlB,GAAsCoG,EAAApG,EAAA1O,GAAQi2B,GAAA59B,KAAAk+C,GAAA7nC,IAAqBgJ,GAAA6S,GAAA,SAAA7b,EAAA1O,GAAoE,MAAjD0O,IAAG4nC,YAAA,eAAAtlB,QAAAtiB,GAAsCoG,EAAApG,EAAA1O,GAAQi2B,GAAA59B,KAAAm+C,GAAA9nC,IAAuDgJ,GAAAjD,GAAA,SAAA/F,GAAiB,MAAAunB,IAAA59B,KAAAo+C,GAAA/nC,IAEvIgJ,GAAA9C,GAAA,SAAAlG,EAAA1O,GAAmB,MAAAi2B,IAAA59B,KAAAq+C,IAAkB5e,QAAAppB,EAAAioC,YAAA32C,KAA2B0X,GAAAxD,GAAA,SAAAxF,GAAiB,MAAAunB,IAAA59B,KAAAu+C,IAAkB9e,QAAAppB,KAAagJ,GAAA/C,GAAA,SAAAjG,GAAiB,MAAAunB,IAAA59B,KAAAw+C,IAAkB/e,QAAAppB,IACrZ,IAW2Hu0B,IAX3H4T,IAAQ5e,SAAA,iBAAAlf,EAAA8e,GAAAK,GAAA,SAA0C0e,IAAK3e,SAAA,gBAAAlf,EAAA8e,GAAA11B,EAAA,SAAAuM,GAA4C,IAAAA,EAAAslB,QAAAtlB,EAAA4nC,YAAA,SAAA1wB,IAAA,oBAA4DkxB,IAAK7e,SAAA,gBAAAlf,EAAA,SAAArK,GAA6C,GAANmnB,GAAAnnB,IAAMA,EAAA0mC,SAAA,SAAAxvB,IAAA,kBAA6CzjB,EAAAs0B,GAAAsB,GAAA,GAAW7B,IAAK+B,SAAA,iBAAyB8e,IAAK9e,SAAA,gBAAA7lB,IAAA,YAAwC0kB,IAAKmB,SAAA,iBAAA7lB,IAAA,4BAAA2G,EAAA,SAAArK,GAAwE,IAAA2D,EAAA3D,EAAAqoB,gBAAA,SAAAnR,IAAA,oBAAyDgiB,IAAK3P,SAAA,kBAC/due,IAAIve,SAAA,yBAAA7lB,IAAA,yBAAA2G,EAAA,SAAArK,GAA6E,mBAAAA,EAAA4nC,YAAA,SAAA1wB,IAAA,mBAAgEsS,GAAA,SAAYqe,IAAKte,SAAA,yBAAA7lB,IAAA,eAAA2G,EAAA,SAAArK,GAAmE,qBAAAA,EAAA4nC,YAAA,SAAA1wB,IAAA,iBAAiEiQ,IAAAnnB,IAAMwpB,GAAA,SAAY3B,IAAK1gB,IAAA,EAAAoiB,SAAA,mBAAAlhB,GAAA,OAA2CigC,IAAKnhC,IAAA,EAAAoiB,SAAA,oBAAAlhB,GAAA,MAAA5U,EAAA,SAAAuM,GAA0D,IAAAA,EAAAuoC,iBAAA,SAAArxB,IAAA,oBAAuD8wB,IAAKze,SAAA,gBACnelf,EAAA8e,GAAAK,GAAA,SAAgBtB,IAAKqB,SAAA,uBAAA7lB,IAAA,gCAAA8lB,GAAA,eAAqFie,IAAKle,SAAA,iBAAA7lB,IAAA,WAAA2G,EAAAgd,GAAAgC,GAAA,GAAmDsd,IAAKpd,SAAA,iBAAA7lB,IAAA,WAAA2G,EAAA,SAAArK,GAA6D,GAANqnB,GAAArnB,IAAMA,EAAA0mC,SAAA,SAAAxvB,IAAA,kBAA6CzjB,EAAAs0B,GAAAsB,GAAA,GAAWme,IAAKje,SAAA,gBAAA91B,EAAAs0B,GAAAsB,GAAA,GAAmCR,IAAKU,SAAA,kBAAAlf,EAAAie,GAAA70B,EAAA80B,GAAAc,GAAA,GAA0CH,IAAKK,SAAA,kBAAAlf,EAAAie,GAAA70B,EAAA,SAAAuM,GAA8C,GAAAA,EAAAyoB,cAAA,kBAAAzoB,EAAAyoB,aAAA,SAAAvR,IAAA,iBACta,IAAAlX,EAAAyoB,aAAA,KAAAC,IAAA1oB,EAAAyoB,aAA2C,KAAAzoB,EAAAvM,IAAA,SAAAyjB,IAAA,mBAAwCmS,GAAA,GAAMN,IAAKQ,SAAA,kBAAAlf,EAAA,SAAArK,GAA+C,GAANsoB,GAAAtoB,IAAMA,EAAAsiB,QAAA,SAAApL,IAAA,mBAA6CzjB,EAAA80B,GAAAc,GAAA,GAAWmf,IAAKjf,SAAA,oBAAAlf,EAAA,SAAArK,GAA2C,IAAAA,EAAA3C,MAAA,SAAA6Z,IAAA,yBAAiDzjB,EAAAs0B,GAAAsB,GAAA,GAAWod,IAAKld,SAAA,iBAAAlf,EAAA,SAAArK,GAA8C,GAANmnB,GAAAnnB,IAAMA,EAAA0mC,SAAA,SAAAxvB,IAAA,mBAA8CzjB,EAAAs0B,GAAAsB,GAAA,GAAW0e,IAAKxe,SAAA,oBAAAlf,EAAA2d,GAAAv0B,EAAAs0B,IAAuC8e,IAAKtd,SAAA,oBAAAlf,EAAA,SAAArK,GAA2C,IAAAA,EAAAsiB,QAAA,SAAApL,IAAA,iBACzf8Q,IAAAhoB,IAAMvM,EAAA,SAAAuM,GAAe,GAAAA,EAAAokB,eAAA,KAAApkB,GAAApV,KAAA,4BAAAy6B,GAAArlB,EAAmE+nB,IAAA/nB,KAAO+mC,IAAKr9B,IAAIwhB,eAAA,kBAAgC3B,SAAA,oBAAAlf,EAAA2d,GAAAv0B,EAAAs0B,IAMqL8E,IAAQnf,IAAIrH,GAAA,8DAAAymB,GAAA,8CAAAh1B,GAAA,KAAyH8V,IAAKvH,GAAA,8EAAAymB,GAAA,8DAAAh1B,GAAA,KAAyJgW,IAAKzH,GAAA,kFAAAymB,GAAA,2DAAAh1B,GAAA,KACney8B,IAAA3H,GAAA,2BAE6H,IAAAqB,IAAAljB,GAAA,sDAA6DijB,GAAA,GAAA/P,IAAA,SAAAyP,GAAA,GAAAzP,IAAA,UAAA8P,GAAA,IAElIG,IAAAzpC,UAAAiV,SAAA,WAA+L,MAA9J/P,MAAAiL,EAAA8gB,GAAA/rB,KAAAqW,EAAA,IAAArW,KAAAiL,GAAA0hB,GAAA3sB,KAAAqW,IAAA,KAA6CrW,KAAA2H,EAAAokB,GAAA/rB,KAAAqW,EAAA,MAAArW,KAAA2H,GAAAglB,GAAA3sB,KAAAqW,IAAA,OAAiDrW,KAAAhD,EAAAtC,OAAAqxB,GAAA/rB,KAAAqW,EAAA,KAAArW,KAAAhD,EAAAmM,KAAA,MAAAwjB,GAAA3sB,KAAAqW,IAAA,MAAgErW,QAAAqW,GACzXmuB,GAAA1pC,UAAAiV,SAAA,WAAiC,GAAAsG,GAAA6V,GAAAlsB,KAAAjD,EAAA,mBAAsG,IAAlEgvB,GAAA1V,EAAA,SAAArW,KAAA0a,GAAqBqR,GAAA1V,EAAA,UAAArW,KAAAhD,GAAsB+uB,GAAA1V,EAAA,WAAArW,KAAA/F,GAAuB+F,KAAAqW,EAAAkjB,gBAAA,CAA2B,GAAA5xB,GAAA3H,KAAAqW,CAAa,KAAI,GAAArZ,GAAAzD,GAAAiF,IAAAwB,KAAAhD,GAAA69B,OAAAoX,IAAsC,MAAAh4C,GAAS+C,EAAA,KAAO2K,EAAA6U,GAAAxf,EAAO+uB,GAAA1V,EAAA,aAAArW,KAAAqW,EAAAgiB,YAAoC1wB,EAAA3H,KAAAqW,EAASrZ,EAAA62B,GAAAlsB,EAAAkW,GAAW,QAAA5gB,KAAAD,KAAAC,GAAAD,KAAAC,EAAoCA,GAAA0K,EAAAlL,GAAOO,EAAAwf,EAAAxf,EAAQ,QAAA7B,GAAA,EAAYA,EAAA8B,EAAAvC,OAAWS,IAAA,CAAK,GAAA8P,GAAAhO,EAAA9B,EAAW8P,KAAAjO,aAAAiO,GAAoBtD,EAAA8U,IAAA9U,EAAA6U,KAAAxf,EAAA2K,EAAA8U,MAAAzf,EAAA2K,EAAA8U,IAAA9U,EAAA6U,IAAqCF,EAAAtf,IAAA+uB,GAAA1V,EAAA,mBAAAud,GAAA52B,IAC9P,GADmS,kBAAAgD,MAAAqW,EAAAqU,KAChe/iB,EAAA3H,KAAAqW,EAAAqU,KAAA/iB,EAAAjN,QAAAqxB,GAAA1V,EAAA,SAAA1O,EAAAwB,KAAA,OAAoDnJ,KAAAqf,EAAA0M,GAAA1V,EAAA,cAAArW,KAAAqf,GAAAsN,GAAAtW,IAAA,eAAuDrW,KAAAyD,EAAAsoB,GAAA1V,EAAA,UAAArW,KAAAyD,GAAAkpB,GAAAtW,IAAA,WAA+CrW,KAAAhG,EAAA+xB,GAAA1V,EAAA,IAAArW,KAAAhG,GAAA2yB,GAAAtW,IAAA,KAAmCrW,KAAA2H,EAAA,OAAAlE,KAAAzD,MAAA2H,EAAA3H,KAAA2H,EAAA5M,eAAA0I,KAAAuoB,GAAA3V,EAAA5S,IAAAsoB,GAAA1V,EAAA5S,EAAAzD,KAAA2H,EAAAlE,GAAuK,OAApFzD,MAAAiL,EAAA8gB,GAAA1V,EAAA,MAAArW,KAAAiL,GAAA0hB,GAAAtW,IAAA,OAAuC5S,EAAAghC,GAAAzkC,KAAAhD,GAAayG,EAAA/I,QAAAqxB,GAAA1V,EAAA,KAAA5S,EAAA0F,KAAA,MAAgCkN,MAGnKgJ,GAAAqlB,GAAA5pC,UAAeukB,GAAA7D,GAAA,SAAAnF,EAAA1O,EAAA3K,GAAqB,GAAAC,GAAA,GAAAswB,IAAA,wBAAApyB,EAAA,GAAAoyB,IAAA,2BAAAtiB,EAAAjL,KAAAyD,GAAA,CAAmF,OAAAzD,MAAA0Z,KAAAnX,KAAA,WAAiC4iC,GAAAl6B,GAAA1I,KAAA,SAAAvF,GAAuBA,IAAAqZ,GAAA0a,GAAA1a,GAAA1O,EAAAxM,GAAAsI,GAAA,OAA0BxI,EAAA,cAAgBsH,KAAA,WAAkB,IAAAkB,EAAA,MAAA4uB,IAAAhc,KAAmB9T,KAAA,WAAkB,IAAAkB,EAAA,MAAAskB,IAAA/qB,GAAAuF,KAAA,WAAmCoF,EAAA1K,QACpfoiB,GAAAL,GAAA,WAAgB,GAAA3I,GAAAsX,IAAU,QAAAgG,GAAAtd,KAAA0d,GAAA1d,IAAsBgJ,GAAAtB,GAAA,WAAgB,UAChEsB,GAAAvB,GAAA,SAAAzH,EAAA1O,EAAA3K,EAAAC,EAAA9B,EAAA8P,EAAAxH,GAA6B,IAAA4S,EAAA,MAAAyJ,IAAA,GAAAyN,IAAA,iBAAuC,IAAA9pB,IAAAkwB,KAAA,MAAA3zB,MAAA0Z,KAAAze,EAAA,SAAA0M,GAA2CopB,GAAA1a,GAAMlb,EAAAwM,KAAK1K,IAAA4iB,IAAU7f,MAAAqW,IAAArW,KAAAqW,EAAAsuB,GAAAK,GAAAhlC,OAA8B,IAAA/F,GAAA+F,IAAW,OAAAA,MAAAqW,EAAA9T,KAAA,WAA8B,GAAAoF,GAAA1N,EAAAyf,KAAAze,EAAA,SAAA0M,GAAsC,KAAXopB,IAAA1a,GAAMlb,EAAAwM,GAAKA,GAAe,OAAJ1K,KAAI0K,IAASpF,KAAA,WAAkB24B,GAAAl+B,GAAMyG,GAAuDgtB,GAAhDwU,GAAAhrC,EAAAygB,EAAAzgB,EAAAgR,EAAAhR,EAAA0N,IAAA3K,EAAA,KAAAiO,EAAAhR,EAAA+C,MAAA,GAAA/C,EAAAolB,GAAgDhJ,KAASpb,EAAA,SAAAob,GAAkE,KAAlD,+BAAAA,EAAApV,OAAAhH,EAAAoc,EAAA,MAAkDA,KACzUgJ,GAAA9D,GAAA,SAAAlF,EAAA1O,EAAA3K,GAAqBgD,KAAAqW,IAAArW,KAAAqW,EAAAsuB,GAAAK,GAAAhlC,OAA8B,IAAA/C,GAAA+C,IAAW,OAAAA,MAAAqW,EAAA9T,KAAA,WAA8B24B,GAAAvzB,GAAsD8oB,GAAhDwU,GAAAhoC,EAAAyd,EAAAzd,EAAAgO,EAAAhO,EAAA0K,EAAA0O,EAAA1O,EAAA4oB,KAAAvzB,EAAAC,EAAAD,MAAA,GAAAC,EAAAoiB,MAAsDpkB,EAAA,SAAAob,GAAkE,KAAlD,+BAAAA,EAAApV,OAAAhE,EAAAoZ,EAAA,MAAkDA,KAAYgJ,GAAA3F,GAAA,WAAgB,GAAArD,GAAArW,IAAW,OAAA8kC,IAAA9kC,MAAAuC,KAAA,WAAgC,MAAA8T,GAAArc,EAAA4iB,KAAc3hB,EAAA,WAAwB,KAATob,KAAA,KAAS,GAAAkX,IAAA,6BAA0ClO,GAAAD,GAAA,WAAgB,UAE/PC,GAAArE,GAAA,SAAA3E,GAAiBrW,KAAAyD,EAAA7I,KAAAyb,IAAgBgJ,GAAAvD,GAAA,SAAAzF,GAAiByF,EAAA9b,KAAAyD,EAAA,SAAAkE,GAAsB,MAAAA,IAAA0O,KAAoNgJ,GAAAgmB,GAAAvqC,UAAeukB,GAAA7hB,IAAA,SAAA6Y,GAAkB,MAAAwJ,IAAA7f,KAAAqW,EAAA8xB,QAAA9xB,IAAA9T,KAAA,SAAA8T,GAA6C,MAAAA,IAAAyd,GAAAzd,MAAmBgJ,GAAAN,IAAA,SAAA1I,EAAA1O,GAAoB,MAAAkY,IAAA7f,KAAAqW,EAAAid,QAAAjd,EAAAud,GAAAjsB,MAAmC0X,GAAA4oB,EAAA,SAAA5xB,GAAgB,MAAAwJ,IAAA7f,KAAAqW,EAAAkd,WAAAld,KAAgCgJ,GAAA6E,GAAA,aAAkB7E,GAAAzF,GAAA,aAA0CyF,GAAAmmB,GAAA1qC,UAAeukB,GAAA7hB,IAAA,SAAA6Y,GAAkB,MAAAwJ,IAAA7f,KAAAqW,OAAqBgJ,GAAAN,IAAA,SAAA1I,EAAA1O,GAAgC,MAAZ3H,MAAAqW,KAAA1O,EAAYkY,MAAYR,GAAA4oB,EAAA,SAAA5xB,GAAiC,aAAjBrW,MAAAqW,KAAiBwJ,MAAYR,GAAA6E,GAAA,aAAkB7E,GAAAzF,GAAA,YAA8N,IAAA+tB,GACj0BtoB,IAAAomB,GAAA3qC,UAC1TukB,GAAAN,IAAA,SAAA1I,EAAA1O,GAAoB,GAAA1K,GAAAD,GAAA,EAAA7B,EAAA6E,IAAkB,OAAAmgB,IAAA6lB,GAAAhmC,MAAAuC,KAAA,SAAAoF,GAA2D,MAAvB1K,GAAA0K,EAAIA,EAAAs+B,GAAA9qC,EAAAgrC,GAAAhrC,EAAA8B,GAAA,IAAmBopC,GAAA1+B,EAAAnK,IAAA6Y,MAAoB9T,KAAA,SAAA0I,GAAmB,GAAAxH,GAAAwiC,GAAA9qC,EAAAgrC,GAAAhrC,EAAA8B,GAAA,GAAuB,OAAAgO,MAAA/M,MAAAyJ,EAAA0+B,GAAA5iC,EAAAq7C,IAAA7zC,MAAmC9P,EAAAkb,IAAMrZ,GAAA,EAAKiO,KAAKA,EAAA9P,EAAAsI,GAAA4S,EAASpL,EAAA9P,EAAAlB,GAAA0N,EAAS0+B,GAAA5iC,EAAAs7C,IAAA9zC,OAAoB1I,KAAA,WAAkBpH,EAAA8P,EAAAoL,GAAA1O,IAAS,WAAa3K,GAAA7B,EAAAkb,OAAYgJ,GAAA7hB,IAAA,SAAA6Y,GAAkB,GAAA1O,GAAA3H,IAAW,OAAAgmC,IAAAhmC,MAAAuC,KAAA,SAAAvF,GAAiC,MAAAqpC,IAAAJ,GAAAt+B,EAAAw+B,GAAAx+B,EAAA3K,GAAA,IAAAQ,IAAA6Y,MAAmC9T,KAAA,SAAA8T,GAAmB,MAAAA,MAAAnY,SAChamhB,GAAA4oB,EAAA,SAAA5xB,GAAgB,GAAA1O,IAAA,EAAA3K,EAAAgD,IAAgB,OAAAmgB,IAAA6lB,GAAAhmC,MAAAuC,KAAA,SAAAtF,GAA+C,MAAX0K,IAAA,EAAK3K,EAAAqZ,IAAMgwB,GAAAJ,GAAAjpC,EAAAmpC,GAAAnpC,EAAAC,GAAA,WAAAoZ,MAAyC9T,KAAA,iBAAkBvF,GAAAiO,EAAAoL,KAAc,WAAa1O,GAAA3K,EAAAqZ,OACrKgJ,GAAAgD,GAAA,WAAgB,GAAAhM,GAAArW,IAAW,OAAAgmC,IAAAhmC,MAAAuC,KAAA,SAAAoF,GAAiC,GAAA3K,GAAAipC,GAAA5vB,EAAA8vB,GAAA9vB,EAAA1O,GAAA,GAAuB,OAAA3K,GAAAgiD,OAAA3Y,GAAArpC,EAAAgiD,UAAA,GAAA7/B,GAAA,SAAA9I,EAAA1O,GAAmD,GAAA1K,MAAA9B,EAAA6B,EAAAiiD,YAA0B9jD,GAAA4qC,UAAA,SAAAp+B,IAAwBA,IAAAiK,OAAApX,SAAAyC,EAAArC,KAAA+M,EAAAzJ,OAAAyJ,EAAA,YAAA0O,EAAApZ,IAA4D9B,EAAAG,QAAA,SAAA+a,GAAsB1O,EAAAhM,MAAA0a,EAAAzE,OAAA+zB,iBAAgCpjC,KAAA,SAAAoF,GAAmB,GAAA3K,MAAQC,IAAM,OAAAoZ,IAAA,CAAW,IAAApZ,EAAA,EAAQA,EAAA0K,EAAAjN,OAAWuC,IAAAD,EAAA2K,EAAA1K,GAAAoZ,EAAA5S,IAAAkE,EAAA1K,GAAAoZ,EAAApc,EAA2BgD,GAAAyzB,GAAAra,EAAApL,EAAAjO,GAAYqZ,EAAApL,EAAAjO,EAAM,MAAAC,MAAYoiB,GAAA6E,GAAA,SAAA7N,GAAiB,GAAArW,KAAAhD,EAAAtC,QAAA4rC,GAAAtmC,MAA2BA,KAAAhD,EAAApC,KAAAyb,IAC9cgJ,GAAAzF,GAAA,SAAAvD,GAAiByF,EAAA9b,KAAAhD,EAAA,SAAA2K,GAAsB,MAAAA,IAAA0O,IAAc,GAAArW,KAAAhD,EAAAtC,QAAAsF,KAAA2H,GAAA3H,KAAA2H,EAAA4+B,OAAA,eAC+IlnB,GAAAmnB,GAAA1rC,UAAeukB,GAAA7hB,IAAA,SAAA6Y,GAAkB,GAAA1O,GAAA3H,IAAW,OAAA6f,MAAAtd,KAAA,WAAgD,MAAAuxB,IAArBnsB,EAAA0O,EAAA8xB,QAAA9xB,OAAqCgJ,GAAAN,IAAA,SAAA1I,EAAA1O,GAAoB,GAAA3K,GAAAgD,IAAW,OAAA6f,MAAAtd,KAAA,WAA2B,GAAAtF,GAAA22B,GAAAjsB,EAAY,QAAA1K,EAAAD,EAAAirC,EAAA5xB,GAAArZ,EAAAqZ,EAAAid,QAAAjd,EAAApZ,MAAoCoiB,GAAA4oB,EAAA,SAAA5xB,GAAgB,GAAA1O,GAAA3H,IAAW,OAAA6f,MAAAtd,KAAA,WAA2BoF,EAAA0O,EAAAkd,WAAAld,MAChdgJ,GAAA6E,GAAA,SAAA7N,GAAiB7E,GAAAhY,QAAA2sB,GAAA3U,GAAAhY,OAAA,UAAA6c,IAAoCgJ,GAAAzF,GAAA,SAAAvD,GAAiB7E,GAAAhY,QAAAwtB,GAAAxV,GAAAhY,OAAA,UAAA6c,IAAkDgJ,GAAAsnB,GAAA7rC,UAAeukB,GAAA7hB,IAAA,WAAiB,MAAAqiB,IAAA,OAAgBR,GAAAN,IAAA,WAAiB,MAAAc,OAAYR,GAAA4oB,EAAA,WAAe,MAAApoB,OAAYR,GAAA6E,GAAA,aAAkB7E,GAAAzF,GAAA,aAC5CyF,GAAAunB,GAAA9rC,UAAeukB,GAAA7hB,IAAA,SAAA6Y,GAAkB,GAAA1O,GAAA3H,IAAW,OAAA6f,MAAAtd,KAAA,WAAgD,MAAAuxB,IAArBnsB,EAAA0O,EAAA8xB,QAAA9xB,OAAqCgJ,GAAAN,IAAA,SAAA1I,EAAA1O,GAAoB,GAAA3K,GAAAgD,IAAW,OAAA6f,MAAAtd,KAAA,WAA2B,GAAAtF,GAAA22B,GAAAjsB,EAAY,QAAA1K,EAAAD,EAAAirC,EAAA5xB,GAAArZ,EAAAqZ,EAAAid,QAAAjd,EAAApZ,MAAoCoiB,GAAA4oB,EAAA,SAAA5xB,GAAgB,GAAA1O,GAAA3H,IAAW,OAAA6f,MAAAtd,KAAA,WAA2BoF,EAAA0O,EAAAkd,WAAAld,MAAqBgJ,GAAA6E,GAAA,aACve7E,GAAAzF,GAAA,YAA+F,IAAA8tB,IACuQG,GADvQX,IAAW9iB,EAAAoiB,GAAAxpB,GAAA4pB,IAAWQ,IAAKhjB,EAAAoiB,GAAAxpB,GAAA4pB,IAAWU,IAAKljB,EAAAihB,GAAAroB,GAAA2pB,IAAYa,IAAQ5jB,GAAA,QAAAs7B,KAAA,OAAAl7B,GAAA,UAERyjB,IAAA3sC,UAAA0C,IAAA,SAAA6Y,EAAA1O,GAA+B,MAAAmgC,IAAA9nC,KAAAqW,EAAA+N,GAAA5mB,IAAAuqC,GAAA/nC,KAAAqW,EAAA1O,KAAwH8/B,GAAA3sC,UAAAikB,IAAA,SAAA1I,EAAA1O,EAAA3K,GAAiC,GAAAC,GAAA8qC,GAAA/nC,KAAAqW,EAAArZ,GAAA7B,EAAA6E,KAAAiL,EAAA68B,GAAA9nC,KAAAqW,EAAA+N,EAAyC,OAAAnZ,GAAA8T,IAAA9hB,EAAA0K,GAAApF,KAAA,WAAkC,MAAA0I,GAAAzN,IAAAP,KAAgBsF,KAAA,SAAAoF,GAAmB,SAAA0O,EAAA+N,IAAAjpB,EAAAwM,EAAA1K,GAAA0K,MAG5b8/B,GAAA3sC,UAAAiC,EAAA,SAAAsZ,GAA2B,GAAAA,KAAA5S,EAAA,CAAW,GAAAkE,GAAA0O,IAAAhV,GAAc,UAAAsG,EAAA,OAAA3K,KAAAgD,MAAAqW,EAAA,CAAgC,GAAApZ,GAAA+C,KAAA2H,EAAA3K,OAAgB,KAAAC,MAAA,KAAiC,IAAA9B,GAAAqW,GAAA4hB,aAAA+U,QAAAnrC,EAAgC7B,KAAA8B,IAAA+C,KAAA2H,EAAA3K,GAAA7B,EAAA6E,KAAAhD,UAA+B,OAAA2K,EAAAgJ,QAAA3Q,KAAAhG,EAAAgG,KAAAyD,IAAAzD,KAAAqW,EAAA1O,GAAA,CAAgH,OAAhE,KAAA0O,MAAAyxB,GAAA9nC,KAAA,SAAA4Z,GAAA5Z,KAAAqf,GAAAmpB,GAAAxoC,MAAgEA,KAAA6f,EAAA,GAAA7iB,EAAAwU,GAAA4hB,aAAA+U,QAAAxgC,IAAA1K,EAAAoZ,IAAArJ,YAAAhQ,EAAA,OAAAC,EAAAuU,GAAA4hB,aAAAE,QAAA3rB,EAAA1K,GAAAuU,GAAA4hB,aAAAG,WAAA5rB,OAAgI,IAAA3H,KAAA2H,OAAA1K,OAAA,KAAAoZ,MAAA,MAAyD,IAAApL,GAAAjL,IAC7ehD,GAAA,eAAa,KAAAqZ,OAAApL,EAAAtD,OAAA6J,GAAA4hB,aAAA+U,QAAAxgC,KAAAsD,EAAAtD,KAAA6J,GAAA4hB,aAAA+U,QAAAxgC,GAAAsD,EAAAjO,EAAA2K,KAA2GD,IAAA4oB,IAAA,IAAAA,IAAA9e,GAAA4hB,aAAA+U,QAAAxgC,KAAA0O,IAAArJ,UAAAqJ,IAAArJ,WAAAqJ,IAAAoyB,SAAA5rC,WAAAG,EAAA,IAAAA,SAA2GimB,IAAA5M,EAAAiE,EAAAta,KAAAhD,EAAAgD,QAA0BynC,GAAA3sC,UAAAkC,EAAA,SAAAqZ,GAA2BrW,KAAAqW,MAAA4M,GAAAjjB,KAAAqW,KAAA,SAAAA,GAAmCA,MAA2C,IAAAuyB,KAAQ1rC,KAAA,YAAAknB,EAAA,QAAyY/E,IAAAypB,GAAAhuC,UACvvBukB,GAAA3F,GAAA,WAAgB,MAAA1Z,MAAAmb,GAAAnb,KAAAmb,GAAAnb,KAAAmb,GAAAqX,KAAAjwB,KAAA,WAAoD,qBAAA2wB,IAAA,2BAAA1hB,IAAA,KAAAu3B,IAAA,kDAAmH,aAAA7V,GAAA,wBAAA1hB,IAAA,KAAAu3B,IAAA,4CAA2G,sBAAA7V,IAAA,qCAAA1hB,IAAA,KAAAu3B,IAAA,6CAAwH,sBAAA7V,IAAA,4BAAA1hB,IAAA,KAAAu3B,IAAA,iDACzZ,WAAY,SAAAxb,IAAA,wBACblO,GAAA7D,GAAA,SAAAnF,EAAA1O,GAA2E,MAAxDA,GAAA,GAAA4lB,IAAA,gDAAwD1N,MAAYR,GAAAvB,GAAA,WAAgB,MAAAgC,IAAA,GAAAyN,IAAA,iDAAgElO,GAAAD,GAAA,WAAgB,UAAUC,GAAAL,GAAA,WAAgB,UAAUK,GAAAtB,GAAA,WAAgB,UAC3OsB,GAAA9D,GAAA,SAAAlF,EAAA1O,EAAA3K,GAAqB,GAAAgD,KAAAhD,EAAA,MAAA8iB,IAAA,GAAAyN,IAAA,8BAAwD,IAAAtwB,GAAA+C,KAAA7E,EAAAqW,GAAArV,SAAA8O,EAAA,KAAAxH,EAAA,KAAAxJ,EAAA,KAAAwD,EAAA,IAAoD,OAAAuC,MAAAhD,EAAAmjB,GAAAN,KAAAtd,KAAA,WAA2C,MAAN24B,IAAAvzB,GAAM6hC,GAAAvsC,KAAasF,KAAA,WAAkB,MAAA4mC,IAAAlsC,EAAAoZ,EAAA1O,EAAA3K,KAAmBuF,KAAA,WAAkB,UAAA4c,GAAA,SAAA9I,EAAA1O,GAA2BlE,EAAA,WAAa,GAAAkE,GAAAurB,GAAA,mCAAA1hB,GAAwI,OAA1F6E,KAAI,kBAAA1O,QAA2B1K,EAAAoZ,GAAA,kBAAApZ,GAAAoZ,EAAA5H,QAAAxR,EAAAoZ,EAAA5H,QAAAxR,EAAAoZ,EAAA,OAA2D,GAAUpZ,EAAA+d,GAAAvX,GAAQxJ,EAAA,WAAagR,MAAA8c,GAAA9qB,EAAAgmB,GAAA1gB,KAAA,WAA8BoF,EAAA,GAAA4lB,IAAA,mCAC7d9vB,EAAA,WAAa82B,MAAAt6B,KAAWkB,EAAAyV,iBAAA,SAAA3W,GAAA,GAAkC0zB,KAAAd,cAAAvZ,MAAA,YAAAnY,EAAAyV,iBAAA,mBAAAnT,GAAA,KAAgFxC,EAAA,SAAAob,GAAiB,MAAAqzB,IAAAzsC,GAAAsF,KAAA,WAA6B,KAAA8T,SAAa,WAAapc,GAAAkB,EAAA+rB,oBAAA,SAAAjtB,GAAA,GAAwCwD,GAAAtC,EAAA+rB,oBAAA,mBAAAzpB,GAAA,GAAkDwN,KAAAs7B,SAAc9iC,GAAAxG,EAAA6e,GAAArY,GAAWxG,EAAAD,EAAA,QAMrUqiB,GAAArE,GAAA,SAAA3E,GAAiBrW,KAAA2H,EAAA/M,KAAAyb,GAAemzB,GAAAxpC,MAAA/E,EAAA,SAAA0M,GAAuB,uCAAAA,EAAA1G,OAAA0G,EAAA,GAAAwzB,IAAA,4BAAA5N,IAAA,kBAAAlX,EAAA1O,OAAmH0X,GAAAvD,GAAA,SAAAzF,GAAiByF,EAAA9b,KAAA2H,EAAA,SAAAA,GAAsB,MAAAA,IAAA0O,IAAmD,IAAAyzB,KAAQ5sC,KAAA,kBAAAknB,EAAA,UACxJ6lB,IAAAnvC,UAAAib,MAAA,WAA8B/V,KAAAiL,GAAA,EAAUjL,KAAAqW,EAAAyF,GAAA9b,KAAAhG,GAAkBgG,KAAAqW,EAAAs0B,GAAA3qC,KAAAob,EAAApb,KAAA/F,EAAA+F,KAAA0a,IAC9KuvB,GAAAnvC,UAAAoc,UAAA,SAAAb,GAAgE,GAA7BsF,EAAA3b,KAAAqf,EAAAhJ,IAAArW,KAAAqf,EAAAzkB,KAAAyb,IAA6BrW,KAAAiL,EAAA,CAAY,GAAAtD,GAAA3H,IAAWgqC,IAAAhqC,KAAAyD,GAAAlB,KAAA,SAAA8T,GAA4BA,EAAA0zB,GAAApiC,EAAAlE,GAAAlB,KAAA,WAA0BsoC,GAAAljC,GAAA1M,EAAA,SAAAob,GAAoB,GAAArZ,GAAA,GAAAm+B,IAAA,4BAAA5N,IAAA,+CAA4Fwd,IAAA10B,IAAA1O,EAAA5K,EAAAC,OAAgB8tC,GAAAnjC,KAAQ1M,EAAA,WAAe6vC,GAAAnjC,OAAUsiC,GAAAnvC,UAAAqkD,YAAA,SAAA9oC,GAAqCyF,EAAA9b,KAAAqf,EAAA,SAAA1X,GAAsB,MAAAA,IAAA0O,KACzW4zB,GAAAnvC,UAAAiC,EAAA,SAAAsZ,GAA2B,IAAAA,EAAA,SAAAkX,IAAA,qBAAwC,QAAA5lB,IAAA,EAAA3K,EAAA,EAAiBA,EAAAgD,KAAAqf,EAAA3kB,OAAgBsC,IAAA,CAAK,GAAAC,GAAA+C,KAAAqf,EAAAriB,EAAgB,IAAAC,EAAAwgB,GAAApH,EAAA1O,EAAA0O,EAAArZ,GAAA,EAAkB2K,EAAA3H,KAAA2H,EAAA0O,EAAA1O,OAAA0X,EAAAhJ,EAAApZ,GAA0B0K,GAAA,CAAK,QAAkB,MAAXqjC,IAAAhrC,KAAAhD,GAAW2K,EAAU,IAAAy3C,IAAA,GAAA9qB,IAAA,SAAAoX,GAAA,GAAApX,IAAA,QAA0C2V,IAAAnvC,UAAA6zB,GAAA,WAA2B,MAAA3uB,MAAAhD,EAAA2xB,MAC3Qsb,GAAAnvC,UAAAygB,GAAA,SAAAlF,EAAA1O,EAAA3K,GAAgC,GAAA7B,GAAA8B,EAAA+C,IAAa,OAAA6pC,IAAA7pC,KAAAyD,GAAAlB,KAAA,WAAkC,MAAAtF,GAAAoZ,EAAAkF,GAAAlF,EAAA1O,EAAA3K,GAAA/B,EAAA,SAAAob,GAAmC,GAAA00B,GAAA10B,GAAA,SAAAkX,IAAA,8CAAwE,OAAJpyB,GAAAkb,EAAI0zB,GAAA9sC,EAAAwG,GAAAlB,KAAA,WAA+B,KAAApH,OAAWoH,KAAA,WAAkB,MAAAtF,GAAAoZ,EAAA+I,KAAA,GAAAD,GAAA,cAAkC4qB,GAAA9sC,EAAAwG,GAAAlB,KAAA,WAA0B,MAAAtF,GAAA0xB,OAAcpsB,KAAA,cAAmBtH,EAAA,mBAAuBgvC,GAAAnvC,UAAA0gB,GAAA,SAAAnF,EAAA1O,EAAA3K,EAAAC,GAAkC,MAAA+C,MAAAqW,EAAAmF,GAAAxe,EAAA,SAAAA,GAA+BqZ,EAAA2D,GAAArS,EAAA,KAAA3K,EAAAC,IAAiBmiD,GAAA5hD,OAAY,IAAA2tC,MACzTjB,IAAApvC,UAAAib,MAAA,WAA8B/V,KAAA2H,EAAA,KAAY3H,KAAAqW,IAAArW,KAAAqW,EAAAkwB,SAAAvmC,KAAAqW,EAAA,OACzL6zB,GAAApvC,UAAAukB,EAAA,SAAAhJ,EAAA1O,GAA6B,IAAA0O,EAAA,MAAAyJ,IAAA,GAAAyN,IAAA,sBAA4CvtB,MAAA+V,QAAa/V,KAAAyD,GAAA,CAAU,IAAAzG,GAAAqZ,EAAA1O,EAAA1K,EAAAoZ,EAAArZ,EAAA7B,EAAAkb,KAAA,gCAAAA,IAAApV,KAAAgK,EAAAoL,KAAA,oDAAAA,IAAApV,IAA8Q,OAA1I,WAAAjE,GAAA7B,GAAA8P,EAAAoL,KAAA+0B,GAAAprC,MAAA,OAAAqW,OAAAwJ,MAAAxJ,EAAA1O,EAAAsT,GAAAje,EAAAC,GAAAouC,GAAArrC,KAAAqW,EAAA1O,GAAAmY,GAAA,GAAAyN,IAAA,wBAAA6d,GAAAprC,MAAA,aAAAqW,EAAAwJ,MAA0IxJ,GAE9W6zB,GAAApvC,UAAA6zB,GAAA,WAA2B,GAAAtY,GAAArW,IAAW,WAAAmf,GAAA,SAAAxX,EAAA3K,GAA2BqZ,EAAA1O,EAAA0O,EAAA1O,IAAApF,KAAAoF,EAAA3K,IAAAqZ,EAAApL,EAAArQ,KAAA+M,GAAA0O,EAAArZ,EAAApC,KAAAoC,GAAAyuC,GAAAp1B,OAAsL8zB,GAAArvC,UAAAukB,EAAA,SAAAhJ,EAAA1O,GAA6B,IAAA0O,EAAA,MAAAyJ,IAAA,GAAAyN,IAAA,sBAA4C,IAAAvwB,GAAAqZ,EAAA1O,EAAA1K,EAAAoZ,EAAArZ,CAAsG,OAAtFqZ,MAAA1O,EAAAqS,GAAA3D,EAAA1O,EAAA,KAAA0O,MAAArZ,GAAAqZ,EAAAwJ,MAAAxJ,EAAA1O,EAAAsT,GAAAje,EAAAC,GAAA0uC,GAAAt1B,EAAA1O,GAAAmY,GAAA,GAAAyN,IAAA,uBAAsFlX,GAChPu1B,GAAA9wC,UAAAukD,QAAA,SAAAhpC,GAA6D,MAA5BA,GAAAykB,GAAA96B,KAAAq9C,eAAAhnC,GAA4BrW,KAAAqW,MAA4Sy1B,GAAAhxC,UAAAozC,MAAA,WAA8BluC,KAAAqW,EAAArW,KAAAhD,EAAcgvC,GAAAhsC,MAAA,IAClUksC,GAAApxC,UAAAglB,EAAA,WAA0B,OAAOstB,OAAAptC,KAAAiL,EAAAtD,EAAAykC,aAAApsC,KAAAqW,EAAAuiB,YAAA54B,KAAA2H,EAAA8kC,eAAAzsC,KAAAhD,IACtDkvC,GAAApxC,UAAAgH,SAAA,SAAAuU,GAAwC,MAANA,OAAMrW,KAAA2H,IAAA3H,KAAAqW,EAAAyJ,GAAA,GAAAyN,IAAA,uBAAAlX,IAAArW,KAAA2H,GAAAqvB,KAAAh3B,KAAAhD,EAAA,IAAAgD,KAAAqW,EAAAk2B,GAAAvsC,MAAkGo9B,WAAA,gBAAAC,cAAAr9B,KAAAqW,IAAgDwJ,GAAA,MAAAA,IAAa+Y,YAAA54B,KAAA2H,EAAA8kC,eAAAzsC,KAAAhD,EAAAovC,aAAApsC,KAAAqW,KAAoNq2B,GAAA5xC,UAAAglB,EAAA,WAA0B,OAAO6uB,YAAA3uC,KAAA2H,EAAA+mC,UAAA1uC,KAAAqW,IAAgOD,EAAA82B,GAAA9oB,IAE93BhO,EAAA+2B,GAAAxlB,IAAQwlB,GAAAryC,UAAAk8B,GAAA,SAAA3gB,GAA4BrW,KAAAia,GAAA5D,EAAUomB,GAAAz8B,KAAAhD,EAAAqZ,IAAc82B,GAAAryC,UAAAm3C,EAAA,WAA0B,MAAAjyC,MAAAia,IAAwMkzB,GAAAryC,UAAAihB,GAAA,WAA2B,MAAAC,GAAAhc,KAAA2tC,IAA+GR,GAAAryC,UAAA4gB,GAAA,WAA2B1b,KAAA/F,EAAA0N,IAAAskC,GAAAjsC,KAAA/F,GAAA+F,KAAA/F,EAAAi0C,UAGzMtZ,GAAAuY,GAAAryC,UAAA,yBAEuEukB,GAAA8tB,GAAAryC,UAAeukB,GAAA4wB,OAAA,WAAoB,GAAA55B,GAAArW,IAAW,OAAA2tC,IAAA3tC,KAAA8uC,GAAA9uC,MAAAuC,KAAA,WAAuC,MAAA6sC,IAAA/4B,GAAA9T,KAAA,WAA6B,MAAA8rC,IAAAh4B,KAAa9T,KAAAssC,QAC3UxvB,GAAAsI,EAAA,SAAAtR,GAAgB,GAAA1O,GAAA3H,IAAW,OAAA2tC,IAAA3tC,KAAA8uC,GAAA9uC,MAAAuC,KAAA,WAAuC,MAAAoF,GAAA0X,EAAAvd,SAAAuU,KAAuB9T,KAAA,SAAA8T,GAAmB,IAAAA,EAAA,SAAAkX,IAAA,iBAA+I,OAA3GlX,GAAAuiB,aAAAjxB,EAAAsV,KAAAswB,GAAA5lC,EAAA0O,EAAAuiB,aAAAhR,GAAAjgB,EAAA,GAAAulC,IAAA,kBAAuEgC,GAAAvnC,EAAA,eAAA0O,EAAA+1B,cAAoC/1B,EAAAuiB,gBAClYvZ,GAAAvd,SAAA,SAAAuU,GAA8a,MAAvZ+hC,IAAA,4GAAAA,GAAA,gIAAAr6C,UAAA,kBAAAA,SAAAgQ,MAAAhQ,QAAAgQ,KAAA,2GAAuZ/N,KAAA2nB,EAAAtR,IAE9agJ,GAAAkC,GAAA,SAAAlL,GAA2B,KAAVA,IAAAipC,SAAUjpC,EAAA3b,OAAA,SAAA6yB,IAAA,iBAA+ClX,KAAA,GAAOm3B,GAAAxtC,MAAS+sC,IAAA12B,EAAAkpC,QAAAvS,YAAA32B,EAAA22B,YAAAC,SAAA52B,EAAAs5B,SAAAhU,MAAAtlB,EAAAslB,MAAA4S,gBAAAl4B,EAAAk4B,cAAA7T,YAAArkB,EAAAqkB,YAAAiU,YAAAt4B,EAAAs4B,YAAAD,UAAAr4B,EAAAq4B,WAAsL,QAAA/mC,GAAA6nC,GAAAn5B,GAAArZ,EAAA,EAAoBA,EAAA2K,EAAAjN,OAAWsC,IAAAgyC,GAAAhvC,KAAA2H,EAAA3K,GAAkBkyC,IAAAlvC,KAAA,gBAAAA,KAAA27B,OAAAtlB,EAAAmpC,cAAAx/C,KAAA4uC,cAAA5uC,KAAA4uC,aAAAl0C,UAClK2kB,GAAAxC,GAAA,SAAAxG,GAAiB,GAAA1O,GAAA3H,KAAAhD,EAAA,IAAkB,OAAA2wC,IAAA3tC,KAAAqW,EAAArZ,EAAAgD,KAAAhD,EAAAgD,KAAA+sC,KAAAxqC,KAAA,SAAA8T,GAAgG,MAA5Ci5B,IAAA3nC,EAAA0O,GAAQrZ,EAAA6yC,GAAAloC,EAAA0O,EAAA,kBAA2B1O,EAAA3N,EAAA,KAAS2N,EAAAsoC,WAAkB1tC,KAAA,WAAkB,MAAAvF,MAAS,IAAOqiB,GAAAmC,GAAA,SAAAnL,GAAiB,MAAArW,MAAA6c,GAAAxG,GAAA9T,KAAA,eACjO8c,GAAA1C,GAAA,SAAAtG,GAAiB,GAAA1O,GAAA3H,KAAAhD,EAAA,IAAkB,OAAA2wC,IAAA3tC,KAAA4vC,GAAA5vC,KAAAqW,EAAAgiB,YAAA91B,KAAA,WAAoD,MAAAoF,GAAAggB,MAAaplB,KAAA,SAAAvF,GAAmB,MAAAqZ,GAAA1O,IAAA3K,OAAkBuF,KAAA,SAAA8T,GAAoC,MAAjBrZ,GAAA6yC,GAAAloC,EAAA0O,EAAA,QAAiB25B,GAAAroC,EAAA0O,KAAe9T,KAAA,WAAkB,MAAAvF,OAAaqiB,GAAA2B,GAAA,SAAA3K,GAAiB,MAAArW,MAAA2c,GAAAtG,GAAA9T,KAAA,SAAA8T,GAAmC,MAAAA,GAAAm1B,QACrZnsB,GAAAwD,GAAA,SAAAxM,EAAA1O,GAAmB,GAAA3K,GAAAgD,IAAW,OAAA2tC,IAAA3tC,KAAA4vC,GAAA5vC,KAAA,SAAAuC,KAAA,WAA+C,MAAAspC,IAAAmC,GAAAhxC,GAAAqZ,EAAA1O,EAAA2S,EAAAtd,EAAA2f,GAAA3f,QAAmCqiB,GAAAoC,GAAA,SAAApL,EAAA1O,GAAmB,GAAA3K,GAAAgD,IAAW,OAAA2tC,IAAA3tC,KAAA6f,KAAAtd,KAAA,WAAkC,MAAAspC,IAAAmC,GAAAhxC,GAAAqZ,EAAA1O,EAAA2S,EAAAtd,EAAA6f,GAAA7f,OAA+B,IAC/MqiB,GAAAiR,GAAA,SAAAja,GAAiB,GAAA1O,GAAA3H,IAAW,OAAA2tC,IAAA3tC,UAAA2nB,IAAAplB,KAAA,SAAAvF,GAAwC,MAAA2K,GAAA3K,EAAAszB,GAAAtzB,EAAAqZ,KAAmB9T,KAAA,SAAA8T,GAA2B,MAARi5B,IAAA3nC,EAAA0O,GAAQ1O,EAAAsoC,aAAsB5wB,GAAAuD,GAAA,SAAAvM,GAAiB,GAAA1O,GAAA3H,IAAW,OAAA2tC,IAAA3tC,UAAA2nB,IAAAplB,KAAA,SAAAvF,GAAwC,MAAAqZ,GAAA1O,IAAA3K,OAAkBuF,KAAA,SAAA8T,GAA2B,MAARi5B,IAAA3nC,EAAA0O,GAAQ1O,EAAAsoC,aAAsB5wB,GAAAi2B,GAAA,SAAAj/B,GAAiB,GAAA1O,GAAA3H,IAAW,OAAA2tC,IAAA3tC,UAAA2nB,IAAAplB,KAAA,SAAAvF,GAAwC,MAAA2K,GAAA3K,EAAAs4C,GAAAt4C,EAAAqZ,KAAmB9T,KAAA,SAAA8T,GAA2B,MAARi5B,IAAA3nC,EAAA0O,GAAQ1O,EAAAsoC,aACjY5wB,GAAA/B,GAAA,SAAAjH,GAAiB,YAAAA,EAAA22B,iBAAA,KAAA32B,EAAA42B,SAAA,MAAA6B,IAAA9uC,KAA+D,IAAA2H,GAAA3H,IAAW,OAAA2tC,IAAA3tC,UAAA2nB,IAAAplB,KAAA,SAAAvF,GAAwC,MAAA2K,GAAA3K,EAAAsgB,GAAAtgB,GAAiBgwC,YAAA32B,EAAA22B,YAAA2C,SAAAt5B,EAAA42B,aAAgD1qC,KAAA,SAAA8T,GAA6N,MAA1Mi5B,IAAA3nC,EAAA0O,GAAQ64B,GAAAvnC,EAAA,cAAA0O,EAAA22B,aAAA,MAAwCkC,GAAAvnC,EAAA,WAAA0O,EAAAs5B,UAAA,MAAkC1sB,GAAAtb,EAAAinC,aAAA,SAAAv4B,GAA6B,aAAAA,EAAAgiB,aAAAzD,GAAAve,EAAA,cAAA1O,EAAAqlC,aAAApY,GAAAve,EAAA,WAAA1O,EAAAslC,aAA2FoB,GAAA1mC,KAAapF,KAAAssC,MAC9axvB,GAAAqD,GAAA,SAAArM,GAAiB,GAAA1O,GAAA3H,IAAW,OAAA2tC,IAAA3tC,KAAAovC,GAAApvC,MAAAuC,KAAA,SAAAvF,GAAwC,MAAA2e,GAAAozB,GAAApnC,GAAA0O,GAAAmoB,GAAA72B,EAAA3K,KAAAqZ,IAAA9T,KAAA,SAAA8T,GAAkD,GAAArZ,KAAkJ,OAAzIimB,IAAA5M,EAAAo5B,qBAAA,SAAAp5B,GAAqCrZ,EAAAqZ,EAAAgiB,aAAA,IAAqBpV,GAAA8rB,GAAApnC,GAAA,SAAA0O,GAAoBrZ,EAAAqZ,IAAA44B,GAAAtnC,EAAA0O,KAAgBrZ,EAAA49B,GAAAqiB,cAAAroB,GAAAjtB,EAAA,oBAA2C0mC,GAAA1mC,KAAa0mC,GAAA1mC,GAAApF,KAAA,WAAwB,SAAAgrB,IAAA,0BAC7SlO,GAAAhd,OAAA,WAAoB,GAAAgU,GAAArW,IAAW,OAAA2tC,IAAA3tC,UAAA2nB,IAAAplB,KAAA,SAAAoF,GAAwC,MAAAi2B,IAAAvnB,EAAArZ,EAAA0hD,IAAiB/lB,QAAAhxB,MAAYpF,KAAA,WAAkBqlB,GAAAvR,EAAA,GAAA62B,IAAA,mBAA2B3qC,KAAA,WAAmB,OAAAoF,GAAA,EAAYA,EAAA0O,EAAAwJ,EAAAnlB,OAAaiN,IAAA0O,EAAAwJ,EAAAlY,GAAA4+B,OAAA,cAAiCuH,IAAAz3B,EAAA,MAAW03B,GAAA13B,EAAA,MAAWA,EAAAwJ,KAAOxJ,EAAAtZ,GAAA,EAAOoxC,GAAA93B,GAAMue,GAAAve,EAAA,qBAAyBA,SAAA8oC,YAAA9oC,MACjSgJ,GAAA5B,GAAA,SAAApH,EAAA1O,GAAmB,yBAAA0O,IAAArW,KAAAyD,GAAA,OAAAkE,GAAA3H,KAAAiL,GAAA,kBAAAoL,IAAArW,KAAAyD,GAAA,OAAAkE,GAAA3H,KAAAiL,GAAA,mBAAAoL,IAAArW,KAAAqwC,GAAA,OAAA1oC,GAAA,qBAAA0O,IAAArW,KAAAqwC,GAAA,OAAA1oC,IAA8L0X,GAAArF,GAAA,SAAA3D,EAAA1O,EAAA3K,EAAAC,GAAuB,gBAAAoZ,GAAA,kBAAAA,GAAApZ,IAAA+C,KAAAyD,GAAA,QAAAzG,GAAAgD,KAAAob,EAAApb,KAAAob,EAAApe,GAAA2K,IAAA3K,GAAAgD,KAAAiL,GAAAjL,KAAAiL,EAAAtD,GAAA3H,KAAA2H,IAAA3H,KAAA2H,EAAA4+B,SAAAvmC,KAAA2H,EAAA,YAAA3H,MAAAiL,QAAAjL,MAAAob,IACxOiE,GAAApE,GAAA,SAAA5E,EAAA1O,GAAmB,sBAAA0O,GAAA1O,IAAA3H,KAAAyD,GAAA,MAAA6W,EAAAta,KAAA2d,GAAA3d,MAAA,kBAAAqW,GAAA1O,IAAA3H,KAAAyD,GAAA,MAAA6W,EAAAta,KAAA4d,GAAA5d,MAAA,mBAAAqW,IAAArW,KAAAqwC,GAAA,OAAA1oC,EAAA2S,EAAAta,KAAA2d,GAAA3d,MAAA,qBAAAqW,IAAArW,KAAAqwC,GAAA,OAAA1oC,EAAA2S,EAAAta,KAAA4d,GAAA5d,MAAA,MAA0Oqf,GAAA4B,GAAA,SAAA5K,GAAiB,GAAA1O,GAAA3H,IAAW,OAAAkwC,IAAAlwC,KAAA,eAAAqW,EAAA,WAA2C,MAAAu5B,IAAAjoC,EAAA0O,EAAAgiB,YAAA91B,KAAA,WAA0C,MAAA8rC,IAAA1mC,OAAe,IAAM0X,GAAAqC,GAAA,SAAArL,GAAiB,MAAA65B,IAAAlwC,KAAA,iBAAAqW,EAAA,WAA6C,MAAAwJ,QAAW,IAEhUR,GAAA6B,GAAA,SAAA7K,GAAiB,GAAA1O,GAAA3H,IAAW,OAAAowC,IAAApwC,KAAA,kBAAAqW,EAAA,WAA8C,MAAAu5B,IAAAjoC,EAAA0O,EAAAgiB,cAA0B,IAAMhZ,GAAAsC,GAAA,SAAAtL,GAAiB,MAAA+5B,IAAApwC,KAAA,oBAAAqW,EAAA,WAAgD,MAAAwJ,QAAW,IAE5MR,GAAA1B,GAAA,SAAAtH,EAAA1O,GAAmB,GAAA3K,GAAAgD,IAAWA,MAAA2H,IAAA3H,KAAA2H,EAAA4+B,SAAAvmC,KAAA2H,EAAA,KAAsC,IAAA1K,GAAA,IAA2K,OAAA0wC,IAAA3tC,KAA3KA,KAAA2nB,IAAAplB,KAAA,SAAAtF,GAAuC,MAAAkiC,IAAAniC,KAAeq8B,WAAAhjB,EAAAklB,UAAA5zB,EAAAgxB,QAAA17B,MAAqCsF,KAAA,SAAA8T,GAAoC,MAAjBpZ,GAAA4yC,GAAA7yC,EAAAqZ,EAAA,QAAiB25B,GAAAhzC,EAAAqZ,KAAe9T,KAAA,WAAkB,MAAAtF,OAC1VoiB,GAAAzB,GAAA,SAAAvH,EAAA1O,GAAmB,GAAA3K,GAAAgD,IAAWA,MAAA2H,IAAA3H,KAAA2H,EAAA4+B,SAAAvmC,KAAA2H,EAAA,KAAsC,IAAA1K,GAAA,IAAmM,OAAA0wC,IAAA3tC,KAAnM6f,KAAAtd,KAAA,WAAiC,MAAAk2B,IAAA4G,GAAAriC,KAAkBq8B,WAAAhjB,EAAAklB,UAAA5zB,IAAyB3K,EAAA+vC,OAASxqC,KAAA,SAAA8T,GAA+D,MAA5CpZ,GAAA4yC,GAAA7yC,EAAAqZ,EAAA,kBAA2Bi5B,GAAAtyC,EAAAqZ,GAAQrZ,EAAAhD,EAAA,KAASgD,EAAAizC,WAAkB1tC,KAAA,WAAkB,MAAAtF,MAAW,IAAqBoiB,GAAA6S,GAAA,SAAA7b,GAAiB,GAAA1O,GAAA3H,KAAAhD,EAAA,IAAkB,OAAA2wC,IAAA3tC,UAAA2nB,IAAAplB,KAAA,SAAAoF,GAA4C,MAAJ3K,GAAA2K,MAAI,KAAA0O,GAAAiG,EAAAjG,MAAsCkgB,GAAA,GAAAT,IAAAzf,MAAe9T,KAAA,SAAA8T,GAAmB,MAAA1O,GAAA3K,EAAAk1B,GAAAl1B,EAAAqZ,KAAmB9T,KAAA,SAAA8T,GAAmB,GAAA1O,EAAAg0B,OAAAtlB,EAAA,MAAA1O,GAAAsoC,WAAgC1tC,KAAA,gBACpO8c,GAAAk5B,OAAA,WAAoB,MAAAv4C,MAAA8f,KACzST,GAAAS,EAAA,WAAe,GAAAzJ,IAAO02B,IAAA/sC,KAAA+sC,IAAAC,YAAAhtC,KAAAgtC,YAAAC,SAAAjtC,KAAAitC,SAAAtR,MAAA37B,KAAA27B,MAAA4S,cAAAvuC,KAAAuuC,cAAA7T,YAAA16B,KAAA06B,YAAA8T,YAAAxuC,KAAAwuC,YAAAI,gBAAAxB,OAAAptC,KAAA4nB,EAAAylB,QAAArtC,KAAA5C,EAAAkwC,WAAAttC,KAAAijB,EAAAytB,gBAAA1wC,KAAAqf,EAAAS,IAAA6wB,gBAAA3wC,KAAAqwC,GAAA,KAAyY,OAApGrwC,MAAAyuC,UAAAhyB,EAAApG,EAAArW,KAAAyuC,SAAA3uB,KAAuCmD,GAAAjjB,KAAA4uC,aAAA,SAAAjnC,GAAgC0O,EAAAu4B,aAAAh0C,KAAAo6B,GAAArtB,MAA6B0O,EAE/Q,IAAAi6B,KAAQpzC,KAAA,eAAAknB,EAAA,UAA4R2sB,IAAAj2C,UAAA2I,EAAA,WAA0B,GAAA4S,GAAArW,KAAA2H,EAAA2gC,GAAA,QAAyB8I,IAAApxC,KAAA,WAAmB,MAAA6f,MAAAtd,KAAA,WAA2B,MAAA8T,GAAArZ,GAAA,SAAAqZ,EAAArZ,EAAAonB,EAAA/N,EAAA1O,EAAAnK,IAAAmK,EAAA0O,KAAA,OAA+C9T,KAAA,SAAAvF,GAAmB,GAAAA,EAAA,MAAAi0C,IAAA56B,EAAA,SAAA9T,KAAA,WAA0C8T,EAAArZ,EAAA2K,QAC3T,IAAAupC,KAAQh0C,KAAA,cAAAknB,EAAA,UAC9U2sB,IAAAj2C,UAAAgiB,GAAA,SAAAzG,GAA4B,GAAA1O,GAAA,KAAA3K,EAAAgD,IAAwB,OAANunC,IAAAlxB,GAAM+6B,GAAApxC,KAAA,WAA0B,MAAAqW,IAAArZ,IAAAonB,EAAApnB,EAAA2K,EAAAnK,IAAAR,MAAAqZ,GAAA9T,KAAA,SAAAtF,GAAsD,MAAJ0K,GAAA1K,EAAIg0C,GAAAj0C,EAAAqZ,KAAe9T,KAAA,WAA4B,GAAVvF,IAAAsrC,GAAAjyB,GAAU1O,EAAA,MAAA3K,GAAA2K,EAAAoX,IAAA/hB,IAAA2K,EAAA3K,EAAAqZ,KAA+BwJ,QAEgJzJ,EAAAo7B,GAAA7pB,IAAmEvR,EAAA27B,GAAA3tB,IAAgEhO,EAAA47B,GAAA5tB,IAAQ/E,GAAAmyB,GAAA12C,UACzeukB,GAAAvC,GAAA,SAAAzG,GAAgC,MAAfA,GAAArW,KAAAqf,EAAAvC,GAAAzG,GAAeqpB,GAAA1/B,KAAAqW,IAAkBgJ,GAAA2X,GAAA,SAAA3gB,GAAiBrW,KAAA6tC,IAAAx3B,GAAArW,KAAA/F,IAAA+F,KAAA6tC,EAAAx3B,EAAAomB,GAAAz8B,KAAAhD,EAAAgD,KAAA6tC,GAAAjmB,GAAA5nB,KAAA,GAAA+xC,IAAA/xC,KAAAiyC,QAA2E5yB,GAAA4yB,EAAA,WAAe,MAAAjyC,MAAA6tC,GAAexuB,GAAAyD,GAAA,WAAgB,GAAAzM,GAAA7E,GAAAc,SAAkBtS,MAAAg3B,GAAA3gB,IAAAopC,WAAAppC,EAAAopC,UAAA,IAAAppC,EAAAqpC,UAAArpC,EAAAspC,cAAA,YAA+EtgC,GAAA8B,GAAA,SAAA9K,GAAiBrW,KAAA6f,EAAAjlB,KAAAyb,GAAeqmB,GAAA18B,KAAAhD,EAAAzD,GAAAqH,YAAAkyB,GAAAv5B,GAAAqH,YAAAZ,KAAA6f,GAAA,MAAqE+H,GAAA5nB,KAAA,GAAAgyC,IAAAhyC,KAAA6f,KAAwBR,GAAAtD,GAAA,WAAgB,MAAAC,GAAAhc,KAAA6f,IACxSR,GAAAk5B,OAAA,WAAoB,OAAOnL,OAAA3kB,GAAAzoB,MAAApB,QAAAwuC,OAAAE,WAAA7kB,GAAAzoB,MAAApB,QAAA0uC,WAAAD,QAAA5kB,GAAAzoB,MAAA9C,KAAAq1C,YAAA7E,GAAA1tC,OAAA0tC,GAAA1tC,MAAA8f,MACsGT,GAAA5B,GAAA,SAAApH,EAAA1O,GAAmB,OAAA0O,GAAU,8CAAiD,4BAAArW,MAAAyD,GAAAkE,KAAA3H,KAAAiL,CAAiD,oBAClYoU,GAAArF,GAAA,SAAA3D,EAAA1O,EAAA3K,EAAAC,GAAuB,kBAAAoZ,GAAArW,KAAAyD,GAAAxG,IAAAD,GAAAgD,KAAAob,EAAApb,KAAAob,EAAApe,GAAA2K,IAAA3K,GAAAgD,KAAAiL,GAAAjL,KAAAiL,EAAAtD,GAAA3H,KAAA2H,IAAA3H,KAAA2H,EAAA4+B,SAAAvmC,KAAA2H,EAAA,YAAA3H,MAAAiL,QAAAjL,MAAAob,IAAkJiE,GAAApE,GAAA,SAAA5E,EAAA1O,GAAmB,2BAAA0O,GAAA,kBAAAA,GAAArW,KAAAyD,GAAAkE,GAAA3H,KAAAiL,EAAAqP,EAAAta,KAAAkgB,GAAAlgB,MAAA,MAC5Lqf,GAAAa,GAAA,SAAA7J,EAAA1O,GAAmB,GAAA3K,GAAAgD,IAAWqW,IAAGgjB,WAAAhjB,EAAAklB,UAAA5zB,GAA0B3H,KAAA2H,IAAA3H,KAAA2H,EAAA4+B,SAAAvmC,KAAA2H,EAAA,KAAsC,IAAA1K,GAAA,KAAA9B,EAAA,KAAA8P,EAAA+zB,GAAAhiC,IAAAqZ,GAAA9T,KAAA,SAAA8T,GAA+D,MAAhBpZ,GAAA89B,GAAA1kB,GAAQlb,EAAAu8B,GAAArhB,GAAQA,GAAgL,OAArKA,GAAArZ,EAAA0wC,EAAAnrC,KAAA,WAAsB,MAAA0I,KAAS1I,KAAA,SAAA8T,GAAmB,MAAA87B,IAAAn1C,EAAAqZ,KAAe9T,KAAA,WAAkB,MAAAwyB,KAAWyW,KAAAkC,GAAA1wC,GAAA28B,WAAA18B,EAAA6yC,mBAAA30C,EAAA40C,cAAA,aAAuErQ,GAAA1/B,KAAAqW,IAChVgJ,GAAA8C,GAAA,SAAA9L,GAAiB,IAAAod,KAAA,MAAA3T,IAAA,GAAAyN,IAAA,+CAAwE,IAAA5lB,GAAA3H,KAAAhD,EAAAu6B,GAAAlhB,EAAAgiB,YAAAp7B,EAAAo2B,KAAAl4B,EAAA,OAA4Cw4B,MAAAhB,OAAAlK,GAAAzoB,MAAApB,QAAA0uC,YAAAj3B,EAAAkjB,kBAAAp+B,EAAA8pC,GAAAxc,GAAAzoB,MAAApB,QAAA0uC,WAAA7kB,GAAAzoB,MAAApB,QAAAwuC,OAAA3kB,GAAAzoB,MAAA9C,KAAA,iBAAAmZ,EAAA,KAAApZ,EAAA1D,GAAAqH,aAAA,MAA0L,IAAAqK,GAAA+lB,GAAA71B,EAAA6B,KAAAse,GAAAte,KAAAqe,GAC/K,OAD2Mre,GAAAk1C,GAAAlyC,MAAAuC,KAAA,SAAAoF,GAA4B,MAAAsjC,IAAAtjC,EAAAsD,EAAA,iBAAAoL,EAAApZ,IAAA9B,KAAwCoH,KAAA,WAAkB,UAAA4c,GAAA,SAAA9I,EAAArZ,GAA2B2K,EAAAqS,GAAA,yBAAAuT,IAAA,2BAC5c5lB,EAAAlE,GAAKkE,EAAAsD,EAAAoL,EAAM1O,EAAAyT,EAAApe,EAAM2K,EAAAlE,EAAAxG,EAAM0K,MAAA0O,EAAAmF,GAAA7T,EAAA,iBAAAsD,EAAAhO,OAAqCsF,KAAA,SAAA8T,GAA4B,MAATpL,IAAA8lB,GAAA9lB,GAASoL,EAAA0e,GAAA1e,GAAA,OAAoBpb,EAAA,SAAAob,GAAyB,KAATpL,IAAA8lB,GAAA9lB,GAASoL,IAAWqpB,GAAA1/B,KAAAhD,IAAkBqiB,GAAAsL,GAAA,SAAAtU,GAAiB,IAAAod,KAAA,MAAA3T,IAAA,GAAAyN,IAAA,+CAAwE,IAAA5lB,GAAA3H,IAA8G,OAAA0/B,IAAA1/B,KAA9GkyC,GAAAlyC,MAAAuC,KAAA,WAAsC,MAAA4uC,IAAAxpC,EAAA0X,KAAe9c,KAAA,WAAkB,MAAAoF,GAAA0O,EAAAkF,GAAA,oBAAAlF,OAClUgJ,GAAAsP,GAAA,WAAgB,IAAA8E,KAAA,MAAA3T,IAAA,GAAAyN,IAAA,+CAAwE,IAAAlX,GAAArW,IAA+F,OAAA0/B,IAAA1/B,KAA/FkyC,GAAAlyC,MAAAuC,KAAA,WAAsC,MAAA8T,KAAAsY,OAAgBpsB,KAAA,SAAA8T,GAAmB,MAAAA,GAAA0e,GAAA1e,GAAA,SACsJgJ,GAAA+1B,GAAA,WAAgB,GAAA/+B,GAAArW,IAA4G,OAAA0/B,IAAA1/B,KAA5GA,KAAAhG,EAAAuI,KAAA,WAAoC,MAAAmrC,IAAAr3B,IAAoBo7B,GAAAp7B,EAAA,MAAWi7B,GAAAj7B,EAAAgJ,GAAA9c,KAAA,WAA+B6vC,GAAA/7B,MAA9DwJ,SAG3WR,GAAA+C,GAAA,WAAgB,GAAA/L,GAAArW,IAAW,OAAAuxC,IAAAvxC,KAAAqf,EAAAoJ,GAAAzoB,MAAApB,QAAA0uC,YAAA/qC,KAAA,SAAAoF,GAA8D,IAAA0O,EAAApc,EAAA,CAAS,GAAA+C,EAAM,IAAAA,EAAA0wC,GAAAr3B,IAAA1O,EAAA,CAAc3K,EAAA0wC,GAAAr3B,GAAA02B,GAAW,IAAA9vC,GAAA0K,EAAAolC,GAAY/vC,OAAA,KAAAA,GAAA,OAAAA,GAAA,KAAAA,OAAA,KAAAC,GAAA,OAAAA,GAAA,KAAAA,GAAAD,GAAAC,EAAqE,GAAAD,EAAA,MAAAmyC,IAAAzB,GAAAr3B,GAAA1O,GAAA+lC,GAAAr3B,GAAAsR,KAAgC+lB,GAAAr3B,IAAA1O,KAAA8pC,GAAAp7B,EAAA1O,OAAA2mC,GAAA3mC,KAAAgS,GAAAtD,EAAAuR,GAAAvR,SAAAa,UAAAb,GAAA+7B,GAAA/7B,QAAuEgJ,GAAAlF,GAAA,SAAA9D,GAAiB,MAAAg7B,IAAArxC,KAAAqf,EAAAhJ,IAAqBgJ,GAAAoB,GAAA,WAAgB2xB,GAAApyC,MAASA,KAAAma,GAAAuzB,GAAA1tC,QAAkBqf,GAAAmB,GAAA,WAAgBxgB,KAAAo1C,MAAW/1B,GAAAwB,GAAA,WAAgB7gB,KAAAo1C,MAChP/1B,GAAAyB,GAAA,SAAAzK,GAAiB,GAAA1O,GAAA3H,IAAWA,MAAA+B,qBAAA,WAAqCsU,EAAAuB,KAAA81B,GAAA/lC,OAAgB0X,GAAA0B,GAAA,SAAA1K,GAAiB,GAAA1O,GAAA3H,IAAW0yC,IAAA1yC,KAAA,WAAmBqW,EAAAuB,KAAA81B,GAAA/lC,OAAgB0X,GAAAgC,GAAA,SAAAhL,EAAA1O,EAAA3K,GAAqB,GAAAC,GAAA+C,IAAqG,OAA1FA,MAAAmW,GAAA5c,GAAAuC,QAAAC,UAAAwG,KAAA,WAAmD3F,EAAAyZ,KAAAq3B,GAAAzwC,IAAAL,EAAAyZ,EAAAuB,OAAAvB,EAAAuB,KAAA81B,GAAAzwC,MAAuC+C,KAAAwf,GAAAnJ,EAAA1O,EAAA3K,IAC/cqiB,GAAA+B,GAAA,SAAA/K,EAAA1O,EAAA3K,GAAqB,GAAAC,GAAA+C,IAAoH,OAAzGA,MAAAmW,GAAA5c,GAAAuC,QAAAC,UAAAwG,KAAA,WAAmDtF,EAAA0wC,EAAA1wC,EAAA4E,SAAejF,EAAAyZ,KAAAq3B,GAAAzwC,IAAAL,EAAAyZ,EAAAuB,OAAAvB,EAAAuB,KAAA81B,GAAAzwC,MAAuC+C,KAAAyf,GAAApJ,EAAA1O,EAAA3K,IAAuBqiB,GAAAe,GAAA,SAAA/J,GAAiB,GAAA1O,GAAA3H,IAA0G,OAAA0/B,IAAA1/B,KAA1GA,KAAAhG,EAAAuI,KAAA,WAAoC,MAAAmrC,IAAA/lC,GAAA+lC,GAAA/lC,GAAAggB,EAAAtR,GAAA9T,KAAA,SAAA8T,GAAuC,OAAOuiB,YAAAviB,KAAe,SAA2BgJ,GAAAyC,GAAA,SAAAzL,GAAiB,GAAA1O,GAAA3H,IAAW,OAAAA,MAAAhG,EAAAuI,KAAA,WAA8B,MAAA+vC,IAAA3qC,EAAAi2B,GAAAj2B,EAAA3K,EAAA6hD,IAAsBnrC,MAAA2C,OAAW9T,KAAA,SAAA8T,GAAmD,MAAhCA,KAAAm1B,KAAS0D,GAAA74B,EAAA,kBAAuB1O,EAAAwS,GAAA9D,KAAe9T,KAAA,WAAkB,MAAAmrC,IAAA/lC,MAC5d0X,GAAA4C,GAAA,SAAA5L,EAAA1O,GAAmB,GAAA3K,GAAAgD,IAAW,OAAAA,MAAAhG,EAAAuI,KAAA,WAA8B,MAAA+vC,IAAAt1C,EAAA4gC,GAAA5gC,IAAA8/C,IAAsBnhB,MAAAtlB,EAAA0mC,SAAAp1C,OAAsBpF,KAAA,SAAA8T,GAAmB,MAAAA,GAAAm1B,QAAiBnsB,GAAAM,GAAA,SAAAtJ,EAAA1O,GAAmB,GAAA3K,GAAAgD,IAAW,OAAAA,MAAAhG,EAAAuI,KAAA,WAA8B,MAAA+vC,IAAAt1C,EAAA4gC,GAAA5gC,IAAAyhD,IAAsB9iB,MAAAtlB,EAAA0mC,SAAAp1C,OAAsBpF,KAAA,SAAA8T,GAAmB,MAAAA,GAAAm1B,QAAiBnsB,GAAA2C,GAAA,SAAA3L,GAAiB,MAAArW,MAAAkd,GAAA7G,GAAA9T,KAAA,SAAA8T,GAAmC,MAAAA,GAAAm1B,QAAiBnsB,GAAAnC,GAAA,SAAA7G,GAAiB,GAAA1O,GAAA3H,IAAW,OAAAA,MAAAhG,EAAAuI,KAAA,WAA8B,MAAA+vC,IAAA3qC,EAAA0O,EAAA6E,GAAAvT,EAAA3K,OACvZqiB,GAAA81B,GAAA,WAAgB,GAAA9+B,GAAArW,IAAW,OAAAA,MAAAhG,EAAAuI,KAAA,WAA8B,GAAAoF,GAAA+lC,GAAAr3B,EAAW,OAAA1O,MAAA6mC,YAAA7mC,EAAA2qC,GAAAj8B,IAAArZ,EAAAm4C,MAAA5yC,KAAA,SAAAoF,GAA0F,MAAhCA,KAAA6jC,KAAS0D,GAAAvnC,EAAA,kBAAuB0O,EAAA8D,GAAAxS,KAAepF,KAAA,WAAkB,MAAAmrC,IAAAr3B,QAA+EgJ,GAAAxd,OAAA,WAAoB,MAAA6rC,IAAA1tC,OAAA0tC,GAAA1tC,MAAA+sC,KAAA,MACrH1tB,GAAAK,GAAA,SAAArJ,GAAiBrW,KAAA+B,qBAAAsU,GAAsC,IAATrW,KAAA5C,GAASswC,GAAA1tC,OAAAiuC,GAAAP,GAAA1tC,QAAgCqf,GAAAwC,GAAA,SAAAxL,GAAiB,GAAA1O,GAAA3H,IAAWijB,IAAAjjB,KAAAjD,EAAA,SAAAC,GAAqBA,GAAAqZ,GAAA1O,EAAAvK,MAAc,EAAA4C,KAAA5C,IAAA4C,KAAA5C,EAAA,GAAqB,GAAA4C,KAAA5C,GAAAswC,GAAA1tC,OAAAmuC,GAAAT,GAAA1tC,OAAgCA,KAAAiC,wBAAAoU,IACxXgJ,GAAAtd,qBAAA,SAAAsU,GAAmC,GAAA1O,GAAA3H,IAAWA,MAAAjD,EAAAnC,KAAAyb,GAAeqpB,GAAA1/B,UAAAhG,EAAAuI,KAAA,WAA8BoF,EAAA1N,GAAA0hB,EAAAhU,EAAA5K,EAAAsZ,MAAAm8B,GAAA7qC,QAA6B0X,GAAApd,wBAAA,SAAAoU,GAAsCyF,EAAA9b,KAAAjD,EAAA,SAAA4K,GAAsB,MAAAA,IAAA0O,KAAoIgJ,GAAAhd,OAAA,WAAoBrC,KAAA/F,GAAA,CAAU,QAAAoc,GAAA,EAAYA,EAAArW,KAAAutB,EAAA7yB,OAAgB2b,IAAArW,KAAAutB,EAAAlX,GAAAkwB,OAAA,cAAsH,OAAlFvmC,MAAAutB,KAAUvtB,KAAAqf,IAAAhJ,EAAArW,KAAAqf,EAAAgpB,GAAAhyB,EAAA1O,EAAA0O,IAAArW,KAAAia,KAAuCja,KAAAqW,GAAArW,KAAAqW,EAAA8oC,YAAAn/C,MAAiCzG,GAAAuC,QAAAC,WACvasjB,GAAAY,GAAA,SAAA5J,GAAiB,MAAAqpB,IAAA1/B,KAAA29B,GAAA39B,KAAAhD,EAAAqZ,KAA6BgJ,GAAA6D,GAAA,SAAA7M,GAAiB,MAAArW,MAAA6b,GAAAxF,GAAA9T,KAAA,SAAA8T,GAAmC,MAAAA,GAAA/L,KAAAqxB,SAAuBtc,GAAA9C,GAAA,SAAAlG,EAAA1O,GAAmB,MAAA+3B,IAAA1/B,UAAAhD,EAAAuf,GAAAlG,EAAA1O,GAAApF,KAAA,gBAAkD8c,GAAAxD,GAAA,SAAAxF,GAAiB,MAAAqpB,IAAA1/B,UAAAhD,EAAA6e,GAAAxF,GAAA9T,KAAA,SAAA8T,GAA4C,UAAA8e,IAAA9e,OAAqBgJ,GAAA/C,GAAA,SAAAjG,GAAiB,MAAAqpB,IAAA1/B,UAAAhD,EAAAsf,GAAAjG,GAAA9T,KAAA,gBAClW8c,GAAAzS,GAAA,SAAAyJ,EAAA1O,GAAmB,GAAA3K,GAAAgD,IAAW,OAAA0/B,IAAA1/B,KAAA6f,KAAAtd,KAAA,WAAkC,gBAAAoF,GAAA2U,EAAA3U,MAAsC4uB,GAAA,GAAAT,IAAAnuB,MAAepF,KAAA,SAAAoF,GAAmB,MAAA3K,KAAA4P,GAAAyJ,EAAA1O,KAAmBpF,KAAA,gBAAuB8c,GAAA6C,GAAA,SAAA7L,EAAA1O,GAAmB,MAAA+3B,IAAA1/B,KAAA6rC,GAAA7rC,KAAAqW,EAAA1O,EAAA2S,EAAAta,KAAAkd,GAAAld,QACiB,IAAA4yC,IAAA,6DAAA7+B,MAAA,KAI6I+/B,GAAA,WAAAE,GAAA,mBAAAL,GAAA,UAAAC,GAAA,MAC/Ov0B,IAAAo0B,GAAA34C,UACpHukB,GAAAlE,GAAA,WAAgB,GAAA9E,GAAArW,IAAW,OAAAA,MAAAhD,EAAAgD,KAAAhD,EAAAgD,KAAAhD,EAAAk3C,GAAAl0C,KAAA6f,KAAAtd,KAAA,WAAwD,GAAAmxB,KAAA,MAAAnB,KAAoB,UAAAhF,IAAA,4HAAuIhrB,KAAA,WAAkB,MAAAgyC,IAAAG,KAAAr+B,EAAAjZ,OAAsBmF,KAAA,WAAkB,MAAAq7B,IAAAvnB,EAAAqE,EAAAikC,SAAoBp8C,KAAA,SAAAoF,GAAmB0O,IAAAs9B,IAAAhsC,EAAAi3C,mBAA2B3jD,EAAA,SAAA0M,GAAyB,KAAT0O,GAAArZ,EAAA,KAAS2K,MACnY0X,GAAAm1B,OAAA,WAAoBL,GAAAn0C,KAAS,IAAAqW,GAAArW,IAAW,OAAAk0C,IAAAl0C,UAAAmb,KAAA5Y,KAAA,WAAyC,UAAA8T,EAAA1O,EAAA,CAAe,GAAAA,GAAA0O,EAAApc,CAAU,KAAAoc,EAAAgJ,EAAA,CAAS,GAAAriB,GAAA2jB,GAAAhZ,EAAYA,GAAAib,GAAA,OAAY5lB,EAAAF,YAAA6K,GAAiB0O,EAAA1O,EAAA0sC,WAAAG,OAAA7sC,EAAA0O,KAA6B,MAAAA,GAAA1O,MAAe0X,GAAAm0B,OAAA,WAAoBW,GAAAn0C,KAAS,IAAAqW,GAAArW,IAAW,OAAAk0C,IAAAl0C,UAAAw0C,SAAAjyC,KAAA,SAAAoF,GAA8C,UAAAwX,GAAA,SAAAniB,GAAyB,GAAAC,GAAAo3C,WAAAyD,YAAAnwC,EAAgC,IAAA1K,EAAAD,EAAAC,OAAU,CAAK,GAAA9B,GAAA,SAAAwM,GAAkBA,IAAAssC,GAAA59B,EAAAlb,GAAA6B,EAAA2K,IAAmB0O,GAAArc,EAAAY,KAAAO,GAAYkb,EAAAgJ,GAAAg1B,WAAAuL,QAAAvpC,EAAA1O,UAAoC0X,GAAAtJ,MAAA,WAAmBo+B,GAAAn0C,MAAS,OAAAA,KAAA2H,GAAA0sC,WAAAt+B,MAAA/V,KAAA2H,IACjX0X,GAAA+3B,MAAA,WAAmBjD,GAAAn0C,MAASA,KAAAjD,GAAA,EAAU23C,KAAA/sC,GAAS,QAAA0O,GAAA,EAAYA,EAAArW,KAAAyD,EAAA/I,OAAgB2b,IAAArW,KAAAyD,EAAA4S,GAAAkwB,OAAA,iDAAuE,KAAAvmC,KAAAqf,EAAA,CAAYhJ,EAAAsK,GAAA3gB,KAAA/F,EAAa,QAAA0N,GAAUA,EAAA0O,EAAAwpC,YAAexpC,EAAAhF,YAAA1J,IAAoB,IAAA8sC,IAAArzB,GAAA,qFAEmIuzB,GAAA,IACoCv+B,GAAAw+B,GAAAnB,IAAmYlZ,GAAAiX,GAAA12C,WAAgBwhB,IAAIpf,KAAA,kBAAA0Z,GAAAi3B,GAAA,UAAqChyB,IAAK3e,KAAA,kBAAA0Z,GAAAi3B,GAAA,UAAqCtxB,IAAKrf,KAAA,uBAAA0Z,GAAAi3B,GAAA,QAAAA,GAAA,iBAA2DluB,IAAKziB,KAAA,iCAAA0Z,GAAAi3B,GAAA,SAAAA,GAAA,cAAmE5tB,IAAK/iB,KAAA,yBAAA0Z,GAAAi3B,GAAA,WAA6Clf,IAAKzxB,KAAA,oBAAA0Z,MAA8BwK,IAAKlkB,KAAA,qBAAA0Z,GAAAqxB,GAAA9xB,KAAA28B,KAAA,kBAAAA,GAAA,gBAAAA,GAAA,sBAAqGzxB,IAAKnkB,KAAA,mBAAA0Z,GAAAqxB,GAAA9xB,KAAA28B,KAAA,kBAAAA,GAAA,aACvxC,GAAAA,GAAA,sBAA4BlmC,IAAK1P,KAAA,yBAAA0Z,GAAAi3B,GAAA,SAAA5F,GAAA9xB,GAAA,6BAAA48B,GAAA,wCAAuHj2B,IAAK5f,KAAA,iBAAA0Z,GAAAi3B,GAAA,iBAA2C3wB,IAAKhgB,KAAA,sCAAA0Z,GAAAy8B,OAAoD8B,IAAKj4C,KAAA,oBAAA0Z,MAA8BoL,IAAK9kB,KAAA,uBAAA0Z,GAAAy8B,OAAqCvxB,IAAK5kB,KAAA,wBAAA0Z,GAAAi3B,GAAA,WAA4C5rB,IAAK/kB,KAAA,6BAAA0Z,GAAAi3B,GAAA,SAAAA,GAAA,cAA+D3rB,IAAKhlB,KAAA,wBAAA0Z,GAAAi3B,GAAA,eACxc0F,OAAMpxB,IAAKjlB,KAAA,kBAAA0Z,GAAA08B,OAAgC3oB,IAAKztB,KAAA,qBAAA0Z,GAAA08B,OAAmC8B,IAAKl4C,KAAA,UAAA0Z,MAAoB2hC,QAASr7C,KAAA,SAAA0Z,GAAAi3B,GAAA,WAA6B/qB,IAAK5lB,KAAA,oBAAA0Z,MAA8BsM,IAAKhmB,KAAA,0BAAA0Z,GAAAi3B,GAAA,YAAgD,SAAAx3B,EAAA1O,GAAe,OAAA3K,KAAA2K,GAAA,CAAgB,GAAA1K,GAAA0K,EAAA3K,GAAAE,IAAgB,IAAAD,IAAAD,EAAA,CAAU,GAAA7B,GAAAwM,EAAA3K,GAAA4iB,EAAc/kB,QAAAwC,eAAAgZ,EAAApZ,GAA2BO,IAAA,WAAe,MAAAwC,MAAAhD,IAAe+hB,IAAA,SAAA1I,GAAiBs8B,GAAA11C,GAAA9B,IAAAkb,IAAA,GAAiBrW,KAAAhD,GAAAqZ,GAAU9Y,YAAA,OAAmBi0C,GAAA12C,WAAgB8mB,IAAI1kB,KAAA,eAAA0iB,GAAAqoB,GAAA4F,KAAAkF,KAAA,mBAC7bvB,GAAAsO,YAAAtY,GAAkBgK,GAAAsO,YAAAC,MAAA,QAA6BvO,GAAAsO,YAAAE,QAAA,UAAiCxO,GAAAsO,YAAAZ,KAAA,OAChF3kB,GAAA4S,GAAAryC,WAAgBuH,QAAUnF,KAAA,SAAA0Z,MAAmB+Q,GAAIzqB,KAAA,aAAA0Z,GAAAi8B,OAA2B/wC,UAAW5E,KAAA,WAAA0Z,GAAAi8B,OAAyBl2B,IAAKzf,KAAA,oCAAA0Z,GAAAy8B,OAAkDryB,IAAK9jB,KAAA,qBAAA0Z,GAAAy8B,OAAmCxwB,IAAK3lB,KAAA,sBAAA0Z,GAAAi3B,GAAA,eAAA0F,OAAqDtyB,IAAK/jB,KAAA,gBAAA0Z,GAAA08B,OAA8BpyB,IAAKhkB,KAAA,mBAAA0Z,GAAA08B,OAAiCz2B,IAAK3f,KAAA,8CAAA0Z,GAAAy8B,OAA4D7xB,IAAKtkB,KAAA,+BAAA0Z,GAAAy8B,OAA6C5xB,IAAKvkB,KAAA,gCAAA0Z,GAAAi3B,GAAA,eAC1c0F,OAAM7xB,IAAKxkB,KAAA,0BAAA0Z,GAAA08B,OAAwC3xB,IAAKzkB,KAAA,6BAAA0Z,GAAA08B,OAA2CrD,QAAS/yC,KAAA,SAAA0Z,MAAmBsb,IAAKh1B,KAAA,wBAAA0Z,GAAAqxB,GAAA9xB,GAAA,6BAAA48B,GAAA,wCAA2GwF,QAASr7C,KAAA,SAAA0Z,GAAAi3B,GAAA,WAA6BnrB,IAAKxlB,KAAA,SAAA0Z,GAAAi3B,GAAA,cAAgCvd,IAAKpzB,KAAA,cAAA0Z,GAAAi3B,GAAA,WAAkCyH,IAAKp4C,KAAA,iBAAA0Z,GAAAi3B,GAAA,cAAwCjrB,IAAK1lB,KAAA,oBAAA0Z,GAAAy8B,GAAA,WAAyC/1B,IAAKpgB,KAAA,gBAAA0Z,GAAAT,GAAA,eACjcokB,GAAApb,EAAArkB,WAAeG,GAAGiC,KAAA,SAAaqF,MAAOrF,KAAA,UAAeq9B,GAAAqR,GAAA9wC,WAAgBukD,SAASniD,KAAA,UAAA0Z,GAAAi3B,GAAA,wBAA4CwC,GAAAjW,GAAA,sBAAA/jB,EAAA1O,GAAgC,UAAAwyB,IAAA9jB,EAAA1O,KAAmBkmC,GAAA,SAAAA,GAAA,cAA6BtT,GAAAd,GAAA3+B,WAAgBggB,IAAI5d,KAAA,WAAA0Z,GAAAi3B,GAAA,WAA+BjyB,IAAK1e,KAAA,sBAAA0Z,GAAAT,GAAA,6BAA6Dk6B,GAAA5W,GAAA,aAAAC,IAAAuO,GAAA4F,KAAA13B,KAAA,WAA2CokB,GAAAX,GAAA9+B,WAAgBggB,IAAI5d,KAAA,WAAA0Z,GAAAi3B,GAAA,WAA+BjyB,IAAK1e,KAAA,sBAAA0Z,GAAAT,GAAA,6BAClak6B,GAAAzW,GAAA,aAAAC,IAAAoO,GAAA4F,KAAA13B,KAAA,WAA2CokB,GAAAT,GAAAh/B,WAAgBggB,IAAI5d,KAAA,WAAA0Z,GAAAi3B,GAAA,WAA+BjyB,IAAK1e,KAAA,sBAAA0Z,GAAAT,GAAA,6BAA6Dk6B,GAAAvW,GAAA,aAAAC,IAAAkO,GAAA4F,KAAA5F,GAAA9xB,KAAA48B,MAAA,WAAA9K,GAAA4F,KAAAkF,KAAA,oBAAkFxY,GAAAP,GAAAl/B,WAAgB8gB,IAAI1e,KAAA,sBAAA0Z,GAAAT,GAAA,6BAA6Dk6B,GAAArW,GAAA,aAAAE,IAAA+N,GAAA4F,KAAA13B,KAAA,SAAA03B,GAAA,eACnUtT,GAAA7R,GAAA5tB,WAAeggB,IAAI5d,KAAA,WAAA0Z,GAAAi3B,GAAA,WAA+BlU,YAAaz8B,KAAA,aAAA0Z,GAAAqxB,GAAA4F,KAAAkF,KAAA,cAAA9K,GAAA4F,KAAAkF,KAAA,oBAA4En3B,IAAK1e,KAAA,sBAAA0Z,GAAAT,GAAA,6BAA6Dk6B,GAAAzV,GAAA,aAAAE,IAAA+S,GAAA,kBAAAA,GAAA,sBAAkEtT,GAAAK,GAAA9/B,WAAgBshB,IAAIlf,KAAA,oBAAA0Z,GAAAi3B,GAAA,eAAA0F,SAAsDhZ,GAAAhN,GAAAzyB,WAAey9C,QAAQr7C,KAAA,SAAA0Z,GAAAi3B,GAAA,aAAgCtT,GAAAkB,GAAA3gC,WAAgBy9C,QAAQr7C,KAAA,SAAA0Z,GAAAi3B,GAAA,aACxatT,GAAAiB,GAAA1gC,WAAgBy9C,QAAQr7C,KAAA,SAAA0Z,GAAAi3B,GAAA,aAAgCtT,GAAAqa,GAAA95C,WAAgBs8C,OAAOl6C,KAAA,QAAA0Z,MAAkB49B,QAASt3C,KAAA,SAAA0Z,MAAmB48B,QAASt2C,KAAA,SAAA0Z,QACtI,WAAY,YAAArd,QAAAsH,WAAAtH,GAAAsH,SAAA3B,gBAC6O,KAAAvD,OAAA,8FADrJ,IAAA0a,IAAO4pC,KAAAzO,GAAA71C,MAAA4xB,GAAiB8iB,IAAAh6B,EAAA,oBAAA+jB,OAA+BiW,GAAAh6B,EAAA,uBAAAojB,OAAkC4W,GAAAh6B,EAAA,qBAAAujB,OAAgCyW,GAAAh6B,EAAA,qBAAAyjB,OAAgCuW,GAAAh6B,EAAA,sBAAA2jB,OAAiCqW,GAAAh6B,EAAA,gBAAAqS,IAAAmlB,GAAA,gBAAyCwC,GAAAh6B,EAAA,oBAAAukB,IAAAsY,OAAmC7C,GAAAh6B,EAAA,oBAAAu+B,IAAA3M,GAAA4F,KAAAmF,KAAA,sBAAA78B,GAAA,0BAAAg9B,OAAgG55C,GAAAsH,SAAA3B,gBAAA,gBAAAmX,EAC1crZ,GAAwI,MAArIqZ,GAAA,GAAAm7B,IAAAn7B,GAAYrZ,GAAG6D,UAAUgB,OAAAyY,EAAAjE,EAAAxU,OAAAwU,GAAAvU,SAAAwY,EAAAjE,EAAA+J,GAAA/J,GAAAtU,qBAAAuY,EAAAjE,EAAAqJ,GAAArJ,GAAApU,wBAAAqY,EAAAjE,EAAAwL,GAAAxL,MAA4GA,GAASA,EAAA,SAAAA,EAAArZ,GAAiB,cAAAqZ,EAAA,IAAoBrZ,EAAA69B,OAAS,MAAA59B,OAAa1D,GAAAsH,SAAAT,iBAAmC8/C,KAAA/S,UAC9OjzC,SAAA,KAAA4R,IAAA,mBAAArS,WAAA,mBAAAD,qBFqC4BU,KAAKJ,EAASH,EAAoB,QAI5D,KACO,MAAMqE,GACN,KAAUrC,OACR;;;;;;;AGrUZ,IACQ4d,sBAAsB,IACvB,CAED,SAAUxf,EAAQD,EAASH,GAEjC,YCKAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,GACA2mD,EAAA3mD,EAAA,GACA4mD,EAAA5mD,EAAA,GACA6mD,EAAA7mD,EAAA,GACA8mD,EAAA9mD,EAAA,IACA+mD,EAAA/mD,EAAA,EAKAG,GAAA6mD,cAAA,WACA,GAAAxyC,GAAA,CACA,mBACA,MAAAA,SAQArU,EAAA8mD,KAAA,SAAA35C,GACA,GAAA+C,GAAAu2C,EAAAv5C,kBAAAC,GACA25C,EAAA,GAAAN,GAAAhrC,IACAsrC,GAAAtqC,OAAAtM,EACA,IAAA62C,GAAAD,EAAAlqC,QACA,OAAA2pC,GAAA54C,OAAAS,gBAAA24C,GAOA,IAAAC,GAAA,WAEA,OADAC,MACAjhD,EAAA,EAAoBA,EAAAC,UAAArF,OAAuBoF,IAC3CihD,EAAAjhD,GAAAC,UAAAD,EAGA,QADAgH,GAAA,GACA9M,EAAA,EAAmBA,EAAA+mD,EAAArmD,OAAqBV,IACxCqL,MAAAgD,QAAA04C,EAAA/mD,KACA+mD,EAAA/mD,IACA,gBAAA+mD,GAAA/mD,IACA,gBAAA+mD,GAAA/mD,GAAAU,OACAoM,GAAAg6C,EAAA3gD,MAAA,KAAA4gD,EAAA/mD,IAEA,gBAAA+mD,GAAA/mD,GACA8M,GAAA05C,EAAAn2C,UAAA02C,EAAA/mD,IAGA8M,GAAAi6C,EAAA/mD,GAEA8M,GAAA,GAEA,OAAAA,GAMAhN,GAAAknD,OAAA,IAMA,IAAAC,IAAA,CAMAnnD,GAAAonD,cAAA,SAAAC,EAAAC,GACAjB,EAAAv5C,QAAAw6C,IAAA,IAAAD,IAAA,IAAAA,EAAA,+CACA,IAAAA,GACA,mBAAApjD,WACA,kBAAAA,SAAAiF,IACAlJ,EAAAknD,OAAAjjD,QAAAiF,IAAA9C,KAAAnC,SAEA,gBAAAA,SAAAiF,MAEAlJ,EAAAknD,OAAA,SAAAl6C,GACA/I,QAAAiF,IAAA8D,MAIAs6C,GACAX,EAAAY,eAAAtiC,IAAA,uBAEA,kBAAAoiC,GACArnD,EAAAknD,OAAAG,GAGArnD,EAAAknD,OAAA,KACAP,EAAAY,eAAAC,OAAA,qBAOAxnD,EAAAkJ,IAAA,WAEA,OADA+9C,MACAjhD,EAAA,EAAoBA,EAAAC,UAAArF,OAAuBoF,IAC3CihD,EAAAjhD,GAAAC,UAAAD,EAOA,KALA,IAAAmhD,IACAA,GAAA,EACA,OAAAnnD,EAAAknD,SAAA,IAAAP,EAAAY,eAAA7jD,IAAA,oBACA1D,EAAAonD,eAAA,IAEApnD,EAAAknD,OAAA,CACA,GAAAl6C,GAAAg6C,EAAA3gD,MAAA,KAAA4gD,EACAjnD,GAAAknD,OAAAl6C,KAOAhN,EAAAynD,WAAA,SAAAC,GACA,kBAEA,OADAT,MACAjhD,EAAA,EAAwBA,EAAAC,UAAArF,OAAuBoF,IAC/CihD,EAAAjhD,GAAAC,UAAAD,EAEAhG,GAAAkJ,IAAA7C,UAAA,IAAAqhD,GAAA78C,OAAAo8C,MAMAjnD,EAAAkE,MAAA,WAEA,OADA+iD,MACAjhD,EAAA,EAAoBA,EAAAC,UAAArF,OAAuBoF,IAC3CihD,EAAAjhD,GAAAC,UAAAD,EAEA,uBAAA/B,SAAA,CACA,GAAA+I,GAAA,4BAAAg6C,EAAA3gD,UAAA,GAAA4gD,OACA,KAAAhjD,QAAAC,MACAD,QAAAC,MAAA8I,GAGA/I,QAAAiF,IAAA8D,KAOAhN,EAAA2nD,MAAA,WAEA,OADAV,MACAjhD,EAAA,EAAoBA,EAAAC,UAAArF,OAAuBoF,IAC3CihD,EAAAjhD,GAAAC,UAAAD,EAEA,IAAAgH,GAAAg6C,EAAA3gD,UAAA,GAAA4gD,EACA,MAAAplD,OAAA,yBAAAmL,IAKAhN,EAAAiU,KAAA,WAEA,OADAgzC,MACAjhD,EAAA,EAAoBA,EAAAC,UAAArF,OAAuBoF,IAC3CihD,EAAAjhD,GAAAC,UAAAD,EAEA,uBAAA/B,SAAA,CACA,GAAA+I,GAAA,qBAAAg6C,EAAA3gD,UAAA,GAAA4gD,OACA,KAAAhjD,QAAAgQ,KACAhQ,QAAAgQ,KAAAjH,GAGA/I,QAAAiF,IAAA8D,KAQAhN,EAAA4nD,mBAAA,WAEA,mBAAAloD,SACAA,OAAA6kB,UACA7kB,OAAA6kB,SAAAC,WACA,IAAA9kB,OAAA6kB,SAAAC,SAAA3N,QAAA,WACA7W,EAAAiU,KAAA,8FAOAjU,EAAA6nD,2BAAA,SAAAC,GACA9nD,EAAAiU,KAAA6zC,EACA,qEAQA9nD,EAAA+nD,oBAAA,SAAAv3C,GACA,sBAAAA,KACAA,MACAA,GAAAgZ,OAAAw+B,mBACAx3C,GAAAgZ,OAAAy+B,oBAKAjoD,EAAAkoD,oBAAA,SAAAx3C,GACA,GAAAk2C,EAAAhuC,aAAA,aAAAvW,SAAA8yB,WACAzkB,QAEA,CAGA,GAAAy3C,IAAA,EACAC,EAAA,WACA,IAAA/lD,SAAAqnC,KAEA,WADA3mC,YAAAqlD,EAAA5xC,KAAA8D,MAAA,IAGA6tC,KACAA,GAAA,EACAz3C,KAGArO,UAAAyU,kBACAzU,SAAAyU,iBAAA,mBAAAsxC,GAAA,GAEA1oD,OAAAoX,iBAAA,OAAAsxC,GAAA,IAEA/lD,SAAA0U,cAEA1U,SAAA0U,YAAA,gCACA,aAAA1U,SAAA8yB,YACAizB,MAGA1oD,OAAAqX,YAAA,SAAAqxC,MAWApoD,EAAAqoD,SAAA,aAKAroD,EAAAsoD,SAAA,aAOAtoD,EAAAuoD,YAAA,SAAAhsC,EAAA1O,GACA,GAAA0O,IAAA1O,EACA,QAEA,IAAA0O,IAAAvc,EAAAqoD,UAAAx6C,IAAA7N,EAAAsoD,SACA,QAEA,IAAAz6C,IAAA7N,EAAAqoD,UAAA9rC,IAAAvc,EAAAsoD,SACA,QAGA,IAAAE,GAAAxoD,EAAAyoD,YAAAlsC,GAAAmsC,EAAA1oD,EAAAyoD,YAAA56C,EACA,eAAA26C,EACA,OAAAE,EACAF,EAAAE,GAAA,EAAAnsC,EAAA3b,OAAAiN,EAAAjN,OAAA4nD,EAAAE,GAGA,EAGA,OAAAA,EACA,EAGAnsC,EAAA1O,GAAA,KASA7N,EAAA2oD,cAAA,SAAApsC,EAAA1O,GACA,MAAA0O,KAAA1O,EACA,EAEA0O,EAAA1O,GACA,EAGA,GAQA7N,EAAA4oD,WAAA,SAAArhD,EAAAD,GACA,GAAAA,GAAAC,IAAAD,GACA,MAAAA,GAAAC,EAGA,MAAA1F,OAAA,yBAAA0F,EAAA,gBAAAm/C,EAAAn2C,UAAAjJ,KAOAtH,EAAA6oD,kBAAA,SAAAvhD,GACA,mBAAAA,IAAA,OAAAA,EACA,MAAAo/C,GAAAn2C,UAAAjJ,EACA,IAAApC,KACA,QAAAwS,KAAApQ,GACApC,EAAApE,KAAA4W,EAGAxS,GAAAg0B,MAEA,QADA3xB,GAAA,IACArH,EAAA,EAAmBA,EAAAgF,EAAAtE,OAAiBV,IACpC,IAAAA,IACAqH,GAAA,KACAA,GAAAm/C,EAAAn2C,UAAArL,EAAAhF,IACAqH,GAAA,IACAA,GAAAvH,EAAA6oD,kBAAAvhD,EAAApC,EAAAhF,IAGA,OADAqH,IAAA,KASAvH,EAAA8oD,kBAAA,SAAA37C,EAAA47C,GACA,GAAA/9C,GAAAmC,EAAAvM,MACA,IAAAoK,GAAA+9C,EACA,OAAA57C,EAGA,QADA67C,MACA9lD,EAAA,EAAmBA,EAAA8H,EAAS9H,GAAA6lD,EAC5B7lD,EAAA6lD,EAAA/9C,EACAg+C,EAAAloD,KAAAqM,EAAAkkB,UAAAnuB,EAAA8H,IAGAg+C,EAAAloD,KAAAqM,EAAAkkB,UAAAnuB,IAAA6lD,GAGA,OAAAC,IAQAhpD,EAAAipD,KAAA,SAAA3hD,EAAAoJ,GACA,GAAAnF,MAAAgD,QAAAjH,GACA,OAAApH,GAAA,EAAuBA,EAAAoH,EAAA1G,SAAgBV,EACvCwQ,EAAAxQ,EAAAoH,EAAApH,QAUAomD,GAAA3gD,QAAA2B,EAAA,SAAAC,EAAAqM,GAAiD,MAAAlD,GAAAkD,EAAArM,MASjDvH,EAAAkpD,aAAA,SAAAhhD,EAAA6W,GACA,MAAAA,GAAA7W,EAAA9B,KAAA2Y,GAAA7W,GASAlI,EAAAmpD,sBAAA,SAAA7nC,GACA+kC,EAAAv5C,QAAA9M,EAAA+nD,oBAAAzmC,GAAA,sBACA,IACAngB,GAAAE,EAAA8P,EAAAi4C,EAAAlpD,EAAAmpD,EAAAl8C,CAyBA,KAtBA,IAAAmU,GACAjgB,EAAA,EACA8P,EAAA,EACAhQ,EAAA,EAAAmgB,IAAA,UAGAngB,EAAAmgB,EAAA,EACAA,EAAA9K,KAAA8yC,IAAAhoC,GACAA,GAAA9K,KAAA+yC,IAAA,UAEAH,EAAA5yC,KAAAgzC,IAAAhzC,KAAA8D,MAAA9D,KAAAtN,IAAAoY,GAAA9K,KAAAizC,KAbA,MAcApoD,EAAA+nD,EAdA,KAeAj4C,EAAAqF,KAAAkzC,MAAApoC,EAAA9K,KAAA+yC,IAAA,EAhBA,GAgBAH,GAAA5yC,KAAA+yC,IAAA,EAhBA,OAoBAloD,EAAA,EACA8P,EAAAqF,KAAAkzC,MAAApoC,EAAA9K,KAAA+yC,IAAA,YAIAF,KACAnpD,EA1BA,GA0BmBA,EAAGA,GAAA,EACtBmpD,EAAAvoD,KAAAqQ,EAAA,OACAA,EAAAqF,KAAA8D,MAAAnJ,EAAA,EAEA,KAAAjR,EA9BA,GA8BmBA,EAAGA,GAAA,EACtBmpD,EAAAvoD,KAAAO,EAAA,OACAA,EAAAmV,KAAA8D,MAAAjZ,EAAA,EAEAgoD,GAAAvoD,KAAAK,EAAA,KACAkoD,EAAAM,UACAx8C,EAAAk8C,EAAAh6C,KAAA,GAEA,IAAAu6C,GAAA,EACA,KAAA1pD,EAAA,EAAeA,EAAA,GAAQA,GAAA,GACvB,GAAA2pD,GAAAtmC,SAAApW,EAAA6c,OAAA9pB,EAAA,MAAA+V,SAAA,GACA,KAAA4zC,EAAAjpD,SACAipD,EAAA,IAAAA,GACAD,GAAAC,EAEA,MAAAD,GAAA72B,eAOA/yB,EAAA8pD,+BAAA,WACA,wBAAApqD,UACAA,OAAA,SACAA,OAAA,kBACA,UAAAgZ,KAAAhZ,OAAA6kB,SAAAmS,QAMA12B,EAAA+pD,kBAAA,WAEA,sBAAAC,UAAA,gBAAAA,SAAAC,IAQAjqD,EAAAkqD,mBAAA,SAAA/iD,EAAAgjD,GACA,GAAA52C,GAAA,eACA,aAAApM,EACAoM,EACA,0FAGA,qBAAApM,EACAoM,EAAA,6DAEA,eAAApM,IACAoM,EAAA,6BAEA,IAAArP,GAAArC,MAAAsF,EAAA,OAAAgjD,EAAAtG,KAAA,KAAAtwC,EAEA,OADArP,GAAAiD,OAAAwsB,cACAzvB,GAOAlE,EAAAoqD,EAAArf,OAAA,iBAMA/qC,EAAAyoD,YAAA,SAAAt7C,GACA,GAAAnN,EAAAoqD,EAAA1xC,KAAAvL,GAAA,CACA,GAAAk9C,IAAAl9C,CACA,IAAAk9C,IAAA,YAAAA,GAAA,WACA,MAAAA,GAGA,aAmBArqD,EAAAsqD,eAAA,SAAA55C,GACA,IACAA,IAEA,MAAArP,GAEA0B,WAAA,WAKA,GAAAoW,GAAA9X,EAAA8X,OAAA,EAEA,MADAnZ,GAAAiU,KAAA,yCAAAkF,GACA9X,GACSmV,KAAA8D,MAAA,MAWTta,EAAAuqD,iBAAA,SAAAriD,GAEA,OADA++C,MACAjhD,EAAA,EAAoBA,EAAAC,UAAArF,OAAuBoF,IAC3CihD,EAAAjhD,EAAA,GAAAC,UAAAD,EAEA,mBAAAkC,IACAlI,EAAAsqD,eAAA,WACApiD,EAAA7B,UAAA,GAAA4gD,MAOAjnD,EAAAwqD,aAAA,WASA,OARA,gBAAA9qD,SACAA,OAAA,WACAA,OAAA,qBACA,IAKA+qD,OAAA,gGASAzqD,EAAA0qD,iBAAA,SAAA7mD,EAAAT,EAAAunD,GACA5pD,OAAAwC,eAAAM,EAAAT,GAAyCM,IAAAinD,KAWzC3qD,EAAA4qD,sBAAA,SAAAl6C,EAAAm6C,GACA,GAAAlpD,GAAAoB,WAAA2N,EAAAm6C,EAIA,OAHA,gBAAAlpD,MAAA,OACAA,EAAA,QAEAA,IDoBM,SAAU1B,EAAQD,EAASH,GAEjC,YEznBAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GAMAirD,EAAA,WAMA,QAAAA,GAAAC,EAAAC,GACA,YAAAA,EAAA,CACA9kD,KAAA+kD,EAAAF,EAAA9wC,MAAA,IAGA,QADAixC,GAAA,EACAhrD,EAAA,EAA2BA,EAAAgG,KAAA+kD,EAAArqD,OAAyBV,IACpDgG,KAAA+kD,EAAA/qD,GAAAU,OAAA,IACAsF,KAAA+kD,EAAAC,GAAAhlD,KAAA+kD,EAAA/qD,GACAgrD,IAGAhlD,MAAA+kD,EAAArqD,OAAAsqD,EACAhlD,KAAAilD,EAAA,MAGAjlD,MAAA+kD,EAAAF,EACA7kD,KAAAilD,EAAAH,EAwLA,MArLAjqD,QAAAwC,eAAAunD,EAAA,SAMApnD,IAAA,WACA,UAAAonD,GAAA,KAEArnD,YAAA,EACAD,cAAA,IAEAsnD,EAAA9pD,UAAAoqD,SAAA,WACA,MAAAllD,MAAAilD,GAAAjlD,KAAA+kD,EAAArqD,OACA,KACAsF,KAAA+kD,EAAA/kD,KAAAilD,IAKAL,EAAA9pD,UAAAqqD,UAAA,WACA,MAAAnlD,MAAA+kD,EAAArqD,OAAAsF,KAAAilD,GAKAL,EAAA9pD,UAAAsqD,SAAA,WACA,GAAAN,GAAA9kD,KAAAilD,CAIA,OAHAH,GAAA9kD,KAAA+kD,EAAArqD,QACAoqD,IAEA,GAAAF,GAAA5kD,KAAA+kD,EAAAD,IAKAF,EAAA9pD,UAAAuqD,QAAA,WACA,MAAArlD,MAAAilD,EAAAjlD,KAAA+kD,EAAArqD,OACAsF,KAAA+kD,EAAA/kD,KAAA+kD,EAAArqD,OAAA,GACA,MAEAkqD,EAAA9pD,UAAAiV,SAAA,WAEA,OADAu1C,GAAA,GACAtrD,EAAAgG,KAAAilD,EAAoCjrD,EAAAgG,KAAA+kD,EAAArqD,OAAyBV,IAC7D,KAAAgG,KAAA+kD,EAAA/qD,KACAsrD,GAAA,IAAAtlD,KAAA+kD,EAAA/qD,GAEA,OAAAsrD,IAAA,KAEAV,EAAA9pD,UAAAyqD,mBAAA,WAEA,OADAD,GAAA,GACAtrD,EAAAgG,KAAAilD,EAAoCjrD,EAAAgG,KAAA+kD,EAAArqD,OAAyBV,IAC7D,KAAAgG,KAAA+kD,EAAA/qD,KACAsrD,GAAA,IAAAxwC,mBAAA9U,KAAA+kD,EAAA/qD,GAAAsN,IAEA,OAAAg+C,IAAA,KAQAV,EAAA9pD,UAAA0M,MAAA,SAAAg+C,GAEA,WADA,KAAAA,IAA+BA,EAAA,GAC/BxlD,KAAA+kD,EAAAv9C,MAAAxH,KAAAilD,EAAAO,IAKAZ,EAAA9pD,UAAA2qD,OAAA,WACA,GAAAzlD,KAAAilD,GAAAjlD,KAAA+kD,EAAArqD,OACA,WAEA,QADAgrD,MACA1rD,EAAAgG,KAAAilD,EAAoCjrD,EAAAgG,KAAA+kD,EAAArqD,OAAA,EAA6BV,IACjE0rD,EAAA9qD,KAAAoF,KAAA+kD,EAAA/qD,GACA,WAAA4qD,GAAAc,EAAA,IAMAd,EAAA9pD,UAAA6qD,MAAA,SAAAC,GAEA,OADAF,MACA1rD,EAAAgG,KAAAilD,EAAoCjrD,EAAAgG,KAAA+kD,EAAArqD,OAAyBV,IAC7D0rD,EAAA9qD,KAAAoF,KAAA+kD,EAAA/qD,GACA,IAAA4rD,YAAAhB,GACA,OAAA5qD,GAAA4rD,EAAAX,EAAgDjrD,EAAA4rD,EAAAb,EAAArqD,OAAiCV,IACjF0rD,EAAA9qD,KAAAgrD,EAAAb,EAAA/qD,QAKA,QADA6rD,GAAAD,EAAA7xC,MAAA,KACA/Z,EAAA,EAA2BA,EAAA6rD,EAAAnrD,OAAwBV,IACnD6rD,EAAA7rD,GAAAU,OAAA,GACAgrD,EAAA9qD,KAAAirD,EAAA7rD,GAGA,WAAA4qD,GAAAc,EAAA,IAKAd,EAAA9pD,UAAAgQ,QAAA,WACA,MAAA9K,MAAAilD,GAAAjlD,KAAA+kD,EAAArqD,QAOAkqD,EAAAkB,aAAA,SAAAC,EAAAC,GACA,GAAAC,GAAAF,EAAAb,WAAAgB,EAAAF,EAAAd,UACA,WAAAe,EACA,MAAAD,EAEA,IAAAC,IAAAC,EACA,MAAAtB,GAAAkB,aAAAC,EAAAX,WAAAY,EAAAZ,WAGA,MAAAzpD,OAAA,8BACAqqD,EACA,8BAEAD,EACA,MAQAnB,EAAAuB,aAAA,SAAA50B,EAAA60B,GAGA,OAFAC,GAAA90B,EAAA/pB,QACA8+C,EAAAF,EAAA5+C,QACAxN,EAAA,EAAuBA,EAAAqsD,EAAA3rD,QAAAV,EAAAssD,EAAA5rD,OAA6CV,IAAA,CACpE,GAAAusD,GAAApG,EAAAkC,YAAAgE,EAAArsD,GAAAssD,EAAAtsD,GACA,QAAAusD,EACA,MAAAA,GAEA,MAAAF,GAAA3rD,SAAA4rD,EAAA5rD,OACA,EACA2rD,EAAA3rD,OAAA4rD,EAAA5rD,QAAA,KAOAkqD,EAAA9pD,UAAA0rD,OAAA,SAAAC,GACA,GAAAzmD,KAAAmlD,cAAAsB,EAAAtB,YACA,QAEA,QAAAnrD,GAAAgG,KAAAilD,EAAAruC,EAAA6vC,EAAAxB,EAAyDjrD,GAAAgG,KAAA+kD,EAAArqD,OAA0BV,IAAA4c,IACnF,GAAA5W,KAAA+kD,EAAA/qD,KAAAysD,EAAA1B,EAAAnuC,GACA,QAGA,WAOAguC,EAAA9pD,UAAA4D,SAAA,SAAA+nD,GACA,GAAAzsD,GAAAgG,KAAAilD,EACAruC,EAAA6vC,EAAAxB,CACA,IAAAjlD,KAAAmlD,YAAAsB,EAAAtB,YACA,QAEA,MAAAnrD,EAAAgG,KAAA+kD,EAAArqD,QAAA,CACA,GAAAsF,KAAA+kD,EAAA/qD,KAAAysD,EAAA1B,EAAAnuC,GACA,WAEA5c,IACA4c,EAEA,UAEAguC,IAEA9qD,GAAA8qD,MAWA,IAAA8B,GAAA,WAKA,QAAAA,GAAA/I,EAAAgJ,GACA3mD,KAAA2mD,IAEA3mD,KAAA4mD,EAAAjJ,EAAAn2C,QAEAxH,KAAA6mD,EAAAv2C,KAAA6M,IAAA,EAAAnd,KAAA4mD,EAAAlsD,OACA,QAAAV,GAAA,EAAuBA,EAAAgG,KAAA4mD,EAAAlsD,OAAwBV,IAC/CgG,KAAA6mD,GAAAzG,EAAA9mC,aAAAtZ,KAAA4mD,EAAA5sD,GAEAgG,MAAA8mD,IAgEA,MA9DAjsD,QAAAwC,eAAAqpD,EAAA,kBAEAlpD,IAAA,WACA,WAEAD,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAqpD,EAAA,yBAEAlpD,IAAA,WACA,YAEAD,YAAA,EACAD,cAAA,IAGAopD,EAAA5rD,UAAAF,KAAA,SAAA+qD,GAEA3lD,KAAA4mD,EAAAlsD,OAAA,IACAsF,KAAA6mD,GAAA,GAEA7mD,KAAA4mD,EAAAhsD,KAAA+qD,GACA3lD,KAAA6mD,GAAAzG,EAAA9mC,aAAAqsC,GACA3lD,KAAA8mD,KAEAJ,EAAA5rD,UAAAisD,IAAA,WACA,GAAAC,GAAAhnD,KAAA4mD,EAAAG,KACA/mD,MAAA6mD,GAAAzG,EAAA9mC,aAAA0tC,GAEAhnD,KAAA4mD,EAAAlsD,OAAA,IACAsF,KAAA6mD,GAAA,IAGAH,EAAA5rD,UAAAgsD,EAAA,WACA,GAAA9mD,KAAA6mD,EAAAH,EAAAO,sBACA,KAAAtrD,OAAAqE,KAAA2mD,EACA,8BACAD,EAAAO,sBACA,WACAjnD,KAAA6mD,EACA,KAEA,IAAA7mD,KAAA4mD,EAAAlsD,OAAAgsD,EAAAQ,eACA,KAAAvrD,OAAAqE,KAAA2mD,EACA,iEACAD,EAAAQ,eACA,gCACAlnD,KAAAmnD,kBAQAT,EAAA5rD,UAAAqsD,cAAA,WACA,UAAAnnD,KAAA4mD,EAAAlsD,OACA,GAEA,gBAAAsF,KAAA4mD,EAAAz9C,KAAA,UAEAu9C,IAEA5sD,GAAA4sD,kBFipBM,SAAU3sD,EAAQD,EAASH,GAEjC,YGr7BA,SAAAytD,GAAA15C,GACA25C,EAAA35C,EAGA,QAAA45C,GAAA55C,GACA65C,EAAA75C,EAtBA,GAAAsH,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAIAmpD,GACAE,EALAC,EAAA7tD,EAAA,IACAwmD,EAAAxmD,EAAA,GACA8tD,EAAA9tD,EAAA,GACA+tD,EAAA/tD,EAAA,GAMAG,GAAAstD,kBAIAttD,EAAAwtD,YAMA,IAAAK,GAAA,SAAApyC,GAEA,QAAAoyC,KACA,cAAApyC,KAAApV,MAAAH,KAAAD,YAAAC,KAuDA,MAzDAgV,GAAA2yC,EAAApyC,GAOAoyC,EAAA7sD,UAAA8sD,QAAA,SAAAvxC,EAAA1O,GACA,GAAAkgD,GAAAxxC,EAAAylB,KAAAgsB,cACAC,EAAApgD,EAAAm0B,KAAAgsB,cACAE,EAAAH,EAAAI,UAAAF,EACA,YAAAC,EACA7H,EAAAkC,YAAAhsC,EAAAnZ,KAAAyK,EAAAzK,MAGA8qD,GAMAL,EAAA7sD,UAAAotD,YAAA,SAAApsB,GACA,OAAAA,EAAAgsB,cAAAh9C,WAKA68C,EAAA7sD,UAAAqtD,oBAAA,SAAAC,EAAAC,GACA,OAAAD,EAAAN,cAAAtB,OAAA6B,EAAAP,gBAKAH,EAAA7sD,UAAAwtD,QAAA,WACA,MAAAb,GAAAc,UAAAC,KAKAb,EAAA7sD,UAAA2tD,QAAA,WACA,UAAAhB,GAAAc,UAAApI,EAAAiC,SAAA,GAAAsF,GAAAgB,SAAA,kBAAAnB,KAOAI,EAAA7sD,UAAA6tD,SAAA,SAAAC,EAAA1rD,GACA,GAAA2rD,GAAAxB,EAAAuB,EACA,WAAAnB,GAAAc,UAAArrD,EAAA,GAAAwqD,GAAAgB,SAAA,kBAAAG,KAKAlB,EAAA7sD,UAAAiV,SAAA,WACA,mBAEA43C,GACCH,EAAAsB,MACDhvD,GAAA6tD,gBACA7tD,EAAAivD,eAAA,GAAApB,IH89BM,SAAU5tD,EAAQD,EAASH,GAEjC,YI3jCA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAWA8qD,GAXA7I,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACAsvD,EAAAtvD,EAAA,IACA8tD,EAAA9tD,EAAA,GACAuvD,EAAAvvD,EAAA,IACAwvD,EAAAxvD,EAAA,GACAyvD,EAAAzvD,EAAA,IACA0vD,EAAA1vD,EAAA,IACA+tD,EAAA/tD,EAAA,IACA2vD,EAAA3vD,EAAA,IAWA4vD,EAAA,WAQA,QAAAA,GAAAC,EAAAC,EAAAC,GACA1pD,KAAAwpD,IACAxpD,KAAAypD,IACAzpD,KAAA0pD,IACA1pD,KAAA2pD,EAAA,KAMA3pD,KAAAypD,GACAP,EAAAU,qBAAA5pD,KAAAypD,GAEAzpD,KAAAwpD,EAAA1+C,WACAq1C,EAAAv5C,QAAA5G,KAAAypD,GAAAzpD,KAAAypD,EAAA3+C,UAAA,wCAuXA,MApXAjQ,QAAAwC,eAAAksD,EAAA,cACA/rD,IAAA,WACA,MAAAwrD,KACAA,EAAA,GAAAO,GAAA,GAAAN,GAAAY,UAAAP,EAAAQ,iBAAA,KAAAT,EAAAU,SAAAC,WAEAzsD,YAAA,EACAD,cAAA,IAGAisD,EAAAzuD,UAAAmvD,WAAA,WACA,UAGAV,EAAAzuD,UAAAgtD,YAAA,WACA,MAAA9nD,MAAAypD,GAAAT,GAGAO,EAAAzuD,UAAAovD,eAAA,SAAAC,GACA,MAAAnqD,MAAAwpD,EAAA1+C,UAEA9K,KAGA,GAAAupD,GAAAvpD,KAAAwpD,EAAAW,EAAAnqD,KAAA0pD,IAIAH,EAAAzuD,UAAAsvD,kBAAA,SAAAC,GAEA,iBAAAA,EACA,MAAArqD,MAAA8nD,aAGA,IAAAnC,GAAA3lD,KAAAwpD,EAAAhsD,IAAA6sD,EACA,eAAA1E,EAAAqD,EAAArD,GAIA4D,EAAAzuD,UAAAwvD,SAAA,SAAA3M,GACA,GAAA4M,GAAA5M,EAAAuH,UACA,eAAAqF,EACAvqD,KACAA,KAAAoqD,kBAAAG,GAAAD,SAAA3M,EAAAyH,aAGAmE,EAAAzuD,UAAA0vD,SAAA,SAAAH,GACA,cAAArqD,KAAAwpD,EAAAhsD,IAAA6sD,IAGAd,EAAAzuD,UAAA2vD,qBAAA,SAAAJ,EAAAK,GAEA,GADAvK,EAAAv5C,OAAA8jD,EAAA,8CACA,cAAAL,EACA,MAAArqD,MAAAkqD,eAAAQ,EAGA,IAAAC,GAAA,GAAAlD,GAAAc,UAAA8B,EAAAK,GACAE,MAAA,GAAAC,MAAA,GAAAC,MAAA,EAUA,OATAJ,GAAA5/C,WACA8/C,EAAA5qD,KAAAwpD,EAAAlI,OAAA+I,GACAQ,EAAA7qD,KAAA0pD,EAAAqB,kBAAAJ,EAAA3qD,KAAAwpD,KAGAoB,EAAA5qD,KAAAwpD,EAAAwB,OAAAX,EAAAK,GACAG,EAAA7qD,KAAA0pD,EAAAuB,aAAAN,EAAA3qD,KAAAwpD,IAEAsB,EAAAF,EAAA9/C,UAAAk+C,EAAAhpD,KAAAypD,EACA,GAAAF,GAAAqB,EAAAE,EAAAD,IAIAtB,EAAAzuD,UAAAowD,YAAA,SAAAvN,EAAA+M,GACA,GAAAH,GAAA5M,EAAAuH,UACA,WAAAqF,EACA,MAAAG,EAGAvK,GAAAv5C,OAAA,cAAA+2C,EAAAuH,YAAA,IAAAvH,EAAAwH,YAAA,6CACA,IAAAgG,GAAAnrD,KAAAoqD,kBAAAG,GAAAW,YAAAvN,EAAAyH,WAAAsF,EACA,OAAA1qD,MAAAyqD,qBAAAF,EAAAY,IAIA5B,EAAAzuD,UAAAgQ,QAAA,WACA,MAAA9K,MAAAwpD,EAAA1+C,WAGAy+C,EAAAzuD,UAAAswD,YAAA,WACA,MAAAprD,MAAAwpD,EAAA6B,SAGA9B,EAAAzuD,UAAA4S,IAAA,SAAA49C,GACA,GAAAtrD,KAAA8K,UACA,WACA,IAAA1J,MACAmqD,EAAA,EAAAC,EAAA,EAAAC,GAAA,CAWA,IAVAzrD,KAAA0rD,aAAAvC,EAAAJ,eAAA,SAAA1nD,EAAAsqD,GACAvqD,EAAAC,GAAAsqD,EAAAj+C,IAAA49C,GACAC,IACAE,GAAAlC,EAAArF,EAAA1xC,KAAAnR,GACAmqD,EAAAl7C,KAAA6M,IAAAquC,GAAAnqD,GAGAoqD,GAAA,KAGAH,GAAAG,GAAAD,EAAA,EAAAD,EAAA,CAEA,GAAAtmD,KACA,QAAA5D,KAAAD,GACA6D,EAAA5D,GAAAD,EAAAC,EACA,OAAA4D,GAMA,MAHAqmD,KAAAtrD,KAAA8nD,cAAAh9C,YACA1J,EAAA,aAAApB,KAAA8nD,cAAAp6C,OAEAtM,GAIAmoD,EAAAzuD,UAAA8wD,KAAA,WACA,UAAA5rD,KAAA2pD,EAAA,CACA,GAAAkC,GAAA,EACA7rD,MAAA8nD,cAAAh9C,YACA+gD,GACA,YACA3C,EAAA4C,iBAAA9rD,KAAA8nD,cAAAp6C,OACA,KACA1N,KAAA0rD,aAAAvC,EAAAJ,eAAA,SAAA1nD,EAAAsqD,GACA,GAAAI,GAAAJ,EAAAC,MACA,MAAAG,IACAF,GAAA,IAAAxqD,EAAA,IAAA0qD,KAEA/rD,KAAA2pD,EAAA,KAAAkC,EAAA,GAAAzL,EAAAQ,KAAAiL,GAEA,MAAA7rD,MAAA2pD,GAGAJ,EAAAzuD,UAAAkxD,wBAAA,SAAA3B,EAAAsB,EAAAM,GACA,GAAAC,GAAAlsD,KAAAmsD,EAAAF,EACA,IAAAC,EAAA,CACA,GAAAE,GAAAF,EAAAG,kBAAA,GAAA5E,GAAAc,UAAA8B,EAAAsB,GACA,OAAAS,KAAAlvD,KAAA,KAGA,MAAA8C,MAAAwpD,EAAA6C,kBAAAhC,IAOAd,EAAAzuD,UAAAwxD,kBAAA,SAAAC,GACA,GAAAL,GAAAlsD,KAAAmsD,EAAAI,EACA,IAAAL,EAAA,CACA,GAAAM,GAAAN,EAAAM,QACA,OAAAA,MAAAtvD,KAGA,MAAA8C,MAAAwpD,EAAAgD,UAOAjD,EAAAzuD,UAAA2xD,cAAA,SAAAF,GACA,GAAAC,GAAAxsD,KAAAssD,kBAAAC,EACA,OAAAC,GACA,GAAA/E,GAAAc,UAAAiE,EAAAxsD,KAAAwpD,EAAAhsD,IAAAgvD,IAGA,MAQAjD,EAAAzuD,UAAA4xD,iBAAA,SAAAH,GACA,GAAAL,GAAAlsD,KAAAmsD,EAAAI,EACA,IAAAL,EAAA,CACA,GAAAV,GAAAU,EAAAV,QACA,OAAAA,MAAAtuD,KAGA,MAAA8C,MAAAwpD,EAAAgC,UAOAjC,EAAAzuD,UAAA6xD,aAAA,SAAAJ,GACA,GAAAf,GAAAxrD,KAAA0sD,iBAAAH,EACA,OAAAf,GACA,GAAA/D,GAAAc,UAAAiD,EAAAxrD,KAAAwpD,EAAAhsD,IAAAguD,IAGA,MAMAjC,EAAAzuD,UAAA4wD,aAAA,SAAAO,EAAAW,GACA,GAAAV,GAAAlsD,KAAAmsD,EAAAF,EACA,OAAAC,GACAA,EAAAW,iBAAA,SAAAC,GACA,MAAAF,GAAAE,EAAA5vD,KAAA4vD,EAAAhxB,QAIA97B,KAAAwpD,EAAAqD,iBAAAD,IAOArD,EAAAzuD,UAAAiyD,YAAA,SAAAR,GACA,MAAAvsD,MAAAgtD,gBAAAT,EAAAjE,UAAAiE,IAQAhD,EAAAzuD,UAAAkyD,gBAAA,SAAAC,EAAAV,GACA,GAAAL,GAAAlsD,KAAAmsD,EAAAI,EACA,IAAAL,EACA,MAAAA,GAAAc,gBAAAC,EAAA,SAAA5rD,GAAkE,MAAAA,IAKlE,KAFA,GAAA6rD,GAAAltD,KAAAwpD,EAAAwD,gBAAAC,EAAA/vD,KAAAuqD,EAAAc,UAAA4E,MACAv1C,EAAAs1C,EAAAE,OACA,MAAAx1C,GAAA20C,EAAA3E,QAAAhwC,EAAAq1C,GAAA,GACAC,EAAAG,UACAz1C,EAAAs1C,EAAAE,MAEA,OAAAF,IAOA3D,EAAAzuD,UAAAwyD,mBAAA,SAAAf,GACA,MAAAvsD,MAAAutD,uBAAAhB,EAAA9D,UAAA8D,IAOAhD,EAAAzuD,UAAAyyD,uBAAA,SAAAC,EAAAjB,GACA,GAAAL,GAAAlsD,KAAAmsD,EAAAI,EACA,IAAAL,EACA,MAAAA,GAAAqB,uBAAAC,EAAA,SAAAnsD,GACA,MAAAA,IAMA,KAFA,GAAA6rD,GAAAltD,KAAAwpD,EAAA+D,uBAAAC,EAAAtwD,KAAAuqD,EAAAc,UAAA4E,MACAv1C,EAAAs1C,EAAAE,OACA,MAAAx1C,GAAA20C,EAAA3E,QAAAhwC,EAAA41C,GAAA,GACAN,EAAAG,UACAz1C,EAAAs1C,EAAAE,MAEA,OAAAF,IAMA3D,EAAAzuD,UAAAmtD,UAAA,SAAAxB,GACA,MAAAzmD,MAAA8K,UACA27C,EAAA37C,UACA,GAGA,EAGA27C,EAAAwD,cAAAxD,EAAA37C,UACA,EAEA27C,IAAA3sD,EAAAytD,UACA,EAIA,GAMAgC,EAAAzuD,UAAA2yD,UAAA,SAAAlB,GACA,GAAAA,IAAAnD,EAAAsE,WACA1tD,KAAA0pD,EAAAiE,SAAApB,GACA,MAAAvsD,KAGA,IAAA6qD,GAAA7qD,KAAA0pD,EAAAkE,SAAArB,EAAAvsD,KAAAwpD,EACA,WAAAD,GAAAvpD,KAAAwpD,EAAAxpD,KAAAypD,EAAAoB,IAMAtB,EAAAzuD,UAAA+yD,UAAA,SAAA5B,GACA,MAAAA,KAAA7C,EAAAsE,WAAA1tD,KAAA0pD,EAAAiE,SAAA1B,IAKA1C,EAAAzuD,UAAA0rD,OAAA,SAAAC,GACA,GAAAA,IAAAzmD,KACA,QAEA,IAAAymD,EAAAwD,aACA,QAGA,IAAA6D,GAAArH,CACA,IAAAzmD,KAAA8nD,cAAAtB,OAAAsH,EAAAhG,eAGA,IAAA9nD,KAAAwpD,EAAA6B,UAAAyC,EAAAtE,EAAA6B,QAAA,CAKA,IAJA,GAAA0C,GAAA/tD,KAAA+sD,YAAA5D,EAAAJ,gBACAiF,EAAAF,EAAAf,YAAA5D,EAAAJ,gBACAkF,EAAAF,EAAAV,UACAa,EAAAF,EAAAX,UACAY,GAAAC,GAAA,CACA,GAAAD,EAAA/wD,OAAAgxD,EAAAhxD,OACA+wD,EAAAnyB,KAAA0qB,OAAA0H,EAAApyB,MACA,QAEAmyB,GAAAF,EAAAV,UACAa,EAAAF,EAAAX,UAEA,cAAAY,GAAA,OAAAC,EAGA,SAlBA,UA8BA3E,EAAAzuD,UAAAqxD,EAAA,SAAAI,GACA,MAAAA,KAAAnD,EAAAsE,UACA,KAGA1tD,KAAA0pD,EAAAlsD,IAAA+uD,OAOAhD,EAAArF,EAAA,iBACAqF,IAEAzvD,GAAAyvD,cAMA,IAAA4E,GAAA,SAAA54C,GAEA,QAAA44C,KACA,MAAA54C,GAAArb,KAAA8F,KAAA,GAAAipD,GAAAY,UAAAP,EAAAQ,iBAAAP,EAAAP,WAAAK,EAAAU,SAAAC,UAAAhqD,KAuBA,MAzBAgV,GAAAm5C,EAAA54C,GAIA44C,EAAArzD,UAAAmtD,UAAA,SAAAxB,GACA,MAAAA,KAAAzmD,KACA,EAGA,GAGAmuD,EAAArzD,UAAA0rD,OAAA,SAAAC,GAEA,MAAAA,KAAAzmD,MAEAmuD,EAAArzD,UAAAgtD,YAAA,WACA,MAAA9nD,OAEAmuD,EAAArzD,UAAAsvD,kBAAA,SAAAC,GACA,MAAAd,GAAAP,YAEAmF,EAAArzD,UAAAgQ,QAAA,WACA,UAEAqjD,GACC5E,EACDzvD,GAAAq0D,UAMAr0D,EAAAytD,SAAA,GAAA4G,GACAtzD,OAAAuzD,iBAAA3G,EAAAc,WACAC,KACAtqD,MAAA,GAAAupD,GAAAc,UAAAnI,EAAA+B,SAAAoH,EAAAP,aAEAqF,KACAnwD,MAAA,GAAAupD,GAAAc,UAAAnI,EAAAgC,SAAAtoD,EAAAytD,aAMA6B,EAAAkF,SAAAC,aAAAhF,EAAAP,WACAtB,EAAAgB,SAAA8F,0BAAAjF,EACAL,EAAA5B,WAAAxtD,EAAAytD,UACA4B,EAAA7B,WAAAxtD,EAAAytD,WJmlCM,SAAUxtD,EAAQD,EAASH,GAEjC,YK1jDAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAQ9C,IAAAqqD,GAAA,WACA,QAAAA,GAAArrD,EAAA4+B,GACA97B,KAAA9C,OACA8C,KAAA87B,OAWA,MAHAysB,GAAA4E,KAAA,SAAAjwD,EAAA4+B,GACA,UAAAysB,GAAArrD,EAAA4+B,IAEAysB,IAEAzuD,GAAAyuD,aLilDO,CAED,SAAUxuD,EAAQD,EAASH,GAEjC,YM7mDAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuwD,GAAA90D,EAAA,GACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,GACA2mD,EAAA3mD,EAAA,EAMAG,GAAA40D,EAAA,iCAOA50D,EAAA60D,EAAA,+BAMA70D,EAAA80D,EAAA,SAKA90D,EAAA+0D,WAAA,SAAAxtD,GACA,sBAAAA,IAAA,IAAAA,EAAA3G,SAAAZ,EAAA40D,EAAAl8C,KAAAnR,IAMAvH,EAAAg1D,kBAAA,SAAAxJ,GACA,sBAAAA,IACA,IAAAA,EAAA5qD,SACAZ,EAAA60D,EAAAn8C,KAAA8yC,IAMAxrD,EAAAi1D,sBAAA,SAAAzJ,GAKA,MAJAA,KAEAA,IAAAjyC,QAAA,yBAEAvZ,EAAAg1D,kBAAAxJ,IAMAxrD,EAAAk1D,gBAAA,SAAAC,GACA,cAAAA,GACA,gBAAAA,IACA,gBAAAA,KAAA7O,EAAAyB,oBAAAoN,IACAA,GAAA,gBAAAA,IAAA9O,EAAAzhD,SAAAuwD,EAAA,QAWAn1D,EAAAo1D,wBAAA,SAAA52C,EAAAC,EAAAjO,EAAAqzC,EAAAnlC,GACAA,OAAA5c,KAAA0O,GAEAxQ,EAAAq1D,qBAAA9O,EAAAhoC,YAAAC,EAAAC,EAAAC,GAAAlO,EAAAqzC,IASA7jD,EAAAq1D,qBAAA,SAAA92C,EAAA/N,EAAA8kD,GACA,GAAAzR,GAAAyR,YAAAX,GAAA7J,KAAA,GAAA6J,GAAA/H,eAAA0I,EAAA/2C,GAAA+2C,CACA,QAAAxzD,KAAA0O,EACA,KAAA3O,OAAA0c,EAAA,sBAAAslC,EAAAwJ,gBAEA,sBAAA78C,GACA,KAAA3O,OAAA0c,EACA,uBACAslC,EAAAwJ,gBACA,oBACA78C,EAEA,IAAA81C,EAAAyB,oBAAAv3C,GACA,KAAA3O,OAAA0c,EAAA,YAAA/N,EAAA,IAAAqzC,EAAAwJ,gBAGA,oBAAA78C,IACAA,EAAA5P,OAAAZ,EAAA80D,EAAA,GACAtO,EAAAhnC,aAAAhP,GAAAxQ,EAAA80D,EACA,KAAAjzD,OAAA0c,EACA,kCACAve,EAAA80D,EACA,eACAjR,EAAAwJ,gBACA,MACA78C,EAAA6gB,UAAA,MACA,QAIA,IAAA7gB,GAAA,gBAAAA,GAAA,CACA,GAAA+kD,IAAA,EAAAC,GAAA,CAqBA,IApBAnP,EAAA1gD,QAAA6K,EAAA,SAAAjJ,EAAAnD,GACA,cAAAmD,EACAguD,GAAA,MAEA,kBAAAhuD,GAAA,QAAAA,IACAiuD,GAAA,GACAx1D,EAAA+0D,WAAAxtD,IACA,KAAA1F,OAAA0c,EACA,6BACAhX,EACA,KACAs8C,EAAAwJ,gBACA,uFAIAxJ,GAAA/iD,KAAAyG,GACAvH,EAAAq1D,qBAAA92C,EAAAna,EAAAy/C,GACAA,EAAAoJ,QAEAsI,GAAAC,EACA,KAAA3zD,OAAA0c,EACA,4BACAslC,EAAAwJ,gBACA,sCAUArtD,EAAAy1D,2BAAA,SAAAl3C,EAAAm3C,GACA,GAAAx1D,GAAAy1D,CACA,KAAAz1D,EAAA,EAAeA,EAAAw1D,EAAA90D,OAAuBV,IAAA,CACtCy1D,EAAAD,EAAAx1D,EAEA,QADAgF,GAAAywD,EAAAjoD,QACAoP,EAAA,EAAuBA,EAAA5X,EAAAtE,OAAiBkc,IACxC,iBAAA5X,EAAA4X,QAAA5X,EAAAtE,OAAA,OAGA,KAAAZ,EAAA+0D,WAAA7vD,EAAA4X,IACA,KAAAjb,OAAA0c,EACA,4BACArZ,EAAA4X,GACA,aACA64C,EACA,uFAQAD,EAAAx8B,KAAAy7B,EAAA7J,KAAAuB,aACA,IAAAuJ,GAAA,IACA,KAAA11D,EAAA,EAAeA,EAAAw1D,EAAA90D,OAAuBV,IAAA,CAEtC,GADAy1D,EAAAD,EAAAx1D,GACA,OAAA01D,KAAAhxD,SAAA+wD,GACA,KAAA9zD,OAAA0c,EACA,mBACAq3C,EACA,qCACAD,EAEAC,GAAAD,IAaA31D,EAAA61D,6BAAA,SAAAr3C,EAAAC,EAAAjO,EAAAqzC,EAAAnlC,GACA,IAAAA,OAAA5c,KAAA0O,EAAA,CAEA,GAAA+N,GAAAgoC,EAAAhoC,YAAAC,EAAAC,EAAAC,EACA,KAAAlO,GAAA,gBAAAA,IAAAjF,MAAAgD,QAAAiC,GACA,KAAA3O,OAAA0c,EAAA,yDAEA,IAAAm3C,KACArP,GAAA1gD,QAAA6K,EAAA,SAAAjJ,EAAAnD,GACA,GAAAuxD,GAAA,GAAAhB,GAAA7J,KAAAvjD,EAEA,IADAvH,EAAAq1D,qBAAA92C,EAAAna,EAAAy/C,EAAAgI,MAAA8J,IACA,cAAAA,EAAApK,YACAvrD,EAAAk1D,gBAAA9wD,GACA,KAAAvC,OAAA0c,EACA,kCACAo3C,EACA,+FAIAD,GAAA50D,KAAA60D,KAEA31D,EAAAy1D,2BAAAl3C,EAAAm3C,KAEA11D,EAAA81D,iBAAA,SAAAt3C,EAAAC,EAAA02C,EAAAz2C,GACA,IAAAA,OAAA5c,KAAAqzD,EAAA,CAEA,GAAA7O,EAAAyB,oBAAAoN,GACA,KAAAtzD,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,MACAy2C,EACA,4FAGA,KAAAn1D,EAAAk1D,gBAAAC,GACA,KAAAtzD,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,yFAGA1e,EAAA+1D,kBAAA,SAAAv3C,EAAAC,EAAAu3C,EAAAt3C,GACA,IAAAA,OAAA5c,KAAAk0D,EAEA,OAAAA,GACA,YACA,kBACA,oBACA,oBACA,kBACA,KACA,SACA,KAAAn0D,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,8GAIA1e,EAAAi2D,YAAA,SAAAz3C,EAAAC,EAAAlX,EAAAmX,GACA,KAAAA,OAAA5c,KAAAyF,GAEAvH,EAAA+0D,WAAAxtD,IACA,KAAA1F,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,yBACAnX,EACA,qGAGAvH,EAAAk2D,mBAAA,SAAA13C,EAAAC,EAAA+sC,EAAA9sC,GACA,KAAAA,OAAA5c,KAAA0pD,GAEAxrD,EAAAg1D,kBAAAxJ,IACA,KAAA3pD,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,0BACA8sC,EACA,qFAGAxrD,EAAAm2D,uBAAA,SAAA33C,EAAAC,EAAA+sC,EAAA9sC,GACA8sC,IAEAA,IAAAjyC,QAAA,yBAEAvZ,EAAAk2D,mBAAA13C,EAAAC,EAAA+sC,EAAA9sC,IAEA1e,EAAAo2D,qBAAA,SAAA53C,EAAAqlC,GACA,aAAAA,EAAAuH,WACA,KAAAvpD,OAAA2c,EAAA,8CAGAxe,EAAAq2D,YAAA,SAAA73C,EAAAC,EAAA63C,GAEA,GAAA9K,GAAA8K,KAAAzS,IACA,oBAAAyS,GAAAC,SAAA9xC,MACA,IAAA6xC,EAAAC,SAAA9xC,KAAA7jB,SACAZ,EAAA+0D,WAAAuB,EAAAC,SAAAvxD,YACA,IAAAwmD,EAAA5qD,SAAAZ,EAAAi1D,sBAAAzJ,GACA,KAAA3pD,OAAA0kD,EAAAhoC,YAAAC,EAAAC,GAAA,GACA,yFAIAze,EAAAw2D,mBAAA,SAAAh4C,EAAAC,EAAAg4C,EAAA/3C,GACA,KAAAA,OAAA5c,KAAA20D,IAEA,gBAAAA,GACA,KAAA50D,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,2CAEA1e,EAAA02D,gBAAA,SAAAl4C,EAAAC,EAAAk4C,EAAAj4C,GACA,KAAAA,OAAA5c,KAAA60D,IAEA,iBAAAA,GACA,KAAA90D,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GAAA,uBAEA1e,EAAA42D,eAAA,SAAAp4C,EAAAC,EAAAo4C,EAAAn4C,GACA,KAAAA,OAAA5c,KAAA+0D,IAEA,gBAAAA,GACA,KAAAh1D,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,4BAGA1e,EAAA82D,eAAA,SAAAt4C,EAAAC,EAAAnX,EAAAoX,GACA,KAAAA,OAAA5c,KAAAwF,GAEAA,GAAA,gBAAAA,IAAA,OAAAA,GACA,KAAAzF,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,4BAGA1e,EAAA+2D,0BAAA,SAAAv4C,EAAAC,EAAAnX,EAAAC,EAAAmX,EAAAs4C,GAEA,IADA1vD,GAAA,gBAAAA,KAAA++C,EAAAzhD,SAAA0C,EAAAC,GACA,CACA,GAAAmX,EACA,MAGA,MAAA7c,OAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,yBACAnX,EACA,KAGA,GAAAyvD,EAAA,CACA,GAAApjD,GAAAyyC,EAAA51C,QAAAnJ,EAAAC,EACA,eAAAyvD,GAAA,gBAAApjD,IACA,WAAAojD,GAAA,gBAAApjD,IACA,YAAAojD,GAAA,iBAAApjD,IACA,aAAAojD,GAAA,kBAAApjD,IACA,WAAAojD,GAAA,gBAAApjD,MACA,KAAA8K,GACA7c,MAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,mCACAnX,EACA,uBACAyvD,EACA,MAGAn1D,MAAA0kD,EAAAhoC,YAAAC,EAAAC,EAAAC,GACA,yBACAnX,EACA,gBACAyvD,EACA,QNyoDM,SAAU/2D,EAAQD,EAASH,GAEjC,YOj/DAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,IAMA,SAAAo3D,GACAA,IAAA,yBACAA,IAAA,iBACAA,IAAA,mCACAA,IAAA,sCACCj3D,EAAAi3D,gBAAAj3D,EAAAi3D,kBAQD,IAAAC,GAAA,WACA,QAAAA,GAAAC,EAAAC,EAAAC,EAAAC,GACApxD,KAAAixD,WACAjxD,KAAAkxD,aACAlxD,KAAAmxD,UACAnxD,KAAAoxD,SACAjR,EAAAv5C,QAAAwqD,GAAAF,EAAA,uCAyBA,MAnBAF,GAAA9Q,KAAA,GAAA8Q,IACA,WACA,GAKAA,EAAAK,OAAA,GAAAL,IAAA,GACA,QACA,GAKAA,EAAAM,qBAAA,SAAAH,GACA,UAAAH,IAAA,GACA,EAAAG,GACA,IAEAH,IAEAl3D,GAAAk3D,mBPygEM,SAAUj3D,EAAQD,EAASH,GAEjC,YQhkEAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAU9C,IAAAqzD,GAAA,WACA,QAAAA,GAAAj1D,EAAAk1D,EAAAnH,EAAAoH,EAAAC,GACA1xD,KAAA1D,OACA0D,KAAAwxD,eACAxxD,KAAAqqD,YACArqD,KAAAyxD,UACAzxD,KAAA0xD,WAqDA,MA/CAH,GAAAI,YAAA,SAAAC,GACA,UAAAL,KAAAM,MAAAD,IAOAL,EAAAO,iBAAA,SAAAC,EAAAH,GACA,UAAAL,KAAAS,YAAAJ,EAAAG,IAOAR,EAAAU,mBAAA,SAAAF,EAAAH,GACA,UAAAL,KAAAW,cAAAN,EAAAG,IAQAR,EAAAY,mBAAA,SAAAJ,EAAAK,EAAAC,GACA,UAAAd,KAAAe,cAAAF,EAAAL,EAAAM,IAOAd,EAAAgB,iBAAA,SAAAR,EAAAH,GACA,UAAAL,KAAAiB,YAAAZ,EAAAG,IAIAR,EAAAS,YAAA,cAEAT,EAAAW,cAAA,gBAEAX,EAAAe,cAAA,gBAEAf,EAAAiB,YAAA,cAEAjB,EAAAM,MAAA,QACAN,IAEAz3D,GAAAy3D,URwlEM,SAAUx3D,EAAQD,EAASH,GAEjC,YSjqEA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAIAqwD,GAJA/G,EAAA7tD,EAAA,IACA8tD,EAAA9tD,EAAA,GACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GAEA20D,EAAA,SAAA/4C,GAEA,QAAA+4C,KACA,cAAA/4C,KAAApV,MAAAH,KAAAD,YAAAC,KA8DA,MAhEAgV,GAAAs5C,EAAA/4C,GAIA1a,OAAAwC,eAAAixD,EAAA,gBACA9wD,IAAA,WACA,MAAA+wD,IAEAxvC,IAAA,SAAArR,GACA6gD,EAAA7gD,GAEAnQ,YAAA,EACAD,cAAA,IAKAgxD,EAAAxzD,UAAA8sD,QAAA,SAAAvxC,EAAA1O,GACA,MAAAw4C,GAAAkC,YAAAhsC,EAAAnZ,KAAAyK,EAAAzK,OAKAoxD,EAAAxzD,UAAAotD,YAAA,SAAApsB,GAGA,KAAAskB,GAAAr5C,eAAA,oDAKAunD,EAAAxzD,UAAAqtD,oBAAA,SAAAC,EAAAC,GACA,UAKAiG,EAAAxzD,UAAAwtD,QAAA,WACA,MAAAb,GAAAc,UAAAC,KAKA8F,EAAAxzD,UAAA2tD,QAAA,WAGA,UAAAhB,GAAAc,UAAApI,EAAAiC,SAAAmM,IAOAD,EAAAxzD,UAAA6tD,SAAA,SAAAC,EAAA1rD,GAGA,MAFAkjD,GAAAx5C,OAAA,gBAAAgiD,GAAA,gDAEA,GAAAnB,GAAAc,UAAAK,EAAA2F,IAKAD,EAAAxzD,UAAAiV,SAAA,WACA,cAEAu+C,GACC9G,EAAAsB,MACDhvD,GAAAw0D,WACAx0D,EAAA4zD,UAAA,GAAAY,ITyrEM,SAAUv0D,EAAQD,EAASH,GAEjC,YU7vEA,SAAA0tD,GAAAoL,EAAAxD,GAEA,OADA,KAAAA,IAA8BA,EAAA,MAC9B,OAAAwD,EACA,MAAAC,GAAAnJ,aAAAP,UAaA,IAXA,gBAAAyJ,IAAA,aAAAA,KACAxD,EAAAwD,EAAA,cAEArS,EAAAx5C,OAAA,OAAAqoD,GACA,gBAAAA,IACA,gBAAAA,IACA,gBAAAA,IAAA,OAAAA,GAAA,sCAAAA,IACA,gBAAAwD,IAAA,UAAAA,IAAA,OAAAA,EAAA,YACAA,IAAA,WAGA,gBAAAA,IAAA,OAAAA,GAAA,CACA,GAAAE,GAAAF,CACA,WAAA/K,GAAAgB,SAAAiK,EAAAtL,EAAA4H,IAEA,GAAAwD,YAAAptD,SAAAutD,EA2BA,CACA,GAAAC,GAAAH,EAAAnJ,aAAAP,WACA8J,EAAAL,CAWA,OAVAtS,GAAA1gD,QAAAqzD,EAAA,SAAAzxD,EAAA0xD,GACA,GAAA5S,EAAAzhD,SAAAo0D,EAAAzxD,IACA,MAAAA,EAAA8pB,UAAA,MAEA,GAAAwgC,GAAAtE,EAAA0L,IACApH,EAAA1B,cAAA0B,EAAA7gD,YACA+nD,IAAApI,qBAAAppD,EAAAsqD,OAIAkH,EAAA3I,eAAA7C,EAAA4H,IAvCA,GAAA+D,MACAC,GAAA,EACAC,EAAAT,CAYA,IAXAtS,EAAA1gD,QAAAyzD,EAAA,SAAA7xD,EAAAskD,GACA,mBAAAtkD,IAAA,MAAAA,EAAA8pB,UAAA,MAEA,GAAAwgC,GAAAtE,EAAA6L,EAAA7xD,GACAsqD,GAAA7gD,YACAmoD,EACAA,IAAAtH,EAAA7D,cAAAh9C,UACAkoD,EAAAp4D,KAAA,GAAA6sD,GAAAc,UAAAlnD,EAAAsqD,QAIA,GAAAqH,EAAAt4D,OACA,MAAAg4D,GAAAnJ,aAAAP,UAEA,IAAAmK,GAAAC,EAAAC,cAAAL,EAAA1J,EAAAgK,qBAAA,SAAA3I,GAAsH,MAAAA,GAAAztD,MAAyBosD,EAAAQ,gBAC/I,IAAAmJ,EAAA,CACA,GAAAM,GAAAH,EAAAC,cAAAL,EAAA7J,EAAAJ,eAAAyK,aACA,WAAAd,GAAAnJ,aAAA4J,EAAA9L,EAAA4H,GAAA,GAAA5F,GAAAU,UAA8G0J,YAAAF,IAAiCE,YAAAtK,EAAAJ,kBAG/I,UAAA2J,GAAAnJ,aAAA4J,EAAA9L,EAAA4H,GAAA5F,EAAAU,SAAAC,SA9DAnvD,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAw0D,GAAA/4D,EAAA,GACA+tD,EAAA/tD,EAAA,IACA8tD,EAAA9tD,EAAA,GACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACAy5D,EAAAz5D,EAAA,IACA2vD,EAAA3vD,EAAA,IACA0vD,EAAA1vD,EAAA,IACAwvD,EAAAxvD,EAAA,GACAi5D,GAAA,CAuEA94D,GAAAutD,eACA8B,EAAA/B,gBAAAC,IVuyEM,SAAUttD,EAAQD,EAASH,GAEjC,YW33EAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAw1D,GAAA/5D,EAAA,IACAg6D,EAAAh6D,EAAA,IAUAi6D,EAAA,SAAAC,GACA,IAGA,sBAAAr6D,aACA,KAAAA,OAAAq6D,GAAA,CAEA,GAAAC,GAAAt6D,OAAAq6D,EAGA,OAFAC,GAAAxgC,QAAA,6BACAwgC,EAAAvgC,WAAA,qBACA,GAAAmgC,GAAAK,kBAAAD,IAGA,MAAA34D,IAGA,UAAAw4D,GAAAK,cAGAl6D,GAAAm6D,kBAAAL,EAAA,gBAEA95D,EAAAunD,eAAAuS,EAAA,mBXm5EM,SAAU75D,EAAQD,EAASH,GAEjC,YYt7EAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,IAC9CpE,EAAAo6D,iBAAA,IACAp6D,EAAAq6D,cAAA,IACAr6D,EAAAs6D,wBAAA,IACAt6D,EAAAu6D,cAAA,IACAv6D,EAAAw6D,UAAA,IACAx6D,EAAAy6D,aAAA,iBACAz6D,EAAA06D,mBAAA,KACA16D,EAAA26D,UAAA,YACA36D,EAAA46D,aAAA,gBZ88EM,SAAU36D,EAAQD,EAASH,GAEjC,Yaz9EAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAupD,GAAA9tD,EAAA,GACAwmD,EAAAxmD,EAAA,GAKAmvD,EAAA,WACA,QAAAA,MA6BA,MAvBAA,GAAAhuD,UAAA04D,WAAA,WACA,MAAAxzD,MAAA4nD,QAAA1nD,KAAAF,OAUA8oD,EAAAhuD,UAAAqtD,oBAAA,SAAAC,EAAAC,GACA,GAAAsM,GAAA,GAAAlN,GAAAc,UAAApI,EAAAgC,SAAAiG,GACAwM,EAAA,GAAAnN,GAAAc,UAAApI,EAAAgC,SAAAkG,EACA,YAAAroD,KAAA4nD,QAAA+M,EAAAC,IAMA9L,EAAAhuD,UAAAwtD,QAAA,WACA,MAAAb,GAAAc,UAAAC,KAEAM,IAEAhvD,GAAAgvD,Sbi/EM,SAAU/uD,EAAQD,EAASH,GAEjC,Yc1hFAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAGAswD,GAHArO,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACAuvD,EAAAvvD,EAAA,IAOA+uD,EAAA,WAOA,QAAAA,GAAAmM,EAAApL,OACA,KAAAA,IAAuCA,EAAAf,EAAA8F,0BAAAxF,YACvChpD,KAAA60D,IACA70D,KAAAypD,IACAzpD,KAAA2pD,EAAA,KACAxJ,EAAAv5C,WAAAhL,KAAAoE,KAAA60D,GAAA,OAAA70D,KAAA60D,EAAA,4DACA3L,EAAAU,qBAAA5pD,KAAAypD,GAiOA,MA/NA5uD,QAAAwC,eAAAqrD,EAAA,6BACAlrD,IAAA,WACA,MAAAgxD,IAEAzvC,IAAA,SAAArR,GACA8gD,EAAA9gD,GAEAnQ,YAAA,EACAD,cAAA,IAGAorD,EAAA5tD,UAAAmvD,WAAA,WACA,UAGAvB,EAAA5tD,UAAAgtD,YAAA,WACA,MAAA9nD,MAAAypD,GAGAf,EAAA5tD,UAAAovD,eAAA,SAAAC,GACA,UAAAzB,GAAA1oD,KAAA60D,EAAA1K,IAGAzB,EAAA5tD,UAAAsvD,kBAAA,SAAAC,GAEA,oBAAAA,EACArqD,KAAAypD,EAGAf,EAAA8F,0BAAAxF,YAIAN,EAAA5tD,UAAAwvD,SAAA,SAAA3M,GACA,MAAAA,GAAA7yC,UACA9K,KAEA,cAAA29C,EAAAuH,WACAllD,KAAAypD,EAGAf,EAAA8F,0BAAAxF,YAMAN,EAAA5tD,UAAA0vD,SAAA,WACA,UAGA9B,EAAA5tD,UAAAkxD,wBAAA,SAAA3B,EAAAsB,GACA,aAGAjD,EAAA5tD,UAAA2vD,qBAAA,SAAAJ,EAAAK,GACA,oBAAAL,EACArqD,KAAAkqD,eAAAQ,GAEAA,EAAA5/C,WAAA,cAAAu/C,EACArqD,KAGA0oD,EAAA8F,0BAAAxF,WACAyB,qBAAAJ,EAAAK,GACAR,eAAAlqD,KAAAypD,IAIAf,EAAA5tD,UAAAowD,YAAA,SAAAvN,EAAA+M,GACA,GAAAH,GAAA5M,EAAAuH,UACA,eAAAqF,EACAG,EAEAA,EAAA5/C,WAAA,cAAAy/C,EACAvqD,MAGAmgD,EAAAv5C,OAAA,cAAA2jD,GAAA,IAAA5M,EAAAwH,YAAA,8CACAnlD,KAAAyqD,qBAAAF,EAAA7B,EAAA8F,0BAAAxF,WAAAkC,YAAAvN,EAAAyH,WAAAsF,MAIAhC,EAAA5tD,UAAAgQ,QAAA,WACA,UAGA49C,EAAA5tD,UAAAswD,YAAA,WACA,UAGA1C,EAAA5tD,UAAA4wD,aAAA,SAAAO,EAAAW,GACA,UAKAlE,EAAA5tD,UAAA4S,IAAA,SAAA49C,GACA,MAAAA,KAAAtrD,KAAA8nD,cAAAh9C,WAEAgqD,SAAA90D,KAAA+0D,WACAtB,YAAAzzD,KAAA8nD,cAAAp6C,OAGA1N,KAAA+0D,YAGArM,EAAA5tD,UAAA8wD,KAAA,WACA,UAAA5rD,KAAA2pD,EAAA,CACA,GAAAqL,GAAA,EACAh1D,MAAAypD,EAAA3+C,YACAkqD,GACA,YACA9L,EAAA4C,iBAAA9rD,KAAAypD,EAAA/7C,OACA,IACA,IAAApR,SAAA0D,MAAA60D,CACAG,IAAA14D,EAAA,IAEA04D,GADA,WAAA14D,EACA8jD,EAAA6C,sBAAAjjD,KAAA60D,GAGA70D,KAAA60D,EAEA70D,KAAA2pD,EAAAvJ,EAAAQ,KAAAoU,GAEA,MAAAh1D,MAAA2pD,GAMAjB,EAAA5tD,UAAAi6D,SAAA,WACA,MAAA/0D,MAAA60D,GAKAnM,EAAA5tD,UAAAmtD,UAAA,SAAAxB,GACA,MAAAA,KAAAiC,EAAA8F,0BAAAxF,WACA,EAEAvC,YAAAiC,GAAA8F,2BACA,GAGArO,EAAAv5C,OAAA6/C,EAAAwD,aAAA,qBACAjqD,KAAAi1D,EAAAxO,KASAiC,EAAA5tD,UAAAm6D,EAAA,SAAAC,GACA,GAAAC,SAAAD,GAAAL,EACAO,QAAAp1D,MAAA60D,EACAQ,EAAA3M,EAAA4M,iBAAA3kD,QAAAwkD,GACAI,EAAA7M,EAAA4M,iBAAA3kD,QAAAykD,EAGA,OAFAjV,GAAAv5C,OAAAyuD,GAAA,wBAAAF,GACAhV,EAAAv5C,OAAA2uD,GAAA,wBAAAH,GACAC,IAAAE,EAEA,WAAAH,EAEA,EAIAp1D,KAAA60D,EAAAK,EAAAL,GACA,EAEA70D,KAAA60D,IAAAK,EAAAL,EACA,EAGA,EAKAU,EAAAF,GAMA3M,EAAA5tD,UAAA2yD,UAAA,WACA,MAAAztD,OAKA0oD,EAAA5tD,UAAA+yD,UAAA,WACA,UAKAnF,EAAA5tD,UAAA0rD,OAAA,SAAAC,GAIA,GAAAA,IAAAzmD,KACA,QAEA,IAAAymD,EAAAwD,aAAA,CACA,GAAAiL,GAAAzO,CACA,OAAAzmD,MAAA60D,IAAAK,EAAAL,GACA70D,KAAAypD,EAAAjD,OAAA0O,EAAAzL,GAGA,UASAf,EAAA4M,kBAAA,sCACA5M,IAEA5uD,GAAA4uD,YdkjFM,SAAU3uD,EAAQD,EAASH,GAEjC,Ye9yFAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAI9C,IAAAs3D,GAAA,WASA,QAAAA,GAAA15B,EAAA25B,EAAAC,EAAAC,EAAAC,OACA,KAAAA,IAA0CA,EAAA,MAC1C51D,KAAA21D,IACA31D,KAAA41D,IAIA51D,KAAA61D,IAEA,KADA,GAAAtP,GAAA,GACAzqB,EAAAhxB,WAMA,GALAgxB,IACAyqB,EAAAkP,EAAAC,EAAA55B,EAAAz6B,IAAAo0D,GAAA,EAEAE,IACApP,IAAA,GACAA,EAAA,EAGAzqB,EADA97B,KAAA21D,EACA75B,EAAAvK,KAGAuK,EAAAsqB,UAGA,QAAAG,EAAA,CAEAvmD,KAAA61D,EAAAj7D,KAAAkhC,EACA,OAIA97B,KAAA61D,EAAAj7D,KAAAkhC,GAEAA,EADA97B,KAAA21D,EACA75B,EAAAsqB,MAGAtqB,EAAAvK,MA4CA,MAvCAikC,GAAA16D,UAAAuyD,QAAA,WACA,OAAArtD,KAAA61D,EAAAn7D,OACA,WACA,IACAF,GADAshC,EAAA97B,KAAA61D,EAAA9O,KAMA,IAHAvsD,EADAwF,KAAA41D,EACA51D,KAAA41D,EAAA95B,EAAAz6B,IAAAy6B,EAAA59B,QAEsBmD,IAAAy6B,EAAAz6B,IAAAnD,MAAA49B,EAAA59B,OACtB8B,KAAA21D,EAEA,IADA75B,IAAAvK,MACAuK,EAAAhxB,WACA9K,KAAA61D,EAAAj7D,KAAAkhC,GACAA,IAAAsqB,UAKA,KADAtqB,IAAAsqB,OACAtqB,EAAAhxB,WACA9K,KAAA61D,EAAAj7D,KAAAkhC,GACAA,IAAAvK,IAGA,OAAA/2B,IAEAg7D,EAAA16D,UAAAg7D,QAAA,WACA,MAAA91D,MAAA61D,EAAAn7D,OAAA,GAEA86D,EAAA16D,UAAAsyD,KAAA,WACA,OAAAptD,KAAA61D,EAAAn7D,OACA,WACA,IAAAohC,GAAA97B,KAAA61D,EAAA71D,KAAA61D,EAAAn7D,OAAA,EACA,OAAAsF,MAAA41D,EACA51D,KAAA41D,EAAA95B,EAAAz6B,IAAAy6B,EAAA59B,QAGoBmD,IAAAy6B,EAAAz6B,IAAAnD,MAAA49B,EAAA59B,QAGpBs3D,IAEA17D,GAAA07D,mBAIA,IAAAO,GAAA,WASA,QAAAA,GAAA10D,EAAAnD,EAAA83D,EAAAzkC,EAAA60B,GACApmD,KAAAqB,MACArB,KAAA9B,QACA8B,KAAAg2D,MAAA,MAAAA,IAAAD,EAAAE,IACAj2D,KAAAuxB,KACA,MAAAA,IAAAs4B,EAAAb,WACAhpD,KAAAomD,MACA,MAAAA,IAAAyD,EAAAb,WA+PA,MAnPA+M,GAAAj7D,UAAAo7D,KAAA,SAAA70D,EAAAnD,EAAA83D,EAAAzkC,EAAA60B,GACA,UAAA2P,GAAA,MAAA10D,IAAArB,KAAAqB,IAAA,MAAAnD,IAAA8B,KAAA9B,MAAA,MAAA83D,IAAAh2D,KAAAg2D,MAAA,MAAAzkC,IAAAvxB,KAAAuxB,KAAA,MAAA60B,IAAApmD,KAAAomD,QAKA2P,EAAAj7D,UAAAuwD,MAAA,WACA,MAAArrD,MAAAuxB,KAAA85B,QAAA,EAAArrD,KAAAomD,MAAAiF,SAKA0K,EAAAj7D,UAAAgQ,QAAA,WACA,UAWAirD,EAAAj7D,UAAA+xD,iBAAA,SAAAD,GACA,MAAA5sD,MAAAuxB,KAAAs7B,iBAAAD,IACAA,EAAA5sD,KAAAqB,IAAArB,KAAA9B,QACA8B,KAAAomD,MAAAyG,iBAAAD,IAUAmJ,EAAAj7D,UAAAq7D,iBAAA,SAAAvJ,GACA,MAAA5sD,MAAAomD,MAAA+P,iBAAAvJ,IACAA,EAAA5sD,KAAAqB,IAAArB,KAAA9B,QACA8B,KAAAuxB,KAAA4kC,iBAAAvJ,IAMAmJ,EAAAj7D,UAAAs7D,EAAA,WACA,MAAAp2D,MAAAuxB,KAAAzmB,UACA9K,KAGAA,KAAAuxB,KAAA6kC,KAMAL,EAAAj7D,UAAA0xD,OAAA,WACA,MAAAxsD,MAAAo2D,IAAA/0D,KAKA00D,EAAAj7D,UAAA0wD,OAAA,WACA,MAAAxrD,MAAAomD,MAAAt7C,UACA9K,KAAAqB,IAGArB,KAAAomD,MAAAoF,UAUAuK,EAAAj7D,UAAAkwD,OAAA,SAAA3pD,EAAAnD,EAAAw3D,GACA,GAAAnP,GAAA9oD,CAYA,OAXAA,GAAAuC,KACAumD,EAAAmP,EAAAr0D,EAAA5D,EAAA4D,KAEA5D,EADA8oD,EAAA,EACA9oD,EAAAy4D,KAAA,eAAAz4D,EAAA8zB,KAAAy5B,OAAA3pD,EAAAnD,EAAAw3D,GAAA,MAEA,IAAAnP,EACA9oD,EAAAy4D,KAAA,KAAAh4D,EAAA,gBAGAT,EAAAy4D,KAAA,oBAAAz4D,EAAA2oD,MAAA4E,OAAA3pD,EAAAnD,EAAAw3D,IAEAj4D,EAAA44D,KAMAN,EAAAj7D,UAAAw7D,EAAA,WACA,GAAAt2D,KAAAuxB,KAAAzmB,UACA,MAAA++C,GAAAb,UAEA,IAAAvrD,GAAAuC,IAIA,OAHAvC,GAAA8zB,KAAAglC,KAAA94D,EAAA8zB,UAAAglC,MACA94D,IAAA+4D,KACA/4D,IAAAy4D,KAAA,eAAAz4D,EAAA8zB,KAAA+kC,IAAA,MACA74D,EAAA44D,KAOAN,EAAAj7D,UAAAwmD,OAAA,SAAAjgD,EAAAq0D,GACA,GAAAj4D,GAAAg5D,CAEA,IADAh5D,EAAAuC,KACA01D,EAAAr0D,EAAA5D,EAAA4D,KAAA,EACA5D,EAAA8zB,KAAAzmB,WAAArN,EAAA8zB,KAAAglC,KAAA94D,EAAA8zB,UAAAglC,MACA94D,IAAA+4D,KAEA/4D,IAAAy4D,KAAA,eAAAz4D,EAAA8zB,KAAA+vB,OAAAjgD,EAAAq0D,GAAA,UAEA,CAMA,GALAj4D,EAAA8zB,KAAAglC,MACA94D,IAAAi5D,KACAj5D,EAAA2oD,MAAAt7C,WAAArN,EAAA2oD,MAAAmQ,KAAA94D,EAAA2oD,MAAA70B,KAAAglC,MACA94D,IAAAk5D,KAEA,IAAAjB,EAAAr0D,EAAA5D,EAAA4D,KAAA,CACA,GAAA5D,EAAA2oD,MAAAt7C,UACA,MAAA++C,GAAAb,UAGAyN,GAAAh5D,EAAA2oD,MAAAgQ,IACA34D,IAAAy4D,KAAAO,EAAAp1D,IAAAo1D,EAAAv4D,MAAA,UAAAT,EAAA2oD,MAAAkQ,KAGA74D,IAAAy4D,KAAA,oBAAAz4D,EAAA2oD,MAAA9E,OAAAjgD,EAAAq0D,IAEA,MAAAj4D,GAAA44D,KAMAN,EAAAj7D,UAAAy7D,EAAA,WACA,MAAAv2D,MAAAg2D,OAMAD,EAAAj7D,UAAAu7D,EAAA,WACA,GAAA54D,GAAAuC,IAOA,OANAvC,GAAA2oD,MAAAmQ,MAAA94D,EAAA8zB,KAAAglC,MACA94D,IAAAm5D,KACAn5D,EAAA8zB,KAAAglC,KAAA94D,EAAA8zB,UAAAglC,MACA94D,IAAAi5D,KACAj5D,EAAA8zB,KAAAglC,KAAA94D,EAAA2oD,MAAAmQ,MACA94D,IAAAo5D,KACAp5D,GAMAs4D,EAAAj7D,UAAA07D,EAAA,WACA,GAAA/4D,GAAAuC,KAAA62D,GAMA,OALAp5D,GAAA2oD,MAAA70B,KAAAglC,MACA94D,IAAAy4D,KAAA,oBAAAz4D,EAAA2oD,MAAAsQ,KACAj5D,IAAAm5D,IACAn5D,IAAAo5D,KAEAp5D,GAMAs4D,EAAAj7D,UAAA67D,EAAA,WACA,GAAAl5D,GAAAuC,KAAA62D,GAKA,OAJAp5D,GAAA8zB,UAAAglC,MACA94D,IAAAi5D,IACAj5D,IAAAo5D,KAEAp5D,GAMAs4D,EAAAj7D,UAAA87D,EAAA,WACA,GAAAxlB,GAAApxC,KAAAk2D,KAAA,UAAAH,EAAAE,IAAA,KAAAj2D,KAAAomD,MAAA70B,KACA,OAAAvxB,MAAAomD,MAAA8P,KAAA,UAAAl2D,KAAAg2D,MAAA5kB,EAAA,OAMA2kB,EAAAj7D,UAAA47D,EAAA,WACA,GAAAI,GAAA92D,KAAAk2D,KAAA,UAAAH,EAAAE,IAAAj2D,KAAAuxB,KAAA60B,MAAA,KACA,OAAApmD,MAAAuxB,KAAA2kC,KAAA,UAAAl2D,KAAAg2D,MAAA,KAAAc,IAMAf,EAAAj7D,UAAA+7D,EAAA,WACA,GAAAtlC,GAAAvxB,KAAAuxB,KAAA2kC,KAAA,WAAAl2D,KAAAuxB,KAAAykC,MAAA,WACA5P,EAAApmD,KAAAomD,MAAA8P,KAAA,WAAAl2D,KAAAomD,MAAA4P,MAAA,UACA,OAAAh2D,MAAAk2D,KAAA,WAAAl2D,KAAAg2D,MAAAzkC,EAAA60B,IAQA2P,EAAAj7D,UAAAi8D,EAAA,WACA,GAAAC,GAAAh3D,KAAAi3D,GACA,OAAA3mD,MAAA+yC,IAAA,EAAA2T,IAAAh3D,KAAAqrD,QAAA,GAMA0K,EAAAj7D,UAAAm8D,EAAA,WACA,GAAAD,EACA,IAAAh3D,KAAAu2D,KAAAv2D,KAAAuxB,KAAAglC,IACA,KAAA56D,OAAA,0BAAAqE,KAAAqB,IAAA,IAAArB,KAAA9B,MAAA,IAEA,IAAA8B,KAAAomD,MAAAmQ,IACA,KAAA56D,OAAA,mBAAAqE,KAAAqB,IAAA,IAAArB,KAAA9B,MAAA,WAGA,KADA84D,EAAAh3D,KAAAuxB,KAAA0lC,OACAj3D,KAAAomD,MAAA6Q,IACA,KAAAt7D,OAAA,sBAGA,OAAAq7D,IAAAh3D,KAAAu2D,IAAA,MAGAR,EAAAE,KAAA,EACAF,EAAAmB,OAAA,EACAnB,IAEAj8D,GAAAi8D,UAIA,IAAAoB,GAAA,WACA,QAAAA,MA2FA,MApFAA,GAAAr8D,UAAAo7D,KAAA,SAAA70D,EAAAnD,EAAA83D,EAAAzkC,EAAA60B,GACA,MAAApmD,OAUAm3D,EAAAr8D,UAAAkwD,OAAA,SAAA3pD,EAAAnD,EAAAw3D,GACA,UAAAK,GAAA10D,EAAAnD,EAAA,OASAi5D,EAAAr8D,UAAAwmD,OAAA,SAAAjgD,EAAAq0D,GACA,MAAA11D,OAKAm3D,EAAAr8D,UAAAuwD,MAAA,WACA,UAKA8L,EAAAr8D,UAAAgQ,QAAA,WACA,UAUAqsD,EAAAr8D,UAAA+xD,iBAAA,SAAAD,GACA,UAUAuK,EAAAr8D,UAAAq7D,iBAAA,SAAAvJ,GACA,UAKAuK,EAAAr8D,UAAA0xD,OAAA,WACA,aAKA2K,EAAAr8D,UAAA0wD,OAAA,WACA,aAMA2L,EAAAr8D,UAAAm8D,EAAA,WACA,UAMAE,EAAAr8D,UAAAy7D,EAAA,WACA,UAEAY,IAEAr9D,GAAAq9D,eAKA,IAAAtN,GAAA,WAMA,QAAAA,GAAAuN,EAAAC,OACA,KAAAA,IAA+BA,EAAAxN,EAAAb,YAC/BhpD,KAAAo3D,IACAp3D,KAAAq3D,IAyJA,MA/IAxN,GAAA/uD,UAAAkwD,OAAA,SAAA3pD,EAAAnD,GACA,UAAA2rD,GAAA7pD,KAAAo3D,EAAAp3D,KAAAq3D,EACArM,OAAA3pD,EAAAnD,EAAA8B,KAAAo3D,GACAlB,KAAA,UAAAH,EAAAmB,MAAA,aAQArN,EAAA/uD,UAAAwmD,OAAA,SAAAjgD,GACA,UAAAwoD,GAAA7pD,KAAAo3D,EAAAp3D,KAAAq3D,EACA/V,OAAAjgD,EAAArB,KAAAo3D,GACAlB,KAAA,UAAAH,EAAAmB,MAAA,aASArN,EAAA/uD,UAAA0C,IAAA,SAAA6D,GAGA,IAFA,GAAAklD,GACAzqB,EAAA97B,KAAAq3D,GACAv7B,EAAAhxB,WAAA,CAEA,QADAy7C,EAAAvmD,KAAAo3D,EAAA/1D,EAAAy6B,EAAAz6B,MAEA,MAAAy6B,GAAA59B,KAEAqoD,GAAA,EACAzqB,IAAAvK,KAEAg1B,EAAA,IACAzqB,IAAAsqB,OAGA,aAOAyD,EAAA/uD,UAAAuxD,kBAAA,SAAAhrD,GAEA,IADA,GAAAklD,GAAAzqB,EAAA97B,KAAAq3D,EAAAC,EAAA,MACAx7B,EAAAhxB,WAAA,CAEA,QADAy7C,EAAAvmD,KAAAo3D,EAAA/1D,EAAAy6B,EAAAz6B,MACA,CACA,GAAAy6B,EAAAvK,KAAAzmB,UAMA,MAAAwsD,GACAA,EAAAj2D,IAGA,IARA,KADAy6B,IAAAvK,MACAuK,EAAAsqB,MAAAt7C,WACAgxB,IAAAsqB,KACA,OAAAtqB,GAAAz6B,IASAklD,EAAA,EACAzqB,IAAAvK,KAEAg1B,EAAA,IACA+Q,EAAAx7B,EACAA,IAAAsqB,OAGA,KAAAzqD,OAAA,0EAKAkuD,EAAA/uD,UAAAgQ,QAAA,WACA,MAAA9K,MAAAq3D,EAAAvsD,WAKA++C,EAAA/uD,UAAAuwD,MAAA,WACA,MAAArrD,MAAAq3D,EAAAhM,SAKAxB,EAAA/uD,UAAA0xD,OAAA,WACA,MAAAxsD,MAAAq3D,EAAA7K,UAKA3C,EAAA/uD,UAAA0wD,OAAA,WACA,MAAAxrD,MAAAq3D,EAAA7L,UAWA3B,EAAA/uD,UAAA+xD,iBAAA,SAAAD,GACA,MAAA5sD,MAAAq3D,EAAAxK,iBAAAD,IAUA/C,EAAA/uD,UAAAq7D,iBAAA,SAAAvJ,GACA,MAAA5sD,MAAAq3D,EAAAlB,iBAAAvJ,IAQA/C,EAAA/uD,UAAAiyD,YAAA,SAAAwK,GACA,UAAA/B,GAAAx1D,KAAAq3D,EAAA,KAAAr3D,KAAAo3D,GAAA,EAAAG,IAEA1N,EAAA/uD,UAAAkyD,gBAAA,SAAA3rD,EAAAk2D,GACA,UAAA/B,GAAAx1D,KAAAq3D,EAAAh2D,EAAArB,KAAAo3D,GAAA,EAAAG,IAEA1N,EAAA/uD,UAAAyyD,uBAAA,SAAAlsD,EAAAk2D,GACA,UAAA/B,GAAAx1D,KAAAq3D,EAAAh2D,EAAArB,KAAAo3D,GAAA,EAAAG,IAEA1N,EAAA/uD,UAAAwyD,mBAAA,SAAAiK,GACA,UAAA/B,GAAAx1D,KAAAq3D,EAAA,KAAAr3D,KAAAo3D,GAAA,EAAAG,IAMA1N,EAAAb,WAAA,GAAAmO,GACAtN,IAEA/vD,GAAA+vD,afs0FM,SAAU9vD,EAAQD,EAASH,GAEjC,YgBv8GAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAs5D,GAAA79D,EAAA,IACA89D,EAAA99D,EAAA,IACA80D,EAAA90D,EAAA,GACA+9D,EAAA/9D,EAAA,IACAg+D,EAAAh+D,EAAA,IACAi+D,EAAAj+D,EAAA,IACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,GACAk+D,EAAAl+D,EAAA,IACAm+D,EAAAn+D,EAAA,IACAo+D,EAAAp+D,EAAA,KACAq+D,EAAAr+D,EAAA,IACAs+D,EAAAt+D,EAAA,KACAu+D,EAAAv+D,EAAA,IACAw+D,EAAAx+D,EAAA,KACAy+D,EAAAz+D,EAAA,IAKA0+D,EAAA,WAMA,QAAAA,GAAAC,EAAAC,EAAA/5D,GACA,GAAA8D,GAAAtC,IACAA,MAAAs4D,IACAt4D,KAAAxB,MACAwB,KAAAw4D,gBAAA,EACAx4D,KAAAy4D,EAAA,KACAz4D,KAAA04D,EAAA,GAAAT,GAAAU,WACA34D,KAAA44D,EAAA,EACA54D,KAAA64D,EAAA,KAEA74D,KAAA84D,EAAA,GAAApB,GAAAqB,mBAKA/4D,KAAAg5D,EAAA,IAEA,IAAAC,GAAA,GAAApB,GAAAqB,kBAAA16D,EAEA,IADAwB,KAAAm5D,EAAArB,EAAAsB,aAAAC,cAAAf,GACAC,GAAAnY,EAAAkE,eACAtkD,KAAAs5D,EAAA,GAAAnB,GAAAoB,mBAAAv5D,KAAAs4D,EAAAt4D,KAAAw5D,GAAAt5D,KAAAF,MAAAi5D,GAEAp8D,WAAAmD,KAAAy5D,GAAAv5D,KAAAF,MAAA,UAEA,CACA,GAAA05D,GAAAl7D,EAAAI,QAAA,4BAEA,aAAA86D,GAAA,OAAAA,EAAA,CACA,mBAAAA,GACA,KAAA/9D,OAAA,qEAEA,KACAwkD,EAAA91C,UAAAqvD,GAEA,MAAAv+D,GACA,KAAAQ,OAAA,kCAAAR,IAGA6E,KAAAg5D,EAAA,GAAAd,GAAAyB,qBAAA35D,KAAAs4D,EAAAt4D,KAAAw5D,GAAAt5D,KAAAF,WAAAy5D,GAAAv5D,KAAAF,WAAA45D,GAAA15D,KAAAF,MAAAi5D,EAAAS,GACA15D,KAAAs5D,EAAAt5D,KAAAg5D,EAEAC,EAAAY,uBAAA,SAAAnmD,GACApR,EAAAg3D,EAAAQ,iBAAApmD,KAIA1T,KAAA+5D,GAAAjC,EAAAsB,aAAAY,oBAAA1B,EAAA,WAAsG,UAAAP,GAAAkC,cAAA33D,EAAA62D,EAAA72D,EAAAg3D,KACtGt5D,KAAAk6D,KAEAl6D,KAAAm6D,GAAA,GAAAvC,GAAAwC,eACAp6D,KAAAq6D,GAAA,GAAA1C,GAAA2C,UACAC,eAAA,SAAAtW,EAAAuW,EAAAC,EAAAC,GACA,GAAAC,MACA7+B,EAAAx5B,EAAA63D,GAAAS,QAAA3W,EAAAtG,KASA,OANA7hB,GAAAhxB,YACA6vD,EAAAr4D,EAAA+3D,GAAAQ,qBAAA5W,EAAAtG,KAAA7hB,GACAj/B,WAAA,WACA69D,EAAA,OACqB,IAErBC,GAEAG,cAAA,eAEA96D,KAAA+6D,GAAA,gBACA/6D,KAAAg7D,GAAA,GAAArD,GAAA2C,UACAC,eAAA,SAAAtW,EAAAuW,EAAAC,EAAAC,GAMA,MALAp4D,GAAAg3D,EAAA2B,OAAAhX,EAAAwW,EAAAD,EAAA,SAAAtrC,EAAA5kB,GACA,GAAA4wD,GAAAR,EAAAxrC,EAAA5kB,EACAhI,GAAAo2D,EAAAyC,0BAAAlX,EAAAtG,KAAAud,SAKAJ,cAAA,SAAA7W,EAAAuW,GACAl4D,EAAAg3D,EAAA8B,SAAAnX,EAAAuW,MAkZA,MA3YAnC,GAAAv9D,UAAAiV,SAAA,WACA,OAAA/P,KAAAs4D,EAAA+C,OAAA,sBAAAr7D,KAAAs4D,EAAA/5C,MAKA85C,EAAAv9D,UAAAoC,KAAA,WACA,MAAA8C,MAAAs4D,EAAAx5D,WAKAu5D,EAAAv9D,UAAAwgE,WAAA,WACA,GAAAC,GAAAv7D,KAAAm6D,GAAAS,QAAA,GAAAnM,GAAA7J,KAAA,2BACA4W,EAAAD,EAAA7tD,OAAA,CACA,WAAAmE,OAAAE,UAAAypD,GAMAnD,EAAAv9D,UAAA2gE,qBAAA,WACA,MAAAjE,GAAAkE,oBACAC,UAAA37D,KAAAs7D,gBAYAjD,EAAAv9D,UAAA0+D,GAAA,SAAAlU,EAAAh7C,EAAAsxD,EAAApB,GAEAx6D,KAAAw4D,iBACA,IAAA7a,GAAA,GAAA8Q,GAAA7J,KAAAU,EACAh7C,GAAAtK,KAAA64D,EACA74D,KAAA64D,EAAAvT,EAAAh7C,GACAA,CACA,IAAA4wD,KACA,IAAAV,EACA,GAAAoB,EAAA,CACA,GAAAC,GAAAxb,EAAAphD,IAAAqL,EAAA,SAAAwxD,GACA,MAAArE,GAAApQ,aAAAyU,IAEAZ,GAAAl7D,KAAAg7D,GAAAe,sBAAApe,EAAAke,EAAArB,OAEA,CACA,GAAAwB,GAAAvE,EAAApQ,aAAA/8C,EACA4wD,GAAAl7D,KAAAg7D,GAAAiB,0BAAAte,EAAAqe,EAAAxB,OAGA,IAAAoB,EAAA,CACA,GAAAM,GAAA7b,EAAAphD,IAAAqL,EAAA,SAAAwxD,GACA,MAAArE,GAAApQ,aAAAyU,IAEAZ,GAAAl7D,KAAAg7D,GAAAmB,iBAAAxe,EAAAue,OAEA,CACA,GAAAE,GAAA3E,EAAApQ,aAAA/8C,EACA4wD,GAAAl7D,KAAAg7D,GAAAH,qBAAAld,EAAAye,GAEA,GAAAC,GAAA1e,CACAud,GAAAxgE,OAAA,IAGA2hE,EAAAr8D,KAAAs8D,GAAA3e,IAEA39C,KAAA04D,EAAAyC,0BAAAkB,EAAAnB,IAOA7C,EAAAv9D,UAAAyhE,GAAA,SAAAv6D,GACAhC,KAAA64D,EAAA72D,GAMAq2D,EAAAv9D,UAAA2+D,GAAA,SAAA+C,GACAx8D,KAAA+6D,GAAA,YAAAyB,IACA,IAAAA,GACAx8D,KAAAy8D,MAOApE,EAAAv9D,UAAA8+D,GAAA,SAAA8C,GACA,GAAAp6D,GAAAtC,IACAogD,GAAA2C,KAAA2Z,EAAA,SAAAx+D,EAAAmD,GACAiB,EAAAy4D,GAAA15D,EAAAnD,MASAm6D,EAAAv9D,UAAAigE,GAAA,SAAAzV,EAAApnD,GACA,GAAAy/C,GAAA,GAAA8Q,GAAA7J,KAAA,UAAAU,GACA+C,EAAAoP,EAAApQ,aAAAnpD,EACA8B,MAAAm6D,GAAAwC,eAAAhf,EAAA0K,EACA,IAAA6S,GAAAl7D,KAAAq6D,GAAAQ,qBAAAld,EAAA0K,EACAroD,MAAA04D,EAAAyC,0BAAAxd,EAAAud,IAMA7C,EAAAv9D,UAAA8hE,GAAA,WACA,MAAA58D,MAAA44D,KAQAP,EAAAv9D,UAAA+hE,gBAAA,SAAAlf,EAAAmf,EAAAhS,EAAA4P,GACA,GAAAp4D,GAAAtC,IACAA,MAAA+8D,GAAA,OACApf,UACAz/C,MAAA4+D,EACA7N,SAAAnE,GAIA,IAAAkS,GAAAh9D,KAAAy7D,uBACAwB,EAAAxF,EAAApQ,aAAAyV,EAAAhS,GACAzC,EAAAmP,EAAA0F,6BAAAD,EAAAD,GACAG,EAAAn9D,KAAA48D,KACA1B,EAAAl7D,KAAAg7D,GAAAoC,mBAAAzf,EAAA0K,EAAA8U,GAAA,EACAn9D,MAAA04D,EAAA2E,YAAAnC,GACAl7D,KAAAs5D,EAAAxa,IAAAnB,KAAAsf,EAAAvvD,KAAA,YAAAwhB,EAAAouC,GACA,GAAAC,GAAA,OAAAruC,CACAquC,IACAnd,EAAAryC,KAAA,UAAA4vC,EAAA,YAAAzuB,EAEA,IAAAsuC,GAAAl7D,EAAA04D,GAAAyC,aAAAN,GAAAI,EACAj7D,GAAAo2D,EAAAyC,0BAAAxd,EAAA6f,GACAl7D,EAAAo7D,uBAAAhD,EAAAxrC,EAAAouC,IAEA,IAAAjB,GAAAr8D,KAAA29D,GAAAhgB,EACA39C,MAAAs8D,GAAAD,GAEAr8D,KAAA04D,EAAAyC,0BAAAkB,OAOAhE,EAAAv9D,UAAAwb,OAAA,SAAAqnC,EAAAigB,EAAAlD,GACA,GAAAp4D,GAAAtC,IACAA,MAAA+8D,GAAA,UAA6Bpf,UAAAz/C,MAAA0/D,GAE7B,IAAAC,IAAA,EACAb,EAAAh9D,KAAAy7D,uBACAS,IAMA,IALA7b,EAAA5gD,QAAAm+D,EAAA,SAAAE,EAAAC,GACAF,GAAA,CACA,IAAAZ,GAAAxF,EAAApQ,aAAA0W,EACA7B,GAAA4B,GAAAtG,EAAA0F,6BAAAD,EAAAD,KAEAa,EAsBAzd,EAAAp9C,IAAA,wDACAhD,KAAA09D,uBAAAhD,EAAA,UAvBA,CACA,GAAAsD,GAAAh+D,KAAA48D,KACA1B,EAAAl7D,KAAAg7D,GAAAiD,eAAAtgB,EAAAue,EAAA8B,EACAh+D,MAAA04D,EAAA2E,YAAAnC,GACAl7D,KAAAs5D,EAAA4E,MAAAvgB,KAAAigB,EAAA,SAAA1uC,EAAAouC,GACA,GAAAC,GAAA,OAAAruC,CACAquC,IACAnd,EAAAryC,KAAA,aAAA4vC,EAAA,YAAAzuB,EAEA,IAAAsuC,GAAAl7D,EAAA04D,GAAAyC,aAAAO,GAAAT,GACAlB,EAAAmB,EAAA9iE,OAAA,EAAA4H,EAAAg6D,GAAA3e,IACAr7C,GAAAo2D,EAAAyC,0BAAAkB,EAAAmB,GACAl7D,EAAAo7D,uBAAAhD,EAAAxrC,EAAAouC,KAEAjd,EAAA5gD,QAAAm+D,EAAA,SAAAO,GACA,GAAA9B,GAAA/5D,EAAAq7D,GAAAhgB,EAAAgI,MAAAwY,GACA77D,GAAAg6D,GAAAD,KAGAr8D,KAAA04D,EAAAyC,0BAAAxd,QAWA0a,EAAAv9D,UAAA2hE,GAAA,WACA,GAAAn6D,GAAAtC,IACAA,MAAA+8D,GAAA,qBACA,IAAAC,GAAAh9D,KAAAy7D,uBACA2C,EAAA5G,EAAA6G,yBAAAr+D,KAAA84D,EAAAkE,GACA9B,IACAkD,GAAAE,YAAA7P,EAAA7J,KAAA2Z,MAAA,SAAA5gB,EAAAye,GACAlB,IAAAv2D,OAAArC,EAAA04D,GAAAH,qBAAAld,EAAAye,GACA,IAAAC,GAAA/5D,EAAAq7D,GAAAhgB,EACAr7C,GAAAg6D,GAAAD,KAEAr8D,KAAA84D,EAAA,GAAApB,GAAAqB,mBACA/4D,KAAA04D,EAAAyC,0BAAA1M,EAAA7J,KAAA2Z,MAAArD,IAMA7C,EAAAv9D,UAAA0jE,mBAAA,SAAA7gB,EAAA+c,GACA,GAAAp4D,GAAAtC,IACAA,MAAAs5D,EAAAkF,mBAAA7gB,KAAA,SAAAzuB,EAAAouC,GACA,OAAApuC,GACA5sB,EAAAw2D,EAAA2F,OAAA9gB,GAEAr7C,EAAAo7D,uBAAAhD,EAAAxrC,EAAAouC,MAQAjF,EAAAv9D,UAAA4jE,gBAAA,SAAA/gB,EAAAz/C,EAAAw8D,GACA,GAAAp4D,GAAAtC,KACAqoD,EAAAoP,EAAApQ,aAAAnpD,EACA8B,MAAAs5D,EAAAqF,gBAAAhhB,KAAA0K,EAAA36C,KAAA,YAAAwhB,EAAAouC,GACA,OAAApuC,GACA5sB,EAAAw2D,EAAA8F,SAAAjhB,EAAA0K,GAEA/lD,EAAAo7D,uBAAAhD,EAAAxrC,EAAAouC,MASAjF,EAAAv9D,UAAA+jE,4BAAA,SAAAlhB,EAAAz/C,EAAA+wD,EAAAyL,GACA,GAAAp4D,GAAAtC,KACAqoD,EAAAoP,EAAApQ,aAAAnpD,EAAA+wD,EACAjvD,MAAAs5D,EAAAqF,gBAAAhhB,KAAA0K,EAAA36C,KAAA,YAAAwhB,EAAAouC,GACA,OAAApuC,GACA5sB,EAAAw2D,EAAA8F,SAAAjhB,EAAA0K,GAEA/lD,EAAAo7D,uBAAAhD,EAAAxrC,EAAAouC,MAQAjF,EAAAv9D,UAAAgkE,mBAAA,SAAAnhB,EAAAigB,EAAAlD,GACA,GAAAp4D,GAAAtC,IACA,IAAAqgD,EAAAv1C,QAAA8yD,GAGA,MAFAxd,GAAAp9C,IAAA,2EACAhD,MAAA09D,uBAAAhD,EAAA,KAGA16D,MAAAs5D,EAAAyF,kBAAAphB,KAAAigB,EAAA,SAAA1uC,EAAAouC,GACA,OAAApuC,GACAmxB,EAAA5gD,QAAAm+D,EAAA,SAAAvT,EAAAsB,GACA,GAAAjB,GAAA+M,EAAApQ,aAAAsE,EACArpD,GAAAw2D,EAAA8F,SAAAjhB,EAAAgI,MAAA0E,GAAAK,KAGApoD,EAAAo7D,uBAAAhD,EAAAxrC,EAAAouC,MAOAjF,EAAAv9D,UAAAkkE,yBAAA,SAAA/a,EAAAgb,GACA,GAAA/D,EAEAA,GADA,UAAAjX,EAAAtG,KAAAuH,WACAllD,KAAAq6D,GAAA6E,qBAAAjb,EAAAgb,GAGAj/D,KAAAg7D,GAAAkE,qBAAAjb,EAAAgb,GAEAj/D,KAAA04D,EAAAyG,kBAAAlb,EAAAtG,KAAAud,IAMA7C,EAAAv9D,UAAAskE,4BAAA,SAAAnb,EAAAgb,GAGA,GAAA/D,EAEAA,GADA,UAAAjX,EAAAtG,KAAAuH,WACAllD,KAAAq6D,GAAAgF,wBAAApb,EAAAgb,GAGAj/D,KAAAg7D,GAAAqE,wBAAApb,EAAAgb,GAEAj/D,KAAA04D,EAAAyG,kBAAAlb,EAAAtG,KAAAud,IAEA7C,EAAAv9D,UAAAwkE,UAAA,WACAt/D,KAAAg5D,GACAh5D,KAAAg5D,EAAAsG,UAzZA,mBA4ZAjH,EAAAv9D,UAAAykE,OAAA,WACAv/D,KAAAg5D,GACAh5D,KAAAg5D,EAAAuG,OA9ZA,mBAiaAlH,EAAAv9D,UAAA0kE,MAAA,SAAAC,GAEA,OADA,KAAAA,IAAmCA,GAAA,GACnC,mBAAA1hE,SAAA,CAEA,GAAAyhE,EACAC,IACAz/D,KAAAy4D,IACAz4D,KAAAy4D,EAAA,GAAAT,GAAA0H,cAAA1/D,KAAAm5D,IACAqG,EAAAx/D,KAAAy4D,EAAAj7D,OAGAgiE,EAAAx/D,KAAAm5D,EAAA37D,KAEA,IAAAmiE,GAAA9kE,OAAAmE,KAAAwgE,GAAAI,OAAA,SAAAC,EAAAC,GACA,MAAAxvD,MAAA6M,IAAA2iD,EAAAplE,OAAAmlE,IACS,EACTxf,GAAA5gD,QAAA+/D,EAAA,SAAAO,EAAA7hE,GAEA,OAAAlE,GAAA+lE,EAAArlE,OAAqCV,EAAA2lE,EAAA,EAAqB3lE,IAC1D+lE,GAAA,GACAhiE,SAAAiF,IAAA+8D,EAAA7hE,OAGAm6D,EAAAv9D,UAAAklE,sBAAA,SAAAC,GACAjgE,KAAAm5D,EAAA+G,iBAAAD,GACAjgE,KAAA+5D,GAAAoG,YAAAF,IAMA5H,EAAAv9D,UAAAiiE,GAAA,WAEA,OADAhc,MACAjhD,EAAA,EAAwBA,EAAAC,UAAArF,OAAuBoF,IAC/CihD,EAAAjhD,GAAAC,UAAAD,EAEA,IAAA0hD,GAAA,EACAxhD,MAAAg5D,IACAxX,EAAAxhD,KAAAg5D,EAAA7qD,GAAA,KAEAiyC,EAAAp9C,IAAA7C,UAAA,IAAAqhD,GAAA78C,OAAAo8C,KAOAsX,EAAAv9D,UAAA4iE,uBAAA,SAAA17D,EAAAktB,EAAAouC,GACAt7D,GACAo+C,EAAAgE,eAAA,WACA,SAAAl1B,EACAltB,EAAA,UAEA,CACA,GAAAf,IAAAiuB,GAAA,SAAAzB,cACA3mB,EAAA7F,CACAq8D,KACAx2D,GAAA,KAAAw2D,EACA,IAAAt/D,GAAArC,MAAAmL,EACA9I,GAAAiD,OACAe,EAAAhE,OAKAnD,OAAAwC,eAAAg7D,EAAAv9D,UAAA,YACA0C,IAAA,WACA,MAAAwC,MAAAogE,aAAApgE,KAAAogE,WAAA,GAAAhI,GAAAiI,SAAArgE,QAEAzC,YAAA,EACAD,cAAA,IAEA+6D,IAEAv+D,GAAAu+D,QhB+9GM,SAAUt+D,EAAQD,EAASH,GAEjC,YiB99HAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAO9C,IAAAoiE,GAAA,WAMA,QAAAA,GAAAC,EAAAC,EAAAC,GACAzgE,KAAAugE,KACAvgE,KAAAwgE,KACAxgE,KAAAygE,KAwCA,MAlCAH,GAAAxlE,UAAA4lE,mBAAA,WACA,MAAA1gE,MAAAwgE,IAMAF,EAAAxlE,UAAA6lE,WAAA,WACA,MAAA3gE,MAAAygE,IAMAH,EAAAxlE,UAAA8lE,kBAAA,SAAAjjB,GACA,GAAAA,EAAA7yC,UACA,MAAA9K,MAAA0gE,uBAAA1gE,KAAAygE,EAEA,IAAA1O,GAAApU,EAAAuH,UACA,OAAAllD,MAAA6gE,mBAAA9O,IAMAuO,EAAAxlE,UAAA+lE,mBAAA,SAAAx/D,GACA,MAAArB,MAAA0gE,uBAAA1gE,KAAAygE,IAAAzgE,KAAAugE,GAAA/V,SAAAnpD,IAKAi/D,EAAAxlE,UAAA8/D,QAAA,WACA,MAAA56D,MAAAugE,IAEAD,IAEAxmE,GAAAwmE,ajBq/HQ,CACA,CAEF,SAAUvmE,EAAQD,EAASH,GAEjC,YkBpjIA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA4iE,GAAAnnE,EAAA,IACAonE,EAAApnE,EAAA,IACAwmD,EAAAxmD,EAAA,GACAqnE,EAAArnE,EAAA,IACAsnE,EAAAtnE,EAAA,IACAunE,EAAAvnE,EAAA,IACA80D,EAAA90D,EAAA,GACAwnE,EAAAxnE,EAAA,KACAynE,EAAAznE,EAAA,GACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,GACA0nE,EAAA1nE,EAAA,IACA2nE,EAAA,SAAA/rD,GAaA,QAAA+rD,GAAAC,EAAA5jB,GAEA,KAAA4jB,YAAAL,GAAA7I,MACA,KAAA18D,OAAA,4DAIA,OADA4Z,GAAArb,KAAA8F,KAAAuhE,EAAA5jB,EAAAwjB,EAAAK,YAAAC,SAAA,IAAAzhE,KA6OA,MA/PAgV,GAAAssD,EAAA/rD,GAsBA+rD,EAAAxmE,UAAA4mE,OAAA,WAEA,MADAthB,GAAAtnC,iBAAA,oBAAA/Y,UAAArF,QACAsF,KAAA29C,KAAA7yC,UACA,KAEA9K,KAAA29C,KAAA0H,WAMAic,EAAAxmE,UAAA6qD,MAAA,SAAAL,GAWA,MAVAlF,GAAAtnC,iBAAA,sBAAA/Y,UAAArF,QACA,gBAAA4qD,GACAA,GAAAh+C,GAEAg+C,YAAAmJ,GAAA7J,OACA,OAAA5kD,KAAA29C,KAAAuH,WACAkc,EAAAnR,uBAAA,oBAAA3K,GAAA,GAEA8b,EAAApR,mBAAA,oBAAA1K,GAAA,IAEA,GAAAgc,GAAAthE,KAAAuhE,KAAAvhE,KAAA29C,KAAAgI,MAAAL,KAGAgc,EAAAxmE,UAAA6mE,UAAA,WACAvhB,EAAAtnC,iBAAA,uBAAA/Y,UAAArF,OACA,IAAAknE,GAAA5hE,KAAA29C,KAAA8H,QACA,eAAAmc,EAAA,QAAAN,GAAAthE,KAAAuhE,KAAAK,IAGAN,EAAAxmE,UAAA+mE,QAAA,WACAzhB,EAAAtnC,iBAAA,qBAAA/Y,UAAArF,OAEA,KADA,GAAAiU,GAAA3O,KACA,OAAA2O,EAAAgzD,aACAhzD,IAAAgzD,WAEA,OAAAhzD,IAGA2yD,EAAAxmE,UAAAgnE,aAAA,WACA,MAAA9hE,MAAAuhE,KAAAQ,UAOAT,EAAAxmE,UAAAikB,IAAA,SAAA+9C,EAAApC,GACAta,EAAAtnC,iBAAA,oBAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,gBAAAlwD,KAAA29C,MACAyjB,EAAAlS,wBAAA,kBAAA4N,EAAA98D,KAAA29C,MAAA,GACAyC,EAAAznC,iBAAA,kBAAA+hD,GAAA,EACA,IAAAhuD,GAAA,GAAA2zC,GAAAnuC,QAGA,OAFAlS,MAAAuhE,KAAA1E,gBAAA78D,KAAA29C,KAAAmf,EACA,KAAApwD,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAOAslE,EAAAxmE,UAAAwb,OAAA,SAAA0rD,EAAAtH,GAGA,GAFAta,EAAAtnC,iBAAA,uBAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,mBAAAlwD,KAAA29C,MACAt4C,MAAAgD,QAAA25D,GAAA,CAEA,OADAC,MACAjoE,EAAA,EAA2BA,EAAAgoE,EAAAtnE,SAA0BV,EACrDioE,EAAA,GAAAjoE,GAAAgoE,EAAAhoE,EAEAgoE,GAAAC,EACA9hB,EAAApyC,KAAA,wMAKAqzD,EAAAzR,6BAAA,qBAAAqS,EAAAhiE,KAAA29C,MAAA,GACAyC,EAAAznC,iBAAA,qBAAA+hD,GAAA,EACA,IAAAhuD,GAAA,GAAA2zC,GAAAnuC,QAEA,OADAlS,MAAAuhE,KAAAjrD,OAAAtW,KAAA29C,KAAAqkB,EAAAt1D,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAQAslE,EAAAxmE,UAAA+hE,gBAAA,SAAAC,EAAAhS,EAAA4P,GAMA,GALAta,EAAAtnC,iBAAA,gCAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,4BAAAlwD,KAAA29C,MACAyjB,EAAAlS,wBAAA,8BAAA4N,EAAA98D,KAAA29C,MAAA,GACAyjB,EAAAxR,iBAAA,8BAAA9E,GAAA,GACA1K,EAAAznC,iBAAA,8BAAA+hD,GAAA,GACA,YAAA16D,KAAA0hE,UAAA,UAAA1hE,KAAA0hE,SACA,0CACA1hE,KAAA0hE,SACA,yBACA,IAAAh1D,GAAA,GAAA2zC,GAAAnuC,QAEA,OADAlS,MAAAuhE,KAAA1E,gBAAA78D,KAAA29C,KAAAmf,EAAAhS,EAAAp+C,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAMAslE,EAAAxmE,UAAAwmD,OAAA,SAAAoZ,GAIA,MAHAta,GAAAtnC,iBAAA,uBAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,mBAAAlwD,KAAA29C,MACAyC,EAAAznC,iBAAA,qBAAA+hD,GAAA,GACA16D,KAAA+e,IAAA,KAAA27C,IAQA4G,EAAAxmE,UAAAsrC,YAAA,SAAA87B,EAAAxH,EAAAyH,GAQA,GAPA/hB,EAAAtnC,iBAAA,4BAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,wBAAAlwD,KAAA29C,MACAyC,EAAAznC,iBAAA,0BAAAupD,GAAA,GACA9hB,EAAAznC,iBAAA,0BAAA+hD,GAAA,GAGA0G,EAAA5Q,gBAAA,0BAAA2R,GAAA,GACA,YAAAniE,KAAA0hE,UAAA,UAAA1hE,KAAA0hE,SACA,sCACA1hE,KAAA0hE,SACA,8BACA9lE,KAAAumE,IACAA,GAAA,EACA,IAAAz1D,GAAA,GAAA2zC,GAAAnuC,QACA,mBAAAwoD,IACAhuD,EAAA1Q,QAAAoW,MAAA,aAEA,IAAAgwD,GAAA,SAAApkE,EAAAqkE,EAAAzQ,GACA5zD,EACA0O,EAAAzQ,OAAA+B,GAGA0O,EAAA3Q,QAAA,GAAAglE,GAAAuB,kBAAAD,EAAAzQ,IAEA,kBAAA8I,IACAA,EAAA18D,EAAAqkE,EAAAzQ,GAIA,OADA5xD,MAAAuhE,KAAAgB,iBAAAviE,KAAA29C,KAAAukB,EAAAE,EAAAD,GACAz1D,EAAA1Q,SAOAslE,EAAAxmE,UAAA0nE,YAAA,SAAAvT,EAAAyL,GACAta,EAAAtnC,iBAAA,4BAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,wBAAAlwD,KAAA29C,MACAyjB,EAAAxR,iBAAA,0BAAAX,GAAA,GACA7O,EAAAznC,iBAAA,0BAAA+hD,GAAA,EACA,IAAAhuD,GAAA,GAAA2zC,GAAAnuC,QAEA,OADAlS,MAAAuhE,KAAA1E,gBAAA78D,KAAA29C,KAAAgI,MAAA,aAAAsJ,EAAA,KAAAviD,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAOAslE,EAAAxmE,UAAAF,KAAA,SAAAsD,EAAAw8D,GACAta,EAAAtnC,iBAAA,qBAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,iBAAAlwD,KAAA29C,MACAyjB,EAAAlS,wBAAA,mBAAAhxD,EAAA8B,KAAA29C,MAAA,GACAyC,EAAAznC,iBAAA,mBAAA+hD,GAAA,EACA,IASA1+D,GATAmY,EAAAnU,KAAAuhE,KAAAjG,aACAp+D,EAAA8jE,EAAAyB,WAAAtuD,GAMAuuD,EAAA1iE,KAAA2lD,MAAAzoD,GACAylE,EAAA3iE,KAAA2lD,MAAAzoD,EAaA,OAVAlB,GADA,MAAAkC,EACAwkE,EAAA3jD,IAAA7gB,EAAAw8D,GAAAn4D,KAAA,WAAgF,MAAAogE,KAGhF7mE,QAAAC,QAAA4mE,GAEAD,EAAAngE,KAAAvG,EAAAuG,KAAArC,KAAAlE,GACA0mE,EAAAtwD,MAAApW,EAAAuG,KAAArC,KAAAlE,MAAAJ,IACA,kBAAA8+D,IACA1+D,EAAAoW,MAAA,cAEAswD,GAKApB,EAAAxmE,UAAA8nE,aAAA,WAEA,MADAxB,GAAAlR,qBAAA,yBAAAlwD,KAAA29C,MACA,GAAAmjB,GAAA+B,aAAA7iE,KAAAuhE,KAAAvhE,KAAA29C,OAEA9iD,OAAAwC,eAAAikE,EAAAxmE,UAAA,YACA0C,IAAA,WACA,MAAAwC,MAAA8hE,gBAEAvkE,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAikE,EAAAxmE,UAAA,OACA0C,IAAA,WACA,MAAAwC,MAAA0hE,UAEAnkE,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAikE,EAAAxmE,UAAA,UACA0C,IAAA,WACA,MAAAwC,MAAA2hE,aAEApkE,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAikE,EAAAxmE,UAAA,QACA0C,IAAA,WACA,MAAAwC,MAAA6hE,WAEAtkE,YAAA,EACAD,cAAA,IAEAgkE,GACCL,EAAA6B,MACDhpE,GAAAwnE,YAOAL,EAAA6B,MAAAC,uBAAAzB,EACAD,EAAA2B,UAAAD,uBAAAzB,GlB4kIM,SAAUvnE,EAAQD,EAASH,GAEjC,YmB/2IAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAynE,EAAAznE,EAAA,GACA80D,EAAA90D,EAAA,GACAwvD,EAAAxvD,EAAA,GAKAspE,EAAA,WAMA,QAAAA,GAAA1C,EAAA2C,EAAAC,GACAnjE,KAAAugE,KACAvgE,KAAAkjE,KACAljE,KAAAmjE,KAsIA,MA9HAF,GAAAnoE,UAAA4S,IAAA,WAEA,MADAyyC,GAAArnC,iBAAA,uBAAA/Y,UAAArF,QACAsF,KAAAugE,GAAA7yD,OAOAu1D,EAAAnoE,UAAAsoE,UAAA,WAEA,MADAjjB,GAAArnC,iBAAA,6BAAA/Y,UAAArF,QACAsF,KAAAugE,GAAA7yD,KAAA,IAIAu1D,EAAAnoE,UAAAy9C,OAAA,WAGA,MADA4H,GAAArnC,iBAAA,0BAAA/Y,UAAArF,QACAsF,KAAAojE,aAOAH,EAAAnoE,UAAAuoE,OAAA,WAEA,MADAljB,GAAArnC,iBAAA,0BAAA/Y,UAAArF,SACAsF,KAAAugE,GAAAz1D,WAQAm4D,EAAAnoE,UAAA6qD,MAAA,SAAA2d,GACAnjB,EAAArnC,iBAAA,yBAAA/Y,UAAArF,QAEA4oE,GAAAh8D,GACA85D,EAAApR,mBAAA,uBAAAsT,GAAA,EACA,IAAAC,GAAA,GAAA9U,GAAA7J,KAAA0e,GACAE,EAAAxjE,KAAAkjE,GAAAvd,MAAA4d,EACA,WAAAN,GAAAjjE,KAAAugE,GAAAjW,SAAAiZ,GAAAC,EAAAra,EAAAJ,iBAQAka,EAAAnoE,UAAA0vD,SAAA,SAAA8Y,GACAnjB,EAAArnC,iBAAA,4BAAA/Y,UAAArF,QACA0mE,EAAApR,mBAAA,0BAAAsT,GAAA,EACA,IAAAC,GAAA,GAAA9U,GAAA7J,KAAA0e,EACA,QAAAtjE,KAAAugE,GAAAjW,SAAAiZ,GAAAz4D,WAOAm4D,EAAAnoE,UAAAgtD,YAAA,WAGA,MAFA3H,GAAArnC,iBAAA,+BAAA/Y,UAAArF,QAEAsF,KAAAugE,GAAAzY,cAAAp6C,OAUAu1D,EAAAnoE,UAAA2E,QAAA,SAAAmtD,GACA,GAAAtqD,GAAAtC,IAGA,OAFAmgD,GAAArnC,iBAAA,2BAAA/Y,UAAArF,QACAylD,EAAAxnC,iBAAA,yBAAAi0C,GAAA,IACA5sD,KAAAugE,GAAAtW,gBAEAjqD,KAAAugE,GAEA7U,aAAA1rD,KAAAmjE,GAAA,SAAA9hE,EAAAy6B,GACA,MAAA8wB,GAAA,GAAAqW,GAAAnnC,EAAAx5B,EAAA4gE,GAAAvd,MAAAtkD,GAAA8nD,EAAAJ,oBAOAka,EAAAnoE,UAAA2oE,YAAA,WAEA,MADAtjB,GAAArnC,iBAAA,+BAAA/Y,UAAArF,SACAsF,KAAAugE,GAAAtW,eAGAjqD,KAAAugE,GAAAz1D,WAEAjQ,OAAAwC,eAAA4lE,EAAAnoE,UAAA,OACA0C,IAAA,WACA,MAAAwC,MAAAkjE,GAAAxB,UAEAnkE,YAAA,EACAD,cAAA,IAMA2lE,EAAAnoE,UAAAswD,YAAA,WAEA,MADAjL,GAAArnC,iBAAA,+BAAA/Y,UAAArF,QACAsF,KAAAugE,GAAAnV,eAKA6X,EAAAnoE,UAAA4oE,OAAA,WAEA,MADAvjB,GAAArnC,iBAAA,uBAAA/Y,UAAArF,QACAsF,KAAAkjE,IAEAroE,OAAAwC,eAAA4lE,EAAAnoE,UAAA,OACA0C,IAAA,WACA,MAAAwC,MAAA0jE,UAEAnmE,YAAA,EACAD,cAAA,IAEA2lE,IAEAnpE,GAAAmpE,gBnBu4IM,SAAUlpE,EAAQD,EAASH,GAEjC,YoBniJAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAIAylE,GAJA1a,EAAAtvD,EAAA,IACA80D,EAAA90D,EAAA,GACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GAQAiqE,EAAA,WAIA,MAHAD,KACAA,EAAA,GAAA1a,GAAAY,UAAA1J,EAAAsC,gBAEAkhB,GAKAE,EAAA,WAMA,QAAAA,GAAA3lE,EAAA4lE,OACA,KAAAA,IAAkCA,EAAAF,KAClC5jE,KAAA9B,QACA8B,KAAA8jE,WAkTA,MA3SAD,GAAAE,WAAA,SAAA3iE,GACA,GAAA4iE,GAAAH,EAAAtF,KAIA,OAHAne,GAAA3gD,QAAA2B,EAAA,SAAAmiE,EAAAU,GACAD,IAAAjlD,IAAA,GAAA0vC,GAAA7J,KAAA2e,GAAAU,KAEAD,GAMAH,EAAA/oE,UAAAgQ,QAAA,WACA,cAAA9K,KAAA9B,OAAA8B,KAAA8jE,SAAAh5D,WAcA+4D,EAAA/oE,UAAAopE,iCAAA,SAAApe,EAAAv0C,GACA,SAAAvR,KAAA9B,OAAAqT,EAAAvR,KAAA9B,OACA,OAAoBy/C,KAAA8Q,EAAA7J,KAAA2Z,MAAArgE,MAAA8B,KAAA9B,MAGpB,IAAA4nD,EAAAh7C,UACA,WAGA,IAAAy/C,GAAAzE,EAAAZ,WACAS,EAAA3lD,KAAA8jE,SAAAtmE,IAAA+sD,EACA,WAAA5E,EAAA,CACA,GAAAwe,GAAAxe,EAAAue,iCAAApe,EAAAV,WAAA7zC,EACA,cAAA4yD,GAEgCxmB,KADhC,GAAA8Q,GAAA7J,KAAA2F,GAAA5E,MAAAwe,EAAAxmB,MACgCz/C,MAAAimE,EAAAjmE,OAGhC,KAIA,aAWA2lE,EAAA/oE,UAAAspE,yBAAA,SAAAte,GACA,MAAA9lD,MAAAkkE,iCAAApe,EAAA,WAAgF,YAMhF+d,EAAA/oE,UAAAupE,QAAA,SAAAve,GACA,GAAAA,EAAAh7C,UACA,MAAA9K,KAGA,IAAAuqD,GAAAzE,EAAAZ,WACAof,EAAAtkE,KAAA8jE,SAAAtmE,IAAA+sD,EACA,eAAA+Z,EACAA,EAAAD,QAAAve,EAAAV,YAGAye,EAAAtF,OAWAsF,EAAA/oE,UAAAikB,IAAA,SAAA+mC,EAAAye,GACA,GAAAze,EAAAh7C,UACA,UAAA+4D,GAAAU,EAAAvkE,KAAA8jE,SAGA,IAAAvZ,GAAAzE,EAAAZ,WACAS,EAAA3lD,KAAA8jE,SAAAtmE,IAAA+sD,IAAAsZ,EAAAtF,MACAiG,EAAA7e,EAAA5mC,IAAA+mC,EAAAV,WAAAmf,GACA3Z,EAAA5qD,KAAA8jE,SAAA9Y,OAAAT,EAAAia,EACA,WAAAX,GAAA7jE,KAAA9B,MAAA0sD,IASAiZ,EAAA/oE,UAAAwmD,OAAA,SAAAwE,GACA,GAAAA,EAAAh7C,UACA,MAAA9K,MAAA8jE,SAAAh5D,UACA+4D,EAAAtF,MAGA,GAAAsF,GAAA,KAAA7jE,KAAA8jE,SAIA,IAAAvZ,GAAAzE,EAAAZ,WACAS,EAAA3lD,KAAA8jE,SAAAtmE,IAAA+sD,EACA,IAAA5E,EAAA,CACA,GAAA6e,GAAA7e,EAAArE,OAAAwE,EAAAV,YACAwF,MAAA,EAOA,OALAA,GADA4Z,EAAA15D,UACA9K,KAAA8jE,SAAAxiB,OAAAiJ,GAGAvqD,KAAA8jE,SAAA9Y,OAAAT,EAAAia,GAEA,OAAAxkE,KAAA9B,OAAA0sD,EAAA9/C,UACA+4D,EAAAtF,MAGA,GAAAsF,GAAA7jE,KAAA9B,MAAA0sD,GAIA,MAAA5qD,OAUA6jE,EAAA/oE,UAAA0C,IAAA,SAAAsoD,GACA,GAAAA,EAAAh7C,UACA,MAAA9K,MAAA9B,KAGA,IAAAqsD,GAAAzE,EAAAZ,WACAS,EAAA3lD,KAAA8jE,SAAAtmE,IAAA+sD,EACA,OAAA5E,GACAA,EAAAnoD,IAAAsoD,EAAAV,YAGA,MAWAye,EAAA/oE,UAAA2pE,QAAA,SAAA3e,EAAA4e,GACA,GAAA5e,EAAAh7C,UACA,MAAA45D,EAGA,IAAAna,GAAAzE,EAAAZ,WACAS,EAAA3lD,KAAA8jE,SAAAtmE,IAAA+sD,IAAAsZ,EAAAtF,MACAiG,EAAA7e,EAAA8e,QAAA3e,EAAAV,WAAAsf,GACA9Z,MAAA,EAOA,OALAA,GADA4Z,EAAA15D,UACA9K,KAAA8jE,SAAAxiB,OAAAiJ,GAGAvqD,KAAA8jE,SAAA9Y,OAAAT,EAAAia,GAEA,GAAAX,GAAA7jE,KAAA9B,MAAA0sD,IAWAiZ,EAAA/oE,UAAA6pE,KAAA,SAAAn6D,GACA,MAAAxK,MAAA4kE,GAAAnW,EAAA7J,KAAA2Z,MAAA/zD,IAUAq5D,EAAA/oE,UAAA8pE,GAAA,SAAAC,EAAAr6D,GACA,GAAAs6D,KAIA,OAHA9kE,MAAA8jE,SAAAjX,iBAAA,SAAAkF,EAAAuS,GACAQ,EAAA/S,GAAAuS,EAAAM,GAAAC,EAAAlf,MAAAoM,GAAAvnD,KAEAA,EAAAq6D,EAAA7kE,KAAA9B,MAAA4mE,IASAjB,EAAA/oE,UAAAiqE,WAAA,SAAApnB,EAAA1yC,GACA,MAAAjL,MAAAglE,GAAArnB,EAAA8Q,EAAA7J,KAAA2Z,MAAAtzD,IAEA44D,EAAA/oE,UAAAkqE,GAAA,SAAAC,EAAAJ,EAAA55D,GACA,GAAAzQ,KAAAwF,KAAA9B,OAAA+M,EAAA45D,EAAA7kE,KAAA9B,MACA,IAAA1D,EACA,MAAAA,EAGA,IAAAyqE,EAAAn6D,UACA,WAGA,IAAAy/C,GAAA0a,EAAA/f,WACAggB,EAAAllE,KAAA8jE,SAAAtmE,IAAA+sD,EACA,OAAA2a,GACAA,EAAAF,GAAAC,EAAA7f,WAAAyf,EAAAlf,MAAA4E,GAAAt/C,GAGA,MAWA44D,EAAA/oE,UAAAqqE,cAAA,SAAAxnB,EAAA1yC,GACA,MAAAjL,MAAAolE,GAAAznB,EAAA8Q,EAAA7J,KAAA2Z,MAAAtzD,IAEA44D,EAAA/oE,UAAAsqE,GAAA,SAAAH,EAAAI,EAAAp6D,GACA,GAAAg6D,EAAAn6D,UACA,MAAA9K,KAGAA,MAAA9B,OACA+M,EAAAo6D,EAAArlE,KAAA9B,MAEA,IAAAqsD,GAAA0a,EAAA/f,WACAggB,EAAAllE,KAAA8jE,SAAAtmE,IAAA+sD,EACA,OAAA2a,GACAA,EAAAE,GAAAH,EAAA7f,WAAAigB,EAAA1f,MAAA4E,GAAAt/C,GAGA44D,EAAAtF,OAWAsF,EAAA/oE,UAAAwqE,QAAA,SAAAr6D,GACAjL,KAAAulE,GAAA9W,EAAA7J,KAAA2Z,MAAAtzD,IAEA44D,EAAA/oE,UAAAyqE,GAAA,SAAAF,EAAAp6D,GACAjL,KAAA8jE,SAAAjX,iBAAA,SAAAxC,EAAAia,GACAA,EAAAiB,GAAAF,EAAA1f,MAAA0E,GAAAp/C,KAEAjL,KAAA9B,OACA+M,EAAAo6D,EAAArlE,KAAA9B,QAOA2lE,EAAA/oE,UAAA0qE,aAAA,SAAAv6D,GACAjL,KAAA8jE,SAAAjX,iBAAA,SAAAxC,EAAAia,GACAA,EAAApmE,OACA+M,EAAAo/C,EAAAia,EAAApmE,UAIA2lE,EAAAtF,MAAA,GAAAsF,GAAA,MACAA,IAEA/pE,GAAA+pE,iBpB2jJM,SAAU9pE,EAAQD,EAASH,GAEjC,YqB/4JAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACA8rE,EAAA9rE,EAAA,GACA+4D,EAAA/4D,EAAA,GACAwvD,EAAAxvD,EAAA,GAQA+rE,EAAA,WACA,QAAAA,GAAAvC,GACAnjE,KAAAmjE,KAkGA,MAhGAuC,GAAA5qE,UAAAowD,YAAA,SAAAkR,EAAA/6D,EAAAmjE,EAAAnI,EAAA3rD,EAAAi1D,GACAxlB,EAAAv5C,OAAAw1D,EAAAvO,UAAA7tD,KAAAmjE,IAAA,oDACA,IAAAyC,GAAAxJ,EAAAhS,kBAAA/oD,EAEA,OAAAukE,GAAAtb,SAAA+R,GAAA7V,OAAAge,EAAAla,SAAA+R,KAIAuJ,EAAA96D,WAAA05D,EAAA15D,UAIAsxD,GAGA,MAAAuJ,IACAnB,EAAA15D,UACAsxD,EAAA5R,SAAAnpD,GACAskE,EAAAE,iBAAAJ,EAAAlU,OAAAU,mBAAA5wD,EAAAukE,IAGAzlB,EAAAv5C,OAAAw1D,EAAAnS,aAAA,uEAGA2b,EAAA96D,UACA66D,EAAAE,iBAAAJ,EAAAlU,OAAAO,iBAAAzwD,EAAAmjE,IAGAmB,EAAAE,iBAAAJ,EAAAlU,OAAAY,mBAAA9wD,EAAAmjE,EAAAoB,KAGAxJ,EAAAnS,cAAAua,EAAA15D,UACAsxD,EAIAA,EAAA3R,qBAAAppD,EAAAmjE,GAAA/W,UAAAztD,KAAAmjE,MAMAuC,EAAA5qE,UAAAgrE,eAAA,SAAArU,EAAAsU,EAAAJ,GAuBA,MAtBA,OAAAA,IACAlU,EAAAxH,cACAwH,EAAA/F,aAAAvC,EAAAJ,eAAA,SAAA1nD,EAAAsqD,GACAoa,EAAAvb,SAAAnpD,IACAskE,EAAAE,iBAAAJ,EAAAlU,OAAAU,mBAAA5wD,EAAAsqD,MAIAoa,EAAA9b,cACA8b,EAAAra,aAAAvC,EAAAJ,eAAA,SAAA1nD,EAAAsqD,GACA,GAAA8F,EAAAjH,SAAAnpD,GAAA,CACA,GAAAukE,GAAAnU,EAAArH,kBAAA/oD,EACAukE,GAAApf,OAAAmF,IACAga,EAAAE,iBAAAJ,EAAAlU,OAAAY,mBAAA9wD,EAAAsqD,EAAAia,QAIAD,GAAAE,iBAAAJ,EAAAlU,OAAAO,iBAAAzwD,EAAAsqD,OAKAoa,EAAAtY,UAAAztD,KAAAmjE,KAKAuC,EAAA5qE,UAAAovD,eAAA,SAAAuH,EAAA3G,GACA,MAAA2G,GAAA3mD,UACA4nD,EAAAnJ,aAAAP,WAGAyI,EAAAvH,eAAAY,IAMA4a,EAAA5qE,UAAAkrE,aAAA,WACA,UAKAN,EAAA5qE,UAAAmrE,iBAAA,WACA,MAAAjmE,OAKA0lE,EAAA5qE,UAAAorE,SAAA,WACA,MAAAlmE,MAAAmjE,IAEAuC,IAEA5rE,GAAA4rE,iBrBu6JM,SAAU3rE,EAAQD,EAASH,GAEjC,YsB3hKAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAioE,GAAAxsE,EAAA,IACAy/D,EAAA,WACA,QAAAA,MAkBA,MAhBAA,GAAAC,cAAA,SAAAhJ,GACA,GAAA+V,GAAA/V,IAIA,OAHArwD,MAAAqmE,GAAAD,KACApmE,KAAAqmE,GAAAD,GAAA,GAAAD,GAAAG,iBAEAtmE,KAAAqmE,GAAAD,IAEAhN,EAAAY,oBAAA,SAAA3J,EAAAkW,GACA,GAAAH,GAAA/V,IAIA,OAHArwD,MAAAwmE,GAAAJ,KACApmE,KAAAwmE,GAAAJ,GAAAG,KAEAvmE,KAAAwmE,GAAAJ,IAEAhN,EAAAiN,MACAjN,EAAAoN,MACApN,IAEAt/D,GAAAs/D,gBtBmjKM,SAAUr/D,EAAQD,EAASH,GAEjC,YuB5kKAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAunE,EAAAvnE,EAAA,IACAymD,EAAAzmD,EAAA,GACA8sE,EAAA9sE,EAAA,IACAynE,EAAAznE,EAAA,EACAA,GAAA,IAEA,IACA+sE,GAIAC,EAAA,WACA,QAAAA,KAIA3mE,KAAA4mE,MAKA5mE,KAAA6mE,IAAA,EAyFA,MAvFAF,GAAAG,YAAA,WAIA,MAHAJ,KACAA,EAAA,GAAAC,IAEAD,GAGAC,EAAA7rE,UAAAwkE,UAAA,WACA,OAAAjyB,KAAArtC,MAAA4mE,GACA,OAAAG,KAAA/mE,MAAA4mE,GAAAv5B,GACArtC,KAAA4mE,GAAAv5B,GAAA05B,GAAAzH,aAIAqH,EAAA7rE,UAAAykE,OAAA,WACA,OAAAlyB,KAAArtC,MAAA4mE,GACA,OAAAG,KAAA/mE,MAAA4mE,GAAAv5B,GACArtC,KAAA4mE,GAAAv5B,GAAA05B,GAAAxH,UAUAoH,EAAA7rE,UAAAksE,gBAAA,SAAAxoE,EAAAilC,GACA,GAAAsjC,GAAAtjC,GAAAjlC,EAAAI,QAAA,gBACAhD,KAAAmrE,GACA3mB,EAAAqB,MAAA,sHAIA,IAAA2O,GAAAqW,EAAAQ,cAAAF,GACA1W,EAAAD,EAAAC,QAOA,OANA+Q,GAAAjR,YAAA,kCAAAC,GACAA,EAAAzS,KAAA7yC,WACAs1C,EAAAqB,MAAA,4FAGAzhD,KAAAknE,WAAA7W,EAAA7xD,GACAujE,UAOA4E,EAAA7rE,UAAAqsE,WAAA,SAAA5F,GACA,GAAA6F,GAAAjnB,EAAA51C,QAAAvK,KAAA4mE,GAAArF,EAAA/iE,IAAAtB,KAEAkqE,IAAAjnB,EAAA51C,QAAA68D,EAAA7F,EAAAjJ,EAAA+O,iBAAA9F,GACAnhB,EAAAqB,MAAA,YAAA8f,EAAA/iE,IAAAtB,KAAA,IAAAqkE,EAAAjJ,EAAA,+BAEAiJ,EAAAjC,kBACA8H,GAAA7F,EAAAjJ,EAAA+O,gBAUAV,EAAA7rE,UAAAosE,WAAA,SAAA7W,EAAA7xD,GACA,GAAA4oE,GAAAjnB,EAAA51C,QAAAvK,KAAA4mE,GAAApoE,EAAAtB,KACAkqE,KACAA,KACApnE,KAAA4mE,GAAApoE,EAAAtB,MAAAkqE,EAEA,IAAA7F,GAAAphB,EAAA51C,QAAA68D,EAAA/W,EAAAgX,cAMA,OALA9F,IACAnhB,EAAAqB,MAAA,2HAEA8f,EAAA,GAAAL,GAAA7I,KAAAhI,EAAArwD,KAAA6mE,GAAAroE,GACA4oE,EAAA/W,EAAAgX,eAAA9F,EACAA,GAMAoF,EAAA7rE,UAAAy9D,gBAAA,SAAAA,GACAv4D,KAAA6mE,GAAAtO,GAEAoO,IAEA7sE,GAAA6sE,evBmmKQ,CACA,CACA,CACA,CACA,CAEF,SAAU5sE,EAAQD,EAASH,GAEjC,YwB7tKAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACA8sE,EAAA9sE,EAAA,IACA80D,EAAA90D,EAAA,GACA2tE,EAAA3tE,EAAA,IACAunE,EAAAvnE,EAAA,IACA4tE,EAAA5tE,EAAA,IACAymD,EAAAzmD,EAAA,GACAynE,EAAAznE,EAAA,GAKA0mE,EAAA,WAKA,QAAAA,GAAAmH,GACAxnE,KAAAwnE,KACAA,YAAAtG,GAAA7I,MACAlY,EAAAsB,MAAA,wEAGAzhD,KAAAq3D,EAAA,GAAAiQ,GAAAhG,UAAAkG,EAAA/Y,EAAA7J,KAAA2Z,OACAv+D,KAAAa,SAAA,GAAA4mE,GAAAznE,MAqEA,MAnEAnF,QAAAwC,eAAAgjE,EAAAvlE,UAAA,OACA0C,IAAA,WACA,MAAAwC,MAAAwnE,GAAAhpE,KAEAjB,YAAA,EACAD,cAAA,IAOA+iE,EAAAvlE,UAAA6T,IAAA,SAAA22C,GAGA,MAFAtlD,MAAA0nE,GAAA,OACAtnB,EAAAtnC,iBAAA,mBAAA/Y,UAAArF,YACAkB,KAAA0pD,EAAAtlD,KAAAq3D,EAAA1R,MAAAL,GAAAtlD,KAAAq3D,GASAgJ,EAAAvlE,UAAA6sE,WAAA,SAAAlkC,GAEA,GAAAmkC,GAAA,qBACA5nE,MAAA0nE,GAAAE,GACAxnB,EAAAtnC,iBAAA8uD,EAAA,IAAA7nE,UAAArF,OACA,IAAAmtE,GAAApB,EAAAQ,cAAAxjC,EACA29B,GAAAjR,YAAAyX,EAAA,EAAAC,EACA,IAAAxX,GAAAwX,EAAAxX,QAUA,OATAA,GAAA9xC,OAAAve,KAAAwnE,GAAAlP,EAAA/5C,MACA4hC,EAAAsB,MAAAmmB,EACA,2DAEAvX,EAAA9xC,KACA,iBACAve,KAAAwnE,GAAAlP,EAAA/5C,KACA,KAEAve,KAAA2O,IAAAk5D,KAAAlqB,OAKA0iB,EAAAvlE,UAAA4sE,GAAA,SAAAE,GACA,OAAA5nE,KAAAwnE,IACArnB,EAAAsB,MAAA,eAAAmmB,EAAA,4BAIAvH,EAAAvlE,UAAAgtE,UAAA,WACA1nB,EAAAtnC,iBAAA,yBAAA/Y,UAAArF,QACAsF,KAAA0nE,GAAA,aACA1nE,KAAAwnE,GAAAlI,aAEAe,EAAAvlE,UAAAitE,SAAA,WACA3nB,EAAAtnC,iBAAA,wBAAA/Y,UAAArF,QACAsF,KAAA0nE,GAAA,YACA1nE,KAAAwnE,GAAAjI,UAEAc,EAAA2H,aACAC,WACAC,MAAA,cAGA7H,IAEAvmE,GAAAumE,UACA,IAAAoH,GAAA,WAEA,QAAAA,GAAA1F,GACA/hE,KAAA+hE,WAYA,MATA0F,GAAA3sE,UAAAuH,OAAA,WAOA,MANArC,MAAA+hE,SAAA2F,GAAA,UACAH,EAAAZ,YAAAG,cAAAK,WAAAnnE,KAAA+hE,SAAAyF,IACAxnE,KAAA+hE,SAAAyF,GAAA,KACAxnE,KAAA+hE,SAAA1K,EAAA,KACAr3D,KAAA+hE,SAAAlhE,SAAA,KACAb,KAAA+hE,SAAA,KACAjmE,QAAAC,WAEA0rE,IAEA3tE,GAAA2tE,qBxBqvKM,SAAU1tE,EAAQD,EAASH,GAEjC,YyBj2KA,SAAAwuE,GAAA7iB,GAGA,OAFA8iB,GAAA,GACA1iB,EAAAJ,EAAAvxC,MAAA,KACA/Z,EAAA,EAAmBA,EAAA0rD,EAAAhrD,OAAmBV,IACtC,GAAA0rD,EAAA1rD,GAAAU,OAAA,GACA,GAAA2tE,GAAA3iB,EAAA1rD,EACA,KACAquE,EAAAj9C,mBAAAi9C,EAAAh1D,QAAA,YAEA,MAAAlY,IACAitE,GAAA,IAAAC,EAGA,MAAAD,GArBAvtE,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuwD,GAAA90D,EAAA,GACA2uE,EAAA3uE,EAAA,IACAwmD,EAAAxmD,EAAA,EAyBAG,GAAAmtE,cAAA,SAAAsB,GACA,GAAAnY,GAAAt2D,EAAA0uE,SAAAD,GAAAzpE,EAAAsxD,EAAAqY,SACA,cAAArY,EAAAsY,QACAvoB,EAAAsB,MAAA2O,EAAA7xC,KACA,8EAIAzf,GAAA,aAAAA,GACAqhD,EAAAsB,MAAA,gFAEA2O,EAAAiL,QACAlb,EAAAuB,oBAEA,IAAAinB,GAAA,OAAAvY,EAAAwY,QAAA,QAAAxY,EAAAwY,MACA,QACAvY,SAAA,GAAAiY,GAAAO,SAAAzY,EAAA7xC,KAAA6xC,EAAAiL,OAAAv8D,EAAA6pE,GACAhrB,KAAA,GAAA8Q,GAAA7J,KAAAwL,EAAA9K,cAQAxrD,EAAA0uE,SAAA,SAAAD,GAEA,GAAAhqD,GAAA,GAAAmqD,EAAA,GAAAD,EAAA,GAAAnjB,EAAA,GAEA+V,GAAA,EAAAuN,EAAA,QAAAE,EAAA,GAEA,oBAAAP,GAAA,CAEA,GAAAQ,GAAAR,EAAA53D,QAAA,KACAo4D,IAAA,IACAH,EAAAL,EAAAp9C,UAAA,EAAA49C,EAAA,GACAR,IAAAp9C,UAAA49C,EAAA,GAGA,IAAAC,GAAAT,EAAA53D,QAAA,MACA,IAAAq4D,IACAA,EAAAT,EAAA7tE,QAEA6jB,EAAAgqD,EAAAp9C,UAAA,EAAA69C,GACA1jB,EAAA6iB,EAAAI,EAAAp9C,UAAA69C,GACA,IAAAl1D,GAAAyK,EAAAxK,MAAA,IACA,KAAAD,EAAApZ,QAEAguE,EAAA50D,EAAA,GACA20D,EAAA30D,EAAA,GAAA+Y,eAEA,IAAA/Y,EAAApZ,SACAguE,EAAA50D,EAAA,KAGAi1D,EAAAxqD,EAAA5N,QAAA,OACA,IACA0qD,EAAA,UAAAuN,GAAA,QAAAA,EACAE,EAAAzrD,SAAAkB,EAAA4M,UAAA49C,EAAA,QAGA,OACAxqD,OACAuqD,OACAJ,SACAD,YACApN,SACAuN,SACAtjB,gBzBm4KM,SAAUvrD,EAAQD,EAASH,GAEjC,Y0Br+KAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA8mD,EAAA9mD,EAAA,IACAsvE,EAAAtvE,EAAA,IAMAkvE,EAAA,WAQA,QAAAA,GAAAtqD,EAAA88C,EAAAv8D,EAAA6pE,EAAAO,OACA,KAAAA,IAAwCA,EAAA,IACxClpE,KAAAq7D,SACAr7D,KAAAlB,YACAkB,KAAA2oE,gBACA3oE,KAAAkpE,iBACAlpE,KAAAue,OAAAsO,cACA7sB,KAAA0oE,OAAA1oE,KAAAue,KAAAuF,OAAA9jB,KAAAue,KAAA5N,QAAA,QACA3Q,KAAAmpE,aAAA1oB,EAAAwT,kBAAAz2D,IAAA,QAAA+gB,IAAAve,KAAAue,KAgEA,MA9DAsqD,GAAA/tE,UAAAsuE,gBAAA,WACA,MAAAppE,MAAAue,OAAAve,KAAAmpE,cAEAN,EAAA/tE,UAAAuuE,gBAAA,WACA,aAAArpE,KAAAmpE,aAAArlD,OAAA,MAEA+kD,EAAA/tE,UAAAwuE,WAAA,WACA,8BAAAtpE,KAAA0oE,QAEAG,EAAA/tE,UAAAyuE,aAAA,WACA,yBAAAvpE,KAAA0oE,QAAA,wBAAA1oE,KAAA0oE,QAEAG,EAAA/tE,UAAA0uE,WAAA,SAAAC,GACAA,IAAAzpE,KAAAmpE,eACAnpE,KAAAmpE,aAAAM,EACAzpE,KAAAqpE,mBACA5oB,EAAAwT,kBAAAl1C,IAAA,QAAA/e,KAAAue,KAAAve,KAAAmpE,gBAUAN,EAAA/tE,UAAA4uE,cAAA,SAAAptE,EAAAsY,GACAurC,EAAAv5C,OAAA,gBAAAtK,GAAA,8BACA6jD,EAAAv5C,OAAA,gBAAAgO,GAAA,+BACA,IAAA+0D,EACA,IAAArtE,IAAA2sE,EAAAxU,UACAkV,GACA3pE,KAAAq7D,OAAA,kBAAAr7D,KAAAmpE,aAAA,YAEA,IAAA7sE,IAAA2sE,EAAAvU,aAKA,KAAA/4D,OAAA,4BAAAW,EAJAqtE,IACA3pE,KAAAq7D,OAAA,sBAAAr7D,KAAAmpE,aAAA,QAKAnpE,KAAAopE,oBACAx0D,EAAA,GAAA5U,KAAAlB,UAEA,IAAA8qE,KAIA,OAHAxpB,GAAA3gD,QAAAmV,EAAA,SAAAvT,EAAAnD,GACA0rE,EAAAhvE,KAAAyG,EAAA,IAAAnD,KAEAyrE,EAAAC,EAAAzgE,KAAA,MAGA0/D,EAAA/tE,UAAAiV,SAAA,WACA,GAAA9I,GAAAjH,KAAAqnE,aAIA,OAHArnE,MAAAkpE,iBACAjiE,GAAA,IAAAjH,KAAAkpE,eAAA,KAEAjiE,GAGA4hE,EAAA/tE,UAAAusE,YAAA,WACA,OAAArnE,KAAAq7D,OAAA,sBAAAr7D,KAAAue,MAEAsqD,IAEA/uE,GAAA+uE,Y1B6/KM,SAAU9uE,EAAQD,EAASH,GAEjC,Y2B3lLAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAynE,EAAAznE,EAAA,GACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,GAIAkpE,EAAA,WAKA,QAAAA,GAAA2E,EAAApY,GACApvD,KAAAwnE,KACAxnE,KAAAovD,KA8EA,MAxEAyT,GAAA/nE,UAAAyrC,OAAA,SAAAm0B,GACAva,EAAArnC,iBAAA,0BAAA/Y,UAAArF,QACAylD,EAAAxnC,iBAAA,wBAAA+hD,GAAA,EACA,IAAAhuD,GAAA,GAAA2zC,GAAAnuC,QAEA,OADAlS,MAAAwnE,GAAAhJ,mBAAAx+D,KAAAovD,GAAA1iD,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAMA6mE,EAAA/nE,UAAAwmD,OAAA,SAAAoZ,GACAva,EAAArnC,iBAAA,0BAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,sBAAAlwD,KAAAovD,IACAjP,EAAAxnC,iBAAA,wBAAA+hD,GAAA,EACA,IAAAhuD,GAAA,GAAA2zC,GAAAnuC,QAEA,OADAlS,MAAAwnE,GAAA9I,gBAAA1+D,KAAAovD,GAAA,KAAA1iD,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAOA6mE,EAAA/nE,UAAAikB,IAAA,SAAA7gB,EAAAw8D,GACAva,EAAArnC,iBAAA,uBAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,mBAAAlwD,KAAAovD,IACAgS,EAAAlS,wBAAA,qBAAAhxD,EAAA8B,KAAAovD,IAAA,GACAjP,EAAAxnC,iBAAA,qBAAA+hD,GAAA,EACA,IAAAhuD,GAAA,GAAA2zC,GAAAnuC,QAEA,OADAlS,MAAAwnE,GAAA9I,gBAAA1+D,KAAAovD,GAAAlxD,EAAAwO,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAQA6mE,EAAA/nE,UAAA+hE,gBAAA,SAAA3+D,EAAA+wD,EAAAyL,GACAva,EAAArnC,iBAAA,mCAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,+BAAAlwD,KAAAovD,IACAgS,EAAAlS,wBAAA,iCAAAhxD,EAAA8B,KAAAovD,IAAA,GACAgS,EAAAxR,iBAAA,iCAAAX,GAAA,GACA9O,EAAAxnC,iBAAA,iCAAA+hD,GAAA,EACA,IAAAhuD,GAAA,GAAA2zC,GAAAnuC,QAEA,OADAlS,MAAAwnE,GAAA3I,4BAAA7+D,KAAAovD,GAAAlxD,EAAA+wD,EAAAviD,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAOA6mE,EAAA/nE,UAAAwb,OAAA,SAAA0rD,EAAAtH,GAGA,GAFAva,EAAArnC,iBAAA,0BAAA/Y,UAAArF,QACA0mE,EAAAlR,qBAAA,sBAAAlwD,KAAAovD,IACA/pD,MAAAgD,QAAA25D,GAAA,CAEA,OADAC,MACAjoE,EAAA,EAA2BA,EAAAgoE,EAAAtnE,SAA0BV,EACrDioE,EAAA,GAAAjoE,GAAAgoE,EAAAhoE,EAEAgoE,GAAAC,EACA7hB,EAAAryC,KAAA,gOAGAqzD,EAAAzR,6BAAA,wBAAAqS,EAAAhiE,KAAAovD,IAAA,GACAjP,EAAAxnC,iBAAA,wBAAA+hD,GAAA,EACA,IAAAhuD,GAAA,GAAA2zC,GAAAnuC,QAEA,OADAlS,MAAAwnE,GAAA1I,mBAAA9+D,KAAAovD,GAAA4S,EAAAt1D,EAAAyF,aAAAuoD,IACAhuD,EAAA1Q,SAEA6mE,IAEA/oE,GAAA+oE,gB3BmnLM,SAAU9oE,EAAQD,EAASH,GAEjC,Y4BptLAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAWA6kE,GAXA5iB,EAAAxmD,EAAA,GACAyvD,EAAAzvD,EAAA,IACAwvD,EAAAxvD,EAAA,GACAkwE,EAAAlwE,EAAA,IACAmwE,EAAAnwE,EAAA,IACAymD,EAAAzmD,EAAA,GACA80D,EAAA90D,EAAA,GACAynE,EAAAznE,EAAA,GACA0mD,EAAA1mD,EAAA,GACAowE,EAAApwE,EAAA,IACA2mD,EAAA3mD,EAAA,GAQAmpE,EAAA,WACA,QAAAA,GAAAvB,EAAA5jB,EAAAqsB,EAAAC,GACAjqE,KAAAuhE,OACAvhE,KAAA29C,OACA39C,KAAAgqE,KACAhqE,KAAAiqE,KA6cA,MA3cApvE,QAAAwC,eAAAylE,EAAA,0BACAtlE,IAAA,WAEA,MADA2iD,GAAAv5C,OAAAm8D,EAAA,oCACAA,GAEAhkD,IAAA,SAAArR,GACAq1D,EAAAr1D,GAEAnQ,YAAA,EACAD,cAAA,IAOAwlE,EAAAoH,GAAA,SAAAt1D,GACA,GAAAu1D,GAAA,KACAC,EAAA,IAOA,IANAx1D,EAAAy1D,aACAF,EAAAv1D,EAAA01D,sBAEA11D,EAAA21D,WACAH,EAAAx1D,EAAA41D,oBAEA51D,EAAAsxD,aAAA9c,EAAAsE,UAAA,CACA,GAAA+c,GAAA,mGAEAC,EAAA,uGAEA,IAAA91D,EAAAy1D,WAAA,CAEA,GADAz1D,EAAA+1D,qBACAvqB,EAAA+B,SACA,KAAAxmD,OAAA8uE,EAEA,oBAAAN,GACA,KAAAxuE,OAAA+uE,GAGA,GAAA91D,EAAA21D,SAAA,CAEA,GADA31D,EAAAg2D,mBACAxqB,EAAAgC,SACA,KAAAzmD,OAAA8uE,EAEA,oBAAAL,GACA,KAAAzuE,OAAA+uE,QAIA,IAAA91D,EAAAsxD,aAAA/c,EAAAJ,gBACA,SAAAohB,IAAA/I,EAAApS,gBAAAmb,IACA,MAAAC,IAAAhJ,EAAApS,gBAAAob,GACA,KAAAzuE,OAAA,qKAOA,IAFAwkD,EAAAv5C,OAAAgO,EAAAsxD,oBAAA4D,GAAAe,WACAj2D,EAAAsxD,aAAA2D,EAAAiB,YAAA,uBACA,MAAAX,GAAA,gBAAAA,IACA,MAAAC,GAAA,gBAAAA,GACA,KAAAzuE,OAAA,0FAUAmnE,EAAAiI,GAAA,SAAAn2D,GACA,GAAAA,EAAAy1D,YACAz1D,EAAA21D,UACA31D,EAAAo2D,aACAp2D,EAAAq2D,mBACA,KAAAtvE,OAAA,uGAQAmnE,EAAAhoE,UAAAowE,GAAA,SAAA5yD,GACA,QAAAtY,KAAAiqE,GACA,KAAAtuE,OAAA2c,EAAA,gDAMAwqD,EAAAhoE,UAAAqwE,eAAA,WACA,MAAAnrE,MAAAgqE,IAKAlH,EAAAhoE,UAAA4oE,OAAA,WAKA,MAJArjB,GAAAvnC,iBAAA,gBAAA/Y,UAAArF,QAIA,GAAAooE,GAAAC,uBAAA/iE,KAAAuhE,KAAAvhE,KAAA29C,OASAmlB,EAAAhoE,UAAA8K,GAAA,SAAAkqD,EAAA9tD,EAAAopE,EAAAvyD,GACAwnC,EAAAvnC,iBAAA,eAAA/Y,UAAArF,QACA0mE,EAAAvR,kBAAA,aAAAC,GAAA,GACAzP,EAAA1nC,iBAAA,aAAA3W,GAAA,EACA,IAAA+K,GAAA+1D,EAAAuI,GAAA,WAAAD,EAAAvyD,EACA,cAAAi3C,EACA9vD,KAAAsrE,aAAAtpE,EAAA+K,EAAAw5B,OAAAx5B,EAAA8L,aAEA,CACA,GAAA0yD,KACAA,GAAAzb,GAAA9tD,EACAhC,KAAAwrE,aAAAD,EAAAx+D,EAAAw5B,OAAAx5B,EAAA8L,SAEA,MAAA7W,IAQA8gE,EAAAhoE,UAAAwwE,aAAA,SAAAtpE,EAAAypE,EAAA5yD,GACA,GAAA6yD,GAAA,GAAA3B,GAAA4B,uBAAA3pE,EAAAypE,GAAA,KAAA5yD,GAAA,KACA7Y,MAAAuhE,KAAAvC,yBAAAh/D,KAAA0rE,IAQA5I,EAAAhoE,UAAA0wE,aAAA,SAAAD,EAAAE,EAAA5yD,GACA,GAAA6yD,GAAA,GAAA3B,GAAA6B,uBAAAL,EAAAE,EAAA5yD,EACA7Y,MAAAuhE,KAAAvC,yBAAAh/D,KAAA0rE,IAOA5I,EAAAhoE,UAAAiL,IAAA,SAAA+pD,EAAA9tD,EAAA6W,GACAwnC,EAAAvnC,iBAAA,gBAAA/Y,UAAArF,QACA0mE,EAAAvR,kBAAA,cAAAC,GAAA,GACAzP,EAAA1nC,iBAAA,cAAA3W,GAAA,GACAq+C,EAAAznC,sBAAA,cAAAC,GAAA,EACA,IAAA6yD,GAAA,KACAH,EAAA,IACA,cAAAzb,EAAA,CACA,GAAA+b,GAAA7pE,GAAA,IACA0pE,GAAA,GAAA3B,GAAA4B,uBAAAE,EAAA,KAAAhzD,GAAA,UAEAi3C,KACA9tD,IACAupE,KACAA,EAAAzb,GAAA9tD,GAEA0pE,EAAA,GAAA3B,GAAA6B,uBAAAL,EAAA,KAAA1yD,GAAA,MAEA7Y,MAAAuhE,KAAAnC,4BAAAp/D,KAAA0rE,IAUA5I,EAAAhoE,UAAAgL,KAAA,SAAAgqD,EAAAgc,EAAAC,EAAAlzD,GACA,GAAAvW,GAAAtC,IACAqgD,GAAAvnC,iBAAA,iBAAA/Y,UAAArF,QACA0mE,EAAAvR,kBAAA,eAAAC,GAAA,GACAzP,EAAA1nC,iBAAA,eAAAmzD,GAAA,EACA,IAAA/+D,GAAA+1D,EAAAuI,GAAA,aAAAU,EAAAlzD,GAKAmzD,GAAA,EACAt/D,EAAA,GAAA4zC,GAAApuC,QAEAxF,GAAA1Q,QAAAoW,MAAA,aACA,IAAA65D,GAAA,SAAAra,GAGAoa,IACAA,GAAA,EACA1pE,EAAAyD,IAAA+pD,EAAAmc,GACAH,GACAA,EAAA5rE,KAAA6M,EAAA8L,SAAA+4C,GAEAllD,EAAA3Q,QAAA61D,IAUA,OAPA5xD,MAAA4F,GAAAkqD,EAAAmc,EACA,SAAAnuE,GACAwE,EAAAyD,IAAA+pD,EAAAmc,GACAl/D,EAAAw5B,QACAx5B,EAAAw5B,OAAArmC,KAAA6M,EAAA8L,SAAA/a,GACA4O,EAAAzQ,OAAA6B,KAEA4O,EAAA1Q,SAOA8mE,EAAAhoE,UAAAoxE,aAAA,SAAAC,GAEA,GADA9rB,EAAAvnC,iBAAA,yBAAA/Y,UAAArF,QACA,gBAAAyxE,IACA77D,KAAA8D,MAAA+3D,QACAA,GAAA,EACA,KAAAxwE,OAAA,iEAEA,IAAAqE,KAAAgqE,GAAAgB,WACA,KAAArvE,OAAA,sGAGA,WAAAmnE,GAAA9iE,KAAAuhE,KAAAvhE,KAAA29C,KAAA39C,KAAAgqE,GAAAkC,aAAAC,GAAAnsE,KAAAiqE,KAOAnH,EAAAhoE,UAAAsxE,YAAA,SAAAD,GAEA,GADA9rB,EAAAvnC,iBAAA,wBAAA/Y,UAAArF,QACA,gBAAAyxE,IACA77D,KAAA8D,MAAA+3D,QACAA,GAAA,EACA,KAAAxwE,OAAA,gEAEA,IAAAqE,KAAAgqE,GAAAgB,WACA,KAAArvE,OAAA,qGAGA,WAAAmnE,GAAA9iE,KAAAuhE,KAAAvhE,KAAA29C,KAAA39C,KAAAgqE,GAAAoC,YAAAD,GAAAnsE,KAAAiqE,KAOAnH,EAAAhoE,UAAAuxE,aAAA,SAAA1uB,GAEA,GADA0C,EAAAvnC,iBAAA,yBAAA/Y,UAAArF,QACA,SAAAijD,EACA,KAAAhiD,OAAA,0EAEA,kBAAAgiD,EACA,KAAAhiD,OAAA,oFAEA,eAAAgiD,EACA,KAAAhiD,OAAA,8EAEAylE,GAAApR,mBAAA,uBAAArS,GAAA,GACA39C,KAAAkrE,GAAA,qBACA,IAAAoB,GAAA,GAAA7d,GAAA7J,KAAAjH,EACA,IAAA2uB,EAAAxhE,UACA,KAAAnP,OAAA,oFAEA,IAAAswD,GAAA,GAAA6d,GAAAe,UAAAyB,GACAC,EAAAvsE,KAAAgqE,GAAAwC,QAAAvgB,EAEA,OADA6W,GAAAoH,GAAAqC,GACA,GAAAzJ,GAAA9iE,KAAAuhE,KAAAvhE,KAAA29C,KAAA4uB,GAAA,IAMAzJ,EAAAhoE,UAAA2xE,WAAA,WACApsB,EAAAvnC,iBAAA,uBAAA/Y,UAAArF,QACAsF,KAAAkrE,GAAA,mBACA,IAAAqB,GAAAvsE,KAAAgqE,GAAAwC,QAAApjB,EAAAsE,UAEA,OADAoV,GAAAoH,GAAAqC,GACA,GAAAzJ,GAAA9iE,KAAAuhE,KAAAvhE,KAAA29C,KAAA4uB,GAAA,IAMAzJ,EAAAhoE,UAAA4xE,gBAAA,WACArsB,EAAAvnC,iBAAA,4BAAA/Y,UAAArF,QACAsF,KAAAkrE,GAAA,wBACA,IAAAqB,GAAAvsE,KAAAgqE,GAAAwC,QAAArjB,EAAAJ,eAEA,OADA+Z,GAAAoH,GAAAqC,GACA,GAAAzJ,GAAA9iE,KAAAuhE,KAAAvhE,KAAA29C,KAAA4uB,GAAA,IAMAzJ,EAAAhoE,UAAA6xE,aAAA,WACAtsB,EAAAvnC,iBAAA,yBAAA/Y,UAAArF,QACAsF,KAAAkrE,GAAA,qBACA,IAAAqB,GAAAvsE,KAAAgqE,GAAAwC,QAAA3C,EAAAiB,YAEA,OADAhI,GAAAoH,GAAAqC,GACA,GAAAzJ,GAAA9iE,KAAAuhE,KAAAvhE,KAAA29C,KAAA4uB,GAAA,IAOAzJ,EAAAhoE,UAAA8xE,QAAA,SAAA1uE,EAAAhB,OACA,KAAAgB,IAA+BA,EAAA,MAC/BmiD,EAAAvnC,iBAAA,oBAAA/Y,UAAArF,QACA0mE,EAAAlS,wBAAA,kBAAAhxD,EAAA8B,KAAA29C,MAAA,GACAyjB,EAAArR,YAAA,kBAAA7yD,GAAA,EACA,IAAAqvE,GAAAvsE,KAAAgqE,GAAA4C,QAAA1uE,EAAAhB,EAGA,IAFA4lE,EAAAiI,GAAAwB,GACAzJ,EAAAoH,GAAAqC,GACAvsE,KAAAgqE,GAAAK,WACA,KAAA1uE,OAAA,yFAQA,YAJAC,KAAAsC,IACAA,EAAA,KACAhB,EAAA,MAEA,GAAA4lE,GAAA9iE,KAAAuhE,KAAAvhE,KAAA29C,KAAA4uB,EAAAvsE,KAAAiqE,KAOAnH,EAAAhoE,UAAA+xE,MAAA,SAAA3uE,EAAAhB,OACA,KAAAgB,IAA+BA,EAAA,MAC/BmiD,EAAAvnC,iBAAA,kBAAA/Y,UAAArF,QACA0mE,EAAAlS,wBAAA,gBAAAhxD,EAAA8B,KAAA29C,MAAA,GACAyjB,EAAArR,YAAA,gBAAA7yD,GAAA,EACA,IAAAqvE,GAAAvsE,KAAAgqE,GAAA6C,MAAA3uE,EAAAhB,EAGA,IAFA4lE,EAAAiI,GAAAwB,GACAzJ,EAAAoH,GAAAqC,GACAvsE,KAAAgqE,GAAAO,SACA,KAAA5uE,OAAA,mFAGA,WAAAmnE,GAAA9iE,KAAAuhE,KAAAvhE,KAAA29C,KAAA4uB,EAAAvsE,KAAAiqE,KASAnH,EAAAhoE,UAAAgyE,QAAA,SAAA5uE,EAAAhB,GAIA,GAHAmjD,EAAAvnC,iBAAA,oBAAA/Y,UAAArF,QACA0mE,EAAAlS,wBAAA,kBAAAhxD,EAAA8B,KAAA29C,MAAA,GACAyjB,EAAArR,YAAA,kBAAA7yD,GAAA,GACA8C,KAAAgqE,GAAAK,WACA,KAAA1uE,OAAA,yFAGA,IAAAqE,KAAAgqE,GAAAO,SACA,KAAA5uE,OAAA,qFAGA,OAAAqE,MAAA4sE,QAAA1uE,EAAAhB,GAAA2vE,MAAA3uE,EAAAhB,IAKA4lE,EAAAhoE,UAAAiV,SAAA,WAEA,MADAswC,GAAAvnC,iBAAA,qBAAA/Y,UAAArF,QACAsF,QAAAuhE,KAAAvhE,KAAA29C,KAAA4H,sBAIAud,EAAAhoE,UAAAy9C,OAAA,WAGA,MADA8H,GAAAvnC,iBAAA,mBAAA/Y,UAAArF,QACAsF,SAMA8iE,EAAAhoE,UAAAiyE,YAAA,WACA,MAAA/sE,MAAAgqE,GAAAgD,kBAKAlK,EAAAhoE,UAAAmyE,gBAAA,WACA,GAAA7rE,GAAApB,KAAA+sE,cACA5+D,EAAAiyC,EAAAuC,kBAAAvhD,EACA,cAAA+M,EAAyB,UAAAA,GAOzB20D,EAAAhoE,UAAAoyE,QAAA,SAAAzmB,GAEA,GADApG,EAAAvnC,iBAAA,oBAAA/Y,UAAArF,UACA+rD,YAAAqc,IAEA,KAAAnnE,OADA,uFAGA,IAAAwxE,GAAAntE,KAAAuhE,OAAA9a,EAAA8a,KACA6L,EAAAptE,KAAA29C,KAAA6I,OAAAC,EAAA9I,MACA0vB,EAAArtE,KAAAitE,oBAAAxmB,EAAAwmB,iBACA,OAAAE,IAAAC,GAAAC,GAUAvK,EAAAuI,GAAA,SAAA/yD,EAAAyzD,EAAAlzD,GACA,GAAA9L,IAAmBw5B,OAAA,KAAA1tB,QAAA,KACnB,IAAAkzD,GAAAlzD,EACA9L,EAAAw5B,OAAAwlC,EACA1rB,EAAA1nC,iBAAAL,EAAA,EAAAvL,EAAAw5B,QAAA,GACAx5B,EAAA8L,UACAwnC,EAAAznC,sBAAAN,EAAA,EAAAvL,EAAA8L,SAAA,OAEA,IAAAkzD,EAEA,mBAAAA,IAAA,OAAAA,EAEAh/D,EAAA8L,QAAAkzD,MAEA,sBAAAA,GAIA,KAAApwE,OAAA0kD,EAAAhoC,YAAAC,EAAA,MACA,yDAJAvL,GAAAw5B,OAAAwlC,EAOA,MAAAh/D,IAEAlS,OAAAwC,eAAAylE,EAAAhoE,UAAA,OACA0C,IAAA,WACA,MAAAwC,MAAA0jE,UAEAnmE,YAAA,EACAD,cAAA,IAEAwlE,IAEAhpE,GAAAgpE,S5B4uLM,SAAU/oE,EAAQD,EAASH,GAEjC,Y6BhtMA,SAAA2tD,GAAA55C,GACA65C,EAAA75C,EANA7S,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAGAqpD,GAHApH,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,EAKAG,GAAAwtD,aAKAxtD,EAAAgyD,iBAAA,SAAAmD,GACA,sBAAAA,GACA,UAAA7O,EAAA6C,sBAAAgM,GAEA,UAAAA,GAOAn1D,EAAA8vD,qBAAA,SAAAf,GACA,GAAAA,EAAAoB,aAAA,CACA,GAAAv8C,GAAAm7C,EAAAn7C,KACAyyC,GAAAv5C,OAAA,gBAAA8G,IACA,gBAAAA,IACA,gBAAAA,IAAA2yC,EAAA3hD,SAAAgP,EAAA,mDAGAyyC,GAAAv5C,OAAAiiD,IAAAtB,GAAAsB,EAAA/9C,UAAA,+BAGAq1C,GAAAv5C,OAAAiiD,IAAAtB,GAAAsB,EAAAf,cAAAh9C,UAAA,wD7B8uMM,SAAU/Q,EAAQD,EAASH,GAEjC,Y8BnxMA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAspD,GAAA7tD,EAAA,IACA8tD,EAAA9tD,EAAA,GACAwmD,EAAAxmD,EAAA,GACA89D,EAAA99D,EAAA,IAMA2zE,EAAA,SAAA/3D,GAEA,QAAA+3D,KACA,cAAA/3D,KAAApV,MAAAH,KAAAD,YAAAC,KAqDA,MAvDAgV,GAAAs4D,EAAA/3D,GAOA+3D,EAAAxyE,UAAA8sD,QAAA,SAAAvxC,EAAA1O,GACA,GAAAqgD,GAAA3xC,EAAAylB,KAAAmsB,UAAAtgD,EAAAm0B,KACA,YAAAksB,EACA7H,EAAAkC,YAAAhsC,EAAAnZ,KAAAyK,EAAAzK,MAGA8qD,GAMAslB,EAAAxyE,UAAAotD,YAAA,SAAApsB,GACA,UAKAwxC,EAAAxyE,UAAAqtD,oBAAA,SAAAC,EAAAC,GACA,OAAAD,EAAA5B,OAAA6B,IAKAilB,EAAAxyE,UAAAwtD,QAAA,WACA,MAAAb,GAAAc,UAAAC,KAKA8kB,EAAAxyE,UAAA2tD,QAAA,WACA,MAAAhB,GAAAc,UAAA8F,KAOAif,EAAAxyE,UAAA6tD,SAAA,SAAAC,EAAA1rD,GACA,GAAAqwE,GAAA9V,EAAApQ,aAAAuB,EACA,WAAAnB,GAAAc,UAAArrD,EAAAqwE,IAKAD,EAAAxyE,UAAAiV,SAAA,WACA,gBAEAu9D,GACC9lB,EAAAsB,MACDhvD,GAAAwzE,aACAxzE,EAAAgxE,YAAA,GAAAwC,I9B2yMM,SAAUvzE,EAAQD,EAASH,GAEjC,Y+B53MAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAMAsvE,GANArtB,EAAAxmD,EAAA,GACAy5D,EAAAz5D,EAAA,IACAymD,EAAAzmD,EAAA,GACA8tD,EAAA9tD,EAAA,GACAwvD,EAAAxvD,EAAA,GACAyvD,EAAAzvD,EAAA,IAEA8zE,KAOA1jB,EAAA,WACA,QAAAA,GAAA2jB,EAAAC,GACA3tE,KAAA0tE,KACA1tE,KAAA2tE,KA8IA,MA5IA9yE,QAAAwC,eAAA0sD,EAAA,WAMAvsD,IAAA,WAKA,MAJA2iD,GAAAv5C,OAAA6mE,GAAAtkB,EAAAJ,eAAA,uCACAykB,EACAA,GACA,GAAAzjB,IAAkC0J,YAAAga,IAAiCha,YAAAtK,EAAAJ,kBAGnExrD,YAAA,EACAD,cAAA,IAOAysD,EAAAjvD,UAAA0C,IAAA,SAAAowE,GACA,GAAAC,GAAAztB,EAAA71C,QAAAvK,KAAA0tE,GAAAE,EACA,KAAAC,EACA,KAAAlyE,OAAA,wBAAAiyE,EACA,OAAAC,KAAAJ,EAGA,KAGAI,GAOA9jB,EAAAjvD,UAAA6yD,SAAA,SAAApB,GACA,MAAAnM,GAAA1hD,SAAAsB,KAAA2tE,GAAAphB,OAOAxC,EAAAjvD,UAAA8yD,SAAA,SAAArB,EAAAuhB,GACA3tB,EAAAv5C,OAAA2lD,IAAAnD,EAAAsE,UAAA,sEAKA,KAJA,GAAAqgB,MACAC,GAAA,EACAC,EAAAH,EAAA/gB,YAAAtF,EAAAc,UAAA4E,MACAv1C,EAAAq2D,EAAA5gB,UACAz1C,GACAo2D,EACAA,GAAAzhB,EAAArE,YAAAtwC,EAAAkkB,MACAiyC,EAAAnzE,KAAAgd,GACAA,EAAAq2D,EAAA5gB,SAEA,IAAA6gB,EAEAA,GADAF,EACA5a,EAAAC,cAAA0a,EAAAxhB,EAAAiH,cAGAia,CAEA,IAAAU,GAAA5hB,KACA6hB,EAAAhuB,EAAAx1C,MAAA5K,KAAA2tE,GACAS,GAAAD,GAAA5hB,CACA,IAAA8hB,GAAAjuB,EAAAx1C,MAAA5K,KAAA0tE,GAEA,OADAW,GAAAF,GAAAD,EACA,GAAAnkB,GAAAskB,EAAAD,IAQArkB,EAAAjvD,UAAAmwD,aAAA,SAAAN,EAAAmjB,GACA,GAAAxrE,GAAAtC,IAkCA,WAAA+pD,GAjCA3J,EAAAnhD,IAAAe,KAAA0tE,GAAA,SAAAY,EAAAH,GACA,GAAAliB,GAAA7L,EAAA71C,QAAAjI,EAAAqrE,GAAAQ,EAEA,IADAhuB,EAAAv5C,OAAAqlD,EAAA,oCAAAkiB,GACAG,IAAAb,EAAA,CAEA,GAAAxhB,EAAA/D,YAAAyC,EAAA7uB,MAAA,CAKA,IAHA,GAAAiyC,MACAE,EAAAH,EAAA/gB,YAAAtF,EAAAc,UAAA4E,MACAv1C,EAAAq2D,EAAA5gB,UACAz1C,GACAA,EAAA1a,MAAAytD,EAAAztD,MACA6wE,EAAAnzE,KAAAgd,GAEAA,EAAAq2D,EAAA5gB,SAGA,OADA0gB,GAAAnzE,KAAA+vD,GACAyI,EAAAC,cAAA0a,EAAA9hB,EAAAuH,cAIA,MAAAia,GAIA,GAAAc,GAAAT,EAAAtwE,IAAAmtD,EAAAztD,MACA0tD,EAAA0jB,CAIA,OAHAC,KACA3jB,IAAAtJ,OAAA,GAAAmG,GAAAc,UAAAoC,EAAAztD,KAAAqxE,KAEA3jB,EAAAI,OAAAL,IAAA7uB,QAGA97B,KAAA2tE,KAQA5jB,EAAAjvD,UAAAiwD,kBAAA,SAAAJ,EAAAmjB,GAiBA,UAAA/jB,GAhBA3J,EAAAnhD,IAAAe,KAAA0tE,GAAA,SAAAY,GACA,GAAAA,IAAAb,EAEA,MAAAa,EAGA,IAAAC,GAAAT,EAAAtwE,IAAAmtD,EAAAztD,KACA,OAAAqxE,GACAD,EAAAhtB,OAAA,GAAAmG,GAAAc,UAAAoC,EAAAztD,KAAAqxE,IAIAD,IAIAtuE,KAAA2tE,KAEA5jB,IAEAjwD,GAAAiwD,Y/Bo5MM,SAAUhwD,EAAQD,EAASH,GAEjC,YgCxjNAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA+qD,GAAAtvD,EAAA,IACA60E,EAAA70E,EAAA,IACA80E,EAAAn+D,KAAAtN,IAAA,GAIA0rE,EAAA,WAIA,QAAAA,GAAAh0E,GAKAsF,KAAAqrD,MAJA,SAAAsjB,GACA,MAAAtxD,UAAA/M,KAAAtN,IAAA2rE,GAAAF,EAAA,KAGA/zE,EAAA,GACAsF,KAAA4uE,GAAA5uE,KAAAqrD,MAAA,CACA,IAAAwjB,GAHA,SAAA1rB,GAAuC,MAAA9lC,UAAAhY,MAAA89C,EAAA,GAAAh6C,KAAA,SAGvCnJ,KAAAqrD,MACArrD,MAAA8uE,GAAAp0E,EAAA,EAAAm0E,EAWA,MANAH,GAAA5zE,UAAAi0E,aAAA,WAEA,GAAAv0E,KAAAwF,KAAA8uE,GAAA,GAAA9uE,KAAA4uE,GAEA,OADA5uE,MAAA4uE,KACAp0E,GAEAk0E,IAiBA50E,GAAAu5D,cAAA,SAAA0a,EAAAxnB,EAAAyoB,EAAAC,GACAlB,EAAA/6C,KAAAuzB,EACA,IAAA2oB,GAAA,SAAAC,EAAA91D,GACA,GACAsxC,GACAtpD,EAFA3G,EAAA2e,EAAA81D,CAGA,OAAAz0E,EACA,WAEA,OAAAA,EAGA,MAFAiwD,GAAAojB,EAAAoB,GACA9tE,EAAA2tE,IAAArkB,KACA,GAAA1B,GAAA8M,SAAA10D,EAAAspD,EAAA7uB,KAAAmtB,EAAA8M,SAAAmB,MAAA,UAGA,IAAAkY,GAAA/xD,SAAA3iB,EAAA,MAAAy0E,EACA59C,EAAA29C,EAAAC,EAAAC,GACAhpB,EAAA8oB,EAAAE,EAAA,EAAA/1D,EAGA,OAFAsxC,GAAAojB,EAAAqB,GACA/tE,EAAA2tE,IAAArkB,KACA,GAAA1B,GAAA8M,SAAA10D,EAAAspD,EAAA7uB,KAAAmtB,EAAA8M,SAAAmB,MAAA3lC,EAAA60B,IAyCAipB,EAAA,GAAAX,GAAAX,EAAArzE,QACAuR,EAvCA,SAAAojE,GAuBA,OAtBAvzC,GAAA,KACA7vB,EAAA,KACAggD,EAAA8hB,EAAArzE,OACA40E,EAAA,SAAAC,EAAAvZ,GACA,GAAAmZ,GAAAljB,EAAAsjB,EACAl2D,EAAA4yC,CACAA,IAAAsjB,CACA,IAAAjL,GAAA4K,EAAAC,EAAA,EAAA91D,GACAsxC,EAAAojB,EAAAoB,GACA9tE,EAAA2tE,IAAArkB,IACA6kB,GAAA,GAAAvmB,GAAA8M,SAAA10D,EAAAspD,EAAA7uB,KAAAk6B,EAAA,KAAAsO,KAEAkL,EAAA,SAAAC,GACA3zC,GACAA,EAAAvK,KAAAk+C,EACA3zC,EAAA2zC,IAGAxjE,EAAAwjE,EACA3zC,EAAA2zC,IAGAz1E,EAAA,EAAuBA,EAAAq1E,EAAAhkB,QAAkBrxD,EAAA,CACzC,GAAA01E,GAAAL,EAAAN,eAEAQ,EAAAj/D,KAAA+yC,IAAA,EAAAgsB,EAAAhkB,OAAArxD,EAAA,GACA01E,GACAJ,EAAAC,EAAAtmB,EAAA8M,SAAAmB,QAIAoY,EAAAC,EAAAtmB,EAAA8M,SAAAmB,OACAoY,EAAAC,EAAAtmB,EAAA8M,SAAAE,MAGA,MAAAhqD,IAGAojE,EACA,WAAAb,GAAA3kB,UAAAolB,GAAA1oB,EAAAt6C,KhCilNM,SAAUlS,EAAQD,EAASH,GAEjC,YiC/rNA,SAAA25D,GAAA/hC,EAAA60B,GACA,MAAAjG,GAAAkC,YAAA9wB,EAAAr0B,KAAAkpD,EAAAlpD,MAGA,QAAA4sD,GAAAv4B,EAAA60B,GACA,MAAAjG,GAAAkC,YAAA9wB,EAAA60B,GAPAvrD,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,EAIAG,GAAAw5D,uBAIAx5D,EAAAgwD,mBjCytNM,SAAU/vD,EAAQD,EAASH,GAEjC,YkCpuNA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA6tD,EAAA7tD,EAAA,IACA+4D,EAAA/4D,EAAA,GACA8tD,EAAA9tD,EAAA,GACA89D,EAAA99D,EAAA,IAMAkxE,EAAA,SAAAt1D,GAEA,QAAAs1D,GAAA8E,GACA,GAAArtE,GAAAiT,EAAArb,KAAA8F,WAGA,OAFAsC,GAAAqtE,KACAxvB,EAAAv5C,QAAA+oE,EAAA7kE,WAAA,cAAA6kE,EAAAzqB,WAAA,2DACA5iD,EAmDA,MAxDA0S,GAAA61D,EAAAt1D,GAYAs1D,EAAA/vE,UAAA80E,aAAA,SAAAxT,GACA,MAAAA,GAAA9R,SAAAtqD,KAAA2vE,KAKA9E,EAAA/vE,UAAAotD,YAAA,SAAApsB,GACA,OAAAA,EAAAwuB,SAAAtqD,KAAA2vE,IAAA7kE,WAKA+/D,EAAA/vE,UAAA8sD,QAAA,SAAAvxC,EAAA1O,GACA,GAAAkoE,GAAA7vE,KAAA4vE,aAAAv5D,EAAAylB,MACAg0C,EAAA9vE,KAAA4vE,aAAAjoE,EAAAm0B,MACAksB,EAAA6nB,EAAA5nB,UAAA6nB,EACA,YAAA9nB,EACA5H,EAAAiC,YAAAhsC,EAAAnZ,KAAAyK,EAAAzK,MAGA8qD,GAMA6iB,EAAA/vE,UAAA6tD,SAAA,SAAAC,EAAA1rD,GACA,GAAAqwE,GAAA9V,EAAApQ,aAAAuB,GACA9sB,EAAA42B,EAAAnJ,aAAAP,WAAAkC,YAAAlrD,KAAA2vE,GAAApC,EACA,WAAA9lB,GAAAc,UAAArrD,EAAA4+B,IAKA+uC,EAAA/vE,UAAA2tD,QAAA,WACA,GAAA3sB,GAAA42B,EAAAnJ,aAAAP,WAAAkC,YAAAlrD,KAAA2vE,GAAAjd,EAAAnL,SACA,WAAAE,GAAAc,UAAAnI,EAAAgC,SAAAtmB,IAKA+uC,EAAA/vE,UAAAiV,SAAA,WACA,MAAA/P,MAAA2vE,GAAAnoE,QAAA2B,KAAA,MAEA0hE,GACCrjB,EAAAsB,MACDhvD,GAAA+wE,alC4vNM,SAAU9wE,EAAQD,EAASH,GAEjC,YmC/0NAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACA80D,EAAA90D,EAAA,GACA+9D,EAAA/9D,EAAA,IACA+tD,EAAA/tD,EAAA,IACA89D,EAAA99D,EAAA,IACAwvD,EAAAxvD,EAAA,EAMAG,GAAA4hE,mBAAA,SAAA5tD,GAGA,MAFAA,SACAA,EAAA,UAAAA,EAAA,eAAA+D,OAAAE,UACAjE,GASAhU,EAAAi2E,qBAAA,SAAA7xE,EAAA8+D,GACA,MAAA9+D,IAAA,gBAAAA,IAIAiiD,EAAAv5C,OAAA,OAAA1I,GAAA,6CACA8+D,EAAA9+D,EAAA,SAJAA,GAcApE,EAAAukE,yBAAA,SAAA2F,EAAAhH,GACA,GAAAgT,GAAA,GAAAtY,GAAAqB,kBAIA,OAHAiL,GAAA1F,YAAA,GAAA7P,GAAA7J,KAAA,aAAAjH,EAAA7hB,GACAk0C,EAAApR,SAAAjhB,EAAA7jD,EAAAojE,6BAAAphC,EAAAkhC,MAEAgT,GAUAl2E,EAAAojE,6BAAA,SAAAphC,EAAAkhC,GACA,GAEA3U,GAFA4nB,EAAAn0C,EAAAgsB,cAAAp6C,MACAuhD,EAAAn1D,EAAAi2E,qBAAAE,EAAAjT,EAEA,IAAAlhC,EAAAmuB,aAAA,CACA,GAAAimB,GAAAp0C,EACA59B,EAAApE,EAAAi2E,qBAAAG,EAAAnb,WAAAiI,EACA,OAAA9+D,KAAAgyE,EAAAnb,YACA9F,IAAAihB,EAAApoB,cAAAp6C,MACA,GAAAg6C,GAAAgB,SAAAxqD,EAAAu5D,EAAApQ,aAAA4H,IAGAnzB,EAIA,GAAAq0C,GAAAr0C,CAWA,OAVAusB,GAAA8nB,EACAlhB,IAAAkhB,EAAAroB,cAAAp6C,QACA26C,IAAA6B,eAAA,GAAAxC,GAAAgB,SAAAuG,KAEAkhB,EAAAzkB,aAAAvC,EAAAJ,eAAA,SAAAsB,EAAAsB,GACA,GAAAjB,GAAA5wD,EAAAojE,6BAAAvR,EAAAqR,EACAtS,KAAAiB,IACAtD,IAAAoC,qBAAAJ,EAAAK,MAGArC,InCy2NM,SAAUtuD,EAAQD,EAASH,GAEjC,YoC77NAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuwD,GAAA90D,EAAA,GACAwvD,EAAAxvD,EAAA,GACAy2E,EAAAz2E,EAAA,IAMAo/D,EAAA,WACA,QAAAA,KAKA/4D,KAAA60D,EAAA,KAKA70D,KAAAwpD,EAAA,KAuIA,MA/HAuP,GAAAj+D,UAAAwW,KAAA,SAAAqsC,GACA,SAAA39C,KAAA60D,EACA,MAAA70D,MAAA60D,EAAAvK,SAAA3M,EAEA,IAAAA,EAAA7yC,WAAA,MAAA9K,KAAAwpD,EAYA,WAXA,IAAAuI,GAAApU,EAAAuH,UAEA,OADAvH,KAAAyH,WACAplD,KAAAwpD,EAAA9qD,SAAAqzD,GACA/xD,KAAAwpD,EAAAhsD,IAAAu0D,GACAzgD,KAAAqsC,GAGA,MAcAob,EAAAj+D,UAAA8jE,SAAA,SAAAjhB,EAAArzC,GACA,GAAAqzC,EAAA7yC,UACA9K,KAAA60D,EAAAvqD,EACAtK,KAAAwpD,EAAA,SAEA,WAAAxpD,KAAA60D,EACA70D,KAAA60D,EAAA70D,KAAA60D,EAAA3J,YAAAvN,EAAArzC,OAEA,CACA,MAAAtK,KAAAwpD,IACAxpD,KAAAwpD,EAAA,GAAA4mB,GAAAC,WAEA,IAAAte,GAAApU,EAAAuH,UACAllD,MAAAwpD,EAAA9qD,SAAAqzD,IACA/xD,KAAAwpD,EAAAzK,IAAAgT,EAAA,GAAAgH,GAEA,IAAApT,GAAA3lD,KAAAwpD,EAAAhsD,IAAAu0D,EACApU,KAAAyH,WACAO,EAAAiZ,SAAAjhB,EAAArzC,KASAyuD,EAAAj+D,UAAA2jE,OAAA,SAAA9gB,GACA,GAAAA,EAAA7yC,UAGA,MAFA9K,MAAA60D,EAAA,KACA70D,KAAAwpD,EAAA,MACA,CAGA,WAAAxpD,KAAA60D,EAAA,CACA,GAAA70D,KAAA60D,EAAA5K,aAEA,QAGA,IAAA/rD,GAAA8B,KAAA60D,CACA70D,MAAA60D,EAAA,IACA,IAAAyb,GAAAtwE,IAIA,OAHA9B,GAAAwtD,aAAAvC,EAAAJ,eAAA,SAAA1nD,EAAA2iE,GACAsM,EAAA1R,SAAA,GAAAnQ,GAAA7J,KAAAvjD,GAAA2iE,KAEAhkE,KAAAy+D,OAAA9gB,GAGA,UAAA39C,KAAAwpD,EAAA,CACA,GAAAuI,GAAApU,EAAAuH,UAQA,OAPAvH,KAAAyH,WACAplD,KAAAwpD,EAAA9qD,SAAAqzD,IACA/xD,KAAAwpD,EAAAhsD,IAAAu0D,GAAA0M,OAAA9gB,IAEA39C,KAAAwpD,EAAAlI,OAAAyQ,KAGA/xD,KAAAwpD,EAAA1+C,YACA9K,KAAAwpD,EAAA,MACA,GAOA,UAWAuP,EAAAj+D,UAAAwjE,YAAA,SAAAiS,EAAAC,GACA,OAAAxwE,KAAA60D,EACA2b,EAAAD,EAAAvwE,KAAA60D,GAGA70D,KAAA0rD,aAAA,SAAArqD,EAAA2iE,GACA,GAAArmB,GAAA,GAAA8Q,GAAA7J,KAAA2rB,EAAA,IAAAlvE,EACA2iE,GAAA1F,YAAA3gB,EAAA6yB,MASAzX,EAAAj+D,UAAA4wD,aAAA,SAAA8kB,GACA,OAAAxwE,KAAAwpD,GACAxpD,KAAAwpD,EAAAzG,KAAA,SAAA1hD,EAAA2iE,GACAwM,EAAAnvE,EAAA2iE,MAIAjL,IAEAj/D,GAAAi/D,sBpCq9NM,SAAUh/D,EAAQD,EAASH,GAEjC,YqCpnOAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAMA02E,EAAA,WACA,QAAAA,KACArwE,KAAA+e,OAkEA,MA5DAsxD,GAAAv1E,UAAAikD,IAAA,SAAAlwC,EAAAnB,GACA1N,KAAA+e,IAAAlQ,GAAA,OAAAnB,MAMA2iE,EAAAv1E,UAAA4D,SAAA,SAAA2C,GACA,MAAA8+C,GAAAzhD,SAAAsB,KAAA+e,IAAA1d,IAMAgvE,EAAAv1E,UAAA0C,IAAA,SAAAqR,GACA,MAAA7O,MAAAtB,SAAAmQ,GAAA7O,KAAA+e,IAAAlQ,OAAAjT,IAKAy0E,EAAAv1E,UAAAwmD,OAAA,SAAAzyC,SACA7O,MAAA+e,IAAAlQ,IAKAwhE,EAAAv1E,UAAAs8C,MAAA,WACAp3C,KAAA+e,QAMAsxD,EAAAv1E,UAAAgQ,QAAA,WACA,MAAAq1C,GAAAr1C,QAAA9K,KAAA+e,MAKAsxD,EAAAv1E,UAAAuwD,MAAA,WACA,MAAAlL,GAAAp1C,SAAA/K,KAAA+e,MAMAsxD,EAAAv1E,UAAAioD,KAAA,SAAAv4C,GACA21C,EAAA1gD,QAAAO,KAAA+e,IAAA,SAAAvN,EAAA4J,GAAkD,MAAA5Q,GAAAgH,EAAA4J,MAMlDi1D,EAAAv1E,UAAAkE,KAAA,WACA,GAAAA,KAIA,OAHAmhD,GAAA1gD,QAAAO,KAAA+e,IAAA,SAAAvN,GACAxS,EAAApE,KAAA4W,KAEAxS,GAEAqxE,IAEAv2E,GAAAu2E,crC4oOM,SAAUt2E,EAAQD,EAASH,GAEjC,YsC3tOAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuyE,GAAA92E,EAAA,GACA80D,EAAA90D,EAAA,GAQA+2E,EAAA,WACA,QAAAA,GAAAhgE,EAAAitC,EAAAye,GACAp8D,KAAA0Q,SACA1Q,KAAA29C,OACA39C,KAAAo8D,OAEAp8D,KAAA1D,KAAAm0E,EAAA1f,cAAA4f,UAUA,MARAD,GAAA51E,UAAA81E,kBAAA,SAAAvmB,GACA,MAAArqD,MAAA29C,KAAA7yC,UACA,GAAA4lE,GAAA1wE,KAAA0Q,OAAA+9C,EAAA7J,KAAA2Z,MAAAv+D,KAAAo8D,KAAAhS,kBAAAC,IAGA,GAAAqmB,GAAA1wE,KAAA0Q,OAAA1Q,KAAA29C,KAAAyH,WAAAplD,KAAAo8D,OAGAsU,IAEA52E,GAAA42E,atCmvOM,SAAU32E,EAAQD,EAASH,GAEjC,YuCjxOAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAMA6kE,GANA8N,EAAAl3E,EAAA,IACA+4D,EAAA/4D,EAAA,GACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACAm3E,EAAAn3E,EAAA,IACAo3E,EAAAp3E,EAAA,IAYAqpE,EAAA,WACA,QAAAA,KAUAhjE,KAAAgxE,MAwMA,MAtMAn2E,QAAAwC,eAAA2lE,EAAA,0BACAxlE,IAAA,WAEA,MADA2iD,GAAAv5C,OAAAm8D,EAAA,oCACAA,GAEAhkD,IAAA,SAAArR,GACAyyC,EAAAv5C,QAAAm8D,EAAA,mDACAA,EAAAr1D,GAEAnQ,YAAA,EACAD,cAAA,IAKA0lE,EAAAloE,UAAAgQ,QAAA,WACA,MAAAs1C,GAAAt1C,QAAA9K,KAAAgxE,KASAhO,EAAAloE,UAAAm2E,eAAA,SAAA9zB,EAAA+zB,EAAAC,GACA,GAAAhgB,GAAAhU,EAAAzsC,OAAAygD,OACA,WAAAA,EAAA,CACA,GAAAigB,GAAAhxB,EAAA71C,QAAAvK,KAAAgxE,GAAA7f,EAEA,OADAhR,GAAAv5C,OAAA,MAAAwqE,EAAA,gDACAA,EAAAH,eAAA9zB,EAAA+zB,EAAAC,GAGA,GAAAE,KAIA,OAHAjxB,GAAA3gD,QAAAO,KAAAgxE,GAAA,SAAA3vE,EAAA+vE,GACAC,IAAA1sE,OAAAysE,EAAAH,eAAA9zB,EAAA+zB,EAAAC,MAEAE,GAaArO,EAAAloE,UAAAokE,qBAAA,SAAAjb,EAAAgb,EAAAiS,EAAAI,EAAAC,GACA,GAAApgB,GAAAlN,EAAAgpB,kBACAmE,EAAAhxB,EAAA71C,QAAAvK,KAAAgxE,GAAA7f,EACA,KAAAigB,EAAA,CAEA,GAAAI,GAAAN,EAAAO,uBAAAF,EAAAD,EAAA,MACAI,GAAA,CACAF,GACAE,GAAA,EAEAJ,YAAA5e,GAAAnJ,cACAioB,EAAAN,EAAAS,0BAAAL,GACAI,GAAA,IAGAF,EAAA9e,EAAAnJ,aAAAP,WACA0oB,GAAA,EAEA,IAAAE,GAAA,GAAAd,GAAAe,UAAA,GAAAhB,GAAAvQ,UAC6B,EAAAoR,GAAA,MAAAb,GAAAvQ,UACA,EAAAiR,GAAA,GAC7BH,GAAA,GAAAL,GAAAe,KAAA7tB,EAAA2tB,GACA5xE,KAAAgxE,GAAA7f,GAAAigB,EAIA,MADAA,GAAAlS,qBAAAD,GACAmS,EAAAW,iBAAA9S,IAaA+D,EAAAloE,UAAAukE,wBAAA,SAAApb,EAAAgb,EAAA+S,GACA,GAAA7gB,GAAAlN,EAAAgpB,kBACAgF,KACAC,KACAC,EAAAnyE,KAAAoyE,iBACA,gBAAAjhB,EAAA,CAEA,GAAAmf,GAAAtwE,IACAogD,GAAA3gD,QAAAO,KAAAgxE,GAAA,SAAAqB,EAAAjB,GACAc,IAAAvtE,OAAAysE,EAAA/R,wBAAAJ,EAAA+S,IACAZ,EAAAtmE,kBACAwlE,GAAAU,GAAAqB,GAEAjB,EACAkB,WACAnH,iBACAoH,gBACAN,EAAAr3E,KAAAw2E,EAAAkB,mBAKA,CAEA,GAAAlB,GAAAhxB,EAAA71C,QAAAvK,KAAAgxE,GAAA7f,EACAigB,KACAc,IAAAvtE,OAAAysE,EAAA/R,wBAAAJ,EAAA+S,IACAZ,EAAAtmE,kBACA9K,MAAAgxE,GAAA7f,GAEAigB,EACAkB,WACAnH,iBACAoH,gBACAN,EAAAr3E,KAAAw2E,EAAAkB,cASA,MAJAH,KAAAnyE,KAAAoyE,mBAEAH,EAAAr3E,KAAA,GAAAooE,GAAAD,uBAAA9e,EAAAsd,KAAAtd,EAAAtG,QAEgBs0B,UAAA/W,OAAAgX,IAKhBlP,EAAAloE,UAAA03E,cAAA,WACA,GAAAlwE,GAAAtC,IAEA,OADAnF,QAAAmE,KAAAgB,KAAAgxE,IAAA/xE,IAAA,SAAAoC,GAAkE,MAAAiB,GAAA0uE,GAAA3vE,KAClEa,OAAA,SAAAkvE,GACA,OAAAA,EACAkB,WACAnH,iBACAoH,kBAQAvP,EAAAloE,UAAA23E,uBAAA,SAAA90B,GACA,GAAA2zB,GAAA,IAIA,OAHAlxB,GAAA3gD,QAAAO,KAAAgxE,GAAA,SAAA3vE,EAAA+vE,GACAE,KAAAF,EAAAqB,uBAAA90B,KAEA2zB,GAMAtO,EAAAloE,UAAA43E,aAAA,SAAAzuB,GAEA,GADAA,EAAAknB,iBACAoH,eACA,MAAAvyE,MAAA2yE,iBAGA,IAAAxhB,GAAAlN,EAAAgpB,iBACA,OAAA7sB,GAAA71C,QAAAvK,KAAAgxE,GAAA7f,IAOA6R,EAAAloE,UAAA83E,mBAAA,SAAA3uB,GACA,aAAAjkD,KAAA0yE,aAAAzuB,IAKA+e,EAAAloE,UAAAs3E,gBAAA,WACA,aAAApyE,KAAA2yE,mBAKA3P,EAAAloE,UAAA63E,gBAAA,WAOA,MANAvyB,GAAA90C,UAAAtL,KAAAgxE,GAAA,SAAAI,GACA,MAAAA,GACAkB,WACAnH,iBACAoH,kBAEA,MAEAvP,IAEAlpE,GAAAkpE,avCyyOM,SAAUjpE,EAAQD,EAASH,GAEjC,YwClhPAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAw0D,GAAA/4D,EAAA,GACAk3E,EAAAl3E,EAAA,IAQAk4E,EAAA,WAMA,QAAAA,GAAAgB,EAAAC,GACA9yE,KAAA6yE,KACA7yE,KAAA8yE,KAyDA,MAjDAjB,GAAA/2E,UAAAi4E,gBAAA,SAAAC,EAAAj7D,EAAAk7D,GACA,UAAApB,GAAA,GAAAhB,GAAAvQ,UAAA0S,EAAAj7D,EAAAk7D,GAAAjzE,KAAA8yE,KAQAjB,EAAA/2E,UAAAo4E,iBAAA,SAAAC,EAAAp7D,EAAAk7D,GACA,UAAApB,GAAA7xE,KAAA6yE,GAAA,GAAAhC,GAAAvQ,UAAA6S,EAAAp7D,EAAAk7D,KAKApB,EAAA/2E,UAAAs4E,cAAA,WACA,MAAApzE,MAAA6yE,IAKAhB,EAAA/2E,UAAAu4E,qBAAA,WACA,MAAArzE,MAAA6yE,GAAAnS,qBACA1gE,KAAA6yE,GAAAjY,UACA,MAKAiX,EAAA/2E,UAAAw4E,eAAA,WACA,MAAAtzE,MAAA8yE,IAKAjB,EAAA/2E,UAAAy4E,sBAAA,WACA,MAAAvzE,MAAA8yE,GAAApS,qBACA1gE,KAAA8yE,GAAAlY,UACA,MAMAiX,EAAAtT,MAAA,GAAAsT,GAAA,GAAAhB,GAAAvQ,UAAA5N,EAAAnJ,aAAAP,YACA,GACA,MAAA6nB,GAAAvQ,UAAA5N,EAAAnJ,aAAAP,YACA,GACA,IACA6oB,IAEA/3E,GAAA+3E,axC0iPM,SAAU93E,EAAQD,EAASH,GAEjC,YyCznPAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAOA+lE,EAAA,WACA,QAAAA,GAAA8T,GACAxzE,KAAAwzE,KACAxzE,KAAAyzE,GAAA,KAaA,MAXA/T,GAAA5kE,UAAA0C,IAAA,WACA,GAAAk2E,GAAA1zE,KAAAwzE,GAAAh2E,MACAm2E,EAAAxzB,EAAAv1C,MAAA8oE,EAOA,OANA1zE,MAAAyzE,IACAtzB,EAAA1gD,QAAAO,KAAAyzE,GAAA,SAAA1T,EAAA7hE,GACAy1E,EAAA5T,GAAA4T,EAAA5T,GAAA7hE,IAGA8B,KAAAyzE,GAAAC,EACAC,GAEAjU,IAEA5lE,GAAA4lE,iBzCipPM,SAAU3lE,EAAQD,EAASH,GAEjC,Y0C7qPA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA01E,GAAAj6E,EAAA,GACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,GACA2mD,EAAA3mD,EAAA,GACA80D,EAAA90D,EAAA,GACAk6E,EAAAl6E,EAAA,KACAm6E,EAAAn6E,EAAA,KACA4mD,EAAA5mD,EAAA,GACAo6E,EAAAp6E,EAAA,IACA6mD,EAAA7mD,EAAA,GACA+mD,EAAA/mD,EAAA,GACAq6E,EAAAr6E,EAAA,IACAs6E,EAAA,IACAC,EAAA,IAaAva,EAAA,SAAApkD,GAWA,QAAAokD,GAAArB,EAAAkB,EAAAC,EAAAG,EAAAua,EAAAC,GACA,GAAA9xE,GAAAiT,EAAArb,KAAA8F,WAwCA,IAvCAsC,EAAAg2D,IACAh2D,EAAAk3D,KACAl3D,EAAAm3D,KACAn3D,EAAAs3D,KACAt3D,EAAA6xE,KACA7xE,EAAA8xE,KAEA9xE,EAAA6L,GAAAwrD,EAAA0a,KACA/xE,EAAAy6D,GAAAzc,EAAAiB,WAAA,KAAAj/C,EAAA6L,GAAA,KAEA7L,EAAAgyE,MACAhyE,EAAAiyE,MACAjyE,EAAAkyE,MACAlyE,EAAAmyE,GAAA,EACAnyE,EAAAoyE,MACApyE,EAAAqyE,IAAA,EACAryE,EAAAsyE,GAAAX,EACA3xE,EAAAuyE,GAAAX,EACA5xE,EAAAwyE,GAAA,KACAxyE,EAAAyyE,cAAA,KAEAzyE,EAAA0yE,GAAA,KAEA1yE,EAAA2yE,IAAA,EAEA3yE,EAAA4yE,MACA5yE,EAAA6yE,GAAA,EAKA7yE,EAAA8yE,GAAA,KAEA9yE,EAAA+yE,GAAA,KACA/yE,EAAAgzE,IAAA,EACAhzE,EAAAizE,GAAA,EACAjzE,EAAAkzE,IAAA,EACAlzE,EAAAmzE,GAAA,KACAnzE,EAAAozE,GAAA,KACAtB,IAAA1zB,EAAAhuC,YACA,KAAA/W,OAAA,iFAOA,OALA2G,GAAAqzE,GAAA,GACA9B,EAAA+B,kBAAA9O,cAAAlhE,GAAA,UAAAtD,EAAAuzE,GAAAvzE,IACA,IAAAg2D,EAAA/5C,KAAA5N,QAAA,YACAmjE,EAAAgC,cAAAhP,cAAAlhE,GAAA,SAAAtD,EAAAyzE,GAAAzzE,GAEAA,EAkrBA,MA7uBA0S,GAAA2kD,EAAApkD,GAmEAokD,EAAA7+D,UAAAk7E,YAAA,SAAAppB,EAAAppB,EAAAyyC,GACA,GAAAC,KAAAl2E,KAAAm1E,GACAgB,GAAmB77D,EAAA47D,EAAA7/D,EAAAu2C,EAAAjlD,EAAA67B,EACnBxjC,MAAA+8D,GAAA3c,EAAA/1C,UAAA8rE,IACA91B,EAAAz5C,OAAA5G,KAAA20E,GAAA,0DACA30E,KAAAo1E,GAAAY,YAAAG,GACAF,IACAj2E,KAAAk1E,GAAAgB,GAAAD,IAMAtc,EAAA7+D,UAAAmgE,OAAA,SAAAhX,EAAAwW,EAAAD,EAAAE,GACA,GAAAvJ,GAAAlN,EAAAgpB,kBACA3nB,EAAArB,KAAAtG,IACA39C,MAAA+8D,GAAA,qBAAAzX,EAAA,IAAA6L,GACAnxD,KAAAu0E,GAAAjvB,GAAAtlD,KAAAu0E,GAAAjvB,OACAjF,EAAAz5C,OAAAq9C,EAAAknB,iBAAAiL,cACAnyB,EAAAknB,iBAAAoH,eAAA,sDACAlyB,EAAAz5C,QAAA5G,KAAAu0E,GAAAjvB,GAAA6L,GAAA,+CACA,IAAAklB,IACA3b,aACA4b,OAAA7b,EACAxW,QACAuW,MAEAx6D,MAAAu0E,GAAAjvB,GAAA6L,GAAAklB,EACAr2E,KAAA20E,IACA30E,KAAAu2E,GAAAF,IAUA1c,EAAA7+D,UAAAy7E,GAAA,SAAAF,GACA,GAAA/zE,GAAAtC,KACAikD,EAAAoyB,EAAApyB,MACAqB,EAAArB,KAAAtG,KACAwT,EAAAlN,EAAAgpB,iBACAjtE,MAAA+8D,GAAA,aAAAzX,EAAA,QAAA6L,EACA,IAAAqlB,IAAmB55E,EAAA0oD,EAGnB+wB,GAAA7b,MACAgc,EAAA,EAAAvyB,EAAA8oB,cACAyJ,EAAA,EAAAH,EAAA7b,KAEAgc,EAAA,EAAAH,EAAAC,SACAt2E,KAAAg2E,YAPA,IAOAQ,EAAA,SAAA1vE,GACA,GAAA2vE,GAAA3vE,EAAA,EACAooB,EAAApoB,EAAA,CAEA6yD,GAAA+c,GAAAD,EAAAxyB,IACA3hD,EAAAiyE,GAAAjvB,IAAAhjD,EAAAiyE,GAAAjvB,GAAA6L,MAEAklB,IACA/zE,EAAAy6D,GAAA,kBAAAj2D,GACA,OAAAooB,GACA5sB,EAAAq0E,GAAArxB,EAAA6L,GAEAklB,EAAA3b,YACA2b,EAAA3b,WAAAxrC,EAAAunD,OAUA9c,EAAA+c,GAAA,SAAAD,EAAAxyB,GACA,GAAAwyB,GAAA,gBAAAA,IAAAt2B,EAAAzhD,SAAA+3E,EAAA,MACA,GAAAG,GAAAz2B,EAAA51C,QAAAksE,EAAA,IACA,IAAApxE,MAAAgD,QAAAuuE,OAAAjmE,QAAA,aACA,GAAAkmE,GAAA,gBACA5yB,EACAknB,iBACAjF,WAEA,IACA4Q,EAAA7yB,KAAAtG,IACA2C,GAAAvyC,KAAA,wGACA8oE,EAAA,OACAC,EAAA,sDAOAnd,EAAA7+D,UAAAg/D,iBAAA,SAAApmD,GACA1T,KAAAq1E,GAAA3hE,EACA1T,KAAA+8D,GAAA,wBACA/8D,KAAAq1E,GACAr1E,KAAA+2E,UAKA/2E,KAAA20E,IACA30E,KAAAg2E,YAAA,YAA6C,cAG7Ch2E,KAAAg3E,GAAAtjE,IAMAimD,EAAA7+D,UAAAk8E,GAAA,SAAAr9C,IAGAA,GAAA,KAAAA,EAAAj/B,QACA6lD,EAAA/rC,QAAAmlB,MACA35B,KAAA+8D,GAAA,iEACA/8D,KAAA60E,GAzMA,MAgNAlb,EAAA7+D,UAAAi8E,QAAA,WACA,GAAAz0E,GAAAtC,IACA,IAAAA,KAAA20E,IAAA30E,KAAAq1E,GAAA,CACA,GAAA4B,GAAAj3E,KAAAq1E,GACA6B,EAAA32B,EAAAjsC,cAAA2iE,GAAA,eACAE,GAA+B5mB,KAAA0mB,EAC/B,QAAAj3E,KAAAo0E,GACA+C,EAAA,UAEA,gBAAAn3E,MAAAo0E,KACA+C,EAAA,QAAAn3E,KAAAo0E,IAEAp0E,KAAAg2E,YAAAkB,EAAAC,EAAA,SAAAhsE,GACA,GAAA+jB,GAAA/jB,EAAA,EACAb,EAAAa,EAAA,UACA7I,GAAA+yE,KAAA4B,IACA,OAAA/nD,EACA5sB,EAAAizE,GAAA,EAIAjzE,EAAA80E,GAAAloD,EAAA5kB,QASAqvD,EAAA7+D,UAAAsgE,SAAA,SAAAnX,EAAAuW,GACA,GAAAlV,GAAArB,KAAAtG,KACAwT,EAAAlN,EAAAgpB,iBACAjtE,MAAA+8D,GAAA,uBAAAzX,EAAA,IAAA6L,GACA9Q,EAAAz5C,OAAAq9C,EAAAknB,iBAAAiL,cACAnyB,EAAAknB,iBAAAoH,eAAA,wDACAvyE,KAAA22E,GAAArxB,EAAA6L,IACAnxD,KAAA20E,IACA30E,KAAAq3E,GAAA/xB,EAAA6L,EAAAlN,EAAA8oB,cAAAvS,IAGAb,EAAA7+D,UAAAu8E,GAAA,SAAA/xB,EAAA6L,EAAAmmB,EAAA9c,GACAx6D,KAAA+8D,GAAA,eAAAzX,EAAA,QAAA6L,EACA,IAAAqlB,IAAmB55E,EAAA0oD,EAGnBkV,KACAgc,EAAA,EAAAc,EACAd,EAAA,EAAAhc,GAEAx6D,KAAAg2E,YANA,IAMAQ,IAKA7c,EAAA7+D,UAAA6jE,gBAAA,SAAArZ,EAAAh7C,EAAAowD,GACA16D,KAAA20E,GACA30E,KAAAu3E,GAAA,IAAAjyB,EAAAh7C,EAAAowD,GAGA16D,KAAA00E,GAAA95E,MACA0qD,aACAsH,OAAA,IACAtiD,OACAowD,gBAOAf,EAAA7+D,UAAAikE,kBAAA,SAAAzZ,EAAAh7C,EAAAowD,GACA16D,KAAA20E,GACA30E,KAAAu3E,GAAA,KAAAjyB,EAAAh7C,EAAAowD,GAGA16D,KAAA00E,GAAA95E,MACA0qD,aACAsH,OAAA,KACAtiD,OACAowD,gBAOAf,EAAA7+D,UAAA0jE,mBAAA,SAAAlZ,EAAAoV,GACA16D,KAAA20E,GACA30E,KAAAu3E,GAAA,KAAAjyB,EAAA,KAAAoV,GAGA16D,KAAA00E,GAAA95E,MACA0qD,aACAsH,OAAA,KACAtiD,KAAA,KACAowD,gBAIAf,EAAA7+D,UAAAy8E,GAAA,SAAA3qB,EAAAtH,EAAAh7C,EAAAowD,GACA,GAAA19B,IAAuBpgC,EAAA0oD,EAAAroD,EAAAqN,EACvBtK,MAAA+8D,GAAA,gBAAAnQ,EAAA5vB,GACAh9B,KAAAg2E,YAAAppB,EAAA5vB,EAAA,SAAA+a,GACA2iB,GACA79D,WAAA,WACA69D,EAAA3iB,EAAA,EAAAA,EAAA,IACiBznC,KAAA8D,MAAA,OAOjBulD,EAAA7+D,UAAAgkD,IAAA,SAAAwG,EAAAh7C,EAAAowD,EAAA9O,GACA5rD,KAAAw3E,YAAA,IAAAlyB,EAAAh7C,EAAAowD,EAAA9O,IAKA+N,EAAA7+D,UAAAojE,MAAA,SAAA5Y,EAAAh7C,EAAAowD,EAAA9O,GACA5rD,KAAAw3E,YAAA,IAAAlyB,EAAAh7C,EAAAowD,EAAA9O,IAEA+N,EAAA7+D,UAAA08E,YAAA,SAAA5qB,EAAAtH,EAAAh7C,EAAAowD,EAAA9O,GACA,GAAA5uB,IACApgC,EAAA0oD,EACAroD,EAAAqN,OAEA1O,KAAAgwD,IACA5uB,EAAA,EAAA4uB,GAEA5rD,KAAAw0E,GAAA55E,MACAgyD,SACA5vB,UACA09B,eAEA16D,KAAAy0E,IACA,IAAAxoB,GAAAjsD,KAAAw0E,GAAA95E,OAAA,CACAsF,MAAA20E,GACA30E,KAAAy3E,GAAAxrB,GAGAjsD,KAAA+8D,GAAA,kBAAAzX,IAGAqU,EAAA7+D,UAAA28E,GAAA,SAAAxrB,GACA,GAAA3pD,GAAAtC,KACA4sD,EAAA5sD,KAAAw0E,GAAAvoB,GAAAW,OACA5vB,EAAAh9B,KAAAw0E,GAAAvoB,GAAAjvB,QACA09B,EAAA16D,KAAAw0E,GAAAvoB,GAAAyO,UACA16D,MAAAw0E,GAAAvoB,GAAAyrB,OAAA13E,KAAA20E,GACA30E,KAAAg2E,YAAAppB,EAAA5vB,EAAA,SAAAl2B,GACAxE,EAAAy6D,GAAAnQ,EAAA,YAAA9lD,SACAxE,GAAAkyE,GAAAvoB,GACA3pD,EAAAmyE,KAEA,IAAAnyE,EAAAmyE,KACAnyE,EAAAkyE,OAEA9Z,GACAA,EAAA5zD,EAAA,EAAAA,EAAA,MAMA6yD,EAAA7+D,UAAA68E,YAAA,SAAAnY,GACA,GAAAl9D,GAAAtC,IAEA,IAAAA,KAAA20E,GAAA,CACA,GAAA33C,IAA2BhgC,EAAAwiE,EAC3Bx/D,MAAA+8D,GAAA,cAAA//B,GACAh9B,KAAAg2E,YAAA,IAAAh5C,EAAA,SAAAxiC,GAEA,UADAA,EAAA,EACA,CACA,GAAA8iE,GAAA9iE,EAAA,CACA8H,GAAAy6D,GAAA,sCAAAO,QASA3D,EAAA7+D,UAAA88E,GAAA,SAAA9wE,GACA,QAAAA,GAAA,CAEA9G,KAAA+8D,GAAA,gBAAA3c,EAAA/1C,UAAAvD,GACA,IAAA+wE,GAAA/wE,EAAA,EACAmvE,EAAAj2E,KAAAk1E,GAAA2C,EACA5B,WACAj2E,MAAAk1E,GAAA2C,GACA5B,EAAAnvE,EAAA,QAGA,aAAAA,GACA,0CAAAA,EAAA,KAEA,MAAAA,IAEA9G,KAAA83E,GAAAhxE,EAAA,EAAAA,EAAA,KAGA6yD,EAAA7+D,UAAAg9E,GAAA,SAAAlrB,EAAAppB,GACAxjC,KAAA+8D,GAAA,sBAAAnQ,EAAAppB,GACA,MAAAopB,EACA5sD,KAAAw5D,GAAAh2B,EAAA,EAAAA,EAAA,GACA,EAAAA,EAAA,GACA,MAAAopB,EACA5sD,KAAAw5D,GAAAh2B,EAAA,EAAAA,EAAA,GACA,EAAAA,EAAA,GACA,MAAAopB,EACA5sD,KAAA+3E,GAAAv0C,EAAA,EAAAA,EAAA,GACA,OAAAopB,EACA5sD,KAAAo3E,GAAA5zC,EAAA,EAAAA,EAAA,GACA,OAAAopB,EACA5sD,KAAAg4E,GAAAx0C,GAEA8c,EAAAtiD,MAAA,6CACAoiD,EAAA/1C,UAAAuiD,GACA,uCAEA+M,EAAA7+D,UAAAm9E,GAAA,SAAAtc,EAAApgC,GACAv7B,KAAA+8D,GAAA,oBACA/8D,KAAA20E,IAAA,EACA30E,KAAA01E,IAAA,GAAA7jE,OAAAE,UACA/R,KAAAk4E,GAAAvc,GACA37D,KAAA+0E,cAAAx5C,EACAv7B,KAAAw1E,IACAx1E,KAAAm4E,KAEAn4E,KAAAo4E,KACAp4E,KAAAw1E,IAAA,EACAx1E,KAAAy5D,IAAA,IAEAE,EAAA7+D,UAAA66E,GAAA,SAAAl6E,GACA,GAAA6G,GAAAtC,IACAqgD,GAAAz5C,QAAA5G,KAAAo1E,GAAA,0DACAp1E,KAAAg1E,IACAx5E,aAAAwE,KAAAg1E,IAIAh1E,KAAAg1E,GAAAn4E,WAAA,WACAyF,EAAA0yE,GAAA,KACA1yE,EAAA+1E,MACS/nE,KAAA8D,MAAA3Y,KAMTk+D,EAAA7+D,UAAA+6E,GAAA,SAAAyC,GAEAA,IACAt4E,KAAAi1E,IACAj1E,KAAA40E,KAAA50E,KAAA60E,KACA70E,KAAA+8D,GAAA,2CACA/8D,KAAA40E,GAAAX,EACAj0E,KAAAo1E,IACAp1E,KAAA21E,GAAA,IAGA31E,KAAAi1E,GAAAqD,GAEA3e,EAAA7+D,UAAAi7E,GAAA,SAAAwC,GACAA,GACAv4E,KAAA+8D,GAAA,wBACA/8D,KAAA40E,GAAAX,EACAj0E,KAAAo1E,IACAp1E,KAAA21E,GAAA,KAIA31E,KAAA+8D,GAAA,8CACA/8D,KAAAo1E,IACAp1E,KAAAo1E,GAAA3mE,UAIAkrD,EAAA7+D,UAAA09E,GAAA,WAQA,GAPAx4E,KAAA+8D,GAAA,4BACA/8D,KAAA20E,IAAA,EACA30E,KAAAo1E,GAAA,KAEAp1E,KAAAy4E,KAEAz4E,KAAAk1E,MACAl1E,KAAA04E,KAAA,CACA,GAAA14E,KAAAi1E,IAKA,GAAAj1E,KAAA01E,GAAA,CAEA,GAAAiD,IAAA,GAAA9mE,OAAAE,UAAA/R,KAAA01E,EACAiD,GAxfA,MAyfA34E,KAAA40E,GAAAX,GACAj0E,KAAA01E,GAAA,UATA11E,MAAA+8D,GAAA,8CACA/8D,KAAA40E,GAAA50E,KAAA60E,GACA70E,KAAAy1E,IAAA,GAAA5jE,OAAAE,SASA,IAAA6mE,IAAA,GAAA/mE,OAAAE,UAAA/R,KAAAy1E,GACAoD,EAAAvoE,KAAA6M,IAAA,EAAAnd,KAAA40E,GAAAgE,EACAC,GAAAvoE,KAAAC,SAAAsoE,EACA74E,KAAA+8D,GAAA,0BAAA8b,EAAA,MACA74E,KAAA21E,GAAAkD,GAEA74E,KAAA40E,GAAAtkE,KAAAgzC,IAAAtjD,KAAA60E,GAngBA,IAmgBA70E,KAAA40E,IAEA50E,KAAAy5D,IAAA,IAEAE,EAAA7+D,UAAAu9E,GAAA,WACA,GAAAr4E,KAAA04E,KAAA,CACA14E,KAAA+8D,GAAA,+BACA/8D,KAAAy1E,IAAA,GAAA5jE,OAAAE,UACA/R,KAAA01E,GAAA,IACA,IAAAoD,GAAA94E,KAAA43E,GAAA13E,KAAAF,MACA+4E,EAAA/4E,KAAAi4E,GAAA/3E,KAAAF,MACA8gE,EAAA9gE,KAAAw4E,GAAAt4E,KAAAF,MACAg5E,EAAAh5E,KAAAmO,GAAA,IAAAwrD,EAAAsf,KACA3I,EAAAtwE,KACAk5E,EAAAl5E,KAAA+0E,cACAoE,GAAA,EACAC,EAAA,KACAC,EAAA,WACAD,EACAA,EAAA3qE,SAGA0qE,GAAA,EACArY,MAGAwY,EAAA,SAAAnD,GACA91B,EAAAz5C,OAAAwyE,EAAA,0DACAA,EAAApD,YAAAG,GAEAn2E,MAAAo1E,IACA3mE,MAAA4qE,EACArD,YAAAsD,EAEA,IAAAC,GAAAv5E,KAAAs1E,EACAt1E,MAAAs1E,IAAA,EAEAt1E,KAAAm0E,GACAryE,SAAAy3E,GACAh3E,KAAA,SAAA/H,GACA2+E,EAUA74B,EAAAt9C,IAAA,0CATAs9C,EAAAt9C,IAAA,8CACAstE,EAAA+E,GAAA76E,KAAAo+B,YACAwgD,EAAA,GAAArF,GAAAyF,WAAAR,EAAA1I,EAAAhY,EAAAwgB,EAAAC,EAAAjY,EACA,SAAAzzD,GACAizC,EAAAvyC,KAAAV,EAAA,KAAAijE,EAAAhY,EAAA,KACAgY,EAAAhR,UA/iBA,gBAgjBqB4Z,MAMrB32E,KAAA,cAAAvE,GACAsyE,EAAAvT,GAAA,wBAAA/+D,GACAm7E,IACA34B,EAAA58C,UAAAE,YAIAw8C,EAAAvyC,KAAA/P,GAEAq7E,SAQA1f,EAAA7+D,UAAAwkE,UAAA,SAAAjyD,GACAizC,EAAAt9C,IAAA,uCAAAqK,GACArN,KAAAs0E,GAAAjnE,IAAA,EACArN,KAAAo1E,GACAp1E,KAAAo1E,GAAA3mE,SAGAzO,KAAAg1E,KACAx5E,aAAAwE,KAAAg1E,IACAh1E,KAAAg1E,GAAA,MAEAh1E,KAAA20E,IACA30E,KAAAw4E,OAOA7e,EAAA7+D,UAAAykE,OAAA,SAAAlyD,GACAizC,EAAAt9C,IAAA,mCAAAqK,SACArN,MAAAs0E,GAAAjnE,GACA8yC,EAAAr1C,QAAA9K,KAAAs0E,MACAt0E,KAAA40E,GAAAX,EACAj0E,KAAAo1E,IACAp1E,KAAA21E,GAAA,KAIAhc,EAAA7+D,UAAAo9E,GAAA,SAAAvc,GACA,GAAAgY,GAAAhY,GAAA,GAAA9pD,OAAAE,SACA/R,MAAA45D,IAAkC6f,iBAAA9F,KAElCha,EAAA7+D,UAAA29E,GAAA,WACA,OAAAz+E,GAAA,EAAuBA,EAAAgG,KAAAw0E,GAAA95E,OAAkCV,IAAA,CACzD,GAAA8kD,GAAA9+C,KAAAw0E,GAAAx6E,EACA8kD,IAAA,KAAAA,GAAA9hB,SAAA8hB,EAAA44B,SACA54B,EAAA4b,YACA5b,EAAA4b,WAAA,oBACA16D,MAAAw0E,GAAAx6E,GACAgG,KAAAy0E,MAIA,IAAAz0E,KAAAy0E,KACAz0E,KAAAw0E,QAOA7a,EAAA7+D,UAAAi9E,GAAA,SAAAzyB,EAAArB,GAEA,GAAAkN,EAKAA,GAJAlN,EAIAA,EAAAhlD,IAAA,SAAAib,GAA8C,MAAAomC,GAAAqC,kBAAAzoC,KAAsC/Q,KAAA,KAHpF,SAKA,IAAA8xD,GAAAj7D,KAAA22E,GAAArxB,EAAA6L,EACA8J,MAAAP,YACAO,EAAAP,WAAA,sBAQAf,EAAA7+D,UAAA67E,GAAA,SAAArxB,EAAA6L,GACA,GACA8J,GADAye,EAAA,MAAAjrB,GAAA7J,KAAAU,EAaA,YAXA1pD,KAAAoE,KAAAu0E,GAAAmF,IACAze,EAAAj7D,KAAAu0E,GAAAmF,GAAAvoB,SACAnxD,MAAAu0E,GAAAmF,GAAAvoB,GACA,IAAAhR,EAAAp1C,SAAA/K,KAAAu0E,GAAAmF,WACA15E,MAAAu0E,GAAAmF,IAKAze,MAAAr/D,GAEAq/D,GAEAtB,EAAA7+D,UAAAs8E,GAAA,SAAAuC,EAAAC,GACAt5B,EAAAt9C,IAAA,uBAAA22E,EAAA,IAAAC,GACA55E,KAAAq1E,GAAA,KACAr1E,KAAAs1E,IAAA,EACAt1E,KAAAo1E,GAAA3mE,QACA,kBAAAkrE,GAAA,sBAAAA,KAIA35E,KAAAu1E,IArqBA,IAwqBAv1E,KAAA40E,GA7qBA,IAgrBA50E,KAAAm0E,GAAA0F,0BAIAlgB,EAAA7+D,UAAAk9E,GAAA,SAAAx0C,GACAxjC,KAAA80E,GACA90E,KAAA80E,GAAAtxC,GAGA,OAAAA,IAAA,mBAAAzlC,UACAA,QAAAiF,IAAA,aAAAwgC,EAAA,IAAAnwB,QAAA,uBAIAsmD,EAAA7+D,UAAAs9E,GAAA,WACA,GAAA91E,GAAAtC,IAEAA,MAAA+2E,UAGA52B,EAAA1gD,QAAAO,KAAAu0E,GAAA,SAAAjvB,EAAAw0B,GACA35B,EAAA1gD,QAAAq6E,EAAA,SAAAz4E,EAAAg1E,GACA/zE,EAAAi0E,GAAAF,MAGA,QAAAr8E,GAAA,EAAuBA,EAAAgG,KAAAw0E,GAAA95E,OAAkCV,IACzDgG,KAAAw0E,GAAAx6E,IACAgG,KAAAy3E,GAAAz9E,EAEA,MAAAgG,KAAA00E,GAAAh6E,QAAA,CACA,GAAAsiC,GAAAh9B,KAAA00E,GAAA15E,OACAgF,MAAAu3E,GAAAv6C,EAAA4vB,OAAA5vB,EAAAsoB,WAAAtoB,EAAA1yB,KAAA0yB,EAAA09B,cAOAf,EAAA7+D,UAAAq9E,GAAA,WACA,GAAA3Y,MACAua,EAAA,IACAv5B,GAAA58C,UAAAE,WACAi2E,EAAA,aAEAv5B,EAAA58C,UAAAC,cACAk2E,EAAA,QAEAva,EAAA,OAAAua,EAAA,IAAAnG,EAAAloE,QAAA9K,YAAAyS,QAAA,cACAqtC,EAAAnuC,kBACAitD,EAAA,uBAEA9e,EAAAjuC,kBACA+sD,EAAA,4BAEAx/D,KAAA23E,YAAAnY,IAMA7F,EAAA7+D,UAAA49E,GAAA,WACA,GAAAH,GAAAzE,EAAAgC,cAAAhP,cAAAkT,iBACA,OAAA75B,GAAAr1C,QAAA9K,KAAAs0E,KAAAiE,GAKA5e,EAAA0a,GAAA,EAMA1a,EAAAsf,GAAA,EACAtf,GACCqa,EAAAiG,cACDngF,GAAA6/D,wB1CqsPM,SAAU5/D,EAAQD,EAASH,GAEjC,Y2C79QAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAKAugF,EAAA,WAIA,QAAAA,GAAAC,GACAn6E,KAAAm6E,KACAn6E,KAAAo6E,MACAj6B,EAAAv5C,OAAAvB,MAAAgD,QAAA8xE,MAAAz/E,OAAA,gCA6CA,MAtCAw/E,GAAAp/E,UAAAu/E,QAAA,SAAAvqB,GAEA,OADA/O,MACAjhD,EAAA,EAAwBA,EAAAC,UAAArF,OAAuBoF,IAC/CihD,EAAAjhD,EAAA,GAAAC,UAAAD,EAEA,IAAAuF,MAAAgD,QAAArI,KAAAo6E,GAAAtqB,IAGA,OADAzpD,GAAArG,KAAAo6E,GAAAtqB,GAAAtoD,QACAxN,EAAA,EAA2BA,EAAAqM,EAAA3L,OAAsBV,IACjDqM,EAAArM,GAAAgI,SAAA7B,MAAAkG,EAAArM,GAAA6e,QAAAkoC,IAIAm5B,EAAAp/E,UAAA8K,GAAA,SAAAkqD,EAAA9tD,EAAA6W,GACA7Y,KAAAs6E,GAAAxqB,GACA9vD,KAAAo6E,GAAAtqB,GAAA9vD,KAAAo6E,GAAAtqB,OACA9vD,KAAAo6E,GAAAtqB,GAAAl1D,MAAyCoH,WAAA6W,WACzC,IAAA0hE,GAAAv6E,KAAAw6E,gBAAA1qB,EACAyqB,IACAv4E,EAAA7B,MAAA0Y,EAAA0hE,IAGAL,EAAAp/E,UAAAiL,IAAA,SAAA+pD,EAAA9tD,EAAA6W,GACA7Y,KAAAs6E,GAAAxqB,EAEA,QADAzpD,GAAArG,KAAAo6E,GAAAtqB,OACA91D,EAAA,EAAuBA,EAAAqM,EAAA3L,OAAsBV,IAC7C,GAAAqM,EAAArM,GAAAgI,gBACA6W,OAAAxS,EAAArM,GAAA6e,SAEA,WADAxS,GAAAwT,OAAA7f,EAAA,IAKAkgF,EAAAp/E,UAAAw/E,GAAA,SAAAxqB,GACA3P,EAAAv5C,OAAA5G,KAAAm6E,GAAA7oE,KAAA,SAAAmpE,GACA,MAAAA,KAAA3qB,IACS,kBAAAA,IAEToqB,IAEApgF,GAAAogF,gB3Cq/QM,SAAUngF,EAAQD,EAASH,GAEjC,Y4CnjRAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACA8mD,EAAA9mD,EAAA,IACAsvE,EAAAtvE,EAAA,IACA+gF,EAAA/gF,EAAA,KA2BA6/E,EAAA,WAUA,QAAAA,GAAArrE,EAAAmqD,EAAAqiB,EAAA1C,EAAAnf,EAAA8hB,EAAA7F,GACA/0E,KAAAmO,KACAnO,KAAAs4D,IACAt4D,KAAA26E,KACA36E,KAAAi4E,KACAj4E,KAAA84D,IACA94D,KAAA46E,KACA56E,KAAA+0E,gBACA/0E,KAAA66E,gBAAA,EACA76E,KAAA86E,uBACA96E,KAAA+6E,GAAA,EACA/6E,KAAA+8D,GAAA5c,EAAAoB,WAAA,KAAAvhD,KAAAmO,GAAA,KACAnO,KAAAg7E,GAAA,GAAAN,GAAAO,iBAAA3iB,GACAt4D,KAAA+8D,GAAA,sBACA/8D,KAAAk7E,KAiaA,MA3ZA1B,GAAA1+E,UAAAogF,GAAA,WACA,GAAA54E,GAAAtC,KACAm7E,EAAAn7E,KAAAg7E,GAAAI,kBACAp7E,MAAAq7E,GAAA,GAAAF,GAAAn7E,KAAAs7E,KAAAt7E,KAAAs4D,MAAA18D,GAAAoE,KAAA+0E,eAGA/0E,KAAAu7E,GAAAJ,EAAA,+BACA,IAAAK,GAAAx7E,KAAAy7E,GAAAz7E,KAAAq7E,IACAK,EAAA17E,KAAA27E,GAAA37E,KAAAq7E,GACAr7E,MAAA47E,GAAA57E,KAAAq7E,GACAr7E,KAAA67E,GAAA77E,KAAAq7E,GACAr7E,KAAA87E,GAAA,KACA97E,KAAA+7E,IAAA,EAOAl/E,WAAA,WAEAyF,EAAA+4E,IAAA/4E,EAAA+4E,GAAAl9D,KAAAq9D,EAAAE,IACSprE,KAAA8D,MAAA,GACT,IAAA4nE,GAAAb,EAAA,iBACAa,GAAA,IACAh8E,KAAAi8E,GAAA97B,EAAAuE,sBAAA,WACApiD,EAAA25E,GAAA,KACA35E,EAAAy5E,KACAz5E,EAAA+4E,IACA/4E,EAAA+4E,GAAAa,cA5EA,QA6EA55E,EAAAy6D,GAAA,wDACAz6D,EAAA+4E,GAAAa,cACA,wCACA55E,EAAAy5E,IAAA,EACAz5E,EAAA+4E,GAAAc,yBAEA75E,EAAA+4E,IACA/4E,EAAA+4E,GAAAe,UArFA,MAsFA95E,EAAAy6D,GAAA,oDACAz6D,EAAA+4E,GAAAe,UACA,uCAKA95E,EAAAy6D,GAAA,+CACAz6D,EAAAmM,WAGa6B,KAAA8D,MAAA4nE,MAObxC,EAAA1+E,UAAAwgF,GAAA,WACA,WAAAt7E,KAAAmO,GAAA,IAAAnO,KAAA66E,mBAEArB,EAAA1+E,UAAA6gF,GAAA,SAAAR,GACA,GAAA74E,GAAAtC,IACA,iBAAAq8E,GACAlB,IAAA74E,EAAA+4E,GACA/4E,EAAAg6E,GAAAD,GAEAlB,IAAA74E,EAAAw5E,IACAx5E,EAAAy6D,GAAA,8BACAz6D,EAAAi6E,MAGAj6E,EAAAy6D,GAAA,+BAIAyc,EAAA1+E,UAAA2gF,GAAA,SAAAN,GACA,GAAA74E,GAAAtC,IACA,iBAAA8G,GACA,GAAAxE,EAAAy4E,KACAI,IAAA74E,EAAAu5E,GACAv5E,EAAAk6E,GAAA11E,GAEAq0E,IAAA74E,EAAAw5E,GACAx5E,EAAAm6E,GAAA31E,GAGAxE,EAAAy6D,GAAA,gCASAyc,EAAA1+E,UAAAk7E,YAAA,SAAA0G,GAEA,GAAAvG,IAAmB//D,EAAA,IAAAnZ,EAAAy/E,EACnB18E,MAAA28E,GAAAxG,IAEAqD,EAAA1+E,UAAA8hF,qBAAA,WACA58E,KAAA47E,KAAA57E,KAAA87E,IAAA97E,KAAA67E,KAAA77E,KAAA87E,KACA97E,KAAA+8D,GAAA,2CAAA/8D,KAAA87E,GAAAe,QACA78E,KAAAq7E,GAAAr7E,KAAA87E,GACA97E,KAAA87E,GAAA,OAIAtC,EAAA1+E,UAAAgiF,GAAA,SAAAC,GACA,GA1JA,KA0JAA,GAAA,CACA,GAAAC,GAAAD,EAAA,CArJA,OAsJAC,EACAh9E,KAAAi9E,KA1JA,MA4JAD,GAEAh9E,KAAA+8D,GAAA,wCACA/8D,KAAA87E,GAAArtE,QAEAzO,KAAA47E,KAAA57E,KAAA87E,IACA97E,KAAA67E,KAAA77E,KAAA87E,IACA97E,KAAAyO,SAjKA,MAoKAuuE,IACAh9E,KAAA+8D,GAAA,0BACA/8D,KAAAk9E,KACAl9E,KAAAi9E,QAIAzD,EAAA1+E,UAAA2hF,GAAA,SAAAU,GACA,GAAAC,GAAAj9B,EAAAuC,WAAA,IAAAy6B,GACA7yE,EAAA61C,EAAAuC,WAAA,IAAAy6B,EACA,SAAAC,EACAp9E,KAAA88E,GAAAxyE,OAEA,SAAA8yE,EAKA,KAAAzhF,OAAA,2BAAAyhF,EAHAp9E,MAAA86E,oBAAAlgF,KAAA0P,KAMAkvE,EAAA1+E,UAAAmiF,GAAA,WACAj9E,KAAAk9E,IAAA,GACAl9E,KAAA+8D,GAAA,oCACA/8D,KAAA+7E,IAAA,EACA/7E,KAAA87E,GAAAK,wBACAn8E,KAAAq9E,OAIAr9E,KAAA+8D,GAAA,8BACA/8D,KAAA87E,GAAAxtD,MAAsClY,EAAA,IAAAnZ,GAAamZ,EAhMnD,IAgMmDnZ,UAGnDu8E,EAAA1+E,UAAAuiF,GAAA,WAEAr9E,KAAA87E,GAAA5tC,QAEAluC,KAAA+8D,GAAA,mCACA/8D,KAAA87E,GAAAxtD,MAAkClY,EAAA,IAAAnZ,GAAamZ,EA1M/C,IA0M+CnZ,QAG/C+C,KAAA+8D,GAAA,kCACA/8D,KAAAq7E,GAAA/sD,MAAyBlY,EAAA,IAAAnZ,GAAamZ,EA7MtC,IA6MsCnZ,QACtC+C,KAAA47E,GAAA57E,KAAA87E,GACA97E,KAAA48E,wBAEApD,EAAA1+E,UAAA0hF,GAAA,SAAAW,GAEA,GAAAC,GAAAj9B,EAAAuC,WAAA,IAAAy6B,GACA7yE,EAAA61C,EAAAuC,WAAA,IAAAy6B,EACA,MAAAC,EACAp9E,KAAAs9E,GAAAhzE,GAEA,KAAA8yE,GACAp9E,KAAA43E,GAAAttE,IAGAkvE,EAAA1+E,UAAA88E,GAAA,SAAA9wE,GACA9G,KAAAu9E,KAEAv9E,KAAA26E,GAAA7zE,IAEA0yE,EAAA1+E,UAAAyiF,GAAA,WACAv9E,KAAA+7E,MACA/7E,KAAAu7E,IACA,IACAv7E,KAAA+8D,GAAA,kCACA/8D,KAAA+7E,IAAA,EACA/7E,KAAAq7E,GAAAc,0BAIA3C,EAAA1+E,UAAAwiF,GAAA,SAAAP,GACA,GAAAC,GAAA78B,EAAAuC,WAnPA,IAmPAq6B,EACA,IAnPA,KAmPAA,GAAA,CACA,GAAAtG,GAAAsG,EAAA,CACA,IA7OA,MA6OAC,EACAh9E,KAAAw9E,GAAA/G,OAEA,IAlPA,MAkPAuG,EAAA,CACAh9E,KAAA+8D,GAAA,qCACA/8D,KAAA67E,GAAA77E,KAAA87E,EACA,QAAA9hF,GAAA,EAA+BA,EAAAgG,KAAA86E,oBAAApgF,SAAqCV,EACpEgG,KAAA43E,GAAA53E,KAAA86E,oBAAA9gF,GAEAgG,MAAA86E,uBACA96E,KAAA48E,2BA9PA,MAgQAI,EAGAh9E,KAAAy9E,GAAAhH,GAlQA,MAoQAuG,EAEAh9E,KAAA09E,GAAAjH,GArQA,MAuQAuG,EACA78B,EAAAniD,MAAA,iBAAAy4E,GAvQA,MAyQAuG,GACAh9E,KAAA+8D,GAAA,wBACA/8D,KAAAu9E,KACAv9E,KAAA29E,MAGAx9B,EAAAniD,MAAA,mCAAAg/E,KASAxD,EAAA1+E,UAAA0iF,GAAA,SAAAI,GACA,GAAAjiB,GAAAiiB,EAAAC,GACAn4E,EAAAk4E,EAAAxiE,EACAmD,EAAAq/D,EAAAv+D,CACArf,MAAAu7B,UAAAqiD,EAAA3iF,EACA+E,KAAAs4D,EAAAkR,WAAAjrD,GAEA,GAAAve,KAAA+6E,KACA/6E,KAAAq7E,GAAAntC,QACAluC,KAAA89E,GAAA99E,KAAAq7E,GAAA1f,GACAsN,EAAA/U,mBAAAxuD,GACAy6C,EAAApyC,KAAA,sCAGA/N,KAAA+9E,OAGAvE,EAAA1+E,UAAAijF,GAAA,WACA,GAAA5C,GAAAn7E,KAAAg7E,GAAAgD,kBACA7C,IACAn7E,KAAAi+E,GAAA9C,IAGA3B,EAAA1+E,UAAAmjF,GAAA,SAAA9C,GACA,GAAA74E,GAAAtC,IACAA,MAAA87E,GAAA,GAAAX,GAAAn7E,KAAAs7E,KAAAt7E,KAAAs4D,EAAAt4D,KAAAu7B,WAGAv7B,KAAAk9E,GACA/B,EAAA,+BACA,IAAA+C,GAAAl+E,KAAAy7E,GAAAz7E,KAAA87E,IACAlZ,EAAA5iE,KAAA27E,GAAA37E,KAAA87E,GACA97E,MAAA87E,GAAA39D,KAAA+/D,EAAAtb,GAEAziB,EAAAuE,sBAAA,WACApiD,EAAAw5E,KACAx5E,EAAAy6D,GAAA,gCACAz6D,EAAAw5E,GAAArtE,UAES6B,KAAA8D,MA7UT,OA+UAolE,EAAA1+E,UAAA4iF,GAAA,SAAAn/D,GACAve,KAAA+8D,GAAA,qCAAAx+C,GACAve,KAAAs4D,EAAAkR,WAAAjrD,GAGA,IAAAve,KAAA+6E,GACA/6E,KAAAyO,SAIAzO,KAAAm+E,KACAn+E,KAAAk7E,OAGA1B,EAAA1+E,UAAAgjF,GAAA,SAAA3C,EAAAxf,GACA,GAAAr5D,GAAAtC,IACAA,MAAA+8D,GAAA,oCACA/8D,KAAAq7E,GAAAF,EACAn7E,KAAA+6E,GAAA,EACA/6E,KAAAi4E,KACAj4E,KAAAi4E,GAAAtc,EAAA37D,KAAAu7B,WACAv7B,KAAAi4E,GAAA,MAIA,IAAAj4E,KAAAu7E,IACAv7E,KAAA+8D,GAAA,kCACA/8D,KAAA+7E,IAAA,GAGA57B,EAAAuE,sBAAA,WACApiD,EAAAq7E,MACartE,KAAA8D,MA5Wb,OA+WAolE,EAAA1+E,UAAA6iF,GAAA,WAEA39E,KAAA+7E,IAAA,IAAA/7E,KAAA+6E,KACA/6E,KAAA+8D,GAAA,4BACA/8D,KAAA28E,IAA4BvmE,EAAA,IAAAnZ,GAAamZ,EArWzC,IAqWyCnZ,UAGzCu8E,EAAA1+E,UAAAyhF,GAAA,WACA,GAAApB,GAAAn7E,KAAA87E,EACA97E,MAAA87E,GAAA,KACA97E,KAAA47E,KAAAT,GAAAn7E,KAAA67E,KAAAV,GAEAn7E,KAAAyO,SASA+qE,EAAA1+E,UAAAwhF,GAAA,SAAAD,GACAr8E,KAAAq7E,GAAA,KAGAgB,GAAA,IAAAr8E,KAAA+6E,GASA,IAAA/6E,KAAA+6E,IACA/6E,KAAA+8D,GAAA,8BATA/8D,KAAA+8D,GAAA,+BAEA/8D,KAAAs4D,EAAA+Q,oBACA5oB,EAAAwT,kBAAA3S,OAAA,QAAAthD,KAAAs4D,EAAA/5C,MAEAve,KAAAs4D,EAAA6Q,aAAAnpE,KAAAs4D,EAAA/5C,OAMAve,KAAAyO,SAOA+qE,EAAA1+E,UAAA2iF,GAAA,SAAApwE,GACArN,KAAA+8D,GAAA,0DACA/8D,KAAA46E,KACA56E,KAAA46E,GAAAvtE,GACArN,KAAA46E,GAAA,MAIA56E,KAAA84D,EAAA,KACA94D,KAAAyO,SAEA+qE,EAAA1+E,UAAA6hF,GAAA,SAAAryE,GACA,OAAAtK,KAAA+6E,GACA,kCAGA/6E,MAAA47E,GAAAttD,KAAAhkB,IAMAkvE,EAAA1+E,UAAA2T,MAAA,WACA,IAAAzO,KAAA+6E,KACA/6E,KAAA+8D,GAAA,gCACA/8D,KAAA+6E,GAAA,EACA/6E,KAAAm+E,KACAn+E,KAAA84D,IACA94D,KAAA84D,IACA94D,KAAA84D,EAAA,QAQA0gB,EAAA1+E,UAAAqjF,GAAA,WACAn+E,KAAA+8D,GAAA,iCACA/8D,KAAAq7E,KACAr7E,KAAAq7E,GAAA5sE,QACAzO,KAAAq7E,GAAA,MAEAr7E,KAAA87E,KACA97E,KAAA87E,GAAArtE,QACAzO,KAAA87E,GAAA,MAEA97E,KAAAi8E,KACAzgF,aAAAwE,KAAAi8E,IACAj8E,KAAAi8E,GAAA,OAGAzC,IAEA1/E,GAAA0/E,c5C2kRM,SAAUz/E,EAAQD,EAASH,GAEjC,Y6CviSAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAy2E,EAAAz2E,EAAA,IACAm+D,EAAAn+D,EAAA,IACAykF,EAAAzkF,EAAA,KACAsvE,EAAAtvE,EAAA,IACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,EAEAG,GAAAukF,8BAAA,QACAvkF,EAAAwkF,gCAAA,QACAxkF,EAAAykF,kCAAA,aACAzkF,EAAA0kF,+BAAA,UACA1kF,EAAA2kF,2BAAA,KACA3kF,EAAA4kF,2BAAA,KACA5kF,EAAA6kF,+BAAA,MACA7kF,EAAA8kF,oCAAA,KACA9kF,EAAA+kF,oCAAA,MACA/kF,EAAAglF,qCAAA,KACAhlF,EAAAilF,6BAAA,IACAjlF,EAAAklF,sCAAA,UACAllF,EAAAmlF,8CAAA,QAIA,IAuBAC,GAAA,WASA,QAAAA,GAAArC,EAAAxsB,EAAA8uB,EAAApK,GACA/0E,KAAA68E,SACA78E,KAAAqwD,WACArwD,KAAAm/E,qBACAn/E,KAAA+0E,gBACA/0E,KAAAo8E,UAAA,EACAp8E,KAAAk8E,cAAA,EACAl8E,KAAAo/E,IAAA,EACAp/E,KAAA+8D,GAAA5c,EAAAoB,WAAAs7B,GACA78E,KAAAm5D,EAAArB,EAAAsB,aAAAC,cAAAhJ,GACArwD,KAAAq/E,MAAA,SAAAzqE,GACA,MAAAy7C,GAAAqZ,cAAAT,EAAAvU,aAAA9/C,IAsOA,MA9NAsqE,GAAApkF,UAAAqjB,KAAA,SAAA+/D,EAAAtb,GACA,GAAAtgE,GAAAtC,IACAA,MAAAs/E,cAAA,EACAt/E,KAAA84D,EAAA8J,EACA5iE,KAAAu/E,gBAAA,GAAAnB,GAAAoB,eAAAtB,GACAl+E,KAAAy/E,IAAA,EACAz/E,KAAA0/E,GAAA7iF,WAAA,WACAyF,EAAAy6D,GAAA,gCAEAz6D,EAAAq9E,KACAr9E,EAAAo9E,GAAA,MACSpvE,KAAA8D,MA9CT,MAgDA+rC,EAAA6B,oBAAA,WACA,IAAA1/C,EAAAm9E,GAAA,CAGAn9E,EAAAs9E,gBAAA,GAAAC,GAAA,WAEA,OADAhgF,MACAC,EAAA,EAAgCA,EAAAC,UAAArF,OAAuBoF,IACvDD,EAAAC,GAAAC,UAAAD,EAEA,IAAAggF,GAAAjgF,EAAA,GAAAkgF,EAAAlgF,EAAA,GAAAmgF,EAAAngF,EAAA,EAEA,IAFAA,EAAA,GAAAA,EAAA,GACAyC,EAAA29E,GAAApgF,GACAyC,EAAAs9E,gBAOA,GALAt9E,EAAAo9E,KACAlkF,aAAA8G,EAAAo9E,IACAp9E,EAAAo9E,GAAA,MAEAp9E,EAAA88E,IAAA,EACAU,GAAAhmF,EAAAukF,8BACA/7E,EAAA6L,GAAA4xE,EACAz9E,EAAAy6C,SAAAijC,MAEA,IAAAF,IAAAhmF,EAAAwkF,gCAiBA,KAAA3iF,OAAA,kCAAAmkF,EAfAC,IAGAz9E,EAAAs9E,gBAAAM,cAAA,EAGA59E,EAAAi9E,gBAAAY,WAAAJ,EAAA,WACAz9E,EAAAq9E,QAIAr9E,EAAAq9E,OAMa,WAEb,OADA9/E,MACAC,EAAA,EAAgCA,EAAAC,UAAArF,OAAuBoF,IACvDD,EAAAC,GAAAC,UAAAD,EAEA,IAAAsgF,GAAAvgF,EAAA,GAAAyK,EAAAzK,EAAA,EACAyC,GAAA29E,GAAApgF,GACAyC,EAAAi9E,gBAAAc,eAAAD,EAAA91E,IACa,WACbhI,EAAAq9E,MACar9E,EAAA+8E,MAGb,IAAAiB,KACAA,GAAAxmF,EAAAukF,+BAAA,IACAiC,EAAAxmF,EAAA6kF,gCAAAruE,KAAA8D,MAAA,IAAA9D,KAAAC,UACAjO,EAAAs9E,gBAAAW,2BACAD,EAAAxmF,EAAA8kF,qCAAAt8E,EAAAs9E,gBAAAW,0BACAD,EAAArX,EAAA9U,eAAA8U,EAAA/U,iBACA5xD,EAAA68E,qBACAmB,EAAArX,EAAA7U,yBAAA9xD,EAAA68E,oBAEA78E,EAAAyyE,gBACAuL,EAAArX,EAAAzU,oBAAAlyD,EAAAyyE,gBAEA10B,EAAA3tC,aACA,mBAAA2L,WACAA,SAAAmS,OACA,IAAAnS,SAAAmS,KAAA7f,QAAAs4D,EAAA1U,gBACA+rB,EAAArX,EAAA5U,eAAA4U,EAAA3U,UAEA,IAAAksB,GAAAl+E,EAAA+8E,MAAAiB,EACAh+E,GAAAy6D,GAAA,+BAAAyjB,GACAl+E,EAAAs9E,gBAAAa,OAAAD,EAAA,kBAQAtB,EAAApkF,UAAAozC,MAAA,WACAluC,KAAA4/E,gBAAAc,cAAA1gF,KAAAmO,GAAAnO,KAAA+8C,UACA/8C,KAAA2gF,uBAAA3gF,KAAAmO,GAAAnO,KAAA+8C,WAKAmiC,EAAA0B,WAAA,WACA1B,EAAA2B,IAAA,GAKA3B,EAAA4B,cAAA,WACA5B,EAAA6B,IAAA,GAGA7B,EAAA8B,YAAA,WAGA,MAAA9B,GAAA2B,KACA3B,EAAA6B,IACA,mBAAA5kF,WACA,MAAAA,SAAAE,gBACA8jD,EAAAyD,mCACAzD,EAAA0D,sBACAxD,EAAA3tC,aAKAwsE,EAAApkF,UAAAqhF,sBAAA,aAKA+C,EAAApkF,UAAAmmF,GAAA,WACAjhF,KAAAy/E,IAAA,EACAz/E,KAAA4/E,kBACA5/E,KAAA4/E,gBAAAnxE,QACAzO,KAAA4/E,gBAAA,MAGA5/E,KAAAkhF,iBACA/kF,SAAAqnC,KAAAnyB,YAAArR,KAAAkhF,gBACAlhF,KAAAkhF,eAAA,MAEAlhF,KAAA0/E,KACAlkF,aAAAwE,KAAA0/E,IACA1/E,KAAA0/E,GAAA,OAOAR,EAAApkF,UAAA6kF,GAAA,WACA3/E,KAAAy/E,KACAz/E,KAAA+8D,GAAA,8BACA/8D,KAAAihF,KACAjhF,KAAA84D,IACA94D,KAAA84D,EAAA94D,KAAAo/E,IACAp/E,KAAA84D,EAAA,QAQAomB,EAAApkF,UAAA2T,MAAA,WACAzO,KAAAy/E,KACAz/E,KAAA+8D,GAAA,6BACA/8D,KAAAihF,OAQA/B,EAAApkF,UAAAwzB,KAAA,SAAAhkB,GACA,GAAA62E,GAAA/gC,EAAA/1C,UAAAC,EACAtK,MAAAo8E,WAAA+E,EAAAzmF,OACAsF,KAAAm5D,EAAA+G,iBAAA,aAAAihB,EAAAzmF,OAQA,QANA0mF,GAAAhhC,EAAAr2C,aAAAo3E,GAGAr+B,EAAA3C,EAAAyC,kBAAAw+B,EAzOAC,MA4OArnF,EAAA,EAAuBA,EAAA8oD,EAAApoD,OAAqBV,IAC5CgG,KAAA4/E,gBAAA0B,eAAAthF,KAAAs/E,cAAAx8B,EAAApoD,OAAAooD,EAAA9oD,IACAgG,KAAAs/E,iBAUAJ,EAAApkF,UAAA6lF,uBAAA,SAAAxyE,EAAAozE,GACA,IAAAlhC,EAAA3tC,YAAA,CAEA1S,KAAAkhF,eAAA/kF,SAAAE,cAAA,SACA,IAAAikF,KACAA,GAAAxmF,EAAAmlF,+CAAA,IACAqB,EAAAxmF,EAAA2kF,4BAAAtwE,EACAmyE,EAAAxmF,EAAA4kF,4BAAA6C,EACAvhF,KAAAkhF,eAAAvkF,IAAAqD,KAAAq/E,MAAAiB,GACAtgF,KAAAkhF,eAAAljE,MAAAC,QAAA,OACA9hB,SAAAqnC,KAAA1mC,YAAAkD,KAAAkhF,kBAOAhC,EAAApkF,UAAAmlF,GAAA,SAAApgF,GAEA,GAAAq8E,GAAA97B,EAAA/1C,UAAAxK,GAAAnF,MACAsF,MAAAk8E,iBACAl8E,KAAAm5D,EAAA+G,iBAAA,iBAAAgc,IAEAgD,IAEAplF,GAAAolF,uBAKA,IAAAW,GAAA,WAOA,QAAAA,GAAA2B,EAAAC,EAAA7e,EAAAyc,GAoBA,GAnBAr/E,KAAA4iE,eACA5iE,KAAAq/E,QAMAr/E,KAAA0hF,oBAAA,GAAAtR,GAAAC,WAEArwE,KAAA2hF,eAMA3hF,KAAA4hF,cAAAtxE,KAAA8D,MAAA,IAAA9D,KAAAC,UAGAvQ,KAAAkgF,cAAA,EACA7/B,EAAA3tC,YAkCA1S,KAAAwhF,YACAxhF,KAAAyhF,kBAnCA,CAKAzhF,KAAAugF,yBAAApgC,EAAAQ,gBACAnnD,OAAAM,EAAAykF,kCAAAv+E,KAAAugF,0BAAAiB,EACAhoF,OAAAM,EAAA0kF,+BAAAx+E,KAAAugF,0BAAAkB,EAEAzhF,KAAA6hF,SAAAhC,EAAAiC,IAEA,IAAAzmF,GAAA,EAGA2E,MAAA6hF,SAAAllF,KACA,gBAAAqD,KAAA6hF,SAAAllF,IAAAmnB,OAAA,QAEAzoB,EAAA,4BADAc,SAAAusE,OACA,eAEA,IAAAqZ,GAAA,eAAA1mF,EAAA,gBACA,KACA2E,KAAA6hF,SAAAjyE,IAAAuO,OACAne,KAAA6hF,SAAAjyE,IAAAwO,MAAA2jE,GACA/hF,KAAA6hF,SAAAjyE,IAAAnB,QAEA,MAAAtT,GACAglD,EAAAn9C,IAAA,2BACA7H,EAAA8X,OACAktC,EAAAn9C,IAAA7H,EAAA8X,OAEAktC,EAAAn9C,IAAA7H,KAsPA,MAxOA0kF,GAAAiC,GAAA,WACA,GAAAE,GAAA7lF,SAAAE,cAAA,SAGA,IAFA2lF,EAAAhkE,MAAAC,QAAA,QAEA9hB,SAAAqnC,KAuBA,wGAtBArnC,UAAAqnC,KAAA1mC,YAAAklF,EACA,KAIAA,EAAA9jE,cAAA/hB,UAGAgkD,EAAAn9C,IAAA,iCAGA,MAAA7H,GACA,GAAAutE,GAAAvsE,SAAAusE,MACAsZ,GAAArlF,IACA,gEACA+rE,EACA,2BAkBA,MATAsZ,GAAAC,gBACAD,EAAApyE,IAAAoyE,EAAAC,gBAEAD,EAAA9jE,cACA8jE,EAAApyE,IAAAoyE,EAAA9jE,cAAA/hB,SAEA6lF,EAAA7lF,WACA6lF,EAAApyE,IAAAoyE,EAAA7lF,UAEA6lF,GAKAnC,EAAA/kF,UAAA2T,MAAA,WACA,GAAAnM,GAAAtC,IAeA,IAbAA,KAAAkiF,OAAA,EACAliF,KAAA6hF,WAIA7hF,KAAA6hF,SAAAjyE,IAAA4zB,KAAA2+C,UAAA,GACAtlF,WAAA,WACA,OAAAyF,EAAAu/E,WACA1lF,SAAAqnC,KAAAnyB,YAAA/O,EAAAu/E,UACAv/E,EAAAu/E,SAAA,OAEavxE,KAAA8D,MAAA,KAEbisC,EAAA3tC,aAAA1S,KAAAoiF,KAAA,CACA,GAAA9B,KACAA,GAAAxmF,EAAAklF,uCAAA,IACAsB,EAAAxmF,EAAA2kF,4BAAAz+E,KAAAoiF,KACA9B,EAAAxmF,EAAA4kF,4BAAA1+E,KAAAqiF,IACA,IAAAC,GAAAtiF,KAAAq/E,MAAAiB,EACAT,GAAA0C,gBAAAD,GAGA,GAAA1f,GAAA5iE,KAAA4iE,YACAA,KACA5iE,KAAA4iE,aAAA,KACAA,MAQAid,EAAA/kF,UAAA4lF,cAAA,SAAAvyE,EAAAozE,GAKA,IAJAvhF,KAAAoiF,KAAAj0E,EACAnO,KAAAqiF,KAAAd,EACAvhF,KAAAkiF,OAAA,EAEAliF,KAAAwiF,SASA3C,EAAA/kF,UAAA0nF,GAAA,WAIA,GAAAxiF,KAAAkiF,OACAliF,KAAAkgF,cACAlgF,KAAA0hF,oBAAAr2B,SAAArrD,KAAA2hF,YAAAjnF,OAAA,QAEAsF,KAAA4hF,eACA,IAAAtB,KACAA,GAAAxmF,EAAA2kF,4BAAAz+E,KAAAoiF,KACA9B,EAAAxmF,EAAA4kF,4BAAA1+E,KAAAqiF,KACA/B,EAAAxmF,EAAA6kF,gCAAA3+E,KAAA4hF,aAKA,KAJA,GAAAU,GAAAtiF,KAAAq/E,MAAAiB,GAEAmC,EAAA,GACAzoF,EAAA,EACAgG,KAAA2hF,YAAAjnF,OAAA,GAEAsF,KAAA2hF,YAAA,GACA1kF,EAAAvC,OAhdA,GAgdA+nF,EAAA/nF,QAjdA,MA8cA,CAMA,GAAAgoF,GAAA1iF,KAAA2hF,YAAA3mF,OACAynF,GACAA,EACA,IACA3oF,EAAA+kF,oCACA7kF,EACA,IACA0oF,EAAAC,IACA,IACA7oF,EAAAglF,qCACA9kF,EACA,IACA0oF,EAAA7E,GACA,IACA/jF,EAAAilF,6BACA/kF,EACA,IACA0oF,EAAAzlF,EACAjD,IAQA,MAFAsoF,IAAAG,EACAziF,KAAA4iF,GAAAN,EAAAtiF,KAAA4hF,gBACA,EAGA,UASA/B,EAAA/kF,UAAAwmF,eAAA,SAAAuB,EAAAC,EAAAx4E,GAEAtK,KAAA2hF,YAAA/mF,MAA+B+nF,IAAAE,EAAAhF,GAAAiF,EAAA7lF,EAAAqN,IAG/BtK,KAAAkiF,OACAliF,KAAAwiF,MASA3C,EAAA/kF,UAAA8nF,GAAA,SAAAn/C,EAAAs/C,GACA,GAAAzgF,GAAAtC,IAEAA,MAAA0hF,oBAAA3iC,IAAAgkC,EAAA,EACA,IAAAC,GAAA,WACA1gF,EAAAo/E,oBAAApgC,OAAAyhC,GACAzgF,EAAAkgF,MAIAS,EAAApmF,WAAAmmF,EAAA1yE,KAAA8D,MAzgBA,OA0gBA8uE,EAAA,WAEA1nF,aAAAynF,GAEAD,IAEAhjF,MAAAygF,OAAAh9C,EAAAy/C,IAOArD,EAAA/kF,UAAA2lF,OAAA,SAAAh9C,EAAA0/C,GACA,GAAA7gF,GAAAtC,IACAqgD,GAAA3tC,YACA1S,KAAAojF,eAAA3/C,EAAA0/C,GAGAtmF,WAAA,WACA,IAEA,IAAAyF,EAAA49E,aACA,MACA,IAAAmD,GAAA/gF,EAAAu/E,SAAAjyE,IAAAvT,cAAA,SACAgnF,GAAA/mF,KAAA,kBACA+mF,EAAA7mF,OAAA,EACA6mF,EAAA1mF,IAAA8mC,EACA4/C,EAAA9nF,OAAA8nF,EAAAjyE,mBAAA,WACA,GAAAkyE,GAAAD,EAAAp0D,UACAq0D,IAAA,WAAAA,GAAA,aAAAA,IACAD,EAAA9nF,OAAA8nF,EAAAjyE,mBAAA,KACAiyE,EAAA5kE,YACA4kE,EAAA5kE,WAAApN,YAAAgyE,GAEAF,MAGAE,EAAA/nF,QAAA,WACA6kD,EAAAn9C,IAAA,oCAAAygC,GACAnhC,EAAA49E,cAAA,EACA59E,EAAAmM,SAEAnM,EAAAu/E,SAAAjyE,IAAA4zB,KAAA1mC,YAAAumF,GAEA,MAAAloF,MAGamV,KAAA8D,MAAA,KAGbyrE,IAEA/lF,GAAA+lF,8B7C+jSM,SAAU9lF,EAAQD,EAASH,GAEjC,cAC4B,SAASwL,G8CjpTrC,QAAAo+E,GAAAC,GACAC,EAAAD,EApBA3oF,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA01E,GAAAj6E,EAAA,GACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACAm+D,EAAAn+D,EAAA,IACAsvE,EAAAtvE,EAAA,IACA0mD,EAAA1mD,EAAA,GACA8mD,EAAA9mD,EAAA,IACA2mD,EAAA3mD,EAAA,GACA4mD,EAAA5mD,EAAA,GAGA8pF,EAAA,IACA,oBAAAC,cACAD,EAAAC,aAEA,mBAAAC,aACAF,EAAAE,WAKA7pF,EAAAypF,kBAMA,IAAAK,GAAA,WAQA,QAAAA,GAAA/G,EAAAxsB,EAAA8uB,EAAApK,GACA/0E,KAAA68E,SACA78E,KAAA6jF,eAAA,KACA7jF,KAAA8jF,OAAA,KACA9jF,KAAA+jF,YAAA,EACA/jF,KAAAo8E,UAAA,EACAp8E,KAAAk8E,cAAA,EACAl8E,KAAA+8D,GAAA3c,EAAAmB,WAAAvhD,KAAA68E,QACA78E,KAAAm5D,EAAArB,EAAAsB,aAAAC,cAAAhJ,GACArwD,KAAA2pE,QAAAia,EAAAI,GAAA3zB,EAAA8uB,EAAApK,GA6RA,MAnRA6O,GAAAI,GAAA,SAAA3zB,EAAA8uB,EAAApK,GACA,GAAAuL,KAcA,OAbAA,GAAArX,EAAA9U,eAAA8U,EAAA/U,kBACA3T,EAAA7tC,aACA,mBAAA2L,WACAA,SAAAmS,OACA,IAAAnS,SAAAmS,KAAA7f,QAAAs4D,EAAA1U,gBACA+rB,EAAArX,EAAA5U,eAAA4U,EAAA3U,WAEA6qB,IACAmB,EAAArX,EAAA7U,yBAAA+qB,GAEApK,IACAuL,EAAArX,EAAAzU,oBAAAugB,GAEA1kB,EAAAqZ,cAAAT,EAAAxU,UAAA6rB,IAOAsD,EAAA9oF,UAAAqjB,KAAA,SAAA+/D,EAAAtb,GACA,GAAAtgE,GAAAtC,IACAA,MAAA4iE,eACA5iE,KAAAk+E,YACAl+E,KAAA+8D,GAAA,2BAAA/8D,KAAA2pE,SACA3pE,KAAAo/E,IAAA,EAEA3+B,EAAAwT,kBAAAl1C,IAAA,gCACA,KACA,GAAAwhC,EAAA7tC,YAAA,CACA,GAAAuxE,GAAA5jC,EAAAz8C,UAAAE,WAAA,mBAEAlF,GACAyuB,SACA62D,aAAA,YAAAjb,EAAA/U,iBAAA,IAAA0f,EAAAloE,QAAA9K,YAAA,IAAAuE,EAAAg/E,SAAA,IAAAF,IAIAz+E,EAAAL,EAAA,IACA6R,EAAA,GAAAhX,KAAA2pE,QAAAh5D,QAAA,UACAnL,EAAA,aAAAA,EAAA,YACAA,EAAA,YAAAA,EAAA,UACAwR,KACApY,EAAA,OAAwC4f,OAAAxH,IAExChX,KAAAokF,OAAA,GAAAX,GAAAzjF,KAAA2pE,WAAA/qE,OAGAoB,MAAAokF,OAAA,GAAAX,GAAAzjF,KAAA2pE,SAGA,MAAAxuE,GACA6E,KAAA+8D,GAAA,iCACA,IAAA/+D,GAAA7C,EAAA2L,SAAA3L,EAAAmP,IAKA,OAJAtM,IACAgC,KAAA+8D,GAAA/+D,OAEAgC,MAAA2/E,KAGA3/E,KAAAokF,OAAAC,OAAA,WACA/hF,EAAAy6D,GAAA,wBACAz6D,EAAA88E,IAAA,GAEAp/E,KAAAokF,OAAAE,QAAA,WACAhiF,EAAAy6D,GAAA,0CACAz6D,EAAA8hF,OAAA,KACA9hF,EAAAq9E,MAEA3/E,KAAAokF,OAAAh0E,UAAA,SAAArT,GACAuF,EAAAiiF,oBAAAxnF,IAEAiD,KAAAokF,OAAA9oF,QAAA,SAAAH,GACAmH,EAAAy6D,GAAA,wCACA,IAAA/+D,GAAA7C,EAAA2L,SAAA3L,EAAAmP,IACAtM,IACAsE,EAAAy6D,GAAA/+D,GAEAsE,EAAAq9E,OAMAiE,EAAA9oF,UAAAozC,MAAA,aACA01C,EAAA9C,cAAA,WACA8C,EAAA7C,IAAA,GAEA6C,EAAA5C,YAAA,WACA,GAAAwD,IAAA,CACA,uBAAAlyE,sBAAA2gB,UAAA,CACA,GAAAwxD,GAAA,iCACAC,EAAApyE,UAAA2gB,UAAA3f,MAAAmxE,EACAC,MAAAhqF,OAAA,GACA26C,WAAAqvC,EAAA,UACAF,GAAA,GAIA,OAAAA,GACA,OAAAf,IACAG,EAAA7C,IAMA6C,EAAAe,iBAAA,WAGA,MAAAlkC,GAAAwT,kBAAA2wB,oBACA,IAAAnkC,EAAAwT,kBAAAz2D,IAAA,+BAEAomF,EAAA9oF,UAAAqhF,sBAAA,WACA17B,EAAAwT,kBAAA3S,OAAA,+BAEAsiC,EAAA9oF,UAAA+pF,GAAA,SAAAv6E,GAEA,GADAtK,KAAA8jF,OAAAlpF,KAAA0P,GACAtK,KAAA8jF,OAAAppF,QAAAsF,KAAA+jF,YAAA,CACA,GAAAe,GAAA9kF,KAAA8jF,OAAA36E,KAAA,GACAnJ,MAAA8jF,OAAA,IACA,IAAAiB,GAAAzkC,EAAAp2C,SAAA46E,EAEA9kF,MAAAk+E,UAAA6G,KAOAnB,EAAA9oF,UAAAkqF,GAAA,SAAAC,GACAjlF,KAAA+jF,YAAAkB,EACAjlF,KAAA8jF,WAQAF,EAAA9oF,UAAAoqF,GAAA,SAAA56E,GAIA,GAHA61C,EAAAv5C,OAAA,OAAA5G,KAAA8jF,OAAA,kCAGAx5E,EAAA5P,QAAA,GACA,GAAAuqF,IAAA36E,CACA,KAAAqZ,MAAAshE,GAEA,MADAjlF,MAAAglF,GAAAC,GACA,KAIA,MADAjlF,MAAAglF,GAAA,GACA16E,GAMAs5E,EAAA9oF,UAAAypF,oBAAA,SAAAY,GACA,UAAAnlF,KAAAokF,OAAA,CAEA,GAAA95E,GAAA66E,EAAA,IAIA,IAHAnlF,KAAAk8E,eAAA5xE,EAAA5P,OACAsF,KAAAm5D,EAAA+G,iBAAA,iBAAA51D,EAAA5P,QACAsF,KAAAolF,iBACA,OAAAplF,KAAA8jF,OAEA9jF,KAAA6kF,GAAAv6E,OAEA,CAEA,GAAA+6E,GAAArlF,KAAAklF,GAAA56E,EACA,QAAA+6E,GACArlF,KAAA6kF,GAAAQ,MAQAzB,EAAA9oF,UAAAwzB,KAAA,SAAAhkB,GACAtK,KAAAolF,gBACA,IAAAjE,GAAA7gC,EAAAj2C,UAAAC,EACAtK,MAAAo8E,WAAA+E,EAAAzmF,OACAsF,KAAAm5D,EAAA+G,iBAAA,aAAAihB,EAAAzmF,OAGA,IAAAooD,GAAA1C,EAAAwC,kBAAAu+B,EA3OA,MA6OAr+B,GAAApoD,OAAA,GACAsF,KAAAslF,GAAAxiC,EAAApoD,OAAA4M,GAGA,QAAAtN,GAAA,EAAuBA,EAAA8oD,EAAApoD,OAAqBV,IAC5CgG,KAAAslF,GAAAxiC,EAAA9oD,KAGA4pF,EAAA9oF,UAAAmmF,GAAA,WACAjhF,KAAAy/E,IAAA,EACAz/E,KAAA6jF,iBACAr1E,cAAAxO,KAAA6jF,gBACA7jF,KAAA6jF,eAAA,MAEA7jF,KAAAokF,SACApkF,KAAAokF,OAAA31E,QACAzO,KAAAokF,OAAA,OAGAR,EAAA9oF,UAAA6kF,GAAA,WACA3/E,KAAAy/E,KACAz/E,KAAA+8D,GAAA,+BACA/8D,KAAAihF,KAEAjhF,KAAA4iE,eACA5iE,KAAA4iE,aAAA5iE,KAAAo/E,IACAp/E,KAAA4iE,aAAA,QAQAghB,EAAA9oF,UAAA2T,MAAA,WACAzO,KAAAy/E,KACAz/E,KAAA+8D,GAAA,6BACA/8D,KAAAihF,OAOA2C,EAAA9oF,UAAAsqF,eAAA,WACA,GAAA9iF,GAAAtC,IACAwO,eAAAxO,KAAA6jF,gBACA7jF,KAAA6jF,eAAAt1E,YAAA,WAEAjM,EAAA8hF,QACA9hF,EAAAgjF,GAAA,KAEAhjF,EAAA8iF,kBACS90E,KAAA8D,MAjST,QAySAwvE,EAAA9oF,UAAAwqF,GAAA,SAAAr+E,GAIA,IACAjH,KAAAokF,OAAA91D,KAAArnB,GAEA,MAAA9L,GACA6E,KAAA+8D,GAAA,0CAAA5hE,EAAA2L,SAAA3L,EAAAmP,KAAA,uBACAzN,WAAAmD,KAAA2/E,GAAAz/E,KAAAF,MAAA,KAOA4jF,EAAA2B,6BAAA,EAKA3B,EAAA4B,eAAA,IACA5B,IAEA9pF,GAAA8pF,wB9CwrT6B1pF,KAAKJ,EAASH,EAAoB,MAIzD,SAAUI,EAAQD,EAASH,GAEjC,Y+C1gUAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAO9C,IAAA+7E,GAAA,WACA,QAAAA,MA0CA,MAlCAA,GAAAn/E,UAAAgkD,IAAA,SAAAwG,EAAAh7C,EAAAowD,EAAA9O,KAOAquB,EAAAn/E,UAAAojE,MAAA,SAAA5Y,EAAAh7C,EAAAowD,EAAA9O,KAKAquB,EAAAn/E,UAAAg/D,iBAAA,SAAApmD,KAMAumE,EAAAn/E,UAAA6jE,gBAAA,SAAArZ,EAAAh7C,EAAAowD,KAMAuf,EAAAn/E,UAAAikE,kBAAA,SAAAzZ,EAAAh7C,EAAAowD,KAKAuf,EAAAn/E,UAAA0jE,mBAAA,SAAAlZ,EAAAoV,KAIAuf,EAAAn/E,UAAA68E,YAAA,SAAAnY,KACAya,IAEAngF,GAAAmgF,iB/CkiUM,SAAUlgF,EAAQD,EAASH,GAEjC,YgDxlUAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAunF,GAAA9rF,EAAA,IACAwvD,EAAAxvD,EAAA,GACA8tD,EAAA9tD,EAAA,GACA+4D,EAAA/4D,EAAA,GAOA+rF,EAAA,WAIA,QAAAA,GAAA9wE,GACA5U,KAAA2lF,GAAA,GAAAF,GAAA/f,cAAA9wD,EAAAsxD,YACAlmE,KAAAmjE,GAAAvuD,EAAAsxD,WACAlmE,KAAA4lF,GAAAF,EAAAG,GAAAjxE,GACA5U,KAAA8lF,GAAAJ,EAAAK,GAAAnxE,GAuGA,MAlGA8wE,GAAA5qF,UAAAkrF,aAAA,WACA,MAAAhmF,MAAA4lF,IAKAF,EAAA5qF,UAAAmrF,WAAA,WACA,MAAAjmF,MAAA8lF,IAMAJ,EAAA5qF,UAAAorF,QAAA,SAAApqD,GACA,MAAA97B,MAAAmjE,GAAAvb,QAAA5nD,KAAAgmF,eAAAlqD,IAAA,GACA97B,KAAAmjE,GAAAvb,QAAA9rB,EAAA97B,KAAAimF,eAAA,GAKAP,EAAA5qF,UAAAowD,YAAA,SAAAkR,EAAA/6D,EAAAmjE,EAAAnI,EAAA3rD,EAAAi1D,GAIA,MAHA3lE,MAAAkmF,QAAA,GAAAz+B,GAAAc,UAAAlnD,EAAAmjE,MACAA,EAAA9R,EAAAnJ,aAAAP,YAEAhpD,KAAA2lF,GAAAz6B,YAAAkR,EAAA/6D,EAAAmjE,EAAAnI,EAAA3rD,EAAAi1D,IAKA+f,EAAA5qF,UAAAgrE,eAAA,SAAArU,EAAAsU,EAAAJ,GACAI,EAAA9b,eAEA8b,EAAArT,EAAAnJ,aAAAP,WAEA,IAAAiqB,GAAAlN,EAAAtY,UAAAztD,KAAAmjE,GAEA8P,KAAA/oB,eAAAwI,EAAAnJ,aAAAP,WACA,IAAAvvD,GAAAuG,IAMA,OALA+lE,GAAAra,aAAAvC,EAAAJ,eAAA,SAAA1nD,EAAAsqD,GACAlyD,EAAAysF,QAAA,GAAAz+B,GAAAc,UAAAlnD,EAAAsqD,MACAsnB,IAAAxoB,qBAAAppD,EAAAqxD,EAAAnJ,aAAAP,eAGAhpD,KAAA2lF,GAAA7f,eAAArU,EAAAwhB,EAAAtN,IAKA+f,EAAA5qF,UAAAovD,eAAA,SAAAuH,EAAA3G,GAEA,MAAA2G,IAKAi0B,EAAA5qF,UAAAkrE,aAAA,WACA,UAKA0f,EAAA5qF,UAAAmrE,iBAAA,WACA,MAAAjmE,MAAA2lF,IAKAD,EAAA5qF,UAAAorE,SAAA,WACA,MAAAlmE,MAAAmjE,IAOAuiB,EAAAG,GAAA,SAAAjxE,GACA,GAAAA,EAAAy1D,WAAA,CACA,GAAA8b,GAAAvxE,EAAA+1D,mBACA,OAAA/1D,GAAAsxD,WAAAvd,SAAA/zC,EAAA01D,qBAAA6b,GAGA,MAAAvxE,GAAAsxD,WAAA5d,WAQAo9B,EAAAK,GAAA,SAAAnxE,GACA,GAAAA,EAAA21D,SAAA,CACA,GAAA6b,GAAAxxE,EAAAg2D,iBACA,OAAAh2D,GAAAsxD,WAAAvd,SAAA/zC,EAAA41D,mBAAA4b,GAGA,MAAAxxE,GAAAsxD,WAAAzd,WAGAi9B,IAEA5rF,GAAA4rF,gBhD+mUQ,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEF,SAAU3rF,EAAQD,EAASH,GiDjwUjCI,EAAAD,QAAAH,EAAA,KjDwxUM,SAAUI,EAAQD,EAASH,GAEjC,YkD1wUA,SAAA0sF,GAAAC,GAEA,GAAAxnF,GAAAwnF,EAAAzlF,SAAA3B,gBAAA,oBAAAV,EAAA+nF,EAAA9iD,GAA+F,MAAA8jC,GAAAZ,YAAAG,cAAAE,gBAAAxoE,EAAAilC,KAG/F69B,UAAAgG,EAAAhG,UACAwB,MAAA7B,EAAA6B,MACAzC,SAAAjI,EAAAiI,SACAnf,cAAAf,EAAAe,cACArgD,WACAmnE,cACAwe,eACK,QACLpmC,GAAA1tC,cACA3Y,EAAAD,QAAAgF,GA9BAjE,OAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA01E,GAAAj6E,EAAA,GACAy+D,EAAAz+D,EAAA,GACAG,GAAAumE,SAAAjI,EAAAiI,QACA,IAAAY,GAAAtnE,EAAA,GACAG,GAAAgpE,MAAA7B,EAAA6B,KACA,IAAAwE,GAAA3tE,EAAA,GACAG,GAAAwnE,UAAAgG,EAAAhG,SACA,IAAAnhB,GAAAxmD,EAAA,EACAG,GAAAonD,cAAAf,EAAAe,aACA,IAAAqmB,GAAA5tE,EAAA,IACAkH,EAAAlH,EAAA,KACA6sF,EAAA7sF,EAAA,KACAymD,EAAAzmD,EAAA,GACAquE,EAAA5P,EAAAiI,SAAA2H,WACAluE,GAAAkuE,cAkBAluE,EAAAusF,mBACAA,EAAAzS,EAAAloE,QACA,IAAA+6E,GAAA9sF,EAAA,GACAG,GAAAmpE,aAAAwjB,EAAAxjB,YACA,IAAAnC,GAAAnnE,EAAA,GACAG,GAAA+oE,aAAA/B,EAAA+B,clDkzUM,SAAU9oE,EAAQD,EAASH,GAEjC,YmD11UAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAWAo6D,EAAA,WAIA,QAAAA,GAAA2yB,GACA1mF,KAAA0mF,KAEA1mF,KAAA2mF,GAAA,YA2CA,MArCA5yB,GAAAj5D,UAAAikB,IAAA,SAAA1d,EAAAnD,GACA,MAAAA,EACA8B,KAAA0mF,GAAAnzD,WAAAvzB,KAAA4mF,GAAAvlF,IAGArB,KAAA0mF,GAAApzD,QAAAtzB,KAAA4mF,GAAAvlF,GAAA8+C,EAAA91C,UAAAnM,KAOA61D,EAAAj5D,UAAA0C,IAAA,SAAA6D,GACA,GAAAwlF,GAAA7mF,KAAA0mF,GAAAv+C,QAAAnoC,KAAA4mF,GAAAvlF,GACA,cAAAwlF,EACA,KAGA1mC,EAAAj2C,SAAA28E,IAMA9yB,EAAAj5D,UAAAwmD,OAAA,SAAAjgD,GACArB,KAAA0mF,GAAAnzD,WAAAvzB,KAAA4mF,GAAAvlF,KAMA0yD,EAAAj5D,UAAA8rF,GAAA,SAAA1pF,GACA,MAAA8C,MAAA2mF,GAAAzpF,GAEA62D,EAAAj5D,UAAAiV,SAAA,WACA,MAAA/P,QAAA0mF,IAEA3yB,IAEAj6D,GAAAi6D,qBnDk3UM,SAAUh6D,EAAQD,EAASH,GAEjC,YoDp7UAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAOAq6D,EAAA,WACA,QAAAA,KACAh0D,KAAA8mF,MACA9mF,KAAA4kF,mBAAA,EAmBA,MAjBA5wB,GAAAl5D,UAAAikB,IAAA,SAAA1d,EAAAnD,GACA,MAAAA,QACA8B,MAAA8mF,GAAAzlF,GAGArB,KAAA8mF,GAAAzlF,GAAAnD,GAGA81D,EAAAl5D,UAAA0C,IAAA,SAAA6D,GACA,MAAA8+C,GAAAzhD,SAAAsB,KAAA8mF,GAAAzlF,GACArB,KAAA8mF,GAAAzlF,GAEA,MAEA2yD,EAAAl5D,UAAAwmD,OAAA,SAAAjgD,SACArB,MAAA8mF,GAAAzlF,IAEA2yD,IAEAl6D,GAAAk6D,iBpD48UM,SAAUj6D,EAAQD,EAASH,GAEjC,YqD9+UAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACA2oE,EAAA,WAQA,QAAAA,GAAAD,EAAAzQ,GACA5xD,KAAAqiE,YACAriE,KAAA4xD,WAQA,MAJA0Q,GAAAxnE,UAAAy9C,OAAA,WAEA,MADA4H,GAAArnC,iBAAA,+BAAA/Y,UAAArF,SACgB2nE,UAAAriE,KAAAqiE,UAAAzQ,SAAA5xD,KAAA4xD,SAAArZ,WAEhB+pB,IAEAxoE,GAAAwoE,qBrDsgVM,SAAUvoE,EAAQD,EAASH,GAEjC,YsD9hVAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,EAeAG,GAAA2oE,WAAA,WAEA,GAAAskB,GAAA,mEAGAC,EAAA,EAKAC,IACA,iBAAA9yE,GACA,GAAA+yE,GAAA/yE,IAAA6yE,CACAA,GAAA7yE,CACA,IAAAna,GACAmtF,EAAA9hF,MAAA,EACA,KAAArL,EAAA,EAAmBA,GAAA,EAAQA,IAC3BmtF,EAAAntF,GAAA+sF,EAAAp9E,OAAAwK,EAAA,IAGAA,EAAA7D,KAAA8D,MAAAD,EAAA,GAEAgsC,GAAAv5C,OAAA,IAAAuN,EAAA,2BACA,IAAAhG,GAAAg5E,EAAAh+E,KAAA,GACA,IAAA+9E,EAKA,CAGA,IAAAltF,EAAA,GAAwBA,GAAA,QAAAitF,EAAAjtF,GAAmCA,IAC3DitF,EAAAjtF,GAAA,CAEAitF,GAAAjtF,SAVA,KAAAA,EAAA,EAAuBA,EAAA,GAAQA,IAC/BitF,EAAAjtF,GAAAsW,KAAA8D,MAAA,GAAA9D,KAAAC,SAWA,KAAAvW,EAAA,EAAmBA,EAAA,GAAQA,IAC3BmU,GAAA44E,EAAAp9E,OAAAs9E,EAAAjtF,GAGA,OADAmmD,GAAAv5C,OAAA,KAAAuH,EAAAzT,OAAA,oCACAyT,OtDwjVM,SAAUpU,EAAQD,EAASH,GAEjC,YuDnnVAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuoF,GAAA9sF,EAAA,IACAytF,EAAAztF,EAAA,IACAwmD,EAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GAIAgyE,EAAA,WAMA,QAAAA,GAAA0b,EAAAC,EAAAC,GACAvnF,KAAAqnF,KACArnF,KAAAsnF,KACAtnF,KAAAunF,KAmEA,MA9DA5b,GAAA7wE,UAAA0sF,WAAA,SAAA13B,GACA,gBAAAA,GAKA6b,EAAA7wE,UAAAi3B,YAAA,SAAA01D,EAAAxjC,GACA,GAAAgI,GAAAhI,EAAAknB,iBAAAjF,UACA,WAAAkhB,GAAAM,UAAA,QAAA1nF,KAAA,GAAAymF,GAAAxjB,aAAAwkB,EAAAj2B,aAAAvN,EAAAyf,SAAAzX,KAKA0f,EAAA7wE,UAAA6sF,eAAA,SAAApN,GACA,GAAAqN,GAAA5nF,KAAAunF,EACA,eAAAhN,EAAAsN,eAAA,CACAznC,EAAAx5C,OAAA5G,KAAAsnF,GAAA,+DACA,IAAAQ,GAAA9nF,KAAAsnF,EACA,mBAEAQ,EAAA5tF,KAAA0tF,EAAArN,EAAAv8E,QAIA,GAAA+pF,GAAA/nF,KAAAqnF,EACA,mBACAU,EAAA7tF,KAAA0tF,EAAArN,EAAA3oB,YAOA+Z,EAAA7wE,UAAAktF,kBAAA,SAAAhqF,EAAA2/C,GACA,MAAA39C,MAAAsnF,GACA,GAAAF,GAAAa,YAAAjoF,KAAAhC,EAAA2/C,GAGA,MAMAguB,EAAA7wE,UAAAorF,QAAA,SAAAz/B,GACA,MAAAA,aAAAklB,MAGAllB,EAAA4gC,KAAArnF,KAAAqnF,IAKA5gC,EAAA4gC,KAAArnF,KAAAqnF,IAAA5gC,EAAA8gC,KAAAvnF,KAAAunF,KAMA5b,EAAA7wE,UAAAotF,eAAA,WACA,cAAAloF,KAAAqnF,IAEA1b,IAEA7xE,GAAA6xE,wBAUA,IAAAC,GAAA,WAMA,QAAAA,GAAAuc,EAAAb,EAAAC,GACAvnF,KAAAmoF,KACAnoF,KAAAsnF,KACAtnF,KAAAunF,KAyFA,MApFA3b,GAAA9wE,UAAA0sF,WAAA,SAAA13B,GACA,GAAAs4B,GAAA,mBAAAt4B,EAAA,cAAAA,CAGA,OAFAs4B,GACA,qBAAAA,EAAA,gBAAAA,EACAjoC,EAAAzhD,SAAAsB,KAAAmoF,GAAAC,IAKAxc,EAAA9wE,UAAAktF,kBAAA,SAAAhqF,EAAA2/C,GACA,MAAA39C,MAAAsnF,GACA,GAAAF,GAAAa,YAAAjoF,KAAAhC,EAAA2/C,GAGA,MAMAiuB,EAAA9wE,UAAAi3B,YAAA,SAAA01D,EAAAxjC,GACA7D,EAAAx5C,OAAA,MAAA6gF,EAAAp9B,UAAA,wCACA,IAAA17C,GAAAs1C,EAAAyf,SAAA/d,MAA0D8hC,EAAA,WAC1Dx7B,EAAAhI,EAAAknB,iBAAAjF,UACA,WAAAkhB,GAAAM,UAAAD,EAAAnrF,KAAA0D,KAAA,GAAAymF,GAAAxjB,aAAAwkB,EAAAj2B,aAAA7iD,EAAAs9C,GAAAw7B,EAAA/1B,WAKAka,EAAA9wE,UAAA6sF,eAAA,SAAApN,GACA,GAAAqN,GAAA5nF,KAAAunF,EACA,eAAAhN,EAAAsN,eAAA,CACAznC,EAAAx5C,OAAA5G,KAAAsnF,GAAA,+DACA,IAAAe,GAAAroF,KAAAsnF,EACA,mBAEAe,EAAAnuF,KAAA0tF,EAAArN,EAAAv8E,QAIA,GAAAsqF,GAAAtoF,KAAAmoF,GAAA5N,EAAAzqB,UACA,mBACAw4B,EAAApuF,KAAA0tF,EAAArN,EAAA3oB,SAAA2oB,EAAA7oB,YAOAka,EAAA9wE,UAAAorF,QAAA,SAAAz/B,GACA,GAAAA,YAAAmlB,GAAA,CACA,IAAA5rE,KAAAmoF,KAAA1hC,EAAA0hC,GACA,QAEA,IAAAnoF,KAAAunF,KAAA9gC,EAAA8gC,GAAA,CACA,GAAAgB,GAAApoC,EAAAp1C,SAAA07C,EAAA0hC,GAEA,IAAAI,IADApoC,EAAAp1C,SAAA/K,KAAAmoF,IACA,CAIA,OAAAI,EAAA,CACA,GAAAC,GAAwDroC,EAAA50C,UAAAk7C,EAAA0hC,IACxDM,EAAuDtoC,EAAA50C,UAAAvL,KAAAmoF,GACvD,SAAAM,IAAAD,GACA/hC,EAAA0hC,GAAAK,IACAxoF,KAAAmoF,GAAAM,IACAhiC,EAAA0hC,GAAAK,KAAAxoF,KAAAmoF,GAAAM,IAIA,MAAAtoC,GAAA10C,MAAAzL,KAAAmoF,GAAA,SAAAr4B,EAAAljD,GAAuF,MAAA65C,GAAA0hC,GAAAr4B,KAAAljD,MAKvF,UAKAg/D,EAAA9wE,UAAAotF,eAAA,WACA,cAAAloF,KAAAmoF,IAEAvc,IAEA9xE,GAAA8xE,0BvD2oVM,SAAU7xE,EAAQD,EAASH,GAEjC,YwDj1VAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAKA+tF,EAAA,WAOA,QAAAA,GAAA53B,EAAAmP,EAAArN,EAAAF,GACA1xD,KAAA8vD,YACA9vD,KAAAi/D,oBACAj/D,KAAA4xD,WACA5xD,KAAA0xD,WAoCA,MA/BAg2B,GAAA5sF,UAAA4tF,QAAA,WACA,GAAA/5E,GAAA3O,KAAA4xD,SAAA8R,QACA,iBAAA1jE,KAAA8vD,UACAnhD,EAAAgvC,KAGAhvC,EAAAgzD,YAAAhkB,MAMA+pC,EAAA5sF,UAAA+sF,aAAA,WACA,MAAA7nF,MAAA8vD,WAKA43B,EAAA5sF,UAAA6sF,eAAA,WACA,MAAA3nF,MAAAi/D,kBAAA0oB,eAAA3nF,OAKA0nF,EAAA5sF,UAAAiV,SAAA,WACA,MAAA/P,MAAA0oF,UACA,IACA1oF,KAAA8vD,UACA,IACA3P,EAAA91C,UAAArK,KAAA4xD,SAAAwR,cAEAskB,IAEA5tF,GAAA4tF,WACA,IAAAO,GAAA,WAMA,QAAAA,GAAAhpB,EAAAjhE,EAAA2/C,GACA39C,KAAAi/D,oBACAj/D,KAAAhC,QACAgC,KAAA29C,OA0BA,MArBAsqC,GAAAntF,UAAA4tF,QAAA,WACA,MAAA1oF,MAAA29C,MAKAsqC,EAAAntF,UAAA+sF,aAAA,WACA,gBAKAI,EAAAntF,UAAA6sF,eAAA,WACA,MAAA3nF,MAAAi/D,kBAAA0oB,eAAA3nF,OAKAioF,EAAAntF,UAAAiV,SAAA,WACA,MAAA/P,MAAA29C,KAAA,WAEAsqC,IAEAnuF,GAAAmuF,exDy2VM,SAAUluF,EAAQD,EAASH,GAEjC,YyDx8VAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACAgvF,EAAAhvF,EAAA,IACA+4D,EAAA/4D,EAAA,GACA0mD,EAAA1mD,EAAA,GACAivF,EAAAjvF,EAAA,IACAkvF,EAAAlvF,EAAA,IACAmvF,EAAAnvF,EAAA,IACA82E,EAAA92E,EAAA,GACAovF,EAAApvF,EAAA,IACA80D,EAAA90D,EAAA,GACA0nE,EAAA1nE,EAAA,IACAqvF,EAAArvF,EAAA,IAuBA2gE,EAAA,WAKA,QAAAA,GAAA2uB,GACAjpF,KAAAipF,KAMAjpF,KAAAkpF,GAAAN,EAAA/kB,cAAAtF,MAMAv+D,KAAAmpF,GAAA,GAAAH,GAAAI,UACAppF,KAAAqpF,MACArpF,KAAAspF,MA0nBA,MA/mBAhvB,GAAAx/D,UAAAsiE,mBAAA,SAAAzf,EAAA4rC,EAAApsB,EAAAmb,GAGA,MADAt4E,MAAAmpF,GAAAK,aAAA7rC,EAAA4rC,EAAApsB,EAAAmb,GACAA,EAIAt4E,KAAAypF,GAAA,GAAAV,GAAArY,UAAAD,EAAAzf,gBAAA9Q,KAAAvC,EAAA4rC,QAWAjvB,EAAAx/D,UAAAmjE,eAAA,SAAAtgB,EAAAue,EAAAiB,GAEAn9D,KAAAmpF,GAAAO,SAAA/rC,EAAAue,EAAAiB,EACA,IAAAwsB,GAAAf,EAAA/kB,cAAAE,WAAA7H,EACA,OAAAl8D,MAAAypF,GAAA,GAAAX,GAAAc,MAAAnZ,EAAAzf,gBAAA9Q,KAAAvC,EAAAgsC,KASArvB,EAAAx/D,UAAA2iE,aAAA,SAAAN,EAAA0sB,OACA,KAAAA,IAAgCA,GAAA,EAChC,IAAAzrE,GAAApe,KAAAmpF,GAAAW,SAAA3sB,EAEA,IADAn9D,KAAAmpF,GAAAY,YAAA5sB,GAIA,CACA,GAAA6sB,GAAApB,EAAA/kB,cAAAtF,KAUA,OATA,OAAAngD,EAAAg+C,KAEA4tB,IAAAjrE,IAAA0vC,EAAA7J,KAAA2Z,OAAA,GAGAle,EAAA5gD,QAAA2e,EAAA0lD,SAAA,SAAAxe,EAAAxpB,GACAkuD,IAAAjrE,IAAA,GAAA0vC,GAAA7J,KAAAU,GAAAxpB,KAGA97B,KAAAypF,GAAA,GAAAd,GAAAsB,aAAA7rE,EAAAu/B,KAAAqsC,EAAAH,IAbA,UAuBAvvB,EAAAx/D,UAAA+/D,qBAAA,SAAAld,EAAA4rC,GACA,MAAAvpF,MAAAypF,GAAA,GAAAV,GAAArY,UAAAD,EAAAzf,gBAAAK,OAAA1T,EAAA4rC,KASAjvB,EAAAx/D,UAAAqhE,iBAAA,SAAAxe,EAAAue,GACA,GAAAytB,GAAAf,EAAA/kB,cAAAE,WAAA7H,EACA,OAAAl8D,MAAAypF,GAAA,GAAAX,GAAAc,MAAAnZ,EAAAzf,gBAAAK,OAAA1T,EAAAgsC,KAQArvB,EAAAx/D,UAAAovF,oBAAA,SAAAvsC,GACA,MAAA39C,MAAAypF,GAAA,GAAAZ,GAAAsB,eAAA1Z,EAAAzf,gBAAAK,OAAA1T,KAUA2c,EAAAx/D,UAAAmhE,0BAAA,SAAAte,EAAAye,EAAA5B,GACA,GAAA4vB,GAAApqF,KAAAqqF,GAAA7vB,EACA,UAAA4vB,EAAA,CACA,GAAA9vE,GAAAggD,EAAAgwB,GAAAF,GACAG,EAAAjwE,EAAAqjC,KAAAwT,EAAA72C,EAAA62C,QACArL,EAAA2I,EAAA7J,KAAAkB,aAAAykC,EAAA5sC,GACA6sC,EAAA,GAAAzB,GAAArY,UAAAD,EAAAzf,gBAAAM,qBAAAH,GAAArL,EAAAsW,EACA,OAAAp8D,MAAAyqF,GAAAF,EAAAC,GAIA,UAWAlwB,EAAAx/D,UAAAihE,sBAAA,SAAApe,EAAAue,EAAA1B,GACA,GAAA4vB,GAAApqF,KAAAqqF,GAAA7vB,EACA,IAAA4vB,EAAA,CACA,GAAA9vE,GAAAggD,EAAAgwB,GAAAF,GACAG,EAAAjwE,EAAAqjC,KAAAwT,EAAA72C,EAAA62C,QACArL,EAAA2I,EAAA7J,KAAAkB,aAAAykC,EAAA5sC,GACAgsC,EAAAf,EAAA/kB,cAAAE,WAAA7H,GACAsuB,EAAA,GAAA1B,GAAAc,MAAAnZ,EAAAzf,gBAAAM,qBAAAH,GAAArL,EAAA6jC,EACA,OAAA3pF,MAAAyqF,GAAAF,EAAAC,GAIA,UAUAlwB,EAAAx/D,UAAA4vF,0BAAA,SAAA/sC,EAAA6c,GACA,GAAA4vB,GAAApqF,KAAAqqF,GAAA7vB,EACA,IAAA4vB,EAAA,CACA,GAAA9vE,GAAAggD,EAAAgwB,GAAAF,GACAG,EAAAjwE,EAAAqjC,KAAAwT,EAAA72C,EAAA62C,QACArL,EAAA2I,EAAA7J,KAAAkB,aAAAykC,EAAA5sC,GACA6sC,EAAA,GAAA3B,GAAAsB,eAAA1Z,EAAAzf,gBAAAM,qBAAAH,GAAArL,EACA,OAAA9lD,MAAAyqF,GAAAF,EAAAC,GAIA,UAUAlwB,EAAAx/D,UAAAokE,qBAAA,SAAAjb,EAAAgb,GACA,GAAAthB,GAAAsG,EAAAtG,KACA2zB,EAAA,KACAqZ,GAAA,CAGA3qF,MAAAkpF,GAAA/jB,cAAAxnB,EAAA,SAAAitC,EAAAC,GACA,GAAA/kC,GAAA2I,EAAA7J,KAAAkB,aAAA8kC,EAAAjtC,EACA2zB,MAAAuZ,EAAApY,uBAAA3sB,GACA6kC,EACAA,GAAAE,EAAAzY,mBAEA,IAAA0Y,GAAA9qF,KAAAkpF,GAAA1rF,IAAAmgD,EACAmtC,IAKAH,EACAA,GAAAG,EAAA1Y,kBACAd,KAAAwZ,EAAArY,uBAAAhkB,EAAA7J,KAAA2Z,SANAusB,EAAA,GAAAzpB,GAAA2B,UACAhjE,KAAAkpF,GAAAlpF,KAAAkpF,GAAAnqE,IAAA4+B,EAAAmtC,GAOA,IAAAvZ,EACA,OAAAD,EACAC,GAAA,GAGAA,GAAA,EACAD,EAAA5e,EAAAnJ,aAAAP,WACAhpD,KAAAkpF,GAAA7kB,QAAA1mB,GACA6nB,aAAA,SAAAnb,EAAA0gC,GACA,GAAAC,GAAAD,EAAAtY,uBAAAhkB,EAAA7J,KAAA2Z,MACAysB,KACA1Z,IAAA7mB,qBAAAJ,EAAA2gC,MAIA,IAAAC,GAAAH,EAAAlY,mBAAA3uB,EACA,KAAAgnC,IAAAhnC,EAAAknB,iBAAAoH,eAAA,CAEA,GAAA6X,GAAA9vB,EAAA4wB,GAAAjnC,EACA9D,GAAAv5C,SAAAwjF,IAAApqF,MAAAspF,IAAA,yCACA,IAAA9uB,GAAAF,EAAA6wB,IACAnrF,MAAAspF,GAAAc,GAAA5vB,EAEAx6D,KAAAqpF,GAAA,IAAA7uB,GAAA4vB,EAEA,GAAAlZ,GAAAlxE,KAAAmpF,GAAAiC,YAAAztC,GACAud,EAAA4vB,EAAA5rB,qBAAAjb,EAAAgb,EAAAiS,EAAAI,EAAAC,EACA,KAAA0Z,IAAAN,EAAA,CACA,GAAAvZ,GAAA0Z,EAAApY,aAAAzuB,EACAiX,KAAAv2D,OAAA3E,KAAAqrF,GAAApnC,EAAAmtB,IAEA,MAAAlW,IAaAZ,EAAAx/D,UAAAukE,wBAAA,SAAApb,EAAAgb,EAAA+S,GACA,GAAA1vE,GAAAtC,KAEA29C,EAAAsG,EAAAtG,KACA2tC,EAAAtrF,KAAAkpF,GAAA1rF,IAAAmgD,GACAu0B,IAIA,IAAAoZ,IACA,YAAArnC,EAAAgpB,mBACAqe,EAAA1Y,mBAAA3uB,IAAA,CAIA,GAAAsnC,GAAAD,EAAAjsB,wBAAApb,EAAAgb,EAAA+S,EACAsZ,GAAAxgF,YACA9K,KAAAkpF,GAAAlpF,KAAAkpF,GAAA5nC,OAAA3D,GAEA,IAAAs0B,GAAAsZ,EAAAtZ,OACAC,GAAAqZ,EAAArwB,MAOA,IAAAswB,IAAA,IACAvZ,EAAAvgE,UAAA,SAAAuyC,GACA,MAAAA,GAAAknB,iBAAAoH,iBAEAkZ,EAAAzrF,KAAAkpF,GAAAnkB,WAAApnB,EAAA,SAAAmI,EAAA4lC,GACA,MAAAA,GAAAtZ,mBAEA,IAAAoZ,IAAAC,EAAA,CACA,GAAApnB,GAAArkE,KAAAkpF,GAAA7kB,QAAA1mB,EAGA,KAAA0mB,EAAAv5D,UAIA,OAFA6gF,GAAA3rF,KAAA4rF,GAAAvnB,GAEArqE,EAAA,EAAmCA,EAAA2xF,EAAAjxF,SAAqBV,EAAA,CACxD,GAAAo3E,GAAAua,EAAA3xF,GAAA6xF,EAAAza,EAAAkB,WACAnwE,EAAAnC,KAAA8rF,GAAA1a,EACApxE,MAAAipF,GAAA1uB,eAAAD,EAAAyxB,GAAAF,GAAA7rF,KAAAgsF,GAAAH,GAAA1pF,EAAAm0E,OAAAn0E,EAAAu4D,cAUA+wB,GAAAxZ,EAAAv3E,OAAA,IAAAs3E,IAGAwZ,EAGAxrF,KAAAipF,GAAAnuB,cAAAR,EAAAyxB,GAAA9nC,GADA,MAIAguB,EAAAxyE,QAAA,SAAAwsF,GACA,GAAAC,GAAA5pF,EAAAgnF,GAAAhvB,EAAA4wB,GAAAe,GACA3pF,GAAA2mF,GAAAnuB,cAAAR,EAAAyxB,GAAAE,GAAAC,MAKAlsF,KAAAmsF,GAAAla,GAKA,MAAAC,IAWA5X,EAAAx/D,UAAA22E,uBAAA,SAAA9zB,EAAAyuC,GACA,GACAC,GAAArsF,KAAAmpF,GACA7X,EAAAtxE,KAAAkpF,GAAAnkB,WAAApnB,EAAA,SAAAknB,EAAAimB,GACA,GAAAhlC,GAAA2I,EAAA7J,KAAAkB,aAAA+e,EAAAlnB,GACA2zB,EAAAwZ,EAAArY,uBAAA3sB,EACA,IAAAwrB,EACA,MAAAA,IAGA,OAAA+a,GAAA5a,uBAAA9zB,EAAA2zB,EAAA8a,GATA,IAmBA9xB,EAAAx/D,UAAA8wF,GAAA,SAAAvnB,GACA,MAAAA,GAAAM,KAAA,SAAA7e,EAAAwmC,EAAAC,GACA,GAAAD,KAAAla,kBAEA,OADAka,EAAA3Z,kBAKA,IAAA6Z,KAOA,OANAF,KACAE,EAAAF,EAAA9Z,iBAEAnyB,EAAA5gD,QAAA8sF,EAAA,SAAAlrF,EAAAorF,GACAD,IAAA7nF,OAAA8nF,KAEAD,KAQAlyB,EAAAx/D,UAAAqxF,GAAA,SAAArS,GACA,OAAAljE,GAAA,EAAuBA,EAAAkjE,EAAAp/E,SAAoBkc,EAAA,CAC3C,GAAA81E,GAAA5S,EAAAljE,EACA,KAAA81E,EAAAvhB,iBAAAoH,eAAA,CAEA,GAAAoa,GAAAryB,EAAA4wB,GAAAwB,GACAE,EAAA5sF,KAAAspF,GAAAqD,SACA3sF,MAAAspF,GAAAqD,SACA3sF,MAAAqpF,GAAA,IAAAuD,MAUAtyB,EAAAyxB,GAAA,SAAA9nC,GACA,MAAAA,GAAAknB,iBAAAoH,iBACAtuB,EAAAknB,iBAAAiL,YAIqCnyB,EAAAyf,SAGrCzf,GAWAqW,EAAAx/D,UAAAuwF,GAAA,SAAApnC,EAAAmtB,GACA,GAAAzzB,GAAAsG,EAAAtG,KACA6c,EAAAx6D,KAAAgsF,GAAA/nC,GACA9hD,EAAAnC,KAAA8rF,GAAA1a,GACAlW,EAAAl7D,KAAAipF,GAAA1uB,eAAAD,EAAAyxB,GAAA9nC,GAAAuW,EAAAr4D,EAAAm0E,OAAAn0E,EAAAu4D,YACA2J,EAAArkE,KAAAkpF,GAAA7kB,QAAA1mB,EAGA,IAAA6c,EACAra,EAAAv5C,QAAAy9D,EAAAnmE,MAAAk0E,kBAAA,yDAsBA,QAlBAya,GAAAxoB,EAAAM,KAAA,SAAA7e,EAAAwmC,EAAAC,GACA,IAAAzmC,EAAAh7C,WACAwhF,GACAA,EAAAla,kBACA,OAAAka,EAAA3Z,kBAAAL,WAIA,IAAAwa,KAOA,OANAR,KACAQ,IAAAnoF,OAAA2nF,EAAA9Z,gBAAAvzE,IAAA,SAAAmyE,GAA8G,MAAAA,GAAAkB,eAE9GjyB,EAAA5gD,QAAA8sF,EAAA,SAAAlrF,EAAA0rF,GACAD,IAAAnoF,OAAAooF,KAEAD,IAGA9yF,EAAA,EAA2BA,EAAA6yF,EAAAnyF,SAA0BV,EAAA,CACrD,GAAAgzF,GAAAH,EAAA7yF,EACAgG,MAAAipF,GAAAnuB,cAAAR,EAAAyxB,GAAAiB,GAAAhtF,KAAAgsF,GAAAgB,IAGA,MAAA9xB,IAQAZ,EAAAx/D,UAAAgxF,GAAA,SAAA1a,GACA,GAAA9uE,GAAAtC,KACAikD,EAAAmtB,EAAAkB,WACA9X,EAAAx6D,KAAAgsF,GAAA/nC,EACA,QACAqyB,OAAA,WAEA,OADAlF,EAAAkC,kBAAA5gB,EAAAnJ,aAAAP,YACA4C,QAEA8O,WAAA,SAAAxrC,GACA,UAAAA,EACA,MAAAsrC,GACAl4D,EAAAooF,0BAAAzmC,EAAAtG,KAAA6c,GAGAl4D,EAAA4nF,oBAAAjmC,EAAAtG,KAMA,IAAA3/C,GAAAoiD,EAAA4D,mBAAA90B,EAAA+0B,EACA,OAAA3hD,GAAA+8D,wBAAApb,EACA,KAAAjmD,MAWAs8D,EAAA4wB,GAAA,SAAAjnC,GACA,MAAAA,GAAAtG,KAAA,IAAAsG,EAAAgpB,mBAQA3S,EAAAgwB,GAAA,SAAAF,GACA,GAAA6C,GAAA7C,EAAAz5E,QAAA,IAEA,OADAwvC,GAAAv5C,QAAA,IAAAqmF,KAAA7C,EAAA1vF,OAAA,oBAEAy2D,QAAAi5B,EAAAtmE,OAAAmpE,EAAA,GACAtvC,KAAA,GAAA8Q,GAAA7J,KAAAwlC,EAAAtmE,OAAA,EAAAmpE,MASA3yB,EAAAx/D,UAAAuvF,GAAA,SAAA7vB,GACA,MAAAx6D,MAAAqpF,GAAA,IAAA7uB,IAQAF,EAAAx/D,UAAAkxF,GAAA,SAAA/nC,GACA,GAAAmmC,GAAA9vB,EAAA4wB,GAAAjnC,EACA,OAAA5D,GAAA91C,QAAAvK,KAAAspF,GAAAc,IAOA9vB,EAAA6wB,GAAA,WACA,MAAA7wB,GAAA4yB,MAUA5yB,EAAAx/D,UAAA2vF,GAAA,SAAAF,EAAAptC,GACA,GAAA2tC,GAAA9qF,KAAAkpF,GAAA1rF,IAAA+sF,EACApqC,GAAAv5C,OAAAkkF,EAAA,uDACA,IAAA5Z,GAAAlxE,KAAAmpF,GAAAiC,YAAAb,EACA,OAAAO,GAAA7Z,eAAA9zB,EAAA+zB,EACA,OAmBA5W,EAAAx/D,UAAA2uF,GAAA,SAAAtsC,GACA,MAAAn9C,MAAAmtF,GAAAhwC,EAAAn9C,KAAAkpF,GACA,KAAAlpF,KAAAmpF,GAAAiC,YAAA38B,EAAA7J,KAAA2Z,SAYAjE,EAAAx/D,UAAAqyF,GAAA,SAAAhwC,EAAAiwC,EAAA9b,EAAAJ,GACA,GAAA/zB,EAAAQ,KAAA7yC,UACA,MAAA9K,MAAAqtF,GAAAlwC,EAAAiwC,EAAA9b,EAAAJ,EAGA,IAAA4Z,GAAAsC,EAAA5vF,IAAAixD,EAAA7J,KAAA2Z,MAEA,OAAA+S,GAAA,MAAAwZ,IACAxZ,EAAAwZ,EAAArY,uBAAAhkB,EAAA7J,KAAA2Z,OAEA,IAAArD,MACA7Q,EAAAlN,EAAAQ,KAAAuH,WACAooC,EAAAnwC,EAAAyzB,kBAAAvmB,GACAia,EAAA8oB,EAAAtpB,SAAAtmE,IAAA6sD,EACA,IAAAia,GAAAgpB,EAAA,CACA,GAAAC,GAAAjc,EACAA,EAAAlnB,kBAAAC,GACA,KACAmjC,EAAAtc,EAAAvrB,MAAA0E,EACA6Q,KAAAv2D,OAAA3E,KAAAmtF,GAAAG,EAAAhpB,EAAAipB,EAAAC,IAKA,MAHA1C,KACA5vB,IAAAv2D,OAAAmmF,EAAA7Z,eAAA9zB,EAAA+zB,EAAAI,KAEApW,GAaAZ,EAAAx/D,UAAAuyF,GAAA,SAAAlwC,EAAAiwC,EAAA9b,EAAAJ,GACA,GAAA5uE,GAAAtC,KACA8qF,EAAAsC,EAAA5vF,IAAAixD,EAAA7J,KAAA2Z,MAEA,OAAA+S,GAAA,MAAAwZ,IACAxZ,EAAAwZ,EAAArY,uBAAAhkB,EAAA7J,KAAA2Z,OAEA,IAAArD,KAcA,OAbAkyB,GAAAtpB,SAAAjX,iBAAA,SAAAxC,EAAAia,GACA,GAAAipB,GAAAjc,EACAA,EAAAlnB,kBAAAC,GACA,KACAmjC,EAAAtc,EAAAvrB,MAAA0E,GACAijC,EAAAnwC,EAAAyzB,kBAAAvmB,EACAijC,KACApyB,IAAAv2D,OAAArC,EAAA+qF,GAAAC,EAAAhpB,EAAAipB,EAAAC,OAGA1C,IACA5vB,IAAAv2D,OAAAmmF,EAAA7Z,eAAA9zB,EAAA+zB,EAAAI,KAEApW,GAOAZ,EAAA4yB,GAAA,EACA5yB,IAEAxgE,GAAAwgE,YzDg+VM,SAAUvgE,EAAQD,EAASH,GAEjC,Y0DtpXAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACA80D,EAAA90D,EAAA,GACA82E,EAAA92E,EAAA,GACAswF,EAAA,WAOA,QAAAA,GACAtsC,EACA8vC,EACA5D,GACA7pF,KAAA29C,OACA39C,KAAAytF,eACAztF,KAAA6pF,SAEA7pF,KAAA1D,KAAAm0E,EAAA1f,cAAA28B,eAEA1tF,KAAA0Q,OAAA+/D,EAAAzf,gBAAA9Q,KAoBA,MAfA+pC,GAAAnvF,UAAA81E,kBAAA,SAAAvmB,GACA,GAAArqD,KAAA29C,KAAA7yC,UAIA,UAAA9K,KAAAytF,aAAAvvF,MAGA,MAFAiiD,GAAAv5C,OAAA5G,KAAAytF,aAAA3pB,SAAAh5D,UAAA,4DAEA9K,IAGA,IAAAskE,GAAAtkE,KAAAytF,aAAAppB,QAAA,GAAA5V,GAAA7J,KAAAyF,GACA,WAAA4/B,GAAAx7B,EAAA7J,KAAA2Z,MAAA+F,EAAAtkE,KAAA6pF,QATA,MADA1pC,GAAAv5C,OAAA5G,KAAA29C,KAAAuH,aAAAmF,EAAA,iDACA,GAAA4/B,GAAAjqF,KAAA29C,KAAAyH,WAAAplD,KAAAytF,aAAAztF,KAAA6pF,SAYAI,IAEAnwF,GAAAmwF,gB1D8qXM,SAAUlwF,EAAQD,EAASH,GAEjC,Y2D3tXAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuwD,GAAA90D,EAAA,GACA82E,EAAA92E,EAAA,GAOAwwF,EAAA,WACA,QAAAA,GAAAz5E,EAAAitC,GACA39C,KAAA0Q,SACA1Q,KAAA29C,OAEA39C,KAAA1D,KAAAm0E,EAAA1f,cAAA48B,gBAUA,MARAxD,GAAArvF,UAAA81E,kBAAA,SAAAvmB,GACA,MAAArqD,MAAA29C,KAAA7yC,UACA,GAAAq/E,GAAAnqF,KAAA0Q,OAAA+9C,EAAA7J,KAAA2Z,OAGA,GAAA4rB,GAAAnqF,KAAA0Q,OAAA1Q,KAAA29C,KAAAyH,aAGA+kC,IAEArwF,GAAAqwF,kB3DmvXM,SAAUpwF,EAAQD,EAASH,GAEjC,Y4D/wXAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuyE,GAAA92E,EAAA,GACAovF,EAAApvF,EAAA,IACA80D,EAAA90D,EAAA,GACAwmD,EAAAxmD,EAAA,GAQAiwF,EAAA,WACA,QAAAA,GACAl5E,EACAitC,EACAmmB,GACA9jE,KAAA0Q,SACA1Q,KAAA29C,OACA39C,KAAA8jE,WAEA9jE,KAAA1D,KAAAm0E,EAAA1f,cAAA68B,MAsCA,MAjCAhE,GAAA9uF,UAAA81E,kBAAA,SAAAvmB,GACA,GAAArqD,KAAA29C,KAAA7yC,UAAA,CACA,GAAAw5D,GAAAtkE,KAAA8jE,SAAAO,QAAA,GAAA5V,GAAA7J,KAAAyF,GACA,OAAAia,GAAAx5D,UAEA,KAEAw5D,EAAApmE,MAEA,GAAA6qF,GAAArY,UAAA1wE,KAAA0Q,OAAA+9C,EAAA7J,KAAA2Z,MAAA+F,EAAApmE,OAIA,GAAA0rF,GAAA5pF,KAAA0Q,OAAA+9C,EAAA7J,KAAA2Z,MAAA+F,GAKA,MADAnkB,GAAAv5C,OAAA5G,KAAA29C,KAAAuH,aAAAmF,EAAA,kEACA,GAAAu/B,GAAA5pF,KAAA0Q,OAAA1Q,KAAA29C,KAAAyH,WAAAplD,KAAA8jE,WAMA8lB,EAAA9uF,UAAAiV,SAAA,WACA,mBACA/P,KAAA29C,KACA,KACA39C,KAAA0Q,OACA,WACA1Q,KAAA8jE,SACA,KAEA8lB,IAEA9vF,GAAA8vF,S5DuyXM,SAAU7vF,EAAQD,EAASH,GAEjC,Y6Dt2XAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAunF,GAAA9rF,EAAA,IACAk0F,EAAAl0F,EAAA,IACA+4D,EAAA/4D,EAAA,GACAk3E,EAAAl3E,EAAA,IACAm3E,EAAAn3E,EAAA,IACAm0F,EAAAn0F,EAAA,IACAwmD,EAAAxmD,EAAA,GACA82E,EAAA92E,EAAA,GACA8rE,EAAA9rE,EAAA,GACAwvD,EAAAxvD,EAAA,GAWAm4E,EAAA,WAMA,QAAAA,GAAAic,EAAAC,GACAhuF,KAAA+tF,KACA/tF,KAAAiuF,KACA,IAAAr5E,GAAA5U,KAAA+tF,GAAA5iB,iBACA+iB,EAAA,GAAAzI,GAAA/f,cAAA9wD,EAAAsxD,YACAhkE,EAAA0S,EAAAu5E,eAKAnuF,MAAAouF,GAAA,GAAAP,GAAAQ,cAAAnsF,EACA,IAAAosF,GAAAN,EAAA1a,iBACAib,EAAAP,EAAA5a,gBAEAD,EAAA+a,EAAApoB,eAAApT,EAAAnJ,aAAAP,WAAAslC,EAAA1zB,UAAA,MACAoY,EAAA9wE,EAAA4jE,eAAApT,EAAAnJ,aAAAP,WAAAulC,EAAA3zB,UAAA,MACA4zB,EAAA,GAAA3d,GAAAvQ,UAAA6S,EAAAmb,EAAA5tB,qBAAAwtB,EAAAloB,gBACAyoB,EAAA,GAAA5d,GAAAvQ,UAAA0S,EAAAub,EAAA7tB,qBAAAx+D,EAAA8jE,eAKAhmE,MAAA0uF,GAAA,GAAA5d,GAAAe,UAAA4c,EAAAD,GAKAxuF,KAAA2uF,GAAA,GAAAb,GAAAc,eAAA5uF,KAAA+tF,IAqIA,MAhIAjc,GAAAh3E,UAAAw3E,SAAA,WACA,MAAAtyE,MAAA+tF,IAKAjc,EAAAh3E,UAAAw4E,eAAA,WACA,MAAAtzE,MAAA0uF,GAAApb,iBAAA1Y,WAMAkX,EAAAh3E,UAAA23E,uBAAA,SAAA90B,GACA,GAAAkxC,GAAA7uF,KAAA0uF,GAAAnb,uBACA,OAAAsb,KAGA7uF,KAAA+tF,GAAA5iB,iBAAAoH,iBACA50B,EAAA7yC,YAAA+jF,EAAAzkC,kBAAAzM,EAAAuH,YAAAp6C,WACA+jF,EAAAvkC,SAAA3M,GAGA,MAKAm0B,EAAAh3E,UAAAgQ,QAAA,WACA,WAAA9K,KAAAiuF,GAAAvzF,QAKAo3E,EAAAh3E,UAAAokE,qBAAA,SAAAD,GACAj/D,KAAAiuF,GAAArzF,KAAAqkE,IAOA6S,EAAAh3E,UAAAukE,wBAAA,SAAAJ,EAAA+S,GACA,GAAAE,KACA,IAAAF,EAAA,CACA7xB,EAAAv5C,OAAA,MAAAq4D,EAAA,kDACA,IAAA6vB,GAAA9uF,KAAA+tF,GAAApwC,IACA39C,MAAAiuF,GAAAxuF,QAAA,SAAAsvF,GACA/c,EAA8CA,CAC9C,IAAAgd,GAAAD,EAAA/G,kBAAAhW,EAAA8c,EACAE,IACA9c,EAAAt3E,KAAAo0F,KAIA,GAAA/vB,EAAA,CAEA,OADAtxD,MACA3T,EAAA,EAA2BA,EAAAgG,KAAAiuF,GAAAvzF,SAAqCV,EAAA,CAChE,GAAAi1F,GAAAjvF,KAAAiuF,GAAAj0F,EACA,IAAAi1F,EAAA/I,QAAAjnB,IAGA,GAAAA,EAAAipB,iBAAA,CAEAv6E,IAAAhJ,OAAA3E,KAAAiuF,GAAAzmF,MAAAxN,EAAA,GACA,YALA2T,GAAA/S,KAAAq0F,GAQAjvF,KAAAiuF,GAAAtgF,MAGA3N,MAAAiuF,KAEA,OAAA/b,IAUAJ,EAAAh3E,UAAAm2E,eAAA,SAAA9zB,EAAA+zB,EAAAge,GACA/xC,EAAA7gD,OAAAm0E,EAAA1f,cAAA68B,OACA,OAAAzwC,EAAAzsC,OAAAygD,UACAhR,EAAAv5C,OAAA5G,KAAA0uF,GAAAnb,wBAAA,6DACApzB,EAAAv5C,OAAA5G,KAAA0uF,GAAArb,uBAAA,2DAEA,IAAA8b,GAAAnvF,KAAA0uF,GACAl0F,EAAAwF,KAAAouF,GAAAnd,eAAAke,EAAAhyC,EAAA+zB,EAAAge,EAKA,OAJAlvF,MAAAouF,GAAAgB,cAAA50F,EAAAo3E,WACAzxB,EAAAv5C,OAAApM,EAAAo3E,UAAA0B,iBAAA5S,uBACAyuB,EAAA7b,iBAAA5S,qBAAA,2DACA1gE,KAAA0uF,GAAAl0F,EAAAo3E,UACA5xE,KAAAqvF,GAAA70F,EAAA80F,QAAA90F,EAAAo3E,UAAAwB,gBAAAxY,UAAA,OAMAkX,EAAAh3E,UAAAi3E,iBAAA,SAAAgd,GACA,GAAA/b,GAAAhzE,KAAA0uF,GAAAtb,gBACAmc,IAUA,OATAvc,GAAApY,UAAA3Q,cACA+oB,EAAApY,UACAlP,aAAAvC,EAAAJ,eAAA,SAAA1nD,EAAAsqD,GACA4jC,EAAA30F,KAAA6qE,EAAAlU,OAAAO,iBAAAzwD,EAAAsqD,MAGAqnB,EAAAtS,sBACA6uB,EAAA30F,KAAA6qE,EAAAlU,OAAAI,YAAAqhB,EAAApY,YAEA56D,KAAAqvF,GAAAE,EAAAvc,EAAApY,UAAAm0B,IASAjd,EAAAh3E,UAAAu0F,GAAA,SAAAC,EAAA9d,EAAAvS,GACA,GAAAuwB,GAAAvwB,GACAA,GACAj/D,KAAAiuF,EACA,OAAAjuF,MAAA2uF,GAAAc,yBAAAH,EAAA9d,EAAAge,IAEA1d,IAEAh4E,GAAAg4E,Q7D83XM,SAAU/3E,EAAQD,EAASH,GAEjC,Y8D7jYAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAuyE,GAAA92E,EAAA,GACAwmD,EAAAxmD,EAAA,GACA+1F,EAAA/1F,EAAA,IACA8rE,EAAA9rE,EAAA,GACA+4D,EAAA/4D,EAAA,GACAyvD,EAAAzvD,EAAA,IACAivF,EAAAjvF,EAAA,IACA80D,EAAA90D,EAAA,GACAg2F,EAAAh2F,EAAA,IAKAi2F,EAAA,WAKA,QAAAA,GAAAhe,EAAA0d,GACAtvF,KAAA4xE,YACA5xE,KAAAsvF,UAEA,MAAAM,KAEA91F,GAAA81F,iBAIA,IAAAvB,GAAA,WAIA,QAAAA,GAAAwB,GACA7vF,KAAA6vF,KA4hBA,MAvhBAxB,GAAAvzF,UAAAs0F,cAAA,SAAAxd,GACAzxB,EAAAv5C,OAAAgrE,EACAwB,gBACAxY,UACA/M,UAAA7tD,KAAA6vF,GAAA3pB,YAAA,0BACA/lB,EAAAv5C,OAAAgrE,EACA0B,iBACA1Y,UACA/M,UAAA7tD,KAAA6vF,GAAA3pB,YAAA,4BASAmoB,EAAAvzF,UAAAm2E,eAAA,SAAAke,EAAAhyC,EAAA+zB,EAAA8Z,GACA,GACA8E,GAAAC,EADAC,EAAA,GAAAN,GAAAO,sBAEA,IAAA9yC,EAAA7gD,OAAAm0E,EAAA1f,cAAA4f,UAAA,CACA,GAAAuf,GAAA/yC,CACA+yC,GAAAx/E,OAAAugD,SACA6+B,EAAA9vF,KAAAmwF,GAAAhB,EAAAe,EAAAvyC,KAAAuyC,EAAA9zB,KAAA8U,EAAA8Z,EAAAgF,IAGA7vC,EAAAv5C,OAAAspF,EAAAx/E,OAAAwgD,WAAA,mBAIA6+B,EACAG,EAAAx/E,OAAA0gD,QACA+9B,EAAA7b,iBAAA3S,eACAuvB,EAAAvyC,KAAA7yC,UACAglF,EAAA9vF,KAAAowF,GAAAjB,EAAAe,EAAAvyC,KAAAuyC,EAAA9zB,KAAA8U,EAAA8Z,EAAA+E,EAAAC,QAGA,IAAA7yC,EAAA7gD,OAAAm0E,EAAA1f,cAAA68B,MAAA,CACA,GAAA1vB,GAAA/gB,CACA+gB,GAAAxtD,OAAAugD,SACA6+B,EAAA9vF,KAAAqwF,GAAAlB,EAAAjxB,EAAAvgB,KAAAugB,EAAA4F,SAAAoN,EAAA8Z,EAAAgF,IAGA7vC,EAAAv5C,OAAAs3D,EAAAxtD,OAAAwgD,WAAA,mBAEA6+B,EACA7xB,EAAAxtD,OAAA0gD,QAAA+9B,EAAA7b,iBAAA3S,aACAmvB,EAAA9vF,KAAAswF,GAAAnB,EAAAjxB,EAAAvgB,KAAAugB,EAAA4F,SAAAoN,EAAA8Z,EAAA+E,EAAAC,QAGA,IAAA7yC,EAAA7gD,OAAAm0E,EAAA1f,cAAA28B,eAAA,CACA,GAAAjwB,GAAAtgB,CAKA2yC,GAJAryB,EAAAosB,OAIA7pF,KAAAuwF,GAAApB,EAAA1xB,EAAA9f,KAAAuzB,EAAA8Z,EAAAgF,GAHAhwF,KAAAwwF,GAAArB,EAAA1xB,EAAA9f,KAAA8f,EAAAgwB,aAAAvc,EAAA8Z,EAAAgF,OAMA,IAAA7yC,EAAA7gD,OAAAm0E,EAAA1f,cAAA48B,gBAIA,KAAAxtC,GAAAp5C,eAAA,2BAAAo2C,EAAA7gD,KAHAwzF,GAAA9vF,KAAAywF,GAAAtB,EAAAhyC,EAAAQ,KAAAuzB,EAAA8e,GAKA,GAAAV,GAAAU,EAAAU,YAEA,OADArC,GAAAsC,GAAAxB,EAAAW,EAAAR,GACA,GAAAM,GAAAE,EAAAR,IAQAjB,EAAAsC,GAAA,SAAAxB,EAAAW,EAAAE,GACA,GAAAhd,GAAA8c,EAAA1c,eACA,IAAAJ,EAAAtS,qBAAA,CACA,GAAAkwB,GAAA5d,EAAApY,UAAA3Q,cAAA+oB,EAAApY,UAAA9vD,UACA+lF,EAAA1B,EAAA9b,wBACA2c,EAAAt1F,OAAA,IACAy0F,EAAA/b,gBAAA1S,sBACAkwB,IACA5d,EACApY,UACApU,OAAiD,KACjDwsB,EACApY,UACA9S,cACAtB,OAAAqqC,EAAA/oC,iBACAkoC,EAAAp1F,KAAA6qE,EAAAlU,OAAAI,YACiCm+B,EAAAzc,2BAajCgb,EAAAvzF,UAAAg2F,GAAA,SAAAlf,EAAAmf,EAAA7f,EAAAxgE,EAAAs/E,GACA,GAAAgB,GAAApf,EAAAwB,eACA,UAAAlC,EAAA+f,eAAAF,GAEA,MAAAnf,EAGA,IAAA6c,OAAA,GAAAyC,MAAA,EACA,IAAAH,EAAAjmF,UAGA,GADAq1C,EAAAv5C,OAAAgrE,EAAA0B,iBAAA5S,qBAAA,8DACAkR,EAAA0B,iBAAA3S,aAAA,CAIA,GAAA2Q,GAAAM,EAAA2B,wBACA4d,EAAA7f,YAAA5e,GAAAnJ,aACA+nB,EACA5e,EAAAnJ,aAAAP,WACAooC,EAAAlgB,EAAAS,0BAAAwf,EACA1C,GAAAzuF,KAAA6vF,GAAA/pB,eAAA8L,EAAAwB,gBAAAxY,UAAAw2B,EAAApB,OAEA,CACA,GAAAqB,GAAAngB,EAAAO,uBAAAG,EAAA2B,wBACAkb,GAAAzuF,KAAA6vF,GAAA/pB,eAAA8L,EAAAwB,gBAAAxY,UAAAy2B,EAAArB,OAGA,CACA,GAAAj+B,GAAAg/B,EAAA7rC,UACA,iBAAA6M,EAAA,CACA5R,EAAAv5C,OAAA,GAAAmqF,EAAA5rC,YAAA,wDACA,IAAAmsC,GAAAN,EAAAp2B,SACAs2B,GAAAtf,EAAA0B,iBAAA1Y,SAEA,IAAA22B,GAAArgB,EAAAsgB,mCAAAT,EAAAO,EAAAJ,EAEAzC,GADA,MAAA8C,EACAvxF,KAAA6vF,GAAA3lC,eAAAonC,EAAAC,GAIAP,EAAAp2B,cAGA,CACA,GAAA62B,GAAAV,EAAA3rC,WAEAssC,MAAA,EACA,IAAAV,EAAAnwB,mBAAA9O,GAAA,CACAm/B,EAAAtf,EAAA0B,iBAAA1Y,SACA,IAAA+2B,GAAAzgB,EAAAsgB,mCAAAT,EAAAC,EAAAp2B,UAAAs2B,EAEAQ,GADA,MAAAC,EACAX,EACAp2B,UACAxQ,kBAAA2H,GACA7G,YAAAumC,EAAAE,GAIAX,EACAp2B,UACAxQ,kBAAA2H,OAIA2/B,GAAAxgB,EAAA0gB,kBAAA7/B,EAAA6f,EAAA0B,iBAGAmb,GADA,MAAAiD,EACA1xF,KAAA6vF,GAAA3kC,YAAA8lC,EAAAp2B,UAAA7I,EAAA2/B,EAAAD,EAAA/gF,EAAAs/E,GAIAgB,EAAAp2B,WAIA,MAAAgX,GAAAmB,gBAAA0b,EAAAuC,EAAAtwB,sBAAAqwB,EAAAjmF,UAAA9K,KAAA6vF,GAAA7pB,iBAcAqoB,EAAAvzF,UAAAs1F,GAAA,SAAAjB,EAAA4B,EAAAc,EAAA3gB,EAAA8Z,EAAA+E,EAAAC,GACA,GACAxB,GADAsD,EAAA3C,EAAA7b,iBAEAye,EAAAhC,EACA/vF,KAAA6vF,GACA7vF,KAAA6vF,GAAA5pB,kBACA,IAAA8qB,EAAAjmF,UACA0jF,EAAAuD,EAAAjsB,eAAAgsB,EAAAl3B,UAAAi3B,EAAA,UAEA,IAAAE,EAAA/rB,iBAAA8rB,EAAAnxB,aAAA,CAEA,GAAAqxB,GAAAF,EACAl3B,UACA1P,YAAA6lC,EAAAc,EACArD,GAAAuD,EAAAjsB,eAAAgsB,EAAAl3B,UAAAo3B,EAAA,UAEA,CACA,GAAAjgC,GAAAg/B,EAAA7rC,UACA,KAAA4sC,EAAAlxB,kBAAAmwB,IACAA,EAAA5rC,YAAA,EAEA,MAAAgqC,EAEA,IAAAsC,GAAAV,EAAA3rC,WACAuG,EAAAmmC,EAAAl3B,UAAAxQ,kBAAA2H,GACArH,EAAAiB,EAAAT,YAAAumC,EAAAI,EAEArD,GADA,aAAAz8B,EACAggC,EAAA7nC,eAAA4nC,EAAAl3B,UAAAlQ,GAGAqnC,EAAA7mC,YAAA4mC,EAAAl3B,UAAA7I,EAAArH,EAAA+mC,EAAA9B,EAAAsC,yBAAA,MAGA,GAAAnC,GAAAX,EAAAjc,iBAAAsb,EAAAsD,EAAApxB,sBAAAqwB,EAAAjmF,UAAAinF,EAAA/rB,gBACAt1D,EAAA,GAAAi/E,GAAAuC,6BAAAhhB,EAAA4e,EAAA9E,EACA,OAAAhrF,MAAA8wF,GAAAhB,EAAAiB,EAAA7f,EAAAxgE,EAAAs/E,IAYA3B,EAAAvzF,UAAAq1F,GAAA,SAAAhB,EAAA4B,EAAAc,EAAA3gB,EAAA8Z,EAAAgF,GACA,GACAF,GAAArB,EADAuC,EAAA7B,EAAA/b,gBAEA1iE,EAAA,GAAAi/E,GAAAuC,6BAAAhhB,EAAAie,EAAAnE,EACA,IAAA+F,EAAAjmF,UACA2jF,EAAAzuF,KAAA6vF,GAAA/pB,eAAAqpB,EAAA/b,gBAAAxY,UAAAi3B,EAAA7B,GACAF,EAAAX,EAAApc,gBAAA0b,GAAA,EAAAzuF,KAAA6vF,GAAA7pB,oBAEA,CACA,GAAAjU,GAAAg/B,EAAA7rC,UACA,kBAAA6M,EACA08B,EAAAzuF,KAAA6vF,GAAA3lC,eAAAilC,EAAA/b,gBAAAxY,UAAAi3B,GACA/B,EAAAX,EAAApc,gBAAA0b,EAAAuC,EAAAtwB,qBAAAswB,EAAArwB,kBAEA,CACA,GAAA8wB,GAAAV,EAAA3rC,WACAwgB,EAAAorB,EAAAp2B,UAAAxQ,kBAAA2H,GACAyS,MAAA,EACA,IAAAitB,EAAA3mF,UAEA05D,EAAAqtB,MAEA,CACA,GAAAlmC,GAAAj7C,EAAAyhF,iBAAApgC,EAMAyS,GALA,MAAA7Y,EACA,cAAA8lC,EAAApsC,WACAsG,EAAArB,SAAAmnC,EAAAhsC,UAAA36C,UAGA6gD,EAGAA,EAAAT,YAAAumC,EAAAI,GAKAn/B,EAAAnJ,aAAAP,WAGA,GAAA4c,EAAApf,OAAAge,GAKAsrB,EAAAX,MALA,CACA,GAAAiD,GAAApyF,KAAA6vF,GAAA3kC,YAAA8lC,EAAAp2B,UAAA7I,EAAAyS,EAAAitB,EAAA/gF,EAAAs/E,EACAF,GAAAX,EAAApc,gBAAAqf,EAAApB,EAAAtwB,qBAAA1gE,KAAA6vF,GAAA7pB,kBAOA,MAAA8pB,IAQAzB,EAAAgE,GAAA,SAAAzgB,EAAA7f,GACA,MAAA6f,GAAAwB,gBAAAvS,mBAAA9O,IAYAs8B,EAAAvzF,UAAAu1F,GAAA,SAAAze,EAAAj0B,EAAAue,EAAAgV,EAAAI,EAAA0e,GACA,GAAA1tF,GAAAtC,KAOAsyF,EAAA1gB,CAaA,OAZA1V,GAAAoJ,QAAA,SAAAxf,EAAA6F,GACA,GAAA4mC,GAAA50C,EAAAgI,MAAAG,EACAuoC,GAAAgE,GAAAzgB,EAAA2gB,EAAArtC,cACAotC,EAAAhwF,EAAA6tF,GAAAmC,EAAAC,EAAA5mC,EAAAulB,EAAAI,EAAA0e,MAGA9zB,EAAAoJ,QAAA,SAAAxf,EAAA6F,GACA,GAAA4mC,GAAA50C,EAAAgI,MAAAG,EACAuoC,GAAAgE,GAAAzgB,EAAA2gB,EAAArtC,cACAotC,EAAAhwF,EAAA6tF,GAAAmC,EAAAC,EAAA5mC,EAAAulB,EAAAI,EAAA0e,MAGAsC,GAQAjE,EAAAvzF,UAAA03F,GAAA,SAAA12D,EAAAoiC,GAIA,MAHAA,GAAAoH,QAAA,SAAAxf,EAAA6F,GACA7vB,IAAAovB,YAAApF,EAAA6F,KAEA7vB,GAaAuyD,EAAAvzF,UAAAw1F,GAAA,SAAA1e,EAAAj0B,EAAAue,EAAAgV,EAAAI,EAAAye,EAAAC,GACA,GAAA1tF,GAAAtC,IAGA,IAAA4xE,EACA0B,iBACA1Y,UACA9vD,YACA8mE,EAAA0B,iBAAA5S,qBACA,MAAAkR,EAQA,IACA6gB,GADAH,EAAA1gB,CAGA6gB,GADA90C,EAAA7yC,UACAoxD,EAGA0sB,EAAA/kB,cAAAtF,MAAAkG,QAAA9mB,EAAAue,EAEA,IAAAg1B,GAAAtf,EAAA0B,iBAAA1Y,SAuBA,OAtBA63B,GAAA3uB,SAAAjX,iBAAA,SAAAkF,EAAAuS,GACA,GAAA4sB,EAAA1mC,SAAAuH,GAAA,CACA,GAAA2gC,GAAA9gB,EACA0B,iBACA1Y,UACAxQ,kBAAA2H,GACAyS,EAAAliE,EAAAkwF,GAAAE,EAAApuB,EACAguB,GAAAhwF,EAAA8tF,GAAAkC,EAAA,GAAA7jC,GAAA7J,KAAAmN,GAAAyS,EAAA0M,EAAAI,EAAAye,EAAAC,MAGAyC,EAAA3uB,SAAAjX,iBAAA,SAAAkF,EAAA4gC,GACA,GAAAC,IAAAhhB,EAAA0B,iBAAAzS,mBAAA9O,IACA,MAAA4gC,EAAAz0F,KACA,KAAAgzF,EAAA1mC,SAAAuH,KAAA6gC,EAAA,CACA,GAAAF,GAAA9gB,EACA0B,iBACA1Y,UACAxQ,kBAAA2H,GACAyS,EAAAliE,EAAAkwF,GAAAE,EAAAC,EACAL,GAAAhwF,EAAA8tF,GAAAkC,EAAA,GAAA7jC,GAAA7J,KAAAmN,GAAAyS,EAAA0M,EAAAI,EAAAye,EAAAC,MAGAsC,GAYAjE,EAAAvzF,UAAA01F,GAAA,SAAA5e,EAAAihB,EAAApF,EAAAvc,EAAA8Z,EAAAgF,GACA,SAAA9e,EAAA+f,eAAA4B,GACA,MAAAjhB,EAGA,IAAAme,GAAAne,EAAA0B,iBAAA3S,aAGA2Q,EAAAM,EAAA0B,gBACA,UAAAma,EAAAvvF,MAAA,CAEA,GAAA20F,EAAA/nF,WAAAwmE,EAAA5Q,sBACA4Q,EAAA1Q,kBAAAiyB,GACA,MAAA7yF,MAAAowF,GAAAxe,EAAAihB,EAAAvhB,EAAA1W,UAAAtQ,SAAAuoC,GAAA3hB,EAAA8Z,EAAA+E,EAAAC,EAEA,IAAA6C,EAAA/nF,UAAA,CAGA,GAAAgoF,GAAAlK,EAAA/kB,cAAAtF,KAIA,OAHA+S,GAAA1W,UAAAlP,aAAAtC,EAAAsE,UAAA,SAAAxwD,EAAA4+B,GACAg3D,IAAA/zE,IAAA,GAAA0vC,GAAA7J,KAAA1nD,GAAA4+B,KAEA97B,KAAAswF,GAAA1e,EAAAihB,EAAAC,EAAA5hB,EAAA8Z,EAAA+E,EAAAC,GAGA,MAAApe,GAKA,GAAAmhB,GAAAnK,EAAA/kB,cAAAtF,KAOA,OANAkvB,GAAAnoB,QAAA,SAAA0tB,EAAA90F,GACA,GAAA+0F,GAAAJ,EAAAltC,MAAAqtC,EACA1hB,GAAA1Q,kBAAAqyB,KACAF,IAAAh0E,IAAAi0E,EAAA1hB,EAAA1W,UAAAtQ,SAAA2oC,OAGAjzF,KAAAswF,GAAA1e,EAAAihB,EAAAE,EAAA7hB,EAAA8Z,EAAA+E,EAAAC,IAWA3B,EAAAvzF,UAAA21F,GAAA,SAAA7e,EAAAj0B,EAAAuzB,EAAA8e,GACA,GAAAkD,GAAAthB,EAAA0B,iBACAwc,EAAAle,EAAAsB,iBAAAggB,EAAAt4B,UAAAs4B,EAAAxyB,sBAAA/iB,EAAA7yC,UAAAooF,EAAAvyB,aACA,OAAA3gE,MAAA8wF,GAAAhB,EAAAnyC,EAAAuzB,EAAAye,EAAAsC,yBAAAjC,IAWA3B,EAAAvzF,UAAAy1F,GAAA,SAAA3e,EAAAj0B,EAAAuzB,EAAAge,EAAAc,GACA,GAAAj4E,EACA,UAAAm5D,EAAA+f,eAAAtzC,GACA,MAAAi0B,EAGA,IAAAlhE,GAAA,GAAAi/E,GAAAuC,6BAAAhhB,EAAAU,EAAAsd,GACAiE,EAAAvhB,EAAAwB,gBAAAxY,UACA6zB,MAAA,EACA,IAAA9wC,EAAA7yC,WAAA,cAAA6yC,EAAAuH,WAAA,CACA,GAAAmD,OAAA,EACA,IAAAupB,EAAA0B,iBAAA5S,qBACArY,EAAA6oB,EAAAO,uBAAAG,EAAA2B,6BAEA,CACA,GAAA6f,GAAAxhB,EAAA0B,iBAAA1Y,SACAza,GAAAv5C,OAAAwsF,YAAA1gC,GAAAnJ,aAAA,iDACAlB,EAAA6oB,EAAAS,0BAAAyhB,GAEA/qC,IACAomC,EAAAzuF,KAAA6vF,GAAA/pB,eAAAqtB,EAAA9qC,EAAA2nC,OAEA,CACA,GAAAj+B,GAAApU,EAAAuH,WACAsf,EAAA0M,EAAA0gB,kBAAA7/B,EAAA6f,EAAA0B,iBACA,OAAA9O,GACAoN,EAAA0B,iBAAAzS,mBAAA9O,KACAyS,EAAA2uB,EAAA/oC,kBAAA2H,IAGA08B,EADA,MAAAjqB,EACAxkE,KAAA6vF,GAAA3kC,YAAAioC,EAAAphC,EAAAyS,EAAA7mB,EAAAyH,WAAA10C,EAAAs/E,GAEApe,EACAwB,gBACAxY,UACApQ,SAAAuH,GAEA/xD,KAAA6vF,GAAA3kC,YAAAioC,EAAAphC,EAAAW,EAAAnJ,aAAAP,WAAArL,EAAAyH,WAAA10C,EAAAs/E,GAGAmD,EAEA1E,EAAA3jF,WACA8mE,EAAA0B,iBAAA5S,uBAEA3oD,EAAAm5D,EAAAO,uBAAAG,EAAA2B,yBACAx7D,EAAAkyC,eACAwkC,EAAAzuF,KAAA6vF,GAAA/pB,eAAA2oB,EAAA12E,EAAAi4E,KAOA,MAHAj4E,GACA65D,EAAA0B,iBAAA5S,sBACA,MAAAwQ,EAAA+f,eAAAxiC,EAAA7J,KAAA2Z,OACAqT,EAAAmB,gBAAA0b,EAAA12E,EAAA/X,KAAA6vF,GAAA7pB,iBAGAqoB,IAEAv0F,GAAAu0F,iB9DqlYM,SAAUt0F,EAAQD,EAASH,GAEjC,Y+DvpZAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACA8rE,EAAA9rE,EAAA,GACAymD,EAAAzmD,EAAA,GAIAs2F,EAAA,WACA,QAAAA,KACAjwF,KAAAqzF,MAmDA,MA9CApD,GAAAn1F,UAAA+qE,iBAAA,SAAA4hB,GACA,GAAAnrF,GAAAmrF,EAAAnrF,KACAy1D,EAAwC01B,EAAAp9B,SACxCjK,GAAAx5C,OAAAtK,GAAAmpE,EAAAlU,OAAAS,aACA11D,GAAAmpE,EAAAlU,OAAAe,eACAh2D,GAAAmpE,EAAAlU,OAAAW,cAAA,6CACA9R,EAAAx5C,OAAA,cAAAmrD,EAAA,kDACA,IAAAuhC,GAAAnzC,EAAA51C,QAAAvK,KAAAqzF,GAAAthC,EACA,IAAAuhC,EAAA,CACA,GAAAC,GAAAD,EAAAh3F,IACA,IAAAA,GAAAmpE,EAAAlU,OAAAS,aAAAuhC,GAAA9tB,EAAAlU,OAAAW,cACAlyD,KAAAqzF,GAAAthC,GAAA0T,EAAAlU,OAAAY,mBAAAJ,EAAA01B,EAAAj2B,aAAA8hC,EAAA9hC,kBAEA,IAAAl1D,GAAAmpE,EAAAlU,OAAAW,eACAqhC,GAAA9tB,EAAAlU,OAAAS,kBACAhyD,MAAAqzF,GAAAthC,OAEA,IAAAz1D,GAAAmpE,EAAAlU,OAAAW,eACAqhC,GAAA9tB,EAAAlU,OAAAe,cACAtyD,KAAAqzF,GAAAthC,GAAA0T,EAAAlU,OAAAU,mBAAAF,EAAAuhC,EAAA7hC,aAEA,IAAAn1D,GAAAmpE,EAAAlU,OAAAe,eACAihC,GAAA9tB,EAAAlU,OAAAS,YACAhyD,KAAAqzF,GAAAthC,GAAA0T,EAAAlU,OAAAO,iBAAAC,EAAA01B,EAAAj2B,kBAEA,IAAAl1D,GAAAmpE,EAAAlU,OAAAe,eACAihC,GAAA9tB,EAAAlU,OAAAe,cAIA,KAAAlS,GAAAr5C,eAAA,mCACA0gF,EACA,mBACA6L,EANAtzF,MAAAqzF,GAAAthC,GAAA0T,EAAAlU,OAAAY,mBAAAJ,EAAA01B,EAAAj2B,aAAA8hC,EAAA7hC,cAUAzxD,MAAAqzF,GAAAthC,GAAA01B,GAMAwI,EAAAn1F,UAAA41F,WAAA,WACA,MAAAvwC,GAAA30C,UAAAxL,KAAAqzF,KAEApD,IAEAn2F,GAAAm2F,0B/D+qZM,SAAUl2F,EAAQD,EAASH,GAEjC,YgE/uZAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA2yE,GAAAl3E,EAAA,IAQA65F,EAAA,WACA,QAAAA,MAcA,MATAA,GAAA14F,UAAAq3F,iBAAA,SAAApgC,GACA,aAKAyhC,EAAA14F,UAAA24F,mBAAA,SAAAxnC,EAAAtG,EAAAlC,GACA,aAEA+vC,IAEA15F,GAAA05F,KAMA15F,EAAAm4F,yBAAA,GAAAuB,EAQA,IAAAtB,GAAA,WAMA,QAAAA,GAAAwB,EAAAhF,EAAAiF,OACA,KAAAA,IAAiDA,EAAA,MACjD3zF,KAAA0zF,KACA1zF,KAAA0uF,KACA1uF,KAAA2zF,KAgCA,MA3BAzB,GAAAp3F,UAAAq3F,iBAAA,SAAApgC,GACA,GAAAj2B,GAAA97B,KAAA0uF,GAAAtb,eACA,IAAAt3C,EAAA+kC,mBAAA9O,GACA,MAAAj2B,GAAA8+B,UAAAxQ,kBAAA2H,EAGA,IAAAm/B,GAAA,MAAAlxF,KAAA2zF,GACA,GAAA9iB,GAAAvQ,UAAAtgE,KAAA2zF,IAAA,MACA3zF,KAAA0uF,GAAApb,gBACA,OAAAtzE,MAAA0zF,GAAA9B,kBAAA7/B,EAAAm/B,IAMAgB,EAAAp3F,UAAA24F,mBAAA,SAAAxnC,EAAAtG,EAAAlC,GACA,GAAAmwC,GAAA,MAAA5zF,KAAA2zF,GACA3zF,KAAA2zF,GACA3zF,KAAA0uF,GAAAnb,wBACAsgB,EAAA7zF,KAAA0zF,GAAAI,iBAAAF,EAAAjuC,EAAA,EAAAlC,EAAAwI,EACA,YAAA4nC,EAAAn5F,OACA,KAGAm5F,EAAA,IAGA3B,IAEAp4F,GAAAo4F,gChEuwZM,SAAUn4F,EAAQD,EAASH,GAEjC,YiE71ZAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAupD,GAAA9tD,EAAA,GACA8rE,EAAA9rE,EAAA,GACAwmD,EAAAxmD,EAAA,GAQAi1F,EAAA,WAKA,QAAAA,GAAAb,GACA/tF,KAAA+tF,KAKA/tF,KAAAmjE,GAAAnjE,KAAA+tF,GAAA5iB,iBAAAjF,WAuFA,MAvEA0oB,GAAA9zF,UAAA20F,yBAAA,SAAAH,EAAA9d,EAAAuiB,GACA,GAAAzxF,GAAAtC,KACAk7D,KACA84B,IAYA,OAXA1E,GAAA7vF,QAAA,SAAAgoF,GACAA,EAAAnrF,OAAAmpE,EAAAlU,OAAAe,eACAhwD,EAAA6gE,GAAAhb,oBAAAs/B,EAAAh2B,QAAAg2B,EAAAj2B,eACAwiC,EAAAp5F,KAAA6qE,EAAAlU,OAAAgB,iBAAAk1B,EAAAp9B,UAAAo9B,EAAAj2B,iBAGAxxD,KAAAi0F,GAAA/4B,EAAAuK,EAAAlU,OAAAW,cAAAo9B,EAAAyE,EAAAviB,GACAxxE,KAAAi0F,GAAA/4B,EAAAuK,EAAAlU,OAAAS,YAAAs9B,EAAAyE,EAAAviB,GACAxxE,KAAAi0F,GAAA/4B,EAAAuK,EAAAlU,OAAAiB,YAAAwhC,EAAAD,EAAAviB,GACAxxE,KAAAi0F,GAAA/4B,EAAAuK,EAAAlU,OAAAe,cAAAg9B,EAAAyE,EAAAviB,GACAxxE,KAAAi0F,GAAA/4B,EAAAuK,EAAAlU,OAAAM,MAAAy9B,EAAAyE,EAAAviB,GACAtW,GAYA0zB,EAAA9zF,UAAAm5F,GAAA,SAAA/4B,EAAApL,EAAAw/B,EAAAE,EAAAhe,GACA,GAAAlvE,GAAAtC,KACAk0F,EAAA5E,EAAAptF,OAAA,SAAAulF,GAAgE,MAAAA,GAAAnrF,OAAAwzD,GAChEokC,GAAAlhE,KAAAhzB,KAAAm0F,GAAAj0F,KAAAF,OACAk0F,EAAAz0F,QAAA,SAAAgoF,GACA,GAAA2M,GAAA9xF,EAAA+xF,GAAA5M,EAAAjW,EACAge,GAAA/vF,QAAA,SAAAsvF,GACAA,EAAAvH,WAAAC,EAAAnrF,OACA4+D,EAAAtgE,KAAAm0F,EAAAh9D,YAAAqiE,EAAA9xF,EAAAyrF,UAWAa,EAAA9zF,UAAAu5F,GAAA,SAAA5M,EAAAjW,GACA,gBAAAiW,EAAAnrF,MAAA,kBAAAmrF,EAAAnrF,KACAmrF,GAGAA,EAAA/1B,SAAA8f,EAAAxlB,wBAEAy7B,EAAAp9B,UAAAo9B,EAAAj2B,aAAAxxD,KAAAmjE,IACAskB,IASAmH,EAAA9zF,UAAAq5F,GAAA,SAAA99E,EAAA1O,GACA,SAAA0O,EAAAg0C,WAAA,MAAA1iD,EAAA0iD,UACA,KAAAlK,GAAAp5C,eAAA,qCAEA,IAAAutF,GAAA,GAAA7sC,GAAAc,UAAAlyC,EAAAg0C,UAAAh0C,EAAAm7C,cACA+iC,EAAA,GAAA9sC,GAAAc,UAAA5gD,EAAA0iD,UAAA1iD,EAAA6pD,aACA,OAAAxxD,MAAAmjE,GAAAvb,QAAA0sC,EAAAC,IAEA3F,IAEA90F,GAAA80F,kBjEq3ZM,SAAU70F,EAAQD,EAASH,GAEjC,YkEt+ZAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA80D,EAAA90D,EAAA,GACA66F,EAAA76F,EAAA,IACAwvD,EAAAxvD,EAAA,GACA+4D,EAAA/4D,EAAA,GAQAyvF,EAAA,WACA,QAAAA,KAQAppF,KAAAy0F,GAAAD,EAAAE,cAAAn2B,MASAv+D,KAAA20F,MACA30F,KAAA40F,IAAA,EAudA,MA/cAxL,GAAAtuF,UAAAswF,YAAA,SAAAztC,GACA,UAAAk3C,GAAAl3C,EAAA39C,OAUAopF,EAAAtuF,UAAA0uF,aAAA,SAAA7rC,EAAAye,EAAAe,EAAAmb,GACAl4B,EAAAx5C,OAAAu2D,EAAAn9D,KAAA40F,GAAA,oDACAh5F,KAAA08E,IACAA,GAAA,GAEAt4E,KAAA20F,GAAA/5F,MACA+iD,OACAye,OACAe,UACAmb,YAEAA,IACAt4E,KAAAy0F,GAAAz0F,KAAAy0F,GAAAK,SAAAn3C,EAAAye,IAEAp8D,KAAA40F,GAAAz3B,GASAisB,EAAAtuF,UAAA4uF,SAAA,SAAA/rC,EAAAue,EAAAiB,GACA/c,EAAAx5C,OAAAu2D,EAAAn9D,KAAA40F,GAAA,gDACA50F,KAAA20F,GAAA/5F,MACA+iD,OACAmmB,SAAA5H,EACAiB,UACAmb,SAAA,IAEAt4E,KAAAy0F,GAAAz0F,KAAAy0F,GAAAM,UAAAp3C,EAAAue,GACAl8D,KAAA40F,GAAAz3B,GAMAisB,EAAAtuF,UAAAgvF,SAAA,SAAA3sB,GACA,OAAAnjE,GAAA,EAAuBA,EAAAgG,KAAA20F,GAAAj6F,OAA4BV,IAAA,CACnD,GAAAg7F,GAAAh1F,KAAA20F,GAAA36F,EACA,IAAAg7F,EAAA73B,YACA,MAAA63B,GAGA,aAUA5L,EAAAtuF,UAAAivF,YAAA,SAAA5sB,GAKA,GAAA76D,GAAAtC,KACAksD,EAAAlsD,KAAA20F,GAAAjjF,UAAA,SAAAzW,GACA,MAAAA,GAAAkiE,aAEA/c,GAAAx5C,OAAAslD,GAAA,iDACA,IAAA+oC,GAAAj1F,KAAA20F,GAAAzoC,EACAlsD,MAAA20F,GAAA96E,OAAAqyC,EAAA,EAIA,KAHA,GAAAgpC,GAAAD,EAAA3c,QACA6c,GAAA,EACAn7F,EAAAgG,KAAA20F,GAAAj6F,OAAA,EACAw6F,GAAAl7F,GAAA,IACA,GAAAo7F,GAAAp1F,KAAA20F,GAAA36F,EACAo7F,GAAA9c,UACAt+E,GAAAkyD,GACAlsD,KAAAq1F,GAAAD,EAAAH,EAAAt3C,MAEAu3C,GAAA,EAEAD,EAAAt3C,KAAAj/C,SAAA02F,EAAAz3C,QAEAw3C,GAAA,IAGAn7F,IAEA,GAAAk7F,EAGA,IAAAC,EAGA,MADAn1F,MAAAs1F,MACA,CAIA,IAAAL,EAAA74B,KACAp8D,KAAAy0F,GAAAz0F,KAAAy0F,GAAA1K,YAAAkL,EAAAt3C,UAEA,CACA,GAAAmmB,GAAAmxB,EAAAnxB,QACA3jB,GAAA1gD,QAAAqkE,EAAA,SAAAzZ,GACA/nD,EAAAmyF,GAAAnyF,EAAAmyF,GAAA1K,YAAAkL,EAAAt3C,KAAAgI,MAAA0E,MAGA,SAlBA,UA4BA++B,EAAAtuF,UAAAy6F,qBAAA,SAAA53C,GACA,MAAA39C,MAAAy0F,GAAAe,gBAAA73C,IAYAyrC,EAAAtuF,UAAA22E,uBAAA,SAAAgkB,EAAAvG,EAAA9C,EAAAsJ,GACA,GAAAtJ,GAAAsJ,EAqBA,CACA,GAAAx3B,GAAAl+D,KAAAy0F,GAAAkB,mBAAAF,EACA,KAAAC,GAAAx3B,EAAApzD,UACA,MAAAokF,EAIA,IAAAwG,GACA,MAAAxG,GACAhxB,EAAA03B,iBAAAnnC,EAAA7J,KAAA2Z,OAGA,CACA,GAAAr8D,GAAA,SAAAkc,GACA,OAAAA,EAAAk6D,SAAAod,MACAtJ,KACAA,EAAAz7E,QAAAyN,EAAA++C,YACA/+C,EAAAu/B,KAAAj/C,SAAA+2F,MAAA/2F,SAAA0f,EAAAu/B,QAEAk4C,EAAAzM,EAAA0M,GAAA91F,KAAA20F,GAAAzyF,EAAAuzF,GACAM,EAAA7G,GAAAx8B,EAAAnJ,aAAAP,UACA,OAAA6sC,GAAA11F,MAAA41F,GAXA,YA9BA,GAAAC,GAAAh2F,KAAAy0F,GAAAe,gBAAAC,EACA,UAAAO,EACA,MAAAA,EAGA,IAAAC,GAAAj2F,KAAAy0F,GAAAkB,mBAAAF,EACA,IAAAQ,EAAAnrF,UACA,MAAAokF,EAEA,UAAAA,GACA+G,EAAAL,iBAAAnnC,EAAA7J,KAAA2Z,OAIA,CACA,GAAAw3B,GAAA7G,GAAAx8B,EAAAnJ,aAAAP,UACA,OAAAitC,GAAA91F,MAAA41F,GAJA,aA0CA3M,EAAAtuF,UAAA62E,0BAAA,SAAA8jB,EAAAS,GACA,GAAA/E,GAAAz+B,EAAAnJ,aAAAP,WACAmtC,EAAAn2F,KAAAy0F,GAAAe,gBAAAC,EACA,IAAAU,EAOA,MANAA,GAAAlsC,cAEAksC,EAAAzqC,aAAAvC,EAAAJ,eAAA,SAAAsB,EAAA4Z,GACAktB,IAAA1mC,qBAAAJ,EAAA4Z,KAGAktB,CAEA,IAAA+E,EAAA,CAGA,GAAAE,GAAAp2F,KAAAy0F,GAAAkB,mBAAAF,EAWA,OAVAS,GAAAxqC,aAAAvC,EAAAJ,eAAA,SAAAsB,EAAAsB,GACA,GAAA7vB,GAAAs6D,EACAT,mBAAA,GAAAlnC,GAAA7J,KAAAyF,IACAlqD,MAAAwrD,EACAwlC,KAAA1mC,qBAAAJ,EAAAvuB,KAGAs6D,EAAAC,sBAAA52F,QAAA,SAAAkrD,GACAwmC,IAAA1mC,qBAAAE,EAAAztD,KAAAytD,EAAA7uB,QAEAq1D,EASA,MAJAnxF,MAAAy0F,GAAAkB,mBAAAF,GACAY,sBAAA52F,QAAA,SAAAkrD,GACAwmC,IAAA1mC,qBAAAE,EAAAztD,KAAAytD,EAAA7uB,QAEAq1D,GAuBA/H,EAAAtuF,UAAA02F,mCAAA,SAAAiE,EAAAlyB,EAAA+yB,EAAAC,GACAn2C,EAAAx5C,OAAA0vF,GAAAC,EAAA,4DACA,IAAA54C,GAAA83C,EAAA9vC,MAAA4d,EACA,IAAAvjE,KAAAy0F,GAAAmB,iBAAAj4C,GAGA,WAIA,IAAA64C,GAAAx2F,KAAAy0F,GAAAkB,mBAAAh4C,EACA,OAAA64C,GAAA1rF,UAEAyrF,EAAAjsC,SAAAiZ,GASAizB,EAAAr2F,MAAAo2F,EAAAjsC,SAAAiZ,KAaA6lB,EAAAtuF,UAAA82F,kBAAA,SAAA6D,EAAA1jC,EAAAwkC,GACA,GAAA54C,GAAA83C,EAAA9vC,MAAAoM,GACAikC,EAAAh2F,KAAAy0F,GAAAe,gBAAA73C,EACA,cAAAq4C,EACAA,EAGAO,EAAA11B,mBAAA9O,GACA/xD,KAAAy0F,GAAAkB,mBAAAh4C,GACAx9C,MAAAo2F,EAAA37B,UAAAxQ,kBAAA2H,IAGA,MAYAq3B,EAAAtuF,UAAAm2F,eAAA,SAAAtzC,GACA,MAAA39C,MAAAy0F,GAAAe,gBAAA73C,IAcAyrC,EAAAtuF,UAAAg5F,iBAAA,SAAA2B,EAAA7B,EAAA3mC,EAAA5B,EAAA5H,EAAAwI,GACA,GAAAwqC,GACAv4B,EAAAl+D,KAAAy0F,GAAAkB,mBAAAF,GACAO,EAAA93B,EAAAs3B,gBAAA/mC,EAAA7J,KAAA2Z,MACA,UAAAy3B,EACAS,EAAAT,MAEA,UAAApC,EAKA,QAJA6C,GAAAv4B,EAAA/9D,MAAAyzF,GAOA,GADA6C,IAAAhpC,UAAAxB,GACAwqC,EAAA3rF,WAAA2rF,EAAAxsC,aAgBA,QATA,KANA,GAAA4pC,MACAttC,EAAA0F,EAAAuH,aACAya,EAAAxqB,EACAgzC,EAAAlpC,uBAAAN,EAAAhB,GACAwqC,EAAAzpC,gBAAAC,EAAAhB,GACAr0C,EAAAq2D,EAAA5gB,UACAz1C,GAAAi8E,EAAAn5F,OAAA2wD,GACA,IAAA9E,EAAA3uC,EAAAq1C,IACA4mC,EAAAj5F,KAAAgd,GAEAA,EAAAq2D,EAAA5gB,SAEA,OAAAwmC,IAYAzK,EAAAtuF,UAAAu6F,GAAA,SAAAqB,EAAA/4C,GACA,MAAA+4C,GAAAt6B,KACAs6B,EAAA/4C,KAAAj/C,SAAAi/C,KAIAwC,EAAA/0C,QAAAsrF,EAAA5yB,SAAA,SAAAG,EAAA5Z,GACA,MAAAqsC,GAAA/4C,KAAAgI,MAAA0E,GAAA3rD,SAAAi/C,MAQAyrC,EAAAtuF,UAAAw6F,GAAA,WACAt1F,KAAAy0F,GAAArL,EAAA0M,GAAA91F,KAAA20F,GAAAvL,EAAAuN,GAAAloC,EAAA7J,KAAA2Z,OACAv+D,KAAA20F,GAAAj6F,OAAA,EACAsF,KAAA40F,GAAA50F,KAAA20F,GAAA30F,KAAA20F,GAAAj6F,OAAA,GAAAyiE,QAGAn9D,KAAA40F,IAAA,GAUAxL,EAAAuN,GAAA,SAAAv4E,GACA,MAAAA,GAAAk6D,SAYA8Q,EAAA0M,GAAA,SAAAc,EAAA10F,EAAA20F,GAEA,OADAC,GAAAtC,EAAAE,cAAAn2B,MACAvkE,EAAA,EAAuBA,EAAA48F,EAAAl8F,SAAmBV,EAAA,CAC1C,GAAAokB,GAAAw4E,EAAA58F,EAIA,IAAAkI,EAAAkc,GAAA,CACA,GAAAm0E,GAAAn0E,EAAAu/B,KACAmI,MAAA,EACA,IAAA1nC,EAAAg+C,KACAy6B,EAAAn4F,SAAA6zF,IACAzsC,EAAA2I,EAAA7J,KAAAkB,aAAA+wC,EAAAtE,GACAuE,IAAAhC,SAAAhvC,EAAA1nC,EAAAg+C,OAEAm2B,EAAA7zF,SAAAm4F,KACA/wC,EAAA2I,EAAA7J,KAAAkB,aAAAysC,EAAAsE,GACAC,IAAAhC,SAAArmC,EAAA7J,KAAA2Z,MAAAngD,EAAAg+C,KAAA9R,SAAAxE,SAMA,KAAA1nC,EAAA0lD,SAwBA,KAAA1jB,GAAAr5C,eAAA,6CAvBA,IAAA8vF,EAAAn4F,SAAA6zF,GACAzsC,EAAA2I,EAAA7J,KAAAkB,aAAA+wC,EAAAtE,GACAuE,IAAA/B,UAAAjvC,EAAA1nC,EAAA0lD,cAEA,IAAAyuB,EAAA7zF,SAAAm4F,GAEA,GADA/wC,EAAA2I,EAAA7J,KAAAkB,aAAAysC,EAAAsE,GACA/wC,EAAAh7C,UACAgsF,IAAA/B,UAAAtmC,EAAA7J,KAAA2Z,MAAAngD,EAAA0lD,cAEA,CACA,GAAAne,GAAAxF,EAAA51C,QAAA6T,EAAA0lD,SAAAhe,EAAAZ,WACA,IAAAS,EAAA,CAEA,GAAAoxC,GAAApxC,EAAA2E,SAAAxE,EAAAV,WACA0xC,KAAAhC,SAAArmC,EAAA7J,KAAA2Z,MAAAw4B,OAaA,MAAAD,IAEA1N,IAEAtvF,GAAAsvF,WAOA,IAAAyL,GAAA,WAKA,QAAAA,GAAAl3C,EAAA0uC,GACArsF,KAAAg3F,GAAAr5C,EACA39C,KAAAi3F,GAAA5K,EA4FA,MAhFAwI,GAAA/5F,UAAA22E,uBAAA,SAAAyd,EAAA9C,EAAAsJ,GACA,MAAA11F,MAAAi3F,GAAAxlB,uBAAAzxE,KAAAg3F,GAAA9H,EAAA9C,EAAAsJ,IASAb,EAAA/5F,UAAA62E,0BAAA,SAAAukB,GACA,MAAAl2F,MAAAi3F,GAAAtlB,0BAAA3xE,KAAAg3F,GAAAd,IAqBArB,EAAA/5F,UAAA02F,mCAAA,SAAA7zC,EAAA24C,EAAAC,GACA,MAAAv2F,MAAAi3F,GAAAzF,mCAAAxxF,KAAAg3F,GAAAr5C,EAAA24C,EAAAC,IAUA1B,EAAA/5F,UAAAm2F,eAAA,SAAAtzC,GACA,MAAA39C,MAAAi3F,GAAAhG,eAAAjxF,KAAAg3F,GAAArxC,MAAAhI,KAaAk3C,EAAA/5F,UAAAg5F,iBAAA,SAAAF,EAAA3mC,EAAA5B,EAAA5H,EAAAwI,GACA,MAAAjsD,MAAAi3F,GAAAnD,iBAAA9zF,KAAAg3F,GAAApD,EAAA3mC,EAAA5B,EAAA5H,EAAAwI,IAUA4oC,EAAA/5F,UAAA82F,kBAAA,SAAA7/B,EAAAmlC,GACA,MAAAl3F,MAAAi3F,GAAArF,kBAAA5xF,KAAAg3F,GAAAjlC,EAAAmlC,IAQArC,EAAA/5F,UAAA6qD,MAAA,SAAA0E,GACA,UAAAwqC,GAAA70F,KAAAg3F,GAAArxC,MAAA0E,GAAArqD,KAAAi3F,KAEApC,IAEA/6F,GAAA+6F,gBlE8/ZM,SAAU96F,EAAQD,EAASH,GAEjC,YmEtmbAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA0qF,GAAAjvF,EAAA,IACA80D,EAAA90D,EAAA,GACAwmD,EAAAxmD,EAAA,GACA8tD,EAAA9tD,EAAA,GACAwvD,EAAAxvD,EAAA,GACAymD,EAAAzmD,EAAA,GAUA+6F,EAAA,WACA,QAAAA,GAAAuC,GACAj3F,KAAAi3F,KAkLA,MA3KAvC,GAAA55F,UAAAg6F,SAAA,SAAAn3C,EAAA7hB,GACA,GAAA6hB,EAAA7yC,UACA,UAAA4pF,GAAA,GAAA9L,GAAA/kB,cAAA/nC,GAGA,IAAAq7D,GAAAn3F,KAAAi3F,GAAA7yB,yBAAAzmB,EACA,UAAAw5C,EAAA,CACA,GAAAC,GAAAD,EAAAx5C,KACAz/C,EAAAi5F,EAAAj5F,MACA4nD,EAAA2I,EAAA7J,KAAAkB,aAAAsxC,EAAAz5C,EAEA,OADAz/C,KAAAgtD,YAAApF,EAAAhqB,GACA,GAAA44D,GAAA10F,KAAAi3F,GAAAl4E,IAAAq4E,EAAAl5F,IAGA,GAAAmmE,GAAA,GAAAukB,GAAA/kB,cAAA/nC,EAEA,WAAA44D,GADA10F,KAAAi3F,GAAAxyB,QAAA9mB,EAAA0mB,KAUAqwB,EAAA55F,UAAAi6F,UAAA,SAAAp3C,EAAA+e,GACA,GAAA26B,GAAAr3F,IAIA,OAHAmgD,GAAA1gD,QAAAi9D,EAAA,SAAA3K,EAAAj2B,GACAu7D,IAAAvC,SAAAn3C,EAAAgI,MAAAoM,GAAAj2B,KAEAu7D,GASA3C,EAAA55F,UAAAivF,YAAA,SAAApsC,GACA,MAAAA,GAAA7yC,UACA4pF,EAAAn2B,MAIA,GAAAm2B,GADA10F,KAAAi3F,GAAAxyB,QAAA9mB,EAAAirC,EAAA/kB,cAAAtF,SAWAm2B,EAAA55F,UAAA86F,iBAAA,SAAAj4C,GACA,aAAA39C,KAAAw1F,gBAAA73C,IASA+2C,EAAA55F,UAAA06F,gBAAA,SAAA73C,GACA,GAAAw5C,GAAAn3F,KAAAi3F,GAAA7yB,yBAAAzmB,EACA,cAAAw5C,EACAn3F,KAAAi3F,GACAz5F,IAAA25F,EAAAx5C,MACA2M,SAAAmE,EAAA7J,KAAAkB,aAAAqxC,EAAAx5C,SAGA,MAQA+2C,EAAA55F,UAAAu7F,oBAAA,WACA,GAAAvyB,MACAhoC,EAAA97B,KAAAi3F,GAAA/4F,KAgBA,OAfA,OAAA49B,EAEAA,EAAAmuB,cACAnuB,EAAA4vB,aAAAvC,EAAAJ,eAAA,SAAAsB,EAAAsB,GACAmY,EAAAlpE,KAAA,GAAA6sD,GAAAc,UAAA8B,EAAAsB,MAKA3rD,KAAAi3F,GAAAnzB,SAAAjX,iBAAA,SAAAxC,EAAAia,GACA,MAAAA,EAAApmE,OACA4lE,EAAAlpE,KAAA,GAAA6sD,GAAAc,UAAA8B,EAAAia,EAAApmE,UAIA4lE,GAMA4wB,EAAA55F,UAAA66F,mBAAA,SAAAh4C,GACA,GAAAA,EAAA7yC,UACA,MAAA9K,KAGA,IAAAg2F,GAAAh2F,KAAAw1F,gBAAA73C,EACA,OACA,IAAA+2C,GADA,MAAAsB,EACA,GAAApN,GAAA/kB,cAAAmyB,GAGAh2F,KAAAi3F,GAAA5yB,QAAA1mB,KAQA+2C,EAAA55F,UAAAgQ,QAAA,WACA,MAAA9K,MAAAi3F,GAAAnsF,WAQA4pF,EAAA55F,UAAAqF,MAAA,SAAA27B,GACA,MAAA44D,GAAA4C,GAAA7oC,EAAA7J,KAAA2Z,MAAAv+D,KAAAi3F,GAAAn7D,IAKA44D,EAAAn2B,MAAA,GAAAm2B,GAAA,GAAA9L,GAAA/kB,cAAA,OAQA6wB,EAAA4C,GAAA,SAAAxxC,EAAAumC,EAAAvwD,GACA,SAAAuwD,EAAAnuF,MAEA,MAAA49B,GAAAovB,YAAApF,EAAAumC,EAAAnuF,MAGA,IAAAq5F,GAAA,IAgBA,OAfAlL,GAAAvoB,SAAAjX,iBAAA,SAAAkF,EAAAuS,GACA,cAAAvS,GAGA3R,EAAAx5C,OAAA,OAAA09D,EAAApmE,MAAA,6CACAq5F,EAAAjzB,EAAApmE,OAGA49B,EAAA44D,EAAA4C,GAAAxxC,EAAAH,MAAAoM,GAAAuS,EAAAxoC,KAIAA,EAAAwuB,SAAAxE,GAAAh7C,WAAA,OAAAysF,IACAz7D,IAAAovB,YAAApF,EAAAH,MAAA,aAAA4xC,IAEAz7D,GAGA44D,IAEA56F,GAAA46F,iBnE8nbM,SAAU36F,EAAQD,EAASH,GAEjC,YoEt0bAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAw0D,GAAA/4D,EAAA,GAMAygE,EAAA,WACA,QAAAA,KACAp6D,KAAAw3F,GAAA9kC,EAAAnJ,aAAAP,WAQA,MANAoR,GAAAt/D,UAAA8/D,QAAA,SAAAjd,GACA,MAAA39C,MAAAw3F,GAAAltC,SAAA3M,IAEAyc,EAAAt/D,UAAA6hE,eAAA,SAAAhf,EAAA85C,GACAz3F,KAAAw3F,GAAAx3F,KAAAw3F,GAAAtsC,YAAAvN,EAAA85C,IAEAr9B,IAEAtgE,GAAAsgE,kBpE81bM,SAAUrgE,EAAQD,EAASH,GAEjC,YqEn3bAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAIAu/D,EAAA,WAIA,QAAAA,GAAAw+B,GACA13F,KAAA03F,KAsDA,MAhDAx+B,GAAAp+D,UAAAgH,SAAA,SAAAy3E,GACA,MAAAv5E,MAAA03F,GAAA,kBAAAne,GAAAh3E,KAAA,KAEA,SAAAvE,GAGA,MAAAA,IAAA,+BAAAA,EAAAiD,MACAk/C,EAAAn9C,IAAA,kEACA,MAGAlH,QAAAG,OAAA+B,MAIAk7D,EAAAp+D,UAAA++D,uBAAA,SAAA13D,GAGAnC,KAAA03F,GAAA,8BAAAv1F,IAEA+2D,EAAAp+D,UAAA68F,0BAAA,SAAAx1F,GACAnC,KAAA03F,GAAA,iCAAAv1F,IAEA+2D,EAAAp+D,UAAA++E,sBAAA,WACA,GAAA/6C,GAAA,0DACA9+B,KAAA03F,GAAAx6F,KACA,gFAEA,eAAA8C,MAAA03F,GAAA94F,QACAkgC,GACA,uJAIA,kBAAA9+B,MAAA03F,GAAA94F,QACAkgC,GACA,2JAKAA,GACA,kKAIAqhB,EAAApyC,KAAA+wB,IAEAo6B,IAEAp/D,GAAAo/D,qBrE24bM,SAAUn/D,EAAQD,EAASH,GAEjC,YsE/8bAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GAMA2sE,EAAA,WACA,QAAAA,KACAtmE,KAAA43F,MAWA,MATAtxB,GAAAxrE,UAAAolE,iBAAA,SAAAhjE,EAAA26F,OACA,KAAAA,IAAgCA,EAAA,GAChCz3C,EAAA1hD,SAAAsB,KAAA43F,GAAA16F,KACA8C,KAAA43F,GAAA16F,GAAA,GACA8C,KAAA43F,GAAA16F,IAAA26F,GAEAvxB,EAAAxrE,UAAA0C,IAAA,WACA,MAAA2iD,GAAAxuC,SAAA3R,KAAA43F,KAEAtxB,IAEAxsE,GAAAwsE,mBtEu+bM,SAAUvsE,EAAQD,EAASH,GAEjC,YuEhgcAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACAq+D,EAAAr+D,EAAA,IAIAm+F,EAAA,IACAC,EAAA,IAMA99B,EAAA,WAKA,QAAAA,GAAA+9B,EAAA1+B,GACAt5D,KAAAs5D,IACAt5D,KAAAi4F,MACAj4F,KAAAy4D,EAAA,GAAAT,GAAA0H,cAAAs4B,EACA,IAAAv8F,GAAAq8F,GACAC,EAAAD,GAAAxnF,KAAAC,QACA6vC,GAAAsE,sBAAA1kD,KAAAk4F,GAAAh4F,KAAAF,MAAAsQ,KAAA8D,MAAA3Y,IAsBA,MApBAw+D,GAAAn/D,UAAAqlE,YAAA,SAAAJ,GACA//D,KAAAi4F,GAAAl4B,IAAA,GAEA9F,EAAAn/D,UAAAo9F,GAAA,WACA,GAAA51F,GAAAtC,KACAw/D,EAAAx/D,KAAAy4D,EAAAj7D,MACA26F,KACAC,GAAA,CACAj4C,GAAA1gD,QAAA+/D,EAAA,SAAAO,EAAA7hE,GACAA,EAAA,GAAAiiD,EAAAzhD,SAAA4D,EAAA21F,GAAAl4B,KACAo4B,EAAAp4B,GAAA7hE,EACAk6F,GAAA,KAGAA,GACAp4F,KAAAs5D,EAAAqe,YAAAwgB,GAGA/3C,EAAAsE,sBAAA1kD,KAAAk4F,GAAAh4F,KAAAF,MAAAsQ,KAAA8D,MAAA,EAAA9D,KAAAC,SAnCA,OAqCA0pD,IAEAngE,GAAAmgE,iBvEwhcM,SAAUlgE,EAAQD,EAASH,GAEjC,YwE3kcAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAeAg/D,EAAA,WACA,QAAAA,KAKA34D,KAAAq4F,MAMAr4F,KAAAs4F,GAAA,EA+EA,MA1EA3/B,GAAA79D,UAAAuiE,YAAA,SAAAk7B,GAGA,OADAC,GAAA,KACAx+F,EAAA,EAAuBA,EAAAu+F,EAAA79F,OAA0BV,IAAA,CACjD,GAAAugF,GAAAge,EAAAv+F,GACAy+F,EAAAle,EAAAmO,SACA,QAAA8P,GAAAC,EAAAjyC,OAAAgyC,EAAA9P,aACA1oF,KAAAq4F,GAAAz9F,KAAA49F,GACAA,EAAA,MAEA,OAAAA,IACAA,EAAA,GAAAE,GAAAD,IAEAD,EAAAz5C,IAAAw7B,GAEAie,GACAx4F,KAAAq4F,GAAAz9F,KAAA49F,IAYA7/B,EAAA79D,UAAAqkE,kBAAA,SAAAxhB,EAAA46C,GACAv4F,KAAAq9D,YAAAk7B,GACAv4F,KAAA24F,GAAA,SAAAF,GACA,MAAAA,GAAAjyC,OAAA7I,MAYAgb,EAAA79D,UAAAqgE,0BAAA,SAAAgD,EAAAo6B,GACAv4F,KAAAq9D,YAAAk7B,GACAv4F,KAAA24F,GAAA,SAAAF,GACA,MAAAA,GAAA/5F,SAAAy/D,MAAAz/D,SAAA+5F,MAOA9/B,EAAA79D,UAAA69F,GAAA,SAAApnF,GACAvR,KAAAs4F,IAEA,QADAM,IAAA,EACA5+F,EAAA,EAAuBA,EAAAgG,KAAAq4F,GAAA39F,OAA6BV,IAAA,CACpD,GAAA6+F,GAAA74F,KAAAq4F,GAAAr+F,EACA6+F,KAEAtnF,EADAsnF,EAAAnQ,YAEA1oF,KAAAq4F,GAAAr+F,GAAA8+F,QACA94F,KAAAq4F,GAAAr+F,GAAA,MAGA4+F,GAAA,GAIAA,IACA54F,KAAAq4F,OAEAr4F,KAAAs4F,MAEA3/B,IAEA7+D,GAAA6+D,YAKA,IAAA+/B,GAAA,WACA,QAAAA,GAAAtpC,GACApvD,KAAAovD,KAKApvD,KAAA+4F,MA8BA,MAzBAL,GAAA59F,UAAAikD,IAAA,SAAAw7B,GACAv6E,KAAA+4F,GAAAn+F,KAAA2/E,IAKAme,EAAA59F,UAAAg+F,MAAA,WACA,OAAA9+F,GAAA,EAAuBA,EAAAgG,KAAA+4F,GAAAr+F,OAAyBV,IAAA,CAChD,GAAAugF,GAAAv6E,KAAA+4F,GAAA/+F,EACA,WAAAugF,EAAA,CACAv6E,KAAA+4F,GAAA/+F,GAAA,IACA,IAAAg/F,GAAAze,EAAAoN,gBACAxnC,GAAAa,QACAb,EAAAn9C,IAAA,UAAAu3E,GAEAp6B,EAAAiE,eAAA40C,MAOAN,EAAA59F,UAAA4tF,QAAA,WACA,MAAA1oF,MAAAovD,IAEAspC,IAEA5+F,GAAA4+F,axEmmcM,SAAU3+F,EAAQD,EAASH,GAEjC,YyE9vcA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAA+6F,GAAAt/F,EAAA,IACAwmD,EAAAxmD,EAAA,GAIAi8E,EAAA,SAAArgE,GAEA,QAAAqgE,KACA,GACAsjB,GACAC,EAFA72F,EAAAiT,EAAArb,KAAA8F,MAAA,aAAAA,IAqCA,OAlCA,mBAAA7D,eACA,KAAAA,SAAAyU,uBACA,KAAAzU,SAAA,QAEAg9F,EAAA,mBACAD,EAAA,cAEA,KAAA/8F,SAAA,WACAg9F,EAAA,sBACAD,EAAA,iBAEA,KAAA/8F,SAAA,UACAg9F,EAAA,qBACAD,EAAA,gBAEA,KAAA/8F,SAAA,eACAg9F,EAAA,yBACAD,EAAA,iBAOA52F,EAAA2yE,IAAA,EACAkkB,GACAh9F,SAAAyU,iBAAAuoF,EAAA,WACA,GAAA7gB,IAAAn8E,SAAA+8F,EACA5gB,KAAAh2E,EAAA2yE,KACA3yE,EAAA2yE,GAAAqD,EACAh2E,EAAA+3E,QAAA,UAAA/B,MAEa,GAEbh2E,EAaA,MApDA0S,GAAA4gE,EAAArgE,GAyCAqgE,EAAA9O,YAAA,WACA,UAAA8O,IAMAA,EAAA96E,UAAA0/E,gBAAA,SAAA1qB,GAEA,MADA3P,GAAAv5C,OAAA,YAAAkpD,EAAA,uBAAAA,IACA9vD,KAAAi1E,KAEAW,GACCqjB,EAAA/e,aACDpgF,GAAA87E,qBzEsxcM,SAAU77E,EAAQD,EAASH,GAEjC,Y0E/1cA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAs/F,EAAAt/F,EAAA,IACAymD,EAAAzmD,EAAA,GAUAm8E,EAAA,SAAAvgE,GAEA,QAAAugE,KACA,GAAAxzE,GAAAiT,EAAArb,KAAA8F,MAAA,YAAAA,IAsBA,OArBAsC,GAAA82F,IAAA,EAKA,mBAAA5/F,aACA,KAAAA,OAAAoX,kBACAwvC,EAAA7tC,oBACA/Y,OAAAoX,iBAAA,oBACAtO,EAAA82F,KACA92F,EAAA82F,IAAA,EACA92F,EAAA+3E,QAAA,gBAEa,GACb7gF,OAAAoX,iBAAA,qBACAtO,EAAA82F,KACA92F,EAAA82F,IAAA,EACA92F,EAAA+3E,QAAA,gBAEa,IAEb/3E,EAmBA,MA3CA0S,GAAA8gE,EAAAvgE,GA0BAugE,EAAAhP,YAAA,WACA,UAAAgP,IAMAA,EAAAh7E,UAAA0/E,gBAAA,SAAA1qB,GAEA,MADA3P,GAAAv5C,OAAA,WAAAkpD,EAAA,uBAAAA,IACA9vD,KAAAo5F,KAKAtjB,EAAAh7E,UAAAk/E,gBAAA,WACA,MAAAh6E,MAAAo5F,IAEAtjB,GACCmjB,EAAA/e,aACDpgF,GAAAg8E,iB1Eu3cM,SAAU/7E,EAAQD,EAASH,GAEjC,Y2E97cAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAm7F,GAAA1/F,EAAA,IACA2/F,EAAA3/F,EAAA,IACAwmD,EAAAxmD,EAAA,GASAshF,EAAA,WAIA,QAAAA,GAAA5qB,GACArwD,KAAAu5F,GAAAlpC,GA6DA,MA3DAx1D,QAAAwC,eAAA49E,EAAA,kBAKAz9E,IAAA,WACA,OAAA67F,EAAAna,sBAAAoa,EAAA1V,sBAEArmF,YAAA,EACAD,cAAA,IAMA29E,EAAAngF,UAAAy+F,GAAA,SAAAlpC,GACA,GAAAmpC,GAAAF,EAAA1V,qBAAA0V,EAAA1V,oBAAA,cACA6V,EAAAD,IAAAF,EAAA1V,oBAAAe,kBAMA,IALAt0B,EAAAsY,gBACA6wB,GACAr5C,EAAApyC,KAAA,mFACA0rF,GAAA,GAEAA,EACAz5F,KAAA05F,IAAAJ,EAAA1V,yBAEA,CACA,GAAA+V,GAAA35F,KAAA05F,KACAv5C,GAAA4C,KAAAk4B,EAAA2e,eAAA,SAAA5/F,EAAA6/F,GACAA,KAAA,eACAF,EAAA/+F,KAAAi/F,OASA5e,EAAAngF,UAAAsgF,iBAAA,WACA,GAAAp7E,KAAA05F,GAAAh/F,OAAA,EACA,MAAAsF,MAAA05F,GAAA,EAGA,MAAA/9F,OAAA,4BAOAs/E,EAAAngF,UAAAkjF,iBAAA,WACA,MAAAh+E,MAAA05F,GAAAh/F,OAAA,EACAsF,KAAA05F,GAAA,GAGA,MAGAze,IAEAnhF,GAAAmhF,oB3Es9cM,SAAUlhF,EAAQD,EAASH,GAEjC,Y4ExidAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GAMA6lF,EAAA,WAIA,QAAAA,GAAA7E,GACA36E,KAAA26E,KACA36E,KAAA85F,oBACA95F,KAAA+5F,mBAAA,EACA/5F,KAAAg6F,oBAAA,EACAh6F,KAAAi6F,QAAA,KAiDA,MA/CAza,GAAA1kF,UAAAqlF,WAAA,SAAA+Z,EAAAl4F,GACAhC,KAAAg6F,mBAAAE,EACAl6F,KAAAi6F,QAAAj4F,EACAhC,KAAAg6F,mBAAAh6F,KAAA+5F,qBACA/5F,KAAAi6F,UACAj6F,KAAAi6F,QAAA,OAUAza,EAAA1kF,UAAAulF,eAAA,SAAA8Z,EAAA7vF,GACA,GAAAhI,GAAAtC,IACAA,MAAA85F,iBAAAK,GAAA7vF,CAwBA,KAvBA,GAsBA8vF,GAAAp6F,KACAA,KAAA85F,iBAAA95F,KAAA+5F,qBAEA,UAzBA,WACA,GAAAM,GAAAD,EAAAN,iBAAAM,EAAAL,0BACAK,GAAAN,iBAAAM,EAAAL,mBAQA,QAAA//F,GAAA,EAA2BA,EAAAqgG,EAAA3/F,SAAsBV,GAPjD,SAAAA,GACAqgG,EAAArgG,IACAmmD,EAAAiE,eAAA,WACA9hD,EAAAq4E,GAAA0f,EAAArgG,OAKAA,EAEA,IAAAogG,EAAAL,qBAAAK,EAAAJ,mBAKA,MAJAI,GAAAH,UACAG,EAAAH,UACAG,EAAAH,QAAA,MAEA,OAEAG,GAAAL,4BASAva,IAEA1lF,GAAA0lF,kB5EgkdM,SAAUzlF,EAAQD,EAASH,GAEjC,Y6ErodA,IAAAqb,GAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,OAGAva,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACA0mD,EAAA1mD,EAAA,GACA2mD,EAAA3mD,EAAA,GACA4mD,EAAA5mD,EAAA,GACAq6E,EAAAr6E,EAAA,IAMA4/D,EAAA,SAAAhkD,GAQA,QAAAgkD,GAAAjB,EAAAkB,EAAA2a,GACA,GAAA7xE,GAAAiT,EAAArb,KAAA8F,WAaA,OAZAsC,GAAAg2D,IACAh2D,EAAAk3D,KACAl3D,EAAA6xE,KAEA7xE,EAAAy6D,GAAA3c,EAAAmB,WAAA,WAOAj/C,EAAAiyE,MACAjyE,EA6HA,MAlJA0S,GAAAukD,EAAAhkD,GAuBAgkD,EAAAz+D,UAAA68E,YAAA,SAAAnY,GACA,KAAA7jE,OAAA,4BAQA49D,EAAA+gC,GAAA,SAAAr2C,EAAAuW,GACA,WAAA5+D,KAAA4+D,EACA,OAAAA,GAGAra,EAAAv5C,OAAAq9C,EAAAknB,iBAAAiL,YAAA,kDACAnyB,KAAAtG,OAIA4b,EAAAz+D,UAAAmgE,OAAA,SAAAhX,EAAAwW,EAAAD,EAAAE,GACA,GAAAp4D,GAAAtC,KACAslD,EAAArB,KAAAtG,IACA39C,MAAA+8D,GAAA,qBAAAzX,EAAA,IAAArB,EAAAgpB,kBAEA,IAAAstB,GAAAhhC,EAAA+gC,GAAAr2C,EAAAuW,GACAggC,IACAx6F,MAAAu0E,GAAAgmB,GAAAC,CACA,IAAAC,GAAAx2C,EACAknB,iBACAuvB,6BACA16F,MAAA26F,GAAAr1C,EAAA,QAAAm1C,EAAA,SAAAz8F,EAAAxD,GACA,GAAA8P,GAAA9P,CAQA,IAPA,MAAAwD,IACAsM,EAAA,KACAtM,EAAA,MAEA,OAAAA,GACAsE,EAAAk3D,GAAAlU,EAAAh7C,GAAA,EAAAkwD,GAEAla,EAAA/1C,QAAAjI,EAAAiyE,GAAAgmB,KAAAC,EAAA,CACA,GAAAI,EAKAA,GAJA58F,EAGA,KAAAA,EACA,oBAGA,cAAAA,EANA,KAQA08D,EAAAkgC,EAAA,UAKArhC,EAAAz+D,UAAAsgE,SAAA,SAAAnX,EAAAuW,GACA,GAAA+/B,GAAAhhC,EAAA+gC,GAAAr2C,EAAAuW,SACAx6D,MAAAu0E,GAAAgmB,IAGAhhC,EAAAz+D,UAAAg/D,iBAAA,SAAApmD,KAYA6lD,EAAAz+D,UAAA6/F,GAAA,SAAAr1C,EAAAu1C,EAAA74F,GACA,GAAAM,GAAAtC,SACA,KAAA66F,IAA+CA,MAC/CA,EAAA,gBACA76F,KAAAm0E,GACAryE,UAAA,GACAS,KAAA,SAAAu4F,GACA,GAAAC,GAAAD,KAAAliE,WACAmiE,KACAF,EAAA,KAAAE,EAEA,IAAAt3D,IAAAnhC,EAAAg2D,EAAA+C,OAAA,sBACA/4D,EAAAg2D,EAAA/5C,KACA+mC,EACA,IACA/E,EAAA7rC,YAAAmmF,EACAv4F,GAAAy6D,GAAA,4BAAAt5B,EACA,IAAAu3D,GAAA,GAAA9tE,eACA8tE,GAAA5pF,mBAAA,WACA,GAAApP,GAAA,IAAAg5F,EAAA/rE,WAAA,CACA3sB,EAAAy6D,GAAA,qBAAAt5B,EAAA,qBAAAu3D,EAAA9rE,OAAA,YAAA8rE,EAAA5rE,aACA,IAAAjkB,GAAA,IACA,IAAA6vF,EAAA9rE,QAAA,KAAA8rE,EAAA9rE,OAAA,KACA,IACA/jB,EAAAk1C,EAAAn2C,SAAA8wF,EAAA5rE,cAEA,MAAAj0B,GACAilD,EAAAryC,KAAA,qCACA01B,EACA,KACAu3D,EAAA5rE,cAEAptB,EAAA,KAAAmJ,OAIA,OAAA6vF,EAAA9rE,QAAA,MAAA8rE,EAAA9rE,QACAkxB,EAAAryC,KAAA,sCACA01B,EACA,YACAu3D,EAAA9rE,QAEAltB,EAAAg5F,EAAA9rE,OAEAltB,GAAA,OAGAg5F,EAAA78E,KAAA,MAAAslB,GAAA,GACAu3D,EAAA1sE,UAGAirC,GACCya,EAAAiG,cACDngF,GAAAy/D,sB7E6pdM,SAAUx/D,EAAQD,EAASH,GAEjC,Y8E10dAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACAymD,EAAAzmD,EAAA,GACAyvD,EAAAzvD,EAAA,IACAwvD,EAAAxvD,EAAA,GACAkwE,EAAAlwE,EAAA,IACAmwE,EAAAnwE,EAAA,IACA8rF,EAAA9rF,EAAA,IACAshG,EAAAthG,EAAA,KACAuhG,EAAAvhG,EAAA,IACA0mD,EAAA1mD,EAAA,GAOA6nE,EAAA,WACA,QAAAA,KACAxhE,KAAAm7F,IAAA,EACAn7F,KAAAo7F,IAAA,EACAp7F,KAAAq7F,IAAA,EACAr7F,KAAAs7F,IAAA,EACAt7F,KAAAu7F,IAAA,EACAv7F,KAAAw7F,GAAA,EACAx7F,KAAAy7F,GAAA,GACAz7F,KAAA07F,GAAA,KACA17F,KAAA27F,GAAA,GACA37F,KAAA47F,GAAA,KACA57F,KAAA67F,GAAA,GACA77F,KAAAmjE,GAAAha,EAAAJ,eAmWA,MA9VAyY,GAAA1mE,UAAAuvE,SAAA,WACA,MAAArqE,MAAAo7F,IAKA55B,EAAA1mE,UAAAghG,eAAA,WACA,WAAA97F,KAAAy7F,GAKAz7F,KAAAo7F,GAGAp7F,KAAAy7F,KAAAj6B,EAAAu6B,GAAAC,gBAOAx6B,EAAA1mE,UAAAwvE,mBAAA,WAEA,MADAnqB,GAAAv5C,OAAA5G,KAAAo7F,GAAA,oCACAp7F,KAAA07F,IAOAl6B,EAAA1mE,UAAA6vE,kBAAA,WAEA,MADAxqB,GAAAv5C,OAAA5G,KAAAo7F,GAAA,oCACAp7F,KAAAq7F,GACAr7F,KAAA27F,GAGAv7C,EAAA+B,UAMAqf,EAAA1mE,UAAAyvE,OAAA,WACA,MAAAvqE,MAAAs7F,IAMA95B,EAAA1mE,UAAA0vE,iBAAA,WAEA,MADArqB,GAAAv5C,OAAA5G,KAAAs7F,GAAA,kCACAt7F,KAAA47F,IAOAp6B,EAAA1mE,UAAA8vE,gBAAA,WAEA,MADAzqB,GAAAv5C,OAAA5G,KAAAs7F,GAAA,kCACAt7F,KAAAu7F,GACAv7F,KAAA67F,GAGAz7C,EAAAgC,UAMAof,EAAA1mE,UAAAkwE,SAAA,WACA,MAAAhrE,MAAAm7F,IAKA35B,EAAA1mE,UAAAmwE,iBAAA,WACA,MAAAjrE,MAAAm7F,IAAA,KAAAn7F,KAAAy7F,IAMAj6B,EAAA1mE,UAAAmhG,SAAA,WAEA,MADA97C,GAAAv5C,OAAA5G,KAAAm7F,GAAA,oCACAn7F,KAAAw7F,IAKAh6B,EAAA1mE,UAAAorE,SAAA,WACA,MAAAlmE,MAAAmjE,IAMA3B,EAAA1mE,UAAAohG,GAAA,WACA,GAAAhmC,GAAA,GAAAsL,EAaA,OAZAtL,GAAAilC,GAAAn7F,KAAAm7F,GACAjlC,EAAAslC,GAAAx7F,KAAAw7F,GACAtlC,EAAAklC,GAAAp7F,KAAAo7F,GACAllC,EAAAwlC,GAAA17F,KAAA07F,GACAxlC,EAAAmlC,GAAAr7F,KAAAq7F,GACAnlC,EAAAylC,GAAA37F,KAAA27F,GACAzlC,EAAAolC,GAAAt7F,KAAAs7F,GACAplC,EAAA0lC,GAAA57F,KAAA47F,GACA1lC,EAAAqlC,GAAAv7F,KAAAu7F,GACArlC,EAAA2lC,GAAA77F,KAAA67F,GACA3lC,EAAAiN,GAAAnjE,KAAAmjE,GACAjN,EAAAulC,GAAAz7F,KAAAy7F,GACAvlC,GAMAsL,EAAA1mE,UAAAqxE,MAAA,SAAAgwB,GACA,GAAA5vB,GAAAvsE,KAAAk8F,IAIA,OAHA3vB,GAAA4uB,IAAA,EACA5uB,EAAAivB,GAAAW,EACA5vB,EAAAkvB,GAAA,GACAlvB,GAMA/K,EAAA1mE,UAAAoxE,aAAA,SAAAiwB,GACA,GAAA5vB,GAAAvsE,KAAAk8F,IAIA,OAHA3vB,GAAA4uB,IAAA,EACA5uB,EAAAivB,GAAAW,EACA5vB,EAAAkvB,GAAAj6B,EAAAu6B,GAAAC,eACAzvB,GAMA/K,EAAA1mE,UAAAsxE,YAAA,SAAA+vB,GACA,GAAA5vB,GAAAvsE,KAAAk8F,IAIA,OAHA3vB,GAAA4uB,IAAA,EACA5uB,EAAAivB,GAAAW,EACA5vB,EAAAkvB,GAAAj6B,EAAAu6B,GAAAK,gBACA7vB,GAOA/K,EAAA1mE,UAAA8xE,QAAA,SAAAhkB,EAAAvnD,GACA,GAAAkrE,GAAAvsE,KAAAk8F,IAcA,OAbA3vB,GAAA6uB,IAAA,MACAx/F,KAAAgtD,IACAA,EAAA,MAEA2jB,EAAAmvB,GAAA9yC,EACA,MAAAvnD,GACAkrE,EAAA8uB,IAAA,EACA9uB,EAAAovB,GAAAt6F,IAGAkrE,EAAA8uB,IAAA,EACA9uB,EAAAovB,GAAA,IAEApvB,GAOA/K,EAAA1mE,UAAA+xE,MAAA,SAAAjkB,EAAAvnD,GACA,GAAAkrE,GAAAvsE,KAAAk8F,IAcA,OAbA3vB,GAAA+uB,IAAA,MACA1/F,KAAAgtD,IACAA,EAAA,MAEA2jB,EAAAqvB,GAAAhzC,MACAhtD,KAAAyF,GACAkrE,EAAAgvB,IAAA,EACAhvB,EAAAsvB,GAAAx6F,IAGAkrE,EAAAgvB,IAAA,EACAhvB,EAAAsvB,GAAA,IAEAtvB,GAMA/K,EAAA1mE,UAAA0xE,QAAA,SAAAvgB,GACA,GAAAsgB,GAAAvsE,KAAAk8F,IAEA,OADA3vB,GAAApJ,GAAAlX,EACAsgB,GAKA/K,EAAA1mE,UAAAkyE,eAAA,WACA,GAAAqvB,GAAA76B,EAAAu6B,GACA36F,IAaA,IAZApB,KAAAo7F,KACAh6F,EAAAi7F,EAAAC,mBAAAt8F,KAAA07F,GACA17F,KAAAq7F,KACAj6F,EAAAi7F,EAAAE,kBAAAv8F,KAAA27F,KAGA37F,KAAAs7F,KACAl6F,EAAAi7F,EAAAG,iBAAAx8F,KAAA47F,GACA57F,KAAAu7F,KACAn6F,EAAAi7F,EAAAI,gBAAAz8F,KAAA67F,KAGA77F,KAAAm7F,GAAA,CACA/5F,EAAAi7F,EAAAK,OAAA18F,KAAAw7F,EACA,IAAAmB,GAAA38F,KAAAy7F,EACA,MAAAkB,IAEAA,EADA38F,KAAA87F,iBACAO,EAAAL,eAGAK,EAAAD,iBAGAh7F,EAAAi7F,EAAAO,WAAAD,EAMA,MAHA38F,MAAAmjE,KAAAha,EAAAJ,iBACA3nD,EAAAi7F,EAAAQ,OAAA78F,QAAAmjE,IAEA/hE,GAKAogE,EAAA1mE,UAAAy3E,aAAA,WACA,QAAAvyE,KAAAo7F,IAAAp7F,KAAAs7F,IAAAt7F,KAAAm7F,KAKA35B,EAAA1mE,UAAAs7E,UAAA,WACA,MAAAp2E,MAAAuyE,gBAAAvyE,KAAAmjE,IAAAha,EAAAJ,gBAKAyY,EAAA1mE,UAAAqzF,cAAA,WACA,MAAAnuF,MAAAuyE,eACA,GAAAkT,GAAA/f,cAAA1lE,KAAAkmE,YAEAlmE,KAAAgrE,WACA,GAAAiwB,GAAA6B,cAAA98F,MAGA,GAAAk7F,GAAAxV,aAAA1lF,OAQAwhE,EAAA1mE,UAAA4/F,4BAAA,WACA,GAAAqC,GAAAv7B,EAAAw7B,GACAC,IACA,IAAAj9F,KAAAo2E,YACA,MAAA6mB,EAEA,IAAAzwB,EAmCA,OAlCAxsE,MAAAmjE,KAAAha,EAAAJ,eACAyjB,EAAAuwB,EAAAh0C,eAEA/oD,KAAAmjE,KAAA0G,EAAAiB,YACA0B,EAAAuwB,EAAAjyB,YAEA9qE,KAAAmjE,KAAA/Z,EAAAsE,UACA8e,EAAAuwB,EAAArvC,WAGAvN,EAAAv5C,OAAA5G,KAAAmjE,aAAA2G,GAAAe,UAAA,4BACA2B,EAAAxsE,QAAAmjE,IAEA85B,EAAAF,EAAAG,UAAA78C,EAAAh2C,UAAAmiE,GACAxsE,KAAAo7F,KACA6B,EAAAF,EAAAI,UAAA98C,EAAAh2C,UAAArK,KAAA07F,IACA17F,KAAAq7F,KACA4B,EAAAF,EAAAI,WAAA,IAAA98C,EAAAh2C,UAAArK,KAAA27F,MAGA37F,KAAAs7F,KACA2B,EAAAF,EAAAK,QAAA/8C,EAAAh2C,UAAArK,KAAA47F,IACA57F,KAAAu7F,KACA0B,EAAAF,EAAAK,SAAA,IAAA/8C,EAAAh2C,UAAArK,KAAA67F,MAGA77F,KAAAm7F,KACAn7F,KAAA87F,iBACAmB,EAAAF,EAAAM,gBAAAr9F,KAAAw7F,GAGAyB,EAAAF,EAAAO,eAAAt9F,KAAAw7F,IAGAyB,GAQAz7B,EAAAu6B,IACAO,kBAAA,KACAC,iBAAA,KACAC,gBAAA,KACAC,eAAA,KACAC,MAAA,IACAE,UAAA,KACAZ,eAAA,IACAI,gBAAA,IACAS,MAAA,KAQAr7B,EAAAw7B,IACAE,SAAA,UACAn0C,eAAA,YACA+hB,YAAA,SACApd,UAAA,OACAyvC,SAAA,UACAC,OAAA,QACAC,eAAA,eACAC,cAAA,eAOA97B,EAAAC,QAAA,GAAAD,GACAA,IAEA1nE,GAAA0nE,e9Ek2dM,SAAUznE,EAAQD,EAASH,GAEjC,Y+EvueAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAg9F,GAAAvhG,EAAA,IACA+4D,EAAA/4D,EAAA,GACA8tD,EAAA9tD,EAAA,GACAwmD,EAAAxmD,EAAA,GACA8rE,EAAA9rE,EAAA,GAOAmjG,EAAA,WAIA,QAAAA,GAAAloF,GACA5U,KAAAu9F,GAAA,GAAArC,GAAAxV,aAAA9wE,GACA5U,KAAAmjE,GAAAvuD,EAAAsxD,WACAlmE,KAAAw7F,GAAA5mF,EAAAqnF,WACAj8F,KAAAw9F,IAAA5oF,EAAAknF,iBA0NA,MArNAgB,GAAAhiG,UAAAowD,YAAA,SAAAkR,EAAA/6D,EAAAmjE,EAAAnI,EAAA3rD,EAAAi1D,GAIA,MAHA3lE,MAAAu9F,GAAArX,QAAA,GAAAz+B,GAAAc,UAAAlnD,EAAAmjE,MACAA,EAAA9R,EAAAnJ,aAAAP,YAEAoT,EAAAhS,kBAAA/oD,GAAAmlD,OAAAge,GAEApI,EAEAA,EAAAhR,cAAAprD,KAAAw7F,GACAx7F,KAAAu9F,GACAt3B,mBACA/a,YAAAkR,EAAA/6D,EAAAmjE,EAAAnI,EAAA3rD,EAAAi1D,GAGA3lE,KAAAy9F,GAAArhC,EAAA/6D,EAAAmjE,EAAA9zD,EAAAi1D,IAMAm3B,EAAAhiG,UAAAgrE,eAAA,SAAArU,EAAAsU,EAAAJ,GACA,GAAAsN,EACA,IAAAlN,EAAA9b,cAAA8b,EAAAj7D,UAEAmoE,EAAAvgB,EAAAnJ,aAAAP,WAAAyE,UAAAztD,KAAAmjE,QAGA,MAAAnjE,KAAAw7F,GAAAz1B,EAAA3a,eACA2a,EAAAlY,UAAA7tD,KAAAmjE,IAAA,CAEA8P,EAAAvgB,EAAAnJ,aAAAP,WAAAyE,UAAAztD,KAAAmjE,GAEA,IAAAjW,OAAA,EAEAA,GADAltD,KAAAw9F,GACAz3B,EAAAxY,uBAAAvtD,KAAAu9F,GAAAtX,aAAAjmF,KAAAmjE,IAGA4C,EAAA/Y,gBAAAhtD,KAAAu9F,GAAAvX,eAAAhmF,KAAAmjE,GAGA,KADA,GAAA9X,GAAA,EACA6B,EAAA4I,WAAAzK,EAAArrD,KAAAw7F,IAAA,CACA,GAAA5jF,GAAAs1C,EAAAG,UACAqwC,MAAA,EASA,MAPAA,EADA19F,KAAAw9F,GAEAx9F,KAAAmjE,GAAAvb,QAAA5nD,KAAAu9F,GAAAvX,eAAApuE,IAAA,EAIA5X,KAAAmjE,GAAAvb,QAAAhwC,EAAA5X,KAAAu9F,GAAAtX,eAAA,GAQA,KALAhT,KAAAxoB,qBAAA7yC,EAAA1a,KAAA0a,EAAAkkB,MACAuvB,SAQA,CAEA4nB,EAAAlN,EAAAtY,UAAAztD,KAAAmjE,IAEA8P,IAAA/oB,eAAAwI,EAAAnJ,aAAAP,WACA,IAAAiE,OAAA,GACAO,MAAA,GACAjH,MAAA,GACA2G,MAAA,EACA,IAAAltD,KAAAw9F,GAAA,CACAtwC,EAAA+lB,EAAA3lB,mBAAAttD,KAAAmjE,IACAlW,EAAAjtD,KAAAu9F,GAAAtX,aACAz4B,EAAAxtD,KAAAu9F,GAAAvX,cACA,IAAA2X,GAAA39F,KAAAmjE,GAAA3P,YACAjN,GAAA,SAAAlwC,EAAA1O,GAA2C,MAAAg2F,GAAAh2F,EAAA0O,QAG3C62C,GAAA+lB,EAAAlmB,YAAA/sD,KAAAmjE,IACAlW,EAAAjtD,KAAAu9F,GAAAvX,eACAx4B,EAAAxtD,KAAAu9F,GAAAtX,aACA1/B,EAAAvmD,KAAAmjE,GAAA3P,YAIA,KAFA,GAAAnI,GAAA,EACAuyC,GAAA,EACA1wC,EAAA4I,WAAA,CACA,GAAAl+C,GAAAs1C,EAAAG,WACAuwC,GAAAr3C,EAAA0G,EAAAr1C,IAAA,IAEAgmF,GAAA,EAEA,IAAAF,GAAAE,GAAAvyC,EAAArrD,KAAAw7F,IAAAj1C,EAAA3uC,EAAA41C,IAAA,CACAkwC,GACAryC,IAGA4nB,IAAAxoB,qBAAA7yC,EAAA1a,KAAAw1D,EAAAnJ,aAAAP,aAKA,MAAAhpD,MAAAu9F,GACAt3B,mBACAH,eAAArU,EAAAwhB,EAAAtN,IAKAm3B,EAAAhiG,UAAAovD,eAAA,SAAAuH,EAAA3G,GAEA,MAAA2G,IAKAqrC,EAAAhiG,UAAAkrE,aAAA,WACA,UAKA82B,EAAAhiG,UAAAmrE,iBAAA,WACA,MAAAjmE,MAAAu9F,GAAAt3B,oBAKA62B,EAAAhiG,UAAAorE,SAAA,WACA,MAAAlmE,MAAAmjE,IAWA25B,EAAAhiG,UAAA2iG,GAAA,SAAArhC,EAAArK,EAAAkS,EAAAvzD,EAAAmtF,GAEA,GAAAt3C,EACA,IAAAvmD,KAAAw9F,GAAA,CACA,GAAAM,GAAA99F,KAAAmjE,GAAA3P,YACAjN,GAAA,SAAAlwC,EAAA1O,GAAmC,MAAAm2F,GAAAn2F,EAAA0O,QAGnCkwC,GAAAvmD,KAAAmjE,GAAA3P,YAEA,IAAA2/B,GAAA/2B,CACAjc,GAAAv5C,OAAAusF,EAAA/nC,eAAAprD,KAAAw7F,GAAA,GACA,IAAAuC,GAAA,GAAAt2C,GAAAc,UAAAwJ,EAAAkS,GACA+5B,EAAAh+F,KAAAw9F,GACArK,EAAA1mC,cAAAzsD,KAAAmjE,IACAgwB,EAAAxmC,aAAA3sD,KAAAmjE,IACAu6B,EAAA19F,KAAAu9F,GAAArX,QAAA6X,EACA,IAAA5K,EAAA3oC,SAAAuH,GAAA,CAGA,IAFA,GAAAksC,GAAA9K,EAAA/oC,kBAAA2H,GACAmT,EAAAx0D,EAAA+iF,mBAAAzzF,KAAAmjE,GAAA66B,EAAAh+F,KAAAw9F,IACA,MAAAt4B,IACAA,EAAAhoE,MAAA60D,GAAAohC,EAAA3oC,SAAA0a,EAAAhoE,QAIAgoE,EAAAx0D,EAAA+iF,mBAAAzzF,KAAAmjE,GAAA+B,EAAAllE,KAAAw9F,GAEA,IAAAU,GAAA,MAAAh5B,EAAA,EAAA3e,EAAA2e,EAAA64B,EAEA,IADAL,IAAAz5B,EAAAn5D,WAAAozF,GAAA,EAKA,MAHA,OAAAL,GACAA,EAAAh4B,iBAAAJ,EAAAlU,OAAAY,mBAAAJ,EAAAkS,EAAAg6B,IAEA9K,EAAA1oC,qBAAAsH,EAAAkS,EAGA,OAAA45B,GACAA,EAAAh4B,iBAAAJ,EAAAlU,OAAAU,mBAAAF,EAAAksC,GAEA,IAAAxP,GAAA0E,EAAA1oC,qBAAAsH,EAAAW,EAAAnJ,aAAAP,WAEA,OADA,OAAAkc,GAAAllE,KAAAu9F,GAAArX,QAAAhhB,IAEA,MAAA24B,GACAA,EAAAh4B,iBAAAJ,EAAAlU,OAAAO,iBAAAoT,EAAAhoE,KAAAgoE,EAAAppC,OAEA2yD,EAAAhkC,qBAAAya,EAAAhoE,KAAAgoE,EAAAppC,OAGA2yD,EAIA,MAAAxqB,GAAAn5D,UAEAsxD,EAEAshC,GACAn3C,EAAAy3C,EAAAD,IAAA,GACA,MAAAF,IACAA,EAAAh4B,iBAAAJ,EAAAlU,OAAAU,mBAAA+rC,EAAA9gG,KAAA8gG,EAAAliE,OACA+hE,EAAAh4B,iBAAAJ,EAAAlU,OAAAO,iBAAAC,EAAAkS,KAEAkvB,EACA1oC,qBAAAsH,EAAAkS,GACAxZ,qBAAAuzC,EAAA9gG,KAAAw1D,EAAAnJ,aAAAP,aAOAoT,GAGA0gC,IAEAhjG,GAAAgjG,iB/E+veM,SAAU/iG,EAAQD,EAASH,GAEjC,YgFj/eAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAoBAigG,GApBAh+C,EAAAxmD,EAAA,GACA2tE,EAAA3tE,EAAA,IACA8sF,EAAA9sF,EAAA,IACA80D,EAAA90D,EAAA,GACAykG,EAAAzkG,EAAA,KACAwvD,EAAAxvD,EAAA,GACAymD,EAAAzmD,EAAA,GACA69D,EAAA79D,EAAA,IACAynE,EAAAznE,EAAA,GACA0mD,EAAA1mD,EAAA,GACA89D,EAAA99D,EAAA,IACA+4D,EAAA/4D,EAAA,GACAunE,EAAAvnE,EAAA,KASA,SAAAwkG,GAIAA,IAAA,aAGAA,IAAA,eAGAA,IAAA,yBAGAA,IAAA,uCAEAA,IAAA,8BACCA,EAAArkG,EAAAqkG,oBAAArkG,EAAAqkG,uBAQDj9B,EAAA7I,KAAAgmC,GAAA,GAKAn9B,EAAA7I,KAAAv9D,UAAAo/D,GAAA,WAOAl6D,KAAAs+F,GAAA,GAAAF,GAAAG,MAUAr9B,EAAA7I,KAAAv9D,UAAAynE,iBAAA,SAAA5kB,EAAAukB,EAAAxH,EAAAyH,GACAniE,KAAA+8D,GAAA,kBAAApf,EAEA,IAAAkuB,GAAA,aACA2yB,EAAA,GAAAl3B,GAAAhG,UAAAthE,KAAA29C,EACA6gD,GAAA54F,GAAA,QAAAimE,EACA,IAAA4yB,GAAA,WACAD,EAAAz4F,IAAA,QAAA8lE,IAGAzlC,GACAuX,OACArnC,OAAA4rD,EACAxH,aAEAxrC,OAAA,KAEAwvE,MAAAt+C,EAAAO,gBAEAwhB,eAEAw8B,WAAA,EAEAF,YAEAG,YAAA,KACAC,eAAA,KACAC,qBAAA,KACAC,yBAAA,KACAC,8BAAA,MAGAC,EAAAj/F,KAAAk/F,GAAAvhD,EACAvX,GAAA04D,qBAAAG,CACA,IAAAniC,GAAA12B,EAAA9vB,OAAA2oF,EAAAvxF,MACA,QAAA9R,KAAAkhE,GAKA,GAHA12B,EAAAq4D,YACAr4D,EAAA24D,yBAAA,KACA34D,EAAA44D,8BAAA,KACA54D,EAAAs0B,WAAA,CAEA,GAAA9I,GAAA,GAAA60B,GAAAxjB,aAAA78B,EAAA04D,qBAAA,GAAAx3B,GAAAhG,UAAAthE,KAAAomC,EAAAuX,MAAAwL,EAAAJ,eACA3iB,GAAAs0B,WAAA,QAAA9I,QAGA,CACAwP,EAAAjS,qBAAA,qCAAA2N,EAAA12B,EAAAuX,MAEAvX,EAAAlX,OAAAivE,EAAAgB,GACA,IAAAC,GAAAp/F,KAAAs+F,GAAAe,QAAA1hD,GACA2hD,EAAAF,EAAArqC,cACAuqC,GAAA1kG,KAAAwrC,GACAg5D,EAAAG,SAAAD,EAIA,IAAAE,OAAA,EACA,iBAAA1iC,IACA,OAAAA,GACAzc,EAAA3hD,SAAAo+D,EAAA,cACA0iC,EAAAn/C,EAAA91C,QAAAuyD,EAAA,aACA3c,EAAAv5C,OAAAw6D,EAAApS,gBAAAwwC,GAAA,qHAMAA,GAFAx/F,KAAAg7D,GAAAyW,uBAAA9zB,IACA+U,EAAAnJ,aAAAP,YACAlB,cAAAp6C,MAEA8xF,EAAsDA,CACtD,IAAAxiC,GAAAh9D,KAAAy7D,uBACAwB,EAAAxF,EAAApQ,aAAAyV,EAAA0iC,GACAn3C,EAAAmP,EAAA0F,6BAAAD,EAAAD,EACA52B,GAAA24D,yBAAA9hC,EACA72B,EAAA44D,8BAAA32C,EACAjiB,EAAAy4D,eAAA7+F,KAAA48D,IACA,IAAA1B,GAAAl7D,KAAAg7D,GAAAoC,mBAAAzf,EAAA0K,EAAAjiB,EAAAy4D,eAAAz4D,EAAA+7B,aACAniE,MAAA04D,EAAAyC,0BAAAxd,EAAAud,GACAl7D,KAAAy/F,OASAv+B,EAAA7I,KAAAv9D,UAAAokG,GAAA,SAAAvhD,EAAA+hD,GACA,MAAA1/F,MAAAg7D,GAAAyW,uBAAA9zB,EAAA+hD,IACAhtC,EAAAnJ,aAAAP,YAYAkY,EAAA7I,KAAAv9D,UAAA2kG,GAAA,SAAA3jE,GACA,GAAAx5B,GAAAtC,IAMA,QALA,KAAA87B,IAA0BA,EAAA97B,KAAAs+F,IAE1BxiE,GACA97B,KAAA2/F,GAAA7jE,GAEA,OAAAA,EAAAi5B,WAAA,CACA,GAAArwD,GAAA1E,KAAA4/F,GAAA9jE,EACAqkB,GAAAv5C,OAAAlC,EAAAhK,OAAA,2CACAgK,EAAA+G,MAAA,SAAA26B,GAAyD,MAAAA,GAAAlX,SAAAivE,EAAAgB,OAGzDn/F,KAAA6/F,GAAA/jE,EAAA6hB,OAAAj5C,OAGAo3B,GAAA2nC,eACA3nC,EAAA4vB,aAAA,SAAAC,GACArpD,EAAAm9F,GAAA9zC,MAWAuV,EAAA7I,KAAAv9D,UAAA+kG,GAAA,SAAAliD,EAAAj5C,GASA,OARApC,GAAAtC,KAEA8/F,EAAAp7F,EAAAzF,IAAA,SAAA8gG,GACA,MAAAA,GAAAlB,iBAEAmB,EAAAhgG,KAAAk/F,GAAAvhD,EAAAmiD,GACAG,EAAAD,EACAE,EAAAF,EAAAp0C,OACA5xD,EAAA,EAAmBA,EAAA0K,EAAAhK,OAAkBV,IAAA,CACrC,GAAA+lG,GAAAr7F,EAAA1K,EACAmmD,GAAAv5C,OAAAm5F,EAAA7wE,SAAAivE,EAAAgB,IAAA,iEACAY,EAAA7wE,OAAAivE,EAAAgC,KACAJ,EAAApB,YACA,IAAA74C,GAAA2I,EAAA7J,KAAAkB,aAAAnI,EAAAoiD,EAAApiD,KAEAsiD,KAAA/0C,YAAApF,EAAyEi6C,EAAAhB,0BAEzE,GAAAqB,GAAAH,EAAAvyF,KAAA,GACA2yF,EAAA1iD,CAEA39C,MAAAs5D,EAAAxa,IAAAuhD,KAAAD,EAAA,SAAAlxE,GACA5sB,EAAAy6D,GAAA,4BACApf,KAAA0iD,KACAnxE,UAEA,IAAAgsC,KACA,WAAAhsC,EAAA,CAIA,OADAq8C,MACAvxE,EAAA,EAA2BA,EAAA0K,EAAAhK,OAAkBV,IAAA,CAG7C,GAFA0K,EAAA1K,GAAAk1B,OAAAivE,EAAAmC,UACAplC,IAAAv2D,OAAArC,EAAA04D,GAAAyC,aAAA/4D,EAAA1K,GAAA6kG,iBACAn6F,EAAA1K,GAAA0gE,WAAA,CAEA,GAAA5+B,GAAAp3B,EAAA1K,GAAAglG,8BACArwF,EAAA,GAAA24D,GAAAhG,UAAAh/D,EAAAoC,EAAA1K,GAAA2jD,MACAiU,EAAA,GAAA60B,GAAAxjB,aAAAnnC,EAAAntB,EAAAw6C,EAAAJ,eACAwiB,GAAA3wE,KAAA8J,EAAA1K,GAAA0gE,WAAAx6D,KAAA,aAAA0xD,IAEAltD,EAAA1K,GAAAykG,YAGAn8F,EAAAq9F,GAAAr9F,EAAAg8F,GAAAe,QAAA1hD,IAEAr7C,EAAAm9F,KACAn9F,EAAAo2D,EAAAyC,0BAAAxd,EAAAud,EAEA,QAAAlhE,GAAA,EAA2BA,EAAAuxE,EAAA7wE,OAAsBV,IACjDomD,EAAAgE,eAAAmnB,EAAAvxE,QAGA,CAEA,iBAAAk1B,EACA,OAAAl1B,GAAA,EAA+BA,EAAA0K,EAAAhK,OAAkBV,IACjD0K,EAAA1K,GAAAk1B,SAAAivE,EAAAoC,iBACA77F,EAAA1K,GAAAk1B,OAAAivE,EAAAqC,YAEA97F,EAAA1K,GAAAk1B,OAAAivE,EAAAgB,QAGA,CACA/+C,EAAAryC,KAAA,kBAAAsyF,EAAA,YAAAnxE,EACA,QAAAl1B,GAAA,EAA+BA,EAAA0K,EAAAhK,OAAkBV,IACjD0K,EAAA1K,GAAAk1B,OAAAivE,EAAAqC,YACA97F,EAAA1K,GAAA4kG,YAAA1vE,EAGA5sB,EAAAg6D,GAAA3e,KAEKuiD,IAcLh/B,EAAA7I,KAAAv9D,UAAAwhE,GAAA,SAAA6B,GACA,GAAAsiC,GAAAzgG,KAAA0gG,GAAAviC,GACAxgB,EAAA8iD,EAAA9iD,OACAj5C,EAAA1E,KAAA4/F,GAAAa,EAEA,OADAzgG,MAAA2gG,GAAAj8F,EAAAi5C,GACAA,GASAujB,EAAA7I,KAAAv9D,UAAA6lG,GAAA,SAAAj8F,EAAAi5C,GACA,OAAAj5C,EAAAhK,OAAA,CAcA,OATA6wE,MACArQ,KAEA0lC,EAAAl8F,EAAAxC,OAAA,SAAAgY,GACA,MAAAA,GAAAgV,SAAAivE,EAAAgB,MAEAW,EAAAc,EAAA3hG,IAAA,SAAAib,GACA,MAAAA,GAAA2kF,iBAEA7kG,EAAA,EAAmBA,EAAA0K,EAAAhK,OAAkBV,IAAA,CACrC,GAAAosC,GAAA1hC,EAAA1K,GACA8rD,EAAA2I,EAAA7J,KAAAkB,aAAAnI,EAAAvX,EAAAuX,MACAkjD,GAAA,EAAAjC,MAAA,EAEA,IADAz+C,EAAAv5C,OAAA,OAAAk/C,EAAA,iEACA1f,EAAAlX,SAAAivE,EAAAqC,YACAK,GAAA,EACAjC,EAAAx4D,EAAAw4D,YACA1jC,IAAAv2D,OAAA3E,KAAAg7D,GAAAyC,aAAAr3B,EAAAy4D,gBAAA,QAEA,IAAAz4D,EAAAlX,SAAAivE,EAAAgB,IACA,GAAA/4D,EAAAu4D,YAAAz9B,EAAA7I,KAAAgmC,GACAwC,GAAA,EACAjC,EAAA,WACA1jC,IAAAv2D,OAAA3E,KAAAg7D,GAAAyC,aAAAr3B,EAAAy4D,gBAAA,QAEA,CAEA,GAAAiC,GAAA9gG,KAAAk/F,GAAA94D,EAAAuX,KAAAmiD,EACA15D,GAAA04D,qBAAAgC,CACA,IAAAvX,GAAA7kF,EAAA1K,GAAAsc,OAAAwqF,EAAApzF,MACA,QAAA9R,KAAA2tF,EAAA,CACAnoB,EAAAjS,qBAAA,qCAAAo6B,EAAAnjD,EAAAuX,KACA,IAAAojD,GAAAtpC,EAAApQ,aAAAkiC,GACAyX,EAAA,gBAAAzX,IACA,MAAAA,GACAlpC,EAAA3hD,SAAA6qF,EAAA,YACAyX,KAEAD,IAAA72C,eAAA42C,EAAAh5C,eAEA,IAAAm5C,GAAA76D,EAAAy4D,eACA7hC,EAAAh9D,KAAAy7D,uBACAylC,EAAA1pC,EAAA0F,6BAAA6jC,EAAA/jC,EACA52B,GAAA24D,yBAAAgC,EACA36D,EAAA44D,8BAAAkC,EACA96D,EAAAy4D,eAAA7+F,KAAA48D,KAEAkjC,EAAAjmF,OAAAimF,EAAAnvF,QAAAswF,GAAA,GACA/lC,IAAAv2D,OAAA3E,KAAAg7D,GAAAoC,mBAAAh3B,EAAAuX,KAAAujD,EAAA96D,EAAAy4D,eAAAz4D,EAAA+7B,eACAjH,IAAAv2D,OAAA3E,KAAAg7D,GAAAyC,aAAAwjC,GAAA,QAGAJ,IAAA,EACAjC,EAAA,SACA1jC,IAAAv2D,OAAA3E,KAAAg7D,GAAAyC,aAAAr3B,EAAAy4D,gBAAA,IAMA,GAFA7+F,KAAA04D,EAAAyC,0BAAAxd,EAAAud,GACAA,KACA2lC,IAEAn8F,EAAA1K,GAAAk1B,OAAAivE,EAAAmC,UAGA,SAAA7B,GACA5hG,WAAA4hG,EAAAnuF,KAAA8D,MAAA,KACa1P,EAAA1K,GAAAykG,WACb/5F,EAAA1K,GAAA0gE,YACA,cAAAkkC,EAAA,CACA,GAAAjwF,GAAA,GAAA24D,GAAAhG,UAAAthE,KAAA0E,EAAA1K,GAAA2jD,MAEAwjD,EAAmDz8F,EAAA1K,GAAA8kG,qBACnDltC,EAAA,GAAA60B,GAAAxjB,aAAAk+B,EAAAxyF,EAAAw6C,EAAAJ,eACAwiB,GAAA3wE,KAAA8J,EAAA1K,GAAA0gE,WAAAx6D,KAAA,aAAA0xD,QAGA2Z,GAAA3wE,KAAA8J,EAAA1K,GAAA0gE,WAAAx6D,KAAA,KAAAvE,MAAAijG,IAAA,SAMA5+F,KAAA2/F,GAAA3/F,KAAAs+F,GAEA,QAAAtkG,GAAA,EAAmBA,EAAAuxE,EAAA7wE,OAAsBV,IACzComD,EAAAgE,eAAAmnB,EAAAvxE,GAGAgG,MAAAy/F,OAUAv+B,EAAA7I,KAAAv9D,UAAA4lG,GAAA,SAAA/iD,GAIA,IAHA,GAAA4M,GAEA62C,EAAAphG,KAAAs+F,GACA,QAAA/zC,EAAA5M,EAAAuH,aACA,OAAAk8C,EAAArsC,YACAqsC,IAAA/B,QAAA90C,GACA5M,IAAAyH,UAEA,OAAAg8C,IASAlgC,EAAA7I,KAAAv9D,UAAA8kG,GAAA,SAAAwB,GAEA,GAAAC,KAMA,OALArhG,MAAAshG,GAAAF,EAAAC,GAEAA,EAAAruE,KAAA,SAAA3c,EAAA1O,GACA,MAAA0O,GAAAqoF,MAAA/2F,EAAA+2F,QAEA2C,GAOAngC,EAAA7I,KAAAv9D,UAAAwmG,GAAA,SAAAxlE,EAAAp3B,GACA,GAAApC,GAAAtC,KACAs/F,EAAAxjE,EAAAi5B,UACA,WAAAuqC,EACA,OAAAtlG,GAAA,EAAuBA,EAAAslG,EAAA5kG,OAAsBV,IAC7C0K,EAAA9J,KAAA0kG,EAAAtlG,GAGA8hC,GAAA4vB,aAAA,SAAA/F,GACArjD,EAAAg/F,GAAA37C,EAAAjhD,MASAw8D,EAAA7I,KAAAv9D,UAAA6kG,GAAA,SAAA7jE,GACA,GAAAx5B,GAAAtC,KACA0E,EAAAo3B,EAAAi5B,UACA,IAAArwD,EAAA,CAEA,OADA68F,GAAA,EACAC,EAAA,EAA0BA,EAAA98F,EAAAhK,OAAqB8mG,IAC/C98F,EAAA88F,GAAAtyE,SAAAivE,EAAAmC,YACA57F,EAAA68F,GAAA78F,EAAA88F,GACAD,IAGA78F,GAAAhK,OAAA6mG,EACAzlE,EAAAyjE,SAAA76F,EAAAhK,OAAA,EAAAgK,EAAA,MAEAo3B,EAAA4vB,aAAA,SAAAC,GACArpD,EAAAq9F,GAAAh0C,MAWAuV,EAAA7I,KAAAv9D,UAAA6iE,GAAA,SAAAhgB,GACA,GAAAr7C,GAAAtC,KACAq8D,EAAAr8D,KAAA0gG,GAAA/iD,UACAyjD,EAAAphG,KAAAs+F,GAAAe,QAAA1hD,EAQA,OAPAyjD,GAAAK,gBAAA,SAAA3lE,GACAx5B,EAAAo/F,GAAA5lE,KAEA97B,KAAA0hG,GAAAN,GACAA,EAAAO,kBAAA,SAAA7lE,GACAx5B,EAAAo/F,GAAA5lE,KAEAugC,GAQA6E,EAAA7I,KAAAv9D,UAAA4mG,GAAA,SAAA5lE,GACA,GAAAp3B,GAAAo3B,EAAAi5B,UACA,WAAArwD,EAAA,CAQA,OALA6mE,MAGArQ,KACA0mC,GAAA,EACA5nG,EAAA,EAAuBA,EAAA0K,EAAAhK,OAAkBV,IACzC0K,EAAA1K,GAAAk1B,SAAAivE,EAAAoC,mBAGA77F,EAAA1K,GAAAk1B,SAAAivE,EAAAgC,MACAhgD,EAAAv5C,OAAAg7F,IAAA5nG,EAAA,qDACA4nG,EAAA5nG,EAEA0K,EAAA1K,GAAAk1B,OAAAivE,EAAAoC,iBACA77F,EAAA1K,GAAA4kG,YAAA,QAGAz+C,EAAAv5C,OAAAlC,EAAA1K,GAAAk1B,SAAAivE,EAAAgB,IAAA,0CAEAz6F,EAAA1K,GAAAykG,YACAvjC,IAAAv2D,OAAA3E,KAAAg7D,GAAAyC,aAAA/4D,EAAA1K,GAAA6kG,gBAAA,IACAn6F,EAAA1K,GAAA0gE,YAEA6Q,EAAA3wE,KAAA8J,EAAA1K,GAAA0gE,WAAAx6D,KAAA,KAAAvE,MAAA,UADA,UAKA,IAAAimG,EAEA9lE,EAAAyjE,SAAA,MAIA76F,EAAAhK,OAAAknG,EAAA,EAGA5hG,KAAA04D,EAAAyC,0BAAAr/B,EAAA6hB,OAAAud,EACA,QAAAlhE,GAAA,EAAuBA,EAAAuxE,EAAA7wE,OAAsBV,IAC7ComD,EAAAgE,eAAAmnB,EAAAvxE,OhF4gfM,SAAUD,EAAQD,EAASH,GAEjC,YiF7igBAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAiiD,GAAAxmD,EAAA,GACA80D,EAAA90D,EAAA,GACAymD,EAAAzmD,EAAA,GAIAkoG,EAAA,WACA,QAAAA,KAGA7hG,KAAA8jE,YACA9jE,KAAA8hG,WAAA,EACA9hG,KAAA9B,MAAA,KAEA,MAAA2jG,KAEA/nG,GAAA+nG,UAMA,IAAAtD,GAAA,WAOA,QAAAA,GAAA58F,EAAAogG,EAAAxhC,OACA,KAAA5+D,IAA+BA,EAAA,QAC/B,KAAAogG,IAAiCA,EAAA,UACjC,KAAAxhC,IAA+BA,EAAA,GAAAshC,IAC/B7hG,KAAA2B,KACA3B,KAAA+hG,KACA/hG,KAAAugE,KA0KA,MAlKAg+B,GAAAzjG,UAAAukG,QAAA,SAAA2C,GAIA,IAFA,GACApqF,GADA+lC,EAAAqkD,YAAAvzC,GAAA7J,KAAAo9C,EAAA,GAAAvzC,GAAA7J,KAAAo9C,GACAr8C,EAAA3lD,KACA,QAAA4X,EAAA+lC,EAAAuH,aAEAS,EAAA,GAAA44C,GAAA3mF,EAAA+tC,EADAvF,EAAA71C,QAAAo7C,EAAA4a,GAAAuD,SAAAlsD,IAAA,GAAAiqF,IAEAlkD,IAAAyH,UAEA,OAAAO,IAOA44C,EAAAzjG,UAAAi6D,SAAA,WACA,MAAA/0D,MAAAugE,GAAAriE,OAOAqgG,EAAAzjG,UAAAykG,SAAA,SAAArhG,GACAiiD,EAAAv5C,WAAA,KAAA1I,EAAA,iCACA8B,KAAAugE,GAAAriE,QACA8B,KAAAiiG,MAKA1D,EAAAzjG,UAAAs8C,MAAA,WACAp3C,KAAAugE,GAAAriE,MAAA,KACA8B,KAAAugE,GAAAuD,YACA9jE,KAAAugE,GAAAuhC,WAAA,EACA9hG,KAAAiiG,MAKA1D,EAAAzjG,UAAA2oE,YAAA,WACA,MAAAzjE,MAAAugE,GAAAuhC,WAAA,GAKAvD,EAAAzjG,UAAAgQ,QAAA,WACA,cAAA9K,KAAA+0D,aAAA/0D,KAAAyjE,eAOA86B,EAAAzjG,UAAA4wD,aAAA,SAAAkB,GACA,GAAAtqD,GAAAtC,IACAogD,GAAA3gD,QAAAO,KAAAugE,GAAAuD,SAAA,SAAAne,EAAA2e,GACA1X,EAAA,GAAA2xC,GAAA54C,EAAArjD,EAAAgiE,OAYAi6B,EAAAzjG,UAAA6mG,kBAAA,SAAA/0C,EAAAs1C,EAAAC,GACAD,IAAAC,GACAv1C,EAAA5sD,MACAA,KAAA0rD,aAAA,SAAA/F,GACAA,EAAAg8C,kBAAA/0C,GAAA,EAAAu1C,KAEAD,GAAAC,GACAv1C,EAAA5sD,OAUAu+F,EAAAzjG,UAAA2mG,gBAAA,SAAA70C,EAAAs1C,GAEA,IADA,GAAApmE,GAAAomE,EAAAliG,UAAAylD,SACA,OAAA3pB,GAAA,CACA,GAAA8wB,EAAA9wB,GACA,QAEAA,KAAA2pB,SAEA,UASA84C,EAAAzjG,UAAAsnG,oCAAA,SAAAx1C,GACA5sD,KAAA0rD,aAAA,SAAA/F,GACA,OAAAA,EAAAoP,WACAnI,EAAAjH,GAEAA,EAAAy8C,oCAAAx1C,MAMA2xC,EAAAzjG,UAAA6iD,KAAA,WACA,UAAA8Q,GAAA7J,KAAA,OAAA5kD,KAAA+hG,GACA/hG,KAAA2B,GACA3B,KAAA+hG,GAAApkD,OAAA,IAAA39C,KAAA2B,KAKA48F,EAAAzjG,UAAAoC,KAAA,WACA,MAAA8C,MAAA2B,IAKA48F,EAAAzjG,UAAA2qD,OAAA,WACA,MAAAzlD,MAAA+hG,IAOAxD,EAAAzjG,UAAAmnG,GAAA,WACA,OAAAjiG,KAAA+hG,IACA/hG,KAAA+hG,GAAAM,GAAAriG,KAAA2B,GAAA3B,OASAu+F,EAAAzjG,UAAAunG,GAAA,SAAAh4C,EAAA1E,GACA,GAAA28C,GAAA38C,EAAA76C,UACAy3F,EAAAniD,EAAA1hD,SAAAsB,KAAAugE,GAAAuD,SAAAzZ,EACAi4C,IAAAC,SACAviG,MAAAugE,GAAAuD,SAAAzZ,GACArqD,KAAAugE,GAAAuhC,aACA9hG,KAAAiiG,MAEAK,GAAAC,IACAviG,KAAAugE,GAAAuD,SAAAzZ,GAAA1E,EAAA4a,GACAvgE,KAAAugE,GAAAuhC,aACA9hG,KAAAiiG,OAGA1D,IAEAzkG,GAAAykG,QjFqkgBM,SAAUxkG,EAAQD,EAASH,GAEjC,YkFvxgBAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAo7F,GAAA3/F,EAAA,IACA0/F,EAAA1/F,EAAA,GAQAG,GAAA0oG,iBAAA,WACAlJ,EAAA1V,oBAAA9C,gBACAuY,EAAAna,sBAAA0B,cAEA9mF,EAAA2oG,gBAAA,WACApJ,EAAAna,sBAAA4B,iBAGAhnF,EAAA0/F,sBAAA,WACA,MAAAF,GAAA1V,oBAAA,eAEA9pF,EAAA4oG,yBAAA,SAAA/zF,EAAA3M,GACA2M,EAAA4yD,KAAAvI,EAAA8b,GAAA9yE,GAEAlI,EAAA0lE,MAAA,SAAA7wD,EAAA8wD,GACA9wD,EAAA4yD,KAAA/B,MAAAC,IAEA3lE,EAAAkmE,sBAAA,SAAArxD,EAAAsxD,GACAtxD,EAAA4yD,KAAAvB,sBAAAC,IAEAnmE,EAAA0+D,gBAAA,SAAA7pD,GACA,MAAAA,GAAA4yD,KAAA/I,iBAEA1+D,EAAA6oG,oBAAA,SAAAh0F,EAAA3M,GACA,MAAA2M,GAAA4yD,KAAAhF,GAAAv6D,KlFgzgBM,SAAUjI,EAAQD,EAASH,GAEjC,YmFp1gBAkB,QAAAwC,eAAAvD,EAAA,cAA8CoE,OAAA,GAC9C,IAAAoqE,GAAA3uE,EAAA,IACAu+D,EAAAv+D,EAAA,IACA4tE,EAAA5tE,EAAA,IACAo6E,EAAAp6E,EAAA,GACAG,GAAA8oG,eAAA1qC,EAAAyB,qBAKAzB,EAAAyB,qBAAA7+D,UAAA+nG,aAAA,SAAAv9C,EAAAoV,GACA16D,KAAAg2E,YAAA,KAA2Bp5E,EAAA0oD,GAAgBoV,IAM3CxC,EAAAyB,qBAAA7+D,UAAAgoG,KAAA,SAAAx4F,EAAAy4F,GACA/iG,KAAAg2E,YAAA,QAA8B/4E,EAAAqN,GAAUy4F,IAGxCjpG,EAAAkpG,mBAAAjvB,EAAAyF,WAKA1/E,EAAAmpG,WAAA,SAAAC,GACA,GAAAC,GAAAjrC,EAAAyB,qBAAA7+D,UAAAgkD,GAOA,OANAoZ,GAAAyB,qBAAA7+D,UAAAgkD,IAAA,SAAAwG,EAAAh7C,EAAA84F,EAAAC,OACAznG,KAAAynG,IACAA,EAAAH,KAEAC,EAAAjpG,KAAA8F,KAAAslD,EAAAh7C,EAAA84F,EAAAC,IAEA,WACAnrC,EAAAyB,qBAAA7+D,UAAAgkD,IAAAqkD,IAMArpG,EAAAwpG,iBAAAh7B,EAAAO,SAKA/uE,EAAAmzE,gBAAA,SAAAhpB,GACA,MAAAA,GAAAgpB,mBAMAnzE,EAAAypG,QAAA,SAAAC,GACA,MAAAA,GAAAjiC,KAAAvI,EAAAub,IAOAz6E,EAAAy+D,gBAAA,SAAAA,GACAgP,EAAAZ,YAAAG,cAAAvO,uBnF42gBG,KACO,MAAMv6D,GACN,KAAUrC,OACR;;;;;;;AoFx7gBZ,IACQ4d,sBAAsB,IAExBkqF,IACA,SAAU1pG,EAAQD,EAASH,GCOjCA,EAAA,MDgBM+pG,IACA,SAAU3pG,EAAQoE,EAAqBxE,GAE7C,YEpBA,SAAAgqG,GAAAC,GACA,GAAAC,GAAA,GAAAx5E,YAAAu5E,EACA,OAAApqG,QAAA6P,KAAA/B,OAAAC,aAAApH,MAAA,KAAA0jG,ICEA,QAAAC,GAAAxd,GACA,GACAyd,GAAA,SAAAvlG,GACA,MAAA/E,OAAA,4BAAAA,MACA,GAAAuqG,GAAAxlG,GAGA,GAAAylG,GAAAzlG,IAEA0lG,GAEAC,UAAAF,EAEA3d,GAAAzlF,SAAA3B,gBAZA,YAYA6kG,EAAAG,GHIArpG,OAAOwC,eAAec,EAAqB,cAAgBD,OAAO,GAGlE,IIoEAkmG,GJpEIxkG,EAAMjG,EAAoB,GIvB9B0qG,GACAC,oBAAA,2BACAC,gBAAA,uBACAC,oBAAA,sBACAC,cAAA,gBACAC,wBAAA,0BACAC,mBAAA,qBACAC,mBAAA,qBACAC,oBAAA,sBACAC,sBAAA,wBACAC,4BAAA,oCACAC,yBAAA,2BACAC,wBAAA,0BACAC,oBAAA,sBACAC,iBAAA,mBACAC,uBAAA,yBACAC,yBAAA,2BACAC,4BAAA,8BACAC,wBAAA,0BACAC,qBAAA,uBACAC,uBAAA,yBACAC,uBAAA,yBACAC,6BAAA,+BACAC,wBAAA,0BACAC,sBAAA,wBACAC,6BAAA,+BACAC,uBAAA,yBACAC,aAAA,eACAC,UAAA,YACAC,cAAA,gBACAC,iBAAA,mBACAC,UAAA,YACAC,aAAA,eACAC,wBAAA,2BAEAC,GAAAnC,KACAA,EAAAC,EAAAC,qBAAA,gDACAF,EAAAC,EAAAE,iBAAA,wDACAH,EAAAC,uBAAA,uDACAD,EAAAC,iBAAA,+GAEAD,EAAAC,sBAAA,mEACAD,EAAAC,sBAAA,iEACAD,EAAAC,uBAAA,2EAEAD,EAAAC,yBAAA,mCACAD,EAAAC,EAAAU,6BAAA,+EAEAX,EAAAC,4BAAA,wDACAD,EAAAC,2BAAA,yEAEAD,EAAAC,uBAAA,+CACAD,EAAAC,oBAAA,6DACAD,EAAAC,0BAAA,kEACAD,EAAAC,4BAAA,2DACAD,EAAAC,+BAAA,8DACAD,EAAAC,2BAAA,oGAEAD,EAAAC,wBAAA,kFAEAD,EAAAC,0BAAA,oFAEAD,EAAAC,0BAAA,mGAEAD,EAAAC,gCAAA,iEACAD,EAAAC,2BAAA,+DACAD,EAAAC,yBAAA,wIAGAD,EAAAC,gCAAA,uHAGAD,EAAAC,0BAAA,8CACAD,EAAAC,gBAAA,uHAEAD,EAAAC,2BAAA,2GAEAD,EAAAC,aAAA,yEAEAD,EAAAC,iBAAA,qEACAD,EAAAC,oBAAA,qDACAD,EAAAC,aAAA,wEAEAD,EAAAC,gBAAA,kFAEAD,EAAAC,2BAAA,sCACAD,GACAnhG,GACAujG,MAAAnC,EACAplG,IAAAsnG,GFtFAE,EAAA,SAAA7C,GAEA,MADAD,GAAAC,GAEAvwF,QAAA,SACAA,QAAA,WACAA,QAAA,YGRAqzF,GACA,EACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,EACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,KAEAC,GACAC,iBAAA,EACAC,qBAAA,GAAAx8E,YAAAq8E,IAEAI,GACAC,SAAA,6BACAC,uBAAAN,EACAO,qBAAAN,GCtEAO,EAAA,yBAEAC,EAAA,WACA,QAAAC,KACApnG,KAAAqnG,EAAA,GAAAznG,GAAA,qCAAAqD,EAAAhE,KACAe,KAAAsnG,EAAA,KAgVA,MAzUAF,GAAAtsG,UAAAysG,EAAA,WACA,MAAAvnG,MAAAsnG,EACAtnG,KAAAsnG,GAEAtnG,KAAAsnG,EAAA,GAAAxrG,SAAA,SAAAC,EAAAE,GACA,GAAA+gC,GAAAxJ,UAAArV,KAAAipF,EAAAI,QAhBA,EAiBAxqE,GAAA1hC,QAAA,SAAAmV,GACAxU,EAAAwU,EAAAmB,OAAA5T,QAEAg/B,EAAA+I,UAAA,SAAAt1B,GACA1U,EAAA0U,EAAAmB,OAAApX,SAEAwiC,EAAA4I,gBAAA,SAAAn1B,GACA,GAAAykC,GAAAzkC,EAAAmB,OAAApX,OACA0rC,EAAAgP,EAAArP,kBAAAqhE,GACAphE,QAAA,WAGAI,GAAAuhE,YAAA,6BACAC,QAAA,IAEAxhE,EAAAuhE,YAAA,uBACAC,QAAA,OAIA1nG,KAAAsnG,IAMAF,EAAAtsG,UAAA6sG,cAAA,WACA,GAAArlG,GAAAtC,IACA,OAAAA,MAAAsnG,EACAtnG,KAAAsnG,EAAA/kG,KAAA,SAAA2yC,GACAA,EAAAzmC,QACAnM,EAAAglG,EAAA,OAGAxrG,QAAAC,WAQAqrG,EAAAtsG,UAAA8sG,yBAAA,SAAAC,GACA,MAAA7nG,MAAAunG,IAAAhlG,KAAA,SAAA2yC,GACA,UAAAp5C,SAAA,SAAAC,EAAAE,GACA,GAAAmqC,GAAA8O,EAAA9O,aAAA8gE,IACAhhE,EAAAE,EAAAF,YAAAghE,GACAj7C,EAAA/lB,EAAA+lB,MAAA,YACAjvB,EAAAivB,EAAAzuD,IAAAqqG,EACA7qE,GAAA1hC,QAAA,SAAAmV,GACAxU,EAAAwU,EAAAmB,OAAA5T,QAEAg/B,EAAA+I,UAAA,SAAAt1B,GACA1U,EAAA0U,EAAAmB,OAAApX,cAKA4sG,EAAAtsG,UAAAgtG,EAAA,SAAAC,GACA,MAAA/nG,MAAAunG,IAAAhlG,KAAA,SAAA2yC,GACA,UAAAp5C,SAAA,SAAAC,EAAAE,GACA,GAAAmqC,GAAA8O,EAAA9O,aAAA8gE,IACAhhE,EAAAE,EAAAF,YAAAghE,GACAc,EAAA9hE,EAAA1oC,IAAAuqG,EACAC,GAAA1sG,QAAA,SAAAmV,GACAxU,EAAAwU,EAAAmB,OAAA5T,QAEAgqG,EAAAjiE,UAAA,SAAAt1B,GACA1U,EAAA0U,EAAAmB,OAAApX,cAKA4sG,EAAAtsG,UAAAmtG,EAAA,SAAAC,GACA,MAAAloG,MAAAunG,IAAAhlG,KAAA,SAAA2yC,GACA,UAAAp5C,SAAA,SAAAC,EAAAE,GACA,GAAAmqC,GAAA8O,EAAA9O,aAAA8gE,IACAhhE,EAAAE,EAAAF,YAAAghE,GACAiB,KACAC,EAAAliE,EAAA+Y,YACAmpD,GAAA9sG,QAAA,SAAAmV,GACAxU,EAAAwU,EAAAmB,OAAA5T,QAEAoqG,EAAAriE,UAAA,SAAAt1B,GACA,GAAA43F,GAAA53F,EAAAmB,OAAApX,MACA6tG,IACAA,EAAAnqG,MAAA,cAAAgqG,GACAC,EAAAvtG,KAAAytG,EAAAnqG,OAEAmqG,EAAAC,YAGAvsG,EAAAosG,SAgBAf,EAAAtsG,UAAAytG,eAAA,SAAAL,EAAAM,EAAAC,GACA,GAAAnmG,GAAAtC,KACA0oG,EAAAjC,EAAA+B,EAAA,kBACA3tE,EAAA4rE,EAAA+B,EAAA,gBACAG,EAAA,qBAAAT,EAAA,aACAM,EAAA5oE,SAAA,mBACA8oE,EAAA,oBACA7tE,CACA4tE,KACAE,GAAA,YAAAF,EAEA,IAAAp7E,GAAA,GAAAu7E,QACAv7E,GAAAw7E,OAAA,mDACA,IAAAC,IACAvxF,OAAA,OACA8V,UACAmW,KAAAmlE,EAEA,OAAAI,OAAAjC,EAAAC,SAAA,yBAAA+B,GACAvmG,KAAA,SAAAw1C,GAAuC,MAAAA,GAAA0a,SACvClwD,KAAA,SAAAw1C,GACA,GAAAixD,GAAAjxD,CACA,IAAAixD,EAAA,OACA,GAAAliG,GAAAkiG,EAAA,aACA,MAAA1mG,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAApB,wBACAt+F,YAGA,IAAAkiG,EAAA,MACA,KAAA1mG,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAnB,yBAEA,KAAA2D,EAAA,QACA,KAAA1mG,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAlB,4BAEA,QACA5xF,MAAAs1F,EAAA,MACAP,QAAAO,EAAA,YAeA5B,EAAAtsG,UAAAmuG,EAAA,SAAAT,EAAAU,GAGA,MAAAV,GAAA5oE,WAAAspE,EAAA,UACAzC,EAAA+B,EAAA,kBACAU,EAAA,MACAzC,EAAA+B,EAAA,oBACAU,EAAA,QAeA9B,EAAAtsG,UAAAquG,EAAA,SAAAjB,EAAAkB,EAAAZ,EAAAX,EAAAwB,GACA,GAAAC,IACAvB,QAAAqB,EAAAG,MACA3pE,SAAA4oE,EAAA5oE,SACA/E,KAAA4rE,EAAA+B,EAAA,gBACAE,OAAAjC,EAAA+B,EAAA,kBACAX,WACAwB,aACAG,YAAAtB,EAEA,OAAAloG,MAAAunG,IAAAhlG,KAAA,SAAA2yC,GACA,UAAAp5C,SAAA,SAAAC,EAAAE,GACA,GAAAmqC,GAAA8O,EAAA9O,aAAA8gE,GAAA,aACAhhE,EAAAE,EAAAF,YAAAghE,GACAlqE,EAAAkJ,EAAA4Y,IAAAwqD,EACAtsE,GAAA1hC,QAAA,SAAAmV,GACAxU,EAAAwU,EAAAmB,OAAA5T,QAEAg/B,EAAA+I,UAAA,SAAAt1B,GACA1U,UAgBAqrG,EAAAtsG,UAAA2uG,cAAA,SAAAvB,EAAAkB,GACA,GAAA9mG,GAAAtC,IACA,OAAAopG,aAAAM,2BAGA,gBAAAxB,IAAA,IAAAA,EAAAxtG,OACAoB,QAAAG,OAAA+D,KAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAA/B,gBAEAzkG,KAAAioG,EAAAC,GACA3lG,KAAA,SAAAonG,GACA,OAAAA,EAAAjvG,OAAA,CAGA,GAAAuxD,GAAA09C,EAAAj4F,UAAA,SAAAk4F,GACA,MAAAR,GAAAG,QAAAK,EAAA,SACA1B,IAAA0B,EAAA,aAEA,SAAA39C,EAGA,MAAA09C,GAAA19C,MAEA1pD,KAAA,SAAAqnG,GACA,GAAAA,EAGA,MAAAR,GAAAS,YACAC,kBACA13F,MAAA,SAAAtU,GACA,KAAAwE,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAvB,2BAEA1iG,KAAA,SAAAimG,GACA,GAAAA,GACAlmG,EAAA2mG,EAAAT,EAAAoB,GACA,MAAAA,GAAA,aA/BA9tG,QAAAG,OAAA+D,KAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAxB,4BAuCAoC,EAAAtsG,UAAAivG,YAAA,SAAA7B,EAAAkB,GACA,GAAA9mG,GAAAtC,IACA,oBAAAkoG,IAAA,IAAAA,EAAAxtG,OACA,MAAAoB,SAAAG,OAAA+D,KAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAA/B,eAEA,MAAA2E,YAAAM,4BACA,MAAA5tG,SAAAG,OAAA+D,KAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAxB,0BAGA,IAAAwD,GACAwB,CACA,OAAAZ,GAAAS,YACAC,kBACAvnG,KAAA,SAAAimG,GACA,MAAAA,IAGAY,EAAAS,YAAA3yF,UAAA4vF,EAAAG,wBAEA1kG,KAAA,SAAAw0B,GAEA,MADAyxE,GAAAzxE,EACAz0B,EAAAimG,eAAAL,EAAAM,KAEAjmG,KAAA,SAAAqnG,GAEA,MADAI,GAAAJ,EACAtnG,EAAA6mG,EAAAjB,EAAAkB,EAAAZ,EAAAwB,EAAA,MAAAA,EAAA,WAEAznG,KAAA,WAA+B,MAAAynG,GAAA,SAU/B5C,EAAAtsG,UAAAmvG,YAAA,SAAAv2F,GACA,GAAApR,GAAAtC,IACA,uBAAA0T,IAAA,IAAAA,EAAAhZ,OACAoB,QAAAG,OAAA+D,KAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAhB,uBAEAxlG,KAAA4nG,yBAAAl0F,GAAAnR,KAAA,SAAA+mG,GACA,IAAAA,EACA,KAAAhnG,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAf,uBAEA,OAAAnjG,GAAAilG,IAAAhlG,KAAA,SAAA2yC,GACA,UAAAp5C,SAAA,SAAAC,EAAAE,GACA,GAAAmqC,GAAA8O,EAAA9O,aAAA8gE,GAAA,aACAhhE,EAAAE,EAAAF,YAAAghE,GACAlqE,EAAAkJ,EAAA7jC,OAAAinG,EAAA,QACAtsE,GAAA1hC,QAAA,SAAAmV,GACAxU,EAAAwU,EAAAmB,OAAA5T,QAEAg/B,EAAA+I,UAAA,SAAAt1B,GACA,OAAAA,EAAAmB,OAAApX,OAEA,WADAyB,GAAAqG,EAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAT,wBAGAhqG,GAAAutG,WAMAlC,KAEA8C,EAAA,ECvVAC,EAAA,oBACAC,EAAA,WAKA,QAAAC,GAAA7rG,GACA,GAAA8D,GAAAtC,IAEA,IADAA,KAAAqnG,EAAA,GAAAznG,GAAA,qCAAAqD,EAAAhE,MACAT,EAAAI,QAAAurG,IACA,gBAAA3rG,GAAAI,QAAAurG,GACA,KAAAnqG,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAA/B,cAEAzkG,MAAAsqG,EAAA9rG,EAAAI,QAAAurG,GACAnqG,KAAAuqG,EAAA,GAAAL,GACAlqG,KAAAxB,MACAwB,KAAAa,YACAb,KAAAa,SAAAwB,OAAA,WAA4C,MAAAC,GAAAD,QA+H5C,MAxHAgoG,GAAAvvG,UAAAgH,SAAA,WACA,GAAAQ,GAAAtC,KAEAwqG,EAAAxqG,KAAAyqG,GACA,OAAAC,YAAAF,EACAE,WAAAF,EACA1uG,QAAAG,OAAA+D,KAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAA1B,wBAGAhpG,QAAAC,QAAA,MAEAiE,KAAA2qG,IAAApoG,KAAA,SAAAwsF,GACA,MAAAzsF,GAAAioG,EACAd,cAAAnnG,EAAAgoG,EAAAvb,GACAxsF,KAAA,SAAAmR,GACA,MAAAA,IAGApR,EAAAioG,EAAAR,YAAAznG,EAAAgoG,EAAAvb,QAWAsb,EAAAvvG,UAAAmvG,YAAA,SAAAv2F,GACA,GAAApR,GAAAtC,IACA,OAAAA,MAAAuqG,EAAAN,YAAAv2F,GAAAnR,KAAA,WACA,MAAAD,GAAAqoG,IACApoG,KAAA,SAAAwsF,GACA,GAAAA,EACA,MAAAA,GAAA8a,YAAAC,oBAGAvnG,KAAA,SAAAimG,GACA,GAAAA,EACA,MAAAA,GAAArpD,mBAKAkrD,EAAAvvG,UAAA6vG,EAAA,WACA,KAAA3qG,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAhC,sBAKA6F,EAAAvvG,UAAA8vG,kBAAA,WACA,KAAA5qG,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAlC,sBAMA+F,EAAAvvG,UAAA+vG,iBAAA,SAAA9b,GACA,KAAA/uF,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAlC,sBASA+F,EAAAvvG,UAAAojF,UAAA,SAAAlmE,EAAA8yF,EAAAC,GACA,KAAA/qG,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAlC,sBAYA+F,EAAAvvG,UAAAkwG,eAAA,SAAAhzF,EAAA8yF,EAAAC,GACA,KAAA/qG,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAlC,sBASA+F,EAAAvvG,UAAAmwG,4BAAA,SAAAjpG,GACA,KAAAhC,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAjC,kBAUA8F,EAAAvvG,UAAAuH,OAAA,WACA,MAAArC,MAAAuqG,EAAA5C,iBAOA0C,EAAAvvG,UAAA2vG,EAAA,WACA,MAAAS,cAAAC,YAMAd,EAAAvvG,UAAAswG,gBAAA,WACA,MAAAprG,MAAAuqG,GAEAF,KAEAgB,EAAA,ECpJAC,GACAC,YAAA,8BACAC,KAAA,+BAIAC,GACAC,kBAAA,oBACAC,qBAAA,wBAEAC,EAAA,SAAAH,EAAAI,GAKA,MAJAzH,MACAA,EAAAkH,EAAAC,aAAAE,EACArH,EAAAkH,EAAAE,MAAAK,EACAzH,CAEA,IAAAA,IAEA0H,GACAR,SACAS,aAAAN,EACAG,gBCvBAI,GACAruD,KAAA,4BACA4rD,MAAA,wCCFAv0F,EAAAhV,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,QASA62F,EAAA,SAAA12F,GAMA,QAAA22F,GAAA1tG,GACA,GAAA8D,GAAAiT,EAAArb,KAAA8F,KAAAxB,IAAAwB,IAgCA,OA3BAsC,GAAA6pG,EAKA7pG,EAAA8pG,EAKA9pG,EAAA+pG,EAAA,KAKA/pG,EAAAq4E,EAAA9/E,OAAA+E,EAAA,0BAAAkY,GACAxV,EAAA+pG,EAAAv0F,IAMAxV,EAAAgqG,EAAA,KACAhqG,EAAAiqG,EAAA1xG,OAAA+E,EAAA,0BAAAkY,GACAxV,EAAAgqG,EAAAx0F,IAEAxV,EAAAkqG,IACAlqG,EAuQA,MA7SA0S,GAAAk3F,EAAA32F,GAiDA22F,EAAApxG,UAAAgH,SAAA,WACA,GAAAQ,GAAAtC,IAEA,OAAAA,MAAAysG,IAGAzsG,KAAA0sG,IAAAnqG,KAAA,WACA,MAAAgT,GAAAza,UAAAgH,SAAA5H,KAAAoI,KAHAxG,QAAAG,OAAA+D,KAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAA3B,uBAaAqH,EAAApxG,UAAA4xG,EAAA,WACA,GAAApqG,GAAAtC,IACA,IAAAA,KAAAosG,EACA,MAAApsG,MAAAosG,CAEA,IAAAO,GAAAxwG,SAAAywG,cAAA,uBA0BA,OArBA5sG,MAAAosG,EAJAO,EAIA5D,MAAA4D,EAAAn8E,MACAjuB,KAAA,SAAAw1C,GACA,MAAAA,GAAA0a,SAEArgD,MAAA,WAGA,MAAAtW,SAAAC,YAEAwG,KAAA,SAAAsqG,GACA,GAAAA,GAGAA,EAAA,eAGA,iBAAAA,EAAA,cACA,KAAAvqG,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAA9B,2BApBA5oG,QAAAC,UAwBAiE,KAAAosG,GAQAF,EAAApxG,UAAA8vG,kBAAA,WACA,GAAAtoG,GAAAtC,IACA,OAAA0qG,YAAAQ,aAAAC,WACArvG,QAAAC,UAEA,GAAAD,SAAA,SAAAC,EAAAE,GACA,GAAA6wG,GAAA,SAAAtyG,GACA,MAAAkwG,YAAAlwG,EACAuB,IAGAE,EADAyuG,WAAAlwG,EACA8H,EAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAA5B,oBAGAtiG,EAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAA7B,sBAMAoI,EAAA7B,aAAAN,kBAAA,SAAApwG,GACAuyG,GAIAD,EAAAtyG,IAEAuyG,IAEAA,EAAAxqG,KAAAuqG,MAWAZ,EAAApxG,UAAA+vG,iBAAA,SAAA9b,GACA,KAAAA,YAAA2a,4BACA,KAAA1pG,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAxB,yBAEA,aAAAhlG,KAAAmsG,EACA,KAAAnsG,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAjB,wBAEAvlG,MAAAmsG,EAAApd,GAYAmd,EAAApxG,UAAAojF,UAAA,SAAAlmE,EAAA8yF,EAAAC,GACA,MAAA/qG,MAAA26E,EAAA3iE,EAAA8yF,EAAAC,IAYAmB,EAAApxG,UAAAkwG,eAAA,SAAAhzF,EAAA8yF,EAAAC,GACA,MAAA/qG,MAAAusG,EAAAv0F,EAAA8yF,EAAAC,IAWAmB,EAAApxG,UAAAkyG,EAAA,SAAAje,GACA,GAAAzsF,GAAAtC,KACAitG,EAAAle,EAAAme,YAAAne,EAAAoe,SAAApe,EAAA5/E,MACA,WAAArT,SAAA,SAAAC,EAAAE,GACA,IAAAgxG,EAGA,WADAhxG,GAAAqG,EAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAR,cAKA,kBAAAiH,EAAAG,MAEA,WADArxG,GAAAgzF,EAGA,kBAAAke,EAAAG,MAEA,WADAnxG,GAAAqG,EAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAArB,kBAGA,IAAAkI,GAAA,WACA,iBAAAJ,EAAAG,MACArxG,EAAAgzF,OAEA,kBAAAke,EAAAG,MAKA,MAJAnxG,GAAAqG,EAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAArB,mBAMA8H,EAAA/lF,oBAAA,cAAAmmF,GAEAJ,GAAAr8F,iBAAA,cAAAy8F,MASAnB,EAAApxG,UAAA6vG,EAAA,WACA,GAAAroG,GAAAtC,IACA,OAAAA,MAAAmsG,EACAnsG,KAAAgtG,EAAAhtG,KAAAmsG,IAIAnsG,KAAAmsG,EAAA,KACA75F,UAAA26F,cACA9oE,SAAA6nE,EAAAruD,MACA4rD,MAAAyC,EAAAzC,QAEAn3F,MAAA,SAAAtU,GACA,KAAAwE,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAzB,6BACAuI,oBAAAxvG,EAAAgJ,YAGAvE,KAAA,SAAAwsF,GACA,MAAAzsF,GAAA0qG,EAAAje,GAAAxsF,KAAA,WAMA,MALAD,GAAA6pG,EAAApd,EAIAA,EAAAz4E,SACAy4E,QAWAmd,EAAApxG,UAAA0xG,EAAA,WACA,GAAAlqG,GAAAtC,IACA,kBAAAsS,YAGAA,UAAA26F,cAAAr8F,iBAAA,mBAAAH,GACA,GAAAA,EAAAnG,MAAAmG,EAAAnG,KAAAwhG,EAAAR,OAAAC,aAAA,CAIA,GAAAgC,GAAA98F,EAAAnG,IACA,QAAAijG,EAAAzB,EAAAR,OAAAC,cACA,IAAAO,GAAAC,aAAAL,kBACA,IAAAI,GAAAC,aAAAJ,qBACA,GAAA6B,GAAAD,EAAAzB,EAAAR,OAAAE,KACAlpG,GAAA+pG,EAAAz0F,KAAA41F,OAMS,IAOTtB,EAAApxG,UAAA2xG,EAAA,WACA,uBAAAn6F,YACA,eAAA9Y,SACA,gBAAAA,SACA,SAAAA,SACAkwG,0BAAA5uG,UAAAC,eAAA,qBACA0yG,iBAAA3yG,UAAAC,eAAA,WAEAmxG,GACCb,GACDpH,EAAA,EChUAyJ,EAAA1tG,WAAAgV,WAAA,WACA,GAAAC,GAAApa,OAAAqa,iBACUC,uBAAgB9P,QAAA,SAAApI,EAAA0K,GAAsC1K,EAAAkY,UAAAxN,IAChE,SAAA1K,EAAA0K,GAAyB,OAAA/K,KAAA+K,KAAA5M,eAAA6B,KAAAK,EAAAL,GAAA+K,EAAA/K,IACzB,iBAAAK,EAAA0K,GAEA,QAAAyN,KAAuBpV,KAAA4N,YAAA3Q,EADvBgY,EAAAhY,EAAA0K,GAEA1K,EAAAnC,UAAA,OAAA6M,EAAA9M,OAAAsG,OAAAwG,IAAAyN,EAAAta,UAAA6M,EAAA7M,UAAA,GAAAsa,QAQAu4F,EAAA,SAAAp4F,GAEA,QAAAq4F,GAAApvG,GACA,GAAA8D,GAAAiT,EAAArb,KAAA8F,KAAAxB,IAAAwB,IASA,OARAvG,MAAAmX,iBAAA,gBAAAzV,GAAoD,MAAAmH,GAAAurG,EAAA1yG,KAA2B,GAC/E1B,KAAAmX,iBAAA,kCAAAzV,GAAsE,MAAAmH,GAAAwrG,EAAA3yG,KAAgC,GACtG1B,KAAAmX,iBAAA,6BAAAzV,GAAiE,MAAAmH,GAAAyrG,EAAA5yG,KAAwC,GAKzGmH,EAAA0rG,EAAA,KACA1rG,EAwQA,MAnRAorG,GAAAE,EAAAr4F,GA0BAq4F,EAAA9yG,UAAA+yG,EAAA,SAAAp9F,GACA,GACAw9F,GADA3rG,EAAAtC,IAEA,KACAiuG,EAAAx9F,EAAAnG,KAAAmoD,OAEA,MAAA30D,GAEA,OAEA,GAAAowG,GAAAluG,KAAAmuG,IAAA5rG,KAAA,SAAA6rG,GACA,GAAAA,GAEA,GAAAH,EAAAI,cAAA/rG,EAAA0rG,EAEA,MAAA1rG,GAAAgsG,EAAAL,OAJA,CAQA,GAAAM,GAAAjsG,EAAAksG,EAAAP,EACA,IAAAM,EAAA,CACA,GAAAE,GAAAF,EAAAjpG,OAAA,EACA,OAAA7L,MAAAs1F,aAAA2f,iBAAAD,EAAAF,GAEA,GAAAjsG,EAAA0rG,EACA,MAAA1rG,GAAA0rG,EAAAC,KAGAx9F,GAAAk+F,UAAAT,IAKAN,EAAA9yG,UAAAgzG,EAAA,SAAAr9F,GACA,GAAAnO,GAAAtC,KACA4uG,EAAA5uG,KAAA8B,WAAAS,KAAA,SAAAmR,GACA,IAAAA,EAEA,KAAApR,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAV,6BAEA,IAAA8D,GAAA,KACAiF,EAAAvsG,EAAA8oG,iBACA,OAAAyD,GACAjH,yBAAAl0F,GACAnR,KAAA,SAAA+mG,GAEA,KADAM,EAAAN,GAEA,KAAAhnG,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAtB,oBAGA,OAAAzrG,MAAAs1F,aAAA8a,YAAA3yF,UAAA4vF,EAAAG,wBAEA1kG,KAAA,SAAAusG,GAEA,MAAAD,GAAAtG,eAAAqB,EAAAJ,YAAAsF,EAAAlF,EAAAP,cAEAj3F,MAAA,SAAAtU,GAGA,MAAA+wG,GAAA5E,YAAAL,EAAA/B,UAAAtlG,KAAA,WACA,KAAAD,GAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAX,uBACA/+F,QAAAhJ,SAKA2S,GAAAk+F,UAAAC,IAKAhB,EAAA9yG,UAAAizG,EAAA,SAAAt9F,GACA,GAAAnO,GAAAtC,IACA,IAAAyQ,EAAA49F,cACA59F,EAAA49F,aAAA/jG,MACAmG,EAAA49F,aAAA/jG,KAAA,QAFA,CAOAmG,EAAAs+F,2BACAt+F,EAAA49F,aAAA5/F,OACA,IAAAw/F,GAAAx9F,EAAA49F,aAAA/jG,KAAA,QACA0kG,EAAAf,EAAA,yBACA,IAAAe,EAAA,CAIA,GAAAJ,GAAA5uG,KAAAivG,EAAAD,GACAzsG,KAAA,SAAA2sG,GACA,MAAAA,IAEAz1G,KAAA01G,QAAAC,WAAAJ,KAIAzsG,KAAA,SAAA2sG,GACA,GAAAA,EAAA,CAKAjB,EAAA,mBACAA,GAAA,YACA,IAAAoB,GAAAvD,EAAAF,aAAAE,EAAAC,aAAAJ,qBAAAsC,EAGA,OAAA3rG,GAAAgtG,EAAAJ,EAAAG,KAEA5+F,GAAAk+F,UAAAC,MAOAhB,EAAA9yG,UAAA0zG,EAAA,SAAAP,GACA,GAAAA,GAGA,gBAAAA,GAAAI,aAAA,CAGA,GAAAkB,GAAA10G,OAAA20G,UAAsDvB,EAAAI,aAQtD,OAHAkB,GAAA,MAAAnL,KACAA,EAAA,QAAA6J,EACA7J,GACAmL,CACA,IAAAnL,KAiBAwJ,EAAA9yG,UAAAmwG,4BAAA,SAAAjpG,GACA,GAAAA,GAAA,kBAAAA,GACA,KAAAhC,MAAAqnG,EAAAlmG,OAAA8B,EAAAujG,MAAAb,6BAEA3lG,MAAAguG,EAAAhsG,GAQA4rG,EAAA9yG,UAAAm0G,EAAA,SAAAxrE,GAGA,GAAAokC,GAAA,GAAA4nC,KAAAhsE,GAAAjT,IACA,OAAA/2B,MAAA01G,QACAO,UACApzG,KAAA,SACAqzG,qBAAA,IAEAptG,KAAA,SAAAqtG,GAEA,OADAC,GAAA,KACA71G,EAAA,EAA2BA,EAAA41G,EAAAl1G,OAAuBV,IAElD,GADA,GAAAy1G,KAAAG,EAAA51G,GAAAypC,KAAAjT,OACAq3C,EAAA,CACAgoC,EAAAD,EAAA51G,EACA,OAGA,GAAA61G,EAEA,MADAA,GAAAz9E,QACAy9E,KAaAjC,EAAA9yG,UAAAw0G,EAAA,SAAAvyE,EAAAj2B,GACA,GAAAxE,GAAAtC,IACA,WAAAlE,SAAA,SAAAC,EAAAE,GACA,IAAA8gC,EACA,MAAA9gC,GAAAqG,EAAA+kG,EAAAlmG,OAAA8B,EAAAujG,MAAAZ,yBAEA7oE,GAAA/sB,YAAAlJ,GACA/K,OAQA6xG,EAAA9yG,UAAAqzG,EAAA,WACA,MAAA10G,MAAA01G,QACAO,UACApzG,KAAA,SACAqzG,qBAAA,IAEAptG,KAAA,SAAAqtG,GACA,MAAAA,GAAA56D,KAAA,SAAAjY,GAAsD,kBAAAA,EAAAvI,qBAUtDo5E,EAAA9yG,UAAAwzG,EAAA,SAAAL,GACA,GAAA3rG,GAAAtC,IACA,OAAAvG,MAAA01G,QACAO,UACApzG,KAAA,SACAqzG,qBAAA,IAEAptG,KAAA,SAAAqtG,GACA,GAAAP,GAAAvD,EAAAF,aAAAE,EAAAC,aAAAL,kBAAAuC,EACA,OAAAnyG,SAAA6G,IAAAitG,EAAA3wG,IAAA,SAAA89B,GACA,MAAAz6B,GAAAgtG,EAAAvyE,EAAAsyE,SAUAzB,EAAA9yG,UAAA6vG,EAAA,WACA,MAAA7uG,SAAAC,QAAAtC,KAAAs1F,eAEA6e,GACCvC,GACDrH,EAAA,EX4uCI8L,EAAMn2G,EAAoB,EGjiD9BwE,GAAA,kBAAA2lG,EAkCAA,EAAAgM,EAAA,YH4iDG,MACO,MAAM9xG,GACN,KAAUrC,OACR;;;;;;;AY5kDZ,IACQ4d,sBAAsB,IAExBw2F,IACA,SAAUh2G,EAAQD,EAASH,GCOjCA,EAAA,MDgBMq2G,IACA,SAAUj2G,EAAQoE,EAAqBxE,GAE7C,YE2DA,SAAAs2G,GAAAhvG,GACA,iBAAAA,EAEA,QAAAmpC,KAGA,UAAA8lE,IAAAC,GAAAC,QAFA,kFAIA,QAAAC,GAAA1yD,GACA,UAAAuyD,IAAAC,GAAAG,iBAAA,WAAA3yD,EAAA,qBAQA,QAAA4yD,GAAAC,GACA,UAAAN,IAAAC,GAAA1tE,eAAA,qBACA+tE,EACA,0EAGA,QAAAC,KAGA,UAAAP,IAAAC,GAAAO,gBAFA,+FAIA,QAAAC,GAAAhzD,GACA,UAAAuyD,IAAAC,GAAAS,aAAA,4CAAAjzD,EAAA,MAEA,QAAAkzD,KACA,UAAAX,IAAAC,GAAAW,qBAAA,4DAWA,QAAAC,KACA,UAAAb,IAAAC,GAAAa,SAAA,sCAKA,QAAAC,GAAAxtE,GACA,UAAAysE,IAAAC,GAAAe,YAAA,gBAAAztE,EAAA,MAEA,QAAA0tE,GAAAX,GACA,UAAAN,IAAAC,GAAAiB,uBAAA,2BAAAZ,EAAA,MAQA,QAAAa,KACA,UAAAnB,IAAAC,GAAAmB,kBAAA,0DAEA,QAAAC,KACA,UAAArB,IAAAC,GAAAqB,uBAAA,wEAEA,QAAAC,KACA,UAAAvB,IAAAC,GAAAuB,gBAAA,mDAEA,QAAAC,GAAA1lD,EAAA3zC,EAAAxR,GACA,UAAAopG,IAAAC,GAAAyB,iBAAA,wBAAAt5F,EAAA,cAAA2zC,EAAA,KAAAnlD,GAEA,QAAA+qG,GAAAC,EAAAC,EAAAz5F,EAAA05F,GACA,GAAAC,GACAC,CASA,OARAJ,KAAAC,GACAE,EAAAH,EACAI,EAAA,IAAAJ,EAAA,yBAGAG,EAAA,WAAAH,EAAA,QAAAC,EACAG,EAAA,aAEA,GAAAhC,IAAAC,GAAAgC,uBAAA,8BACA75F,EACA,eACA25F,EACA,IACAC,EACA,cACAF,EACA,KAEA,QAAAI,KACA,UAAAlC,IAAAC,GAAAkC,YAAA,iCAKA,QAAAC,GAAAp1G,GACA,UAAAgzG,IAAAC,GAAAoC,uBAAA,kBACAr1G,EACA,mHAOA,QAAAs1G,GAAAC,EAAA3rG,GACA,UAAAopG,IAAAC,GAAAuC,eAAA,iCAAAD,EAAA,MAAA3rG,GAKA,QAAA6rG,GAAA7rG,GACA,SAAAopG,IAAAC,GAAAyC,eAAA,mBAAA9rG,GC7LA,QAAA+rG,GAAAC,GACA,OAAAA,GACA,IAAAC,IAAAC,IACA,IAAAD,IAAAE,OACA,IAAAF,IAAAG,UACA,IAAAH,IAAAI,SACA,MACA,SACA,0CACAJ,GAAAC,IACA,KACAD,GAAAE,OACA,KACAF,GAAAG,UACA,KACAH,GAAAI,SACA,MAcA,QAAAC,GAAAX,EAAA9hD,GACA,OAAA8hD,GACA,IAAAM,IAAAC,IACA,UAAAK,IAAAC,EAAA3iD,GACA,KAAAoiD,IAAAE,OACA,IAAAF,IAAAG,UACA,UAAAG,IAAAE,EAAAd,EAAA9hD,GACA,KAAAoiD,IAAAI,SACA,UAAAE,IAAAG,EAAA7iD,GAAA8iD,EAAA9iD,IAGA,KAAAvmB,KAEA,QAAAkpE,GAAA3iD,GAEA,OADAhpD,MACA3N,EAAA,EAAmBA,EAAA22D,EAAAj2D,OAAmBV,IAAA,CACtC,GAAAgD,GAAA2zD,EAAAxpD,WAAAnN,EACA,IAAAgD,GAAA,IACA2K,EAAA/M,KAAAoC,OAGA,IAAAA,GAAA,KACA2K,EAAA/M,KAAA,IAAAoC,GAAA,SAAAA,OAGA,kBAAAA,GAAA,CAEA,GAAA02G,GAAA15G,EAAA22D,EAAAj2D,OAAA,GACA,cAAAi2D,EAAAxpD,WAAAnN,EAAA,GACA,IAAA05G,EAIA,CACA,GAAA/0E,GAAA3hC,EACA22G,EAAAhjD,EAAAxpD,aAAAnN,EACAgD,GAAA,YAAA2hC,IAAA,QAAAg1E,EACAhsG,EAAA/M,KAAA,IAAAoC,GAAA,OAAAA,GAAA,UAAAA,GAAA,YAAAA,OANA2K,GAAA/M,KAAA,iBAUA,eAAAoC,GAEA2K,EAAA/M,KAAA,aAGA+M,EAAA/M,KAAA,IAAAoC,GAAA,OAAAA,GAAA,YAAAA,GAMA,UAAAqtB,YAAA1iB,GAEA,QAAAisG,GAAAjjD,GACA,GAAAp8C,EACA,KACAA,EAAA6W,mBAAAulC,GAEA,MAAAx1D,GACA,KAAAq3G,GAAAO,GAAAI,SAAA,uBAEA,MAAAG,GAAA/+F,GAEA,QAAAg/F,GAAAd,EAAA9hD,GACA,OAAA8hD,GACA,IAAAM,IAAAE,OACA,GAAAY,IAAA,IAAAljD,EAAAhgD,QAAA,KACAmjG,GAAA,IAAAnjD,EAAAhgD,QAAA,IACA,IAAAkjG,GAAAC,EAAA,CACA,GAAAC,GAAAF,EAAA,OACA,MAAArB,GAAAC,EAAA,sBACAsB,EACA,qCAEA,KAEA,KAAAhB,IAAAG,UACA,GAAAc,IAAA,IAAArjD,EAAAhgD,QAAA,KACAsjG,GAAA,IAAAtjD,EAAAhgD,QAAA,IACA,IAAAqjG,GAAAC,EAAA,CACA,GAAAF,GAAAC,EAAA,OACA,MAAAxB,GAAAC,EAAA,sBAAAsB,EAAA,kCAEApjD,IAAAt9C,QAAA,UAAAA,QAAA,UAIA,GAAAhM,EACA,KACAA,EAAAY,KAAA0oD,GAEA,MAAAx1D,GACA,KAAAq3G,GAAAC,EAAA,2BAGA,OADAxtG,GAAA,GAAAolB,YAAAhjB,EAAA3M,QACAV,EAAA,EAAmBA,EAAAqN,EAAA3M,OAAkBV,IACrCiL,EAAAjL,GAAAqN,EAAAF,WAAAnN,EAEA,OAAAiL,GAwBA,QAAAuuG,GAAA7iD,GACA,GAAA78C,GAAA,GAAAogG,IAAAvjD,EACA,OAAA78C,GAAArM,OACA8rG,EAAAR,GAAAE,OAAAn/F,EAAAqgG,MAGAP,EAAA9/F,EAAAqgG,MAGA,QAAAV,GAAA9iD,GAEA,MADA,IAAAujD,IAAAvjD,GACAzY,YAEA,QAAAk8D,GAAAn5G,EAAAo5G,GAEA,SADAp5G,EAAAP,QAAA25G,EAAA35G,SAIAO,EAAAkwB,UAAAlwB,EAAAP,OAAA25G,EAAA35G,UAAA25G,ECzJA,QAAAC,GAAAlH,GACA,OAAAA,GACA,IAAAmH,IAAAC,QACA,IAAAD,IAAAE,QACA,IAAAF,IAAAG,UACA,MAAAC,IAAAH,OACA,KAAAD,IAAAK,OACA,MAAAD,IAAAC,MACA,KAAAL,IAAAM,QACA,MAAAF,IAAAE,OACA,KAAAN,IAAAvD,SACA,MAAA2D,IAAA3D,QACA,KAAAuD,IAAAO,MAEA,QAEA,MAAAH,IAAAG,OCtCA,QAAAp2G,GAAA0C,EAAA4Q,GACA,MAAAnX,QAAAC,UAAAC,eAAAb,KAAAkH,EAAA4Q,GAEA,QAAAvS,GAAA2B,EAAA6J,GACA,OAAA5J,KAAAD,GACA1C,EAAA0C,EAAAC,IACA4J,EAAA5J,EAAAD,EAAAC,IAIA,QAAAuJ,GAAAxJ,GACA,SAAAA,EACA,QAEA,IAAApE,KAIA,OAHAyC,GAAA2B,EAAA,SAAAC,EAAAqM,GACA1Q,EAAAqE,GAAAqM,IAEA1Q,ECZA,QAAA+3G,GAAAC,GACA,UAAAl5G,SAAAk5G,GAKA,QAAAC,GAAA/2G,GACA,MAAApC,SAAAC,QAAAmC,GAEA,QAAAg3G,GAAAl3G,GACA,MAAAlC,SAAAG,OAAA+B,GChBA,QAAAm3G,GAAAv4G,GACA,aAAAA,EAEA,QAAAw4G,GAAAx4G,GACA,gBAAAA,EAEA,QAAAy4G,GAAAz4G,GACA,wBAAAA,GAEA,QAAA04G,GAAA14G,GACA,sBAAAA,GAEA,QAAAiO,GAAAjO,GACA,MAAA04G,GAAA14G,IAAA,OAAAA,EAEA,QAAA24G,GAAA34G,GACA,MAAA04G,GAAA14G,KAAAyI,MAAAgD,QAAAzL,GAEA,QAAA44G,GAAA54G,GACA,sBAAAA,gBAAA0K,QAEA,QAAAmuG,GAAA74G,GACA,sBAAAA,gBAAA0mB,QAEA,QAAAoyF,GAAA94G,GACA,MAAA+4G,MAAA/4G,YAAAg5G,MAEA,QAAAD,KACA,yBAAAC,MC1BA,QAAAC,GAAA56G,GACA,GAAAmG,EACA,KACAA,EAAA+I,KAAAC,MAAAnP,GAEA,MAAAE,GACA,YAEA,MAAAo6G,GAAAn0G,GACAA,EAGA,KCXA,QAAA00G,GAAAn4D,GACA,MAAAA,EAAAjjD,OACA,WAEA,IAAAuxD,GAAAtO,EAAAh7B,YAAA,IACA,YAAAspC,EACA,GAEAtO,EAAAn2C,MAAA,EAAAykD,GAGA,QAAAtG,GAAAhI,EAAA4lB,GACA,GAAAwyC,GAAAxyC,EACAxvD,MAAA,KACA7R,OAAA,SAAA8zG,GACA,MAAAA,GAAAt7G,OAAA,IAEAyO,KAAA,IACA,YAAAw0C,EAAAjjD,OACAq7G,EAGAp4D,EAAA,IAAAo4D,EASA,QAAAE,GAAAt4D,GACA,GAAAsO,GAAAtO,EAAAh7B,YAAA,IAAAg7B,EAAAjjD,OAAA,EACA,YAAAuxD,EACAtO,EAGAA,EAAAn2C,MAAAykD,EAAA,GCtCA,QAAAiqD,GAAAC,GACA,MAAAC,IAAAC,GAAAF,EAEA,QAAAG,GAAAH,GACA,MAAAI,IAAAF,GAAAF,EAEA,QAAAK,GAAAL,GACA,MAAAC,IAAAK,GAAAN,EAEA,QAAAO,IAAA9hG,GACA,GAAA+hG,GAAA7hG,mBACA8hG,EAAA,GAOA,OANAn3G,GAAAmV,EAAA,SAAAvT,EAAAqM,GACA,GAAAmpG,GAAAF,EAAAt1G,GAAA,IAAAs1G,EAAAjpG,EACAkpG,KAAAC,EAAA,MAGAD,IAAApvG,MAAA,MCjBA,QAAAsvG,IAAAroE,EAAAvwC,GACA,MAAAA,GAgBA,QAAA64G,IAAAC,GAEA,OADAxB,EAAAwB,IACAA,EAAAt8G,OAAA,EACAs8G,GAGAA,IACAf,EAAAe,IAGA,QAAAC,MASA,QAAAC,GAAAzoE,EAAAuoE,GACA,MAAAD,IAAAC,GAQA,QAAAG,GAAA1oE,EAAA2oE,GACA,MAAAjC,GAAAiC,IACAA,EAGAA,EAmBA,QAAAC,GAAA5oE,EAAA6oE,GAEA,KADA9B,EAAA8B,MAAA58G,OAAA,GAIA,QAEA,IAAAi8G,GAAA7hG,kBAaA,OAZAwiG,GAAAvjG,MAAA,KACA9U,IAAA,SAAAyU,GACA,GAAA88F,GAAA/hE,EAAA,OACAkP,EAAAlP,EAAA,QAOA,OALA6nE,GADA,MAAAK,EAAAnG,GAAA,MAAAmG,EAAAh5D,IAEA+4D,IACAa,IAAA,QACA7jG,YAzDA,GAAA8jG,GACA,MAAAA,GAEA,IAAAC,KACAA,GAAA78G,KAAA,GAAA88G,IAAA,WACAD,EAAA78G,KAAA,GAAA88G,IAAA,eACAD,EAAA78G,KAAA,GAAA88G,IAAA,mBACAD,EAAA78G,KAAA,GAAA88G,IAAA,sBAIA,IAAAC,GAAA,GAAAD,IAAA,OACAC,GAAAC,MAAAV,EACAO,EAAA78G,KAAA+8G,EAYA,IAAAE,GAAA,GAAAH,IAAA,OAwCA,OAvCAG,GAAAD,MAAAT,EACAM,EAAA78G,KAAAi9G,GACAJ,EAAA78G,KAAA,GAAA88G,IAAA,gBACAD,EAAA78G,KAAA,GAAA88G,IAAA,YACAD,EAAA78G,KAAA,GAAA88G,IAAA,oBACAD,EAAA78G,KAAA,GAAA88G,IAAA,yBACAD,EAAA78G,KAAA,GAAA88G,IAAA,+BACAD,EAAA78G,KAAA,GAAA88G,IAAA,4BACAD,EAAA78G,KAAA,GAAA88G,IAAA,4BACAD,EAAA78G,KAAA,GAAA88G,IAAA,wBACAD,EAAA78G,KAAA,GAAA88G,IAAA,iCA2BAD,EAAA78G,KAAA,GAAA88G,IAAA,mCAAAL,IACAG,GAAAC,EAGA,QAAAK,IAAArpE,EAAAspE,GACA,QAAAC,KACA,GAAAxH,GAAA/hE,EAAA,OACAkP,EAAAlP,EAAA,SACAwpE,EAAA,GAAAC,IAAA1H,EAAA7yD,EACA,OAAAo6D,GAAAI,qBAAAF,GAEAp9G,OAAAwC,eAAAoxC,EAAA,OAA4CjxC,IAAAw6G,IAE5C,QAAAI,IAAAL,EAAAM,EAAAZ,GACA,GAAAhpE,KACAA,GAAA,WAEA,QADA3pC,GAAA2yG,EAAA/8G,OACAV,EAAA,EAAmBA,EAAA8K,EAAS9K,IAAA,CAC5B,GAAAs+G,GAAAb,EAAAz9G,EACAy0C,GAAA6pE,EAAAC,OAAAD,EAAAV,MAAAnpE,EAAA4pE,EAAAC,EAAAE,SAGA,MADAV,IAAArpE,EAAAspE,GACAtpE,EAEA,QAAAgqE,IAAAV,EAAAW,EAAAjB,GACA,GAAAr2G,GAAAy0G,EAAA6C,EACA,eAAAt3G,EACA,KAGAg3G,GAAAL,EADA32G,EACAq2G,GAEA,QAAAkB,IAAAlqE,EAAAgpE,GAGA,OAFAY,MACAvzG,EAAA2yG,EAAA/8G,OACAV,EAAA,EAAmBA,EAAA8K,EAAS9K,IAAA,CAC5B,GAAAs+G,GAAAb,EAAAz9G,EACAs+G,GAAAM,WACAP,EAAAC,EAAAE,QAAA/pE,EAAA6pE,EAAAC,QAGA,MAAApuG,MAAAE,UAAAguG,GAEA,QAAAQ,IAAAj8G,GAEA,IADAA,IAAA04G,EAAA14G,GAEA,gCAEA,QAAAyE,KAAAzE,GAAA,CACA,GAAA8Q,GAAA9Q,EAAAyE,EACA,uBAAAA,GACA,IAAAi0G,EAAA5nG,GACA,yDAIA,IAAA7C,EAAA6C,GACA,qBAAArM,EAAA,0BChJA,QAAAy3G,IAAA57G,EAAA67G,EAAAC,GAGA,OAFAC,GAAAF,EAAAr+G,OACAw+G,EAAAH,EAAAr+G,OACAV,EAAA,EAAmBA,EAAA++G,EAAAr+G,OAAkBV,IACrC,GAAA++G,EAAA/+G,GAAAwe,SAAA,CACAygG,EAAAj/G,CACA,OAIA,KADAi/G,GAAAD,EAAAt+G,QAAAs+G,EAAAt+G,QAAAw+G,GAEA,KAAArH,GAAAoH,EAAAC,EAAAh8G,EAAA87G,EAAAt+G,OAEA,QAAAV,GAAA,EAAmBA,EAAAg/G,EAAAt+G,OAAmBV,IACtC,IACA++G,EAAA/+G,GAAAm/G,UAAAH,EAAAh/G,IAEA,MAAAmB,GACA,KAAAA,aAAAQ,OACAg2G,EAAA33G,EAAAkD,EAAA/B,EAAA2L,SAGA6qG,EAAA33G,EAAAkD,EAAA/B,IAsBA,QAAAi+G,IAAAC,EAAAC,GACA,gBAAA18G,GACAy8G,EAAAz8G,GACA08G,EAAA18G,IAGA,QAAA28G,IAAAC,EAAAC,GACA,QAAAC,GAAA98G,GACA,IAAA44G,EAAA54G,GACA,wBAGA,GAAAu8G,EAOA,OALAA,GADAK,EACAJ,GAAAM,EAAAF,GAGAE,EAEA,GAAAC,IAAAR,EAAAM,GAEA,QAAAG,MACA,QAAAT,GAAAv8G,GAIA,KAHAA,YAAAytB,aACAztB,YAAAi9G,cACAlE,KAAA/4G,YAAAg5G,OAEA,8BAGA,UAAA+D,IAAAR,GAEA,QAAAW,IAAAL,GACA,UAAAE,IAAAd,GAAAY,GAEA,QAAAM,MACA,QAAAZ,GAAAv8G,GAEA,KADA64G,EAAA74G,OAAA,GAEA,uCAGA,UAAA+8G,IAAAR,GAEA,QAAAa,IAAAR,EAAAC,GACA,QAAAN,GAAAv8G,GAEA,KADA,OAAAA,GAAAu4G,EAAAv4G,gBAAA/B,SAEA,+BAEAe,KAAA49G,GAAA,OAAAA,GACAA,EAAA58G,GAGA,UAAA+8G,IAAAR,EAAAM,GAEA,QAAAQ,IAAAR,GACA,QAAAN,GAAAv8G,GAEA,GADA,OAAAA,IAAAy4G,EAAAz4G,GAEA,4BAGA,UAAA+8G,IAAAR,EAAAM,GClIA,QAAAS,MACA,yBAAAC,aACAA,YAEA,mBAAAC,mBACAA,sBAGA,GASA,QAAAC,MAEA,OADAt5D,MACAjhD,EAAA,EAAoBA,EAAAC,UAAArF,OAAuBoF,IAC3CihD,EAAAjhD,GAAAC,UAAAD,EAEA,IAAAq6G,GAAAD,IACA,QAAAt+G,KAAAu+G,EAAA,CAEA,OADAjoF,GAAA,GAAAioF,GACAngH,EAAA,EAAuBA,EAAA+mD,EAAArmD,OAAqBV,IAC5Ck4B,EAAA22E,OAAA9nD,EAAA/mD,GAEA,OAAAk4B,GAAAmoF,UAGA,GAAA1E,IACA,UAAAC,MAAA70D,EAGA,MAAAplD,OAAA,uDAaA,QAAA2+G,IAAAC,EAAArsE,EAAAmmE,GACA,MAAAkG,GAAAC,YACAD,EAAAC,YAAAtsE,EAAAmmE,GAEAkG,EAAAE,SACAF,EAAAE,SAAAvsE,EAAAmmE,GAEAkG,EAAA/yG,MACA+yG,EAAA/yG,MAAA0mC,EAAAmmE,GAEA,KCxCA,QAAAqG,IAAAz1G,EAAA01G,GACA,WAAA11G,EAAA0L,QAAAgqG,GAMA,QAAAC,IAAAC,GACA,MAAAx1G,OAAAvK,UAAA0M,MAAAtN,KAAA2gH,GAOA,QAAAv5D,IAAAr8C,EAAA01G,GACA,GAAA3gH,GAAAiL,EAAA0L,QAAAgqG,IACA,IAAA3gH,GACAiL,EAAA4U,OAAA7f,EAAA,GCXA,QAAA8gH,IAAAC,GACA,IAAAA,EACA,KAAA3wE,KAGA,QAAA4wE,IAAAjD,EAAAN,GACA,QAAAwD,GAAAjgB,EAAAkgB,GACA,GAAAzsE,GAAAgqE,GAAAV,EAAAmD,EAAAzD,EAEA,OADAqD,IAAA,OAAArsE,GACAA,EAEA,MAAAwsE,GAEA,QAAAE,IAAA98F,GACA,QAAA+8F,GAAApgB,EAAAl9F,GACA,GAAAu9G,EAkBA,OAhBAA,GADA,MAAArgB,EAAAsgB,YACA7K,IAGA,MAAAzV,EAAAsgB,YACA/K,EAAAlyF,EAAAmyF,QAGA,MAAAxV,EAAAsgB,YACA3K,EAAAtyF,EAAAs/B,MAGA7/C,EAIAu9G,EAAAE,sBAAAz9G,EAAA09G,sBACAH,EAEA,MAAAD,GAEA,QAAAK,IAAAp9F,GAEA,QAAA+8F,GAAApgB,EAAAl9F,GACA,GAAAu9G,GAAAK,EAAA1gB,EAAAl9F,EAKA,OAJA,OAAAk9F,EAAAsgB,cACAD,EAAAhL,EAAAhyF,EAAAs/B,OAEA09D,EAAAE,sBAAAz9G,EAAA09G,sBACAH,EAPA,GAAAK,GAAAP,GAAA98F,EASA,OAAA+8F,GAEA,QAAAO,IAAA5D,EAAA15F,EAAAo5F,GACA,GAAAtB,GAAA93F,EAAAu9F,gBACAn4E,EAAAyyE,EAAAC,GAEA16G,EAAAs8G,EAAA8D,wBACAC,EAAA,GAAAC,IAAAt4E,EAFA,MAEAu3E,GAAAjD,EAAAN,GAAAh8G,EAEA,OADAqgH,GAAAV,aAAAK,GAAAp9F,GACAy9F,EAEA,QAAAE,IAAAjE,EAAA15F,EAAAowB,EAAAgpE,GACA,GAAAtB,GAAA93F,EAAAu9F,gBACAn4E,EAAAyyE,EAAAC,GAEA3yE,EAAAm1E,GAAAlqE,EAAAgpE,GACApqF,GAAmBmwB,eAAA,mCACnB/hD,EAAAs8G,EAAA8D,wBACAC,EAAA,GAAAC,IAAAt4E,EAJA,QAIAu3E,GAAAjD,EAAAN,GAAAh8G,EAIA,OAHAqgH,GAAAzuF,UACAyuF,EAAAt4E,OACAs4E,EAAAV,aAAAK,GAAAp9F,GACAy9F,EAEA,QAAAG,IAAAlE,EAAA15F,GAKA,QAAA48F,GAAAjgB,EAAAkgB,IAJA,GAAA/E,GAAA93F,EAAAu9F,gBACAn4E,EAAAyyE,EAAAC,GAEA16G,EAAAs8G,EAAA8D,wBAEAC,EAAA,GAAAC,IAAAt4E,EAHA,SAGAw3E,EAAAx/G,EAGA,OAFAqgH,GAAAI,cAAA,SACAJ,EAAAV,aAAAK,GAAAp9F,GACAy9F,EAEA,QAAAK,IAAA1tE,EAAA8rE,GACA,MAAA9rE,MAAA,aACA8rE,KAAAj+G,QACA,2BAEA,QAAA8/G,IAAA/9F,EAAAk8F,EAAA8B,GACA,GAAA5tE,GAAA7jC,EAAAyxG,EAMA,OALA5tE,GAAA,SAAApwB,EAAAs/B,KACAlP,EAAA,KAAA8rE,EAAAnD,OACA3oE,EAAA,cACAA,EAAA,YAAA0tE,GAAA,KAAA5B,IAEA9rE,EAEA,QAAA6tE,IAAAvE,EAAA15F,EAAAo5F,EAAA8C,EAAA8B,GACA,GAAAlG,GAAA93F,EAAAk+F,sBACAlvF,GACAmvF,yBAAA,aAaAC,EAXA,WAEA,OADAx1G,GAAA,GACAjN,EAAA,EAAuBA,EAAA,EAAOA,IAC9BiN,IAEAqJ,QAAAC,UAEA/I,MAAA,EAEA,OAAAP,KAGAomB,GAAA,+CAAiDovF,CACjD,IAAAhuE,GAAA2tE,GAAA/9F,EAAAk8F,EAAA8B,GACAK,EAAA/D,GAAAlqE,EAAAgpE,GACAkF,EAAA,KACAF,EACA,4DAEAC,EACA,SACAD,EACA,qBAEAhuE,EAAA,YACA,WACAmuE,EAAA,SAAAH,EAAA,KACAj5E,EAAAq5E,GAAAxC,QAAAsC,EAAApC,EAAAqC,EACA,WAAAp5E,EACA,KAAA6tE,IAEA,IAAA/wB,IAAqBpjF,KAAAuxC,EAAA,UACrBhL,EAAA+yE,EAAAL,GAEA16G,EAAAs8G,EAAA+E,qBACAhB,EAAA,GAAAC,IAAAt4E,EAFA,OAEAu3E,GAAAjD,EAAAN,GAAAh8G,EAKA,OAJAqgH,GAAAx7B,YACAw7B,EAAAzuF,UACAyuF,EAAAt4E,OAAAu5E,aACAjB,EAAAV,aAAAD,GAAA98F,GACAy9F,EAoBA,QAAAkB,IAAAhiB,EAAAiiB,GACA,GAAA/tF,EACA,KACAA,EAAA8rE,EAAA/iD,kBAAA,wBAEA,MAAA98C,GACA2/G,IAAA,GAIA,MADAA,IAAAJ,GADAuC,IAAA,UACA/tF,IACAA,EAEA,QAAAguF,IAAAnF,EAAA15F,EAAAo5F,EAAA8C,EAAA8B,GAeA,QAAApB,GAAAjgB,EAAAkgB,GACA8B,GAAAhiB,EACA,IAAAv3D,EACA,KACAA,EAAAu3D,EAAA/iD,kBAAA,qBAEA,MAAA98C,GACA2/G,IAAA,GAGA,MADAA,IAAAtF,EAAA/xE,IACAA,EAxBA,GAAA0yE,GAAA93F,EAAAk+F,sBACA9tE,EAAA2tE,GAAA/9F,EAAAk8F,EAAA8B,GACA/7B,GAAqBpjF,KAAAuxC,EAAA,UACrBhL,EAAA+yE,EAAAL,GAEA9oF,GACAmvF,yBAAA,YACAW,wBAAA,QACAC,sCAAA7C,EAAAnD,OACAiG,oCAAA5uE,EAAA,YACA+O,eAAA,mCAEAha,EAAAm1E,GAAAlqE,EAAAgpE,GACAh8G,EAAAs8G,EAAA+E,qBAaAhB,EAAA,GAAAC,IAAAt4E,EAtBA,OAsBAw3E,EAAAx/G,EAKA,OAJAqgH,GAAAx7B,YACAw7B,EAAAzuF,UACAyuF,EAAAt4E,OACAs4E,EAAAV,aAAAD,GAAA98F,GACAy9F,EAKA,QAAAwB,IAAAvF,EAAA15F,EAAAolB,EAAA82E,GAEA,QAAAU,GAAAjgB,EAAAkgB,GACA,GACAqC,GADAruF,EAAA8tF,GAAAhiB,GAAA,kBAEA,KACAuiB,EAAAviB,EAAA/iD,kBAAA,+BAEA,MAAA98C,GACA2/G,IAAA,GAEA,GAAA1D,GAAA/5F,SAAAkgG,EAAA,GAEA,OADAzC,KAAAn3F,MAAAyzF,IACA,GAAAoG,IAAApG,EAAAmD,EAAAnD,OAAA,UAAAloF,GAZA,GAAA7B,IAAmB8vF,wBAAA,SAenB1hH,EAAAs8G,EAAA+E,qBACAhB,EAAA,GAAAC,IAAAt4E,EAFA,OAEAw3E,EAAAx/G,EAGA,OAFAqgH,GAAAzuF,UACAyuF,EAAAV,aAAAD,GAAA98F,GACAy9F,EAgBA,QAAA2B,IAAAp/F,EAAA05F,EAAAt0E,EAAA82E,EAAAhrC,EAAAkoC,EAAAiG,EAAAC,GA+BA,QAAA1C,GAAAjgB,EAAAkgB,GAKA,GAGAzsE,GAHAmvE,EAAAZ,GAAAhiB,GAAA,mBACA6iB,EAAA3uF,EAAA4uF,QAAAC,EACA3G,EAAAmD,EAAAnD,MAQA,OALA3oE,GADA,UAAAmvE,EACA5C,GAAAjD,EAAAN,GAAAzc,EAAAkgB,GAGA,KAEA,GAAAsC,IAAAK,EAAAzG,EAAA,UAAAwG,EAAAnvE,GA3CA,GAAAvf,GAAA,GAAAsuF,IAAA,IASA,IARAE,GACAxuF,EAAA4uF,QAAAJ,EAAAI,QACA5uF,EAAA8uF,MAAAN,EAAAM,QAGA9uF,EAAA4uF,QAAA,EACA5uF,EAAA8uF,MAAAzD,EAAAnD,QAEAmD,EAAAnD,SAAAloF,EAAA8uF,MACA,KAAAzM,IAEA,IAAA0M,GAAA/uF,EAAA8uF,MAAA9uF,EAAA4uF,QACAC,EAAAE,CACA1uC,GAAA,IACAwuC,EAAAztG,KAAAgzC,IAAAy6D,EAAAxuC,GAEA,IAAA2uC,GAAAhvF,EAAA4uF,QACAK,EAAAD,EAAAH,EACAK,EAAAL,IAAAE,EAAA,4BACA5wF,GACA8vF,wBAAAiB,EACAC,uBAAAnvF,EAAA4uF,SAEAt6E,EAAA+2E,EAAA/yG,MAAA02G,EAAAC,EACA,WAAA36E,EACA,KAAA6tE,IAmBA,IACA51G,GAAAs8G,EAAA+E,qBACAhB,EAAA,GAAAC,IAAAt4E,EAFA,OAEAw3E,EAAAx/G,EAKA,OAJAqgH,GAAAzuF,UACAyuF,EAAAt4E,OAAAu5E,aACAjB,EAAAwC,iBAAAX,GAAA,KACA7B,EAAAV,aAAAD,GAAA98F,GACAy9F,EC/SA,QAAAyC,IAAAtzG,GACA,kBAEA,OADAuzG,MACA1+G,EAAA,EAAwBA,EAAAC,UAAArF,OAAuBoF,IAC/C0+G,EAAA1+G,GAAAC,UAAAD,EAEAm1G,IAAA,GAAA1yG,KAAA,WACA0I,EAAA9K,MAAA,KAAAq+G,MCVA,QAAAtwE,IAAAjjC,EAAAjJ,EAAAvG,GAQA,QAAAgjH,KACA,WAAAC,EAGA,QAAAC,KACAC,IACAA,GAAA,EACA58G,EAAA7B,MAAA,KAAAJ,YAGA,QAAA8+G,GAAAC,GACAC,EAAAliH,WAAA,WACAkiH,EAAA,KACA9zG,EAAAgwG,EAAAwD,MACSK,GAET,QAAA7D,GAAA19C,GAEA,OADAxc,MACAjhD,EAAA,EAAwBA,EAAAC,UAAArF,OAAuBoF,IAC/CihD,EAAAjhD,EAAA,GAAAC,UAAAD,EAEA,KAAA8+G,EAAA,CAGA,GAAArhD,EAEA,WADAohD,GAAAx+G,MAAA,KAAAJ,UAIA,IADA0+G,KAAAO,EAGA,WADAL,GAAAx+G,MAAA,KAAAJ,UAGAk/G,GAAA,KAEAA,GAAA,EAEA,IAAAC,EACA,KAAAR,GACAA,EAAA,EACAQ,EAAA,GAGAA,EAAA,KAAAD,EAAA3uG,KAAAC,UAEAsuG,EAAAK,IAGA,QAAAC,GAAAC,GACAC,IAGAA,GAAA,EACAT,IAGA,OAAAG,GACAK,IACAV,EAAA,GAEAljH,aAAAujH,GACAF,EAAA,IAGAO,IACAV,EAAA,KAtEA,GAAAO,GAAA,EAEAF,EAAA,KACAC,GAAA,EACAN,EAAA,EAIAE,GAAA,EA4CAS,GAAA,CA2BA,OALAR,GAAA,GACAhiH,WAAA,WACAmiH,GAAA,EACAG,GAAA,IACK1jH,GACL0jH,EASA,QAAAA,IAAAhxG,GACAA,GAAA,GCqFA,QAAAmxG,IAAAjyF,EAAA0tE,GACA,OAAAA,KAAArgG,OAAA,IACA2yB,EAAA,0BAAA0tE,GAGA,QAAAwkB,IAAAlyF,GACA,GAAAmyF,OAAA,KAAA1P,GAAA,QAAAA,GAAA,QAAAlvG,YAAA,YACAysB,GAAA,uCAAAmyF,EAKA,QAAAC,IAAA3D,EAAA/gB,EAAA2kB,GACA,GAAA9I,GAAAF,GAAAoF,EAAAx7B,WACA78C,EAAAq4E,EAAAr4E,IAAAmzE,EACAvpF,EAAAziB,EAAAkxG,EAAAzuF,QAGA,OAFAiyF,IAAAjyF,EAAA0tE,GACAwkB,GAAAlyF,GACA,GAAAsyF,IAAAl8E,EAAAq4E,EAAAvkG,OAAA8V,EAAAyuF,EAAAt4E,KAAAs4E,EAAAI,aAAAJ,EAAA8D,qBAAA9D,EAAAb,QAAAa,EAAAV,aAAAU,EAAArgH,QAAAqgH,EAAAwC,iBAAAoB,GC9LA,QAAAG,IAAArhH,EAAA+nF,EAAAu5B,GACA,UAAAC,IAAAvhH,EAAA,GAAAwhH,IAAAF,GAEA,QAAAG,IAAA35B,GACA,GAAA4d,IAEAyQ,aACAuL,aACAnN,gBACAoN,QAAAJ,GACAz+C,UAAA8+C,GAEA95B,GAAAzlF,SAAA3B,gBAAAmhH,GAAAR,GAAA3b,MAAAtoG,IAEA,GnBJAf,OAAOwC,eAAec,EAAqB,cAAgBD,OAAO,GAGlE,IoBrBAoiH,IpBqBIxQ,GAAMn2G,EAAoB,GqBlB9By8G,GAAA,yCAIAG,GAAA,yCAIAF,GAAA,MAIAI,GAAA,MAYA8J,GAAA,KAIAC,GAAA,IAKAC,IAAA,iBnBtCAvQ,GAAA,WACA,QAAAA,GAAAjvG,EAAA6F,GACA9G,KAAA0gH,EAAAzQ,EAAAhvG,GACAjB,KAAA2gH,EAAA,qBAAA75G,EACA9G,KAAA4gH,EAAA,KACA5gH,KAAA2B,EAAA,gBA0CA,MAxCAuuG,GAAAp1G,UAAA+lH,SAAA,WACA,MAAA7gH,MAAAiB,MAEAivG,EAAAp1G,UAAAgmH,WAAA,SAAA7/G,GACA,MAAAgvG,GAAAhvG,KAAAjB,KAAA6gH,YAEA3Q,EAAAp1G,UAAA0gH,mBAAA,WACA,MAAAx7G,MAAA4gH,GAEA1Q,EAAAp1G,UAAAygH,sBAAA,SAAAwF,GACA/gH,KAAA4gH,EAAAG,GAEAlmH,OAAAwC,eAAA6yG,EAAAp1G,UAAA,QACA0C,IAAA,WACA,MAAAwC,MAAA2B,GAEApE,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAA6yG,EAAAp1G,UAAA,QACA0C,IAAA,WACA,MAAAwC,MAAA0gH,GAEAnjH,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAA6yG,EAAAp1G,UAAA,WACA0C,IAAA,WACA,MAAAwC,MAAA2gH,GAEApjH,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAA6yG,EAAAp1G,UAAA,kBACA0C,IAAA,WACA,MAAAwC,MAAA4gH,GAEArjH,YAAA,EACAD,cAAA,IAEA4yG,KAIAC,IAEAC,QAAA,UACAE,iBAAA,mBACA0Q,iBAAA,mBACAC,kBAAA,oBACAx+E,eAAA,iBACAiuE,gBAAA,kBACAE,aAAA,eACAE,qBAAA,uBACAoQ,iBAAA,mBACAlQ,SAAA,WAEAmQ,mBAAA,qBACAjQ,YAAA,cACAE,uBAAA,yBACAgQ,kBAAA,oBACA9P,kBAAA,oBACAE,uBAAA,yBACAE,gBAAA,kBACAE,iBAAA,mBACAO,uBAAA,yBACAE,YAAA,cACAE,uBAAA,yBACAG,eAAA,iBACAE,eAAA,kBC5EAG,IACAC,IAAA,MACAC,OAAA,SACAC,UAAA,YACAC,SAAA,YAwBAE,GAAA,WACA,QAAAA,GAAA/oG,EAAA+2G,GACArhH,KAAAsK,OACAtK,KAAAk4C,YAAAmpE,GAAA,KAEA,MAAAhO,MA2GAa,GAAA,WACA,QAAAoN,GAAA/4C,GACAvoE,KAAAyH,QAAA,EACAzH,KAAAk4C,YAAA,IACA,IAAAguC,GAAA3d,EAAAj1D,MAAA,kBACA,WAAA4yE,EACA,KAAAssB,GAAAO,GAAAI,SAAA,wDAEA,IAAA/jC,GAAA8W,EAAA,QACA,OAAA9W,IACApvE,KAAAyH,OAAA2sG,EAAAhlC,EAAA,WACApvE,KAAAk4C,YAAAl4C,KAAAyH,OACA2nE,EAAAjkD,UAAA,EAAAikD,EAAA10E,OAAA,GACA00E,GAEApvE,KAAAm0G,KAAA5rC,EAAAp9C,UAAAo9C,EAAA53D,QAAA,QAEA,MAAA2wG,MC9JApB,IAEAqB,cAAA,iBAEAhN,IACAC,QAAA,UACAC,QAAA,UACAG,OAAA,SACAC,QAAA,UACAH,UAAA,YACA1D,SAAA,WACA8D,MAAA,SAEAH,IAEAH,QAAA,UAEAI,OAAA,SAEAC,QAAA,UAEA7D,SAAA,WAEA8D,MAAA,UgBnBA,SAAAwL,GACAA,IAAA,uBACAA,IAAA,iCACAA,IAAA,kBACCA,eECD,IAAAkB,IAAA,WACA,QAAAC,KACA,GAAAn/G,GAAAtC,IACAA,MAAA0hH,GAAA,EACA1hH,KAAA2hH,EAAA,GAAAz0F,gBACAltB,KAAA4hH,EAAAtB,GAAAuB,SACA7hH,KAAA8hH,EAAA/M,EAAA,SAAAh5G,EAAAE,GACAqG,EAAAq/G,EAAA/wG,iBAAA,iBAAAH,GACAnO,EAAAs/G,EAAAtB,GAAAyB,MACAhmH,EAAAuG,KAEAA,EAAAq/G,EAAA/wG,iBAAA,iBAAAH,GACAnO,EAAAs/G,EAAAtB,GAAA0B,cACAjmH,EAAAuG,KAEAA,EAAAq/G,EAAA/wG,iBAAA,gBAAAH,GACA1U,EAAAuG,OAyFA,MAlFAm/G,GAAA3mH,UAAAwzB,KAAA,SAAAmV,EAAAlsB,EAAA0qG,EAAAC,GACA,GAAA5/G,GAAAtC,IACA,IAAAA,KAAA0hH,EACA,KAAA/O,GAAA,gCAgBA,OAdA3yG,MAAA0hH,GAAA,EACA1hH,KAAA2hH,EAAAxjG,KAAA5G,EAAAksB,GAAA,GACA0xE,EAAA+M,IAEAziH,EADAyiH,EACA,SAAA7gH,EAAAqM,GACApL,EAAAq/G,EAAA3zF,iBAAA3sB,EAAAqM,QAGAynG,EAAA8M,GACAjiH,KAAA2hH,EAAArzF,KAAA2zF,GAGAjiH,KAAA2hH,EAAArzF,OAEAtuB,KAAA8hH,GAKAL,EAAA3mH,UAAAqnH,aAAA,WACA,IAAAniH,KAAA0hH,EACA,KAAA/O,GAAA,wCAEA,OAAA3yG,MAAA4hH,GAKAH,EAAA3mH,UAAAwgH,UAAA,WACA,IAAAt7G,KAAA0hH,EACA,KAAA/O,GAAA,qCAEA,KACA,MAAA3yG,MAAA2hH,EAAAzyF,OAEA,MAAA/zB,GACA,WAMAsmH,EAAA3mH,UAAAsnH,gBAAA,WACA,IAAApiH,KAAA0hH,EACA,KAAA/O,GAAA,2CAEA,OAAA3yG,MAAA2hH,EAAAvyF,cAMAqyF,EAAA3mH,UAAAyzB,MAAA,WACAvuB,KAAA2hH,EAAApzF,SAKAkzF,EAAA3mH,UAAAm9C,kBAAA,SAAAtkC,GACA,MAAA3T,MAAA2hH,EAAA1pE,kBAAAtkC,IAKA8tG,EAAA3mH,UAAAunH,0BAAA,SAAAlgH,GACAgzG,EAAAn1G,KAAA2hH,EAAAW,SACAtiH,KAAA2hH,EAAAW,OAAA1xG,iBAAA,WAAAzO,IAMAs/G,EAAA3mH,UAAAynH,6BAAA,SAAApgH,GACAgzG,EAAAn1G,KAAA2hH,EAAAW,SACAtiH,KAAA2hH,EAAAW,OAAAp7F,oBAAA,WAAA/kB,IAGAs/G,KC9GAzB,GAAA,WACA,QAAAwC,MAKA,MAHAA,GAAA1nH,UAAA2nH,YAAA,WACA,UAAAjB,KAEAgB,KCFAtK,GAAA,WACA,QAAAwK,GAAAlS,EAAA7yD,GACA39C,KAAAwwG,SACAxwG,KAAAovD,EAAAzR,EAgFA,MA9EA9iD,QAAAwC,eAAAqlH,EAAA5nH,UAAA,QACA0C,IAAA,WACA,MAAAwC,MAAAovD,GAEA7xD,YAAA,EACAD,cAAA,IAEAolH,EAAA5nH,UAAA8gH,cAAA,WACA,GAAAjF,GAAA7hG,kBACA,aAAA6hG,EAAA32G,KAAAwwG,QAAA,MAAAmG,EAAA32G,KAAA29C,OAEA+kE,EAAA5nH,UAAAyhH,oBAAA,WAEA,YADAznG,mBACA9U,KAAAwwG,QAAA,MAEAkS,EAAAC,mBAAA,SAAAC,GACA,GAAAC,EACA,KACAA,EAAAH,EAAAI,YAAAF,GAEA,MAAAznH,GAGA,UAAAunH,GAAAE,EAAA,IAEA,QAAAC,EAAAllE,KACA,MAAAklE,EAGA,MAAA1R,GAAAyR,IAGAF,EAAAI,YAAA,SAAAr/E,GAGA,QAAAs/E,GAAA9K,GACA,MAAAA,EAAAt6D,KAAAh0C,OAAAsuG,EAAAt6D,KAAAjjD,OAAA,KACAu9G,EAAA7oD,EAAA6oD,EAAA7oD,EAAA5nD,MAAA,OAOA,QAAAw7G,GAAA/K,GACAA,EAAA7oD,EAAAhkC,mBAAA6sF,EAAAt6D,MAcA,OA1BAt/B,GAAA,KASA4kG,EAAAp+E,OAAA,yCACAq+E,GAAyB1S,OAAA,EAAA7yD,KAAA,GAKzBwlE,EAAAt+E,OAAA,oGAKA,KACAu+E,GAA2B5S,OAAA,EAAA7yD,KAAA,GAC3B0lE,IACaC,MAAAL,EAAAM,QAAAL,EAAAM,WAAAT,IACAO,MAAAH,EAAAI,QAAAH,EAAAI,WAAAR,IAEbhpH,EAAA,EAAuBA,EAAAqpH,EAAA3oH,OAAmBV,IAAA,CAC1C,GAAAypH,GAAAJ,EAAArpH,GACA0pH,EAAAD,EAAAH,MAAAlmG,KAAAqmB,EACA,IAAAigF,EAAA,CACA,GAAAC,GAAAD,EAAAD,EAAAF,QAAA/S,QACAoT,EAAAF,EAAAD,EAAAF,QAAA5lE,KACAimE,KACAA,EAAA,IAEAvlG,EAAA,GAAAqkG,GAAAiB,EAAAC,GACAH,EAAAD,WAAAnlG,EACA,QAGA,SAAAA,EACA,KAAA4yF,GAAAxtE,EAEA,OAAAplB,IAEAqkG,KbhFAhL,GAAA,WACA,QAAAA,GAAAc,EAAAqL,EAAAC,EAAAC,GACA/jH,KAAAw4G,SACAx4G,KAAAu4G,MAAAsL,GAAArL,EACAx4G,KAAA44G,WAAAkL,EACA9jH,KAAA43G,MAAAmM,GAAAjN,GAEA,MAAAY,MAGAF,GAAA,KCkBAmC,GAAA,WACA,QAAAqK,GAAA7K,EAAAM,GACA,GAAAhgH,GAAAuG,IACAA,MAAAm5G,UAAA,SAAAv8G,GACAnD,EAAA+e,WAAA48F,EAAAx4G,IAGAu8G,EAAAv8G,IAEAoD,KAAAwY,WAAAihG,EAEA,MAAAuK,MapCAnH,GAAA,WACA,QAAAoH,GAAA35G,EAAA45G,GACA,GAAA9M,GAAA,EACA+M,EAAA,EACAzO,GAAAprG,IACAtK,KAAAokH,EAAA95G,EACA8sG,EAAA9sG,EAAA8sG,KACA+M,EAAA75G,EAAAhO,MAEAgO,YAAAuvG,cACAqK,EACAlkH,KAAAokH,EAAA,GAAA/5F,YAAA/f,IAGAtK,KAAAokH,EAAA,GAAA/5F,YAAA/f,EAAA+5G,YACArkH,KAAAokH,EAAArlG,IAAA,GAAAsL,YAAA/f,KAEA8sG,EAAAp3G,KAAAokH,EAAA1pH,QAEA4P,YAAA+f,cACA65F,EACAlkH,KAAAokH,EAAA95G,GAGAtK,KAAAokH,EAAA,GAAA/5F,YAAA/f,EAAA5P,QACAsF,KAAAokH,EAAArlG,IAAAzU,IAEA8sG,EAAA9sG,EAAA5P,QAEAsF,KAAAskH,EAAAlN,EACAp3G,KAAAukH,EAAAJ,EAiEA,MA/DAF,GAAAnpH,UAAAs8G,KAAA,WACA,MAAAp3G,MAAAskH,GAEAL,EAAAnpH,UAAAwB,KAAA,WACA,MAAA0D,MAAAukH,GAEAN,EAAAnpH,UAAA0M,MAAA,SAAA02G,EAAAC,GACA,GAAAzI,EAAA11G,KAAAokH,GAAA,CACA,GAAAI,GAAAxkH,KAAAokH,EACAK,EAAAnK,GAAAkK,EAAAtG,EAAAC,EACA,eAAAsG,EACA,KAEA,GAAAR,GAAAQ,GAIA,UAAAR,GADA,GAAA55F,YAAArqB,KAAAokH,EAAAM,OAAAxG,EAAAC,EAAAD,IACA,IAGA+F,EAAA5J,QAAA,WAEA,OADAt5D,MACAjhD,EAAA,EAAwBA,EAAAC,UAAArF,OAAuBoF,IAC/CihD,EAAAjhD,GAAAC,UAAAD,EAEA,IAAA61G,IAAA,CACA,GAAAgP,GAAA5jE,EAAA9hD,IAAA,SAAAyO,GACA,MAAAA,aAAAu2G,GACAv2G,EAAA02G,EAGA12G,GAGA,WAAAu2G,GAAA5J,GAAAl6G,MAAA,KAAAwkH,IAGA,GAAAC,GAAA7jE,EAAA9hD,IAAA,SAAAyO,GACA,MAAA8nG,GAAA9nG,GACA0lG,EAAAL,GAAAC,IAAAtlG,GAAApD,KAIAoD,EAAA02G,IAGAS,EAAA,CACAD,GAAAnlH,QAAA,SAAAwF,GACA4/G,GAAA5/G,EAAAo/G,YAEA,IAAAS,GAAA,GAAAz6F,YAAAw6F,GACAE,EAAA,CAMA,OALAH,GAAAnlH,QAAA,SAAAwF,GACA,OAAAjL,GAAA,EAA+BA,EAAAiL,EAAAvK,OAAkBV,IACjD8qH,EAAAC,KAAA9/G,EAAAjL,KAGA,GAAAiqH,GAAAa,GAAA,IAGAb,EAAAnpH,UAAAiiH,WAAA,WACA,MAAA/8G,MAAAokH,GAEAH,KC5HAlI,GAAA,WACA,QAAAA,GAAAt4E,EAAAlsB,EAQA0jG,EAAAx/G,GACAuE,KAAAyjC,MACAzjC,KAAAuX,SACAvX,KAAAi7G,UACAj7G,KAAAvE,UACAuE,KAAAsgF,aACAtgF,KAAAqtB,WACArtB,KAAAwjC,KAAA,KACAxjC,KAAAo7G,aAAA,KAKAp7G,KAAAs+G,iBAAA,KACAt+G,KAAAk8G,cAAA,KACAl8G,KAAA4/G,wBAEA,MAAA7D,MXuJAyB,GAAA,WACA,QAAAA,GAAAM,EAAAE,EAAArmG,EAAA82B,GACAzuC,KAAA89G,UACA99G,KAAAg+G,QACAh+G,KAAA2X,cACA3X,KAAAyuC,YAAA,KAEA,MAAA+uE,MYrKAwH,GAAA,WACA,QAAAC,GAAAjtG,EAAAktG,EAAAC,GAIA,GAHA9P,EAAAr9F,IACAm9F,EAAA+P,IACA/P,EAAAgQ,GAEAnlH,KAAA4X,KAAAI,EACAhY,KAAAhC,MAAAknH,GAAA,KACAllH,KAAA+X,SAAAotG,GAAA,SAEA,CACA,GAAArtG,GAAAE,CACAhY,MAAA4X,KAAAE,EAAAF,MAAA,KACA5X,KAAAhC,MAAA8Z,EAAA9Z,OAAA,KACAgC,KAAA+X,SAAAD,EAAAC,UAAA,MAGA,MAAAktG,MCpCAG,GAAA,WACA,QAAAA,GAAAC,EAAAC,EAAAlY,EAAA3+D,EAAAn/B,EAAAX,GACA3O,KAAAqlH,mBACArlH,KAAAslH,aACAtlH,KAAAotG,QACAptG,KAAAyuC,WACAzuC,KAAAsP,OACAtP,KAAA2O,MAoBA,MAlBA9T,QAAAwC,eAAA+nH,EAAAtqH,UAAA,eACA0C,IAAA,WACA,UAAAwC,KAAAyuC,SAAA,CACA,GAAA82E,GAAAvlH,KAAAyuC,SAAA,YACA,cAAA82E,GAAA,MAAAA,EAAA,GACAA,EAAA,GAGA,KAIA,aAGAhoH,YAAA,EACAD,cAAA,IAEA8nH,KCOAI,GAAA,WAMA,QAAAC,GAAA92G,EAAAopG,EAAA15F,EAAAo5F,EAAA8C,EAAA9rE,OACA,KAAAA,IAAkCA,EAAA,KAClC,IAAAnsC,GAAAtC,IACAA,MAAA0lH,EAAA,EACA1lH,KAAA2lH,GAAA,EACA3lH,KAAA4lH,GAAA,EACA5lH,KAAA6lH,KACA7lH,KAAA8lH,EAAA,KACA9lH,KAAA+lH,EAAA,KACA/lH,KAAAgmH,EAAA,KACAhmH,KAAAimH,EAAA,EACAjmH,KAAAkmH,EAAA,KACAlmH,KAAAmmH,EAAA,KACAnmH,KAAAkjE,EAAAv0D,EACA3O,KAAAomH,EAAArO,EACA/3G,KAAAqmH,EAAAhoG,EACAre,KAAAsmH,EAAA/L,EACAv6G,KAAAumH,EAAA93E,EACAzuC,KAAAw3G,EAAAC,EACAz3G,KAAAwmH,EAAAxmH,KAAAymH,EAAAzmH,KAAAsmH,GACAtmH,KAAA+6E,EAAAw5B,GAAAC,QACAx0G,KAAA0mH,EAAA,SAAA1oH,GACAsE,EAAA0jH,EAAA,KACA1jH,EAAA2jH,EAAA,EACAjoH,EAAA8iH,WAAA3Q,GAAAa,WACA1uG,EAAAqjH,GAAA,EACArjH,EAAAqkH,MAGArkH,EAAAwjH,EAAA9nH,EACAsE,EAAAskH,EAAArS,GAAAO,SAGA90G,KAAA6mH,EAAA,SAAA7oH,GACAsE,EAAA0jH,EAAA,KACAhoH,EAAA8iH,WAAA3Q,GAAAa,UACA1uG,EAAAqkH,KAGArkH,EAAAwjH,EAAA9nH,EACAsE,EAAAskH,EAAArS,GAAAO,SAGA90G,KAAA8mH,EAAA/R,EAAA,SAAAh5G,EAAAE,GACAqG,EAAA4jH,EAAAnqH,EACAuG,EAAA6jH,EAAAlqH,EACAqG,EAAA44E,MAIAl7E,KAAA8mH,EAAAvkH,KAAA,mBAmdA,MAjdAkjH,GAAA3qH,UAAAisH,EAAA,WACA,GAAAzkH,GAAAtC,KACAgnH,EAAAhnH,KAAA0lH,CACA,iBAAAuB,EAAAjJ,GACA17G,EAAA4kH,EAAAF,EAAAC,KAGAxB,EAAA3qH,UAAA2rH,EAAA,SAAAlM,GACA,MAAAA,GAAAnD,OAAA,QAEAqO,EAAA3qH,UAAAogF,EAAA,WACAl7E,KAAA+6E,IAAAw5B,GAAAC,SAIA,OAAAx0G,KAAAgmH,IAGAhmH,KAAAwmH,EACA,OAAAxmH,KAAA+lH,EACA/lH,KAAAmnH,IAGAnnH,KAAA2lH,EACA3lH,KAAAonH,IAGApnH,KAAA4lH,EAEA5lH,KAAAqnH,IAGArnH,KAAAsnH,IAMAtnH,KAAAunH,MAGA9B,EAAA3qH,UAAA0sH,EAAA,SAAAxlH,GACA,GAAAM,GAAAtC,IACAA,MAAAomH,EAAAqB,eAAAllH,KAAA,SAAAw4F,GACA,OAAAz4F,EAAAy4E,GACA,IAAAw5B,IAAAC,QACAxyG,EAAA+4F,EACA,MACA,KAAAwZ,IAAAG,UACApyG,EAAAskH,EAAArS,GAAAvD,SACA,MACA,KAAAuD,IAAAE,QACAnyG,EAAAskH,EAAArS,GAAAK,YAOA6Q,EAAA3qH,UAAAqsH,EAAA,WACA,GAAA7kH,GAAAtC,IACAA,MAAAwnH,EAAA,SAAAzsB,GACA,GAAA+gB,GAAAoB,GAAA56G,EAAA8jH,EAAA9jH,EAAA+jH,EAAA/jH,EAAAk1G,EAAAl1G,EAAAgkH,EAAAhkH,EAAAikH,GACAmB,EAAAplH,EAAA8jH,EAAA3G,YAAA3D,EAAA/gB,EACAz4F,GAAA0jH,EAAA0B,EACAA,EAAAC,aAAAplH,KAAA,SAAAkhC,GACAnhC,EAAA0jH,EAAA,KACA1jH,EAAAyjH,EAAAtiF,EACAnhC,EAAAqjH,GAAA,EACArjH,EAAAqkH,KACarkH,EAAAokH,MAGbjB,EAAA3qH,UAAAssH,EAAA,WACA,GAAA9kH,GAAAtC,KAEAyjC,EAAAzjC,KAAA+lH,CACA/lH,MAAAwnH,EAAA,SAAAzsB,GACA,GAAA+gB,GAAAwB,GAAAh7G,EAAA8jH,EAAA9jH,EAAA+jH,EAAA5iF,EAAAnhC,EAAAgkH,GACAsB,EAAAtlH,EAAA8jH,EAAA3G,YAAA3D,EAAA/gB,EACAz4F,GAAA0jH,EAAA4B,EACAA,EAAAD,aAAAplH,KAAA,SAAA2sB,GACAA,IACA5sB,EAAA0jH,EAAA,KACA1jH,EAAA4kH,EAAAh4F,EAAA4uF,SACAx7G,EAAAqjH,GAAA,EACAz2F,EAAAvX,YACArV,EAAAsjH,GAAA,GAEAtjH,EAAAqkH,KACarkH,EAAAokH,MAGbjB,EAAA3qH,UAAAwsH,EAAA,WACA,GAAAhlH,GAAAtC,KACAuvE,Ed2EA,Oc3EAvvE,KAAAimH,EACA/2F,EAAA,GAAAsuF,IAAAx9G,KAAA0lH,EAAA1lH,KAAAsmH,EAAAlP,QAEA3zE,EAAAzjC,KAAA+lH,CACA/lH,MAAAwnH,EAAA,SAAAzsB,GACA,GAAA+gB,EACA,KACAA,EAAA2B,GAAAn7G,EAAA+jH,EAAA/jH,EAAA8jH,EAAA3iF,EAAAnhC,EAAAgkH,EAAA/2C,EAAAjtE,EAAAk1G,EAAAtoF,EAAA5sB,EAAAykH,KAEA,MAAA5rH,GAGA,MAFAmH,GAAAwjH,EAAA3qH,MACAmH,GAAAskH,EAAArS,GAAAO,OAGA,GAAA+S,GAAAvlH,EAAA8jH,EAAA3G,YAAA3D,EAAA/gB,EACAz4F,GAAA0jH,EAAA6B,EACAA,EACAF,aACAplH,KAAA,SAAAulH,GACAxlH,EAAAylH,IACAzlH,EAAA0jH,EAAA,KACA1jH,EAAA4kH,EAAAY,EAAAhK,SACAgK,EAAAnwG,WACArV,EAAAikH,EAAAuB,EAAAr5E,SACAnsC,EAAAskH,EAAArS,GAAAM,UAGAvyG,EAAAqkH,KAEarkH,EAAAokH,MAGbjB,EAAA3qH,UAAAitH,EAAA,Wd2CA,Oc1CA/nH,KAAAimH,EAEA,WACAjmH,KAAAimH,GAAA,IAGAR,EAAA3qH,UAAAusH,EAAA,WACA,GAAA/kH,GAAAtC,IACAA,MAAAwnH,EAAA,SAAAzsB,GACA,GAAA+gB,GAAAH,GAAAr5G,EAAA8jH,EAAA9jH,EAAA+jH,EAAA/jH,EAAAk1G,GACAwQ,EAAA1lH,EAAA8jH,EAAA3G,YAAA3D,EAAA/gB,EACAz4F,GAAA0jH,EAAAgC,EACAA,EAAAL,aAAAplH,KAAA,SAAAksC,GACAnsC,EAAA0jH,EAAA,KACA1jH,EAAAikH,EAAA93E,EACAnsC,EAAAskH,EAAArS,GAAAM,UACavyG,EAAAukH,MAGbpB,EAAA3qH,UAAAysH,EAAA,WACA,GAAAjlH,GAAAtC,IACAA,MAAAwnH,EAAA,SAAAzsB,GACA,GAAA+gB,GAAAQ,GAAAh6G,EAAA8jH,EAAA9jH,EAAA+jH,EAAA/jH,EAAAk1G,EAAAl1G,EAAAgkH,EAAAhkH,EAAAikH,GACA0B,EAAA3lH,EAAA8jH,EAAA3G,YAAA3D,EAAA/gB,EACAz4F,GAAA0jH,EAAAiC,EACAA,EAAAN,aAAAplH,KAAA,SAAAksC,GACAnsC,EAAA0jH,EAAA,KACA1jH,EAAAikH,EAAA93E,EACAnsC,EAAA4kH,EAAA5kH,EAAAgkH,EAAAlP,QACA90G,EAAAskH,EAAArS,GAAAM,UACavyG,EAAAokH,MAGbjB,EAAA3qH,UAAAosH,EAAA,SAAAgB,GACA,GAAAC,GAAAnoH,KAAA0lH,CACA1lH,MAAA0lH,EAAAwC,EAIAloH,KAAA0lH,IAAAyC,GACAnoH,KAAAooH,KAGA3C,EAAA3qH,UAAA8rH,EAAA,SAAAxZ,GACA,GAAAptG,KAAA+6E,IAAAqyB,EAGA,OAAAA,GACA,IAAAmH,IAAAG,UASA,IAAAH,IAAAE,QAGAz0G,KAAA+6E,EAAAqyB,EACA,OAAAptG,KAAAgmH,GACAhmH,KAAAgmH,EAAAz/E,QAEA,MACA,KAAAguE,IAAAC,QAIA,GAAA6T,GAAAroH,KAAA+6E,IAAAw5B,GAAAK,MACA50G,MAAA+6E,EAAAqyB,EACAib,IACAroH,KAAAooH,IACApoH,KAAAk7E,IAEA,MACA,KAAAq5B,IAAAK,OAGA50G,KAAA+6E,EAAAqyB,EACAptG,KAAAooH,GACA,MACA,KAAA7T,IAAAvD,SAIAhxG,KAAA8lH,EAAA/U,IACA/wG,KAAA+6E,EAAAqyB,EACAptG,KAAAooH,GACA,MACA,KAAA7T,IAAAO,MAQA,IAAAP,IAAAM,QAKA70G,KAAA+6E,EAAAqyB,EACAptG,KAAAooH,MAIA3C,EAAA3qH,UAAA6rH,EAAA,WACA,OAAA3mH,KAAA+6E,GACA,IAAAw5B,IAAAE,QACAz0G,KAAA4mH,EAAArS,GAAAK,OACA,MACA,KAAAL,IAAAG,UACA10G,KAAA4mH,EAAArS,GAAAvD,SACA,MACA,KAAAuD,IAAAC,QACAx0G,KAAAk7E,MAOArgF,OAAAwC,eAAAooH,EAAA3qH,UAAA,YACA0C,IAAA,WACA,GAAA8qH,GAAAhU,EAAAt0G,KAAA+6E,EACA,WAAAqqC,IAAAplH,KAAA0lH,EAAA1lH,KAAAsmH,EAAAlP,OAAAkR,EAAAtoH,KAAAumH,EAAAvmH,UAAAkjE,IAEA3lE,YAAA,EACAD,cAAA,IAMAmoH,EAAA3qH,UAAA8K,GAAA,SAAAtJ,EAAA0b,EAAAha,EAAAuqH,GAIA,QAAAC,GAAAC,GACA,GAAAnsH,IAAA4jH,GAAAqB,cACA,0CAAArB,GAAAqB,cAAA,KAOA,QAAAmH,GAAA9rH,GACA,IAEA,WADA+rH,GAAA/rH,GAGA,MAAAzB,IACA,IAKA,GAJAytH,EAAAhsH,KACAw4G,EAAAx4G,EAAA,OACAw4G,EAAAx4G,EAAA,QACAw4G,EAAAx4G,EAAA,WAEA,OAEA,QAEA,MAAAzB,GACA,KAAA0tH,IAWA,QAAAC,GAAA/P,GACA,QAAAgQ,GAAA/wG,EAAAha,EAAAmnH,GACA,OAAApM,GACAD,GAAA,KAAAC,EAAAh5G,UAEA,IAAA+X,GAAA,GAAAktG,IAAAhtG,EAAAha,EAAAuqH,EAEA,OADA9uH,GAAAuvH,EAAAlxG,GACA,WACAre,EAAAwvH,EAAAnxG,IAGA,MAAAixG,GAEA,QAAAG,GAAAtsH,GACA,UAAAA,EACA,KAAAisH,EAEAH,GAAA9rH,OAzDA,KAAAob,IAAwCA,MAAApc,QACxC,KAAAoC,IAA+BA,MAAApC,QAC/B,KAAA2sH,IAAmCA,MAAA3sH,GAMnC,IAAAitH,GAAA,uFAEAF,EAAA1O,IAAA,GAAAd,UACAyP,EAAA5O,GAAA,SAAAb,SA2BAL,IAAA,MALAS,GAAAiP,GACAxO,GAAA0O,GAAA,GACAzO,IAAA,GACAA,IAAA,IAEAl6G,UACA,IAAAtG,GAAAuG,KAoBAmpH,GACAnP,GAAAkP,GACAjP,IAAA,GACAA,IAAA,GAKA,OAHA7E,GAAAp9F,IACAo9F,EAAAp3G,IACAo3G,EAAAmT,GAKAO,EAAA,MAAA9wG,EAAAha,EAAAuqH,GAHAO,EAAAK,IAYA1D,EAAA3qH,UAAAyH,KAAA,SAAAsK,EAAAC,GAGA,MAAA9M,MAAA8mH,EAAAvkH,KAAAsK,EAAAC,IAKA24G,EAAA3qH,UAAAsX,MAAA,SAAAtF,GACA,MAAA9M,MAAAuC,KAAA,KAAAuK,IAKA24G,EAAA3qH,UAAAkuH,EAAA,SAAAlxG,GACA9X,KAAA6lH,EAAAjrH,KAAAkd,GACA9X,KAAAopH,EAAAtxG,IAKA2tG,EAAA3qH,UAAAmuH,EAAA,SAAAnxG,GACAwpC,GAAAthD,KAAA6lH,EAAA/tG,IAEA2tG,EAAA3qH,UAAAstH,EAAA,WACA,GAAA9lH,GAAAtC,IACAA,MAAAqpH,IACAzO,GAAA56G,KAAA6lH,GACApmH,QAAA,SAAAqY,GACAxV,EAAA8mH,EAAAtxG,MAGA2tG,EAAA3qH,UAAAuuH,EAAA,WACA,UAAArpH,KAAAkmH,EAAA,CACA,GAAAoD,IAAA,CACA,QAAAhV,EAAAt0G,KAAA+6E,IACA,IAAA45B,IAAAE,QACA0J,GAAAv+G,KAAAkmH,EAAAhmH,KAAA,KAAAF,KAAA4xD,YACA,MACA,KAAA+iD,IAAA3D,SACA,IAAA2D,IAAAG,MAEAyJ,GADAv+G,KAAAmmH,EACAjmH,KAAA,KAAAF,KAAA8lH,KACA,MACA,SACAwD,GAAA,EAGAA,IACAtpH,KAAAkmH,EAAA,KACAlmH,KAAAmmH,EAAA,QAIAV,EAAA3qH,UAAAsuH,EAAA,SAAAtxG,GAEA,OADAw8F,EAAAt0G,KAAA+6E,IAEA,IAAA45B,IAAAH,QACA,IAAAG,IAAAC,OACA,OAAA98F,EAAAF,MACA2mG,GAAAzmG,EAAAF,KAAA1X,KAAA4X,EAAA9X,KAAA4xD,YAEA,MACA,KAAA+iD,IAAAE,QACA,OAAA/8F,EAAAC,UACAwmG,GAAAzmG,EAAAC,SAAA7X,KAAA4X,KAEA,MACA,KAAA68F,IAAA3D,SACA,IAAA2D,IAAAG,MACA,OAAAh9F,EAAA9Z,OACAugH,GAAAzmG,EAAA9Z,MAAAkC,KAAA4X,EAAA9X,KAAA8lH,KAEA,MACA,SAEA,OAAAhuG,EAAA9Z,OACAugH,GAAAzmG,EAAA9Z,MAAAkC,KAAA4X,EAAA9X,KAAA8lH,QAQAL,EAAA3qH,UAAAykE,OAAA,WACAu5C,GAAA,YAAA/4G,UACA,IAAA2zG,GAAA1zG,KAAA+6E,IAAAw5B,GAAAK,QACA50G,KAAA+6E,IAAAw5B,GAAAE,OAIA,OAHAf,IACA1zG,KAAA4mH,EAAArS,GAAAC,SAEAd,GAMA+R,EAAA3qH,UAAAyuH,MAAA,WACAzQ,GAAA,WAAA/4G,UACA,IAAA2zG,GAAA1zG,KAAA+6E,IAAAw5B,GAAAC,OAIA,OAHAd,IACA1zG,KAAA4mH,EAAArS,GAAAE,SAEAf,GAOA+R,EAAA3qH,UAAAyrC,OAAA,WACAuyE,GAAA,YAAA/4G,UACA,IAAA2zG,GAAA1zG,KAAA+6E,IAAAw5B,GAAAC,SACAx0G,KAAA+6E,IAAAw5B,GAAAE,OAIA,OAHAf,IACA1zG,KAAA4mH,EAAArS,GAAAG,WAEAhB,GAEA+R,KCpgBArF,GAAA,WACA,QAAA9+C,GAAAy2C,EAAA15F,GACAre,KAAA+3G,cAEA/3G,KAAAqe,SADAA,YAAA65F,IACA75F,EAGA65F,GAAA4K,YAAAzkG,GA0LA,MAlLAijD,GAAAxmE,UAAAiV,SAAA,WAEA,MADA+oG,IAAA,cAAA/4G,WACA,QAAAC,KAAAqe,SAAAmyF,OAAA,IAAAxwG,KAAAqe,SAAAs/B,MAEA2jB,EAAAxmE,UAAA0uH,OAAA,SAAAzR,EAAA15F,GACA,UAAAijD,GAAAy2C,EAAA15F,IAEAijD,EAAAxmE,UAAA28G,SAAA,WACA,MAAAR,OAOA31C,EAAAxmE,UAAA6qD,MAAA,SAAA4d,GACAu1C,GAAA,SAAAS,MAAAx5G,UACA,IAAA0pH,GAAA9jE,EAAA3lD,KAAAqe,SAAAs/B,KAAA4lB,GACAllD,EAAA,GAAA65F,IAAAl4G,KAAAqe,SAAAmyF,OAAAiZ,EACA,OAAAzpH,MAAAwpH,OAAAxpH,KAAA+3G,YAAA15F,IAEAxjB,OAAAwC,eAAAikE,EAAAxmE,UAAA,UAKA0C,IAAA,WACA,GAAAisH,GAAA3T,EAAA91G,KAAAqe,SAAAs/B,KACA,WAAA8rE,EACA,WAEA,IAAAprG,GAAA,GAAA65F,IAAAl4G,KAAAqe,SAAAmyF,OAAAiZ,EACA,OAAAzpH,MAAAwpH,OAAAxpH,KAAA+3G,YAAA15F,IAEA9gB,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAikE,EAAAxmE,UAAA,QAKA0C,IAAA,WACA,GAAA6gB,GAAA,GAAA65F,IAAAl4G,KAAAqe,SAAAmyF,OAAA,GACA,OAAAxwG,MAAAwpH,OAAAxpH,KAAA+3G,YAAA15F,IAEA9gB,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAikE,EAAAxmE,UAAA,UACA0C,IAAA,WACA,MAAAwC,MAAAqe,SAAAmyF,QAEAjzG,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAikE,EAAAxmE,UAAA,YACA0C,IAAA,WACA,MAAAwC,MAAAqe,SAAAs/B,MAEApgD,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAikE,EAAAxmE,UAAA,QACA0C,IAAA,WACA,MAAAy4G,GAAAj2G,KAAAqe,SAAAs/B,OAEApgD,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAikE,EAAAxmE,UAAA,WACA0C,IAAA,WACA,MAAAwC,MAAA+3G,YAAAn1G,WAEArF,YAAA,EACAD,cAAA,IAQAgkE,EAAAxmE,UAAAgkD,IAAA,SAAAx0C,EAAAmkC,GAIA,WAHA,KAAAA,IAAkCA,EAAA,MAClCqqE,GAAA,OAAAc,KAAAE,IAAA,IAAA/5G,WACAC,KAAA0pH,EAAA,OACA,GAAAlE,IAAAxlH,UAAA+3G,YAAA/3G,KAAAqe,SAAAre,KAAAy3G,WAAA,GAAAoF,IAAAvyG,GAAAmkC,IASA6yB,EAAAxmE,UAAA6uH,UAAA,SAAAh5D,EAAA8hD,EAAA4J,OACA,KAAA5J,IAAgCA,EAAAM,GAAAC,KAChC8F,GAAA,aACAS,KACAA,GAAA1G,GAAA,GACAiH,IAAA,IACA/5G,WACAC,KAAA0pH,EAAA,YACA,IAAAp/G,GAAA8oG,EAAAX,EAAA9hD,GACAliB,EAAA7jC,EAAAyxG,EAIA,QAHAlH,EAAA1mE,EAAA,cAAA0mE,EAAA7qG,EAAA4tC,eACAzJ,EAAA,YAAAnkC,EAAA4tC,aAEA,GAAAstE,IAAAxlH,UAAA+3G,YAAA/3G,KAAAqe,SAAAre,KAAAy3G,WAAA,GAAAoF,IAAAvyG,QAAA,GAAAmkC,IAMA6yB,EAAAxmE,UAAAuH,OAAA,WACAy2G,GAAA,YAAA/4G,WACAC,KAAA0pH,EAAA,SACA,IAAAjwH,GAAAuG,IACA,OAAAA,MAAA+3G,YAAA0P,eAAAllH,KAAA,SAAAw4F,GACA,GAAA+gB,GAAAG,GAAAxiH,EAAAs+G,YAAAt+G,EAAA4kB,SACA,OAAA5kB,GAAAs+G,YAAA0H,YAAA3D,EAAA/gB,GAAA4sB,gBAQArmD,EAAAxmE,UAAA6gH,YAAA,WACA7C,GAAA,iBAAA/4G,WACAC,KAAA0pH,EAAA,cACA,IAAAjwH,GAAAuG,IACA,OAAAA,MAAA+3G,YAAA0P,eAAAllH,KAAA,SAAAw4F,GACA,GAAA+gB,GAAAH,GAAAliH,EAAAs+G,YAAAt+G,EAAA4kB,SAAA5kB,EAAAg+G,WACA,OAAAh+G,GAAAs+G,YAAA0H,YAAA3D,EAAA/gB,GAAA4sB,gBAYArmD,EAAAxmE,UAAAkhH,eAAA,SAAAvtE,GACAqqE,GAAA,kBAAAgB,MAAA/5G,WACAC,KAAA0pH,EAAA,iBACA,IAAAjwH,GAAAuG,IACA,OAAAA,MAAA+3G,YAAA0P,eAAAllH,KAAA,SAAAw4F,GACA,GAAA+gB,GAAAE,GAAAviH,EAAAs+G,YAAAt+G,EAAA4kB,SAAAowB,EAAAh1C,EAAAg+G,WACA,OAAAh+G,GAAAs+G,YAAA0H,YAAA3D,EAAA/gB,GAAA4sB,gBAOArmD,EAAAxmE,UAAA8uH,eAAA,WAGA,MAFA9Q,IAAA,oBAAA/4G,WACAC,KAAA0pH,EAAA,kBACA1pH,KAAA27G,cAAAp5G,KAAA,SAAAksC,GACA,GAAAhL,GAAAgL,EAAA,eACA,IAAA0mE,EAAA1xE,GACA,MAAAA,EAGA,MAAAguE,QAIAnwC,EAAAxmE,UAAA4uH,EAAA,SAAAxsH,GACA,QAAA8C,KAAAqe,SAAAs/B,KACA,KAAA20D,GAAAp1G,IAGAokE,KCpOAuoD,GAAA,WACA,QAAAC,GAAA9rH,GACAgC,KAAA8mH,EAAA5R,EAAAl3G,GAUA,MAPA8rH,GAAAhvH,UAAA6sH,WAAA,WACA,MAAA3nH,MAAA8mH,GAGAgD,EAAAhvH,UAAAyrC,OAAA,SAAAwjF,OACA,KAAAA,IAAmCA,GAAA,IAEnCD,KCEAE,GAAA,WACA,QAAAC,KACAjqH,KAAAkqH,KACAlqH,KAAAmqH,GAAA1J,GA4BA,MArBAwJ,GAAAnvH,UAAAsvH,WAAA,SAAA9vG,GAKA,QAAA+vG,WACA5wH,GAAAywH,EAAA/7G,GALA,GAAAA,GAAAnO,KAAAmqH,EACAnqH,MAAAmqH,KACAnqH,KAAAkqH,EAAA/7G,GAAAmM,CACA,IAAA7gB,GAAAuG,IAIAsa,GAAAqtG,aAAAplH,KAAA8nH,MAKAJ,EAAAnvH,UAAAs8C,MAAA,WACA33C,EAAAO,KAAAkqH,EAAA,SAAA7oH,EAAAqM,GACAA,GACAA,EAAA64B,QAAA,KAGAvmC,KAAAkqH,MAEAD,KCtCAK,GAAA,WACA,QAAAC,GAAA/rH,EAAAgsH,EAAAC,EAAA7nH,EAAA88G,GAIA,GAHA1/G,KAAA0qH,GAAA,KACA1qH,KAAA2qH,IAAA,EACA3qH,KAAA03F,GAAAl5F,EACA,OAAAwB,KAAA03F,GAAA,CACA,GAAA94F,GAAAoB,KAAA03F,GAAA94F,OACAu2G,GAAAv2G,KACAoB,KAAA0qH,GAAAH,EAAAK,GAAAhsH,IAGAoB,KAAA6qH,GAAAL,EACAxqH,KAAA8qH,GAAAL,EACAzqH,KAAA+qH,GAAArL,EACA1/G,KAAAgrH,GAAApoH,EACA5C,KAAAirH,GAAA1K,GACAvgH,KAAAkrH,GAAA1K,GACAxgH,KAAAmrH,GAAA,GAAAnB,IAsFA,MApFAO,GAAAK,GAAA,SAAAQ,GACA,GAAAxI,GAAAwI,EAAA,mBACA,cAAAxI,EACA,KAEA1K,GAAAyK,mBAAAC,GACApS,QAEA+Z,EAAAzvH,UAAA2sH,aAAA,WAGA,cAAAznH,KAAA03F,IACAyd,EAAAn1G,KAAA03F,GAAA72F,WACAs0G,EAAAn1G,KAAA03F,GAAA72F,SAAAiB,UACA9B,KAAA03F,GAAA72F,SAAAiB,WAAAS,KAAA,SAAAw1C,GACA,cAAAA,EACAA,EAAAnf,YAGA,MAEa,SAAAyyF,GACb,cAIApW,EAAA,OAGAsV,EAAAzvH,UAAA01G,OAAA,WACA,GAAAxwG,KAAA2qH,GACA,KAAAvY,IAGA,OAAApyG,MAAA0qH,IAOAH,EAAAzvH,UAAA8H,QAAA,WACA,MAAA5C,MAAAgrH,IASAT,EAAAzvH,UAAAq9G,qBAAA,SAAAF,GACA,MAAAj4G,MAAA6qH,GAAA7qH,KAAAi4G,IAEAsS,EAAAzvH,UAAA2kH,YAAA,SAAA3D,EAAA/gB,GACA,GAAA/6F,KAAA2qH,GAMA,UAAAd,IAAAzX,IALA,IAAAp1E,GAAAh9B,KAAA8qH,GAAAhP,EAAA/gB,EAAA/6F,KAAA+qH,GAEA,OADA/qH,MAAAmrH,GAAAf,WAAAptF,GACAA,GASAutF,EAAAzvH,UAAAwwH,UAAA,WACAtrH,KAAA2qH,IAAA,EACA3qH,KAAA03F,GAAA,KACA13F,KAAAmrH,GAAA/zE,SAEAmzE,EAAAzvH,UAAAgiH,mBAAA,WACA,MAAA98G,MAAAkrH,IAEAX,EAAAzvH,UAAAywH,sBAAA,SAAA5mE,GACA3kD,KAAAkrH,GAAAvmE,GAEA4lE,EAAAzvH,UAAA+gH,sBAAA,WACA,MAAA77G,MAAAirH,IAEAV,EAAAzvH,UAAA0wH,yBAAA,SAAA7mE,GACA3kD,KAAAirH,GAAAtmE,GAEA4lE,KfpFA5K,GAAA,WACA,QAAA8L,GAAAhoF,EAAAlsB,EAAA8V,EAAAmW,EAAA04E,EAAA0D,EAAA59G,EAAA0pH,EAAAjwH,EAAA6iH,EAAAoB,GACA1/G,KAAA2rH,GAAA,KACA3rH,KAAA4rH,GAAA,KACA5rH,KAAAkmH,EAAA,KACAlmH,KAAAmmH,EAAA,KACAnmH,KAAA6rH,IAAA,EACA7rH,KAAA8rH,IAAA,EACA9rH,KAAA+rH,GAAAtoF,EACAzjC,KAAAgsH,GAAAz0G,EACAvX,KAAAisH,GAAA5+F,EACArtB,KAAAksH,GAAA1oF,EACAxjC,KAAAmsH,GAAAjQ,EAAA10G,QACAxH,KAAAosH,GAAAxM,EAAAp4G,QACAxH,KAAAqnF,GAAArlF,EACAhC,KAAAqsH,GAAAX,EACA1rH,KAAAssH,GAAAhO,EACAt+G,KAAAusH,GAAA9wH,EACAuE,KAAA+qH,GAAArL,CACA,IAAAjmH,GAAAuG,IACAA,MAAA8mH,EAAA/R,EAAA,SAAAh5G,EAAAE,GACAxC,EAAAysH,EAAAnqH,EACAtC,EAAA0sH,EAAAlqH,EACAxC,EAAAyhF,MA+HA,MAzHAuwC,GAAA3wH,UAAAogF,EAAA,WAEA,QAAAsxC,GAAAC,EAAAhO,GAOA,QAAAiO,GAAAC,GACA,GAAA1F,GAAA0F,EAAA1F,OACAjJ,EAAA2O,EAAAC,iBAAAD,EAAA3O,OAAA,CACA,QAAAvkH,EAAA6yH,IACA7yH,EAAA6yH,GAAArF,EAAAjJ,GAVA,GAAAS,EAEA,WADAgO,IAAA,KAAAI,KAAA,WAGA,IAAA7xB,GAAAvhG,EAAAsxH,GAAAtI,aACAhpH,GAAAkyH,GAAA3wB,EAQA,OAAAvhG,EAAA6yH,IACAtxB,EAAAqnB,0BAAAqK,GAEA1xB,EACA1sE,KAAA70B,EAAAsyH,GAAAtyH,EAAAuyH,GAAAvyH,EAAAyyH,GAAAzyH,EAAAwyH,IACA1pH,KAAA,SAAAy4F,GACA,OAAAvhG,EAAA6yH,IACAtxB,EAAAunB,6BAAAmK,GAEAjzH,EAAAkyH,GAAA,KACA3wB,GACA,IAAA8xB,GAAA9xB,EAAAmnB,iBAAA7B,GAAAuB,SACA3yF,EAAA8rE,EAAAsgB,WACA,KAAAwR,GAAArzH,EAAAszH,GAAA79F,GAAA,CACA,GAAA89F,GAAAhyB,EAAAmnB,iBAAA7B,GAAAyB,KAEA,YADA0K,IAAA,KAAAI,KAAA,OAAAG,IAGA,GAAAC,GAAAvS,GAAAjhH,EAAA0yH,GAAAj9F,EACAu9F,IAAA,KAAAI,IAAAI,EAAAjyB,MAOA,QAAAkyB,GAAAC,EAAAj+F,GACA,GAAAnzB,GAAAtC,EAAAysH,EACAjqH,EAAAxC,EAAA0sH,EACAnrB,EAAA9rE,EAAA8rE,GACA,IAAA9rE,EAAAk+F,eACA,IACA,GAAA5yH,GAAAf,EAAA4tF,GAAA2T,IAAAonB,kBACAhN,GAAA56G,GACAuB,EAAAvB,GAGAuB,IAGA,MAAAZ,GACAc,EAAAd,OAIA,WAAA6/F,EAAA,CACA,GAAAl9F,GAAAssC,GACAtsC,GAAAy9G,sBAAAvgB,EAAAonB,mBAEAnmH,EADAxC,EAAA4yH,GACA5yH,EAAA4yH,GAAArxB,EAAAl9F,GAGAA,OAIA,IAAAoxB,EAAAuvF,SAAA,CACA,GAAA3gH,GAAArE,EAAAqyH,GACA1Z,IACArB,GACA90G,GAAA6B,OAEA,CACA,GAAAA,GAAA+yG,GACA50G,GAAA6B,IA/EA,GAAArE,GAAAuG,IAoFAA,MAAA6rH,GACAqB,GAAA,KAAAL,KAAA,YAGA7sH,KAAA4rH,GAAA19E,GAAAs+E,EAAAU,EAAAltH,KAAAusH,KAIAd,EAAA3wH,UAAA6sH,WAAA,WACA,MAAA3nH,MAAA8mH,GAGA2E,EAAA3wH,UAAAyrC,OAAA,SAAAwjF,GACA/pH,KAAA6rH,IAAA,EACA7rH,KAAA8rH,GAAA/B,IAAA,EACA,OAAA/pH,KAAA4rH,IACAzM,GAAAn/G,KAAA4rH,IAEA,OAAA5rH,KAAA2rH,IACA3rH,KAAA2rH,GAAAp9F,SAGAk9F,EAAA3wH,UAAAiyH,GAAA,SAAA79F,GAGA,GAAAm+F,GAAAn+F,GAAA,KAAAA,EAAA,IACAo+F,GAEA,IAEA,KAEAC,EAAA7S,GAAA4S,EAAAp+F,GACAs+F,EAAA9S,GAAA16G,KAAAosH,GAAAl9F,EACA,OAAAm+F,IAAAE,GAAAC,GAEA/B,KAOAoB,GAAA,WACA,QAAAA,GAAAO,EAAApyB,EAAAyyB,GACAztH,KAAAotH,iBACAptH,KAAAg7F,MACAh7F,KAAAy+G,WAAAgP,EAEA,MAAAZ,MgBxKA9M,GAAA,WACA,QAAA2N,GAAAlvH,EAAAkhH,EAAAj8E,GAEA,QAAA+mF,GAAAzS,EAAAE,GACA,UAAAmI,IAAArI,EAAAE,GAIA,GANAj4G,KAAA0qH,GAAA,KAIA1qH,KAAAomH,EAAA,GAAAkE,IAAA9rH,EAAAgsH,EAAA/K,GAAAz/G,KAAA0/G,GACA1/G,KAAA03F,GAAAl5F,EACA,MAAAilC,EACAzjC,KAAA0qH,GAAAxS,GAAAyK,mBAAAl/E,OAEA,CACA,GAAAkqF,GAAA3tH,KAAAomH,EAAA5V,QACA,OAAAmd,IACA3tH,KAAA0qH,GAAA,GAAAxS,IAAAyV,EAAA,KAGA3tH,KAAA4tH,GAAA,GAAAC,IAAA7tH,MA+EA,MAzEA0tH,GAAA5yH,UAAA6T,IAAA,SAAAgvC,GACA,QAAAw7D,GAAAx7D,GACA,qBAAAnrC,KAAAmrC,GACA,kEAIA,GADAm7D,GAAA,OAAAS,GAAAJ,GAAA,IAAAp5G,WACA,MAAAC,KAAA0qH,GACA,KAAA/uH,OAAA,iDAEA,IAAAgT,GAAA,GAAAyxG,IAAApgH,KAAAomH,EAAApmH,KAAA0qH,GACA,cAAA/sE,EACAhvC,EAAAg3C,MAAAhI,GAGAhvC,GAOA++G,EAAA5yH,UAAA6sE,WAAA,SAAAlkC,GACA,QAAA01E,GAAAv8G,GACA,sBAAA4V,KAAA5V,GACA,+DAEA,KACAs7G,GAAA4K,YAAAlmH,GAEA,MAAAzB,GACA,wDAIA,MADA29G,IAAA,cAAAS,GAAAJ,GAAA,IAAAp5G,WACA,GAAAqgH,IAAApgH,KAAAomH,EAAA3iF,IAEA5oC,OAAAwC,eAAAqwH,EAAA5yH,UAAA,sBACA0C,IAAA,WACA,MAAAwC,MAAAomH,EAAAtJ,sBAEAv/G,YAAA,EACAD,cAAA,IAEAowH,EAAA5yH,UAAAywH,sBAAA,SAAA5mE,GACAm0D,GAAA,yBAAAiB,MAAAh6G,WACAC,KAAAomH,EAAAmF,sBAAA5mE,IAEA9pD,OAAAwC,eAAAqwH,EAAA5yH,UAAA,yBACA0C,IAAA,WACA,MAAAwC,MAAAomH,EAAAvK,yBAEAt+G,YAAA,EACAD,cAAA,IAEAowH,EAAA5yH,UAAA0wH,yBAAA,SAAA7mE,GACAm0D,GAAA,4BAAAiB,MAAAh6G,WACAC,KAAAomH,EAAAoF,yBAAA7mE,IAEA9pD,OAAAwC,eAAAqwH,EAAA5yH,UAAA,OACA0C,IAAA,WACA,MAAAwC,MAAA03F,IAEAn6F,YAAA,EACAD,cAAA,IAEAzC,OAAAwC,eAAAqwH,EAAA5yH,UAAA,YACA0C,IAAA,WACA,MAAAwC,MAAA4tH,IAEArwH,YAAA,EACAD,cAAA,IAEAowH,KAMAG,GAAA,WACA,QAAAC,GAAAlrH,GACA5C,KAAAgrH,GAAApoH,EAUA,MAJAkrH,GAAAhzH,UAAAuH,OAAA,WAEA,MADArC,MAAAgrH,GAAA5E,EAAAkF,YACArW,MAAAr5G,KAEAkyH,If7IA3vH,GAAA,gBAAA8hH,EAyBA,IAAAI,IAAA,SAiBAJ,IAAAnQ,GAAA,YnBmoHG,MACO,MAAM9xG,GACN,KAAUrC,OACR","file":"firebase.js","sourcesContent":["/*!\n * @license Firebase v4.6.2\n * Build: rev-cbb07d3\n * Terms: https://firebase.google.com/terms/\n */\nvar firebase = (function() {\n var window = typeof window === 'undefined' ? self : window;\n return /******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonpFirebase\"];\n/******/ \twindow[\"webpackJsonpFirebase\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t5: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 57);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(28));\n__export(__webpack_require__(29));\n__export(__webpack_require__(20));\n__export(__webpack_require__(65));\n__export(__webpack_require__(66));\n__export(__webpack_require__(67));\n__export(__webpack_require__(68));\n__export(__webpack_require__(30));\n__export(__webpack_require__(69));\n__export(__webpack_require__(31));\n__export(__webpack_require__(70));\n__export(__webpack_require__(71));\n__export(__webpack_require__(73));\n__export(__webpack_require__(74));\n__export(__webpack_require__(75));\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../util/dist/cjs/index.js\nvar cjs = __webpack_require__(0);\nvar cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);\n\n// CONCATENATED MODULE: ../app/dist/esm/src/firebaseApp.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar contains = function (obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\n// An array to capture listeners before the true auth functions\n// exist\nvar tokenListeners = [];\n/**\n * Global context object for a collection of services using\n * a shared authentication state.\n */\nvar firebaseApp_FirebaseAppImpl = /** @class */ (function () {\n function FirebaseAppImpl(options, name, firebase_) {\n this.firebase_ = firebase_;\n this.isDeleted_ = false;\n this.services_ = {};\n this.name_ = name;\n this.options_ = Object(cjs[\"deepCopy\"])(options);\n this.INTERNAL = {\n getUid: function () { return null; },\n getToken: function () { return Promise.resolve(null); },\n addAuthTokenListener: function (callback) {\n tokenListeners.push(callback);\n // Make sure callback is called, asynchronously, in the absence of the auth module\n setTimeout(function () { return callback(null); }, 0);\n },\n removeAuthTokenListener: function (callback) {\n tokenListeners = tokenListeners.filter(function (listener) { return listener !== callback; });\n }\n };\n }\n Object.defineProperty(FirebaseAppImpl.prototype, \"name\", {\n get: function () {\n this.checkDestroyed_();\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseAppImpl.prototype, \"options\", {\n get: function () {\n this.checkDestroyed_();\n return this.options_;\n },\n enumerable: true,\n configurable: true\n });\n FirebaseAppImpl.prototype.delete = function () {\n var _this = this;\n return new Promise(function (resolve) {\n _this.checkDestroyed_();\n resolve();\n })\n .then(function () {\n _this.firebase_.INTERNAL.removeApp(_this.name_);\n var services = [];\n Object.keys(_this.services_).forEach(function (serviceKey) {\n Object.keys(_this.services_[serviceKey]).forEach(function (instanceKey) {\n services.push(_this.services_[serviceKey][instanceKey]);\n });\n });\n return Promise.all(services.map(function (service) {\n return service.INTERNAL.delete();\n }));\n })\n .then(function () {\n _this.isDeleted_ = true;\n _this.services_ = {};\n });\n };\n /**\n * Return a service instance associated with this app (creating it\n * on demand), identified by the passed instanceIdentifier.\n *\n * NOTE: Currently storage is the only one that is leveraging this\n * functionality. They invoke it by calling:\n *\n * ```javascript\n * firebase.app().storage('STORAGE BUCKET ID')\n * ```\n *\n * The service name is passed to this already\n * @internal\n */\n FirebaseAppImpl.prototype._getService = function (name, instanceIdentifier) {\n if (instanceIdentifier === void 0) { instanceIdentifier = DEFAULT_ENTRY_NAME; }\n this.checkDestroyed_();\n if (!this.services_[name]) {\n this.services_[name] = {};\n }\n if (!this.services_[name][instanceIdentifier]) {\n /**\n * If a custom instance has been defined (i.e. not '[DEFAULT]')\n * then we will pass that instance on, otherwise we pass `null`\n */\n var instanceSpecifier = instanceIdentifier !== DEFAULT_ENTRY_NAME\n ? instanceIdentifier\n : undefined;\n var service = this.firebase_.INTERNAL.factories[name](this, this.extendApp.bind(this), instanceSpecifier);\n this.services_[name][instanceIdentifier] = service;\n }\n return this.services_[name][instanceIdentifier];\n };\n /**\n * Callback function used to extend an App instance at the time\n * of service instance creation.\n */\n FirebaseAppImpl.prototype.extendApp = function (props) {\n var _this = this;\n // Copy the object onto the FirebaseAppImpl prototype\n Object(cjs[\"deepExtend\"])(this, props);\n /**\n * If the app has overwritten the addAuthTokenListener stub, forward\n * the active token listeners on to the true fxn.\n *\n * TODO: This function is required due to our current module\n * structure. Once we are able to rely strictly upon a single module\n * implementation, this code should be refactored and Auth should\n * provide these stubs and the upgrade logic\n */\n if (props.INTERNAL && props.INTERNAL.addAuthTokenListener) {\n tokenListeners.forEach(function (listener) {\n _this.INTERNAL.addAuthTokenListener(listener);\n });\n tokenListeners = [];\n }\n };\n /**\n * This function will throw an Error if the App has already been deleted -\n * use before performing API actions on the App.\n */\n FirebaseAppImpl.prototype.checkDestroyed_ = function () {\n if (this.isDeleted_) {\n error('app-deleted', { name: this.name_ });\n }\n };\n return FirebaseAppImpl;\n}());\n// Prevent dead-code elimination of these methods w/o invalid property\n// copying.\n(firebaseApp_FirebaseAppImpl.prototype.name && firebaseApp_FirebaseAppImpl.prototype.options) ||\n firebaseApp_FirebaseAppImpl.prototype.delete ||\n console.log('dc');\n/**\n * Return a firebase namespace object.\n *\n * In production, this will be called exactly once and the result\n * assigned to the 'firebase' global. It may be called multiple times\n * in unit tests.\n */\nfunction createFirebaseNamespace() {\n var apps_ = {};\n var factories = {};\n var appHooks = {};\n // A namespace is a plain JavaScript Object.\n var namespace = {\n // Hack to prevent Babel from modifying the object returned\n // as the firebase namespace.\n __esModule: true,\n initializeApp: initializeApp,\n app: app,\n apps: null,\n Promise: Promise,\n SDK_VERSION: '4.6.1',\n INTERNAL: {\n registerService: registerService,\n createFirebaseNamespace: createFirebaseNamespace,\n extendNamespace: extendNamespace,\n createSubscribe: cjs[\"createSubscribe\"],\n ErrorFactory: cjs[\"ErrorFactory\"],\n removeApp: removeApp,\n factories: factories,\n useAsService: useAsService,\n Promise: Promise,\n deepExtend: cjs[\"deepExtend\"]\n }\n };\n // Inject a circular default export to allow Babel users who were previously\n // using:\n //\n // import firebase from 'firebase';\n // which becomes: var firebase = require('firebase').default;\n //\n // instead of\n //\n // import * as firebase from 'firebase';\n // which becomes: var firebase = require('firebase');\n Object(cjs[\"patchProperty\"])(namespace, 'default', namespace);\n // firebase.apps is a read-only getter.\n Object.defineProperty(namespace, 'apps', {\n get: getApps\n });\n /**\n * Called by App.delete() - but before any services associated with the App\n * are deleted.\n */\n function removeApp(name) {\n var app = apps_[name];\n callAppHooks(app, 'delete');\n delete apps_[name];\n }\n /**\n * Get the App object for a given name (or DEFAULT).\n */\n function app(name) {\n name = name || DEFAULT_ENTRY_NAME;\n if (!contains(apps_, name)) {\n error('no-app', { name: name });\n }\n return apps_[name];\n }\n Object(cjs[\"patchProperty\"])(app, 'App', firebaseApp_FirebaseAppImpl);\n /**\n * Create a new App instance (name must be unique).\n */\n function initializeApp(options, name) {\n if (name === undefined) {\n name = DEFAULT_ENTRY_NAME;\n }\n else {\n if (typeof name !== 'string' || name === '') {\n error('bad-app-name', { name: name + '' });\n }\n }\n if (contains(apps_, name)) {\n error('duplicate-app', { name: name });\n }\n var app = new firebaseApp_FirebaseAppImpl(options, name, namespace);\n apps_[name] = app;\n callAppHooks(app, 'create');\n return app;\n }\n /*\n * Return an array of all the non-deleted FirebaseApps.\n */\n function getApps() {\n // Make a copy so caller cannot mutate the apps list.\n return Object.keys(apps_).map(function (name) { return apps_[name]; });\n }\n /*\n * Register a Firebase Service.\n *\n * firebase.INTERNAL.registerService()\n *\n * TODO: Implement serviceProperties.\n */\n function registerService(name, createService, serviceProperties, appHook, allowMultipleInstances) {\n // Cannot re-register a service that already exists\n if (factories[name]) {\n error('duplicate-service', { name: name });\n }\n // Capture the service factory for later service instantiation\n factories[name] = createService;\n // Capture the appHook, if passed\n if (appHook) {\n appHooks[name] = appHook;\n // Run the **new** app hook on all existing apps\n getApps().forEach(function (app) {\n appHook('create', app);\n });\n }\n // The Service namespace is an accessor function ...\n var serviceNamespace = function (appArg) {\n if (appArg === void 0) { appArg = app(); }\n if (typeof appArg[name] !== 'function') {\n // Invalid argument.\n // This happens in the following case: firebase.storage('gs:/')\n error('invalid-app-argument', { name: name });\n }\n // Forward service instance lookup to the FirebaseApp.\n return appArg[name]();\n };\n // ... and a container for service-level properties.\n if (serviceProperties !== undefined) {\n Object(cjs[\"deepExtend\"])(serviceNamespace, serviceProperties);\n }\n // Monkey-patch the serviceNamespace onto the firebase namespace\n namespace[name] = serviceNamespace;\n // Patch the FirebaseAppImpl prototype\n firebaseApp_FirebaseAppImpl.prototype[name] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var serviceFxn = this._getService.bind(this, name);\n return serviceFxn.apply(this, allowMultipleInstances ? args : []);\n };\n return serviceNamespace;\n }\n /**\n * Patch the top-level firebase namespace with additional properties.\n *\n * firebase.INTERNAL.extendNamespace()\n */\n function extendNamespace(props) {\n Object(cjs[\"deepExtend\"])(namespace, props);\n }\n function callAppHooks(app, eventName) {\n Object.keys(factories).forEach(function (serviceName) {\n // Ignore virtual services\n var factoryName = useAsService(app, serviceName);\n if (factoryName === null) {\n return;\n }\n if (appHooks[factoryName]) {\n appHooks[factoryName](eventName, app);\n }\n });\n }\n // Map the requested service to a registered service name\n // (used to map auth to serverAuth service when needed).\n function useAsService(app, name) {\n if (name === 'serverAuth') {\n return null;\n }\n var useService = name;\n var options = app.options;\n return useService;\n }\n return namespace;\n}\nfunction error(code, args) {\n throw appErrors.create(code, args);\n}\n// TypeScript does not support non-string indexes!\n// let errors: {[code: AppError: string} = {\nvar errors = {\n 'no-app': \"No Firebase App '{$name}' has been created - \" +\n 'call Firebase App.initializeApp()',\n 'bad-app-name': \"Illegal App name: '{$name}\",\n 'duplicate-app': \"Firebase App named '{$name}' already exists\",\n 'app-deleted': \"Firebase App named '{$name}' already deleted\",\n 'duplicate-service': \"Firebase service named '{$name}' already registered\",\n 'sa-not-supported': 'Initializing the Firebase SDK with a service ' +\n 'account is only allowed in a Node.js environment. On client ' +\n 'devices, you should instead initialize the SDK with an api key and ' +\n 'auth domain',\n 'invalid-app-argument': 'firebase.{$name}() takes either no argument or a ' +\n 'Firebase App instance.'\n};\nvar appErrors = new cjs[\"ErrorFactory\"]('app', 'Firebase', errors);\n\n\n//# sourceMappingURL=firebaseApp.js.map\n\n// CONCATENATED MODULE: ../app/dist/esm/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"firebase\", function() { return firebase; });\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar firebase = createFirebaseNamespace();\n/* harmony default export */ var esm = __webpack_exports__[\"default\"] = (firebase);\n\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */,\n/* 12 */,\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */,\n/* 19 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\n */\nexports.CONSTANTS = {\n /**\n * @define {boolean} Whether this is the client Node.js SDK.\n */\n NODE_CLIENT: false,\n /**\n * @define {boolean} Whether this is the Admin Node.js SDK.\n */\n NODE_ADMIN: false,\n /**\n * Firebase SDK Version\n */\n SDK_VERSION: '${JSCORE_VERSION}'\n};\n\n//# sourceMappingURL=constants.js.map\n\n\n/***/ }),\n/* 21 */,\n/* 22 */,\n/* 23 */,\n/* 24 */,\n/* 25 */,\n/* 26 */,\n/* 27 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = __webpack_require__(20);\n/**\n * Throws an error if the provided assertion is falsy\n * @param {*} assertion The assertion to be tested for falsiness\n * @param {!string} message The message to display if the check fails\n */\nexports.assert = function (assertion, message) {\n if (!assertion) {\n throw exports.assertionError(message);\n }\n};\n/**\n * Returns an Error object suitable for throwing.\n * @param {string} message\n * @return {!Error}\n */\nexports.assertionError = function (message) {\n return new Error('Firebase Database (' +\n constants_1.CONSTANTS.SDK_VERSION +\n ') INTERNAL ASSERT FAILED: ' +\n message);\n};\n\n//# sourceMappingURL=assert.js.map\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar stringToByteArray = function (str) {\n var output = [], p = 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n while (c > 255) {\n output[p++] = c & 255;\n c >>= 8;\n }\n output[p++] = c;\n }\n return output;\n};\n/**\n * Turns an array of numbers into the string given by the concatenation of the\n * characters to which the numbers correspond.\n * @param {Array} bytes Array of numbers representing characters.\n * @return {string} Stringification of the array.\n */\nvar byteArrayToString = function (bytes) {\n var CHUNK_SIZE = 8192;\n // Special-case the simple case for speed's sake.\n if (bytes.length < CHUNK_SIZE) {\n return String.fromCharCode.apply(null, bytes);\n }\n // The remaining logic splits conversion by chunks since\n // Function#apply() has a maximum parameter count.\n // See discussion: http://goo.gl/LrWmZ9\n var str = '';\n for (var i = 0; i < bytes.length; i += CHUNK_SIZE) {\n var chunk = bytes.slice(i, i + CHUNK_SIZE);\n str += String.fromCharCode.apply(null, chunk);\n }\n return str;\n};\n// Static lookup maps, lazily populated by init_()\nexports.base64 = {\n /**\n * Maps bytes to characters.\n * @type {Object}\n * @private\n */\n byteToCharMap_: null,\n /**\n * Maps characters to bytes.\n * @type {Object}\n * @private\n */\n charToByteMap_: null,\n /**\n * Maps bytes to websafe characters.\n * @type {Object}\n * @private\n */\n byteToCharMapWebSafe_: null,\n /**\n * Maps websafe characters to bytes.\n * @type {Object}\n * @private\n */\n charToByteMapWebSafe_: null,\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n * @type {string}\n */\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n /**\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\n * @type {string}\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n /**\n * Our websafe alphabet.\n * @type {string}\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n /**\n * Whether this browser supports the atob and btoa functions. This extension\n * started at Mozilla but is now implemented by many browsers. We use the\n * ASSUME_* variables to avoid pulling in the full useragent detection library\n * but still allowing the standard per-browser compilations.\n *\n * @type {boolean}\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n /**\n * Base64-encode an array of bytes.\n *\n * @param {Array|Uint8Array} input An array of bytes (numbers with\n * value in [0, 255]) to encode.\n * @param {boolean=} opt_webSafe Boolean indicating we should use the\n * alternative alphabet.\n * @return {string} The base64 encoded string.\n */\n encodeByteArray: function (input, opt_webSafe) {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n this.init_();\n var byteToCharMap = opt_webSafe\n ? this.byteToCharMapWebSafe_\n : this.byteToCharMap_;\n var output = [];\n for (var i = 0; i < input.length; i += 3) {\n var byte1 = input[i];\n var haveByte2 = i + 1 < input.length;\n var byte2 = haveByte2 ? input[i + 1] : 0;\n var haveByte3 = i + 2 < input.length;\n var byte3 = haveByte3 ? input[i + 2] : 0;\n var outByte1 = byte1 >> 2;\n var outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n var outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\n var outByte4 = byte3 & 0x3f;\n if (!haveByte3) {\n outByte4 = 64;\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\n }\n return output.join('');\n },\n /**\n * Base64-encode a string.\n *\n * @param {string} input A string to encode.\n * @param {boolean=} opt_webSafe If true, we should use the\n * alternative alphabet.\n * @return {string} The base64 encoded string.\n */\n encodeString: function (input, opt_webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !opt_webSafe) {\n return btoa(input);\n }\n return this.encodeByteArray(stringToByteArray(input), opt_webSafe);\n },\n /**\n * Base64-decode a string.\n *\n * @param {string} input to decode.\n * @param {boolean=} opt_webSafe True if we should use the\n * alternative alphabet.\n * @return {string} string representing the decoded value.\n */\n decodeString: function (input, opt_webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !opt_webSafe) {\n return atob(input);\n }\n return byteArrayToString(this.decodeStringToByteArray(input, opt_webSafe));\n },\n /**\n * Base64-decode a string.\n *\n * In base-64 decoding, groups of four characters are converted into three\n * bytes. If the encoder did not apply padding, the input length may not\n * be a multiple of 4.\n *\n * In this case, the last group will have fewer than 4 characters, and\n * padding will be inferred. If the group has one or two characters, it decodes\n * to one byte. If the group has three characters, it decodes to two bytes.\n *\n * @param {string} input Input to decode.\n * @param {boolean=} opt_webSafe True if we should use the web-safe alphabet.\n * @return {!Array} bytes representing the decoded value.\n */\n decodeStringToByteArray: function (input, opt_webSafe) {\n this.init_();\n var charToByteMap = opt_webSafe\n ? this.charToByteMapWebSafe_\n : this.charToByteMap_;\n var output = [];\n for (var i = 0; i < input.length;) {\n var byte1 = charToByteMap[input.charAt(i++)];\n var haveByte2 = i < input.length;\n var byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n var haveByte3 = i < input.length;\n var byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n var haveByte4 = i < input.length;\n var byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw Error();\n }\n var outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n if (byte3 != 64) {\n var outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n if (byte4 != 64) {\n var outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n return output;\n },\n /**\n * Lazy static initialization function. Called before\n * accessing any of the static map variables.\n * @private\n */\n init_: function () {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {};\n // We want quick mappings back and forth, so we precompute two maps.\n for (var i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\n // Be forgiving when decoding and correctly decode both encodings.\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n/**\n * URL-safe base64 encoding\n * @param {!string} str\n * @return {!string}\n */\nexports.base64Encode = function (str) {\n var utf8Bytes = stringToByteArray(str);\n return exports.base64.encodeByteArray(utf8Bytes, true);\n};\n/**\n * URL-safe base64 decoding\n *\n * NOTE: DO NOT use the global atob() function - it does NOT support the\n * base64Url variant encoding.\n *\n * @param {string} str To be decoded\n * @return {?string} Decoded result, if possible\n */\nexports.base64Decode = function (str) {\n try {\n return exports.base64.decodeString(str, true);\n }\n catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\n};\n\n//# sourceMappingURL=crypt.js.map\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Evaluates a JSON string into a javascript object.\n *\n * @param {string} str A string containing JSON.\n * @return {*} The javascript object representing the specified JSON.\n */\nfunction jsonEval(str) {\n return JSON.parse(str);\n}\nexports.jsonEval = jsonEval;\n/**\n * Returns JSON representing a javascript object.\n * @param {*} data Javascript object to be stringified.\n * @return {string} The JSON contents of the object.\n */\nfunction stringify(data) {\n return JSON.stringify(data);\n}\nexports.stringify = stringify;\n\n//# sourceMappingURL=json.js.map\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// See http://www.devthought.com/2012/01/18/an-object-is-not-a-hash/\nexports.contains = function (obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\nexports.safeGet = function (obj, key) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n return obj[key];\n // else return undefined.\n};\n/**\n * Enumerates the keys/values in an object, excluding keys defined on the prototype.\n *\n * @param {?Object.} obj Object to enumerate.\n * @param {!function(K, V)} fn Function to call for each key and value.\n * @template K,V\n */\nexports.forEach = function (obj, fn) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn(key, obj[key]);\n }\n }\n};\n/**\n * Copies all the (own) properties from one object to another.\n * @param {!Object} objTo\n * @param {!Object} objFrom\n * @return {!Object} objTo\n */\nexports.extend = function (objTo, objFrom) {\n exports.forEach(objFrom, function (key, value) {\n objTo[key] = value;\n });\n return objTo;\n};\n/**\n * Returns a clone of the specified object.\n * @param {!Object} obj\n * @return {!Object} cloned obj.\n */\nexports.clone = function (obj) {\n return exports.extend({}, obj);\n};\n/**\n * Returns true if obj has typeof \"object\" and is not null. Unlike goog.isObject(), does not return true\n * for functions.\n *\n * @param obj {*} A potential object.\n * @returns {boolean} True if it's an object.\n */\nexports.isNonNullObject = function (obj) {\n return typeof obj === 'object' && obj !== null;\n};\nexports.isEmpty = function (obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n};\nexports.getCount = function (obj) {\n var rv = 0;\n for (var key in obj) {\n rv++;\n }\n return rv;\n};\nexports.map = function (obj, f, opt_obj) {\n var res = {};\n for (var key in obj) {\n res[key] = f.call(opt_obj, obj[key], key, obj);\n }\n return res;\n};\nexports.findKey = function (obj, fn, opt_this) {\n for (var key in obj) {\n if (fn.call(opt_this, obj[key], key, obj)) {\n return key;\n }\n }\n return undefined;\n};\nexports.findValue = function (obj, fn, opt_this) {\n var key = exports.findKey(obj, fn, opt_this);\n return key && obj[key];\n};\nexports.getAnyKey = function (obj) {\n for (var key in obj) {\n return key;\n }\n};\nexports.getValues = function (obj) {\n var res = [];\n var i = 0;\n for (var key in obj) {\n res[i++] = obj[key];\n }\n return res;\n};\n/**\n * Tests whether every key/value pair in an object pass the test implemented\n * by the provided function\n *\n * @param {?Object.} obj Object to test.\n * @param {!function(K, V)} fn Function to call for each key and value.\n * @template K,V\n */\nexports.every = function (obj, fn) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (!fn(key, obj[key])) {\n return false;\n }\n }\n }\n return true;\n};\n\n//# sourceMappingURL=obj.js.map\n\n\n/***/ }),\n/* 32 */,\n/* 33 */,\n/* 34 */,\n/* 35 */,\n/* 36 */,\n/* 37 */,\n/* 38 */,\n/* 39 */,\n/* 40 */,\n/* 41 */,\n/* 42 */,\n/* 43 */,\n/* 44 */,\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */,\n/* 49 */,\n/* 50 */,\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */,\n/* 55 */,\n/* 56 */,\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(58);\nmodule.exports = __webpack_require__(6).default;\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__ = __webpack_require__(59);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__src_polyfills_promise__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_shims_find__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_shims_find___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__src_shims_find__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_shims_findIndex__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_shims_findIndex___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__src_shims_findIndex__);\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __global = (function () {\n if (typeof global !== 'undefined') {\n return global;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n throw new Error('unable to locate global object');\n})();\n// Polyfill Promise\nif (typeof Promise === 'undefined') {\n // HACK: TS throws an error if I attempt to use 'dot-notation'\n __global['Promise'] = Promise = __webpack_require__(60);\n}\n\n//# sourceMappingURL=promise.js.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(19)))\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(setImmediate) {(function (root) {\n\n // Store setTimeout reference so promise-polyfill will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var setTimeoutFunc = setTimeout;\n\n function noop() {}\n \n // Polyfill for Function.prototype.bind\n function bind(fn, thisArg) {\n return function () {\n fn.apply(thisArg, arguments);\n };\n }\n\n function Promise(fn) {\n if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n }\n\n function handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function () {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n }\n\n function resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n }\n\n function reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n }\n\n function finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n }\n\n function Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n }\n\n /**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\n function doResolve(fn, self) {\n var done = false;\n try {\n fn(function (value) {\n if (done) return;\n done = true;\n resolve(self, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n });\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n }\n\n Promise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n };\n\n Promise.prototype.then = function (onFulfilled, onRejected) {\n var prom = new (this.constructor)(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n };\n\n Promise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(val, function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n };\n\n Promise.resolve = function (value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n\n Promise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n };\n\n Promise.race = function (values) {\n return new Promise(function (resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n };\n\n // Use polyfill for setImmediate for performance gains\n Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||\n function (fn) {\n setTimeoutFunc(fn, 0);\n };\n\n Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n };\n\n /**\n * Set the immediate function to execute callbacks\n * @param fn {function} Function to execute\n * @deprecated\n */\n Promise._setImmediateFn = function _setImmediateFn(fn) {\n Promise._immediateFn = fn;\n };\n\n /**\n * Change the function to execute on unhandled rejection\n * @param {function} fn Function to execute on unhandled rejection\n * @deprecated\n */\n Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {\n Promise._unhandledRejectionFn = fn;\n };\n \n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Promise;\n } else if (!root.Promise) {\n root.Promise = Promise;\n }\n\n})(this);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(61).setImmediate))\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(62);\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a ';\n }\n var iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n }\n catch (e) {\n util_1.log('frame writing exception');\n if (e.stack) {\n util_1.log(e.stack);\n }\n util_1.log(e);\n }\n }\n else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n * @private\n * @return {Element}\n */\n FirebaseIFrameScriptHolder.createIFrame_ = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n var a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n util_1.log('No IE domain setting required');\n }\n }\n catch (e) {\n var domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n }\n else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n }\n else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n }\n else if (iframe.document) {\n iframe.doc = iframe.document; //others?\n }\n return iframe;\n };\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n FirebaseIFrameScriptHolder.prototype.close = function () {\n var _this = this;\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\n this.myIFrame.doc.body.innerHTML = '';\n setTimeout(function () {\n if (_this.myIFrame !== null) {\n document.body.removeChild(_this.myIFrame);\n _this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n if (util_3.isNodeSdk() && this.myID) {\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n var theURL = this.urlFn(urlParams);\n FirebaseIFrameScriptHolder.nodeRestRequest(theURL);\n }\n // Protect from being called recursively.\n var onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n };\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param {!string} id - The ID of this connection\n * @param {!string} pw - The password for this connection\n */\n FirebaseIFrameScriptHolder.prototype.startLongPoll = function (id, pw) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) { }\n };\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n FirebaseIFrameScriptHolder.prototype.newRequest_ = function () {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.count() < (this.pendingSegs.length > 0 ? 2 : 1)) {\n //construct our url\n this.currentSerial++;\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n var theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n var curDataString = '';\n var i = 0;\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n var nextSeg = this.pendingSegs[0];\n if (nextSeg.d.length + SEG_HEADER_SIZE + curDataString.length <=\n MAX_URL_DATA_SIZE) {\n //great, the segment will fit. Lets append it.\n var theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n exports.FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n }\n else {\n break;\n }\n }\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n FirebaseIFrameScriptHolder.prototype.enqueueSegment = function (segnum, totalsegs, data) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n };\n /**\n * Add a script tag for a regular long-poll request.\n * @param {!string} url - The URL of the script tag.\n * @param {!number} serial - The serial number of the request.\n * @private\n */\n FirebaseIFrameScriptHolder.prototype.addLongPollTag_ = function (url, serial) {\n var _this = this;\n //remember that we sent this request.\n this.outstandingRequests.add(serial, 1);\n var doNewRequest = function () {\n _this.outstandingRequests.remove(serial);\n _this.newRequest_();\n };\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n var keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\n var readyStateCB = function () {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n this.addTag(url, readyStateCB);\n };\n /**\n * Add an arbitrary script tag to the iframe.\n * @param {!string} url - The URL for the script tag source.\n * @param {!function()} loadCB - A callback to be triggered once the script has loaded.\n */\n FirebaseIFrameScriptHolder.prototype.addTag = function (url, loadCB) {\n var _this = this;\n if (util_3.isNodeSdk()) {\n this.doNodeLongPoll(url, loadCB);\n }\n else {\n setTimeout(function () {\n try {\n // if we're already closed, don't add this poll\n if (!_this.sendNewPolls)\n return;\n var newScript_1 = _this.myIFrame.doc.createElement('script');\n newScript_1.type = 'text/javascript';\n newScript_1.async = true;\n newScript_1.src = url;\n newScript_1.onload = newScript_1.onreadystatechange = function () {\n var rstate = newScript_1.readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n newScript_1.onload = newScript_1.onreadystatechange = null;\n if (newScript_1.parentNode) {\n newScript_1.parentNode.removeChild(newScript_1);\n }\n loadCB();\n }\n };\n newScript_1.onerror = function () {\n util_1.log('Long-poll script failed to load: ' + url);\n _this.sendNewPolls = false;\n _this.close();\n };\n _this.myIFrame.doc.body.appendChild(newScript_1);\n }\n catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n };\n return FirebaseIFrameScriptHolder;\n}());\nexports.FirebaseIFrameScriptHolder = FirebaseIFrameScriptHolder;\n\n//# sourceMappingURL=BrowserPollConnection.js.map\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = __webpack_require__(6);\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar StatsManager_1 = __webpack_require__(25);\nvar Constants_1 = __webpack_require__(13);\nvar util_3 = __webpack_require__(0);\nvar storage_1 = __webpack_require__(12);\nvar util_4 = __webpack_require__(0);\nvar util_5 = __webpack_require__(0);\nvar WEBSOCKET_MAX_FRAME_SIZE = 16384;\nvar WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\nvar WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n}\nelse if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\nfunction setWebSocketImpl(impl) {\n WebSocketImpl = impl;\n}\nexports.setWebSocketImpl = setWebSocketImpl;\n/**\n * Create a new websocket connection with the given callbacks.\n * @constructor\n * @implements {Transport}\n */\nvar WebSocketConnection = /** @class */ (function () {\n /**\n * @param {string} connId identifier for this transport\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n */\n function WebSocketConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.keepaliveTimer = null;\n this.frames = null;\n this.totalFrames = 0;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.log_ = util_2.logWrapper(this.connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId);\n }\n /**\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n * @return {string} connection url\n * @private\n */\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId) {\n var urlParams = {};\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (!util_5.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = lastSessionId;\n }\n return repoInfo.connectionURL(Constants_1.WEBSOCKET, urlParams);\n };\n /**\n *\n * @param onMessage Callback when messages arrive\n * @param onDisconnect Callback with connection lost.\n */\n WebSocketConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n this.log_('Websocket connecting to ' + this.connURL);\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n storage_1.PersistentStorage.set('previous_websocket_failure', true);\n try {\n if (util_5.isNodeSdk()) {\n var device = util_3.CONSTANTS.NODE_ADMIN ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n var options = {\n headers: {\n 'User-Agent': \"Firebase/\" + Constants_1.PROTOCOL_VERSION + \"/\" + app_1.default.SDK_VERSION + \"/\" + process.platform + \"/\" + device\n }\n };\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n var env = process['env'];\n var proxy = this.connURL.indexOf('wss://') == 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n }\n else {\n this.mySock = new WebSocketImpl(this.connURL);\n }\n }\n catch (e) {\n this.log_('Error instantiating WebSocket.');\n var error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n this.mySock.onopen = function () {\n _this.log_('Websocket connected.');\n _this.everConnected_ = true;\n };\n this.mySock.onclose = function () {\n _this.log_('Websocket connection was disconnected.');\n _this.mySock = null;\n _this.onClosed_();\n };\n this.mySock.onmessage = function (m) {\n _this.handleIncomingFrame(m);\n };\n this.mySock.onerror = function (e) {\n _this.log_('WebSocket error. Closing connection.');\n var error = e.message || e.data;\n if (error) {\n _this.log_(error);\n }\n _this.onClosed_();\n };\n };\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n WebSocketConnection.prototype.start = function () { };\n WebSocketConnection.forceDisallow = function () {\n WebSocketConnection.forceDisallow_ = true;\n };\n WebSocketConnection.isAvailable = function () {\n var isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n var oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n return (!isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_);\n };\n /**\n * Returns true if we previously failed to connect with this transport.\n * @return {boolean}\n */\n WebSocketConnection.previouslyFailed = function () {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (storage_1.PersistentStorage.isInMemoryStorage ||\n storage_1.PersistentStorage.get('previous_websocket_failure') === true);\n };\n WebSocketConnection.prototype.markConnectionHealthy = function () {\n storage_1.PersistentStorage.remove('previous_websocket_failure');\n };\n WebSocketConnection.prototype.appendFrame_ = function (data) {\n this.frames.push(data);\n if (this.frames.length == this.totalFrames) {\n var fullMess = this.frames.join('');\n this.frames = null;\n var jsonMess = util_4.jsonEval(fullMess);\n //handle the message\n this.onMessage(jsonMess);\n }\n };\n /**\n * @param {number} frameCount The number of frames we are expecting from the server\n * @private\n */\n WebSocketConnection.prototype.handleNewFrameCount_ = function (frameCount) {\n this.totalFrames = frameCount;\n this.frames = [];\n };\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @param {!String} data\n * @return {?String} Any remaining data to be process, or null if there is none\n * @private\n */\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\n util_1.assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n var frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n };\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess The frame data\n */\n WebSocketConnection.prototype.handleIncomingFrame = function (mess) {\n if (this.mySock === null)\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n var data = mess['data'];\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n this.resetKeepAlive();\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n }\n else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n var remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n };\n /**\n * Send a message to the server\n * @param {Object} data The JSON object to transmit\n */\n WebSocketConnection.prototype.send = function (data) {\n this.resetKeepAlive();\n var dataStr = util_4.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_2.splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n //Send the actual data in segments.\n for (var i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n };\n WebSocketConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n };\n WebSocketConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n };\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n WebSocketConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n };\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n WebSocketConnection.prototype.resetKeepAlive = function () {\n var _this = this;\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(function () {\n //If there has been no websocket activity for a while, send a no-op\n if (_this.mySock) {\n _this.sendString_('0');\n }\n _this.resetKeepAlive();\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\n };\n /**\n * Send a string over the websocket.\n *\n * @param {string} str String to send.\n * @private\n */\n WebSocketConnection.prototype.sendString_ = function (str) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n }\n catch (e) {\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\n setTimeout(this.onClosed_.bind(this), 0);\n }\n };\n /**\n * Number of response before we consider the connection \"healthy.\"\n * @type {number}\n */\n WebSocketConnection.responsesRequiredToBeHealthy = 2;\n /**\n * Time to wait for the connection te become healthy before giving up.\n * @type {number}\n */\n WebSocketConnection.healthyTimeout = 30000;\n return WebSocketConnection;\n}());\nexports.WebSocketConnection = WebSocketConnection;\n\n//# sourceMappingURL=WebSocketConnection.js.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(27)))\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nvar ServerActions = /** @class */ (function () {\n function ServerActions() {\n }\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, ?string)} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.merge = function (pathString, data, onComplete, hash) { };\n /**\n * Refreshes the auth token for the current connection.\n * @param {string} token The authentication token\n */\n ServerActions.prototype.refreshAuthToken = function (token) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\n /**\n * @param {Object.} stats\n */\n ServerActions.prototype.reportStats = function (stats) { };\n return ServerActions;\n}());\nexports.ServerActions = ServerActions;\n\n//# sourceMappingURL=ServerActions.js.map\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = __webpack_require__(24);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar Node_1 = __webpack_require__(5);\nvar ChildrenNode_1 = __webpack_require__(4);\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar RangedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function RangedFilter(params) {\n this.indexedFilter_ = new IndexedFilter_1.IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n }\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getStartPost = function () {\n return this.startPost_;\n };\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getEndPost = function () {\n return this.endPost_;\n };\n /**\n * @param {!NamedNode} node\n * @return {boolean}\n */\n RangedFilter.prototype.matches = function (node) {\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\n this.index_.compare(node, this.getEndPost()) <= 0);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var self = this;\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!self.matches(new Node_1.NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndexedFilter = function () {\n return this.indexedFilter_;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getStartPost_ = function (params) {\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n }\n else {\n return params.getIndex().minPost();\n }\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getEndPost_ = function (params) {\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n }\n else {\n return params.getIndex().maxPost();\n }\n };\n return RangedFilter;\n}());\nexports.RangedFilter = RangedFilter;\n\n//# sourceMappingURL=RangedFilter.js.map\n\n\n/***/ }),\n/* 57 */,\n/* 58 */,\n/* 59 */,\n/* 60 */,\n/* 61 */,\n/* 62 */,\n/* 63 */,\n/* 64 */,\n/* 65 */,\n/* 66 */,\n/* 67 */,\n/* 68 */,\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = __webpack_require__(79);\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = __webpack_require__(6);\nvar Database_1 = __webpack_require__(32);\nexports.Database = Database_1.Database;\nvar Query_1 = __webpack_require__(36);\nexports.Query = Query_1.Query;\nvar Reference_1 = __webpack_require__(21);\nexports.Reference = Reference_1.Reference;\nvar util_1 = __webpack_require__(1);\nexports.enableLogging = util_1.enableLogging;\nvar RepoManager_1 = __webpack_require__(26);\nvar INTERNAL = __webpack_require__(111);\nvar TEST_ACCESS = __webpack_require__(112);\nvar util_2 = __webpack_require__(0);\nvar ServerValue = Database_1.Database.ServerValue;\nexports.ServerValue = ServerValue;\nfunction registerDatabase(instance) {\n // Register the Database Service with the 'firebase' namespace.\n var namespace = instance.INTERNAL.registerService('database', function (app, unused, url) { return RepoManager_1.RepoManager.getInstance().databaseFromApp(app, url); }, \n // firebase.database namespace properties\n {\n Reference: Reference_1.Reference,\n Query: Query_1.Query,\n Database: Database_1.Database,\n enableLogging: util_1.enableLogging,\n INTERNAL: INTERNAL,\n ServerValue: ServerValue,\n TEST_ACCESS: TEST_ACCESS\n }, null, true);\n if (util_2.isNodeSdk()) {\n module.exports = namespace;\n }\n}\nexports.registerDatabase = registerDatabase;\nregisterDatabase(app_1.default);\nvar DataSnapshot_1 = __webpack_require__(22);\nexports.DataSnapshot = DataSnapshot_1.DataSnapshot;\nvar onDisconnect_1 = __webpack_require__(35);\nexports.OnDisconnect = onDisconnect_1.OnDisconnect;\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Wraps a DOM Storage object and:\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\n *\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\n * and one for localStorage.\n *\n * @constructor\n */\nvar DOMStorageWrapper = /** @class */ (function () {\n /**\n * @param {Storage} domStorage_ The underlying storage object (e.g. localStorage or sessionStorage)\n */\n function DOMStorageWrapper(domStorage_) {\n this.domStorage_ = domStorage_;\n // Use a prefix to avoid collisions with other stuff saved by the app.\n this.prefix_ = 'firebase:';\n }\n /**\n * @param {string} key The key to save the value under\n * @param {?Object} value The value being stored, or null to remove the key.\n */\n DOMStorageWrapper.prototype.set = function (key, value) {\n if (value == null) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n else {\n this.domStorage_.setItem(this.prefixedName_(key), util_1.stringify(value));\n }\n };\n /**\n * @param {string} key\n * @return {*} The value that was stored under this key, or null\n */\n DOMStorageWrapper.prototype.get = function (key) {\n var storedVal = this.domStorage_.getItem(this.prefixedName_(key));\n if (storedVal == null) {\n return null;\n }\n else {\n return util_1.jsonEval(storedVal);\n }\n };\n /**\n * @param {string} key\n */\n DOMStorageWrapper.prototype.remove = function (key) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n };\n /**\n * @param {string} name\n * @return {string}\n */\n DOMStorageWrapper.prototype.prefixedName_ = function (name) {\n return this.prefix_ + name;\n };\n DOMStorageWrapper.prototype.toString = function () {\n return this.domStorage_.toString();\n };\n return DOMStorageWrapper;\n}());\nexports.DOMStorageWrapper = DOMStorageWrapper;\n\n//# sourceMappingURL=DOMStorageWrapper.js.map\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\n * (TODO: create interface for both to implement).\n *\n * @constructor\n */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.cache_ = {};\n this.isInMemoryStorage = true;\n }\n MemoryStorage.prototype.set = function (key, value) {\n if (value == null) {\n delete this.cache_[key];\n }\n else {\n this.cache_[key] = value;\n }\n };\n MemoryStorage.prototype.get = function (key) {\n if (util_1.contains(this.cache_, key)) {\n return this.cache_[key];\n }\n return null;\n };\n MemoryStorage.prototype.remove = function (key) {\n delete this.cache_[key];\n };\n return MemoryStorage;\n}());\nexports.MemoryStorage = MemoryStorage;\n\n//# sourceMappingURL=MemoryStorage.js.map\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar TransactionResult = /** @class */ (function () {\n /**\n * A type for the resolve value of Firebase.transaction.\n * @constructor\n * @dict\n * @param {boolean} committed\n * @param {DataSnapshot} snapshot\n */\n function TransactionResult(committed, snapshot) {\n this.committed = committed;\n this.snapshot = snapshot;\n }\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n TransactionResult.prototype.toJSON = function () {\n util_1.validateArgCount('TransactionResult.toJSON', 0, 1, arguments.length);\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\n };\n return TransactionResult;\n}());\nexports.TransactionResult = TransactionResult;\n\n//# sourceMappingURL=TransactionResult.js.map\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Fancy ID generator that creates 20-character string identifiers with the\n * following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\n * collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\n * that will sort properly).\n * 4. They're monotonically increasing. Even if you generate more than one in\n * the same timestamp, the latter ones will sort after the former ones. We do\n * this by using the previous random bits but \"incrementing\" them by 1 (only\n * in the case of a timestamp collision).\n */\nexports.nextPushId = (function () {\n // Modeled after base64 web-safe chars, but ordered by ASCII.\n var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n // Timestamp of last push, used to prevent local collisions if you push twice\n // in one ms.\n var lastPushTime = 0;\n // We generate 72-bits of randomness which get turned into 12 characters and\n // appended to the timestamp to prevent collisions with other clients. We\n // store the last characters we generated because in the event of a collision,\n // we'll use those same characters except \"incremented\" by one.\n var lastRandChars = [];\n return function (now) {\n var duplicateTime = now === lastPushTime;\n lastPushTime = now;\n var i;\n var timeStampChars = new Array(8);\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n // NOTE: Can't use << here because javascript will convert to int and lose\n // the upper bits.\n now = Math.floor(now / 64);\n }\n util_1.assert(now === 0, 'Cannot push at time == 0');\n var id = timeStampChars.join('');\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n }\n else {\n // If the timestamp hasn't changed since last push, use the same random\n // number, except incremented by 1.\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n lastRandChars[i] = 0;\n }\n lastRandChars[i]++;\n }\n for (i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n util_1.assert(id.length === 20, 'nextPushId: Length should be 20.');\n return id;\n };\n})();\n\n//# sourceMappingURL=NextPushId.js.map\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DataSnapshot_1 = __webpack_require__(22);\nvar Event_1 = __webpack_require__(85);\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\n/**\n * Represents registration for 'value' events.\n */\nvar ValueEventRegistration = /** @class */ (function () {\n /**\n * @param {?function(!DataSnapshot)} callback_\n * @param {?function(Error)} cancelCallback_\n * @param {?Object} context_\n */\n function ValueEventRegistration(callback_, cancelCallback_, context_) {\n this.callback_ = callback_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.respondsTo = function (eventType) {\n return eventType === 'value';\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createEvent = function (change, query) {\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent('value', this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, query.getRef(), index));\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_1 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_1.call(ctx, eventData.error);\n };\n }\n else {\n var cb_1 = this.callback_;\n return function () {\n cb_1.call(ctx, eventData.snapshot);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.matches = function (other) {\n if (!(other instanceof ValueEventRegistration)) {\n return false;\n }\n else if (!other.callback_ || !this.callback_) {\n // If no callback specified, we consider it to match any callback.\n return true;\n }\n else {\n return (other.callback_ === this.callback_ && other.context_ === this.context_);\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.hasAnyCallback = function () {\n return this.callback_ !== null;\n };\n return ValueEventRegistration;\n}());\nexports.ValueEventRegistration = ValueEventRegistration;\n/**\n * Represents the registration of 1 or more child_xxx events.\n *\n * Currently, it is always exactly 1 child_xxx event, but the idea is we might let you\n * register a group of callbacks together in the future.\n *\n * @constructor\n * @implements {EventRegistration}\n */\nvar ChildEventRegistration = /** @class */ (function () {\n /**\n * @param {?Object.} callbacks_\n * @param {?function(Error)} cancelCallback_\n * @param {Object=} context_\n */\n function ChildEventRegistration(callbacks_, cancelCallback_, context_) {\n this.callbacks_ = callbacks_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.respondsTo = function (eventType) {\n var eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\n eventToCheck =\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\n return util_1.contains(this.callbacks_, eventToCheck);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createEvent = function (change, query) {\n util_2.assert(change.childName != null, 'Child events should have a childName.');\n var ref = query.getRef().child(/** @type {!string} */ (change.childName));\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent(change.type, this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, ref, index), change.prevName);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_2 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_2.call(ctx, eventData.error);\n };\n }\n else {\n var cb_2 = this.callbacks_[eventData.eventType];\n return function () {\n cb_2.call(ctx, eventData.snapshot, eventData.prevName);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.matches = function (other) {\n if (other instanceof ChildEventRegistration) {\n if (!this.callbacks_ || !other.callbacks_) {\n return true;\n }\n else if (this.context_ === other.context_) {\n var otherCount = util_1.getCount(other.callbacks_);\n var thisCount = util_1.getCount(this.callbacks_);\n if (otherCount === thisCount) {\n // If count is 1, do an exact match on eventType, if either is defined but null, it's a match.\n // If event types don't match, not a match\n // If count is not 1, exact match across all\n if (otherCount === 1) {\n var otherKey /** @type {!string} */ = util_1.getAnyKey(other.callbacks_);\n var thisKey /** @type {!string} */ = util_1.getAnyKey(this.callbacks_);\n return (thisKey === otherKey &&\n (!other.callbacks_[otherKey] ||\n !this.callbacks_[thisKey] ||\n other.callbacks_[otherKey] === this.callbacks_[thisKey]));\n }\n else {\n // Exact match on each key.\n return util_1.every(this.callbacks_, function (eventType, cb) { return other.callbacks_[eventType] === cb; });\n }\n }\n }\n }\n return false;\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.hasAnyCallback = function () {\n return this.callbacks_ !== null;\n };\n return ChildEventRegistration;\n}());\nexports.ChildEventRegistration = ChildEventRegistration;\n\n//# sourceMappingURL=EventRegistration.js.map\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\n/**\n * Encapsulates the data needed to raise an event\n * @implements {Event}\n */\nvar DataEvent = /** @class */ (function () {\n /**\n * @param {!string} eventType One of: value, child_added, child_changed, child_moved, child_removed\n * @param {!EventRegistration} eventRegistration The function to call to with the event data. User provided\n * @param {!DataSnapshot} snapshot The data backing the event\n * @param {?string=} prevName Optional, the name of the previous child for child_* events.\n */\n function DataEvent(eventType, eventRegistration, snapshot, prevName) {\n this.eventType = eventType;\n this.eventRegistration = eventRegistration;\n this.snapshot = snapshot;\n this.prevName = prevName;\n }\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getPath = function () {\n var ref = this.snapshot.getRef();\n if (this.eventType === 'value') {\n return ref.path;\n }\n else {\n return ref.getParent().path;\n }\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventType = function () {\n return this.eventType;\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.toString = function () {\n return (this.getPath().toString() +\n ':' +\n this.eventType +\n ':' +\n util_1.stringify(this.snapshot.exportVal()));\n };\n return DataEvent;\n}());\nexports.DataEvent = DataEvent;\nvar CancelEvent = /** @class */ (function () {\n /**\n * @param {EventRegistration} eventRegistration\n * @param {Error} error\n * @param {!Path} path\n */\n function CancelEvent(eventRegistration, error, path) {\n this.eventRegistration = eventRegistration;\n this.error = error;\n this.path = path;\n }\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getPath = function () {\n return this.path;\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventType = function () {\n return 'cancel';\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.toString = function () {\n return this.path.toString() + ':cancel';\n };\n return CancelEvent;\n}());\nexports.CancelEvent = CancelEvent;\n\n//# sourceMappingURL=Event.js.map\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar AckUserWrite_1 = __webpack_require__(87);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar util_3 = __webpack_require__(0);\nvar ImmutableTree_1 = __webpack_require__(23);\nvar ListenComplete_1 = __webpack_require__(88);\nvar Merge_1 = __webpack_require__(89);\nvar Operation_1 = __webpack_require__(8);\nvar Overwrite_1 = __webpack_require__(46);\nvar Path_1 = __webpack_require__(2);\nvar SyncPoint_1 = __webpack_require__(47);\nvar WriteTree_1 = __webpack_require__(95);\n/**\n * SyncTree is the central class for managing event callback registration, data caching, views\n * (query processing), and event generation. There are typically two SyncTree instances for\n * each Repo, one for the normal Firebase data, and one for the .info data.\n *\n * It has a number of responsibilities, including:\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\n * - Applying and caching data changes for user set(), transaction(), and update() calls\n * (applyUserOverwrite(), applyUserMerge()).\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\n * applyServerMerge()).\n * - Generating user-facing events for server and user changes (all of the apply* methods\n * return the set of events that need to be raised as a result).\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\n * to the correct set of paths and queries to satisfy the current set of user event\n * callbacks (listens are started/stopped using the provided listenProvider).\n *\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\n * events are returned to the caller rather than raised synchronously.\n *\n * @constructor\n */\nvar SyncTree = /** @class */ (function () {\n /**\n * @param {!ListenProvider} listenProvider_ Used by SyncTree to start / stop listening\n * to server data.\n */\n function SyncTree(listenProvider_) {\n this.listenProvider_ = listenProvider_;\n /**\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\n * @type {!ImmutableTree.}\n * @private\n */\n this.syncPointTree_ = ImmutableTree_1.ImmutableTree.Empty;\n /**\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\n * @type {!WriteTree}\n * @private\n */\n this.pendingWriteTree_ = new WriteTree_1.WriteTree();\n this.tagToQueryMap_ = {};\n this.queryToTagMap_ = {};\n }\n /**\n * Apply the data changes for a user-generated set() or transaction() call.\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @param {number} writeId\n * @param {boolean=} visible\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserOverwrite = function (path, newData, writeId, visible) {\n // Record pending write.\n this.pendingWriteTree_.addOverwrite(path, newData, writeId, visible);\n if (!visible) {\n return [];\n }\n else {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.User, path, newData));\n }\n };\n /**\n * Apply the data from a user-generated update() call\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserMerge = function (path, changedChildren, writeId) {\n // Record pending merge.\n this.pendingWriteTree_.addMerge(path, changedChildren, writeId);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.User, path, changeTree));\n };\n /**\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\n *\n * @param {!number} writeId\n * @param {boolean=} revert True if the given write failed and needs to be reverted\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.ackUserWrite = function (writeId, revert) {\n if (revert === void 0) { revert = false; }\n var write = this.pendingWriteTree_.getWrite(writeId);\n var needToReevaluate = this.pendingWriteTree_.removeWrite(writeId);\n if (!needToReevaluate) {\n return [];\n }\n else {\n var affectedTree_1 = ImmutableTree_1.ImmutableTree.Empty;\n if (write.snap != null) {\n // overwrite\n affectedTree_1 = affectedTree_1.set(Path_1.Path.Empty, true);\n }\n else {\n util_3.forEach(write.children, function (pathString, node) {\n affectedTree_1 = affectedTree_1.set(new Path_1.Path(pathString), node);\n });\n }\n return this.applyOperationToSyncPoints_(new AckUserWrite_1.AckUserWrite(write.path, affectedTree_1, revert));\n }\n };\n /**\n * Apply new server data for the specified path..\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerOverwrite = function (path, newData) {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.Server, path, newData));\n };\n /**\n * Apply new server data to be merged in at the specified path.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerMerge = function (path, changedChildren) {\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.Server, path, changeTree));\n };\n /**\n * Apply a listen complete for a query\n *\n * @param {!Path} path\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyListenComplete = function (path) {\n return this.applyOperationToSyncPoints_(new ListenComplete_1.ListenComplete(Operation_1.OperationSource.Server, path));\n };\n /**\n * Apply new server data for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryOverwrite = function (path, snap, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey != null) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new Overwrite_1.Overwrite(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, snap);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // Query must have been removed already\n return [];\n }\n };\n /**\n * Apply server data to be merged in for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryMerge = function (path, changedChildren, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n var op = new Merge_1.Merge(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, changeTree);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Apply a listen complete for a tagged query\n *\n * @param {!Path} path\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedListenComplete = function (path, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new ListenComplete_1.ListenComplete(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.addEventRegistration = function (query, eventRegistration) {\n var path = query.path;\n var serverCache = null;\n var foundAncestorDefaultView = false;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n this.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\n var relativePath = Path_1.Path.relativePath(pathToSyncPoint, path);\n serverCache = serverCache || sp.getCompleteServerCache(relativePath);\n foundAncestorDefaultView =\n foundAncestorDefaultView || sp.hasCompleteView();\n });\n var syncPoint = this.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint_1.SyncPoint();\n this.syncPointTree_ = this.syncPointTree_.set(path, syncPoint);\n }\n else {\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPoint.hasCompleteView();\n serverCache = serverCache || syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var serverCacheComplete;\n if (serverCache != null) {\n serverCacheComplete = true;\n }\n else {\n serverCacheComplete = false;\n serverCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var subtree = this.syncPointTree_.subtree(path);\n subtree.foreachChild(function (childName, childSyncPoint) {\n var completeCache = childSyncPoint.getCompleteServerCache(Path_1.Path.Empty);\n if (completeCache) {\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\n }\n });\n }\n var viewAlreadyExists = syncPoint.viewExistsForQuery(query);\n if (!viewAlreadyExists && !query.getQueryParams().loadsAllData()) {\n // We need to track a tag for this query\n var queryKey = SyncTree.makeQueryKey_(query);\n util_1.assert(!(queryKey in this.queryToTagMap_), 'View does not exist, but we have a tag');\n var tag = SyncTree.getNextQueryTag_();\n this.queryToTagMap_[queryKey] = tag;\n // Coerce to string to avoid sparse arrays.\n this.tagToQueryMap_['_' + tag] = queryKey;\n }\n var writesCache = this.pendingWriteTree_.childWrites(path);\n var events = syncPoint.addEventRegistration(query, eventRegistration, writesCache, serverCache, serverCacheComplete);\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\n var view /** @type !View */ = syncPoint.viewForQuery(query);\n events = events.concat(this.setupListener_(query, view));\n }\n return events;\n };\n /**\n * Remove event callback(s).\n *\n * If query is the default query, we'll check all queries for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, all callbacks are removed.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n SyncTree.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var _this = this;\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\n var path = query.path;\n var maybeSyncPoint = this.syncPointTree_.get(path);\n var cancelEvents = [];\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\n // not loadsAllData().\n if (maybeSyncPoint &&\n (query.queryIdentifier() === 'default' ||\n maybeSyncPoint.viewExistsForQuery(query))) {\n /**\n * @type {{removed: !Array., events: !Array.}}\n */\n var removedAndEvents = maybeSyncPoint.removeEventRegistration(query, eventRegistration, cancelError);\n if (maybeSyncPoint.isEmpty()) {\n this.syncPointTree_ = this.syncPointTree_.remove(path);\n }\n var removed = removedAndEvents.removed;\n cancelEvents = removedAndEvents.events;\n // We may have just removed one of many listeners and can short-circuit this whole process\n // We may also not have removed a default listener, in which case all of the descendant listeners should already be\n // properly set up.\n //\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\n // queryId === 'default'\n var removingDefault = -1 !==\n removed.findIndex(function (query) {\n return query.getQueryParams().loadsAllData();\n });\n var covered = this.syncPointTree_.findOnPath(path, function (relativePath, parentSyncPoint) {\n return parentSyncPoint.hasCompleteView();\n });\n if (removingDefault && !covered) {\n var subtree = this.syncPointTree_.subtree(path);\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\n // removal\n if (!subtree.isEmpty()) {\n // We need to fold over our subtree and collect the listeners to send\n var newViews = this.collectDistinctViewsForSubTree_(subtree);\n // Ok, we've collected all the listens we need. Set them up.\n for (var i = 0; i < newViews.length; ++i) {\n var view = newViews[i], newQuery = view.getQuery();\n var listener = this.createListenerForView_(view);\n this.listenProvider_.startListening(SyncTree.queryForListening_(newQuery), this.tagForQuery_(newQuery), listener.hashFn, listener.onComplete);\n }\n }\n else {\n // There's nothing below us, so nothing we need to start listening on\n }\n }\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\n if (!covered && removed.length > 0 && !cancelError) {\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\n // default. Otherwise, we need to iterate through and cancel each individual query\n if (removingDefault) {\n // We don't tag default listeners\n var defaultTag = null;\n this.listenProvider_.stopListening(SyncTree.queryForListening_(query), defaultTag);\n }\n else {\n removed.forEach(function (queryToRemove) {\n var tagToRemove = _this.queryToTagMap_[SyncTree.makeQueryKey_(queryToRemove)];\n _this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToRemove), tagToRemove);\n });\n }\n }\n // Now, clear all of the tags we're tracking for the removed listens\n this.removeTags_(removed);\n }\n else {\n // No-op, this listener must've been already removed\n }\n return cancelEvents;\n };\n /**\n * Returns a complete cache, if we have one, of the data at a particular path. The location must have a listener above\n * it, but as this is only used by transaction code, that should always be the case anyways.\n *\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\n * @param {!Path} path The path to the data we want\n * @param {Array.=} writeIdsToExclude A specific set to be excluded\n * @return {?Node}\n */\n SyncTree.prototype.calcCompleteEventCache = function (path, writeIdsToExclude) {\n var includeHiddenSets = true;\n var writeTree = this.pendingWriteTree_;\n var serverCache = this.syncPointTree_.findOnPath(path, function (pathSoFar, syncPoint) {\n var relativePath = Path_1.Path.relativePath(pathSoFar, path);\n var serverCache = syncPoint.getCompleteServerCache(relativePath);\n if (serverCache) {\n return serverCache;\n }\n });\n return writeTree.calcCompleteEventCache(path, serverCache, writeIdsToExclude, includeHiddenSets);\n };\n /**\n * This collapses multiple unfiltered views into a single view, since we only need a single\n * listener for them.\n *\n * @param {!ImmutableTree.} subtree\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.collectDistinctViewsForSubTree_ = function (subtree) {\n return subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (maybeChildSyncPoint && maybeChildSyncPoint.hasCompleteView()) {\n var completeView = maybeChildSyncPoint.getCompleteView();\n return [completeView];\n }\n else {\n // No complete view here, flatten any deeper listens into an array\n var views_1 = [];\n if (maybeChildSyncPoint) {\n views_1 = maybeChildSyncPoint.getQueryViews();\n }\n util_3.forEach(childMap, function (key, childViews) {\n views_1 = views_1.concat(childViews);\n });\n return views_1;\n }\n });\n };\n /**\n * @param {!Array.} queries\n * @private\n */\n SyncTree.prototype.removeTags_ = function (queries) {\n for (var j = 0; j < queries.length; ++j) {\n var removedQuery = queries[j];\n if (!removedQuery.getQueryParams().loadsAllData()) {\n // We should have a tag for this\n var removedQueryKey = SyncTree.makeQueryKey_(removedQuery);\n var removedQueryTag = this.queryToTagMap_[removedQueryKey];\n delete this.queryToTagMap_[removedQueryKey];\n delete this.tagToQueryMap_['_' + removedQueryTag];\n }\n }\n };\n /**\n * Normalizes a query to a query we send the server for listening\n * @param {!Query} query\n * @return {!Query} The normalized query\n * @private\n */\n SyncTree.queryForListening_ = function (query) {\n if (query.getQueryParams().loadsAllData() &&\n !query.getQueryParams().isDefault()) {\n // We treat queries that load all data as default queries\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\n // from Query\n return /** @type {!Query} */ query.getRef();\n }\n else {\n return query;\n }\n };\n /**\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\n *\n * @param {!Query} query\n * @param {!View} view\n * @return {!Array.} This method can return events to support synchronous data sources\n * @private\n */\n SyncTree.prototype.setupListener_ = function (query, view) {\n var path = query.path;\n var tag = this.tagForQuery_(query);\n var listener = this.createListenerForView_(view);\n var events = this.listenProvider_.startListening(SyncTree.queryForListening_(query), tag, listener.hashFn, listener.onComplete);\n var subtree = this.syncPointTree_.subtree(path);\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\n // may need to shadow other listens as well.\n if (tag) {\n util_1.assert(!subtree.value.hasCompleteView(), \"If we're adding a query, it shouldn't be shadowed\");\n }\n else {\n // Shadow everything at or below this location, this is a default listener.\n var queriesToStop = subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (!relativePath.isEmpty() &&\n maybeChildSyncPoint &&\n maybeChildSyncPoint.hasCompleteView()) {\n return [maybeChildSyncPoint.getCompleteView().getQuery()];\n }\n else {\n // No default listener here, flatten any deeper queries into an array\n var queries_1 = [];\n if (maybeChildSyncPoint) {\n queries_1 = queries_1.concat(maybeChildSyncPoint.getQueryViews().map(function (view) { return view.getQuery(); }));\n }\n util_3.forEach(childMap, function (key, childQueries) {\n queries_1 = queries_1.concat(childQueries);\n });\n return queries_1;\n }\n });\n for (var i = 0; i < queriesToStop.length; ++i) {\n var queryToStop = queriesToStop[i];\n this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToStop), this.tagForQuery_(queryToStop));\n }\n }\n return events;\n };\n /**\n *\n * @param {!View} view\n * @return {{hashFn: function(), onComplete: function(!string, *)}}\n * @private\n */\n SyncTree.prototype.createListenerForView_ = function (view) {\n var _this = this;\n var query = view.getQuery();\n var tag = this.tagForQuery_(query);\n return {\n hashFn: function () {\n var cache = view.getServerCache() || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return cache.hash();\n },\n onComplete: function (status) {\n if (status === 'ok') {\n if (tag) {\n return _this.applyTaggedListenComplete(query.path, tag);\n }\n else {\n return _this.applyListenComplete(query.path);\n }\n }\n else {\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\n var error = util_2.errorForServerCode(status, query);\n return _this.removeEventRegistration(query, \n /*eventRegistration*/ null, error);\n }\n }\n };\n };\n /**\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\n * @private\n * @param {!Query} query\n * @return {string}\n */\n SyncTree.makeQueryKey_ = function (query) {\n return query.path.toString() + '$' + query.queryIdentifier();\n };\n /**\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\n * @private\n * @param {!string} queryKey\n * @return {{queryId: !string, path: !Path}}\n */\n SyncTree.parseQueryKey_ = function (queryKey) {\n var splitIndex = queryKey.indexOf('$');\n util_1.assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\n return {\n queryId: queryKey.substr(splitIndex + 1),\n path: new Path_1.Path(queryKey.substr(0, splitIndex))\n };\n };\n /**\n * Return the query associated with the given tag, if we have one\n * @param {!number} tag\n * @return {?string}\n * @private\n */\n SyncTree.prototype.queryKeyForTag_ = function (tag) {\n return this.tagToQueryMap_['_' + tag];\n };\n /**\n * Return the tag associated with the given query.\n * @param {!Query} query\n * @return {?number}\n * @private\n */\n SyncTree.prototype.tagForQuery_ = function (query) {\n var queryKey = SyncTree.makeQueryKey_(query);\n return util_3.safeGet(this.queryToTagMap_, queryKey);\n };\n /**\n * Static accessor for query tags.\n * @return {number}\n * @private\n */\n SyncTree.getNextQueryTag_ = function () {\n return SyncTree.nextQueryTag_++;\n };\n /**\n * A helper method to apply tagged operations\n *\n * @param {!Path} queryPath\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyTaggedOperation_ = function (queryPath, operation) {\n var syncPoint = this.syncPointTree_.get(queryPath);\n util_1.assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\n var writesCache = this.pendingWriteTree_.childWrites(queryPath);\n return syncPoint.applyOperation(operation, writesCache, \n /*serverCache=*/ null);\n };\n /**\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\n *\n * NOTES:\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\n \n * - We call applyOperation() on each SyncPoint passing three things:\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\n * 3. A snapshot Node with cached server data, if we have it.\n \n * - We concatenate all of the events returned by each SyncPoint and return the result.\n *\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyOperationToSyncPoints_ = function (operation) {\n return this.applyOperationHelper_(operation, this.syncPointTree_, \n /*serverCache=*/ null, this.pendingWriteTree_.childWrites(Path_1.Path.Empty));\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n if (operation.path.isEmpty()) {\n return this.applyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\n }\n else {\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n var childName = operation.path.getFront();\n var childOperation = operation.operationForChild(childName);\n var childTree = syncPointTree.children.get(childName);\n if (childTree && childOperation) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n events = events.concat(this.applyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n }\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationDescendantsHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n var _this = this;\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n syncPointTree.children.inorderTraversal(function (childName, childTree) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n var childOperation = operation.operationForChild(childName);\n if (childOperation) {\n events = events.concat(_this.applyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n });\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n };\n /**\n * Static tracker for next query tag.\n * @type {number}\n * @private\n */\n SyncTree.nextQueryTag_ = 1;\n return SyncTree;\n}());\nexports.SyncTree = SyncTree;\n\n//# sourceMappingURL=SyncTree.js.map\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(2);\nvar Operation_1 = __webpack_require__(8);\nvar AckUserWrite = /** @class */ (function () {\n /**\n *\n * @param {!Path} path\n * @param {!ImmutableTree} affectedTree A tree containing true for each affected path. Affected paths can't overlap.\n * @param {!boolean} revert\n */\n function AckUserWrite(\n /**@inheritDoc */ path, \n /**@inheritDoc */ affectedTree, \n /**@inheritDoc */ revert) {\n this.path = path;\n this.affectedTree = affectedTree;\n this.revert = revert;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.ACK_USER_WRITE;\n /** @inheritDoc */\n this.source = Operation_1.OperationSource.User;\n }\n /**\n * @inheritDoc\n */\n AckUserWrite.prototype.operationForChild = function (childName) {\n if (!this.path.isEmpty()) {\n util_1.assert(this.path.getFront() === childName, 'operationForChild called for unrelated child.');\n return new AckUserWrite(this.path.popFront(), this.affectedTree, this.revert);\n }\n else if (this.affectedTree.value != null) {\n util_1.assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\n // All child locations are affected as well; just return same operation.\n return this;\n }\n else {\n var childTree = this.affectedTree.subtree(new Path_1.Path(childName));\n return new AckUserWrite(Path_1.Path.Empty, childTree, this.revert);\n }\n };\n return AckUserWrite;\n}());\nexports.AckUserWrite = AckUserWrite;\n\n//# sourceMappingURL=AckUserWrite.js.map\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = __webpack_require__(2);\nvar Operation_1 = __webpack_require__(8);\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @constructor\n * @implements {Operation}\n */\nvar ListenComplete = /** @class */ (function () {\n function ListenComplete(source, path) {\n this.source = source;\n this.path = path;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.LISTEN_COMPLETE;\n }\n ListenComplete.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new ListenComplete(this.source, Path_1.Path.Empty);\n }\n else {\n return new ListenComplete(this.source, this.path.popFront());\n }\n };\n return ListenComplete;\n}());\nexports.ListenComplete = ListenComplete;\n\n//# sourceMappingURL=ListenComplete.js.map\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = __webpack_require__(8);\nvar Overwrite_1 = __webpack_require__(46);\nvar Path_1 = __webpack_require__(2);\nvar util_1 = __webpack_require__(0);\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!ImmutableTree.} children\n * @constructor\n * @implements {Operation}\n */\nvar Merge = /** @class */ (function () {\n function Merge(\n /**@inheritDoc */ source, \n /**@inheritDoc */ path, \n /**@inheritDoc */ children) {\n this.source = source;\n this.path = path;\n this.children = children;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.MERGE;\n }\n /**\n * @inheritDoc\n */\n Merge.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n var childTree = this.children.subtree(new Path_1.Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n }\n else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite_1.Overwrite(this.source, Path_1.Path.Empty, childTree.value);\n }\n else {\n // This is a merge at a deeper level\n return new Merge(this.source, Path_1.Path.Empty, childTree);\n }\n }\n else {\n util_1.assert(this.path.getFront() === childName, \"Can't get a merge for a child not on the path of the operation\");\n return new Merge(this.source, this.path.popFront(), this.children);\n }\n };\n /**\n * @inheritDoc\n */\n Merge.prototype.toString = function () {\n return ('Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')');\n };\n return Merge;\n}());\nexports.Merge = Merge;\n\n//# sourceMappingURL=Merge.js.map\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = __webpack_require__(24);\nvar ViewProcessor_1 = __webpack_require__(91);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar CacheNode_1 = __webpack_require__(18);\nvar ViewCache_1 = __webpack_require__(48);\nvar EventGenerator_1 = __webpack_require__(94);\nvar util_1 = __webpack_require__(0);\nvar Operation_1 = __webpack_require__(8);\nvar Change_1 = __webpack_require__(9);\nvar PriorityIndex_1 = __webpack_require__(3);\n/**\n * A view represents a specific location and query that has 1 or more event registrations.\n *\n * It does several things:\n * - Maintains the list of event registrations for this location/query.\n * - Maintains a cache of the data visible for this location/query.\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\n * registrations returns the set of events to be raised.\n * @constructor\n */\nvar View = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n * @param {!ViewCache} initialViewCache\n */\n function View(query_, initialViewCache) {\n this.query_ = query_;\n this.eventRegistrations_ = [];\n var params = this.query_.getQueryParams();\n var indexFilter = new IndexedFilter_1.IndexedFilter(params.getIndex());\n var filter = params.getNodeFilter();\n /**\n * @type {ViewProcessor}\n * @private\n */\n this.processor_ = new ViewProcessor_1.ViewProcessor(filter);\n var initialServerCache = initialViewCache.getServerCache();\n var initialEventCache = initialViewCache.getEventCache();\n // Don't filter server node with other filter than index, wait for tagged listen\n var serverSnap = indexFilter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\n var eventSnap = filter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\n var newServerCache = new CacheNode_1.CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\n var newEventCache = new CacheNode_1.CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\n /**\n * @type {!ViewCache}\n * @private\n */\n this.viewCache_ = new ViewCache_1.ViewCache(newEventCache, newServerCache);\n /**\n * @type {!EventGenerator}\n * @private\n */\n this.eventGenerator_ = new EventGenerator_1.EventGenerator(this.query_);\n }\n /**\n * @return {!Query}\n */\n View.prototype.getQuery = function () {\n return this.query_;\n };\n /**\n * @return {?Node}\n */\n View.prototype.getServerCache = function () {\n return this.viewCache_.getServerCache().getNode();\n };\n /**\n * @param {!Path} path\n * @return {?Node}\n */\n View.prototype.getCompleteServerCache = function (path) {\n var cache = this.viewCache_.getCompleteServerSnap();\n if (cache) {\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\n // we need to see if it contains the child we're interested in.\n if (this.query_.getQueryParams().loadsAllData() ||\n (!path.isEmpty() && !cache.getImmediateChild(path.getFront()).isEmpty())) {\n return cache.getChild(path);\n }\n }\n return null;\n };\n /**\n * @return {boolean}\n */\n View.prototype.isEmpty = function () {\n return this.eventRegistrations_.length === 0;\n };\n /**\n * @param {!EventRegistration} eventRegistration\n */\n View.prototype.addEventRegistration = function (eventRegistration) {\n this.eventRegistrations_.push(eventRegistration);\n };\n /**\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n View.prototype.removeEventRegistration = function (eventRegistration, cancelError) {\n var cancelEvents = [];\n if (cancelError) {\n util_1.assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\n var path_1 = this.query_.path;\n this.eventRegistrations_.forEach(function (registration) {\n cancelError /** @type {!Error} */ = cancelError;\n var maybeEvent = registration.createCancelEvent(cancelError, path_1);\n if (maybeEvent) {\n cancelEvents.push(maybeEvent);\n }\n });\n }\n if (eventRegistration) {\n var remaining = [];\n for (var i = 0; i < this.eventRegistrations_.length; ++i) {\n var existing = this.eventRegistrations_[i];\n if (!existing.matches(eventRegistration)) {\n remaining.push(existing);\n }\n else if (eventRegistration.hasAnyCallback()) {\n // We're removing just this one\n remaining = remaining.concat(this.eventRegistrations_.slice(i + 1));\n break;\n }\n }\n this.eventRegistrations_ = remaining;\n }\n else {\n this.eventRegistrations_ = [];\n }\n return cancelEvents;\n };\n /**\n * Applies the given Operation, updates our cache, and returns the appropriate events.\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @return {!Array.}\n */\n View.prototype.applyOperation = function (operation, writesCache, completeServerCache) {\n if (operation.type === Operation_1.OperationType.MERGE &&\n operation.source.queryId !== null) {\n util_1.assert(this.viewCache_.getCompleteServerSnap(), 'We should always have a full cache before handling merges');\n util_1.assert(this.viewCache_.getCompleteEventSnap(), 'Missing event cache, even though we have a server cache');\n }\n var oldViewCache = this.viewCache_;\n var result = this.processor_.applyOperation(oldViewCache, operation, writesCache, completeServerCache);\n this.processor_.assertIndexed(result.viewCache);\n util_1.assert(result.viewCache.getServerCache().isFullyInitialized() ||\n !oldViewCache.getServerCache().isFullyInitialized(), 'Once a server snap is complete, it should never go back');\n this.viewCache_ = result.viewCache;\n return this.generateEventsForChanges_(result.changes, result.viewCache.getEventCache().getNode(), null);\n };\n /**\n * @param {!EventRegistration} registration\n * @return {!Array.}\n */\n View.prototype.getInitialEvents = function (registration) {\n var eventSnap = this.viewCache_.getEventCache();\n var initialChanges = [];\n if (!eventSnap.getNode().isLeafNode()) {\n var eventNode = eventSnap.getNode();\n eventNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n initialChanges.push(Change_1.Change.childAddedChange(key, childNode));\n });\n }\n if (eventSnap.isFullyInitialized()) {\n initialChanges.push(Change_1.Change.valueChange(eventSnap.getNode()));\n }\n return this.generateEventsForChanges_(initialChanges, eventSnap.getNode(), registration);\n };\n /**\n * @private\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {EventRegistration=} eventRegistration\n * @return {!Array.}\n */\n View.prototype.generateEventsForChanges_ = function (changes, eventCache, eventRegistration) {\n var registrations = eventRegistration\n ? [eventRegistration]\n : this.eventRegistrations_;\n return this.eventGenerator_.generateEventsForChanges(changes, eventCache, registrations);\n };\n return View;\n}());\nexports.View = View;\n\n//# sourceMappingURL=View.js.map\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = __webpack_require__(8);\nvar util_1 = __webpack_require__(0);\nvar ChildChangeAccumulator_1 = __webpack_require__(92);\nvar Change_1 = __webpack_require__(9);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar KeyIndex_1 = __webpack_require__(10);\nvar ImmutableTree_1 = __webpack_require__(23);\nvar Path_1 = __webpack_require__(2);\nvar CompleteChildSource_1 = __webpack_require__(93);\n/**\n * @constructor\n * @struct\n */\nvar ProcessorResult = /** @class */ (function () {\n /**\n * @param {!ViewCache} viewCache\n * @param {!Array.} changes\n */\n function ProcessorResult(viewCache, changes) {\n this.viewCache = viewCache;\n this.changes = changes;\n }\n return ProcessorResult;\n}());\nexports.ProcessorResult = ProcessorResult;\n/**\n * @constructor\n */\nvar ViewProcessor = /** @class */ (function () {\n /**\n * @param {!NodeFilter} filter_\n */\n function ViewProcessor(filter_) {\n this.filter_ = filter_;\n }\n /**\n * @param {!ViewCache} viewCache\n */\n ViewProcessor.prototype.assertIndexed = function (viewCache) {\n util_1.assert(viewCache\n .getEventCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Event snap not indexed');\n util_1.assert(viewCache\n .getServerCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Server snap not indexed');\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @return {!ProcessorResult}\n */\n ViewProcessor.prototype.applyOperation = function (oldViewCache, operation, writesCache, completeCache) {\n var accumulator = new ChildChangeAccumulator_1.ChildChangeAccumulator();\n var newViewCache, filterServerNode;\n if (operation.type === Operation_1.OperationType.OVERWRITE) {\n var overwrite = operation;\n if (overwrite.source.fromUser) {\n newViewCache = this.applyUserOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(overwrite.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered and the\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\n // again\n filterServerNode =\n overwrite.source.tagged ||\n (oldViewCache.getServerCache().isFiltered() &&\n !overwrite.path.isEmpty());\n newViewCache = this.applyServerOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.MERGE) {\n var merge = operation;\n if (merge.source.fromUser) {\n newViewCache = this.applyUserMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(merge.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered\n filterServerNode =\n merge.source.tagged || oldViewCache.getServerCache().isFiltered();\n newViewCache = this.applyServerMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.ACK_USER_WRITE) {\n var ackUserWrite = operation;\n if (!ackUserWrite.revert) {\n newViewCache = this.ackUserWrite_(oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\n }\n else {\n newViewCache = this.revertUserWrite_(oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.LISTEN_COMPLETE) {\n newViewCache = this.listenComplete_(oldViewCache, operation.path, writesCache, accumulator);\n }\n else {\n throw util_1.assertionError('Unknown operation type: ' + operation.type);\n }\n var changes = accumulator.getChanges();\n ViewProcessor.maybeAddValueEvent_(oldViewCache, newViewCache, changes);\n return new ProcessorResult(newViewCache, changes);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!ViewCache} newViewCache\n * @param {!Array.} accumulator\n * @private\n */\n ViewProcessor.maybeAddValueEvent_ = function (oldViewCache, newViewCache, accumulator) {\n var eventSnap = newViewCache.getEventCache();\n if (eventSnap.isFullyInitialized()) {\n var isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\n var oldCompleteSnap = oldViewCache.getCompleteEventSnap();\n if (accumulator.length > 0 ||\n !oldViewCache.getEventCache().isFullyInitialized() ||\n (isLeafOrEmpty &&\n !eventSnap\n .getNode()\n .equals(/** @type {!Node} */ (oldCompleteSnap))) ||\n !eventSnap\n .getNode()\n .getPriority()\n .equals(oldCompleteSnap.getPriority())) {\n accumulator.push(Change_1.Change.valueChange(\n /** @type {!Node} */ newViewCache.getCompleteEventSnap()));\n }\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} changePath\n * @param {!WriteTreeRef} writesCache\n * @param {!CompleteChildSource} source\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.generateEventCacheAfterServerEvent_ = function (viewCache, changePath, writesCache, source, accumulator) {\n var oldEventSnap = viewCache.getEventCache();\n if (writesCache.shadowingWrite(changePath) != null) {\n // we have a shadowing write, ignore changes\n return viewCache;\n }\n else {\n var newEventCache = void 0, serverNode = void 0;\n if (changePath.isEmpty()) {\n // TODO: figure out how this plays with \"sliding ack windows\"\n util_1.assert(viewCache.getServerCache().isFullyInitialized(), 'If change path is empty, we must have complete server data');\n if (viewCache.getServerCache().isFiltered()) {\n // We need to special case this, because we need to only apply writes to complete children, or\n // we might end up raising events for incomplete children. If the server data is filtered deep\n // writes cannot be guaranteed to be complete\n var serverCache = viewCache.getCompleteServerSnap();\n var completeChildren = serverCache instanceof ChildrenNode_1.ChildrenNode\n ? serverCache\n : ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var completeEventChildren = writesCache.calcCompleteEventChildren(completeChildren);\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeEventChildren, accumulator);\n }\n else {\n var completeNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeNode, accumulator);\n }\n }\n else {\n var childKey = changePath.getFront();\n if (childKey == '.priority') {\n util_1.assert(changePath.getLength() == 1, \"Can't have a priority with additional path components\");\n var oldEventNode = oldEventSnap.getNode();\n serverNode = viewCache.getServerCache().getNode();\n // we might have overwrites for this priority\n var updatedPriority = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventNode, serverNode);\n if (updatedPriority != null) {\n newEventCache = this.filter_.updatePriority(oldEventNode, updatedPriority);\n }\n else {\n // priority didn't change, keep old node\n newEventCache = oldEventSnap.getNode();\n }\n }\n else {\n var childChangePath = changePath.popFront();\n // update child\n var newEventChild = void 0;\n if (oldEventSnap.isCompleteForChild(childKey)) {\n serverNode = viewCache.getServerCache().getNode();\n var eventChildUpdate = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventSnap.getNode(), serverNode);\n if (eventChildUpdate != null) {\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey)\n .updateChild(childChangePath, eventChildUpdate);\n }\n else {\n // Nothing changed, just keep the old child\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey);\n }\n }\n else {\n newEventChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n }\n if (newEventChild != null) {\n newEventCache = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\n }\n else {\n // no complete child available or no change\n newEventCache = oldEventSnap.getNode();\n }\n }\n }\n return viewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized() || changePath.isEmpty(), this.filter_.filtersNodes());\n }\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\n var oldServerSnap = oldViewCache.getServerCache();\n var newServerCache;\n var serverFilter = filterServerNode\n ? this.filter_\n : this.filter_.getIndexedFilter();\n if (changePath.isEmpty()) {\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\n }\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\n var newServerNode = oldServerSnap\n .getNode()\n .updateChild(changePath, changedSnap);\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\n }\n else {\n var childKey = changePath.getFront();\n if (!oldServerSnap.isCompleteForPath(changePath) &&\n changePath.getLength() > 1) {\n // We don't update incomplete nodes with updates intended for other listeners\n return oldViewCache;\n }\n var childChangePath = changePath.popFront();\n var childNode = oldServerSnap.getNode().getImmediateChild(childKey);\n var newChildNode = childNode.updateChild(childChangePath, changedSnap);\n if (childKey == '.priority') {\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\n }\n else {\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, null);\n }\n }\n var newViewCache = oldViewCache.updateServerSnap(newServerCache, oldServerSnap.isFullyInitialized() || changePath.isEmpty(), serverFilter.filtersNodes());\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\n return this.generateEventCacheAfterServerEvent_(newViewCache, changePath, writesCache, source, accumulator);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\n var oldEventSnap = oldViewCache.getEventCache();\n var newViewCache, newEventCache;\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\n if (changePath.isEmpty()) {\n newEventCache = this.filter_.updateFullNode(oldViewCache.getEventCache().getNode(), changedSnap, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, true, this.filter_.filtersNodes());\n }\n else {\n var childKey = changePath.getFront();\n if (childKey === '.priority') {\n newEventCache = this.filter_.updatePriority(oldViewCache.getEventCache().getNode(), changedSnap);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\n }\n else {\n var childChangePath = changePath.popFront();\n var oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\n var newChild = void 0;\n if (childChangePath.isEmpty()) {\n // Child overwrite, we can replace the child\n newChild = changedSnap;\n }\n else {\n var childNode = source.getCompleteChild(childKey);\n if (childNode != null) {\n if (childChangePath.getBack() === '.priority' &&\n childNode.getChild(childChangePath.parent()).isEmpty()) {\n // This is a priority update on an empty node. If this node exists on the server, the\n // server will send down the priority in the update, so ignore for now\n newChild = childNode;\n }\n else {\n newChild = childNode.updateChild(childChangePath, changedSnap);\n }\n }\n else {\n // There is no complete child node available\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n }\n if (!oldChild.equals(newChild)) {\n var newEventSnap = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventSnap, oldEventSnap.isFullyInitialized(), this.filter_.filtersNodes());\n }\n else {\n newViewCache = oldViewCache;\n }\n }\n }\n return newViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {string} childKey\n * @return {boolean}\n * @private\n */\n ViewProcessor.cacheHasChild_ = function (viewCache, childKey) {\n return viewCache.getEventCache().isCompleteForChild(childKey);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\n var _this = this;\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (!ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!Node} node\n * @param {ImmutableTree.} merge\n * @return {!Node}\n * @private\n */\n ViewProcessor.prototype.applyMerge_ = function (node, merge) {\n merge.foreach(function (relativePath, childNode) {\n node = node.updateChild(relativePath, childNode);\n });\n return node;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\n var _this = this;\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\n // wait for the complete data update coming soon.\n if (viewCache\n .getServerCache()\n .getNode()\n .isEmpty() &&\n !viewCache.getServerCache().isFullyInitialized()) {\n return viewCache;\n }\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n var viewMergeTree;\n if (path.isEmpty()) {\n viewMergeTree = changedChildren;\n }\n else {\n viewMergeTree = ImmutableTree_1.ImmutableTree.Empty.setTree(path, changedChildren);\n }\n var serverNode = viewCache.getServerCache().getNode();\n viewMergeTree.children.inorderTraversal(function (childKey, childTree) {\n if (serverNode.hasChild(childKey)) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n viewMergeTree.children.inorderTraversal(function (childKey, childMergeTree) {\n var isUnknownDeepMerge = !viewCache.getServerCache().isCompleteForChild(childKey) &&\n childMergeTree.value == null;\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childMergeTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} ackPath\n * @param {!ImmutableTree} affectedTree\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.ackUserWrite_ = function (viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\n if (writesCache.shadowingWrite(ackPath) != null) {\n return viewCache;\n }\n // Only filter server node if it is currently filtered\n var filterServerNode = viewCache.getServerCache().isFiltered();\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\n // now that it won't be shadowed.\n var serverCache = viewCache.getServerCache();\n if (affectedTree.value != null) {\n // This is an overwrite.\n if ((ackPath.isEmpty() && serverCache.isFullyInitialized()) ||\n serverCache.isCompleteForPath(ackPath)) {\n return this.applyServerOverwrite_(viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\n }\n else if (ackPath.isEmpty()) {\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\n // should just re-apply whatever we have in our cache as a merge.\n var changedChildren_1 = ImmutableTree_1.ImmutableTree.Empty;\n serverCache.getNode().forEachChild(KeyIndex_1.KEY_INDEX, function (name, node) {\n changedChildren_1 = changedChildren_1.set(new Path_1.Path(name), node);\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_1, writesCache, completeCache, filterServerNode, accumulator);\n }\n else {\n return viewCache;\n }\n }\n else {\n // This is a merge.\n var changedChildren_2 = ImmutableTree_1.ImmutableTree.Empty;\n affectedTree.foreach(function (mergePath, value) {\n var serverCachePath = ackPath.child(mergePath);\n if (serverCache.isCompleteForPath(serverCachePath)) {\n changedChildren_2 = changedChildren_2.set(mergePath, serverCache.getNode().getChild(serverCachePath));\n }\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_2, writesCache, completeCache, filterServerNode, accumulator);\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.listenComplete_ = function (viewCache, path, writesCache, accumulator) {\n var oldServerNode = viewCache.getServerCache();\n var newViewCache = viewCache.updateServerSnap(oldServerNode.getNode(), oldServerNode.isFullyInitialized() || path.isEmpty(), oldServerNode.isFiltered());\n return this.generateEventCacheAfterServerEvent_(newViewCache, path, writesCache, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, accumulator);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.revertUserWrite_ = function (viewCache, path, writesCache, completeServerCache, accumulator) {\n var complete;\n if (writesCache.shadowingWrite(path) != null) {\n return viewCache;\n }\n else {\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\n var oldEventCache = viewCache.getEventCache().getNode();\n var newEventCache = void 0;\n if (path.isEmpty() || path.getFront() === '.priority') {\n var newNode = void 0;\n if (viewCache.getServerCache().isFullyInitialized()) {\n newNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n }\n else {\n var serverChildren = viewCache.getServerCache().getNode();\n util_1.assert(serverChildren instanceof ChildrenNode_1.ChildrenNode, 'serverChildren would be complete if leaf node');\n newNode = writesCache.calcCompleteEventChildren(serverChildren);\n }\n newNode = newNode;\n newEventCache = this.filter_.updateFullNode(oldEventCache, newNode, accumulator);\n }\n else {\n var childKey = path.getFront();\n var newChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n if (newChild == null &&\n viewCache.getServerCache().isCompleteForChild(childKey)) {\n newChild = oldEventCache.getImmediateChild(childKey);\n }\n if (newChild != null) {\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, newChild, path.popFront(), source, accumulator);\n }\n else if (viewCache\n .getEventCache()\n .getNode()\n .hasChild(childKey)) {\n // No complete child available, delete the existing one, if any\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE, path.popFront(), source, accumulator);\n }\n else {\n newEventCache = oldEventCache;\n }\n if (newEventCache.isEmpty() &&\n viewCache.getServerCache().isFullyInitialized()) {\n // We might have reverted all child writes. Maybe the old event was a leaf node\n complete = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n if (complete.isLeafNode()) {\n newEventCache = this.filter_.updateFullNode(newEventCache, complete, accumulator);\n }\n }\n }\n complete =\n viewCache.getServerCache().isFullyInitialized() ||\n writesCache.shadowingWrite(Path_1.Path.Empty) != null;\n return viewCache.updateEventSnap(newEventCache, complete, this.filter_.filtersNodes());\n }\n };\n return ViewProcessor;\n}());\nexports.ViewProcessor = ViewProcessor;\n\n//# sourceMappingURL=ViewProcessor.js.map\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Change_1 = __webpack_require__(9);\nvar util_2 = __webpack_require__(0);\n/**\n * @constructor\n */\nvar ChildChangeAccumulator = /** @class */ (function () {\n function ChildChangeAccumulator() {\n this.changeMap_ = {};\n }\n /**\n * @param {!Change} change\n */\n ChildChangeAccumulator.prototype.trackChildChange = function (change) {\n var type = change.type;\n var childKey /** @type {!string} */ = change.childName;\n util_2.assert(type == Change_1.Change.CHILD_ADDED ||\n type == Change_1.Change.CHILD_CHANGED ||\n type == Change_1.Change.CHILD_REMOVED, 'Only child changes supported for tracking');\n util_2.assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\n var oldChange = util_1.safeGet(this.changeMap_, childKey);\n if (oldChange) {\n var oldType = oldChange.type;\n if (type == Change_1.Change.CHILD_ADDED && oldType == Change_1.Change.CHILD_REMOVED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n delete this.changeMap_[childKey];\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childRemovedChange(childKey, oldChange.oldSnap);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n this.changeMap_[childKey] = Change_1.Change.childAddedChange(childKey, change.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.oldSnap);\n }\n else {\n throw util_2.assertionError('Illegal combination of changes: ' +\n change +\n ' occurred after ' +\n oldChange);\n }\n }\n else {\n this.changeMap_[childKey] = change;\n }\n };\n /**\n * @return {!Array.}\n */\n ChildChangeAccumulator.prototype.getChanges = function () {\n return util_1.getValues(this.changeMap_);\n };\n return ChildChangeAccumulator;\n}());\nexports.ChildChangeAccumulator = ChildChangeAccumulator;\n\n//# sourceMappingURL=ChildChangeAccumulator.js.map\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = __webpack_require__(18);\n/**\n * An implementation of CompleteChildSource that never returns any additional children\n *\n * @private\n * @constructor\n * @implements CompleteChildSource\n */\nvar NoCompleteChildSource_ = /** @class */ (function () {\n function NoCompleteChildSource_() {\n }\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getCompleteChild = function (childKey) {\n return null;\n };\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getChildAfterChild = function (index, child, reverse) {\n return null;\n };\n return NoCompleteChildSource_;\n}());\nexports.NoCompleteChildSource_ = NoCompleteChildSource_;\n/**\n * Singleton instance.\n * @const\n * @type {!CompleteChildSource}\n */\nexports.NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\n/**\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\n * old event caches available to calculate complete children.\n *\n *\n * @implements CompleteChildSource\n */\nvar WriteTreeCompleteChildSource = /** @class */ (function () {\n /**\n * @param {!WriteTreeRef} writes_\n * @param {!ViewCache} viewCache_\n * @param {?Node} optCompleteServerCache_\n */\n function WriteTreeCompleteChildSource(writes_, viewCache_, optCompleteServerCache_) {\n if (optCompleteServerCache_ === void 0) { optCompleteServerCache_ = null; }\n this.writes_ = writes_;\n this.viewCache_ = viewCache_;\n this.optCompleteServerCache_ = optCompleteServerCache_;\n }\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getCompleteChild = function (childKey) {\n var node = this.viewCache_.getEventCache();\n if (node.isCompleteForChild(childKey)) {\n return node.getNode().getImmediateChild(childKey);\n }\n else {\n var serverNode = this.optCompleteServerCache_ != null\n ? new CacheNode_1.CacheNode(this.optCompleteServerCache_, true, false)\n : this.viewCache_.getServerCache();\n return this.writes_.calcCompleteChild(childKey, serverNode);\n }\n };\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getChildAfterChild = function (index, child, reverse) {\n var completeServerData = this.optCompleteServerCache_ != null\n ? this.optCompleteServerCache_\n : this.viewCache_.getCompleteServerSnap();\n var nodes = this.writes_.calcIndexedSlice(completeServerData, child, 1, reverse, index);\n if (nodes.length === 0) {\n return null;\n }\n else {\n return nodes[0];\n }\n };\n return WriteTreeCompleteChildSource;\n}());\nexports.WriteTreeCompleteChildSource = WriteTreeCompleteChildSource;\n\n//# sourceMappingURL=CompleteChildSource.js.map\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = __webpack_require__(5);\nvar Change_1 = __webpack_require__(9);\nvar util_1 = __webpack_require__(0);\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n * @constructor\n */\nvar EventGenerator = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n */\n function EventGenerator(query_) {\n this.query_ = query_;\n /**\n * @private\n * @type {!Index}\n */\n this.index_ = this.query_.getQueryParams().getIndex();\n }\n /**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n *\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {!Array.} eventRegistrations\n * @return {!Array.}\n */\n EventGenerator.prototype.generateEventsForChanges = function (changes, eventCache, eventRegistrations) {\n var _this = this;\n var events = [];\n var moves = [];\n changes.forEach(function (change) {\n if (change.type === Change_1.Change.CHILD_CHANGED &&\n _this.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\n moves.push(Change_1.Change.childMovedChange(change.childName, change.snapshotNode));\n }\n });\n this.generateEventsForType_(events, Change_1.Change.CHILD_REMOVED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_ADDED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_MOVED, moves, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_CHANGED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.VALUE, changes, eventRegistrations, eventCache);\n return events;\n };\n /**\n * Given changes of a single change type, generate the corresponding events.\n *\n * @param {!Array.} events\n * @param {!string} eventType\n * @param {!Array.} changes\n * @param {!Array.} registrations\n * @param {!Node} eventCache\n * @private\n */\n EventGenerator.prototype.generateEventsForType_ = function (events, eventType, changes, registrations, eventCache) {\n var _this = this;\n var filteredChanges = changes.filter(function (change) { return change.type === eventType; });\n filteredChanges.sort(this.compareChanges_.bind(this));\n filteredChanges.forEach(function (change) {\n var materializedChange = _this.materializeSingleChange_(change, eventCache);\n registrations.forEach(function (registration) {\n if (registration.respondsTo(change.type)) {\n events.push(registration.createEvent(materializedChange, _this.query_));\n }\n });\n });\n };\n /**\n * @param {!Change} change\n * @param {!Node} eventCache\n * @return {!Change}\n * @private\n */\n EventGenerator.prototype.materializeSingleChange_ = function (change, eventCache) {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n }\n else {\n change.prevName = eventCache.getPredecessorChildName(\n /** @type {!string} */\n change.childName, change.snapshotNode, this.index_);\n return change;\n }\n };\n /**\n * @param {!Change} a\n * @param {!Change} b\n * @return {number}\n * @private\n */\n EventGenerator.prototype.compareChanges_ = function (a, b) {\n if (a.childName == null || b.childName == null) {\n throw util_1.assertionError('Should only compare child_ events.');\n }\n var aWrapped = new Node_1.NamedNode(a.childName, a.snapshotNode);\n var bWrapped = new Node_1.NamedNode(b.childName, b.snapshotNode);\n return this.index_.compare(aWrapped, bWrapped);\n };\n return EventGenerator;\n}());\nexports.EventGenerator = EventGenerator;\n\n//# sourceMappingURL=EventGenerator.js.map\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(2);\nvar CompoundWrite_1 = __webpack_require__(96);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar ChildrenNode_1 = __webpack_require__(4);\n/**\n * WriteTree tracks all pending user-initiated writes and has methods to calculate the result of merging them\n * with underlying server data (to create \"event cache\" data). Pending writes are added with addOverwrite()\n * and addMerge(), and removed with removeWrite().\n *\n * @constructor\n */\nvar WriteTree = /** @class */ (function () {\n function WriteTree() {\n /**\n * A tree tracking the result of applying all visible writes. This does not include transactions with\n * applyLocally=false or writes that are completely shadowed by other writes.\n *\n * @type {!CompoundWrite}\n * @private\n */\n this.visibleWrites_ = CompoundWrite_1.CompoundWrite.Empty;\n /**\n * A list of all pending writes, regardless of visibility and shadowed-ness. Used to calculate arbitrary\n * sets of the changed data, such as hidden writes (from transactions) or changes with certain writes excluded (also\n * used by transactions).\n *\n * @type {!Array.}\n * @private\n */\n this.allWrites_ = [];\n this.lastWriteId_ = -1;\n }\n /**\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\n *\n * @param {!Path} path\n * @return {!WriteTreeRef}\n */\n WriteTree.prototype.childWrites = function (path) {\n return new WriteTreeRef(path, this);\n };\n /**\n * Record a new overwrite from user code.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} writeId\n * @param {boolean=} visible This is set to false by some transactions. It should be excluded from event caches\n */\n WriteTree.prototype.addOverwrite = function (path, snap, writeId, visible) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older write on top of newer ones');\n if (visible === undefined) {\n visible = true;\n }\n this.allWrites_.push({\n path: path,\n snap: snap,\n writeId: writeId,\n visible: visible\n });\n if (visible) {\n this.visibleWrites_ = this.visibleWrites_.addWrite(path, snap);\n }\n this.lastWriteId_ = writeId;\n };\n /**\n * Record a new merge from user code.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n */\n WriteTree.prototype.addMerge = function (path, changedChildren, writeId) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older merge on top of newer ones');\n this.allWrites_.push({\n path: path,\n children: changedChildren,\n writeId: writeId,\n visible: true\n });\n this.visibleWrites_ = this.visibleWrites_.addWrites(path, changedChildren);\n this.lastWriteId_ = writeId;\n };\n /**\n * @param {!number} writeId\n * @return {?WriteRecord}\n */\n WriteTree.prototype.getWrite = function (writeId) {\n for (var i = 0; i < this.allWrites_.length; i++) {\n var record = this.allWrites_[i];\n if (record.writeId === writeId) {\n return record;\n }\n }\n return null;\n };\n /**\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\n *\n * @param {!number} writeId\n * @return {boolean} true if the write may have been visible (meaning we'll need to reevaluate / raise\n * events as a result).\n */\n WriteTree.prototype.removeWrite = function (writeId) {\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\n // out of order.\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\n var _this = this;\n var idx = this.allWrites_.findIndex(function (s) {\n return s.writeId === writeId;\n });\n util_2.assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\n var writeToRemove = this.allWrites_[idx];\n this.allWrites_.splice(idx, 1);\n var removedWriteWasVisible = writeToRemove.visible;\n var removedWriteOverlapsWithOtherWrites = false;\n var i = this.allWrites_.length - 1;\n while (removedWriteWasVisible && i >= 0) {\n var currentWrite = this.allWrites_[i];\n if (currentWrite.visible) {\n if (i >= idx &&\n this.recordContainsPath_(currentWrite, writeToRemove.path)) {\n // The removed write was completely shadowed by a subsequent write.\n removedWriteWasVisible = false;\n }\n else if (writeToRemove.path.contains(currentWrite.path)) {\n // Either we're covering some writes or they're covering part of us (depending on which came first).\n removedWriteOverlapsWithOtherWrites = true;\n }\n }\n i--;\n }\n if (!removedWriteWasVisible) {\n return false;\n }\n else if (removedWriteOverlapsWithOtherWrites) {\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\n this.resetTree_();\n return true;\n }\n else {\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\n if (writeToRemove.snap) {\n this.visibleWrites_ = this.visibleWrites_.removeWrite(writeToRemove.path);\n }\n else {\n var children = writeToRemove.children;\n util_1.forEach(children, function (childName) {\n _this.visibleWrites_ = _this.visibleWrites_.removeWrite(writeToRemove.path.child(childName));\n });\n }\n return true;\n }\n };\n /**\n * Return a complete snapshot for the given path if there's visible write data at that path, else null.\n * No server data is considered.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.getCompleteWriteData = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\n * writes), attempt to calculate a complete snapshot for the given path\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude An optional set to be excluded\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteEventCache = function (treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n if (!writeIdsToExclude && !includeHiddenWrites) {\n var shadowingNode = this.visibleWrites_.getCompleteNode(treePath);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n var subMerge = this.visibleWrites_.childCompoundWrite(treePath);\n if (subMerge.isEmpty()) {\n return completeServerCache;\n }\n else if (completeServerCache == null &&\n !subMerge.hasCompleteWrite(Path_1.Path.Empty)) {\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\n return null;\n }\n else {\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return subMerge.apply(layeredCache);\n }\n }\n }\n else {\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n if (!includeHiddenWrites && merge.isEmpty()) {\n return completeServerCache;\n }\n else {\n // If the server cache is null, and we don't have a complete cache, we need to return null\n if (!includeHiddenWrites &&\n completeServerCache == null &&\n !merge.hasCompleteWrite(Path_1.Path.Empty)) {\n return null;\n }\n else {\n var filter = function (write) {\n return ((write.visible || includeHiddenWrites) &&\n (!writeIdsToExclude ||\n !~writeIdsToExclude.indexOf(write.writeId)) &&\n (write.path.contains(treePath) || treePath.contains(write.path)));\n };\n var mergeAtPath = WriteTree.layerTree_(this.allWrites_, filter, treePath);\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return mergeAtPath.apply(layeredCache);\n }\n }\n }\n };\n /**\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\n * Used when creating new views, to pre-fill their complete event children snapshot.\n *\n * @param {!Path} treePath\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTree.prototype.calcCompleteEventChildren = function (treePath, completeServerChildren) {\n var completeChildren = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var topLevelSet = this.visibleWrites_.getCompleteNode(treePath);\n if (topLevelSet) {\n if (!topLevelSet.isLeafNode()) {\n // we're shadowing everything. Return the children.\n topLevelSet.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childSnap) {\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\n });\n }\n return completeChildren;\n }\n else if (completeServerChildren) {\n // Layer any children we have on top of this\n // We know we don't have a top-level set, so just enumerate existing children\n var merge_1 = this.visibleWrites_.childCompoundWrite(treePath);\n completeServerChildren.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var node = merge_1\n .childCompoundWrite(new Path_1.Path(childName))\n .apply(childNode);\n completeChildren = completeChildren.updateImmediateChild(childName, node);\n });\n // Add any complete children we have from the set\n merge_1.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n else {\n // We don't have anything to layer on top of. Layer on any children we have\n // Note that we can return an empty snap if we have a defined delete\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n merge.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n };\n /**\n * Given that the underlying server data has updated, determine what, if anything, needs to be\n * applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events\n *\n * Either existingEventSnap or existingServerSnap must exist\n *\n * @param {!Path} treePath\n * @param {!Path} childPath\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcEventCacheAfterServerOverwrite = function (treePath, childPath, existingEventSnap, existingServerSnap) {\n util_2.assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\n var path = treePath.child(childPath);\n if (this.visibleWrites_.hasCompleteWrite(path)) {\n // At this point we can probably guarantee that we're in case 2, meaning no events\n // May need to check visibility while doing the findRootMostValueAndPath call\n return null;\n }\n else {\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n if (childMerge.isEmpty()) {\n // We're not shadowing at all. Case 1\n return existingServerSnap.getChild(childPath);\n }\n else {\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\n // However this is tricky to find out, since user updates don't necessary change the server\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\n // only check if the updates change the serverNode.\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\n return childMerge.apply(existingServerSnap.getChild(childPath));\n }\n }\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!Path} treePath\n * @param {!string} childKey\n * @param {!CacheNode} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteChild = function (treePath, childKey, existingServerSnap) {\n var path = treePath.child(childKey);\n var shadowingNode = this.visibleWrites_.getCompleteNode(path);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n if (existingServerSnap.isCompleteForChild(childKey)) {\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n return childMerge.apply(existingServerSnap.getNode().getImmediateChild(childKey));\n }\n else {\n return null;\n }\n }\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.shadowingWrite = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window.\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTree.prototype.calcIndexedSlice = function (treePath, completeServerData, startPost, count, reverse, index) {\n var toIterate;\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n var shadowingNode = merge.getCompleteNode(Path_1.Path.Empty);\n if (shadowingNode != null) {\n toIterate = shadowingNode;\n }\n else if (completeServerData != null) {\n toIterate = merge.apply(completeServerData);\n }\n else {\n // no children to iterate on\n return [];\n }\n toIterate = toIterate.withIndex(index);\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\n var nodes = [];\n var cmp = index.getCompare();\n var iter = reverse\n ? toIterate.getReverseIteratorFrom(startPost, index)\n : toIterate.getIteratorFrom(startPost, index);\n var next = iter.getNext();\n while (next && nodes.length < count) {\n if (cmp(next, startPost) !== 0) {\n nodes.push(next);\n }\n next = iter.getNext();\n }\n return nodes;\n }\n else {\n return [];\n }\n };\n /**\n * @param {!WriteRecord} writeRecord\n * @param {!Path} path\n * @return {boolean}\n * @private\n */\n WriteTree.prototype.recordContainsPath_ = function (writeRecord, path) {\n if (writeRecord.snap) {\n return writeRecord.path.contains(path);\n }\n else {\n // findKey can return undefined, so use !! to coerce to boolean\n return !!util_1.findKey(writeRecord.children, function (childSnap, childName) {\n return writeRecord.path.child(childName).contains(path);\n });\n }\n };\n /**\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\n * @private\n */\n WriteTree.prototype.resetTree_ = function () {\n this.visibleWrites_ = WriteTree.layerTree_(this.allWrites_, WriteTree.DefaultFilter_, Path_1.Path.Empty);\n if (this.allWrites_.length > 0) {\n this.lastWriteId_ = this.allWrites_[this.allWrites_.length - 1].writeId;\n }\n else {\n this.lastWriteId_ = -1;\n }\n };\n /**\n * The default filter used when constructing the tree. Keep everything that's visible.\n *\n * @param {!WriteRecord} write\n * @return {boolean}\n * @private\n */\n WriteTree.DefaultFilter_ = function (write) {\n return write.visible;\n };\n /**\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\n * event data at that path.\n *\n * @param {!Array.} writes\n * @param {!function(!WriteRecord):boolean} filter\n * @param {!Path} treeRoot\n * @return {!CompoundWrite}\n * @private\n */\n WriteTree.layerTree_ = function (writes, filter, treeRoot) {\n var compoundWrite = CompoundWrite_1.CompoundWrite.Empty;\n for (var i = 0; i < writes.length; ++i) {\n var write = writes[i];\n // Theory, a later set will either:\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\n if (filter(write)) {\n var writePath = write.path;\n var relativePath = void 0;\n if (write.snap) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrite(relativePath, write.snap);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, write.snap.getChild(relativePath));\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else if (write.children) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrites(relativePath, write.children);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n if (relativePath.isEmpty()) {\n compoundWrite = compoundWrite.addWrites(Path_1.Path.Empty, write.children);\n }\n else {\n var child = util_1.safeGet(write.children, relativePath.getFront());\n if (child) {\n // There exists a child in this node that matches the root path\n var deepNode = child.getChild(relativePath.popFront());\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, deepNode);\n }\n }\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else {\n throw util_2.assertionError('WriteRecord should have .snap or .children');\n }\n }\n }\n return compoundWrite;\n };\n return WriteTree;\n}());\nexports.WriteTree = WriteTree;\n/**\n * A WriteTreeRef wraps a WriteTree and a path, for convenient access to a particular subtree. All of the methods\n * just proxy to the underlying WriteTree.\n *\n * @constructor\n */\nvar WriteTreeRef = /** @class */ (function () {\n /**\n * @param {!Path} path\n * @param {!WriteTree} writeTree\n */\n function WriteTreeRef(path, writeTree) {\n this.treePath_ = path;\n this.writeTree_ = writeTree;\n }\n /**\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\n * can lead to a more expensive calculation.\n *\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude Optional writes to exclude.\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteEventCache = function (completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n return this.writeTree_.calcCompleteEventCache(this.treePath_, completeServerCache, writeIdsToExclude, includeHiddenWrites);\n };\n /**\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\n * mix of the given server data and write data.\n *\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTreeRef.prototype.calcCompleteEventChildren = function (completeServerChildren) {\n return this.writeTree_.calcCompleteEventChildren(this.treePath_, completeServerChildren);\n };\n /**\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\n * if anything, needs to be applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events should be raised\n *\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\n *\n * @param {!Path} path\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcEventCacheAfterServerOverwrite = function (path, existingEventSnap, existingServerSnap) {\n return this.writeTree_.calcEventCacheAfterServerOverwrite(this.treePath_, path, existingEventSnap, existingServerSnap);\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTreeRef.prototype.shadowingWrite = function (path) {\n return this.writeTree_.shadowingWrite(this.treePath_.child(path));\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window\n *\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTreeRef.prototype.calcIndexedSlice = function (completeServerData, startPost, count, reverse, index) {\n return this.writeTree_.calcIndexedSlice(this.treePath_, completeServerData, startPost, count, reverse, index);\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!string} childKey\n * @param {!CacheNode} existingServerCache\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteChild = function (childKey, existingServerCache) {\n return this.writeTree_.calcCompleteChild(this.treePath_, childKey, existingServerCache);\n };\n /**\n * Return a WriteTreeRef for a child.\n *\n * @param {string} childName\n * @return {!WriteTreeRef}\n */\n WriteTreeRef.prototype.child = function (childName) {\n return new WriteTreeRef(this.treePath_.child(childName), this.writeTree_);\n };\n return WriteTreeRef;\n}());\nexports.WriteTreeRef = WriteTreeRef;\n\n//# sourceMappingURL=WriteTree.js.map\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ImmutableTree_1 = __webpack_require__(23);\nvar Path_1 = __webpack_require__(2);\nvar util_1 = __webpack_require__(0);\nvar Node_1 = __webpack_require__(5);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar util_2 = __webpack_require__(0);\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n *\n * @constructor\n * @param {!ImmutableTree.} writeTree\n */\nvar CompoundWrite = /** @class */ (function () {\n function CompoundWrite(writeTree_) {\n this.writeTree_ = writeTree_;\n }\n /**\n * @param {!Path} path\n * @param {!Node} node\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrite = function (path, node) {\n if (path.isEmpty()) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(node));\n }\n else {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n var rootMostPath = rootmost.path;\n var value = rootmost.value;\n var relativePath = Path_1.Path.relativePath(rootMostPath, path);\n value = value.updateChild(relativePath, node);\n return new CompoundWrite(this.writeTree_.set(rootMostPath, value));\n }\n else {\n var subtree = new ImmutableTree_1.ImmutableTree(node);\n var newWriteTree = this.writeTree_.setTree(path, subtree);\n return new CompoundWrite(newWriteTree);\n }\n }\n };\n /**\n * @param {!Path} path\n * @param {!Object.} updates\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrites = function (path, updates) {\n var newWrite = this;\n util_1.forEach(updates, function (childKey, node) {\n newWrite = newWrite.addWrite(path.child(childKey), node);\n });\n return newWrite;\n };\n /**\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\n * location, which must be removed by calling this method with that path.\n *\n * @param {!Path} path The path at which a write and all deeper writes should be removed\n * @return {!CompoundWrite} The new CompoundWrite with the removed path\n */\n CompoundWrite.prototype.removeWrite = function (path) {\n if (path.isEmpty()) {\n return CompoundWrite.Empty;\n }\n else {\n var newWriteTree = this.writeTree_.setTree(path, ImmutableTree_1.ImmutableTree.Empty);\n return new CompoundWrite(newWriteTree);\n }\n };\n /**\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\n * considered \"complete\".\n *\n * @param {!Path} path The path to check for\n * @return {boolean} Whether there is a complete write at that path\n */\n CompoundWrite.prototype.hasCompleteWrite = function (path) {\n return this.getCompleteNode(path) != null;\n };\n /**\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\n * writes from deeper paths, but will return child nodes from a more shallow path.\n *\n * @param {!Path} path The path to get a complete write\n * @return {?Node} The node if complete at that path, or null otherwise.\n */\n CompoundWrite.prototype.getCompleteNode = function (path) {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n return this.writeTree_\n .get(rootmost.path)\n .getChild(Path_1.Path.relativePath(rootmost.path, path));\n }\n else {\n return null;\n }\n };\n /**\n * Returns all children that are guaranteed to be a complete overwrite.\n *\n * @return {!Array.} A list of all complete children.\n */\n CompoundWrite.prototype.getCompleteChildren = function () {\n var children = [];\n var node = this.writeTree_.value;\n if (node != null) {\n // If it's a leaf node, it has no children; so nothing to do.\n if (!node.isLeafNode()) {\n node.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n children.push(new Node_1.NamedNode(childName, childNode));\n });\n }\n }\n else {\n this.writeTree_.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value != null) {\n children.push(new Node_1.NamedNode(childName, childTree.value));\n }\n });\n }\n return children;\n };\n /**\n * @param {!Path} path\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.childCompoundWrite = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else {\n var shadowingNode = this.getCompleteNode(path);\n if (shadowingNode != null) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(shadowingNode));\n }\n else {\n return new CompoundWrite(this.writeTree_.subtree(path));\n }\n }\n };\n /**\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\n * @return {boolean} Whether this CompoundWrite is empty\n */\n CompoundWrite.prototype.isEmpty = function () {\n return this.writeTree_.isEmpty();\n };\n /**\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\n * node\n * @param {!Node} node The node to apply this CompoundWrite to\n * @return {!Node} The node with all writes applied\n */\n CompoundWrite.prototype.apply = function (node) {\n return CompoundWrite.applySubtreeWrite_(Path_1.Path.Empty, this.writeTree_, node);\n };\n /**\n * @type {!CompoundWrite}\n */\n CompoundWrite.Empty = new CompoundWrite(new ImmutableTree_1.ImmutableTree(null));\n /**\n * @param {!Path} relativePath\n * @param {!ImmutableTree.} writeTree\n * @param {!Node} node\n * @return {!Node}\n * @private\n */\n CompoundWrite.applySubtreeWrite_ = function (relativePath, writeTree, node) {\n if (writeTree.value != null) {\n // Since there a write is always a leaf, we're done here\n return node.updateChild(relativePath, writeTree.value);\n }\n else {\n var priorityWrite_1 = null;\n writeTree.children.inorderTraversal(function (childKey, childTree) {\n if (childKey === '.priority') {\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\n // to apply priorities to empty nodes that are later filled\n util_2.assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\n priorityWrite_1 = childTree.value;\n }\n else {\n node = CompoundWrite.applySubtreeWrite_(relativePath.child(childKey), childTree, node);\n }\n });\n // If there was a priority write, we only apply it if the node is not empty\n if (!node.getChild(relativePath).isEmpty() && priorityWrite_1 !== null) {\n node = node.updateChild(relativePath.child('.priority'), priorityWrite_1);\n }\n return node;\n }\n };\n return CompoundWrite;\n}());\nexports.CompoundWrite = CompoundWrite;\n\n//# sourceMappingURL=CompoundWrite.js.map\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = __webpack_require__(4);\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n *\n * @constructor\n */\nvar SnapshotHolder = /** @class */ (function () {\n function SnapshotHolder() {\n this.rootNode_ = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n SnapshotHolder.prototype.getNode = function (path) {\n return this.rootNode_.getChild(path);\n };\n SnapshotHolder.prototype.updateSnapshot = function (path, newSnapshotNode) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n };\n return SnapshotHolder;\n}());\nexports.SnapshotHolder = SnapshotHolder;\n\n//# sourceMappingURL=SnapshotHolder.js.map\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * Abstraction around FirebaseApp's token fetching capabilities.\n */\nvar AuthTokenProvider = /** @class */ (function () {\n /**\n * @param {!FirebaseApp} app_\n */\n function AuthTokenProvider(app_) {\n this.app_ = app_;\n }\n /**\n * @param {boolean} forceRefresh\n * @return {!Promise}\n */\n AuthTokenProvider.prototype.getToken = function (forceRefresh) {\n return this.app_['INTERNAL']['getToken'](forceRefresh).then(null, \n // .catch\n function (error) {\n // TODO: Need to figure out all the cases this is raised and whether\n // this makes sense.\n if (error && error.code === 'auth/token-not-initialized') {\n util_1.log('Got auth/token-not-initialized error. Treating as null token.');\n return null;\n }\n else {\n return Promise.reject(error);\n }\n });\n };\n AuthTokenProvider.prototype.addTokenChangeListener = function (listener) {\n // TODO: We might want to wrap the listener and call it with no args to\n // avoid a leaky abstraction, but that makes removing the listener harder.\n this.app_['INTERNAL']['addAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.removeTokenChangeListener = function (listener) {\n this.app_['INTERNAL']['removeAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.notifyForInvalidToken = function () {\n var errorMessage = 'Provided authentication credentials for the app named \"' +\n this.app_.name +\n '\" are invalid. This usually indicates your app was not ' +\n 'initialized correctly. ';\n if ('credential' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"credential\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else if ('serviceAccount' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else {\n errorMessage +=\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\n 'initializeApp() match the values provided for your app at ' +\n 'https://console.firebase.google.com/.';\n }\n util_1.warn(errorMessage);\n };\n return AuthTokenProvider;\n}());\nexports.AuthTokenProvider = AuthTokenProvider;\n\n//# sourceMappingURL=AuthTokenProvider.js.map\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(0);\n/**\n * Tracks a collection of stats.\n *\n * @constructor\n */\nvar StatsCollection = /** @class */ (function () {\n function StatsCollection() {\n this.counters_ = {};\n }\n StatsCollection.prototype.incrementCounter = function (name, amount) {\n if (amount === void 0) { amount = 1; }\n if (!util_2.contains(this.counters_, name))\n this.counters_[name] = 0;\n this.counters_[name] += amount;\n };\n StatsCollection.prototype.get = function () {\n return util_1.deepCopy(this.counters_);\n };\n return StatsCollection;\n}());\nexports.StatsCollection = StatsCollection;\n\n//# sourceMappingURL=StatsCollection.js.map\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar StatsListener_1 = __webpack_require__(49);\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nvar FIRST_STATS_MIN_TIME = 10 * 1000;\nvar FIRST_STATS_MAX_TIME = 30 * 1000;\n// We'll continue to report stats on average every 5 minutes.\nvar REPORT_STATS_INTERVAL = 5 * 60 * 1000;\n/**\n * @constructor\n */\nvar StatsReporter = /** @class */ (function () {\n /**\n * @param collection\n * @param server_\n */\n function StatsReporter(collection, server_) {\n this.server_ = server_;\n this.statsToReport_ = {};\n this.statsListener_ = new StatsListener_1.StatsListener(collection);\n var timeout = FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n StatsReporter.prototype.includeStat = function (stat) {\n this.statsToReport_[stat] = true;\n };\n StatsReporter.prototype.reportStats_ = function () {\n var _this = this;\n var stats = this.statsListener_.get();\n var reportedStats = {};\n var haveStatsToReport = false;\n util_1.forEach(stats, function (stat, value) {\n if (value > 0 && util_1.contains(_this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n // queue our next run.\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\n };\n return StatsReporter;\n}());\nexports.StatsReporter = StatsReporter;\n\n//# sourceMappingURL=StatsReporter.js.map\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * The event queue serves a few purposes:\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\n * events being queued.\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\n * left off, ensuring that the events are still raised synchronously and in order.\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\n * events are raised synchronously.\n *\n * NOTE: This can all go away if/when we move to async events.\n *\n * @constructor\n */\nvar EventQueue = /** @class */ (function () {\n function EventQueue() {\n /**\n * @private\n * @type {!Array.}\n */\n this.eventLists_ = [];\n /**\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\n * @private\n * @type {!number}\n */\n this.recursionDepth_ = 0;\n }\n /**\n * @param {!Array.} eventDataList The new events to queue.\n */\n EventQueue.prototype.queueEvents = function (eventDataList) {\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\n var currList = null;\n for (var i = 0; i < eventDataList.length; i++) {\n var eventData = eventDataList[i];\n var eventPath = eventData.getPath();\n if (currList !== null && !eventPath.equals(currList.getPath())) {\n this.eventLists_.push(currList);\n currList = null;\n }\n if (currList === null) {\n currList = new EventList(eventPath);\n }\n currList.add(eventData);\n }\n if (currList) {\n this.eventLists_.push(currList);\n }\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones)\n * for the specified path.\n *\n * It is assumed that the new events are all for the specified path.\n *\n * @param {!Path} path The path to raise events for.\n * @param {!Array.} eventDataList The new events to raise.\n */\n EventQueue.prototype.raiseEventsAtPath = function (path, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.equals(path);\n });\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\n * locations related to the specified change path (i.e. all ancestors and descendants).\n *\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\n *\n * @param {!Path} changedPath The path to raise events for.\n * @param {!Array.} eventDataList The events to raise\n */\n EventQueue.prototype.raiseEventsForChangedPath = function (changedPath, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.contains(changedPath) || changedPath.contains(eventPath);\n });\n };\n /**\n * @param {!function(!Path):boolean} predicate\n * @private\n */\n EventQueue.prototype.raiseQueuedEventsMatchingPredicate_ = function (predicate) {\n this.recursionDepth_++;\n var sentAll = true;\n for (var i = 0; i < this.eventLists_.length; i++) {\n var eventList = this.eventLists_[i];\n if (eventList) {\n var eventPath = eventList.getPath();\n if (predicate(eventPath)) {\n this.eventLists_[i].raise();\n this.eventLists_[i] = null;\n }\n else {\n sentAll = false;\n }\n }\n }\n if (sentAll) {\n this.eventLists_ = [];\n }\n this.recursionDepth_--;\n };\n return EventQueue;\n}());\nexports.EventQueue = EventQueue;\n/**\n * @param {!Path} path\n * @constructor\n */\nvar EventList = /** @class */ (function () {\n function EventList(path_) {\n this.path_ = path_;\n /**\n * @type {!Array.}\n * @private\n */\n this.events_ = [];\n }\n /**\n * @param {!Event} eventData\n */\n EventList.prototype.add = function (eventData) {\n this.events_.push(eventData);\n };\n /**\n * Iterates through the list and raises each event\n */\n EventList.prototype.raise = function () {\n for (var i = 0; i < this.events_.length; i++) {\n var eventData = this.events_[i];\n if (eventData !== null) {\n this.events_[i] = null;\n var eventFn = eventData.getEventRunner();\n if (util_1.logger) {\n util_1.log('event: ' + eventData.toString());\n }\n util_1.exceptionGuard(eventFn);\n }\n }\n };\n /**\n * @return {!Path}\n */\n EventList.prototype.getPath = function () {\n return this.path_;\n };\n return EventList;\n}());\nexports.EventList = EventList;\n\n//# sourceMappingURL=EventQueue.js.map\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter_1 = __webpack_require__(51);\nvar util_1 = __webpack_require__(0);\n/**\n * @extends {EventEmitter}\n */\nvar VisibilityMonitor = /** @class */ (function (_super) {\n __extends(VisibilityMonitor, _super);\n function VisibilityMonitor() {\n var _this = _super.call(this, ['visible']) || this;\n var hidden;\n var visibilityChange;\n if (typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined') {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n }\n else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n }\n else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n }\n else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n _this.visible_ = true;\n if (visibilityChange) {\n document.addEventListener(visibilityChange, function () {\n var visible = !document[hidden];\n if (visible !== _this.visible_) {\n _this.visible_ = visible;\n _this.trigger('visible', visible);\n }\n }, false);\n }\n return _this;\n }\n VisibilityMonitor.getInstance = function () {\n return new VisibilityMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n VisibilityMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n };\n return VisibilityMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.VisibilityMonitor = VisibilityMonitor;\n\n//# sourceMappingURL=VisibilityMonitor.js.map\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar EventEmitter_1 = __webpack_require__(51);\nvar util_2 = __webpack_require__(0);\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n *\n * @extends {EventEmitter}\n */\nvar OnlineMonitor = /** @class */ (function (_super) {\n __extends(OnlineMonitor, _super);\n function OnlineMonitor() {\n var _this = _super.call(this, ['online']) || this;\n _this.online_ = true;\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !util_2.isMobileCordova()) {\n window.addEventListener('online', function () {\n if (!_this.online_) {\n _this.online_ = true;\n _this.trigger('online', true);\n }\n }, false);\n window.addEventListener('offline', function () {\n if (_this.online_) {\n _this.online_ = false;\n _this.trigger('online', false);\n }\n }, false);\n }\n return _this;\n }\n OnlineMonitor.getInstance = function () {\n return new OnlineMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n OnlineMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n };\n /**\n * @return {boolean}\n */\n OnlineMonitor.prototype.currentlyOnline = function () {\n return this.online_;\n };\n return OnlineMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.OnlineMonitor = OnlineMonitor;\n\n//# sourceMappingURL=OnlineMonitor.js.map\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BrowserPollConnection_1 = __webpack_require__(53);\nvar WebSocketConnection_1 = __webpack_require__(54);\nvar util_1 = __webpack_require__(1);\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n * @constructor\n */\nvar TransportManager = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo Metadata around the namespace we're connecting to\n */\n function TransportManager(repoInfo) {\n this.initTransports_(repoInfo);\n }\n Object.defineProperty(TransportManager, \"ALL_TRANSPORTS\", {\n /**\n * @const\n * @type {!Array.}\n */\n get: function () {\n return [BrowserPollConnection_1.BrowserPollConnection, WebSocketConnection_1.WebSocketConnection];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {!RepoInfo} repoInfo\n * @private\n */\n TransportManager.prototype.initTransports_ = function (repoInfo) {\n var isWebSocketsAvailable = WebSocketConnection_1.WebSocketConnection && WebSocketConnection_1.WebSocketConnection['isAvailable']();\n var isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection_1.WebSocketConnection.previouslyFailed();\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable)\n util_1.warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\n isSkipPollConnection = true;\n }\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection_1.WebSocketConnection];\n }\n else {\n var transports_1 = (this.transports_ = []);\n util_1.each(TransportManager.ALL_TRANSPORTS, function (i, transport) {\n if (transport && transport['isAvailable']()) {\n transports_1.push(transport);\n }\n });\n }\n };\n /**\n * @return {function(new:Transport, !string, !RepoInfo, string=, string=)} The constructor for the\n * initial transport to use\n */\n TransportManager.prototype.initialTransport = function () {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n }\n else {\n throw new Error('No transports available');\n }\n };\n /**\n * @return {?function(new:Transport, function(),function(), string=)} The constructor for the next\n * transport, or null\n */\n TransportManager.prototype.upgradeTransport = function () {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n }\n else {\n return null;\n }\n };\n return TransportManager;\n}());\nexports.TransportManager = TransportManager;\n\n//# sourceMappingURL=TransportManager.js.map\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(1);\n/**\n * This class ensures the packets from the server arrive in order\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\n * @constructor\n */\nvar PacketReceiver = /** @class */ (function () {\n /**\n * @param onMessage_\n */\n function PacketReceiver(onMessage_) {\n this.onMessage_ = onMessage_;\n this.pendingResponses = [];\n this.currentResponseNum = 0;\n this.closeAfterResponse = -1;\n this.onClose = null;\n }\n PacketReceiver.prototype.closeAfter = function (responseNum, callback) {\n this.closeAfterResponse = responseNum;\n this.onClose = callback;\n if (this.closeAfterResponse < this.currentResponseNum) {\n this.onClose();\n this.onClose = null;\n }\n };\n /**\n * Each message from the server comes with a response number, and an array of data. The responseNumber\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\n * browsers will respond in the same order as the requests we sent\n * @param {number} requestNum\n * @param {Array} data\n */\n PacketReceiver.prototype.handleResponse = function (requestNum, data) {\n var _this = this;\n this.pendingResponses[requestNum] = data;\n var _loop_1 = function () {\n var toProcess = this_1.pendingResponses[this_1.currentResponseNum];\n delete this_1.pendingResponses[this_1.currentResponseNum];\n var _loop_2 = function (i) {\n if (toProcess[i]) {\n util_1.exceptionGuard(function () {\n _this.onMessage_(toProcess[i]);\n });\n }\n };\n for (var i = 0; i < toProcess.length; ++i) {\n _loop_2(i);\n }\n if (this_1.currentResponseNum === this_1.closeAfterResponse) {\n if (this_1.onClose) {\n this_1.onClose();\n this_1.onClose = null;\n }\n return \"break\";\n }\n this_1.currentResponseNum++;\n };\n var this_1 = this;\n while (this.pendingResponses[this.currentResponseNum]) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n return PacketReceiver;\n}());\nexports.PacketReceiver = PacketReceiver;\n\n//# sourceMappingURL=PacketReceiver.js.map\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar util_3 = __webpack_require__(0);\nvar util_4 = __webpack_require__(0);\nvar util_5 = __webpack_require__(0);\nvar ServerActions_1 = __webpack_require__(55);\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nvar ReadonlyRestClient = /** @class */ (function (_super) {\n __extends(ReadonlyRestClient, _super);\n /**\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param {AuthTokenProvider} authTokenProvider_\n * @implements {ServerActions}\n */\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n /** @private {function(...[*])} */\n _this.log_ = util_2.logWrapper('p:rest:');\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n *\n * @private {!Object.}\n */\n _this.listens_ = {};\n return _this;\n }\n ReadonlyRestClient.prototype.reportStats = function (stats) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {!Query} query\n * @param {?number=} tag\n * @return {string}\n * @private\n */\n ReadonlyRestClient.getListenId_ = function (query, tag) {\n if (tag !== undefined) {\n return 'tag$' + tag;\n }\n else {\n util_1.assert(query.getQueryParams().isDefault(), \"should have a tag if it's not a default query.\");\n return query.path.toString();\n }\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var _this = this;\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query.queryIdentifier());\n // Mark this listener so we can tell if it's removed.\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n var thisListen = {};\n this.listens_[listenId] = thisListen;\n var queryStringParamaters = query\n .getQueryParams()\n .toRestQueryStringParameters();\n this.restRequest_(pathString + '.json', queryStringParamaters, function (error, result) {\n var data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n _this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n if (util_4.safeGet(_this.listens_, listenId) === thisListen) {\n var status_1;\n if (!error) {\n status_1 = 'ok';\n }\n else if (error == 401) {\n status_1 = 'permission_denied';\n }\n else {\n status_1 = 'rest_error:' + error;\n }\n onComplete(status_1, null);\n }\n });\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.unlisten = function (query, tag) {\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.refreshAuthToken = function (token) {\n // no-op since we just always call getToken.\n };\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n *\n * @param {!string} pathString\n * @param {!Object.} queryStringParameters\n * @param {?function(?number, *=)} callback\n * @private\n */\n ReadonlyRestClient.prototype.restRequest_ = function (pathString, queryStringParameters, callback) {\n var _this = this;\n if (queryStringParameters === void 0) { queryStringParameters = {}; }\n queryStringParameters['format'] = 'export';\n this.authTokenProvider_\n .getToken(/*forceRefresh=*/ false)\n .then(function (authTokenData) {\n var authToken = authTokenData && authTokenData.accessToken;\n if (authToken) {\n queryStringParameters['auth'] = authToken;\n }\n var url = (_this.repoInfo_.secure ? 'https://' : 'http://') +\n _this.repoInfo_.host +\n pathString +\n '?' +\n util_5.querystring(queryStringParameters);\n _this.log_('Sending REST request for ' + url);\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (callback && xhr.readyState === 4) {\n _this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\n var res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = util_3.jsonEval(xhr.responseText);\n }\n catch (e) {\n util_2.warn('Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText);\n }\n callback(null, res);\n }\n else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n util_2.warn('Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status);\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n };\n return ReadonlyRestClient;\n}(ServerActions_1.ServerActions));\nexports.ReadonlyRestClient = ReadonlyRestClient;\n\n//# sourceMappingURL=ReadonlyRestClient.js.map\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar util_2 = __webpack_require__(1);\nvar KeyIndex_1 = __webpack_require__(10);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar ValueIndex_1 = __webpack_require__(38);\nvar PathIndex_1 = __webpack_require__(42);\nvar IndexedFilter_1 = __webpack_require__(24);\nvar LimitedFilter_1 = __webpack_require__(108);\nvar RangedFilter_1 = __webpack_require__(56);\nvar util_3 = __webpack_require__(0);\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n * @constructor\n */\nvar QueryParams = /** @class */ (function () {\n function QueryParams() {\n this.limitSet_ = false;\n this.startSet_ = false;\n this.startNameSet_ = false;\n this.endSet_ = false;\n this.endNameSet_ = false;\n this.limit_ = 0;\n this.viewFrom_ = '';\n this.indexStartValue_ = null;\n this.indexStartName_ = '';\n this.indexEndValue_ = null;\n this.indexEndName_ = '';\n this.index_ = PriorityIndex_1.PRIORITY_INDEX;\n }\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasStart = function () {\n return this.startSet_;\n };\n /**\n * @return {boolean} True if it would return from left.\n */\n QueryParams.prototype.isViewFromLeft = function () {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n }\n else {\n return (this.viewFrom_ === QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT);\n }\n };\n /**\n * Only valid to call if hasStart() returns true\n * @return {*}\n */\n QueryParams.prototype.getIndexStartValue = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n };\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexStartName = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n }\n else {\n return util_2.MIN_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasEnd = function () {\n return this.endSet_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * @return {*}\n */\n QueryParams.prototype.getIndexEndValue = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexEndName = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n }\n else {\n return util_2.MAX_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasLimit = function () {\n return this.limitSet_;\n };\n /**\n * @return {boolean} True if a limit has been set and it has been explicitly anchored\n */\n QueryParams.prototype.hasAnchoredLimit = function () {\n return this.limitSet_ && this.viewFrom_ !== '';\n };\n /**\n * Only valid to call if hasLimit() returns true\n * @return {!number}\n */\n QueryParams.prototype.getLimit = function () {\n util_1.assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n };\n /**\n * @return {!Index}\n */\n QueryParams.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @return {!QueryParams}\n * @private\n */\n QueryParams.prototype.copy_ = function () {\n var copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limit = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = '';\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToFirst = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT;\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToLast = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_RIGHT;\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.startAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.startSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n }\n else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.endAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.endSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n }\n else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n };\n /**\n * @param {!Index} index\n * @return {!QueryParams}\n */\n QueryParams.prototype.orderBy = function (index) {\n var newParams = this.copy_();\n newParams.index_ = index;\n return newParams;\n };\n /**\n * @return {!Object}\n */\n QueryParams.prototype.getQueryObject = function () {\n var WIRE_PROTOCOL_CONSTANTS = QueryParams.WIRE_PROTOCOL_CONSTANTS_;\n var obj = {};\n if (this.startSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] = this.indexStartValue_;\n if (this.startNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] = this.indexStartName_;\n }\n }\n if (this.endSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = this.indexEndValue_;\n if (this.endNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = this.indexEndName_;\n }\n }\n if (this.limitSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = this.limit_;\n var viewFrom = this.viewFrom_;\n if (viewFrom === '') {\n if (this.isViewFromLeft()) {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n }\n else {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\n }\n }\n obj[WIRE_PROTOCOL_CONSTANTS.VIEW_FROM] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (this.index_ !== PriorityIndex_1.PRIORITY_INDEX) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = this.index_.toString();\n }\n return obj;\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.loadsAllData = function () {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.isDefault = function () {\n return this.loadsAllData() && this.index_ == PriorityIndex_1.PRIORITY_INDEX;\n };\n /**\n * @return {!NodeFilter}\n */\n QueryParams.prototype.getNodeFilter = function () {\n if (this.loadsAllData()) {\n return new IndexedFilter_1.IndexedFilter(this.getIndex());\n }\n else if (this.hasLimit()) {\n return new LimitedFilter_1.LimitedFilter(this);\n }\n else {\n return new RangedFilter_1.RangedFilter(this);\n }\n };\n /**\n * Returns a set of REST query string parameters representing this query.\n *\n * @return {!Object.} query string parameters\n */\n QueryParams.prototype.toRestQueryStringParameters = function () {\n var REST_CONSTANTS = QueryParams.REST_QUERY_CONSTANTS_;\n var qs = {};\n if (this.isDefault()) {\n return qs;\n }\n var orderBy;\n if (this.index_ === PriorityIndex_1.PRIORITY_INDEX) {\n orderBy = REST_CONSTANTS.PRIORITY_INDEX;\n }\n else if (this.index_ === ValueIndex_1.VALUE_INDEX) {\n orderBy = REST_CONSTANTS.VALUE_INDEX;\n }\n else if (this.index_ === KeyIndex_1.KEY_INDEX) {\n orderBy = REST_CONSTANTS.KEY_INDEX;\n }\n else {\n util_1.assert(this.index_ instanceof PathIndex_1.PathIndex, 'Unrecognized index type!');\n orderBy = this.index_.toString();\n }\n qs[REST_CONSTANTS.ORDER_BY] = util_3.stringify(orderBy);\n if (this.startSet_) {\n qs[REST_CONSTANTS.START_AT] = util_3.stringify(this.indexStartValue_);\n if (this.startNameSet_) {\n qs[REST_CONSTANTS.START_AT] += ',' + util_3.stringify(this.indexStartName_);\n }\n }\n if (this.endSet_) {\n qs[REST_CONSTANTS.END_AT] = util_3.stringify(this.indexEndValue_);\n if (this.endNameSet_) {\n qs[REST_CONSTANTS.END_AT] += ',' + util_3.stringify(this.indexEndName_);\n }\n }\n if (this.limitSet_) {\n if (this.isViewFromLeft()) {\n qs[REST_CONSTANTS.LIMIT_TO_FIRST] = this.limit_;\n }\n else {\n qs[REST_CONSTANTS.LIMIT_TO_LAST] = this.limit_;\n }\n }\n return qs;\n };\n /**\n * Wire Protocol Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.WIRE_PROTOCOL_CONSTANTS_ = {\n INDEX_START_VALUE: 'sp',\n INDEX_START_NAME: 'sn',\n INDEX_END_VALUE: 'ep',\n INDEX_END_NAME: 'en',\n LIMIT: 'l',\n VIEW_FROM: 'vf',\n VIEW_FROM_LEFT: 'l',\n VIEW_FROM_RIGHT: 'r',\n INDEX: 'i'\n };\n /**\n * REST Query Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.REST_QUERY_CONSTANTS_ = {\n ORDER_BY: 'orderBy',\n PRIORITY_INDEX: '$priority',\n VALUE_INDEX: '$value',\n KEY_INDEX: '$key',\n START_AT: 'startAt',\n END_AT: 'endAt',\n LIMIT_TO_FIRST: 'limitToFirst',\n LIMIT_TO_LAST: 'limitToLast'\n };\n /**\n * Default, empty query parameters\n * @type {!QueryParams}\n * @const\n */\n QueryParams.DEFAULT = new QueryParams();\n return QueryParams;\n}());\nexports.QueryParams = QueryParams;\n\n//# sourceMappingURL=QueryParams.js.map\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RangedFilter_1 = __webpack_require__(56);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar Node_1 = __webpack_require__(5);\nvar util_1 = __webpack_require__(0);\nvar Change_1 = __webpack_require__(9);\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar LimitedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function LimitedFilter(params) {\n this.rangedFilter_ = new RangedFilter_1.RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n }\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.rangedFilter_.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n }\n else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n else {\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\n }\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n var filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n }\n else {\n if (this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n var iterator = void 0;\n if (this.reverse_) {\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\n }\n else {\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\n }\n var count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n var next = iterator.getNext();\n var inRange = void 0;\n if (this.reverse_) {\n inRange =\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\n }\n else {\n inRange =\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\n }\n if (inRange) {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n else {\n // if we have reached the end post, we cannot keep adding elemments\n break;\n }\n }\n }\n else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var startPost = void 0;\n var endPost = void 0;\n var cmp = void 0;\n var iterator = void 0;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n startPost = this.rangedFilter_.getEndPost();\n endPost = this.rangedFilter_.getStartPost();\n var indexCompare_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCompare_1(b, a); };\n }\n else {\n iterator = filtered.getIterator(this.index_);\n startPost = this.rangedFilter_.getStartPost();\n endPost = this.rangedFilter_.getEndPost();\n cmp = this.index_.getCompare();\n }\n var count = 0;\n var foundStartPost = false;\n while (iterator.hasNext()) {\n var next = iterator.getNext();\n if (!foundStartPost && cmp(startPost, next) <= 0) {\n // start adding\n foundStartPost = true;\n }\n var inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\n if (inRange) {\n count++;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndexedFilter = function () {\n return this.rangedFilter_.getIndexedFilter();\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!Node} snap\n * @param {string} childKey\n * @param {!Node} childSnap\n * @param {!CompleteChildSource} source\n * @param {?ChildChangeAccumulator} changeAccumulator\n * @return {!Node}\n * @private\n */\n LimitedFilter.prototype.fullLimitUpdateChild_ = function (snap, childKey, childSnap, source, changeAccumulator) {\n // TODO: rename all cache stuff etc to general snap terminology\n var cmp;\n if (this.reverse_) {\n var indexCmp_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCmp_1(b, a); };\n }\n else {\n cmp = this.index_.getCompare();\n }\n var oldEventCache = snap;\n util_1.assert(oldEventCache.numChildren() == this.limit_, '');\n var newChildNamedNode = new Node_1.NamedNode(childKey, childSnap);\n var windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : oldEventCache.getLastChild(this.index_);\n var inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n var oldChildSnap = oldEventCache.getImmediateChild(childKey);\n var nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\n while (nextChild != null &&\n (nextChild.name == childKey || oldEventCache.hasChild(nextChild.name))) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\n }\n var compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n var remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childChangedChange(childKey, childSnap, oldChildSnap));\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n }\n else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(childKey, oldChildSnap));\n }\n var newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(nextChild.name, nextChild.node));\n }\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\n }\n else {\n return newEventCache;\n }\n }\n }\n else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n }\n else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(windowBoundary.name, windowBoundary.node));\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(childKey, childSnap));\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n else {\n return snap;\n }\n }\n else {\n return snap;\n }\n };\n return LimitedFilter;\n}());\nexports.LimitedFilter = LimitedFilter;\n\n//# sourceMappingURL=LimitedFilter.js.map\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Reference_1 = __webpack_require__(21);\nvar DataSnapshot_1 = __webpack_require__(22);\nvar Path_1 = __webpack_require__(2);\nvar Tree_1 = __webpack_require__(110);\nvar PriorityIndex_1 = __webpack_require__(3);\nvar util_2 = __webpack_require__(1);\nvar ServerValues_1 = __webpack_require__(43);\nvar validation_1 = __webpack_require__(7);\nvar util_3 = __webpack_require__(0);\nvar nodeFromJSON_1 = __webpack_require__(11);\nvar ChildrenNode_1 = __webpack_require__(4);\nvar Repo_1 = __webpack_require__(17);\n// TODO: This is pretty messy. Ideally, a lot of this would move into FirebaseData, or a transaction-specific\n// component used by FirebaseData, but it has ties to user callbacks (transaction update and onComplete) as well\n// as the realtime connection (to send transactions to the server). So that all needs to be decoupled first.\n// For now it's part of Repo, but in its own file.\n/**\n * @enum {number}\n */\nvar TransactionStatus;\n(function (TransactionStatus) {\n // We've run the transaction and updated transactionResultData_ with the result, but it isn't currently sent to the\n // server. A transaction will go from RUN -> SENT -> RUN if it comes back from the server as rejected due to\n // mismatched hash.\n TransactionStatus[TransactionStatus[\"RUN\"] = 0] = \"RUN\";\n // We've run the transaction and sent it to the server and it's currently outstanding (hasn't come back as accepted\n // or rejected yet).\n TransactionStatus[TransactionStatus[\"SENT\"] = 1] = \"SENT\";\n // Temporary state used to mark completed transactions (whether successful or aborted). The transaction will be\n // removed when we get a chance to prune completed ones.\n TransactionStatus[TransactionStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\n // Used when an already-sent transaction needs to be aborted (e.g. due to a conflicting set() call that was made).\n // If it comes back as unsuccessful, we'll abort it.\n TransactionStatus[TransactionStatus[\"SENT_NEEDS_ABORT\"] = 3] = \"SENT_NEEDS_ABORT\";\n // Temporary state used to mark transactions that need to be aborted.\n TransactionStatus[TransactionStatus[\"NEEDS_ABORT\"] = 4] = \"NEEDS_ABORT\";\n})(TransactionStatus = exports.TransactionStatus || (exports.TransactionStatus = {}));\n/**\n * If a transaction does not succeed after 25 retries, we abort it. Among other things this ensure that if there's\n * ever a bug causing a mismatch between client / server hashes for some data, we won't retry indefinitely.\n * @type {number}\n * @const\n * @private\n */\nRepo_1.Repo.MAX_TRANSACTION_RETRIES_ = 25;\n/**\n * Setup the transaction data structures\n * @private\n */\nRepo_1.Repo.prototype.transactions_init_ = function () {\n /**\n * Stores queues of outstanding transactions for Firebase locations.\n *\n * @type {!Tree.>}\n * @private\n */\n this.transactionQueueTree_ = new Tree_1.Tree();\n};\n/**\n * Creates a new transaction, adds it to the transactions we're tracking, and sends it to the server if possible.\n *\n * @param {!Path} path Path at which to do transaction.\n * @param {function(*):*} transactionUpdate Update callback.\n * @param {?function(?Error, boolean, ?DataSnapshot)} onComplete Completion callback.\n * @param {boolean} applyLocally Whether or not to make intermediate results visible\n */\nRepo_1.Repo.prototype.startTransaction = function (path, transactionUpdate, onComplete, applyLocally) {\n this.log_('transaction on ' + path);\n // Add a watch to make sure we get server updates.\n var valueCallback = function () { };\n var watchRef = new Reference_1.Reference(this, path);\n watchRef.on('value', valueCallback);\n var unwatcher = function () {\n watchRef.off('value', valueCallback);\n };\n // Initialize transaction.\n var transaction = {\n path: path,\n update: transactionUpdate,\n onComplete: onComplete,\n // One of TransactionStatus enums.\n status: null,\n // Used when combining transactions at different locations to figure out which one goes first.\n order: util_2.LUIDGenerator(),\n // Whether to raise local events for this transaction.\n applyLocally: applyLocally,\n // Count of how many times we've retried the transaction.\n retryCount: 0,\n // Function to call to clean up our .on() listener.\n unwatcher: unwatcher,\n // Stores why a transaction was aborted.\n abortReason: null,\n currentWriteId: null,\n currentInputSnapshot: null,\n currentOutputSnapshotRaw: null,\n currentOutputSnapshotResolved: null\n };\n // Run transaction initially.\n var currentState = this.getLatestState_(path);\n transaction.currentInputSnapshot = currentState;\n var newVal = transaction.update(currentState.val());\n if (newVal === undefined) {\n // Abort transaction.\n transaction.unwatcher();\n transaction.currentOutputSnapshotRaw = null;\n transaction.currentOutputSnapshotResolved = null;\n if (transaction.onComplete) {\n // We just set the input snapshot, so this cast should be safe\n var snapshot = new DataSnapshot_1.DataSnapshot(transaction.currentInputSnapshot, new Reference_1.Reference(this, transaction.path), PriorityIndex_1.PRIORITY_INDEX);\n transaction.onComplete(null, false, snapshot);\n }\n }\n else {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\n // Mark as run and add to our queue.\n transaction.status = TransactionStatus.RUN;\n var queueNode = this.transactionQueueTree_.subTree(path);\n var nodeQueue = queueNode.getValue() || [];\n nodeQueue.push(transaction);\n queueNode.setValue(nodeQueue);\n // Update visibleData and raise events\n // Note: We intentionally raise events after updating all of our transaction state, since the user could\n // start new transactions from the event callbacks.\n var priorityForNode = void 0;\n if (typeof newVal === 'object' &&\n newVal !== null &&\n util_3.contains(newVal, '.priority')) {\n priorityForNode = util_3.safeGet(newVal, '.priority');\n util_1.assert(validation_1.isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\n 'Priority must be a valid string, finite number, server value, or null.');\n }\n else {\n var currentNode = this.serverSyncTree_.calcCompleteEventCache(path) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n priorityForNode = currentNode.getPriority().val();\n }\n priorityForNode /** @type {null|number|string} */ = priorityForNode;\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, priorityForNode);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\n transaction.currentOutputSnapshotResolved = newNode;\n transaction.currentWriteId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, transaction.currentWriteId, transaction.applyLocally);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n this.sendReadyTransactions_();\n }\n};\n/**\n * @param {!Path} path\n * @param {Array.=} excludeSets A specific set to exclude\n * @return {Node}\n * @private\n */\nRepo_1.Repo.prototype.getLatestState_ = function (path, excludeSets) {\n return (this.serverSyncTree_.calcCompleteEventCache(path, excludeSets) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n};\n/**\n * Sends any already-run transactions that aren't waiting for outstanding transactions to\n * complete.\n *\n * Externally it's called with no arguments, but it calls itself recursively with a particular\n * transactionQueueTree node to recurse through the tree.\n *\n * @param {Tree.>=} node transactionQueueTree node to start at.\n * @private\n */\nRepo_1.Repo.prototype.sendReadyTransactions_ = function (node) {\n var _this = this;\n if (node === void 0) { node = this.transactionQueueTree_; }\n // Before recursing, make sure any completed transactions are removed.\n if (!node) {\n this.pruneCompletedTransactionsBelowNode_(node);\n }\n if (node.getValue() !== null) {\n var queue = this.buildTransactionQueue_(node);\n util_1.assert(queue.length > 0, 'Sending zero length transaction queue');\n var allRun = queue.every(function (transaction) { return transaction.status === TransactionStatus.RUN; });\n // If they're all run (and not sent), we can send them. Else, we must wait.\n if (allRun) {\n this.sendTransactionQueue_(node.path(), queue);\n }\n }\n else if (node.hasChildren()) {\n node.forEachChild(function (childNode) {\n _this.sendReadyTransactions_(childNode);\n });\n }\n};\n/**\n * Given a list of run transactions, send them to the server and then handle the result (success or failure).\n *\n * @param {!Path} path The location of the queue.\n * @param {!Array.} queue Queue of transactions under the specified location.\n * @private\n */\nRepo_1.Repo.prototype.sendTransactionQueue_ = function (path, queue) {\n var _this = this;\n // Mark transactions as sent and increment retry count!\n var setsToIgnore = queue.map(function (txn) {\n return txn.currentWriteId;\n });\n var latestState = this.getLatestState_(path, setsToIgnore);\n var snapToSend = latestState;\n var latestHash = latestState.hash();\n for (var i = 0; i < queue.length; i++) {\n var txn = queue[i];\n util_1.assert(txn.status === TransactionStatus.RUN, 'tryToSendTransactionQueue_: items in queue should all be run.');\n txn.status = TransactionStatus.SENT;\n txn.retryCount++;\n var relativePath = Path_1.Path.relativePath(path, txn.path);\n // If we've gotten to this point, the output snapshot must be defined.\n snapToSend = snapToSend.updateChild(relativePath /**@type {!Node} */, txn.currentOutputSnapshotRaw);\n }\n var dataToSend = snapToSend.val(true);\n var pathToSend = path;\n // Send the put.\n this.server_.put(pathToSend.toString(), dataToSend, function (status) {\n _this.log_('transaction put response', {\n path: pathToSend.toString(),\n status: status\n });\n var events = [];\n if (status === 'ok') {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.COMPLETED;\n events = events.concat(_this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId));\n if (queue[i].onComplete) {\n // We never unset the output snapshot, and given that this transaction is complete, it should be set\n var node = queue[i].currentOutputSnapshotResolved;\n var ref = new Reference_1.Reference(_this, queue[i].path);\n var snapshot = new DataSnapshot_1.DataSnapshot(node, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, true, snapshot));\n }\n queue[i].unwatcher();\n }\n // Now remove the completed transactions.\n _this.pruneCompletedTransactionsBelowNode_(_this.transactionQueueTree_.subTree(path));\n // There may be pending transactions that we can now send.\n _this.sendReadyTransactions_();\n _this.eventQueue_.raiseEventsForChangedPath(path, events);\n // Finally, trigger onComplete callbacks.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n else {\n // transactions are no longer sent. Update their status appropriately.\n if (status === 'datastale') {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT)\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n else\n queue[i].status = TransactionStatus.RUN;\n }\n }\n else {\n util_2.warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n queue[i].abortReason = status;\n }\n }\n _this.rerunTransactions_(path);\n }\n }, latestHash);\n};\n/**\n * Finds all transactions dependent on the data at changedPath and reruns them.\n *\n * Should be called any time cached data changes.\n *\n * Return the highest path that was affected by rerunning transactions. This is the path at which events need to\n * be raised for.\n *\n * @param {!Path} changedPath The path in mergedData that changed.\n * @return {!Path} The rootmost path that was affected by rerunning transactions.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactions_ = function (changedPath) {\n var rootMostTransactionNode = this.getAncestorTransactionNode_(changedPath);\n var path = rootMostTransactionNode.path();\n var queue = this.buildTransactionQueue_(rootMostTransactionNode);\n this.rerunTransactionQueue_(queue, path);\n return path;\n};\n/**\n * Does all the work of rerunning transactions (as well as cleans up aborted transactions and whatnot).\n *\n * @param {Array.} queue The queue of transactions to run.\n * @param {!Path} path The path the queue is for.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactionQueue_ = function (queue, path) {\n if (queue.length === 0) {\n return; // Nothing to do!\n }\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n var events = [];\n // Ignore all of the sets we're going to re-run.\n var txnsToRerun = queue.filter(function (q) {\n return q.status === TransactionStatus.RUN;\n });\n var setsToIgnore = txnsToRerun.map(function (q) {\n return q.currentWriteId;\n });\n for (var i = 0; i < queue.length; i++) {\n var transaction = queue[i];\n var relativePath = Path_1.Path.relativePath(path, transaction.path);\n var abortTransaction = false, abortReason = void 0;\n util_1.assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\n if (transaction.status === TransactionStatus.NEEDS_ABORT) {\n abortTransaction = true;\n abortReason = transaction.abortReason;\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else if (transaction.status === TransactionStatus.RUN) {\n if (transaction.retryCount >= Repo_1.Repo.MAX_TRANSACTION_RETRIES_) {\n abortTransaction = true;\n abortReason = 'maxretry';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else {\n // This code reruns a transaction\n var currentNode = this.getLatestState_(transaction.path, setsToIgnore);\n transaction.currentInputSnapshot = currentNode;\n var newData = queue[i].update(currentNode.val());\n if (newData !== undefined) {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\n var newDataNode = nodeFromJSON_1.nodeFromJSON(newData);\n var hasExplicitPriority = typeof newData === 'object' &&\n newData != null &&\n util_3.contains(newData, '.priority');\n if (!hasExplicitPriority) {\n // Keep the old priority if there wasn't a priority explicitly specified.\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\n }\n var oldWriteId = transaction.currentWriteId;\n var serverValues = this.generateServerValues();\n var newNodeResolved = ServerValues_1.resolveDeferredValueSnapshot(newDataNode, serverValues);\n transaction.currentOutputSnapshotRaw = newDataNode;\n transaction.currentOutputSnapshotResolved = newNodeResolved;\n transaction.currentWriteId = this.getNextWriteId_();\n // Mutates setsToIgnore in place\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\n events = events.concat(this.serverSyncTree_.applyUserOverwrite(transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\n events = events.concat(this.serverSyncTree_.ackUserWrite(oldWriteId, true));\n }\n else {\n abortTransaction = true;\n abortReason = 'nodata';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n }\n }\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n events = [];\n if (abortTransaction) {\n // Abort.\n queue[i].status = TransactionStatus.COMPLETED;\n // Removing a listener can trigger pruning which can muck with mergedData/visibleData (as it prunes data).\n // So defer the unwatcher until we're done.\n (function (unwatcher) {\n setTimeout(unwatcher, Math.floor(0));\n })(queue[i].unwatcher);\n if (queue[i].onComplete) {\n if (abortReason === 'nodata') {\n var ref = new Reference_1.Reference(this, queue[i].path);\n // We set this field immediately, so it's safe to cast to an actual snapshot\n var lastInput /** @type {!Node} */ = queue[i].currentInputSnapshot;\n var snapshot = new DataSnapshot_1.DataSnapshot(lastInput, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, false, snapshot));\n }\n else {\n callbacks.push(queue[i].onComplete.bind(null, new Error(abortReason), false, null));\n }\n }\n }\n }\n // Clean up completed transactions.\n this.pruneCompletedTransactionsBelowNode_(this.transactionQueueTree_);\n // Now fire callbacks, now that we're in a good, known state.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n // Try to send the transaction result to the server.\n this.sendReadyTransactions_();\n};\n/**\n * Returns the rootmost ancestor node of the specified path that has a pending transaction on it, or just returns\n * the node for the given path if there are no pending transactions on any ancestor.\n *\n * @param {!Path} path The location to start at.\n * @return {!Tree.>} The rootmost node with a transaction.\n * @private\n */\nRepo_1.Repo.prototype.getAncestorTransactionNode_ = function (path) {\n var front;\n // Start at the root and walk deeper into the tree towards path until we find a node with pending transactions.\n var transactionNode = this.transactionQueueTree_;\n while ((front = path.getFront()) !== null &&\n transactionNode.getValue() === null) {\n transactionNode = transactionNode.subTree(front);\n path = path.popFront();\n }\n return transactionNode;\n};\n/**\n * Builds the queue of all transactions at or below the specified transactionNode.\n *\n * @param {!Tree.>} transactionNode\n * @return {Array.} The generated queue.\n * @private\n */\nRepo_1.Repo.prototype.buildTransactionQueue_ = function (transactionNode) {\n // Walk any child transaction queues and aggregate them into a single queue.\n var transactionQueue = [];\n this.aggregateTransactionQueuesForNode_(transactionNode, transactionQueue);\n // Sort them by the order the transactions were created.\n transactionQueue.sort(function (a, b) {\n return a.order - b.order;\n });\n return transactionQueue;\n};\n/**\n * @param {!Tree.>} node\n * @param {Array.} queue\n * @private\n */\nRepo_1.Repo.prototype.aggregateTransactionQueuesForNode_ = function (node, queue) {\n var _this = this;\n var nodeQueue = node.getValue();\n if (nodeQueue !== null) {\n for (var i = 0; i < nodeQueue.length; i++) {\n queue.push(nodeQueue[i]);\n }\n }\n node.forEachChild(function (child) {\n _this.aggregateTransactionQueuesForNode_(child, queue);\n });\n};\n/**\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\n *\n * @param {!Tree.>} node\n * @private\n */\nRepo_1.Repo.prototype.pruneCompletedTransactionsBelowNode_ = function (node) {\n var _this = this;\n var queue = node.getValue();\n if (queue) {\n var to = 0;\n for (var from = 0; from < queue.length; from++) {\n if (queue[from].status !== TransactionStatus.COMPLETED) {\n queue[to] = queue[from];\n to++;\n }\n }\n queue.length = to;\n node.setValue(queue.length > 0 ? queue : null);\n }\n node.forEachChild(function (childNode) {\n _this.pruneCompletedTransactionsBelowNode_(childNode);\n });\n};\n/**\n * Aborts all transactions on ancestors or descendants of the specified path. Called when doing a set() or update()\n * since we consider them incompatible with transactions.\n *\n * @param {!Path} path Path for which we want to abort related transactions.\n * @return {!Path}\n * @private\n */\nRepo_1.Repo.prototype.abortTransactions_ = function (path) {\n var _this = this;\n var affectedPath = this.getAncestorTransactionNode_(path).path();\n var transactionNode = this.transactionQueueTree_.subTree(path);\n transactionNode.forEachAncestor(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n this.abortTransactionsOnNode_(transactionNode);\n transactionNode.forEachDescendant(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n return affectedPath;\n};\n/**\n * Abort transactions stored in this transaction queue node.\n *\n * @param {!Tree.>} node Node to abort transactions for.\n * @private\n */\nRepo_1.Repo.prototype.abortTransactionsOnNode_ = function (node) {\n var queue = node.getValue();\n if (queue !== null) {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n // Go through queue. Any already-sent transactions must be marked for abort, while the unsent ones\n // can be immediately aborted and removed.\n var events = [];\n var lastSent = -1;\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT) {\n // Already marked. No action needed.\n }\n else if (queue[i].status === TransactionStatus.SENT) {\n util_1.assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\n lastSent = i;\n // Mark transaction for abort when it comes back.\n queue[i].status = TransactionStatus.SENT_NEEDS_ABORT;\n queue[i].abortReason = 'set';\n }\n else {\n util_1.assert(queue[i].status === TransactionStatus.RUN, 'Unexpected transaction status in abort');\n // We can abort it immediately.\n queue[i].unwatcher();\n events = events.concat(this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId, true));\n if (queue[i].onComplete) {\n var snapshot = null;\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, snapshot));\n }\n }\n }\n if (lastSent === -1) {\n // We're not waiting for any sent transactions. We can clear the queue.\n node.setValue(null);\n }\n else {\n // Remove the transactions we aborted.\n queue.length = lastSent + 1;\n }\n // Now fire the callbacks.\n this.eventQueue_.raiseEventsForChangedPath(node.path(), events);\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n};\n\n//# sourceMappingURL=Repo_transaction.js.map\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(0);\nvar Path_1 = __webpack_require__(2);\nvar util_2 = __webpack_require__(0);\n/**\n * Node in a Tree.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode() {\n // TODO: Consider making accessors that create children and value lazily or\n // separate Internal / Leaf 'types'.\n this.children = {};\n this.childCount = 0;\n this.value = null;\n }\n return TreeNode;\n}());\nexports.TreeNode = TreeNode;\n/**\n * A light-weight tree, traversable by path. Nodes can have both values and children.\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\n * children.\n */\nvar Tree = /** @class */ (function () {\n /**\n * @template T\n * @param {string=} name_ Optional name of the node.\n * @param {Tree=} parent_ Optional parent node.\n * @param {TreeNode=} node_ Optional node to wrap.\n */\n function Tree(name_, parent_, node_) {\n if (name_ === void 0) { name_ = ''; }\n if (parent_ === void 0) { parent_ = null; }\n if (node_ === void 0) { node_ = new TreeNode(); }\n this.name_ = name_;\n this.parent_ = parent_;\n this.node_ = node_;\n }\n /**\n * Returns a sub-Tree for the given path.\n *\n * @param {!(string|Path)} pathObj Path to look up.\n * @return {!Tree.} Tree for path.\n */\n Tree.prototype.subTree = function (pathObj) {\n // TODO: Require pathObj to be Path?\n var path = pathObj instanceof Path_1.Path ? pathObj : new Path_1.Path(pathObj);\n var child = this, next;\n while ((next = path.getFront()) !== null) {\n var childNode = util_2.safeGet(child.node_.children, next) || new TreeNode();\n child = new Tree(next, child, childNode);\n path = path.popFront();\n }\n return child;\n };\n /**\n * Returns the data associated with this tree node.\n *\n * @return {?T} The data or null if no data exists.\n */\n Tree.prototype.getValue = function () {\n return this.node_.value;\n };\n /**\n * Sets data to this tree node.\n *\n * @param {!T} value Value to set.\n */\n Tree.prototype.setValue = function (value) {\n util_1.assert(typeof value !== 'undefined', 'Cannot set value to undefined');\n this.node_.value = value;\n this.updateParents_();\n };\n /**\n * Clears the contents of the tree node (its value and all children).\n */\n Tree.prototype.clear = function () {\n this.node_.value = null;\n this.node_.children = {};\n this.node_.childCount = 0;\n this.updateParents_();\n };\n /**\n * @return {boolean} Whether the tree has any children.\n */\n Tree.prototype.hasChildren = function () {\n return this.node_.childCount > 0;\n };\n /**\n * @return {boolean} Whether the tree is empty (no value or children).\n */\n Tree.prototype.isEmpty = function () {\n return this.getValue() === null && !this.hasChildren();\n };\n /**\n * Calls action for each child of this tree node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachChild = function (action) {\n var _this = this;\n util_2.forEach(this.node_.children, function (child, childTree) {\n action(new Tree(child, _this, childTree));\n });\n };\n /**\n * Does a depth-first traversal of this node's descendants, calling action for each one.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n * @param {boolean=} includeSelf Whether to call action on this node as well. Defaults to\n * false.\n * @param {boolean=} childrenFirst Whether to call action on children before calling it on\n * parent.\n */\n Tree.prototype.forEachDescendant = function (action, includeSelf, childrenFirst) {\n if (includeSelf && !childrenFirst)\n action(this);\n this.forEachChild(function (child) {\n child.forEachDescendant(action, /*includeSelf=*/ true, childrenFirst);\n });\n if (includeSelf && childrenFirst)\n action(this);\n };\n /**\n * Calls action on each ancestor node.\n *\n * @param {function(!Tree.)} action Action to be called on each parent; return\n * true to abort.\n * @param {boolean=} includeSelf Whether to call action on this node as well.\n * @return {boolean} true if the action callback returned true.\n */\n Tree.prototype.forEachAncestor = function (action, includeSelf) {\n var node = includeSelf ? this : this.parent();\n while (node !== null) {\n if (action(node)) {\n return true;\n }\n node = node.parent();\n }\n return false;\n };\n /**\n * Does a depth-first traversal of this node's descendants. When a descendant with a value\n * is found, action is called on it and traversal does not continue inside the node.\n * Action is *not* called on this node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachImmediateDescendantWithValue = function (action) {\n this.forEachChild(function (child) {\n if (child.getValue() !== null)\n action(child);\n else\n child.forEachImmediateDescendantWithValue(action);\n });\n };\n /**\n * @return {!Path} The path of this tree node, as a Path.\n */\n Tree.prototype.path = function () {\n return new Path_1.Path(this.parent_ === null\n ? this.name_\n : this.parent_.path() + '/' + this.name_);\n };\n /**\n * @return {string} The name of the tree node.\n */\n Tree.prototype.name = function () {\n return this.name_;\n };\n /**\n * @return {?Tree} The parent tree node, or null if this is the root of the tree.\n */\n Tree.prototype.parent = function () {\n return this.parent_;\n };\n /**\n * Adds or removes this child from its parent based on whether it's empty or not.\n *\n * @private\n */\n Tree.prototype.updateParents_ = function () {\n if (this.parent_ !== null)\n this.parent_.updateChild_(this.name_, this);\n };\n /**\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\n *\n * @param {string} childName The name of the child to update.\n * @param {!Tree.} child The child to update.\n * @private\n */\n Tree.prototype.updateChild_ = function (childName, child) {\n var childEmpty = child.isEmpty();\n var childExists = util_2.contains(this.node_.children, childName);\n if (childEmpty && childExists) {\n delete this.node_.children[childName];\n this.node_.childCount--;\n this.updateParents_();\n }\n else if (!childEmpty && !childExists) {\n this.node_.children[childName] = child.node_;\n this.node_.childCount++;\n this.updateParents_();\n }\n };\n return Tree;\n}());\nexports.Tree = Tree;\n\n//# sourceMappingURL=Tree.js.map\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WebSocketConnection_1 = __webpack_require__(54);\nvar BrowserPollConnection_1 = __webpack_require__(53);\n/**\n * INTERNAL methods for internal-use only (tests, etc.).\n *\n * Customers shouldn't use these or else should be aware that they could break at any time.\n *\n * @const\n */\nexports.forceLongPolling = function () {\n WebSocketConnection_1.WebSocketConnection.forceDisallow();\n BrowserPollConnection_1.BrowserPollConnection.forceAllow();\n};\nexports.forceWebSockets = function () {\n BrowserPollConnection_1.BrowserPollConnection.forceDisallow();\n};\n/* Used by App Manager */\nexports.isWebSocketsAvailable = function () {\n return WebSocketConnection_1.WebSocketConnection['isAvailable']();\n};\nexports.setSecurityDebugCallback = function (ref, callback) {\n ref.repo.persistentConnection_.securityDebugCallback_ = callback;\n};\nexports.stats = function (ref, showDelta) {\n ref.repo.stats(showDelta);\n};\nexports.statsIncrementCounter = function (ref, metric) {\n ref.repo.statsIncrementCounter(metric);\n};\nexports.dataUpdateCount = function (ref) {\n return ref.repo.dataUpdateCount;\n};\nexports.interceptServerData = function (ref, callback) {\n return ref.repo.interceptServerData_(callback);\n};\n\n//# sourceMappingURL=internal.js.map\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RepoInfo_1 = __webpack_require__(34);\nvar PersistentConnection_1 = __webpack_require__(50);\nvar RepoManager_1 = __webpack_require__(26);\nvar Connection_1 = __webpack_require__(52);\nexports.DataConnection = PersistentConnection_1.PersistentConnection;\n/**\n * @param {!string} pathString\n * @param {function(*)} onComplete\n */\nPersistentConnection_1.PersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\n this.sendRequest('q', { p: pathString }, onComplete);\n};\n/**\n * @param {*} data\n * @param {function(*)} onEcho\n */\nPersistentConnection_1.PersistentConnection.prototype.echo = function (data, onEcho) {\n this.sendRequest('echo', { d: data }, onEcho);\n};\n// RealTimeConnection properties that we use in tests.\nexports.RealTimeConnection = Connection_1.Connection;\n/**\n * @param {function(): string} newHash\n * @return {function()}\n */\nexports.hijackHash = function (newHash) {\n var oldPut = PersistentConnection_1.PersistentConnection.prototype.put;\n PersistentConnection_1.PersistentConnection.prototype.put = function (pathString, data, opt_onComplete, opt_hash) {\n if (opt_hash !== undefined) {\n opt_hash = newHash();\n }\n oldPut.call(this, pathString, data, opt_onComplete, opt_hash);\n };\n return function () {\n PersistentConnection_1.PersistentConnection.prototype.put = oldPut;\n };\n};\n/**\n * @type {function(new:RepoInfo, !string, boolean, !string, boolean): undefined}\n */\nexports.ConnectionTarget = RepoInfo_1.RepoInfo;\n/**\n * @param {!Query} query\n * @return {!string}\n */\nexports.queryIdentifier = function (query) {\n return query.queryIdentifier();\n};\n/**\n * @param {!Query} firebaseRef\n * @return {!Object}\n */\nexports.listens = function (firebaseRef) {\n return firebaseRef.repo.persistentConnection_.listens_;\n};\n/**\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\n *\n * @param {boolean} forceRestClient\n */\nexports.forceRestClient = function (forceRestClient) {\n RepoManager_1.RepoManager.getInstance().forceRestClient(forceRestClient);\n};\n\n//# sourceMappingURL=test_access.js.map\n\n\n/***/ })\n],[78]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-database.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-database.js","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar util_6 = require(\"@firebase/util\");\nvar storage_1 = require(\"../storage/storage\");\nvar util_7 = require(\"@firebase/util\");\n/**\n * Returns a locally-unique ID (generated by just incrementing up from 0 each time its called).\n * @type {function(): number} Generated ID.\n */\nexports.LUIDGenerator = (function () {\n var id = 1;\n return function () {\n return id++;\n };\n})();\n/**\n * Sha1 hash of the input string\n * @param {!string} str The string to hash\n * @return {!string} The resulting hash\n */\nexports.sha1 = function (str) {\n var utf8Bytes = util_5.stringToByteArray(str);\n var sha1 = new util_4.Sha1();\n sha1.update(utf8Bytes);\n var sha1Bytes = sha1.digest();\n return util_3.base64.encodeByteArray(sha1Bytes);\n};\n/**\n * @param {...*} var_args\n * @return {string}\n * @private\n */\nvar buildLogMessage_ = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var message = '';\n for (var i = 0; i < var_args.length; i++) {\n if (Array.isArray(var_args[i]) ||\n (var_args[i] &&\n typeof var_args[i] === 'object' &&\n typeof var_args[i].length === 'number')) {\n message += buildLogMessage_.apply(null, var_args[i]);\n }\n else if (typeof var_args[i] === 'object') {\n message += util_6.stringify(var_args[i]);\n }\n else {\n message += var_args[i];\n }\n message += ' ';\n }\n return message;\n};\n/**\n * Use this for all debug messages in Firebase.\n * @type {?function(string)}\n */\nexports.logger = null;\n/**\n * Flag to check for log availability on first log message\n * @type {boolean}\n * @private\n */\nvar firstLog_ = true;\n/**\n * The implementation of Firebase.enableLogging (defined here to break dependencies)\n * @param {boolean|?function(string)} logger_ A flag to turn on logging, or a custom logger\n * @param {boolean=} persistent Whether or not to persist logging settings across refreshes\n */\nexports.enableLogging = function (logger_, persistent) {\n util_1.assert(!persistent || (logger_ === true || logger_ === false), \"Can't turn on custom loggers persistently.\");\n if (logger_ === true) {\n if (typeof console !== 'undefined') {\n if (typeof console.log === 'function') {\n exports.logger = console.log.bind(console);\n }\n else if (typeof console.log === 'object') {\n // IE does this.\n exports.logger = function (message) {\n console.log(message);\n };\n }\n }\n if (persistent)\n storage_1.SessionStorage.set('logging_enabled', true);\n }\n else if (typeof logger_ === 'function') {\n exports.logger = logger_;\n }\n else {\n exports.logger = null;\n storage_1.SessionStorage.remove('logging_enabled');\n }\n};\n/**\n *\n * @param {...(string|Arguments)} var_args\n */\nexports.log = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (firstLog_ === true) {\n firstLog_ = false;\n if (exports.logger === null && storage_1.SessionStorage.get('logging_enabled') === true)\n exports.enableLogging(true);\n }\n if (exports.logger) {\n var message = buildLogMessage_.apply(null, var_args);\n exports.logger(message);\n }\n};\n/**\n * @param {!string} prefix\n * @return {function(...[*])}\n */\nexports.logWrapper = function (prefix) {\n return function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n exports.log.apply(void 0, [prefix].concat(var_args));\n };\n};\n/**\n * @param {...string} var_args\n */\nexports.error = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (typeof console !== 'undefined') {\n var message = 'FIREBASE INTERNAL ERROR: ' + buildLogMessage_.apply(void 0, var_args);\n if (typeof console.error !== 'undefined') {\n console.error(message);\n }\n else {\n console.log(message);\n }\n }\n};\n/**\n * @param {...string} var_args\n */\nexports.fatal = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var message = buildLogMessage_.apply(void 0, var_args);\n throw new Error('FIREBASE FATAL ERROR: ' + message);\n};\n/**\n * @param {...*} var_args\n */\nexports.warn = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (typeof console !== 'undefined') {\n var message = 'FIREBASE WARNING: ' + buildLogMessage_.apply(void 0, var_args);\n if (typeof console.warn !== 'undefined') {\n console.warn(message);\n }\n else {\n console.log(message);\n }\n }\n};\n/**\n * Logs a warning if the containing page uses https. Called when a call to new Firebase\n * does not use https.\n */\nexports.warnIfPageIsSecure = function () {\n // Be very careful accessing browser globals. Who knows what may or may not exist.\n if (typeof window !== 'undefined' &&\n window.location &&\n window.location.protocol &&\n window.location.protocol.indexOf('https:') !== -1) {\n exports.warn('Insecure Firebase access from a secure page. ' +\n 'Please use https in calls to new Firebase().');\n }\n};\n/**\n * @param {!String} methodName\n */\nexports.warnAboutUnsupportedMethod = function (methodName) {\n exports.warn(methodName +\n ' is unsupported and will likely change soon. ' +\n 'Please do not use.');\n};\n/**\n * Returns true if data is NaN, or +/- Infinity.\n * @param {*} data\n * @return {boolean}\n */\nexports.isInvalidJSONNumber = function (data) {\n return (typeof data === 'number' &&\n (data != data || // NaN\n data == Number.POSITIVE_INFINITY ||\n data == Number.NEGATIVE_INFINITY));\n};\n/**\n * @param {function()} fn\n */\nexports.executeWhenDOMReady = function (fn) {\n if (util_7.isNodeSdk() || document.readyState === 'complete') {\n fn();\n }\n else {\n // Modeled after jQuery. Try DOMContentLoaded and onreadystatechange (which\n // fire before onload), but fall back to onload.\n var called_1 = false;\n var wrappedFn_1 = function () {\n if (!document.body) {\n setTimeout(wrappedFn_1, Math.floor(10));\n return;\n }\n if (!called_1) {\n called_1 = true;\n fn();\n }\n };\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', wrappedFn_1, false);\n // fallback to onload.\n window.addEventListener('load', wrappedFn_1, false);\n }\n else if (document.attachEvent) {\n // IE.\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'complete')\n wrappedFn_1();\n });\n // fallback to onload.\n window.attachEvent('onload', wrappedFn_1);\n // jQuery has an extra hack for IE that we could employ (based on\n // http://javascript.nwbox.com/IEContentLoaded/) But it looks really old.\n // I'm hoping we don't need it.\n }\n }\n};\n/**\n * Minimum key name. Invalid for actual data, used as a marker to sort before any valid names\n * @type {!string}\n */\nexports.MIN_NAME = '[MIN_NAME]';\n/**\n * Maximum key name. Invalid for actual data, used as a marker to sort above any valid names\n * @type {!string}\n */\nexports.MAX_NAME = '[MAX_NAME]';\n/**\n * Compares valid Firebase key names, plus min and max name\n * @param {!string} a\n * @param {!string} b\n * @return {!number}\n */\nexports.nameCompare = function (a, b) {\n if (a === b) {\n return 0;\n }\n else if (a === exports.MIN_NAME || b === exports.MAX_NAME) {\n return -1;\n }\n else if (b === exports.MIN_NAME || a === exports.MAX_NAME) {\n return 1;\n }\n else {\n var aAsInt = exports.tryParseInt(a), bAsInt = exports.tryParseInt(b);\n if (aAsInt !== null) {\n if (bAsInt !== null) {\n return aAsInt - bAsInt == 0 ? a.length - b.length : aAsInt - bAsInt;\n }\n else {\n return -1;\n }\n }\n else if (bAsInt !== null) {\n return 1;\n }\n else {\n return a < b ? -1 : 1;\n }\n }\n};\n/**\n * @param {!string} a\n * @param {!string} b\n * @return {!number} comparison result.\n */\nexports.stringCompare = function (a, b) {\n if (a === b) {\n return 0;\n }\n else if (a < b) {\n return -1;\n }\n else {\n return 1;\n }\n};\n/**\n * @param {string} key\n * @param {Object} obj\n * @return {*}\n */\nexports.requireKey = function (key, obj) {\n if (obj && key in obj) {\n return obj[key];\n }\n else {\n throw new Error('Missing required key (' + key + ') in object: ' + util_6.stringify(obj));\n }\n};\n/**\n * @param {*} obj\n * @return {string}\n */\nexports.ObjectToUniqueKey = function (obj) {\n if (typeof obj !== 'object' || obj === null)\n return util_6.stringify(obj);\n var keys = [];\n for (var k in obj) {\n keys.push(k);\n }\n // Export as json, but with the keys sorted.\n keys.sort();\n var key = '{';\n for (var i = 0; i < keys.length; i++) {\n if (i !== 0)\n key += ',';\n key += util_6.stringify(keys[i]);\n key += ':';\n key += exports.ObjectToUniqueKey(obj[keys[i]]);\n }\n key += '}';\n return key;\n};\n/**\n * Splits a string into a number of smaller segments of maximum size\n * @param {!string} str The string\n * @param {!number} segsize The maximum number of chars in the string.\n * @return {Array.} The string, split into appropriately-sized chunks\n */\nexports.splitStringBySize = function (str, segsize) {\n var len = str.length;\n if (len <= segsize) {\n return [str];\n }\n var dataSegs = [];\n for (var c = 0; c < len; c += segsize) {\n if (c + segsize > len) {\n dataSegs.push(str.substring(c, len));\n }\n else {\n dataSegs.push(str.substring(c, c + segsize));\n }\n }\n return dataSegs;\n};\n/**\n * Apply a function to each (key, value) pair in an object or\n * apply a function to each (index, value) pair in an array\n * @param {!(Object|Array)} obj The object or array to iterate over\n * @param {function(?, ?)} fn The function to apply\n */\nexports.each = function (obj, fn) {\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; ++i) {\n fn(i, obj[i]);\n }\n }\n else {\n /**\n * in the conversion of code we removed the goog.object.forEach\n * function which did a value,key callback. We standardized on\n * a single impl that does a key, value callback. So we invert\n * to not have to touch the `each` code points\n */\n util_2.forEach(obj, function (key, val) { return fn(val, key); });\n }\n};\n/**\n * Like goog.bind, but doesn't bother to create a closure if opt_context is null/undefined.\n * @param {function(*)} callback Callback function.\n * @param {?Object=} context Optional context to bind to.\n * @return {function(*)}\n */\nexports.bindCallback = function (callback, context) {\n return context ? callback.bind(context) : callback;\n};\n/**\n * Borrowed from http://hg.secondlife.com/llsd/src/tip/js/typedarray.js (MIT License)\n * I made one modification at the end and removed the NaN / Infinity\n * handling (since it seemed broken [caused an overflow] and we don't need it). See MJL comments.\n * @param {!number} v A double\n * @return {string}\n */\nexports.doubleToIEEE754String = function (v) {\n util_1.assert(!exports.isInvalidJSONNumber(v), 'Invalid JSON number'); // MJL\n var ebits = 11, fbits = 52;\n var bias = (1 << (ebits - 1)) - 1, s, e, f, ln, i, bits, str;\n // Compute sign, exponent, fraction\n // Skip NaN / Infinity handling --MJL.\n if (v === 0) {\n e = 0;\n f = 0;\n s = 1 / v === -Infinity ? 1 : 0;\n }\n else {\n s = v < 0;\n v = Math.abs(v);\n if (v >= Math.pow(2, 1 - bias)) {\n // Normalized\n ln = Math.min(Math.floor(Math.log(v) / Math.LN2), bias);\n e = ln + bias;\n f = Math.round(v * Math.pow(2, fbits - ln) - Math.pow(2, fbits));\n }\n else {\n // Denormalized\n e = 0;\n f = Math.round(v / Math.pow(2, 1 - bias - fbits));\n }\n }\n // Pack sign, exponent, fraction\n bits = [];\n for (i = fbits; i; i -= 1) {\n bits.push(f % 2 ? 1 : 0);\n f = Math.floor(f / 2);\n }\n for (i = ebits; i; i -= 1) {\n bits.push(e % 2 ? 1 : 0);\n e = Math.floor(e / 2);\n }\n bits.push(s ? 1 : 0);\n bits.reverse();\n str = bits.join('');\n // Return the data as a hex string. --MJL\n var hexByteString = '';\n for (i = 0; i < 64; i += 8) {\n var hexByte = parseInt(str.substr(i, 8), 2).toString(16);\n if (hexByte.length === 1)\n hexByte = '0' + hexByte;\n hexByteString = hexByteString + hexByte;\n }\n return hexByteString.toLowerCase();\n};\n/**\n * Used to detect if we're in a Chrome content script (which executes in an\n * isolated environment where long-polling doesn't work).\n * @return {boolean}\n */\nexports.isChromeExtensionContentScript = function () {\n return !!(typeof window === 'object' &&\n window['chrome'] &&\n window['chrome']['extension'] &&\n !/^chrome/.test(window.location.href));\n};\n/**\n * Used to detect if we're in a Windows 8 Store app.\n * @return {boolean}\n */\nexports.isWindowsStoreApp = function () {\n // Check for the presence of a couple WinRT globals\n return typeof Windows === 'object' && typeof Windows.UI === 'object';\n};\n/**\n * Converts a server error code to a Javascript Error\n * @param {!string} code\n * @param {!Query} query\n * @return {Error}\n */\nexports.errorForServerCode = function (code, query) {\n var reason = 'Unknown Error';\n if (code === 'too_big') {\n reason =\n 'The data requested exceeds the maximum size ' +\n 'that can be accessed with a single request.';\n }\n else if (code == 'permission_denied') {\n reason = \"Client doesn't have permission to access the desired data.\";\n }\n else if (code == 'unavailable') {\n reason = 'The service is unavailable';\n }\n var error = new Error(code + ' at ' + query.path.toString() + ': ' + reason);\n error.code = code.toUpperCase();\n return error;\n};\n/**\n * Used to test for integer-looking strings\n * @type {RegExp}\n * @private\n */\nexports.INTEGER_REGEXP_ = new RegExp('^-?\\\\d{1,10}$');\n/**\n * If the string contains a 32-bit integer, return it. Else return null.\n * @param {!string} str\n * @return {?number}\n */\nexports.tryParseInt = function (str) {\n if (exports.INTEGER_REGEXP_.test(str)) {\n var intVal = Number(str);\n if (intVal >= -2147483648 && intVal <= 2147483647) {\n return intVal;\n }\n }\n return null;\n};\n/**\n * Helper to run some code but catch any exceptions and re-throw them later.\n * Useful for preventing user callbacks from breaking internal code.\n *\n * Re-throwing the exception from a setTimeout is a little evil, but it's very\n * convenient (we don't have to try to figure out when is a safe point to\n * re-throw it), and the behavior seems reasonable:\n *\n * * If you aren't pausing on exceptions, you get an error in the console with\n * the correct stack trace.\n * * If you're pausing on all exceptions, the debugger will pause on your\n * exception and then again when we rethrow it.\n * * If you're only pausing on uncaught exceptions, the debugger will only pause\n * on us re-throwing it.\n *\n * @param {!function()} fn The code to guard.\n */\nexports.exceptionGuard = function (fn) {\n try {\n fn();\n }\n catch (e) {\n // Re-throw exception when it's safe.\n setTimeout(function () {\n // It used to be that \"throw e\" would result in a good console error with\n // relevant context, but as of Chrome 39, you just get the firebase.js\n // file/line number where we re-throw it, which is useless. So we log\n // e.stack explicitly.\n var stack = e.stack || '';\n exports.warn('Exception was thrown by user callback.', stack);\n throw e;\n }, Math.floor(0));\n }\n};\n/**\n * Helper function to safely call opt_callback with the specified arguments. It:\n * 1. Turns into a no-op if opt_callback is null or undefined.\n * 2. Wraps the call inside exceptionGuard to prevent exceptions from breaking our state.\n *\n * @param {?Function=} callback Optional onComplete callback.\n * @param {...*} var_args Arbitrary args to be passed to opt_onComplete\n */\nexports.callUserCallback = function (callback) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (typeof callback === 'function') {\n exports.exceptionGuard(function () {\n callback.apply(void 0, var_args);\n });\n }\n};\n/**\n * @return {boolean} true if we think we're currently being crawled.\n */\nexports.beingCrawled = function () {\n var userAgent = (typeof window === 'object' &&\n window['navigator'] &&\n window['navigator']['userAgent']) ||\n '';\n // For now we whitelist the most popular crawlers. We should refine this to be the set of crawlers we\n // believe to support JavaScript/AJAX rendering.\n // NOTE: Google Webmaster Tools doesn't really belong, but their \"This is how a visitor to your website\n // would have seen the page\" is flaky if we don't treat it as a crawler.\n return (userAgent.search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i) >= 0);\n};\n/**\n * Export a property of an object using a getter function.\n *\n * @param {!Object} object\n * @param {string} name\n * @param {!function(): *} fnGet\n */\nexports.exportPropGetter = function (object, name, fnGet) {\n Object.defineProperty(object, name, { get: fnGet });\n};\n/**\n * Same as setTimeout() except on Node.JS it will /not/ prevent the process from exiting.\n *\n * It is removed with clearTimeout() as normal.\n *\n * @param {Function} fn Function to run.\n * @param {number} time Milliseconds to wait before running.\n * @return {number|Object} The setTimeout() return value.\n */\nexports.setTimeoutNonBlocking = function (fn, time) {\n var timeout = setTimeout(fn, time);\n if (typeof timeout === 'object' && timeout['unref']) {\n timeout['unref']();\n }\n return timeout;\n};\n\n//# sourceMappingURL=util.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/util.js\n// module id = 1\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * An immutable object representing a parsed path. It's immutable so that you\n * can pass them around to other functions without worrying about them changing\n * it.\n */\nvar Path = /** @class */ (function () {\n /**\n * @param {string|Array.} pathOrString Path string to parse,\n * or another path, or the raw tokens array\n * @param {number=} pieceNum\n */\n function Path(pathOrString, pieceNum) {\n if (pieceNum === void 0) {\n this.pieces_ = pathOrString.split('/');\n // Remove empty pieces.\n var copyTo = 0;\n for (var i = 0; i < this.pieces_.length; i++) {\n if (this.pieces_[i].length > 0) {\n this.pieces_[copyTo] = this.pieces_[i];\n copyTo++;\n }\n }\n this.pieces_.length = copyTo;\n this.pieceNum_ = 0;\n }\n else {\n this.pieces_ = pathOrString;\n this.pieceNum_ = pieceNum;\n }\n }\n Object.defineProperty(Path, \"Empty\", {\n /**\n * Singleton to represent an empty path\n *\n * @const\n */\n get: function () {\n return new Path('');\n },\n enumerable: true,\n configurable: true\n });\n Path.prototype.getFront = function () {\n if (this.pieceNum_ >= this.pieces_.length)\n return null;\n return this.pieces_[this.pieceNum_];\n };\n /**\n * @return {number} The number of segments in this path\n */\n Path.prototype.getLength = function () {\n return this.pieces_.length - this.pieceNum_;\n };\n /**\n * @return {!Path}\n */\n Path.prototype.popFront = function () {\n var pieceNum = this.pieceNum_;\n if (pieceNum < this.pieces_.length) {\n pieceNum++;\n }\n return new Path(this.pieces_, pieceNum);\n };\n /**\n * @return {?string}\n */\n Path.prototype.getBack = function () {\n if (this.pieceNum_ < this.pieces_.length)\n return this.pieces_[this.pieces_.length - 1];\n return null;\n };\n Path.prototype.toString = function () {\n var pathString = '';\n for (var i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '')\n pathString += '/' + this.pieces_[i];\n }\n return pathString || '/';\n };\n Path.prototype.toUrlEncodedString = function () {\n var pathString = '';\n for (var i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '')\n pathString += '/' + encodeURIComponent(String(this.pieces_[i]));\n }\n return pathString || '/';\n };\n /**\n * Shallow copy of the parts of the path.\n *\n * @param {number=} begin\n * @return {!Array}\n */\n Path.prototype.slice = function (begin) {\n if (begin === void 0) { begin = 0; }\n return this.pieces_.slice(this.pieceNum_ + begin);\n };\n /**\n * @return {?Path}\n */\n Path.prototype.parent = function () {\n if (this.pieceNum_ >= this.pieces_.length)\n return null;\n var pieces = [];\n for (var i = this.pieceNum_; i < this.pieces_.length - 1; i++)\n pieces.push(this.pieces_[i]);\n return new Path(pieces, 0);\n };\n /**\n * @param {string|!Path} childPathObj\n * @return {!Path}\n */\n Path.prototype.child = function (childPathObj) {\n var pieces = [];\n for (var i = this.pieceNum_; i < this.pieces_.length; i++)\n pieces.push(this.pieces_[i]);\n if (childPathObj instanceof Path) {\n for (var i = childPathObj.pieceNum_; i < childPathObj.pieces_.length; i++) {\n pieces.push(childPathObj.pieces_[i]);\n }\n }\n else {\n var childPieces = childPathObj.split('/');\n for (var i = 0; i < childPieces.length; i++) {\n if (childPieces[i].length > 0)\n pieces.push(childPieces[i]);\n }\n }\n return new Path(pieces, 0);\n };\n /**\n * @return {boolean} True if there are no segments in this path\n */\n Path.prototype.isEmpty = function () {\n return this.pieceNum_ >= this.pieces_.length;\n };\n /**\n * @param {!Path} outerPath\n * @param {!Path} innerPath\n * @return {!Path} The path from outerPath to innerPath\n */\n Path.relativePath = function (outerPath, innerPath) {\n var outer = outerPath.getFront(), inner = innerPath.getFront();\n if (outer === null) {\n return innerPath;\n }\n else if (outer === inner) {\n return Path.relativePath(outerPath.popFront(), innerPath.popFront());\n }\n else {\n throw new Error('INTERNAL ERROR: innerPath (' +\n innerPath +\n ') is not within ' +\n 'outerPath (' +\n outerPath +\n ')');\n }\n };\n /**\n * @param {!Path} left\n * @param {!Path} right\n * @return {number} -1, 0, 1 if left is less, equal, or greater than the right.\n */\n Path.comparePaths = function (left, right) {\n var leftKeys = left.slice();\n var rightKeys = right.slice();\n for (var i = 0; i < leftKeys.length && i < rightKeys.length; i++) {\n var cmp = util_1.nameCompare(leftKeys[i], rightKeys[i]);\n if (cmp !== 0)\n return cmp;\n }\n if (leftKeys.length === rightKeys.length)\n return 0;\n return leftKeys.length < rightKeys.length ? -1 : 1;\n };\n /**\n *\n * @param {Path} other\n * @return {boolean} true if paths are the same.\n */\n Path.prototype.equals = function (other) {\n if (this.getLength() !== other.getLength()) {\n return false;\n }\n for (var i = this.pieceNum_, j = other.pieceNum_; i <= this.pieces_.length; i++, j++) {\n if (this.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n }\n return true;\n };\n /**\n *\n * @param {!Path} other\n * @return {boolean} True if this path is a parent (or the same as) other\n */\n Path.prototype.contains = function (other) {\n var i = this.pieceNum_;\n var j = other.pieceNum_;\n if (this.getLength() > other.getLength()) {\n return false;\n }\n while (i < this.pieces_.length) {\n if (this.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n ++i;\n ++j;\n }\n return true;\n };\n return Path;\n}()); // end Path\nexports.Path = Path;\n/**\n * Dynamic (mutable) path used to count path lengths.\n *\n * This class is used to efficiently check paths for valid\n * length (in UTF8 bytes) and depth (used in path validation).\n *\n * Throws Error exception if path is ever invalid.\n *\n * The definition of a path always begins with '/'.\n */\nvar ValidationPath = /** @class */ (function () {\n /**\n * @param {!Path} path Initial Path.\n * @param {string} errorPrefix_ Prefix for any error messages.\n */\n function ValidationPath(path, errorPrefix_) {\n this.errorPrefix_ = errorPrefix_;\n /** @type {!Array} */\n this.parts_ = path.slice();\n /** @type {number} Initialize to number of '/' chars needed in path. */\n this.byteLength_ = Math.max(1, this.parts_.length);\n for (var i = 0; i < this.parts_.length; i++) {\n this.byteLength_ += util_2.stringLength(this.parts_[i]);\n }\n this.checkValid_();\n }\n Object.defineProperty(ValidationPath, \"MAX_PATH_DEPTH\", {\n /** @const {number} Maximum key depth. */\n get: function () {\n return 32;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValidationPath, \"MAX_PATH_LENGTH_BYTES\", {\n /** @const {number} Maximum number of (UTF8) bytes in a Firebase path. */\n get: function () {\n return 768;\n },\n enumerable: true,\n configurable: true\n });\n /** @param {string} child */\n ValidationPath.prototype.push = function (child) {\n // Count the needed '/'\n if (this.parts_.length > 0) {\n this.byteLength_ += 1;\n }\n this.parts_.push(child);\n this.byteLength_ += util_2.stringLength(child);\n this.checkValid_();\n };\n ValidationPath.prototype.pop = function () {\n var last = this.parts_.pop();\n this.byteLength_ -= util_2.stringLength(last);\n // Un-count the previous '/'\n if (this.parts_.length > 0) {\n this.byteLength_ -= 1;\n }\n };\n ValidationPath.prototype.checkValid_ = function () {\n if (this.byteLength_ > ValidationPath.MAX_PATH_LENGTH_BYTES) {\n throw new Error(this.errorPrefix_ +\n 'has a key path longer than ' +\n ValidationPath.MAX_PATH_LENGTH_BYTES +\n ' bytes (' +\n this.byteLength_ +\n ').');\n }\n if (this.parts_.length > ValidationPath.MAX_PATH_DEPTH) {\n throw new Error(this.errorPrefix_ +\n 'path specified exceeds the maximum depth that can be written (' +\n ValidationPath.MAX_PATH_DEPTH +\n ') or object contains a cycle ' +\n this.toErrorString());\n }\n };\n /**\n * String for use in error messages - uses '.' notation for path.\n *\n * @return {string}\n */\n ValidationPath.prototype.toErrorString = function () {\n if (this.parts_.length == 0) {\n return '';\n }\n return \"in property '\" + this.parts_.join('.') + \"'\";\n };\n return ValidationPath;\n}());\nexports.ValidationPath = ValidationPath;\n\n//# sourceMappingURL=Path.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/Path.js\n// module id = 2\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Index_1 = require(\"./Index\");\nvar util_1 = require(\"../../util/util\");\nvar Node_1 = require(\"../Node\");\nvar LeafNode_1 = require(\"../LeafNode\");\nvar nodeFromJSON;\nvar MAX_NODE;\nfunction setNodeFromJSON(val) {\n nodeFromJSON = val;\n}\nexports.setNodeFromJSON = setNodeFromJSON;\nfunction setMaxNode(val) {\n MAX_NODE = val;\n}\nexports.setMaxNode = setMaxNode;\n/**\n * @constructor\n * @extends {Index}\n * @private\n */\nvar PriorityIndex = /** @class */ (function (_super) {\n __extends(PriorityIndex, _super);\n function PriorityIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.compare = function (a, b) {\n var aPriority = a.node.getPriority();\n var bPriority = b.node.getPriority();\n var indexCmp = aPriority.compareTo(bPriority);\n if (indexCmp === 0) {\n return util_1.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.isDefinedOn = function (node) {\n return !node.getPriority().isEmpty();\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return !oldNode.getPriority().equals(newNode.getPriority());\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n PriorityIndex.prototype.maxPost = function () {\n return new Node_1.NamedNode(util_1.MAX_NAME, new LeafNode_1.LeafNode('[PRIORITY-POST]', MAX_NODE));\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n PriorityIndex.prototype.makePost = function (indexValue, name) {\n var priorityNode = nodeFromJSON(indexValue);\n return new Node_1.NamedNode(name, new LeafNode_1.LeafNode('[PRIORITY-POST]', priorityNode));\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n PriorityIndex.prototype.toString = function () {\n return '.priority';\n };\n return PriorityIndex;\n}(Index_1.Index));\nexports.PriorityIndex = PriorityIndex;\nexports.PRIORITY_INDEX = new PriorityIndex();\n\n//# sourceMappingURL=PriorityIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/PriorityIndex.js\n// module id = 3\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar SortedMap_1 = require(\"../util/SortedMap\");\nvar Node_1 = require(\"./Node\");\nvar snap_1 = require(\"./snap\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar KeyIndex_1 = require(\"./indexes/KeyIndex\");\nvar IndexMap_1 = require(\"./IndexMap\");\nvar LeafNode_1 = require(\"./LeafNode\");\nvar comparators_1 = require(\"./comparators\");\n// TODO: For memory savings, don't store priorityNode_ if it's empty.\nvar EMPTY_NODE;\n/**\n * ChildrenNode is a class for storing internal nodes in a DataSnapshot\n * (i.e. nodes with children). It implements Node and stores the\n * list of children in the children property, sorted by child name.\n *\n * @constructor\n * @implements {Node}\n */\nvar ChildrenNode = /** @class */ (function () {\n /**\n *\n * @param {!SortedMap.} children_ List of children\n * of this node..\n * @param {?Node} priorityNode_ The priority of this node (as a snapshot node).\n * @param {!IndexMap} indexMap_\n */\n function ChildrenNode(children_, priorityNode_, indexMap_) {\n this.children_ = children_;\n this.priorityNode_ = priorityNode_;\n this.indexMap_ = indexMap_;\n this.lazyHash_ = null;\n /**\n * Note: The only reason we allow null priority is for EMPTY_NODE, since we can't use\n * EMPTY_NODE as the priority of EMPTY_NODE. We might want to consider making EMPTY_NODE its own\n * class instead of an empty ChildrenNode.\n */\n if (this.priorityNode_) {\n snap_1.validatePriorityNode(this.priorityNode_);\n }\n if (this.children_.isEmpty()) {\n util_1.assert(!this.priorityNode_ || this.priorityNode_.isEmpty(), 'An empty node cannot have a priority');\n }\n }\n Object.defineProperty(ChildrenNode, \"EMPTY_NODE\", {\n get: function () {\n return (EMPTY_NODE ||\n (EMPTY_NODE = new ChildrenNode(new SortedMap_1.SortedMap(comparators_1.NAME_COMPARATOR), null, IndexMap_1.IndexMap.Default)));\n },\n enumerable: true,\n configurable: true\n });\n /** @inheritDoc */\n ChildrenNode.prototype.isLeafNode = function () {\n return false;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getPriority = function () {\n return this.priorityNode_ || EMPTY_NODE;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updatePriority = function (newPriorityNode) {\n if (this.children_.isEmpty()) {\n // Don't allow priorities on empty nodes\n return this;\n }\n else {\n return new ChildrenNode(this.children_, newPriorityNode, this.indexMap_);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getImmediateChild = function (childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.getPriority();\n }\n else {\n var child = this.children_.get(childName);\n return child === null ? EMPTY_NODE : child;\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getChild = function (path) {\n var front = path.getFront();\n if (front === null)\n return this;\n return this.getImmediateChild(front).getChild(path.popFront());\n };\n /** @inheritDoc */\n ChildrenNode.prototype.hasChild = function (childName) {\n return this.children_.get(childName) !== null;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updateImmediateChild = function (childName, newChildNode) {\n util_1.assert(newChildNode, 'We should always be passing snapshot nodes');\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else {\n var namedNode = new Node_1.NamedNode(childName, newChildNode);\n var newChildren = void 0, newIndexMap = void 0, newPriority = void 0;\n if (newChildNode.isEmpty()) {\n newChildren = this.children_.remove(childName);\n newIndexMap = this.indexMap_.removeFromIndexes(namedNode, this.children_);\n }\n else {\n newChildren = this.children_.insert(childName, newChildNode);\n newIndexMap = this.indexMap_.addToIndexes(namedNode, this.children_);\n }\n newPriority = newChildren.isEmpty() ? EMPTY_NODE : this.priorityNode_;\n return new ChildrenNode(newChildren, newPriority, newIndexMap);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.updateChild = function (path, newChildNode) {\n var front = path.getFront();\n if (front === null) {\n return newChildNode;\n }\n else {\n util_1.assert(path.getFront() !== '.priority' || path.getLength() === 1, '.priority must be the last token in a path');\n var newImmediateChild = this.getImmediateChild(front).updateChild(path.popFront(), newChildNode);\n return this.updateImmediateChild(front, newImmediateChild);\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.isEmpty = function () {\n return this.children_.isEmpty();\n };\n /** @inheritDoc */\n ChildrenNode.prototype.numChildren = function () {\n return this.children_.count();\n };\n /** @inheritDoc */\n ChildrenNode.prototype.val = function (exportFormat) {\n if (this.isEmpty())\n return null;\n var obj = {};\n var numKeys = 0, maxKey = 0, allIntegerKeys = true;\n this.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n obj[key] = childNode.val(exportFormat);\n numKeys++;\n if (allIntegerKeys && ChildrenNode.INTEGER_REGEXP_.test(key)) {\n maxKey = Math.max(maxKey, Number(key));\n }\n else {\n allIntegerKeys = false;\n }\n });\n if (!exportFormat && allIntegerKeys && maxKey < 2 * numKeys) {\n // convert to array.\n var array = [];\n for (var key in obj)\n array[key] = obj[key];\n return array;\n }\n else {\n if (exportFormat && !this.getPriority().isEmpty()) {\n obj['.priority'] = this.getPriority().val();\n }\n return obj;\n }\n };\n /** @inheritDoc */\n ChildrenNode.prototype.hash = function () {\n if (this.lazyHash_ === null) {\n var toHash_1 = '';\n if (!this.getPriority().isEmpty())\n toHash_1 +=\n 'priority:' +\n snap_1.priorityHashText(this.getPriority().val()) +\n ':';\n this.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n var childHash = childNode.hash();\n if (childHash !== '')\n toHash_1 += ':' + key + ':' + childHash;\n });\n this.lazyHash_ = toHash_1 === '' ? '' : util_2.sha1(toHash_1);\n }\n return this.lazyHash_;\n };\n /** @inheritDoc */\n ChildrenNode.prototype.getPredecessorChildName = function (childName, childNode, index) {\n var idx = this.resolveIndex_(index);\n if (idx) {\n var predecessor = idx.getPredecessorKey(new Node_1.NamedNode(childName, childNode));\n return predecessor ? predecessor.name : null;\n }\n else {\n return this.children_.getPredecessorKey(childName);\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?string}\n */\n ChildrenNode.prototype.getFirstChildName = function (indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n var minKey = idx.minKey();\n return minKey && minKey.name;\n }\n else {\n return this.children_.minKey();\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?NamedNode}\n */\n ChildrenNode.prototype.getFirstChild = function (indexDefinition) {\n var minKey = this.getFirstChildName(indexDefinition);\n if (minKey) {\n return new Node_1.NamedNode(minKey, this.children_.get(minKey));\n }\n else {\n return null;\n }\n };\n /**\n * Given an index, return the key name of the largest value we have, according to that index\n * @param {!Index} indexDefinition\n * @return {?string}\n */\n ChildrenNode.prototype.getLastChildName = function (indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n var maxKey = idx.maxKey();\n return maxKey && maxKey.name;\n }\n else {\n return this.children_.maxKey();\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {?NamedNode}\n */\n ChildrenNode.prototype.getLastChild = function (indexDefinition) {\n var maxKey = this.getLastChildName(indexDefinition);\n if (maxKey) {\n return new Node_1.NamedNode(maxKey, this.children_.get(maxKey));\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.forEachChild = function (index, action) {\n var idx = this.resolveIndex_(index);\n if (idx) {\n return idx.inorderTraversal(function (wrappedNode) {\n return action(wrappedNode.name, wrappedNode.node);\n });\n }\n else {\n return this.children_.inorderTraversal(action);\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {SortedMapIterator}\n */\n ChildrenNode.prototype.getIterator = function (indexDefinition) {\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\n };\n /**\n *\n * @param {!NamedNode} startPost\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getIteratorFrom = function (startPost, indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getIteratorFrom(startPost, function (key) { return key; });\n }\n else {\n var iterator = this.children_.getIteratorFrom(startPost.name, Node_1.NamedNode.Wrap);\n var next = iterator.peek();\n while (next != null && indexDefinition.compare(next, startPost) < 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getReverseIterator = function (indexDefinition) {\n return this.getReverseIteratorFrom(indexDefinition.maxPost(), indexDefinition);\n };\n /**\n * @param {!NamedNode} endPost\n * @param {!Index} indexDefinition\n * @return {!SortedMapIterator}\n */\n ChildrenNode.prototype.getReverseIteratorFrom = function (endPost, indexDefinition) {\n var idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getReverseIteratorFrom(endPost, function (key) {\n return key;\n });\n }\n else {\n var iterator = this.children_.getReverseIteratorFrom(endPost.name, Node_1.NamedNode.Wrap);\n var next = iterator.peek();\n while (next != null && indexDefinition.compare(next, endPost) > 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.compareTo = function (other) {\n if (this.isEmpty()) {\n if (other.isEmpty()) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (other.isLeafNode() || other.isEmpty()) {\n return 1;\n }\n else if (other === exports.MAX_NODE) {\n return -1;\n }\n else {\n // Must be another node with children.\n return 0;\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.withIndex = function (indexDefinition) {\n if (indexDefinition === KeyIndex_1.KEY_INDEX ||\n this.indexMap_.hasIndex(indexDefinition)) {\n return this;\n }\n else {\n var newIndexMap = this.indexMap_.addIndex(indexDefinition, this.children_);\n return new ChildrenNode(this.children_, this.priorityNode_, newIndexMap);\n }\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.isIndexed = function (index) {\n return index === KeyIndex_1.KEY_INDEX || this.indexMap_.hasIndex(index);\n };\n /**\n * @inheritDoc\n */\n ChildrenNode.prototype.equals = function (other) {\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n return false;\n }\n else {\n var otherChildrenNode = other;\n if (!this.getPriority().equals(otherChildrenNode.getPriority())) {\n return false;\n }\n else if (this.children_.count() === otherChildrenNode.children_.count()) {\n var thisIter = this.getIterator(PriorityIndex_1.PRIORITY_INDEX);\n var otherIter = otherChildrenNode.getIterator(PriorityIndex_1.PRIORITY_INDEX);\n var thisCurrent = thisIter.getNext();\n var otherCurrent = otherIter.getNext();\n while (thisCurrent && otherCurrent) {\n if (thisCurrent.name !== otherCurrent.name ||\n !thisCurrent.node.equals(otherCurrent.node)) {\n return false;\n }\n thisCurrent = thisIter.getNext();\n otherCurrent = otherIter.getNext();\n }\n return thisCurrent === null && otherCurrent === null;\n }\n else {\n return false;\n }\n }\n };\n /**\n * Returns a SortedMap ordered by index, or null if the default (by-key) ordering can be used\n * instead.\n *\n * @private\n * @param {!Index} indexDefinition\n * @return {?SortedMap.}\n */\n ChildrenNode.prototype.resolveIndex_ = function (indexDefinition) {\n if (indexDefinition === KeyIndex_1.KEY_INDEX) {\n return null;\n }\n else {\n return this.indexMap_.get(indexDefinition.toString());\n }\n };\n /**\n * @private\n * @type {RegExp}\n */\n ChildrenNode.INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\n return ChildrenNode;\n}());\nexports.ChildrenNode = ChildrenNode;\n/**\n * @constructor\n * @extends {ChildrenNode}\n * @private\n */\nvar MaxNode = /** @class */ (function (_super) {\n __extends(MaxNode, _super);\n function MaxNode() {\n return _super.call(this, new SortedMap_1.SortedMap(comparators_1.NAME_COMPARATOR), ChildrenNode.EMPTY_NODE, IndexMap_1.IndexMap.Default) || this;\n }\n MaxNode.prototype.compareTo = function (other) {\n if (other === this) {\n return 0;\n }\n else {\n return 1;\n }\n };\n MaxNode.prototype.equals = function (other) {\n // Not that we every compare it, but MAX_NODE is only ever equal to itself\n return other === this;\n };\n MaxNode.prototype.getPriority = function () {\n return this;\n };\n MaxNode.prototype.getImmediateChild = function (childName) {\n return ChildrenNode.EMPTY_NODE;\n };\n MaxNode.prototype.isEmpty = function () {\n return false;\n };\n return MaxNode;\n}(ChildrenNode));\nexports.MaxNode = MaxNode;\n/**\n * Marker that will sort higher than any other snapshot.\n * @type {!MAX_NODE}\n * @const\n */\nexports.MAX_NODE = new MaxNode();\nObject.defineProperties(Node_1.NamedNode, {\n MIN: {\n value: new Node_1.NamedNode(util_2.MIN_NAME, ChildrenNode.EMPTY_NODE)\n },\n MAX: {\n value: new Node_1.NamedNode(util_2.MAX_NAME, exports.MAX_NODE)\n }\n});\n/**\n * Reference Extensions\n */\nKeyIndex_1.KeyIndex.__EMPTY_NODE = ChildrenNode.EMPTY_NODE;\nLeafNode_1.LeafNode.__childrenNodeConstructor = ChildrenNode;\nsnap_1.setMaxNode(exports.MAX_NODE);\nPriorityIndex_1.setMaxNode(exports.MAX_NODE);\n\n//# sourceMappingURL=ChildrenNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/ChildrenNode.js\n// module id = 4\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n *\n * @param {!string} name\n * @param {!Node} node\n * @constructor\n * @struct\n */\nvar NamedNode = /** @class */ (function () {\n function NamedNode(name, node) {\n this.name = name;\n this.node = node;\n }\n /**\n *\n * @param {!string} name\n * @param {!Node} node\n * @return {NamedNode}\n */\n NamedNode.Wrap = function (name, node) {\n return new NamedNode(name, node);\n };\n return NamedNode;\n}());\nexports.NamedNode = NamedNode;\n\n//# sourceMappingURL=Node.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/Node.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"./Path\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\n/**\n * True for invalid Firebase keys\n * @type {RegExp}\n * @private\n */\nexports.INVALID_KEY_REGEX_ = /[\\[\\].#$\\/\\u0000-\\u001F\\u007F]/;\n/**\n * True for invalid Firebase paths.\n * Allows '/' in paths.\n * @type {RegExp}\n * @private\n */\nexports.INVALID_PATH_REGEX_ = /[\\[\\].#$\\u0000-\\u001F\\u007F]/;\n/**\n * Maximum number of characters to allow in leaf value\n * @type {number}\n * @private\n */\nexports.MAX_LEAF_SIZE_ = 10 * 1024 * 1024;\n/**\n * @param {*} key\n * @return {boolean}\n */\nexports.isValidKey = function (key) {\n return (typeof key === 'string' && key.length !== 0 && !exports.INVALID_KEY_REGEX_.test(key));\n};\n/**\n * @param {string} pathString\n * @return {boolean}\n */\nexports.isValidPathString = function (pathString) {\n return (typeof pathString === 'string' &&\n pathString.length !== 0 &&\n !exports.INVALID_PATH_REGEX_.test(pathString));\n};\n/**\n * @param {string} pathString\n * @return {boolean}\n */\nexports.isValidRootPathString = function (pathString) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n return exports.isValidPathString(pathString);\n};\n/**\n * @param {*} priority\n * @return {boolean}\n */\nexports.isValidPriority = function (priority) {\n return (priority === null ||\n typeof priority === 'string' ||\n (typeof priority === 'number' && !util_2.isInvalidJSONNumber(priority)) ||\n (priority && typeof priority === 'object' && util_1.contains(priority, '.sv')));\n};\n/**\n * Pre-validate a datum passed as an argument to Firebase function.\n *\n * @param {string} fnName\n * @param {number} argumentNumber\n * @param {*} data\n * @param {!Path} path\n * @param {boolean} optional\n */\nexports.validateFirebaseDataArg = function (fnName, argumentNumber, data, path, optional) {\n if (optional && data === undefined)\n return;\n exports.validateFirebaseData(util_3.errorPrefix(fnName, argumentNumber, optional), data, path);\n};\n/**\n * Validate a data object client-side before sending to server.\n *\n * @param {string} errorPrefix\n * @param {*} data\n * @param {!Path|!ValidationPath} path_\n */\nexports.validateFirebaseData = function (errorPrefix, data, path_) {\n var path = path_ instanceof Path_1.Path ? new Path_1.ValidationPath(path_, errorPrefix) : path_;\n if (data === undefined) {\n throw new Error(errorPrefix + 'contains undefined ' + path.toErrorString());\n }\n if (typeof data === 'function') {\n throw new Error(errorPrefix +\n 'contains a function ' +\n path.toErrorString() +\n ' with contents = ' +\n data.toString());\n }\n if (util_2.isInvalidJSONNumber(data)) {\n throw new Error(errorPrefix + 'contains ' + data.toString() + ' ' + path.toErrorString());\n }\n // Check max leaf size, but try to avoid the utf8 conversion if we can.\n if (typeof data === 'string' &&\n data.length > exports.MAX_LEAF_SIZE_ / 3 &&\n util_4.stringLength(data) > exports.MAX_LEAF_SIZE_) {\n throw new Error(errorPrefix +\n 'contains a string greater than ' +\n exports.MAX_LEAF_SIZE_ +\n ' utf8 bytes ' +\n path.toErrorString() +\n \" ('\" +\n data.substring(0, 50) +\n \"...')\");\n }\n // TODO = Perf = Consider combining the recursive validation of keys into NodeFromJSON\n // to save extra walking of large objects.\n if (data && typeof data === 'object') {\n var hasDotValue_1 = false, hasActualChild_1 = false;\n util_1.forEach(data, function (key, value) {\n if (key === '.value') {\n hasDotValue_1 = true;\n }\n else if (key !== '.priority' && key !== '.sv') {\n hasActualChild_1 = true;\n if (!exports.isValidKey(key)) {\n throw new Error(errorPrefix +\n ' contains an invalid key (' +\n key +\n ') ' +\n path.toErrorString() +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n path.push(key);\n exports.validateFirebaseData(errorPrefix, value, path);\n path.pop();\n });\n if (hasDotValue_1 && hasActualChild_1) {\n throw new Error(errorPrefix +\n ' contains \".value\" child ' +\n path.toErrorString() +\n ' in addition to actual children.');\n }\n }\n};\n/**\n * Pre-validate paths passed in the firebase function.\n *\n * @param {string} errorPrefix\n * @param {Array} mergePaths\n */\nexports.validateFirebaseMergePaths = function (errorPrefix, mergePaths) {\n var i, curPath;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n var keys = curPath.slice();\n for (var j = 0; j < keys.length; j++) {\n if (keys[j] === '.priority' && j === keys.length - 1) {\n // .priority is OK\n }\n else if (!exports.isValidKey(keys[j])) {\n throw new Error(errorPrefix +\n 'contains an invalid key (' +\n keys[j] +\n ') in path ' +\n curPath.toString() +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n }\n // Check that update keys are not descendants of each other.\n // We rely on the property that sorting guarantees that ancestors come\n // right before descendants.\n mergePaths.sort(Path_1.Path.comparePaths);\n var prevPath = null;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n if (prevPath !== null && prevPath.contains(curPath)) {\n throw new Error(errorPrefix +\n 'contains a path ' +\n prevPath.toString() +\n ' that is ancestor of another path ' +\n curPath.toString());\n }\n prevPath = curPath;\n }\n};\n/**\n * pre-validate an object passed as an argument to firebase function (\n * must be an object - e.g. for firebase.update()).\n *\n * @param {string} fnName\n * @param {number} argumentNumber\n * @param {*} data\n * @param {!Path} path\n * @param {boolean} optional\n */\nexports.validateFirebaseMergeDataArg = function (fnName, argumentNumber, data, path, optional) {\n if (optional && data === undefined)\n return;\n var errorPrefix = util_3.errorPrefix(fnName, argumentNumber, optional);\n if (!(data && typeof data === 'object') || Array.isArray(data)) {\n throw new Error(errorPrefix + ' must be an object containing the children to replace.');\n }\n var mergePaths = [];\n util_1.forEach(data, function (key, value) {\n var curPath = new Path_1.Path(key);\n exports.validateFirebaseData(errorPrefix, value, path.child(curPath));\n if (curPath.getBack() === '.priority') {\n if (!exports.isValidPriority(value)) {\n throw new Error(errorPrefix +\n \"contains an invalid value for '\" +\n curPath.toString() +\n \"', which must be a valid \" +\n 'Firebase priority (a string, finite number, server value, or null).');\n }\n }\n mergePaths.push(curPath);\n });\n exports.validateFirebaseMergePaths(errorPrefix, mergePaths);\n};\nexports.validatePriority = function (fnName, argumentNumber, priority, optional) {\n if (optional && priority === undefined)\n return;\n if (util_2.isInvalidJSONNumber(priority))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'is ' +\n priority.toString() +\n ', but must be a valid Firebase priority (a string, finite number, ' +\n 'server value, or null).');\n // Special case to allow importing data with a .sv.\n if (!exports.isValidPriority(priority))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid Firebase priority ' +\n '(a string, finite number, server value, or null).');\n};\nexports.validateEventType = function (fnName, argumentNumber, eventType, optional) {\n if (optional && eventType === undefined)\n return;\n switch (eventType) {\n case 'value':\n case 'child_added':\n case 'child_removed':\n case 'child_changed':\n case 'child_moved':\n break;\n default:\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\n '\"child_changed\", or \"child_moved\".');\n }\n};\nexports.validateKey = function (fnName, argumentNumber, key, optional) {\n if (optional && key === undefined)\n return;\n if (!exports.isValidKey(key))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'was an invalid key = \"' +\n key +\n '\". Firebase keys must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\").');\n};\nexports.validatePathString = function (fnName, argumentNumber, pathString, optional) {\n if (optional && pathString === undefined)\n return;\n if (!exports.isValidPathString(pathString))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'was an invalid path = \"' +\n pathString +\n '\". Paths must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\"');\n};\nexports.validateRootPathString = function (fnName, argumentNumber, pathString, optional) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n exports.validatePathString(fnName, argumentNumber, pathString, optional);\n};\nexports.validateWritablePath = function (fnName, path) {\n if (path.getFront() === '.info') {\n throw new Error(fnName + \" failed = Can't modify data under /.info/\");\n }\n};\nexports.validateUrl = function (fnName, argumentNumber, parsedUrl) {\n // TODO = Validate server better.\n var pathString = parsedUrl.path.toString();\n if (!(typeof parsedUrl.repoInfo.host === 'string') ||\n parsedUrl.repoInfo.host.length === 0 ||\n !exports.isValidKey(parsedUrl.repoInfo.namespace) ||\n (pathString.length !== 0 && !exports.isValidRootPathString(pathString))) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, false) +\n 'must be a valid firebase URL and ' +\n 'the path can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\".');\n }\n};\nexports.validateCredential = function (fnName, argumentNumber, cred, optional) {\n if (optional && cred === undefined)\n return;\n if (!(typeof cred === 'string'))\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid credential (a string).');\n};\nexports.validateBoolean = function (fnName, argumentNumber, bool, optional) {\n if (optional && bool === undefined)\n return;\n if (typeof bool !== 'boolean')\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) + 'must be a boolean.');\n};\nexports.validateString = function (fnName, argumentNumber, string, optional) {\n if (optional && string === undefined)\n return;\n if (!(typeof string === 'string')) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid string.');\n }\n};\nexports.validateObject = function (fnName, argumentNumber, obj, optional) {\n if (optional && obj === undefined)\n return;\n if (!(obj && typeof obj === 'object') || obj === null) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must be a valid object.');\n }\n};\nexports.validateObjectContainsKey = function (fnName, argumentNumber, obj, key, optional, opt_type) {\n var objectContainsKey = obj && typeof obj === 'object' && util_1.contains(obj, key);\n if (!objectContainsKey) {\n if (optional) {\n return;\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must contain the key \"' +\n key +\n '\"');\n }\n }\n if (opt_type) {\n var val = util_1.safeGet(obj, key);\n if ((opt_type === 'number' && !(typeof val === 'number')) ||\n (opt_type === 'string' && !(typeof val === 'string')) ||\n (opt_type === 'boolean' && !(typeof val === 'boolean')) ||\n (opt_type === 'function' && !(typeof val === 'function')) ||\n (opt_type === 'object' && !(typeof val === 'object') && val)) {\n if (optional) {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'contains invalid value for key \"' +\n key +\n '\" (must be of type \"' +\n opt_type +\n '\")');\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, argumentNumber, optional) +\n 'must contain the key \"' +\n key +\n '\" with type \"' +\n opt_type +\n '\"');\n }\n }\n }\n};\n\n//# sourceMappingURL=validation.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/validation.js\n// module id = 7\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n *\n * @enum\n */\nvar OperationType;\n(function (OperationType) {\n OperationType[OperationType[\"OVERWRITE\"] = 0] = \"OVERWRITE\";\n OperationType[OperationType[\"MERGE\"] = 1] = \"MERGE\";\n OperationType[OperationType[\"ACK_USER_WRITE\"] = 2] = \"ACK_USER_WRITE\";\n OperationType[OperationType[\"LISTEN_COMPLETE\"] = 3] = \"LISTEN_COMPLETE\";\n})(OperationType = exports.OperationType || (exports.OperationType = {}));\n/**\n * @param {boolean} fromUser\n * @param {boolean} fromServer\n * @param {?string} queryId\n * @param {boolean} tagged\n * @constructor\n */\nvar OperationSource = /** @class */ (function () {\n function OperationSource(fromUser, fromServer, queryId, tagged) {\n this.fromUser = fromUser;\n this.fromServer = fromServer;\n this.queryId = queryId;\n this.tagged = tagged;\n util_1.assert(!tagged || fromServer, 'Tagged queries must be from server.');\n }\n /**\n * @const\n * @type {!OperationSource}\n */\n OperationSource.User = new OperationSource(\n /*fromUser=*/ true, false, null, \n /*tagged=*/ false);\n /**\n * @const\n * @type {!OperationSource}\n */\n OperationSource.Server = new OperationSource(false, \n /*fromServer=*/ true, null, \n /*tagged=*/ false);\n /**\n * @param {string} queryId\n * @return {!OperationSource}\n */\n OperationSource.forServerTaggedQuery = function (queryId) {\n return new OperationSource(false, \n /*fromServer=*/ true, queryId, \n /*tagged=*/ true);\n };\n return OperationSource;\n}());\nexports.OperationSource = OperationSource;\n\n//# sourceMappingURL=Operation.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Operation.js\n// module id = 8\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @constructor\n * @struct\n * @param {!string} type The event type\n * @param {!Node} snapshotNode The data\n * @param {string=} childName The name for this child, if it's a child event\n * @param {Node=} oldSnap Used for intermediate processing of child changed events\n * @param {string=} prevName The name for the previous child, if applicable\n */\nvar Change = /** @class */ (function () {\n function Change(type, snapshotNode, childName, oldSnap, prevName) {\n this.type = type;\n this.snapshotNode = snapshotNode;\n this.childName = childName;\n this.oldSnap = oldSnap;\n this.prevName = prevName;\n }\n /**\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.valueChange = function (snapshot) {\n return new Change(Change.VALUE, snapshot);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childAddedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_ADDED, snapshot, childKey);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childRemovedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_REMOVED, snapshot, childKey);\n };\n /**\n * @param {string} childKey\n * @param {!Node} newSnapshot\n * @param {!Node} oldSnapshot\n * @return {!Change}\n */\n Change.childChangedChange = function (childKey, newSnapshot, oldSnapshot) {\n return new Change(Change.CHILD_CHANGED, newSnapshot, childKey, oldSnapshot);\n };\n /**\n * @param {string} childKey\n * @param {!Node} snapshot\n * @return {!Change}\n */\n Change.childMovedChange = function (childKey, snapshot) {\n return new Change(Change.CHILD_MOVED, snapshot, childKey);\n };\n //event types\n /** Event type for a child added */\n Change.CHILD_ADDED = 'child_added';\n /** Event type for a child removed */\n Change.CHILD_REMOVED = 'child_removed';\n /** Event type for a child changed */\n Change.CHILD_CHANGED = 'child_changed';\n /** Event type for a child moved */\n Change.CHILD_MOVED = 'child_moved';\n /** Event type for a value change */\n Change.VALUE = 'value';\n return Change;\n}());\nexports.Change = Change;\n\n//# sourceMappingURL=Change.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/Change.js\n// module id = 9\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Index_1 = require(\"./Index\");\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\nvar util_2 = require(\"@firebase/util\");\nvar __EMPTY_NODE;\nvar KeyIndex = /** @class */ (function (_super) {\n __extends(KeyIndex, _super);\n function KeyIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(KeyIndex, \"__EMPTY_NODE\", {\n get: function () {\n return __EMPTY_NODE;\n },\n set: function (val) {\n __EMPTY_NODE = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.compare = function (a, b) {\n return util_1.nameCompare(a.name, b.name);\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.isDefinedOn = function (node) {\n // We could probably return true here (since every node has a key), but it's never called\n // so just leaving unimplemented for now.\n throw util_2.assertionError('KeyIndex.isDefinedOn not expected to be called.');\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return false; // The key for a node never changes.\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n KeyIndex.prototype.maxPost = function () {\n // TODO: This should really be created once and cached in a static property, but\n // NamedNode isn't defined yet, so I can't use it in a static. Bleh.\n return new Node_1.NamedNode(util_1.MAX_NAME, __EMPTY_NODE);\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n KeyIndex.prototype.makePost = function (indexValue, name) {\n util_2.assert(typeof indexValue === 'string', 'KeyIndex indexValue must always be a string.');\n // We just use empty node, but it'll never be compared, since our comparator only looks at name.\n return new Node_1.NamedNode(indexValue, __EMPTY_NODE);\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n KeyIndex.prototype.toString = function () {\n return '.key';\n };\n return KeyIndex;\n}(Index_1.Index));\nexports.KeyIndex = KeyIndex;\nexports.KEY_INDEX = new KeyIndex();\n\n//# sourceMappingURL=KeyIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/KeyIndex.js\n// module id = 10\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"./ChildrenNode\");\nvar LeafNode_1 = require(\"./LeafNode\");\nvar Node_1 = require(\"./Node\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar childSet_1 = require(\"./childSet\");\nvar comparators_1 = require(\"./comparators\");\nvar IndexMap_1 = require(\"./IndexMap\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar USE_HINZE = true;\n/**\n * Constructs a snapshot node representing the passed JSON and returns it.\n * @param {*} json JSON to create a node for.\n * @param {?string|?number=} priority Optional priority to use. This will be ignored if the\n * passed JSON contains a .priority property.\n * @return {!Node}\n */\nfunction nodeFromJSON(json, priority) {\n if (priority === void 0) { priority = null; }\n if (json === null) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (typeof json === 'object' && '.priority' in json) {\n priority = json['.priority'];\n }\n util_2.assert(priority === null ||\n typeof priority === 'string' ||\n typeof priority === 'number' ||\n (typeof priority === 'object' && '.sv' in priority), 'Invalid priority type found: ' + typeof priority);\n if (typeof json === 'object' && '.value' in json && json['.value'] !== null) {\n json = json['.value'];\n }\n // Valid leaf nodes include non-objects or server-value wrapper objects\n if (typeof json !== 'object' || '.sv' in json) {\n var jsonLeaf = json;\n return new LeafNode_1.LeafNode(jsonLeaf, nodeFromJSON(priority));\n }\n if (!(json instanceof Array) && USE_HINZE) {\n var children_1 = [];\n var childrenHavePriority_1 = false;\n var hinzeJsonObj_1 = json;\n util_1.forEach(hinzeJsonObj_1, function (key, child) {\n if (typeof key !== 'string' || key.substring(0, 1) !== '.') {\n // Ignore metadata nodes\n var childNode = nodeFromJSON(hinzeJsonObj_1[key]);\n if (!childNode.isEmpty()) {\n childrenHavePriority_1 =\n childrenHavePriority_1 || !childNode.getPriority().isEmpty();\n children_1.push(new Node_1.NamedNode(key, childNode));\n }\n }\n });\n if (children_1.length == 0) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var childSet = childSet_1.buildChildSet(children_1, comparators_1.NAME_ONLY_COMPARATOR, function (namedNode) { return namedNode.name; }, comparators_1.NAME_COMPARATOR);\n if (childrenHavePriority_1) {\n var sortedChildSet = childSet_1.buildChildSet(children_1, PriorityIndex_1.PRIORITY_INDEX.getCompare());\n return new ChildrenNode_1.ChildrenNode(childSet, nodeFromJSON(priority), new IndexMap_1.IndexMap({ '.priority': sortedChildSet }, { '.priority': PriorityIndex_1.PRIORITY_INDEX }));\n }\n else {\n return new ChildrenNode_1.ChildrenNode(childSet, nodeFromJSON(priority), IndexMap_1.IndexMap.Default);\n }\n }\n else {\n var node_1 = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var jsonObj_1 = json;\n util_1.forEach(jsonObj_1, function (key, childData) {\n if (util_1.contains(jsonObj_1, key)) {\n if (key.substring(0, 1) !== '.') {\n // ignore metadata nodes.\n var childNode = nodeFromJSON(childData);\n if (childNode.isLeafNode() || !childNode.isEmpty())\n node_1 = node_1.updateImmediateChild(key, childNode);\n }\n }\n });\n return node_1.updatePriority(nodeFromJSON(priority));\n }\n}\nexports.nodeFromJSON = nodeFromJSON;\nPriorityIndex_1.setNodeFromJSON(nodeFromJSON);\n\n//# sourceMappingURL=nodeFromJSON.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/nodeFromJSON.js\n// module id = 11\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DOMStorageWrapper_1 = require(\"./DOMStorageWrapper\");\nvar MemoryStorage_1 = require(\"./MemoryStorage\");\n/**\n * Helper to create a DOMStorageWrapper or else fall back to MemoryStorage.\n * TODO: Once MemoryStorage and DOMStorageWrapper have a shared interface this method annotation should change\n * to reflect this type\n *\n * @param {string} domStorageName Name of the underlying storage object\n * (e.g. 'localStorage' or 'sessionStorage').\n * @return {?} Turning off type information until a common interface is defined.\n */\nvar createStoragefor = function (domStorageName) {\n try {\n // NOTE: just accessing \"localStorage\" or \"window['localStorage']\" may throw a security exception,\n // so it must be inside the try/catch.\n if (typeof window !== 'undefined' &&\n typeof window[domStorageName] !== 'undefined') {\n // Need to test cache. Just because it's here doesn't mean it works\n var domStorage = window[domStorageName];\n domStorage.setItem('firebase:sentinel', 'cache');\n domStorage.removeItem('firebase:sentinel');\n return new DOMStorageWrapper_1.DOMStorageWrapper(domStorage);\n }\n }\n catch (e) { }\n // Failed to create wrapper. Just return in-memory storage.\n // TODO: log?\n return new MemoryStorage_1.MemoryStorage();\n};\n/** A storage object that lasts across sessions */\nexports.PersistentStorage = createStoragefor('localStorage');\n/** A storage object that only lasts one session */\nexports.SessionStorage = createStoragefor('sessionStorage');\n\n//# sourceMappingURL=storage.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/storage.js\n// module id = 12\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PROTOCOL_VERSION = '5';\nexports.VERSION_PARAM = 'v';\nexports.TRANSPORT_SESSION_PARAM = 's';\nexports.REFERER_PARAM = 'r';\nexports.FORGE_REF = 'f';\nexports.FORGE_DOMAIN = 'firebaseio.com';\nexports.LAST_SESSION_PARAM = 'ls';\nexports.WEBSOCKET = 'websocket';\nexports.LONG_POLLING = 'long_polling';\n\n//# sourceMappingURL=Constants.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/Constants.js\n// module id = 13\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\n/**\n *\n * @constructor\n */\nvar Index = /** @class */ (function () {\n function Index() {\n }\n /**\n * @return {function(!NamedNode, !NamedNode):number} A standalone comparison function for\n * this index\n */\n Index.prototype.getCompare = function () {\n return this.compare.bind(this);\n };\n /**\n * Given a before and after value for a node, determine if the indexed value has changed. Even if they are different,\n * it's possible that the changes are isolated to parts of the snapshot that are not indexed.\n *\n * @param {!Node} oldNode\n * @param {!Node} newNode\n * @return {boolean} True if the portion of the snapshot being indexed changed between oldNode and newNode\n */\n Index.prototype.indexedValueChanged = function (oldNode, newNode) {\n var oldWrapped = new Node_1.NamedNode(util_1.MIN_NAME, oldNode);\n var newWrapped = new Node_1.NamedNode(util_1.MIN_NAME, newNode);\n return this.compare(oldWrapped, newWrapped) !== 0;\n };\n /**\n * @return {!NamedNode} a node wrapper that will sort equal to or less than\n * any other node wrapper, using this index\n */\n Index.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n return Index;\n}());\nexports.Index = Index;\n\n//# sourceMappingURL=Index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/Index.js\n// module id = 14\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar snap_1 = require(\"./snap\");\nvar __childrenNodeConstructor;\n/**\n * LeafNode is a class for storing leaf nodes in a DataSnapshot. It\n * implements Node and stores the value of the node (a string,\n * number, or boolean) accessible via getValue().\n */\nvar LeafNode = /** @class */ (function () {\n /**\n * @implements {Node}\n * @param {!(string|number|boolean|Object)} value_ The value to store in this leaf node.\n * The object type is possible in the event of a deferred value\n * @param {!Node=} priorityNode_ The priority of this node.\n */\n function LeafNode(value_, priorityNode_) {\n if (priorityNode_ === void 0) { priorityNode_ = LeafNode.__childrenNodeConstructor.EMPTY_NODE; }\n this.value_ = value_;\n this.priorityNode_ = priorityNode_;\n this.lazyHash_ = null;\n util_1.assert(this.value_ !== undefined && this.value_ !== null, \"LeafNode shouldn't be created with null/undefined value.\");\n snap_1.validatePriorityNode(this.priorityNode_);\n }\n Object.defineProperty(LeafNode, \"__childrenNodeConstructor\", {\n get: function () {\n return __childrenNodeConstructor;\n },\n set: function (val) {\n __childrenNodeConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /** @inheritDoc */\n LeafNode.prototype.isLeafNode = function () {\n return true;\n };\n /** @inheritDoc */\n LeafNode.prototype.getPriority = function () {\n return this.priorityNode_;\n };\n /** @inheritDoc */\n LeafNode.prototype.updatePriority = function (newPriorityNode) {\n return new LeafNode(this.value_, newPriorityNode);\n };\n /** @inheritDoc */\n LeafNode.prototype.getImmediateChild = function (childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.getChild = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else if (path.getFront() === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.hasChild = function () {\n return false;\n };\n /** @inheritDoc */\n LeafNode.prototype.getPredecessorChildName = function (childName, childNode) {\n return null;\n };\n /** @inheritDoc */\n LeafNode.prototype.updateImmediateChild = function (childName, newChildNode) {\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else if (newChildNode.isEmpty() && childName !== '.priority') {\n return this;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE\n .updateImmediateChild(childName, newChildNode)\n .updatePriority(this.priorityNode_);\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.updateChild = function (path, newChildNode) {\n var front = path.getFront();\n if (front === null) {\n return newChildNode;\n }\n else if (newChildNode.isEmpty() && front !== '.priority') {\n return this;\n }\n else {\n util_1.assert(front !== '.priority' || path.getLength() === 1, '.priority must be the last token in a path');\n return this.updateImmediateChild(front, LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(path.popFront(), newChildNode));\n }\n };\n /** @inheritDoc */\n LeafNode.prototype.isEmpty = function () {\n return false;\n };\n /** @inheritDoc */\n LeafNode.prototype.numChildren = function () {\n return 0;\n };\n /** @inheritDoc */\n LeafNode.prototype.forEachChild = function (index, action) {\n return false;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.val = function (exportFormat) {\n if (exportFormat && !this.getPriority().isEmpty())\n return {\n '.value': this.getValue(),\n '.priority': this.getPriority().val()\n };\n else\n return this.getValue();\n };\n /** @inheritDoc */\n LeafNode.prototype.hash = function () {\n if (this.lazyHash_ === null) {\n var toHash = '';\n if (!this.priorityNode_.isEmpty())\n toHash +=\n 'priority:' +\n snap_1.priorityHashText(this.priorityNode_.val()) +\n ':';\n var type = typeof this.value_;\n toHash += type + ':';\n if (type === 'number') {\n toHash += util_2.doubleToIEEE754String(this.value_);\n }\n else {\n toHash += this.value_;\n }\n this.lazyHash_ = util_2.sha1(toHash);\n }\n return this.lazyHash_;\n };\n /**\n * Returns the value of the leaf node.\n * @return {Object|string|number|boolean} The value of the node.\n */\n LeafNode.prototype.getValue = function () {\n return this.value_;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.compareTo = function (other) {\n if (other === LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\n return 1;\n }\n else if (other instanceof LeafNode.__childrenNodeConstructor) {\n return -1;\n }\n else {\n util_1.assert(other.isLeafNode(), 'Unknown node type');\n return this.compareToLeafNode_(other);\n }\n };\n /**\n * Comparison specifically for two leaf nodes\n * @param {!LeafNode} otherLeaf\n * @return {!number}\n * @private\n */\n LeafNode.prototype.compareToLeafNode_ = function (otherLeaf) {\n var otherLeafType = typeof otherLeaf.value_;\n var thisLeafType = typeof this.value_;\n var otherIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(otherLeafType);\n var thisIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(thisLeafType);\n util_1.assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\n util_1.assert(thisIndex >= 0, 'Unknown leaf type: ' + thisLeafType);\n if (otherIndex === thisIndex) {\n // Same type, compare values\n if (thisLeafType === 'object') {\n // Deferred value nodes are all equal, but we should also never get to this point...\n return 0;\n }\n else {\n // Note that this works because true > false, all others are number or string comparisons\n if (this.value_ < otherLeaf.value_) {\n return -1;\n }\n else if (this.value_ === otherLeaf.value_) {\n return 0;\n }\n else {\n return 1;\n }\n }\n }\n else {\n return thisIndex - otherIndex;\n }\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.withIndex = function () {\n return this;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.isIndexed = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LeafNode.prototype.equals = function (other) {\n /**\n * @inheritDoc\n */\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n var otherLeaf = other;\n return (this.value_ === otherLeaf.value_ &&\n this.priorityNode_.equals(otherLeaf.priorityNode_));\n }\n else {\n return false;\n }\n };\n /**\n * The sort order for comparing leaf nodes of different types. If two leaf nodes have\n * the same type, the comparison falls back to their value\n * @type {Array.}\n * @const\n */\n LeafNode.VALUE_TYPE_ORDER = ['object', 'boolean', 'number', 'string'];\n return LeafNode;\n}());\nexports.LeafNode = LeafNode;\n\n//# sourceMappingURL=LeafNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/LeafNode.js\n// module id = 15\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * An iterator over an LLRBNode.\n */\nvar SortedMapIterator = /** @class */ (function () {\n /**\n * @template K, V, T\n * @param {LLRBNode|LLRBEmptyNode} node Node to iterate.\n * @param {?K} startKey\n * @param {function(K, K): number} comparator\n * @param {boolean} isReverse_ Whether or not to iterate in reverse\n * @param {(function(K, V):T)=} resultGenerator_\n */\n function SortedMapIterator(node, startKey, comparator, isReverse_, resultGenerator_) {\n if (resultGenerator_ === void 0) { resultGenerator_ = null; }\n this.isReverse_ = isReverse_;\n this.resultGenerator_ = resultGenerator_;\n /** @private\n * @type {Array.}\n */\n this.nodeStack_ = [];\n var cmp = 1;\n while (!node.isEmpty()) {\n node = node;\n cmp = startKey ? comparator(node.key, startKey) : 1;\n // flip the comparison if we're going in reverse\n if (isReverse_)\n cmp *= -1;\n if (cmp < 0) {\n // This node is less than our start key. ignore it\n if (this.isReverse_) {\n node = node.left;\n }\n else {\n node = node.right;\n }\n }\n else if (cmp === 0) {\n // This node is exactly equal to our start key. Push it on the stack, but stop iterating;\n this.nodeStack_.push(node);\n break;\n }\n else {\n // This node is greater than our start key, add it to the stack and move to the next one\n this.nodeStack_.push(node);\n if (this.isReverse_) {\n node = node.right;\n }\n else {\n node = node.left;\n }\n }\n }\n }\n SortedMapIterator.prototype.getNext = function () {\n if (this.nodeStack_.length === 0)\n return null;\n var node = this.nodeStack_.pop();\n var result;\n if (this.resultGenerator_)\n result = this.resultGenerator_(node.key, node.value);\n else\n result = { key: node.key, value: node.value };\n if (this.isReverse_) {\n node = node.left;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.right;\n }\n }\n else {\n node = node.right;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.left;\n }\n }\n return result;\n };\n SortedMapIterator.prototype.hasNext = function () {\n return this.nodeStack_.length > 0;\n };\n SortedMapIterator.prototype.peek = function () {\n if (this.nodeStack_.length === 0)\n return null;\n var node = this.nodeStack_[this.nodeStack_.length - 1];\n if (this.resultGenerator_) {\n return this.resultGenerator_(node.key, node.value);\n }\n else {\n return { key: node.key, value: node.value };\n }\n };\n return SortedMapIterator;\n}());\nexports.SortedMapIterator = SortedMapIterator;\n/**\n * Represents a node in a Left-leaning Red-Black tree.\n */\nvar LLRBNode = /** @class */ (function () {\n /**\n * @template K, V\n * @param {!K} key Key associated with this node.\n * @param {!V} value Value associated with this node.\n * @param {?boolean} color Whether this node is red.\n * @param {?(LLRBNode|LLRBEmptyNode)=} left Left child.\n * @param {?(LLRBNode|LLRBEmptyNode)=} right Right child.\n */\n function LLRBNode(key, value, color, left, right) {\n this.key = key;\n this.value = value;\n this.color = color != null ? color : LLRBNode.RED;\n this.left =\n left != null ? left : SortedMap.EMPTY_NODE;\n this.right =\n right != null ? right : SortedMap.EMPTY_NODE;\n }\n /**\n * Returns a copy of the current node, optionally replacing pieces of it.\n *\n * @param {?K} key New key for the node, or null.\n * @param {?V} value New value for the node, or null.\n * @param {?boolean} color New color for the node, or null.\n * @param {?LLRBNode|LLRBEmptyNode} left New left child for the node, or null.\n * @param {?LLRBNode|LLRBEmptyNode} right New right child for the node, or null.\n * @return {!LLRBNode} The node copy.\n */\n LLRBNode.prototype.copy = function (key, value, color, left, right) {\n return new LLRBNode(key != null ? key : this.key, value != null ? value : this.value, color != null ? color : this.color, left != null ? left : this.left, right != null ? right : this.right);\n };\n /**\n * @return {number} The total number of nodes in the tree.\n */\n LLRBNode.prototype.count = function () {\n return this.left.count() + 1 + this.right.count();\n };\n /**\n * @return {boolean} True if the tree is empty.\n */\n LLRBNode.prototype.isEmpty = function () {\n return false;\n };\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V):*} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {*} The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n LLRBNode.prototype.inorderTraversal = function (action) {\n return (this.left.inorderTraversal(action) ||\n action(this.key, this.value) ||\n this.right.inorderTraversal(action));\n };\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param {function(!Object, !Object)} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {*} True if traversal was aborted.\n */\n LLRBNode.prototype.reverseTraversal = function (action) {\n return (this.right.reverseTraversal(action) ||\n action(this.key, this.value) ||\n this.left.reverseTraversal(action));\n };\n /**\n * @return {!Object} The minimum node in the tree.\n * @private\n */\n LLRBNode.prototype.min_ = function () {\n if (this.left.isEmpty()) {\n return this;\n }\n else {\n return this.left.min_();\n }\n };\n /**\n * @return {!K} The maximum key in the tree.\n */\n LLRBNode.prototype.minKey = function () {\n return this.min_().key;\n };\n /**\n * @return {!K} The maximum key in the tree.\n */\n LLRBNode.prototype.maxKey = function () {\n if (this.right.isEmpty()) {\n return this.key;\n }\n else {\n return this.right.maxKey();\n }\n };\n /**\n *\n * @param {!Object} key Key to insert.\n * @param {!Object} value Value to insert.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode} New tree, with the key/value added.\n */\n LLRBNode.prototype.insert = function (key, value, comparator) {\n var cmp, n;\n n = this;\n cmp = comparator(key, n.key);\n if (cmp < 0) {\n n = n.copy(null, null, null, n.left.insert(key, value, comparator), null);\n }\n else if (cmp === 0) {\n n = n.copy(null, value, null, null, null);\n }\n else {\n n = n.copy(null, null, null, null, n.right.insert(key, value, comparator));\n }\n return n.fixUp_();\n };\n /**\n * @private\n * @return {!LLRBNode|LLRBEmptyNode} New tree, with the minimum key removed.\n */\n LLRBNode.prototype.removeMin_ = function () {\n if (this.left.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n var n = this;\n if (!n.left.isRed_() && !n.left.left.isRed_())\n n = n.moveRedLeft_();\n n = n.copy(null, null, null, n.left.removeMin_(), null);\n return n.fixUp_();\n };\n /**\n * @param {!Object} key The key of the item to remove.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode|LLRBEmptyNode} New tree, with the specified item removed.\n */\n LLRBNode.prototype.remove = function (key, comparator) {\n var n, smallest;\n n = this;\n if (comparator(key, n.key) < 0) {\n if (!n.left.isEmpty() && !n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, n.left.remove(key, comparator), null);\n }\n else {\n if (n.left.isRed_())\n n = n.rotateRight_();\n if (!n.right.isEmpty() && !n.right.isRed_() && !n.right.left.isRed_()) {\n n = n.moveRedRight_();\n }\n if (comparator(key, n.key) === 0) {\n if (n.right.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n else {\n smallest = n.right.min_();\n n = n.copy(smallest.key, smallest.value, null, null, n.right.removeMin_());\n }\n }\n n = n.copy(null, null, null, null, n.right.remove(key, comparator));\n }\n return n.fixUp_();\n };\n /**\n * @private\n * @return {boolean} Whether this is a RED node.\n */\n LLRBNode.prototype.isRed_ = function () {\n return this.color;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree after performing any needed rotations.\n */\n LLRBNode.prototype.fixUp_ = function () {\n var n = this;\n if (n.right.isRed_() && !n.left.isRed_())\n n = n.rotateLeft_();\n if (n.left.isRed_() && n.left.left.isRed_())\n n = n.rotateRight_();\n if (n.left.isRed_() && n.right.isRed_())\n n = n.colorFlip_();\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after moveRedLeft.\n */\n LLRBNode.prototype.moveRedLeft_ = function () {\n var n = this.colorFlip_();\n if (n.right.left.isRed_()) {\n n = n.copy(null, null, null, null, n.right.rotateRight_());\n n = n.rotateLeft_();\n n = n.colorFlip_();\n }\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after moveRedRight.\n */\n LLRBNode.prototype.moveRedRight_ = function () {\n var n = this.colorFlip_();\n if (n.left.left.isRed_()) {\n n = n.rotateRight_();\n n = n.colorFlip_();\n }\n return n;\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after rotateLeft.\n */\n LLRBNode.prototype.rotateLeft_ = function () {\n var nl = this.copy(null, null, LLRBNode.RED, null, this.right.left);\n return this.right.copy(null, null, this.color, nl, null);\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after rotateRight.\n */\n LLRBNode.prototype.rotateRight_ = function () {\n var nr = this.copy(null, null, LLRBNode.RED, this.left.right, null);\n return this.left.copy(null, null, this.color, null, nr);\n };\n /**\n * @private\n * @return {!LLRBNode} New tree, after colorFlip.\n */\n LLRBNode.prototype.colorFlip_ = function () {\n var left = this.left.copy(null, null, !this.left.color, null, null);\n var right = this.right.copy(null, null, !this.right.color, null, null);\n return this.copy(null, null, !this.color, left, right);\n };\n /**\n * For testing.\n *\n * @private\n * @return {boolean} True if all is well.\n */\n LLRBNode.prototype.checkMaxDepth_ = function () {\n var blackDepth = this.check_();\n return Math.pow(2.0, blackDepth) <= this.count() + 1;\n };\n /**\n * @private\n * @return {number} Not sure what this returns exactly. :-).\n */\n LLRBNode.prototype.check_ = function () {\n var blackDepth;\n if (this.isRed_() && this.left.isRed_()) {\n throw new Error('Red node has red child(' + this.key + ',' + this.value + ')');\n }\n if (this.right.isRed_()) {\n throw new Error('Right child of (' + this.key + ',' + this.value + ') is red');\n }\n blackDepth = this.left.check_();\n if (blackDepth !== this.right.check_()) {\n throw new Error('Black depths differ');\n }\n else {\n return blackDepth + (this.isRed_() ? 0 : 1);\n }\n };\n LLRBNode.RED = true;\n LLRBNode.BLACK = false;\n return LLRBNode;\n}());\nexports.LLRBNode = LLRBNode;\n/**\n * Represents an empty node (a leaf node in the Red-Black Tree).\n */\nvar LLRBEmptyNode = /** @class */ (function () {\n function LLRBEmptyNode() {\n }\n /**\n * Returns a copy of the current node.\n *\n * @return {!LLRBEmptyNode} The node copy.\n */\n LLRBEmptyNode.prototype.copy = function (key, value, color, left, right) {\n return this;\n };\n /**\n * Returns a copy of the tree, with the specified key/value added.\n *\n * @param {!K} key Key to be added.\n * @param {!V} value Value to be added.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBNode} New tree, with item added.\n */\n LLRBEmptyNode.prototype.insert = function (key, value, comparator) {\n return new LLRBNode(key, value, null);\n };\n /**\n * Returns a copy of the tree, with the specified key removed.\n *\n * @param {!K} key The key to remove.\n * @param {Comparator} comparator Comparator.\n * @return {!LLRBEmptyNode} New tree, with item removed.\n */\n LLRBEmptyNode.prototype.remove = function (key, comparator) {\n return this;\n };\n /**\n * @return {number} The total number of nodes in the tree.\n */\n LLRBEmptyNode.prototype.count = function () {\n return 0;\n };\n /**\n * @return {boolean} True if the tree is empty.\n */\n LLRBEmptyNode.prototype.isEmpty = function () {\n return true;\n };\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V):*} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {boolean} True if traversal was aborted.\n */\n LLRBEmptyNode.prototype.inorderTraversal = function (action) {\n return false;\n };\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param {function(!K, !V)} action Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @return {boolean} True if traversal was aborted.\n */\n LLRBEmptyNode.prototype.reverseTraversal = function (action) {\n return false;\n };\n /**\n * @return {null}\n */\n LLRBEmptyNode.prototype.minKey = function () {\n return null;\n };\n /**\n * @return {null}\n */\n LLRBEmptyNode.prototype.maxKey = function () {\n return null;\n };\n /**\n * @private\n * @return {number} Not sure what this returns exactly. :-).\n */\n LLRBEmptyNode.prototype.check_ = function () {\n return 0;\n };\n /**\n * @private\n * @return {boolean} Whether this node is red.\n */\n LLRBEmptyNode.prototype.isRed_ = function () {\n return false;\n };\n return LLRBEmptyNode;\n}());\nexports.LLRBEmptyNode = LLRBEmptyNode;\n/**\n * An immutable sorted map implementation, based on a Left-leaning Red-Black\n * tree.\n */\nvar SortedMap = /** @class */ (function () {\n /**\n * @template K, V\n * @param {function(K, K):number} comparator_ Key comparator.\n * @param {LLRBNode=} root_ (Optional) Root node for the map.\n */\n function SortedMap(comparator_, root_) {\n if (root_ === void 0) { root_ = SortedMap.EMPTY_NODE; }\n this.comparator_ = comparator_;\n this.root_ = root_;\n }\n /**\n * Returns a copy of the map, with the specified key/value added or replaced.\n * (TODO: We should perhaps rename this method to 'put')\n *\n * @param {!K} key Key to be added.\n * @param {!V} value Value to be added.\n * @return {!SortedMap.} New map, with item added.\n */\n SortedMap.prototype.insert = function (key, value) {\n return new SortedMap(this.comparator_, this.root_\n .insert(key, value, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n };\n /**\n * Returns a copy of the map, with the specified key removed.\n *\n * @param {!K} key The key to remove.\n * @return {!SortedMap.} New map, with item removed.\n */\n SortedMap.prototype.remove = function (key) {\n return new SortedMap(this.comparator_, this.root_\n .remove(key, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n };\n /**\n * Returns the value of the node with the given key, or null.\n *\n * @param {!K} key The key to look up.\n * @return {?V} The value of the node with the given key, or null if the\n * key doesn't exist.\n */\n SortedMap.prototype.get = function (key) {\n var cmp;\n var node = this.root_;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n return node.value;\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n node = node.right;\n }\n }\n return null;\n };\n /**\n * Returns the key of the item *before* the specified key, or null if key is the first item.\n * @param {K} key The key to find the predecessor of\n * @return {?K} The predecessor key.\n */\n SortedMap.prototype.getPredecessorKey = function (key) {\n var cmp, node = this.root_, rightParent = null;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n if (!node.left.isEmpty()) {\n node = node.left;\n while (!node.right.isEmpty())\n node = node.right;\n return node.key;\n }\n else if (rightParent) {\n return rightParent.key;\n }\n else {\n return null; // first item.\n }\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n rightParent = node;\n node = node.right;\n }\n }\n throw new Error('Attempted to find predecessor key for a nonexistent key. What gives?');\n };\n /**\n * @return {boolean} True if the map is empty.\n */\n SortedMap.prototype.isEmpty = function () {\n return this.root_.isEmpty();\n };\n /**\n * @return {number} The total number of nodes in the map.\n */\n SortedMap.prototype.count = function () {\n return this.root_.count();\n };\n /**\n * @return {?K} The minimum key in the map.\n */\n SortedMap.prototype.minKey = function () {\n return this.root_.minKey();\n };\n /**\n * @return {?K} The maximum key in the map.\n */\n SortedMap.prototype.maxKey = function () {\n return this.root_.maxKey();\n };\n /**\n * Traverses the map in key order and calls the specified action function\n * for each key/value pair.\n *\n * @param {function(!K, !V):*} action Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @return {*} The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n SortedMap.prototype.inorderTraversal = function (action) {\n return this.root_.inorderTraversal(action);\n };\n /**\n * Traverses the map in reverse key order and calls the specified action function\n * for each key/value pair.\n *\n * @param {function(!Object, !Object)} action Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @return {*} True if the traversal was aborted.\n */\n SortedMap.prototype.reverseTraversal = function (action) {\n return this.root_.reverseTraversal(action);\n };\n /**\n * Returns an iterator over the SortedMap.\n * @template T\n * @param {(function(K, V):T)=} resultGenerator\n * @return {SortedMapIterator.} The iterator.\n */\n SortedMap.prototype.getIterator = function (resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, false, resultGenerator);\n };\n SortedMap.prototype.getIteratorFrom = function (key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, false, resultGenerator);\n };\n SortedMap.prototype.getReverseIteratorFrom = function (key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, true, resultGenerator);\n };\n SortedMap.prototype.getReverseIterator = function (resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, true, resultGenerator);\n };\n /**\n * Always use the same empty node, to reduce memory.\n * @const\n */\n SortedMap.EMPTY_NODE = new LLRBEmptyNode();\n return SortedMap;\n}());\nexports.SortedMap = SortedMap;\n\n//# sourceMappingURL=SortedMap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/SortedMap.js\n// module id = 16\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ServerValues_1 = require(\"./util/ServerValues\");\nvar nodeFromJSON_1 = require(\"./snap/nodeFromJSON\");\nvar Path_1 = require(\"./util/Path\");\nvar SparseSnapshotTree_1 = require(\"./SparseSnapshotTree\");\nvar SyncTree_1 = require(\"./SyncTree\");\nvar SnapshotHolder_1 = require(\"./SnapshotHolder\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar AuthTokenProvider_1 = require(\"./AuthTokenProvider\");\nvar StatsManager_1 = require(\"./stats/StatsManager\");\nvar StatsReporter_1 = require(\"./stats/StatsReporter\");\nvar StatsListener_1 = require(\"./stats/StatsListener\");\nvar EventQueue_1 = require(\"./view/EventQueue\");\nvar PersistentConnection_1 = require(\"./PersistentConnection\");\nvar ReadonlyRestClient_1 = require(\"./ReadonlyRestClient\");\nvar Database_1 = require(\"../api/Database\");\nvar INTERRUPT_REASON = 'repo_interrupt';\n/**\n * A connection to a single data repository.\n */\nvar Repo = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo_\n * @param {boolean} forceRestClient\n * @param {!FirebaseApp} app\n */\n function Repo(repoInfo_, forceRestClient, app) {\n var _this = this;\n this.repoInfo_ = repoInfo_;\n this.app = app;\n this.dataUpdateCount = 0;\n this.statsListener_ = null;\n this.eventQueue_ = new EventQueue_1.EventQueue();\n this.nextWriteId_ = 1;\n this.interceptServerDataCallback_ = null;\n // A list of data pieces and paths to be set when this client disconnects.\n this.onDisconnect_ = new SparseSnapshotTree_1.SparseSnapshotTree();\n /**\n * TODO: This should be @private but it's used by test_access.js and internal.js\n * @type {?PersistentConnection}\n */\n this.persistentConnection_ = null;\n /** @type {!AuthTokenProvider} */\n var authTokenProvider = new AuthTokenProvider_1.AuthTokenProvider(app);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo_);\n if (forceRestClient || util_2.beingCrawled()) {\n this.server_ = new ReadonlyRestClient_1.ReadonlyRestClient(this.repoInfo_, this.onDataUpdate_.bind(this), authTokenProvider);\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\n setTimeout(this.onConnectStatus_.bind(this, true), 0);\n }\n else {\n var authOverride = app.options['databaseAuthVariableOverride'];\n // Validate authOverride\n if (typeof authOverride !== 'undefined' && authOverride !== null) {\n if (typeof authOverride !== 'object') {\n throw new Error('Only objects are supported for option databaseAuthVariableOverride');\n }\n try {\n util_1.stringify(authOverride);\n }\n catch (e) {\n throw new Error('Invalid authOverride provided: ' + e);\n }\n }\n this.persistentConnection_ = new PersistentConnection_1.PersistentConnection(this.repoInfo_, this.onDataUpdate_.bind(this), this.onConnectStatus_.bind(this), this.onServerInfoUpdate_.bind(this), authTokenProvider, authOverride);\n this.server_ = this.persistentConnection_;\n }\n authTokenProvider.addTokenChangeListener(function (token) {\n _this.server_.refreshAuthToken(token);\n });\n // In the case of multiple Repos for the same repoInfo (i.e. there are multiple Firebase.Contexts being used),\n // we only want to create one StatsReporter. As such, we'll report stats over the first Repo created.\n this.statsReporter_ = StatsManager_1.StatsManager.getOrCreateReporter(repoInfo_, function () { return new StatsReporter_1.StatsReporter(_this.stats_, _this.server_); });\n this.transactions_init_();\n // Used for .info.\n this.infoData_ = new SnapshotHolder_1.SnapshotHolder();\n this.infoSyncTree_ = new SyncTree_1.SyncTree({\n startListening: function (query, tag, currentHashFn, onComplete) {\n var infoEvents = [];\n var node = _this.infoData_.getNode(query.path);\n // This is possibly a hack, but we have different semantics for .info endpoints. We don't raise null events\n // on initial data...\n if (!node.isEmpty()) {\n infoEvents = _this.infoSyncTree_.applyServerOverwrite(query.path, node);\n setTimeout(function () {\n onComplete('ok');\n }, 0);\n }\n return infoEvents;\n },\n stopListening: function () { }\n });\n this.updateInfo_('connected', false);\n this.serverSyncTree_ = new SyncTree_1.SyncTree({\n startListening: function (query, tag, currentHashFn, onComplete) {\n _this.server_.listen(query, currentHashFn, tag, function (status, data) {\n var events = onComplete(status, data);\n _this.eventQueue_.raiseEventsForChangedPath(query.path, events);\n });\n // No synchronous events for network-backed sync trees\n return [];\n },\n stopListening: function (query, tag) {\n _this.server_.unlisten(query, tag);\n }\n });\n }\n /**\n * @return {string} The URL corresponding to the root of this Firebase.\n */\n Repo.prototype.toString = function () {\n return ((this.repoInfo_.secure ? 'https://' : 'http://') + this.repoInfo_.host);\n };\n /**\n * @return {!string} The namespace represented by the repo.\n */\n Repo.prototype.name = function () {\n return this.repoInfo_.namespace;\n };\n /**\n * @return {!number} The time in milliseconds, taking the server offset into account if we have one.\n */\n Repo.prototype.serverTime = function () {\n var offsetNode = this.infoData_.getNode(new Path_1.Path('.info/serverTimeOffset'));\n var offset = offsetNode.val() || 0;\n return new Date().getTime() + offset;\n };\n /**\n * Generate ServerValues using some variables from the repo object.\n * @return {!Object}\n */\n Repo.prototype.generateServerValues = function () {\n return ServerValues_1.generateWithValues({\n timestamp: this.serverTime()\n });\n };\n /**\n * Called by realtime when we get new messages from the server.\n *\n * @private\n * @param {string} pathString\n * @param {*} data\n * @param {boolean} isMerge\n * @param {?number} tag\n */\n Repo.prototype.onDataUpdate_ = function (pathString, data, isMerge, tag) {\n // For testing.\n this.dataUpdateCount++;\n var path = new Path_1.Path(pathString);\n data = this.interceptServerDataCallback_\n ? this.interceptServerDataCallback_(pathString, data)\n : data;\n var events = [];\n if (tag) {\n if (isMerge) {\n var taggedChildren = util_3.map(data, function (raw) {\n return nodeFromJSON_1.nodeFromJSON(raw);\n });\n events = this.serverSyncTree_.applyTaggedQueryMerge(path, taggedChildren, tag);\n }\n else {\n var taggedSnap = nodeFromJSON_1.nodeFromJSON(data);\n events = this.serverSyncTree_.applyTaggedQueryOverwrite(path, taggedSnap, tag);\n }\n }\n else if (isMerge) {\n var changedChildren = util_3.map(data, function (raw) {\n return nodeFromJSON_1.nodeFromJSON(raw);\n });\n events = this.serverSyncTree_.applyServerMerge(path, changedChildren);\n }\n else {\n var snap = nodeFromJSON_1.nodeFromJSON(data);\n events = this.serverSyncTree_.applyServerOverwrite(path, snap);\n }\n var affectedPath = path;\n if (events.length > 0) {\n // Since we have a listener outstanding for each transaction, receiving any events\n // is a proxy for some change having occurred.\n affectedPath = this.rerunTransactions_(path);\n }\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, events);\n };\n /**\n * TODO: This should be @private but it's used by test_access.js and internal.js\n * @param {?function(!string, *):*} callback\n * @private\n */\n Repo.prototype.interceptServerData_ = function (callback) {\n this.interceptServerDataCallback_ = callback;\n };\n /**\n * @param {!boolean} connectStatus\n * @private\n */\n Repo.prototype.onConnectStatus_ = function (connectStatus) {\n this.updateInfo_('connected', connectStatus);\n if (connectStatus === false) {\n this.runOnDisconnectEvents_();\n }\n };\n /**\n * @param {!Object} updates\n * @private\n */\n Repo.prototype.onServerInfoUpdate_ = function (updates) {\n var _this = this;\n util_2.each(updates, function (value, key) {\n _this.updateInfo_(key, value);\n });\n };\n /**\n *\n * @param {!string} pathString\n * @param {*} value\n * @private\n */\n Repo.prototype.updateInfo_ = function (pathString, value) {\n var path = new Path_1.Path('/.info/' + pathString);\n var newNode = nodeFromJSON_1.nodeFromJSON(value);\n this.infoData_.updateSnapshot(path, newNode);\n var events = this.infoSyncTree_.applyServerOverwrite(path, newNode);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n };\n /**\n * @return {!number}\n * @private\n */\n Repo.prototype.getNextWriteId_ = function () {\n return this.nextWriteId_++;\n };\n /**\n * @param {!Path} path\n * @param {*} newVal\n * @param {number|string|null} newPriority\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.setWithPriority = function (path, newVal, newPriority, onComplete) {\n var _this = this;\n this.log_('set', {\n path: path.toString(),\n value: newVal,\n priority: newPriority\n });\n // TODO: Optimize this behavior to either (a) store flag to skip resolving where possible and / or\n // (b) store unresolved paths on JSON parse\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, newPriority);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n var writeId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, writeId, true);\n this.eventQueue_.queueEvents(events);\n this.server_.put(path.toString(), newNodeUnresolved.val(/*export=*/ true), function (status, errorReason) {\n var success = status === 'ok';\n if (!success) {\n util_2.warn('set at ' + path + ' failed: ' + status);\n }\n var clearEvents = _this.serverSyncTree_.ackUserWrite(writeId, !success);\n _this.eventQueue_.raiseEventsForChangedPath(path, clearEvents);\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n var affectedPath = this.abortTransactions_(path);\n this.rerunTransactions_(affectedPath);\n // We queued the events above, so just flush the queue here\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, []);\n };\n /**\n * @param {!Path} path\n * @param {!Object} childrenToMerge\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.update = function (path, childrenToMerge, onComplete) {\n var _this = this;\n this.log_('update', { path: path.toString(), value: childrenToMerge });\n // Start with our existing data and merge each child into it.\n var empty = true;\n var serverValues = this.generateServerValues();\n var changedChildren = {};\n util_3.forEach(childrenToMerge, function (changedKey, changedValue) {\n empty = false;\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(changedValue);\n changedChildren[changedKey] = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n });\n if (!empty) {\n var writeId_1 = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserMerge(path, changedChildren, writeId_1);\n this.eventQueue_.queueEvents(events);\n this.server_.merge(path.toString(), childrenToMerge, function (status, errorReason) {\n var success = status === 'ok';\n if (!success) {\n util_2.warn('update at ' + path + ' failed: ' + status);\n }\n var clearEvents = _this.serverSyncTree_.ackUserWrite(writeId_1, !success);\n var affectedPath = clearEvents.length > 0 ? _this.rerunTransactions_(path) : path;\n _this.eventQueue_.raiseEventsForChangedPath(affectedPath, clearEvents);\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n util_3.forEach(childrenToMerge, function (changedPath) {\n var affectedPath = _this.abortTransactions_(path.child(changedPath));\n _this.rerunTransactions_(affectedPath);\n });\n // We queued the events above, so just flush the queue here\n this.eventQueue_.raiseEventsForChangedPath(path, []);\n }\n else {\n util_2.log(\"update() called with empty data. Don't do anything.\");\n this.callOnCompleteCallback(onComplete, 'ok');\n }\n };\n /**\n * Applies all of the changes stored up in the onDisconnect_ tree.\n * @private\n */\n Repo.prototype.runOnDisconnectEvents_ = function () {\n var _this = this;\n this.log_('onDisconnectEvents');\n var serverValues = this.generateServerValues();\n var resolvedOnDisconnectTree = ServerValues_1.resolveDeferredValueTree(this.onDisconnect_, serverValues);\n var events = [];\n resolvedOnDisconnectTree.forEachTree(Path_1.Path.Empty, function (path, snap) {\n events = events.concat(_this.serverSyncTree_.applyServerOverwrite(path, snap));\n var affectedPath = _this.abortTransactions_(path);\n _this.rerunTransactions_(affectedPath);\n });\n this.onDisconnect_ = new SparseSnapshotTree_1.SparseSnapshotTree();\n this.eventQueue_.raiseEventsForChangedPath(Path_1.Path.Empty, events);\n };\n /**\n * @param {!Path} path\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectCancel = function (path, onComplete) {\n var _this = this;\n this.server_.onDisconnectCancel(path.toString(), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.forget(path);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} value\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectSet = function (path, value, onComplete) {\n var _this = this;\n var newNode = nodeFromJSON_1.nodeFromJSON(value);\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.remember(path, newNode);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} value\n * @param {*} priority\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectSetWithPriority = function (path, value, priority, onComplete) {\n var _this = this;\n var newNode = nodeFromJSON_1.nodeFromJSON(value, priority);\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\n if (status === 'ok') {\n _this.onDisconnect_.remember(path, newNode);\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Path} path\n * @param {*} childrenToMerge\n * @param {?function(?Error, *=)} onComplete\n */\n Repo.prototype.onDisconnectUpdate = function (path, childrenToMerge, onComplete) {\n var _this = this;\n if (util_3.isEmpty(childrenToMerge)) {\n util_2.log(\"onDisconnect().update() called with empty data. Don't do anything.\");\n this.callOnCompleteCallback(onComplete, 'ok');\n return;\n }\n this.server_.onDisconnectMerge(path.toString(), childrenToMerge, function (status, errorReason) {\n if (status === 'ok') {\n util_3.forEach(childrenToMerge, function (childName, childNode) {\n var newChildNode = nodeFromJSON_1.nodeFromJSON(childNode);\n _this.onDisconnect_.remember(path.child(childName), newChildNode);\n });\n }\n _this.callOnCompleteCallback(onComplete, status, errorReason);\n });\n };\n /**\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n */\n Repo.prototype.addEventCallbackForQuery = function (query, eventRegistration) {\n var events;\n if (query.path.getFront() === '.info') {\n events = this.infoSyncTree_.addEventRegistration(query, eventRegistration);\n }\n else {\n events = this.serverSyncTree_.addEventRegistration(query, eventRegistration);\n }\n this.eventQueue_.raiseEventsAtPath(query.path, events);\n };\n /**\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration\n */\n Repo.prototype.removeEventCallbackForQuery = function (query, eventRegistration) {\n // These are guaranteed not to raise events, since we're not passing in a cancelError. However, we can future-proof\n // a little bit by handling the return values anyways.\n var events;\n if (query.path.getFront() === '.info') {\n events = this.infoSyncTree_.removeEventRegistration(query, eventRegistration);\n }\n else {\n events = this.serverSyncTree_.removeEventRegistration(query, eventRegistration);\n }\n this.eventQueue_.raiseEventsAtPath(query.path, events);\n };\n Repo.prototype.interrupt = function () {\n if (this.persistentConnection_) {\n this.persistentConnection_.interrupt(INTERRUPT_REASON);\n }\n };\n Repo.prototype.resume = function () {\n if (this.persistentConnection_) {\n this.persistentConnection_.resume(INTERRUPT_REASON);\n }\n };\n Repo.prototype.stats = function (showDelta) {\n if (showDelta === void 0) { showDelta = false; }\n if (typeof console === 'undefined')\n return;\n var stats;\n if (showDelta) {\n if (!this.statsListener_)\n this.statsListener_ = new StatsListener_1.StatsListener(this.stats_);\n stats = this.statsListener_.get();\n }\n else {\n stats = this.stats_.get();\n }\n var longestName = Object.keys(stats).reduce(function (previousValue, currentValue) {\n return Math.max(currentValue.length, previousValue);\n }, 0);\n util_3.forEach(stats, function (stat, value) {\n // pad stat names to be the same length (plus 2 extra spaces).\n for (var i = stat.length; i < longestName + 2; i++)\n stat += ' ';\n console.log(stat + value);\n });\n };\n Repo.prototype.statsIncrementCounter = function (metric) {\n this.stats_.incrementCounter(metric);\n this.statsReporter_.includeStat(metric);\n };\n /**\n * @param {...*} var_args\n * @private\n */\n Repo.prototype.log_ = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var prefix = '';\n if (this.persistentConnection_) {\n prefix = this.persistentConnection_.id + ':';\n }\n util_2.log.apply(void 0, [prefix].concat(var_args));\n };\n /**\n * @param {?function(?Error, *=)} callback\n * @param {!string} status\n * @param {?string=} errorReason\n */\n Repo.prototype.callOnCompleteCallback = function (callback, status, errorReason) {\n if (callback) {\n util_2.exceptionGuard(function () {\n if (status == 'ok') {\n callback(null);\n }\n else {\n var code = (status || 'error').toUpperCase();\n var message = code;\n if (errorReason)\n message += ': ' + errorReason;\n var error = new Error(message);\n error.code = code;\n callback(error);\n }\n });\n }\n };\n Object.defineProperty(Repo.prototype, \"database\", {\n get: function () {\n return this.__database || (this.__database = new Database_1.Database(this));\n },\n enumerable: true,\n configurable: true\n });\n return Repo;\n}());\nexports.Repo = Repo;\n\n//# sourceMappingURL=Repo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/Repo.js\n// module id = 17\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A cache node only stores complete children. Additionally it holds a flag whether the node can be considered fully\n * initialized in the sense that we know at one point in time this represented a valid state of the world, e.g.\n * initialized with data from the server, or a complete overwrite by the client. The filtered flag also tracks\n * whether a node potentially had children removed due to a filter.\n */\nvar CacheNode = /** @class */ (function () {\n /**\n * @param {!Node} node_\n * @param {boolean} fullyInitialized_\n * @param {boolean} filtered_\n */\n function CacheNode(node_, fullyInitialized_, filtered_) {\n this.node_ = node_;\n this.fullyInitialized_ = fullyInitialized_;\n this.filtered_ = filtered_;\n }\n /**\n * Returns whether this node was fully initialized with either server data or a complete overwrite by the client\n * @return {boolean}\n */\n CacheNode.prototype.isFullyInitialized = function () {\n return this.fullyInitialized_;\n };\n /**\n * Returns whether this node is potentially missing children due to a filter applied to the node\n * @return {boolean}\n */\n CacheNode.prototype.isFiltered = function () {\n return this.filtered_;\n };\n /**\n * @param {!Path} path\n * @return {boolean}\n */\n CacheNode.prototype.isCompleteForPath = function (path) {\n if (path.isEmpty()) {\n return this.isFullyInitialized() && !this.filtered_;\n }\n var childKey = path.getFront();\n return this.isCompleteForChild(childKey);\n };\n /**\n * @param {!string} key\n * @return {boolean}\n */\n CacheNode.prototype.isCompleteForChild = function (key) {\n return ((this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key));\n };\n /**\n * @return {!Node}\n */\n CacheNode.prototype.getNode = function () {\n return this.node_;\n };\n return CacheNode;\n}());\nexports.CacheNode = CacheNode;\n\n//# sourceMappingURL=CacheNode.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/CacheNode.js\n// module id = 18\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar onDisconnect_1 = require(\"./onDisconnect\");\nvar TransactionResult_1 = require(\"./TransactionResult\");\nvar util_1 = require(\"../core/util/util\");\nvar NextPushId_1 = require(\"../core/util/NextPushId\");\nvar Query_1 = require(\"./Query\");\nvar Repo_1 = require(\"../core/Repo\");\nvar Path_1 = require(\"../core/util/Path\");\nvar QueryParams_1 = require(\"../core/view/QueryParams\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar SyncPoint_1 = require(\"../core/SyncPoint\");\nvar Reference = /** @class */ (function (_super) {\n __extends(Reference, _super);\n /**\n * Call options:\n * new Reference(Repo, Path) or\n * new Reference(url: string, string|RepoManager)\n *\n * Externally - this is the firebase.database.Reference type.\n *\n * @param {!Repo} repo\n * @param {(!Path)} path\n * @extends {Query}\n */\n function Reference(repo, path) {\n var _this = this;\n if (!(repo instanceof Repo_1.Repo)) {\n throw new Error('new Reference() no longer supported - use app.database().');\n }\n // call Query's constructor, passing in the repo and path.\n _this = _super.call(this, repo, path, QueryParams_1.QueryParams.DEFAULT, false) || this;\n return _this;\n }\n /** @return {?string} */\n Reference.prototype.getKey = function () {\n util_2.validateArgCount('Reference.key', 0, 0, arguments.length);\n if (this.path.isEmpty())\n return null;\n else\n return this.path.getBack();\n };\n /**\n * @param {!(string|Path)} pathString\n * @return {!Reference}\n */\n Reference.prototype.child = function (pathString) {\n util_2.validateArgCount('Reference.child', 1, 1, arguments.length);\n if (typeof pathString === 'number') {\n pathString = String(pathString);\n }\n else if (!(pathString instanceof Path_1.Path)) {\n if (this.path.getFront() === null)\n validation_1.validateRootPathString('Reference.child', 1, pathString, false);\n else\n validation_1.validatePathString('Reference.child', 1, pathString, false);\n }\n return new Reference(this.repo, this.path.child(pathString));\n };\n /** @return {?Reference} */\n Reference.prototype.getParent = function () {\n util_2.validateArgCount('Reference.parent', 0, 0, arguments.length);\n var parentPath = this.path.parent();\n return parentPath === null ? null : new Reference(this.repo, parentPath);\n };\n /** @return {!Reference} */\n Reference.prototype.getRoot = function () {\n util_2.validateArgCount('Reference.root', 0, 0, arguments.length);\n var ref = this;\n while (ref.getParent() !== null) {\n ref = ref.getParent();\n }\n return ref;\n };\n /** @return {!Database} */\n Reference.prototype.databaseProp = function () {\n return this.repo.database;\n };\n /**\n * @param {*} newVal\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.set = function (newVal, onComplete) {\n util_2.validateArgCount('Reference.set', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.set', this.path);\n validation_1.validateFirebaseDataArg('Reference.set', 1, newVal, this.path, false);\n util_2.validateCallback('Reference.set', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path, newVal, \n /*priority=*/ null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {!Object} objectToMerge\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.update = function (objectToMerge, onComplete) {\n util_2.validateArgCount('Reference.update', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.update', this.path);\n if (Array.isArray(objectToMerge)) {\n var newObjectToMerge = {};\n for (var i = 0; i < objectToMerge.length; ++i) {\n newObjectToMerge['' + i] = objectToMerge[i];\n }\n objectToMerge = newObjectToMerge;\n util_1.warn('Passing an Array to Firebase.update() is deprecated. ' +\n 'Use set() if you want to overwrite the existing data, or ' +\n 'an Object with integer keys if you really do want to ' +\n 'only update some of the children.');\n }\n validation_1.validateFirebaseMergeDataArg('Reference.update', 1, objectToMerge, this.path, false);\n util_2.validateCallback('Reference.update', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.update(this.path, objectToMerge, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} newVal\n * @param {string|number|null} newPriority\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.setWithPriority = function (newVal, newPriority, onComplete) {\n util_2.validateArgCount('Reference.setWithPriority', 2, 3, arguments.length);\n validation_1.validateWritablePath('Reference.setWithPriority', this.path);\n validation_1.validateFirebaseDataArg('Reference.setWithPriority', 1, newVal, this.path, false);\n validation_1.validatePriority('Reference.setWithPriority', 2, newPriority, false);\n util_2.validateCallback('Reference.setWithPriority', 3, onComplete, true);\n if (this.getKey() === '.length' || this.getKey() === '.keys')\n throw 'Reference.setWithPriority failed: ' +\n this.getKey() +\n ' is a read-only object.';\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path, newVal, newPriority, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.remove = function (onComplete) {\n util_2.validateArgCount('Reference.remove', 0, 1, arguments.length);\n validation_1.validateWritablePath('Reference.remove', this.path);\n util_2.validateCallback('Reference.remove', 1, onComplete, true);\n return this.set(null, onComplete);\n };\n /**\n * @param {function(*):*} transactionUpdate\n * @param {(function(?Error, boolean, ?DataSnapshot))=} onComplete\n * @param {boolean=} applyLocally\n * @return {!Promise}\n */\n Reference.prototype.transaction = function (transactionUpdate, onComplete, applyLocally) {\n util_2.validateArgCount('Reference.transaction', 1, 3, arguments.length);\n validation_1.validateWritablePath('Reference.transaction', this.path);\n util_2.validateCallback('Reference.transaction', 1, transactionUpdate, false);\n util_2.validateCallback('Reference.transaction', 2, onComplete, true);\n // NOTE: applyLocally is an internal-only option for now. We need to decide if we want to keep it and how\n // to expose it.\n validation_1.validateBoolean('Reference.transaction', 3, applyLocally, true);\n if (this.getKey() === '.length' || this.getKey() === '.keys')\n throw 'Reference.transaction failed: ' +\n this.getKey() +\n ' is a read-only object.';\n if (applyLocally === undefined)\n applyLocally = true;\n var deferred = new util_3.Deferred();\n if (typeof onComplete === 'function') {\n deferred.promise.catch(function () { });\n }\n var promiseComplete = function (error, committed, snapshot) {\n if (error) {\n deferred.reject(error);\n }\n else {\n deferred.resolve(new TransactionResult_1.TransactionResult(committed, snapshot));\n }\n if (typeof onComplete === 'function') {\n onComplete(error, committed, snapshot);\n }\n };\n this.repo.startTransaction(this.path, transactionUpdate, promiseComplete, applyLocally);\n return deferred.promise;\n };\n /**\n * @param {string|number|null} priority\n * @param {function(?Error)=} onComplete\n * @return {!Promise}\n */\n Reference.prototype.setPriority = function (priority, onComplete) {\n util_2.validateArgCount('Reference.setPriority', 1, 2, arguments.length);\n validation_1.validateWritablePath('Reference.setPriority', this.path);\n validation_1.validatePriority('Reference.setPriority', 1, priority, false);\n util_2.validateCallback('Reference.setPriority', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo.setWithPriority(this.path.child('.priority'), priority, null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*=} value\n * @param {function(?Error)=} onComplete\n * @return {!Reference}\n */\n Reference.prototype.push = function (value, onComplete) {\n util_2.validateArgCount('Reference.push', 0, 2, arguments.length);\n validation_1.validateWritablePath('Reference.push', this.path);\n validation_1.validateFirebaseDataArg('Reference.push', 1, value, this.path, true);\n util_2.validateCallback('Reference.push', 2, onComplete, true);\n var now = this.repo.serverTime();\n var name = NextPushId_1.nextPushId(now);\n // push() returns a ThennableReference whose promise is fulfilled with a regular Reference.\n // We use child() to create handles to two different references. The first is turned into a\n // ThennableReference below by adding then() and catch() methods and is used as the\n // return value of push(). The second remains a regular Reference and is used as the fulfilled\n // value of the first ThennableReference.\n var thennablePushRef = this.child(name);\n var pushRef = this.child(name);\n var promise;\n if (value != null) {\n promise = thennablePushRef.set(value, onComplete).then(function () { return pushRef; });\n }\n else {\n promise = Promise.resolve(pushRef);\n }\n thennablePushRef.then = promise.then.bind(promise);\n thennablePushRef.catch = promise.then.bind(promise, undefined);\n if (typeof onComplete === 'function') {\n promise.catch(function () { });\n }\n return thennablePushRef;\n };\n /**\n * @return {!OnDisconnect}\n */\n Reference.prototype.onDisconnect = function () {\n validation_1.validateWritablePath('Reference.onDisconnect', this.path);\n return new onDisconnect_1.OnDisconnect(this.repo, this.path);\n };\n Object.defineProperty(Reference.prototype, \"database\", {\n get: function () {\n return this.databaseProp();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"key\", {\n get: function () {\n return this.getKey();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"parent\", {\n get: function () {\n return this.getParent();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n get: function () {\n return this.getRoot();\n },\n enumerable: true,\n configurable: true\n });\n return Reference;\n}(Query_1.Query));\nexports.Reference = Reference;\n/**\n * Define reference constructor in various modules\n *\n * We are doing this here to avoid several circular\n * dependency issues\n */\nQuery_1.Query.__referenceConstructor = Reference;\nSyncPoint_1.SyncPoint.__referenceConstructor = Reference;\n\n//# sourceMappingURL=Reference.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Reference.js\n// module id = 21\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\nvar Path_1 = require(\"../core/util/Path\");\nvar PriorityIndex_1 = require(\"../core/snap/indexes/PriorityIndex\");\n/**\n * Class representing a firebase data snapshot. It wraps a SnapshotNode and\n * surfaces the public methods (val, forEach, etc.) we want to expose.\n */\nvar DataSnapshot = /** @class */ (function () {\n /**\n * @param {!Node} node_ A SnapshotNode to wrap.\n * @param {!Reference} ref_ The ref of the location this snapshot came from.\n * @param {!Index} index_ The iteration order for this snapshot\n */\n function DataSnapshot(node_, ref_, index_) {\n this.node_ = node_;\n this.ref_ = ref_;\n this.index_ = index_;\n }\n /**\n * Retrieves the snapshot contents as JSON. Returns null if the snapshot is\n * empty.\n *\n * @return {*} JSON representation of the DataSnapshot contents, or null if empty.\n */\n DataSnapshot.prototype.val = function () {\n util_1.validateArgCount('DataSnapshot.val', 0, 0, arguments.length);\n return this.node_.val();\n };\n /**\n * Returns the snapshot contents as JSON, including priorities of node. Suitable for exporting\n * the entire node contents.\n * @return {*} JSON representation of the DataSnapshot contents, or null if empty.\n */\n DataSnapshot.prototype.exportVal = function () {\n util_1.validateArgCount('DataSnapshot.exportVal', 0, 0, arguments.length);\n return this.node_.val(true);\n };\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n DataSnapshot.prototype.toJSON = function () {\n // Optional spacer argument is unnecessary because we're depending on recursion rather than stringifying the content\n util_1.validateArgCount('DataSnapshot.toJSON', 0, 1, arguments.length);\n return this.exportVal();\n };\n /**\n * Returns whether the snapshot contains a non-null value.\n *\n * @return {boolean} Whether the snapshot contains a non-null value, or is empty.\n */\n DataSnapshot.prototype.exists = function () {\n util_1.validateArgCount('DataSnapshot.exists', 0, 0, arguments.length);\n return !this.node_.isEmpty();\n };\n /**\n * Returns a DataSnapshot of the specified child node's contents.\n *\n * @param {!string} childPathString Path to a child.\n * @return {!DataSnapshot} DataSnapshot for child node.\n */\n DataSnapshot.prototype.child = function (childPathString) {\n util_1.validateArgCount('DataSnapshot.child', 0, 1, arguments.length);\n // Ensure the childPath is a string (can be a number)\n childPathString = String(childPathString);\n validation_1.validatePathString('DataSnapshot.child', 1, childPathString, false);\n var childPath = new Path_1.Path(childPathString);\n var childRef = this.ref_.child(childPath);\n return new DataSnapshot(this.node_.getChild(childPath), childRef, PriorityIndex_1.PRIORITY_INDEX);\n };\n /**\n * Returns whether the snapshot contains a child at the specified path.\n *\n * @param {!string} childPathString Path to a child.\n * @return {boolean} Whether the child exists.\n */\n DataSnapshot.prototype.hasChild = function (childPathString) {\n util_1.validateArgCount('DataSnapshot.hasChild', 1, 1, arguments.length);\n validation_1.validatePathString('DataSnapshot.hasChild', 1, childPathString, false);\n var childPath = new Path_1.Path(childPathString);\n return !this.node_.getChild(childPath).isEmpty();\n };\n /**\n * Returns the priority of the object, or null if no priority was set.\n *\n * @return {string|number|null} The priority.\n */\n DataSnapshot.prototype.getPriority = function () {\n util_1.validateArgCount('DataSnapshot.getPriority', 0, 0, arguments.length);\n // typecast here because we never return deferred values or internal priorities (MAX_PRIORITY)\n return this.node_.getPriority().val();\n };\n /**\n * Iterates through child nodes and calls the specified action for each one.\n *\n * @param {function(!DataSnapshot)} action Callback function to be called\n * for each child.\n * @return {boolean} True if forEach was canceled by action returning true for\n * one of the child nodes.\n */\n DataSnapshot.prototype.forEach = function (action) {\n var _this = this;\n util_1.validateArgCount('DataSnapshot.forEach', 1, 1, arguments.length);\n util_1.validateCallback('DataSnapshot.forEach', 1, action, false);\n if (this.node_.isLeafNode())\n return false;\n var childrenNode = this.node_;\n // Sanitize the return value to a boolean. ChildrenNode.forEachChild has a weird return type...\n return !!childrenNode.forEachChild(this.index_, function (key, node) {\n return action(new DataSnapshot(node, _this.ref_.child(key), PriorityIndex_1.PRIORITY_INDEX));\n });\n };\n /**\n * Returns whether this DataSnapshot has children.\n * @return {boolean} True if the DataSnapshot contains 1 or more child nodes.\n */\n DataSnapshot.prototype.hasChildren = function () {\n util_1.validateArgCount('DataSnapshot.hasChildren', 0, 0, arguments.length);\n if (this.node_.isLeafNode())\n return false;\n else\n return !this.node_.isEmpty();\n };\n Object.defineProperty(DataSnapshot.prototype, \"key\", {\n get: function () {\n return this.ref_.getKey();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns the number of children for this DataSnapshot.\n * @return {number} The number of children that this DataSnapshot contains.\n */\n DataSnapshot.prototype.numChildren = function () {\n util_1.validateArgCount('DataSnapshot.numChildren', 0, 0, arguments.length);\n return this.node_.numChildren();\n };\n /**\n * @return {Reference} The Firebase reference for the location this snapshot's data came from.\n */\n DataSnapshot.prototype.getRef = function () {\n util_1.validateArgCount('DataSnapshot.ref', 0, 0, arguments.length);\n return this.ref_;\n };\n Object.defineProperty(DataSnapshot.prototype, \"ref\", {\n get: function () {\n return this.getRef();\n },\n enumerable: true,\n configurable: true\n });\n return DataSnapshot;\n}());\nexports.DataSnapshot = DataSnapshot;\n\n//# sourceMappingURL=DataSnapshot.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/DataSnapshot.js\n// module id = 22\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SortedMap_1 = require(\"./SortedMap\");\nvar Path_1 = require(\"./Path\");\nvar util_1 = require(\"./util\");\nvar util_2 = require(\"@firebase/util\");\nvar emptyChildrenSingleton;\n/**\n * Singleton empty children collection.\n *\n * @const\n * @type {!SortedMap.>}\n */\nvar EmptyChildren = function () {\n if (!emptyChildrenSingleton) {\n emptyChildrenSingleton = new SortedMap_1.SortedMap(util_1.stringCompare);\n }\n return emptyChildrenSingleton;\n};\n/**\n * A tree with immutable elements.\n */\nvar ImmutableTree = /** @class */ (function () {\n /**\n * @template T\n * @param {?T} value\n * @param {SortedMap.>=} children\n */\n function ImmutableTree(value, children) {\n if (children === void 0) { children = EmptyChildren(); }\n this.value = value;\n this.children = children;\n }\n /**\n * @template T\n * @param {!Object.} obj\n * @return {!ImmutableTree.}\n */\n ImmutableTree.fromObject = function (obj) {\n var tree = ImmutableTree.Empty;\n util_2.forEach(obj, function (childPath, childSnap) {\n tree = tree.set(new Path_1.Path(childPath), childSnap);\n });\n return tree;\n };\n /**\n * True if the value is empty and there are no children\n * @return {boolean}\n */\n ImmutableTree.prototype.isEmpty = function () {\n return this.value === null && this.children.isEmpty();\n };\n /**\n * Given a path and predicate, return the first node and the path to that node\n * where the predicate returns true.\n *\n * TODO Do a perf test -- If we're creating a bunch of {path: value:} objects\n * on the way back out, it may be better to pass down a pathSoFar obj.\n *\n * @param {!Path} relativePath The remainder of the path\n * @param {function(T):boolean} predicate The predicate to satisfy to return a\n * node\n * @return {?{path:!Path, value:!T}}\n */\n ImmutableTree.prototype.findRootMostMatchingPathAndValue = function (relativePath, predicate) {\n if (this.value != null && predicate(this.value)) {\n return { path: Path_1.Path.Empty, value: this.value };\n }\n else {\n if (relativePath.isEmpty()) {\n return null;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child !== null) {\n var childExistingPathAndValue = child.findRootMostMatchingPathAndValue(relativePath.popFront(), predicate);\n if (childExistingPathAndValue != null) {\n var fullPath = new Path_1.Path(front).child(childExistingPathAndValue.path);\n return { path: fullPath, value: childExistingPathAndValue.value };\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n }\n };\n /**\n * Find, if it exists, the shortest subpath of the given path that points a defined\n * value in the tree\n * @param {!Path} relativePath\n * @return {?{path: !Path, value: !T}}\n */\n ImmutableTree.prototype.findRootMostValueAndPath = function (relativePath) {\n return this.findRootMostMatchingPathAndValue(relativePath, function () { return true; });\n };\n /**\n * @param {!Path} relativePath\n * @return {!ImmutableTree.} The subtree at the given path\n */\n ImmutableTree.prototype.subtree = function (relativePath) {\n if (relativePath.isEmpty()) {\n return this;\n }\n else {\n var front = relativePath.getFront();\n var childTree = this.children.get(front);\n if (childTree !== null) {\n return childTree.subtree(relativePath.popFront());\n }\n else {\n return ImmutableTree.Empty;\n }\n }\n };\n /**\n * Sets a value at the specified path.\n *\n * @param {!Path} relativePath Path to set value at.\n * @param {?T} toSet Value to set.\n * @return {!ImmutableTree.} Resulting tree.\n */\n ImmutableTree.prototype.set = function (relativePath, toSet) {\n if (relativePath.isEmpty()) {\n return new ImmutableTree(toSet, this.children);\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front) || ImmutableTree.Empty;\n var newChild = child.set(relativePath.popFront(), toSet);\n var newChildren = this.children.insert(front, newChild);\n return new ImmutableTree(this.value, newChildren);\n }\n };\n /**\n * Removes the value at the specified path.\n *\n * @param {!Path} relativePath Path to value to remove.\n * @return {!ImmutableTree.} Resulting tree.\n */\n ImmutableTree.prototype.remove = function (relativePath) {\n if (relativePath.isEmpty()) {\n if (this.children.isEmpty()) {\n return ImmutableTree.Empty;\n }\n else {\n return new ImmutableTree(null, this.children);\n }\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child) {\n var newChild = child.remove(relativePath.popFront());\n var newChildren = void 0;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n if (this.value === null && newChildren.isEmpty()) {\n return ImmutableTree.Empty;\n }\n else {\n return new ImmutableTree(this.value, newChildren);\n }\n }\n else {\n return this;\n }\n }\n };\n /**\n * Gets a value from the tree.\n *\n * @param {!Path} relativePath Path to get value for.\n * @return {?T} Value at path, or null.\n */\n ImmutableTree.prototype.get = function (relativePath) {\n if (relativePath.isEmpty()) {\n return this.value;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front);\n if (child) {\n return child.get(relativePath.popFront());\n }\n else {\n return null;\n }\n }\n };\n /**\n * Replace the subtree at the specified path with the given new tree.\n *\n * @param {!Path} relativePath Path to replace subtree for.\n * @param {!ImmutableTree} newTree New tree.\n * @return {!ImmutableTree} Resulting tree.\n */\n ImmutableTree.prototype.setTree = function (relativePath, newTree) {\n if (relativePath.isEmpty()) {\n return newTree;\n }\n else {\n var front = relativePath.getFront();\n var child = this.children.get(front) || ImmutableTree.Empty;\n var newChild = child.setTree(relativePath.popFront(), newTree);\n var newChildren = void 0;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n return new ImmutableTree(this.value, newChildren);\n }\n };\n /**\n * Performs a depth first fold on this tree. Transforms a tree into a single\n * value, given a function that operates on the path to a node, an optional\n * current value, and a map of child names to folded subtrees\n * @template V\n * @param {function(Path, ?T, Object.):V} fn\n * @return {V}\n */\n ImmutableTree.prototype.fold = function (fn) {\n return this.fold_(Path_1.Path.Empty, fn);\n };\n /**\n * Recursive helper for public-facing fold() method\n * @template V\n * @param {!Path} pathSoFar\n * @param {function(Path, ?T, Object.):V} fn\n * @return {V}\n * @private\n */\n ImmutableTree.prototype.fold_ = function (pathSoFar, fn) {\n var accum = {};\n this.children.inorderTraversal(function (childKey, childTree) {\n accum[childKey] = childTree.fold_(pathSoFar.child(childKey), fn);\n });\n return fn(pathSoFar, this.value, accum);\n };\n /**\n * Find the first matching value on the given path. Return the result of applying f to it.\n * @template V\n * @param {!Path} path\n * @param {!function(!Path, !T):?V} f\n * @return {?V}\n */\n ImmutableTree.prototype.findOnPath = function (path, f) {\n return this.findOnPath_(path, Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.findOnPath_ = function (pathToFollow, pathSoFar, f) {\n var result = this.value ? f(pathSoFar, this.value) : false;\n if (result) {\n return result;\n }\n else {\n if (pathToFollow.isEmpty()) {\n return null;\n }\n else {\n var front = pathToFollow.getFront();\n var nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.findOnPath_(pathToFollow.popFront(), pathSoFar.child(front), f);\n }\n else {\n return null;\n }\n }\n }\n };\n /**\n *\n * @param {!Path} path\n * @param {!function(!Path, !T)} f\n * @returns {!ImmutableTree.}\n */\n ImmutableTree.prototype.foreachOnPath = function (path, f) {\n return this.foreachOnPath_(path, Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.foreachOnPath_ = function (pathToFollow, currentRelativePath, f) {\n if (pathToFollow.isEmpty()) {\n return this;\n }\n else {\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n var front = pathToFollow.getFront();\n var nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.foreachOnPath_(pathToFollow.popFront(), currentRelativePath.child(front), f);\n }\n else {\n return ImmutableTree.Empty;\n }\n }\n };\n /**\n * Calls the given function for each node in the tree that has a value.\n *\n * @param {function(!Path, !T)} f A function to be called with\n * the path from the root of the tree to a node, and the value at that node.\n * Called in depth-first order.\n */\n ImmutableTree.prototype.foreach = function (f) {\n this.foreach_(Path_1.Path.Empty, f);\n };\n ImmutableTree.prototype.foreach_ = function (currentRelativePath, f) {\n this.children.inorderTraversal(function (childName, childTree) {\n childTree.foreach_(currentRelativePath.child(childName), f);\n });\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n };\n /**\n *\n * @param {function(string, !T)} f\n */\n ImmutableTree.prototype.foreachChild = function (f) {\n this.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value) {\n f(childName, childTree.value);\n }\n });\n };\n ImmutableTree.Empty = new ImmutableTree(null);\n return ImmutableTree;\n}());\nexports.ImmutableTree = ImmutableTree;\n\n//# sourceMappingURL=ImmutableTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/ImmutableTree.js\n// module id = 23\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"../Change\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\nvar PriorityIndex_1 = require(\"../../snap/indexes/PriorityIndex\");\n/**\n * Doesn't really filter nodes but applies an index to the node and keeps track of any changes\n *\n * @constructor\n * @implements {NodeFilter}\n * @param {!Index} index\n */\nvar IndexedFilter = /** @class */ (function () {\n function IndexedFilter(index_) {\n this.index_ = index_;\n }\n IndexedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n util_1.assert(snap.isIndexed(this.index_), 'A node must be indexed if only a child is updated');\n var oldChild = snap.getImmediateChild(key);\n // Check if anything actually changed.\n if (oldChild.getChild(affectedPath).equals(newChild.getChild(affectedPath))) {\n // There's an edge case where a child can enter or leave the view because affectedPath was set to null.\n // In this case, affectedPath will appear null in both the old and new snapshots. So we need\n // to avoid treating these cases as \"nothing changed.\"\n if (oldChild.isEmpty() == newChild.isEmpty()) {\n // Nothing changed.\n // This assert should be valid, but it's expensive (can dominate perf testing) so don't actually do it.\n //assert(oldChild.equals(newChild), 'Old and new snapshots should be equal.');\n return snap;\n }\n }\n if (optChangeAccumulator != null) {\n if (newChild.isEmpty()) {\n if (snap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(key, oldChild));\n }\n else {\n util_1.assert(snap.isLeafNode(), 'A child remove without an old child only makes sense on a leaf node');\n }\n }\n else if (oldChild.isEmpty()) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childAddedChange(key, newChild));\n }\n else {\n optChangeAccumulator.trackChildChange(Change_1.Change.childChangedChange(key, newChild, oldChild));\n }\n }\n if (snap.isLeafNode() && newChild.isEmpty()) {\n return snap;\n }\n else {\n // Make sure the node is indexed\n return snap.updateImmediateChild(key, newChild).withIndex(this.index_);\n }\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (optChangeAccumulator != null) {\n if (!oldSnap.isLeafNode()) {\n oldSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!newSnap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(key, childNode));\n }\n });\n }\n if (!newSnap.isLeafNode()) {\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (oldSnap.hasChild(key)) {\n var oldChild = oldSnap.getImmediateChild(key);\n if (!oldChild.equals(childNode)) {\n optChangeAccumulator.trackChildChange(Change_1.Change.childChangedChange(key, childNode, oldChild));\n }\n }\n else {\n optChangeAccumulator.trackChildChange(Change_1.Change.childAddedChange(key, childNode));\n }\n });\n }\n }\n return newSnap.withIndex(this.index_);\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n if (oldSnap.isEmpty()) {\n return ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n else {\n return oldSnap.updatePriority(newPriority);\n }\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.filtersNodes = function () {\n return false;\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.getIndexedFilter = function () {\n return this;\n };\n /**\n * @inheritDoc\n */\n IndexedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n return IndexedFilter;\n}());\nexports.IndexedFilter = IndexedFilter;\n\n//# sourceMappingURL=IndexedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/IndexedFilter.js\n// module id = 24\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar StatsCollection_1 = require(\"./StatsCollection\");\nvar StatsManager = /** @class */ (function () {\n function StatsManager() {\n }\n StatsManager.getCollection = function (repoInfo) {\n var hashString = repoInfo.toString();\n if (!this.collections_[hashString]) {\n this.collections_[hashString] = new StatsCollection_1.StatsCollection();\n }\n return this.collections_[hashString];\n };\n StatsManager.getOrCreateReporter = function (repoInfo, creatorFunction) {\n var hashString = repoInfo.toString();\n if (!this.reporters_[hashString]) {\n this.reporters_[hashString] = creatorFunction();\n }\n return this.reporters_[hashString];\n };\n StatsManager.collections_ = {};\n StatsManager.reporters_ = {};\n return StatsManager;\n}());\nexports.StatsManager = StatsManager;\n\n//# sourceMappingURL=StatsManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsManager.js\n// module id = 25\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Repo_1 = require(\"./Repo\");\nvar util_2 = require(\"./util/util\");\nvar parser_1 = require(\"./util/libs/parser\");\nvar validation_1 = require(\"./util/validation\");\nrequire(\"./Repo_transaction\");\n/** @const {string} */\nvar DATABASE_URL_OPTION = 'databaseURL';\nvar _staticInstance;\n/**\n * Creates and caches Repo instances.\n */\nvar RepoManager = /** @class */ (function () {\n function RepoManager() {\n /**\n * @private {!Object.>}\n */\n this.repos_ = {};\n /**\n * If true, new Repos will be created to use ReadonlyRestClient (for testing purposes).\n * @private {boolean}\n */\n this.useRestClient_ = false;\n }\n RepoManager.getInstance = function () {\n if (!_staticInstance) {\n _staticInstance = new RepoManager();\n }\n return _staticInstance;\n };\n // TODO(koss): Remove these functions unless used in tests?\n RepoManager.prototype.interrupt = function () {\n for (var appName in this.repos_) {\n for (var dbUrl in this.repos_[appName]) {\n this.repos_[appName][dbUrl].interrupt();\n }\n }\n };\n RepoManager.prototype.resume = function () {\n for (var appName in this.repos_) {\n for (var dbUrl in this.repos_[appName]) {\n this.repos_[appName][dbUrl].resume();\n }\n }\n };\n /**\n * This function should only ever be called to CREATE a new database instance.\n *\n * @param {!FirebaseApp} app\n * @return {!Database}\n */\n RepoManager.prototype.databaseFromApp = function (app, url) {\n var dbUrl = url || app.options[DATABASE_URL_OPTION];\n if (dbUrl === undefined) {\n util_2.fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\n DATABASE_URL_OPTION +\n ' option when calling firebase.intializeApp().');\n }\n var parsedUrl = parser_1.parseRepoInfo(dbUrl);\n var repoInfo = parsedUrl.repoInfo;\n validation_1.validateUrl('Invalid Firebase Database URL', 1, parsedUrl);\n if (!parsedUrl.path.isEmpty()) {\n util_2.fatal('Database URL must point to the root of a Firebase Database ' +\n '(not including a child path).');\n }\n var repo = this.createRepo(repoInfo, app);\n return repo.database;\n };\n /**\n * Remove the repo and make sure it is disconnected.\n *\n * @param {!Repo} repo\n */\n RepoManager.prototype.deleteRepo = function (repo) {\n var appRepos = util_1.safeGet(this.repos_, repo.app.name);\n // This should never happen...\n if (!appRepos || util_1.safeGet(appRepos, repo.repoInfo_.toURLString()) !== repo) {\n util_2.fatal(\"Database \" + repo.app.name + \"(\" + repo.repoInfo_ + \") has already been deleted.\");\n }\n repo.interrupt();\n delete appRepos[repo.repoInfo_.toURLString()];\n };\n /**\n * Ensures a repo doesn't already exist and then creates one using the\n * provided app.\n *\n * @param {!RepoInfo} repoInfo The metadata about the Repo\n * @param {!FirebaseApp} app\n * @return {!Repo} The Repo object for the specified server / repoName.\n */\n RepoManager.prototype.createRepo = function (repoInfo, app) {\n var appRepos = util_1.safeGet(this.repos_, app.name);\n if (!appRepos) {\n appRepos = {};\n this.repos_[app.name] = appRepos;\n }\n var repo = util_1.safeGet(appRepos, repoInfo.toURLString());\n if (repo) {\n util_2.fatal('Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.');\n }\n repo = new Repo_1.Repo(repoInfo, this.useRestClient_, app);\n appRepos[repoInfo.toURLString()] = repo;\n return repo;\n };\n /**\n * Forces us to use ReadonlyRestClient instead of PersistentConnection for new Repos.\n * @param {boolean} forceRestClient\n */\n RepoManager.prototype.forceRestClient = function (forceRestClient) {\n this.useRestClient_ = forceRestClient;\n };\n return RepoManager;\n}());\nexports.RepoManager = RepoManager;\n\n//# sourceMappingURL=RepoManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/RepoManager.js\n// module id = 26\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../core/util/util\");\nvar parser_1 = require(\"../core/util/libs/parser\");\nvar Path_1 = require(\"../core/util/Path\");\nvar Reference_1 = require(\"./Reference\");\nvar Repo_1 = require(\"../core/Repo\");\nvar RepoManager_1 = require(\"../core/RepoManager\");\nvar util_2 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\n/**\n * Class representing a firebase database.\n * @implements {FirebaseService}\n */\nvar Database = /** @class */ (function () {\n /**\n * The constructor should not be called by users of our public API.\n * @param {!Repo} repo_\n */\n function Database(repo_) {\n this.repo_ = repo_;\n if (!(repo_ instanceof Repo_1.Repo)) {\n util_1.fatal(\"Don't call new Database() directly - please use firebase.database().\");\n }\n /** @type {Reference} */\n this.root_ = new Reference_1.Reference(repo_, Path_1.Path.Empty);\n this.INTERNAL = new DatabaseInternals(this);\n }\n Object.defineProperty(Database.prototype, \"app\", {\n get: function () {\n return this.repo_.app;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns a reference to the root or the path specified in opt_pathString.\n * @param {string=} pathString\n * @return {!Reference} Firebase reference.\n */\n Database.prototype.ref = function (pathString) {\n this.checkDeleted_('ref');\n util_2.validateArgCount('database.ref', 0, 1, arguments.length);\n return pathString !== undefined ? this.root_.child(pathString) : this.root_;\n };\n /**\n * Returns a reference to the root or the path specified in url.\n * We throw a exception if the url is not in the same domain as the\n * current repo.\n * @param {string} url\n * @return {!Reference} Firebase reference.\n */\n Database.prototype.refFromURL = function (url) {\n /** @const {string} */\n var apiName = 'database.refFromURL';\n this.checkDeleted_(apiName);\n util_2.validateArgCount(apiName, 1, 1, arguments.length);\n var parsedURL = parser_1.parseRepoInfo(url);\n validation_1.validateUrl(apiName, 1, parsedURL);\n var repoInfo = parsedURL.repoInfo;\n if (repoInfo.host !== this.repo_.repoInfo_.host) {\n util_1.fatal(apiName +\n ': Host name does not match the current database: ' +\n '(found ' +\n repoInfo.host +\n ' but expected ' +\n this.repo_.repoInfo_.host +\n ')');\n }\n return this.ref(parsedURL.path.toString());\n };\n /**\n * @param {string} apiName\n */\n Database.prototype.checkDeleted_ = function (apiName) {\n if (this.repo_ === null) {\n util_1.fatal('Cannot call ' + apiName + ' on a deleted database.');\n }\n };\n // Make individual repo go offline.\n Database.prototype.goOffline = function () {\n util_2.validateArgCount('database.goOffline', 0, 0, arguments.length);\n this.checkDeleted_('goOffline');\n this.repo_.interrupt();\n };\n Database.prototype.goOnline = function () {\n util_2.validateArgCount('database.goOnline', 0, 0, arguments.length);\n this.checkDeleted_('goOnline');\n this.repo_.resume();\n };\n Database.ServerValue = {\n TIMESTAMP: {\n '.sv': 'timestamp'\n }\n };\n return Database;\n}());\nexports.Database = Database;\nvar DatabaseInternals = /** @class */ (function () {\n /** @param {!Database} database */\n function DatabaseInternals(database) {\n this.database = database;\n }\n /** @return {Promise} */\n DatabaseInternals.prototype.delete = function () {\n this.database.checkDeleted_('delete');\n RepoManager_1.RepoManager.getInstance().deleteRepo(this.database.repo_);\n this.database.repo_ = null;\n this.database.root_ = null;\n this.database.INTERNAL = null;\n this.database = null;\n return Promise.resolve();\n };\n return DatabaseInternals;\n}());\nexports.DatabaseInternals = DatabaseInternals;\n\n//# sourceMappingURL=Database.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Database.js\n// module id = 32\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"../Path\");\nvar RepoInfo_1 = require(\"../../RepoInfo\");\nvar util_1 = require(\"../util\");\n/**\n * @param {!string} pathString\n * @return {string}\n */\nfunction decodePath(pathString) {\n var pathStringDecoded = '';\n var pieces = pathString.split('/');\n for (var i = 0; i < pieces.length; i++) {\n if (pieces[i].length > 0) {\n var piece = pieces[i];\n try {\n piece = decodeURIComponent(piece.replace(/\\+/g, ' '));\n }\n catch (e) { }\n pathStringDecoded += '/' + piece;\n }\n }\n return pathStringDecoded;\n}\n/**\n *\n * @param {!string} dataURL\n * @return {{repoInfo: !RepoInfo, path: !Path}}\n */\nexports.parseRepoInfo = function (dataURL) {\n var parsedUrl = exports.parseURL(dataURL), namespace = parsedUrl.subdomain;\n if (parsedUrl.domain === 'firebase') {\n util_1.fatal(parsedUrl.host +\n ' is no longer supported. ' +\n 'Please use .firebaseio.com instead');\n }\n // Catch common error of uninitialized namespace value.\n if (!namespace || namespace == 'undefined') {\n util_1.fatal('Cannot parse Firebase url. Please use https://.firebaseio.com');\n }\n if (!parsedUrl.secure) {\n util_1.warnIfPageIsSecure();\n }\n var webSocketOnly = parsedUrl.scheme === 'ws' || parsedUrl.scheme === 'wss';\n return {\n repoInfo: new RepoInfo_1.RepoInfo(parsedUrl.host, parsedUrl.secure, namespace, webSocketOnly),\n path: new Path_1.Path(parsedUrl.pathString)\n };\n};\n/**\n *\n * @param {!string} dataURL\n * @return {{host: string, port: number, domain: string, subdomain: string, secure: boolean, scheme: string, pathString: string}}\n */\nexports.parseURL = function (dataURL) {\n // Default to empty strings in the event of a malformed string.\n var host = '', domain = '', subdomain = '', pathString = '';\n // Always default to SSL, unless otherwise specified.\n var secure = true, scheme = 'https', port = 443;\n // Don't do any validation here. The caller is responsible for validating the result of parsing.\n if (typeof dataURL === 'string') {\n // Parse scheme.\n var colonInd = dataURL.indexOf('//');\n if (colonInd >= 0) {\n scheme = dataURL.substring(0, colonInd - 1);\n dataURL = dataURL.substring(colonInd + 2);\n }\n // Parse host and path.\n var slashInd = dataURL.indexOf('/');\n if (slashInd === -1) {\n slashInd = dataURL.length;\n }\n host = dataURL.substring(0, slashInd);\n pathString = decodePath(dataURL.substring(slashInd));\n var parts = host.split('.');\n if (parts.length === 3) {\n // Normalize namespaces to lowercase to share storage / connection.\n domain = parts[1];\n subdomain = parts[0].toLowerCase();\n }\n else if (parts.length === 2) {\n domain = parts[0];\n }\n // If we have a port, use scheme for determining if it's secure.\n colonInd = host.indexOf(':');\n if (colonInd >= 0) {\n secure = scheme === 'https' || scheme === 'wss';\n port = parseInt(host.substring(colonInd + 1), 10);\n }\n }\n return {\n host: host,\n port: port,\n domain: domain,\n subdomain: subdomain,\n secure: secure,\n scheme: scheme,\n pathString: pathString\n };\n};\n\n//# sourceMappingURL=parser.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/libs/parser.js\n// module id = 33\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar storage_1 = require(\"./storage/storage\");\nvar Constants_1 = require(\"../realtime/Constants\");\n/**\n * A class that holds metadata about a Repo object\n *\n * @constructor\n */\nvar RepoInfo = /** @class */ (function () {\n /**\n * @param {string} host Hostname portion of the url for the repo\n * @param {boolean} secure Whether or not this repo is accessed over ssl\n * @param {string} namespace The namespace represented by the repo\n * @param {boolean} webSocketOnly Whether to prefer websockets over all other transports (used by Nest).\n * @param {string=} persistenceKey Override the default session persistence storage key\n */\n function RepoInfo(host, secure, namespace, webSocketOnly, persistenceKey) {\n if (persistenceKey === void 0) { persistenceKey = ''; }\n this.secure = secure;\n this.namespace = namespace;\n this.webSocketOnly = webSocketOnly;\n this.persistenceKey = persistenceKey;\n this.host = host.toLowerCase();\n this.domain = this.host.substr(this.host.indexOf('.') + 1);\n this.internalHost = storage_1.PersistentStorage.get('host:' + host) || this.host;\n }\n RepoInfo.prototype.needsQueryParam = function () {\n return this.host !== this.internalHost;\n };\n RepoInfo.prototype.isCacheableHost = function () {\n return this.internalHost.substr(0, 2) === 's-';\n };\n RepoInfo.prototype.isDemoHost = function () {\n return this.domain === 'firebaseio-demo.com';\n };\n RepoInfo.prototype.isCustomHost = function () {\n return (this.domain !== 'firebaseio.com' && this.domain !== 'firebaseio-demo.com');\n };\n RepoInfo.prototype.updateHost = function (newHost) {\n if (newHost !== this.internalHost) {\n this.internalHost = newHost;\n if (this.isCacheableHost()) {\n storage_1.PersistentStorage.set('host:' + this.host, this.internalHost);\n }\n }\n };\n /**\n * Returns the websocket URL for this repo\n * @param {string} type of connection\n * @param {Object} params list\n * @return {string} The URL for this repo\n */\n RepoInfo.prototype.connectionURL = function (type, params) {\n util_1.assert(typeof type === 'string', 'typeof type must == string');\n util_1.assert(typeof params === 'object', 'typeof params must == object');\n var connURL;\n if (type === Constants_1.WEBSOCKET) {\n connURL =\n (this.secure ? 'wss://' : 'ws://') + this.internalHost + '/.ws?';\n }\n else if (type === Constants_1.LONG_POLLING) {\n connURL =\n (this.secure ? 'https://' : 'http://') + this.internalHost + '/.lp?';\n }\n else {\n throw new Error('Unknown connection type: ' + type);\n }\n if (this.needsQueryParam()) {\n params['ns'] = this.namespace;\n }\n var pairs = [];\n util_2.forEach(params, function (key, value) {\n pairs.push(key + '=' + value);\n });\n return connURL + pairs.join('&');\n };\n /** @return {string} */\n RepoInfo.prototype.toString = function () {\n var str = this.toURLString();\n if (this.persistenceKey) {\n str += '<' + this.persistenceKey + '>';\n }\n return str;\n };\n /** @return {string} */\n RepoInfo.prototype.toURLString = function () {\n return (this.secure ? 'https://' : 'http://') + this.host;\n };\n return RepoInfo;\n}());\nexports.RepoInfo = RepoInfo;\n\n//# sourceMappingURL=RepoInfo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/RepoInfo.js\n// module id = 34\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_2 = require(\"../core/util/util\");\nvar util_3 = require(\"@firebase/util\");\n/**\n * @constructor\n */\nvar OnDisconnect = /** @class */ (function () {\n /**\n * @param {!Repo} repo_\n * @param {!Path} path_\n */\n function OnDisconnect(repo_, path_) {\n this.repo_ = repo_;\n this.path_ = path_;\n }\n /**\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.cancel = function (onComplete) {\n util_1.validateArgCount('OnDisconnect.cancel', 0, 1, arguments.length);\n util_1.validateCallback('OnDisconnect.cancel', 1, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectCancel(this.path_, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.remove = function (onComplete) {\n util_1.validateArgCount('OnDisconnect.remove', 0, 1, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.remove', this.path_);\n util_1.validateCallback('OnDisconnect.remove', 1, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSet(this.path_, null, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} value\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.set = function (value, onComplete) {\n util_1.validateArgCount('OnDisconnect.set', 1, 2, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.set', this.path_);\n validation_1.validateFirebaseDataArg('OnDisconnect.set', 1, value, this.path_, false);\n util_1.validateCallback('OnDisconnect.set', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSet(this.path_, value, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {*} value\n * @param {number|string|null} priority\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.setWithPriority = function (value, priority, onComplete) {\n util_1.validateArgCount('OnDisconnect.setWithPriority', 2, 3, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.setWithPriority', this.path_);\n validation_1.validateFirebaseDataArg('OnDisconnect.setWithPriority', 1, value, this.path_, false);\n validation_1.validatePriority('OnDisconnect.setWithPriority', 2, priority, false);\n util_1.validateCallback('OnDisconnect.setWithPriority', 3, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectSetWithPriority(this.path_, value, priority, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n /**\n * @param {!Object} objectToMerge\n * @param {function(?Error)=} onComplete\n * @return {!firebase.Promise}\n */\n OnDisconnect.prototype.update = function (objectToMerge, onComplete) {\n util_1.validateArgCount('OnDisconnect.update', 1, 2, arguments.length);\n validation_1.validateWritablePath('OnDisconnect.update', this.path_);\n if (Array.isArray(objectToMerge)) {\n var newObjectToMerge = {};\n for (var i = 0; i < objectToMerge.length; ++i) {\n newObjectToMerge['' + i] = objectToMerge[i];\n }\n objectToMerge = newObjectToMerge;\n util_2.warn('Passing an Array to firebase.database.onDisconnect().update() is deprecated. Use set() if you want to overwrite the ' +\n 'existing data, or an Object with integer keys if you really do want to only update some of the children.');\n }\n validation_1.validateFirebaseMergeDataArg('OnDisconnect.update', 1, objectToMerge, this.path_, false);\n util_1.validateCallback('OnDisconnect.update', 2, onComplete, true);\n var deferred = new util_3.Deferred();\n this.repo_.onDisconnectUpdate(this.path_, objectToMerge, deferred.wrapCallback(onComplete));\n return deferred.promise;\n };\n return OnDisconnect;\n}());\nexports.OnDisconnect = OnDisconnect;\n\n//# sourceMappingURL=onDisconnect.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/onDisconnect.js\n// module id = 35\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar KeyIndex_1 = require(\"../core/snap/indexes/KeyIndex\");\nvar PriorityIndex_1 = require(\"../core/snap/indexes/PriorityIndex\");\nvar ValueIndex_1 = require(\"../core/snap/indexes/ValueIndex\");\nvar PathIndex_1 = require(\"../core/snap/indexes/PathIndex\");\nvar util_2 = require(\"../core/util/util\");\nvar Path_1 = require(\"../core/util/Path\");\nvar validation_1 = require(\"../core/util/validation\");\nvar util_3 = require(\"@firebase/util\");\nvar EventRegistration_1 = require(\"../core/view/EventRegistration\");\nvar util_4 = require(\"@firebase/util\");\nvar __referenceConstructor;\n/**\n * A Query represents a filter to be applied to a firebase location. This object purely represents the\n * query expression (and exposes our public API to build the query). The actual query logic is in ViewBase.js.\n *\n * Since every Firebase reference is a query, Firebase inherits from this object.\n */\nvar Query = /** @class */ (function () {\n function Query(repo, path, queryParams_, orderByCalled_) {\n this.repo = repo;\n this.path = path;\n this.queryParams_ = queryParams_;\n this.orderByCalled_ = orderByCalled_;\n }\n Object.defineProperty(Query, \"__referenceConstructor\", {\n get: function () {\n util_1.assert(__referenceConstructor, 'Reference.ts has not been loaded');\n return __referenceConstructor;\n },\n set: function (val) {\n __referenceConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Validates start/end values for queries.\n * @param {!QueryParams} params\n * @private\n */\n Query.validateQueryEndpoints_ = function (params) {\n var startNode = null;\n var endNode = null;\n if (params.hasStart()) {\n startNode = params.getIndexStartValue();\n }\n if (params.hasEnd()) {\n endNode = params.getIndexEndValue();\n }\n if (params.getIndex() === KeyIndex_1.KEY_INDEX) {\n var tooManyArgsError = 'Query: When ordering by key, you may only pass one argument to ' +\n 'startAt(), endAt(), or equalTo().';\n var wrongArgTypeError = 'Query: When ordering by key, the argument passed to startAt(), endAt(),' +\n 'or equalTo() must be a string.';\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n if (startName != util_2.MIN_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof startNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n if (endName != util_2.MAX_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof endNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n }\n else if (params.getIndex() === PriorityIndex_1.PRIORITY_INDEX) {\n if ((startNode != null && !validation_1.isValidPriority(startNode)) ||\n (endNode != null && !validation_1.isValidPriority(endNode))) {\n throw new Error('Query: When ordering by priority, the first argument passed to startAt(), ' +\n 'endAt(), or equalTo() must be a valid priority value (null, a number, or a string).');\n }\n }\n else {\n util_1.assert(params.getIndex() instanceof PathIndex_1.PathIndex ||\n params.getIndex() === ValueIndex_1.VALUE_INDEX, 'unknown index type.');\n if ((startNode != null && typeof startNode === 'object') ||\n (endNode != null && typeof endNode === 'object')) {\n throw new Error('Query: First argument passed to startAt(), endAt(), or equalTo() cannot be ' +\n 'an object.');\n }\n }\n };\n /**\n * Validates that limit* has been called with the correct combination of parameters\n * @param {!QueryParams} params\n * @private\n */\n Query.validateLimit_ = function (params) {\n if (params.hasStart() &&\n params.hasEnd() &&\n params.hasLimit() &&\n !params.hasAnchoredLimit()) {\n throw new Error(\"Query: Can't combine startAt(), endAt(), and limit(). Use limitToFirst() or limitToLast() instead.\");\n }\n };\n /**\n * Validates that no other order by call has been made\n * @param {!string} fnName\n * @private\n */\n Query.prototype.validateNoPreviousOrderByCall_ = function (fnName) {\n if (this.orderByCalled_ === true) {\n throw new Error(fnName + \": You can't combine multiple orderBy calls.\");\n }\n };\n /**\n * @return {!QueryParams}\n */\n Query.prototype.getQueryParams = function () {\n return this.queryParams_;\n };\n /**\n * @return {!Reference}\n */\n Query.prototype.getRef = function () {\n util_3.validateArgCount('Query.ref', 0, 0, arguments.length);\n // This is a slight hack. We cannot goog.require('fb.api.Firebase'), since Firebase requires fb.api.Query.\n // However, we will always export 'Firebase' to the global namespace, so it's guaranteed to exist by the time this\n // method gets called.\n return new Query.__referenceConstructor(this.repo, this.path);\n };\n /**\n * @param {!string} eventType\n * @param {!function(DataSnapshot, string=)} callback\n * @param {(function(Error)|Object)=} cancelCallbackOrContext\n * @param {Object=} context\n * @return {!function(DataSnapshot, string=)}\n */\n Query.prototype.on = function (eventType, callback, cancelCallbackOrContext, context) {\n util_3.validateArgCount('Query.on', 2, 4, arguments.length);\n validation_1.validateEventType('Query.on', 1, eventType, false);\n util_3.validateCallback('Query.on', 2, callback, false);\n var ret = Query.getCancelAndContextArgs_('Query.on', cancelCallbackOrContext, context);\n if (eventType === 'value') {\n this.onValueEvent(callback, ret.cancel, ret.context);\n }\n else {\n var callbacks = {};\n callbacks[eventType] = callback;\n this.onChildEvent(callbacks, ret.cancel, ret.context);\n }\n return callback;\n };\n /**\n * @param {!function(!DataSnapshot)} callback\n * @param {?function(Error)} cancelCallback\n * @param {?Object} context\n * @protected\n */\n Query.prototype.onValueEvent = function (callback, cancelCallback, context) {\n var container = new EventRegistration_1.ValueEventRegistration(callback, cancelCallback || null, context || null);\n this.repo.addEventCallbackForQuery(this, container);\n };\n /**\n * @param {!Object.} callbacks\n * @param {?function(Error)} cancelCallback\n * @param {?Object} context\n * @protected\n */\n Query.prototype.onChildEvent = function (callbacks, cancelCallback, context) {\n var container = new EventRegistration_1.ChildEventRegistration(callbacks, cancelCallback, context);\n this.repo.addEventCallbackForQuery(this, container);\n };\n /**\n * @param {string=} eventType\n * @param {(function(!DataSnapshot, ?string=))=} callback\n * @param {Object=} context\n */\n Query.prototype.off = function (eventType, callback, context) {\n util_3.validateArgCount('Query.off', 0, 3, arguments.length);\n validation_1.validateEventType('Query.off', 1, eventType, true);\n util_3.validateCallback('Query.off', 2, callback, true);\n util_3.validateContextObject('Query.off', 3, context, true);\n var container = null;\n var callbacks = null;\n if (eventType === 'value') {\n var valueCallback = callback || null;\n container = new EventRegistration_1.ValueEventRegistration(valueCallback, null, context || null);\n }\n else if (eventType) {\n if (callback) {\n callbacks = {};\n callbacks[eventType] = callback;\n }\n container = new EventRegistration_1.ChildEventRegistration(callbacks, null, context || null);\n }\n this.repo.removeEventCallbackForQuery(this, container);\n };\n /**\n * Attaches a listener, waits for the first event, and then removes the listener\n * @param {!string} eventType\n * @param {!function(!DataSnapshot, string=)} userCallback\n * @param cancelOrContext\n * @param context\n * @return {!firebase.Promise}\n */\n Query.prototype.once = function (eventType, userCallback, cancelOrContext, context) {\n var _this = this;\n util_3.validateArgCount('Query.once', 1, 4, arguments.length);\n validation_1.validateEventType('Query.once', 1, eventType, false);\n util_3.validateCallback('Query.once', 2, userCallback, true);\n var ret = Query.getCancelAndContextArgs_('Query.once', cancelOrContext, context);\n // TODO: Implement this more efficiently (in particular, use 'get' wire protocol for 'value' event)\n // TODO: consider actually wiring the callbacks into the promise. We cannot do this without a breaking change\n // because the API currently expects callbacks will be called synchronously if the data is cached, but this is\n // against the Promise specification.\n var firstCall = true;\n var deferred = new util_4.Deferred();\n // A dummy error handler in case a user wasn't expecting promises\n deferred.promise.catch(function () { });\n var onceCallback = function (snapshot) {\n // NOTE: Even though we unsubscribe, we may get called multiple times if a single action (e.g. set() with JSON)\n // triggers multiple events (e.g. child_added or child_changed).\n if (firstCall) {\n firstCall = false;\n _this.off(eventType, onceCallback);\n if (userCallback) {\n userCallback.bind(ret.context)(snapshot);\n }\n deferred.resolve(snapshot);\n }\n };\n this.on(eventType, onceCallback, \n /*cancel=*/ function (err) {\n _this.off(eventType, onceCallback);\n if (ret.cancel)\n ret.cancel.bind(ret.context)(err);\n deferred.reject(err);\n });\n return deferred.promise;\n };\n /**\n * Set a limit and anchor it to the start of the window.\n * @param {!number} limit\n * @return {!Query}\n */\n Query.prototype.limitToFirst = function (limit) {\n util_3.validateArgCount('Query.limitToFirst', 1, 1, arguments.length);\n if (typeof limit !== 'number' ||\n Math.floor(limit) !== limit ||\n limit <= 0) {\n throw new Error('Query.limitToFirst: First argument must be a positive integer.');\n }\n if (this.queryParams_.hasLimit()) {\n throw new Error('Query.limitToFirst: Limit was already set (by another call to limit, ' +\n 'limitToFirst, or limitToLast).');\n }\n return new Query(this.repo, this.path, this.queryParams_.limitToFirst(limit), this.orderByCalled_);\n };\n /**\n * Set a limit and anchor it to the end of the window.\n * @param {!number} limit\n * @return {!Query}\n */\n Query.prototype.limitToLast = function (limit) {\n util_3.validateArgCount('Query.limitToLast', 1, 1, arguments.length);\n if (typeof limit !== 'number' ||\n Math.floor(limit) !== limit ||\n limit <= 0) {\n throw new Error('Query.limitToLast: First argument must be a positive integer.');\n }\n if (this.queryParams_.hasLimit()) {\n throw new Error('Query.limitToLast: Limit was already set (by another call to limit, ' +\n 'limitToFirst, or limitToLast).');\n }\n return new Query(this.repo, this.path, this.queryParams_.limitToLast(limit), this.orderByCalled_);\n };\n /**\n * Given a child path, return a new query ordered by the specified grandchild path.\n * @param {!string} path\n * @return {!Query}\n */\n Query.prototype.orderByChild = function (path) {\n util_3.validateArgCount('Query.orderByChild', 1, 1, arguments.length);\n if (path === '$key') {\n throw new Error('Query.orderByChild: \"$key\" is invalid. Use Query.orderByKey() instead.');\n }\n else if (path === '$priority') {\n throw new Error('Query.orderByChild: \"$priority\" is invalid. Use Query.orderByPriority() instead.');\n }\n else if (path === '$value') {\n throw new Error('Query.orderByChild: \"$value\" is invalid. Use Query.orderByValue() instead.');\n }\n validation_1.validatePathString('Query.orderByChild', 1, path, false);\n this.validateNoPreviousOrderByCall_('Query.orderByChild');\n var parsedPath = new Path_1.Path(path);\n if (parsedPath.isEmpty()) {\n throw new Error('Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead.');\n }\n var index = new PathIndex_1.PathIndex(parsedPath);\n var newParams = this.queryParams_.orderBy(index);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the KeyIndex\n * @return {!Query}\n */\n Query.prototype.orderByKey = function () {\n util_3.validateArgCount('Query.orderByKey', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByKey');\n var newParams = this.queryParams_.orderBy(KeyIndex_1.KEY_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the PriorityIndex\n * @return {!Query}\n */\n Query.prototype.orderByPriority = function () {\n util_3.validateArgCount('Query.orderByPriority', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByPriority');\n var newParams = this.queryParams_.orderBy(PriorityIndex_1.PRIORITY_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * Return a new query ordered by the ValueIndex\n * @return {!Query}\n */\n Query.prototype.orderByValue = function () {\n util_3.validateArgCount('Query.orderByValue', 0, 0, arguments.length);\n this.validateNoPreviousOrderByCall_('Query.orderByValue');\n var newParams = this.queryParams_.orderBy(ValueIndex_1.VALUE_INDEX);\n Query.validateQueryEndpoints_(newParams);\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\n };\n /**\n * @param {number|string|boolean|null} value\n * @param {?string=} name\n * @return {!Query}\n */\n Query.prototype.startAt = function (value, name) {\n if (value === void 0) { value = null; }\n util_3.validateArgCount('Query.startAt', 0, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.startAt', 1, value, this.path, true);\n validation_1.validateKey('Query.startAt', 2, name, true);\n var newParams = this.queryParams_.startAt(value, name);\n Query.validateLimit_(newParams);\n Query.validateQueryEndpoints_(newParams);\n if (this.queryParams_.hasStart()) {\n throw new Error('Query.startAt: Starting point was already set (by another call to startAt ' +\n 'or equalTo).');\n }\n // Calling with no params tells us to start at the beginning.\n if (value === undefined) {\n value = null;\n name = null;\n }\n return new Query(this.repo, this.path, newParams, this.orderByCalled_);\n };\n /**\n * @param {number|string|boolean|null} value\n * @param {?string=} name\n * @return {!Query}\n */\n Query.prototype.endAt = function (value, name) {\n if (value === void 0) { value = null; }\n util_3.validateArgCount('Query.endAt', 0, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.endAt', 1, value, this.path, true);\n validation_1.validateKey('Query.endAt', 2, name, true);\n var newParams = this.queryParams_.endAt(value, name);\n Query.validateLimit_(newParams);\n Query.validateQueryEndpoints_(newParams);\n if (this.queryParams_.hasEnd()) {\n throw new Error('Query.endAt: Ending point was already set (by another call to endAt or ' +\n 'equalTo).');\n }\n return new Query(this.repo, this.path, newParams, this.orderByCalled_);\n };\n /**\n * Load the selection of children with exactly the specified value, and, optionally,\n * the specified name.\n * @param {number|string|boolean|null} value\n * @param {string=} name\n * @return {!Query}\n */\n Query.prototype.equalTo = function (value, name) {\n util_3.validateArgCount('Query.equalTo', 1, 2, arguments.length);\n validation_1.validateFirebaseDataArg('Query.equalTo', 1, value, this.path, false);\n validation_1.validateKey('Query.equalTo', 2, name, true);\n if (this.queryParams_.hasStart()) {\n throw new Error('Query.equalTo: Starting point was already set (by another call to startAt or ' +\n 'equalTo).');\n }\n if (this.queryParams_.hasEnd()) {\n throw new Error('Query.equalTo: Ending point was already set (by another call to endAt or ' +\n 'equalTo).');\n }\n return this.startAt(value, name).endAt(value, name);\n };\n /**\n * @return {!string} URL for this location.\n */\n Query.prototype.toString = function () {\n util_3.validateArgCount('Query.toString', 0, 0, arguments.length);\n return this.repo.toString() + this.path.toUrlEncodedString();\n };\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users.\n Query.prototype.toJSON = function () {\n // An optional spacer argument is unnecessary for a string.\n util_3.validateArgCount('Query.toJSON', 0, 1, arguments.length);\n return this.toString();\n };\n /**\n * An object representation of the query parameters used by this Query.\n * @return {!Object}\n */\n Query.prototype.queryObject = function () {\n return this.queryParams_.getQueryObject();\n };\n /**\n * @return {!string}\n */\n Query.prototype.queryIdentifier = function () {\n var obj = this.queryObject();\n var id = util_2.ObjectToUniqueKey(obj);\n return id === '{}' ? 'default' : id;\n };\n /**\n * Return true if this query and the provided query are equivalent; otherwise, return false.\n * @param {Query} other\n * @return {boolean}\n */\n Query.prototype.isEqual = function (other) {\n util_3.validateArgCount('Query.isEqual', 1, 1, arguments.length);\n if (!(other instanceof Query)) {\n var error = 'Query.isEqual failed: First argument must be an instance of firebase.database.Query.';\n throw new Error(error);\n }\n var sameRepo = this.repo === other.repo;\n var samePath = this.path.equals(other.path);\n var sameQueryIdentifier = this.queryIdentifier() === other.queryIdentifier();\n return sameRepo && samePath && sameQueryIdentifier;\n };\n /**\n * Helper used by .on and .once to extract the context and or cancel arguments.\n * @param {!string} fnName The function name (on or once)\n * @param {(function(Error)|Object)=} cancelOrContext\n * @param {Object=} context\n * @return {{cancel: ?function(Error), context: ?Object}}\n * @private\n */\n Query.getCancelAndContextArgs_ = function (fnName, cancelOrContext, context) {\n var ret = { cancel: null, context: null };\n if (cancelOrContext && context) {\n ret.cancel = cancelOrContext;\n util_3.validateCallback(fnName, 3, ret.cancel, true);\n ret.context = context;\n util_3.validateContextObject(fnName, 4, ret.context, true);\n }\n else if (cancelOrContext) {\n // we have either a cancel callback or a context.\n if (typeof cancelOrContext === 'object' && cancelOrContext !== null) {\n // it's a context!\n ret.context = cancelOrContext;\n }\n else if (typeof cancelOrContext === 'function') {\n ret.cancel = cancelOrContext;\n }\n else {\n throw new Error(util_3.errorPrefix(fnName, 3, true) +\n ' must either be a cancel callback or a context object.');\n }\n }\n return ret;\n };\n Object.defineProperty(Query.prototype, \"ref\", {\n get: function () {\n return this.getRef();\n },\n enumerable: true,\n configurable: true\n });\n return Query;\n}());\nexports.Query = Query;\n\n//# sourceMappingURL=Query.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/Query.js\n// module id = 36\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar MAX_NODE;\nfunction setMaxNode(val) {\n MAX_NODE = val;\n}\nexports.setMaxNode = setMaxNode;\n/**\n * @param {(!string|!number)} priority\n * @return {!string}\n */\nexports.priorityHashText = function (priority) {\n if (typeof priority === 'number')\n return 'number:' + util_2.doubleToIEEE754String(priority);\n else\n return 'string:' + priority;\n};\n/**\n * Validates that a priority snapshot Node is valid.\n *\n * @param {!Node} priorityNode\n */\nexports.validatePriorityNode = function (priorityNode) {\n if (priorityNode.isLeafNode()) {\n var val = priorityNode.val();\n util_1.assert(typeof val === 'string' ||\n typeof val === 'number' ||\n (typeof val === 'object' && util_3.contains(val, '.sv')), 'Priority must be a string or number.');\n }\n else {\n util_1.assert(priorityNode === MAX_NODE || priorityNode.isEmpty(), 'priority of unexpected type.');\n }\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\n util_1.assert(priorityNode === MAX_NODE || priorityNode.getPriority().isEmpty(), \"Priority nodes can't have a priority of their own.\");\n};\n\n//# sourceMappingURL=snap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/snap.js\n// module id = 37\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Index_1 = require(\"./Index\");\nvar Node_1 = require(\"../Node\");\nvar util_1 = require(\"../../util/util\");\nvar nodeFromJSON_1 = require(\"../nodeFromJSON\");\n/**\n * @constructor\n * @extends {Index}\n * @private\n */\nvar ValueIndex = /** @class */ (function (_super) {\n __extends(ValueIndex, _super);\n function ValueIndex() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.compare = function (a, b) {\n var indexCmp = a.node.compareTo(b.node);\n if (indexCmp === 0) {\n return util_1.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.isDefinedOn = function (node) {\n return true;\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\n return !oldNode.equals(newNode);\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.minPost = function () {\n return Node_1.NamedNode.MIN;\n };\n /**\n * @inheritDoc\n */\n ValueIndex.prototype.maxPost = function () {\n return Node_1.NamedNode.MAX;\n };\n /**\n * @param {*} indexValue\n * @param {string} name\n * @return {!NamedNode}\n */\n ValueIndex.prototype.makePost = function (indexValue, name) {\n var valueNode = nodeFromJSON_1.nodeFromJSON(indexValue);\n return new Node_1.NamedNode(name, valueNode);\n };\n /**\n * @return {!string} String representation for inclusion in a query spec\n */\n ValueIndex.prototype.toString = function () {\n return '.value';\n };\n return ValueIndex;\n}(Index_1.Index));\nexports.ValueIndex = ValueIndex;\nexports.VALUE_INDEX = new ValueIndex();\n\n//# sourceMappingURL=ValueIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/ValueIndex.js\n// module id = 38\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar childSet_1 = require(\"./childSet\");\nvar util_2 = require(\"@firebase/util\");\nvar Node_1 = require(\"./Node\");\nvar PriorityIndex_1 = require(\"./indexes/PriorityIndex\");\nvar KeyIndex_1 = require(\"./indexes/KeyIndex\");\nvar _defaultIndexMap;\nvar fallbackObject = {};\n/**\n *\n * @param {Object.>} indexes\n * @param {Object.} indexSet\n * @constructor\n */\nvar IndexMap = /** @class */ (function () {\n function IndexMap(indexes_, indexSet_) {\n this.indexes_ = indexes_;\n this.indexSet_ = indexSet_;\n }\n Object.defineProperty(IndexMap, \"Default\", {\n /**\n * The default IndexMap for nodes without a priority\n * @type {!IndexMap}\n * @const\n */\n get: function () {\n util_1.assert(fallbackObject && PriorityIndex_1.PRIORITY_INDEX, 'ChildrenNode.ts has not been loaded');\n _defaultIndexMap =\n _defaultIndexMap ||\n new IndexMap({ '.priority': fallbackObject }, { '.priority': PriorityIndex_1.PRIORITY_INDEX });\n return _defaultIndexMap;\n },\n enumerable: true,\n configurable: true\n });\n /**\n *\n * @param {!string} indexKey\n * @return {?SortedMap.}\n */\n IndexMap.prototype.get = function (indexKey) {\n var sortedMap = util_2.safeGet(this.indexes_, indexKey);\n if (!sortedMap)\n throw new Error('No index defined for ' + indexKey);\n if (sortedMap === fallbackObject) {\n // The index exists, but it falls back to just name comparison. Return null so that the calling code uses the\n // regular child map\n return null;\n }\n else {\n return sortedMap;\n }\n };\n /**\n * @param {!Index} indexDefinition\n * @return {boolean}\n */\n IndexMap.prototype.hasIndex = function (indexDefinition) {\n return util_2.contains(this.indexSet_, indexDefinition.toString());\n };\n /**\n * @param {!Index} indexDefinition\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.addIndex = function (indexDefinition, existingChildren) {\n util_1.assert(indexDefinition !== KeyIndex_1.KEY_INDEX, \"KeyIndex always exists and isn't meant to be added to the IndexMap.\");\n var childList = [];\n var sawIndexedValue = false;\n var iter = existingChildren.getIterator(Node_1.NamedNode.Wrap);\n var next = iter.getNext();\n while (next) {\n sawIndexedValue =\n sawIndexedValue || indexDefinition.isDefinedOn(next.node);\n childList.push(next);\n next = iter.getNext();\n }\n var newIndex;\n if (sawIndexedValue) {\n newIndex = childSet_1.buildChildSet(childList, indexDefinition.getCompare());\n }\n else {\n newIndex = fallbackObject;\n }\n var indexName = indexDefinition.toString();\n var newIndexSet = util_2.clone(this.indexSet_);\n newIndexSet[indexName] = indexDefinition;\n var newIndexes = util_2.clone(this.indexes_);\n newIndexes[indexName] = newIndex;\n return new IndexMap(newIndexes, newIndexSet);\n };\n /**\n * Ensure that this node is properly tracked in any indexes that we're maintaining\n * @param {!NamedNode} namedNode\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.addToIndexes = function (namedNode, existingChildren) {\n var _this = this;\n var newIndexes = util_2.map(this.indexes_, function (indexedChildren, indexName) {\n var index = util_2.safeGet(_this.indexSet_, indexName);\n util_1.assert(index, 'Missing index implementation for ' + indexName);\n if (indexedChildren === fallbackObject) {\n // Check to see if we need to index everything\n if (index.isDefinedOn(namedNode.node)) {\n // We need to build this index\n var childList = [];\n var iter = existingChildren.getIterator(Node_1.NamedNode.Wrap);\n var next = iter.getNext();\n while (next) {\n if (next.name != namedNode.name) {\n childList.push(next);\n }\n next = iter.getNext();\n }\n childList.push(namedNode);\n return childSet_1.buildChildSet(childList, index.getCompare());\n }\n else {\n // No change, this remains a fallback\n return fallbackObject;\n }\n }\n else {\n var existingSnap = existingChildren.get(namedNode.name);\n var newChildren = indexedChildren;\n if (existingSnap) {\n newChildren = newChildren.remove(new Node_1.NamedNode(namedNode.name, existingSnap));\n }\n return newChildren.insert(namedNode, namedNode.node);\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n };\n /**\n * Create a new IndexMap instance with the given value removed\n * @param {!NamedNode} namedNode\n * @param {!SortedMap.} existingChildren\n * @return {!IndexMap}\n */\n IndexMap.prototype.removeFromIndexes = function (namedNode, existingChildren) {\n var newIndexes = util_2.map(this.indexes_, function (indexedChildren) {\n if (indexedChildren === fallbackObject) {\n // This is the fallback. Just return it, nothing to do in this case\n return indexedChildren;\n }\n else {\n var existingSnap = existingChildren.get(namedNode.name);\n if (existingSnap) {\n return indexedChildren.remove(new Node_1.NamedNode(namedNode.name, existingSnap));\n }\n else {\n // No record of this child\n return indexedChildren;\n }\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n };\n return IndexMap;\n}());\nexports.IndexMap = IndexMap;\n\n//# sourceMappingURL=IndexMap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/IndexMap.js\n// module id = 39\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SortedMap_1 = require(\"../util/SortedMap\");\nvar SortedMap_2 = require(\"../util/SortedMap\");\nvar LOG_2 = Math.log(2);\n/**\n * @constructor\n */\nvar Base12Num = /** @class */ (function () {\n /**\n * @param {number} length\n */\n function Base12Num(length) {\n var logBase2 = function (num) {\n return parseInt((Math.log(num) / LOG_2), 10);\n };\n var bitMask = function (bits) { return parseInt(Array(bits + 1).join('1'), 2); };\n this.count = logBase2(length + 1);\n this.current_ = this.count - 1;\n var mask = bitMask(this.count);\n this.bits_ = (length + 1) & mask;\n }\n /**\n * @return {boolean}\n */\n Base12Num.prototype.nextBitIsOne = function () {\n //noinspection JSBitwiseOperatorUsage\n var result = !(this.bits_ & (0x1 << this.current_));\n this.current_--;\n return result;\n };\n return Base12Num;\n}());\n/**\n * Takes a list of child nodes and constructs a SortedSet using the given comparison\n * function\n *\n * Uses the algorithm described in the paper linked here:\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1458\n *\n * @template K, V\n * @param {Array.} childList Unsorted list of children\n * @param {function(!NamedNode, !NamedNode):number} cmp The comparison method to be used\n * @param {(function(NamedNode):K)=} keyFn An optional function to extract K from a node wrapper, if K's\n * type is not NamedNode\n * @param {(function(K, K):number)=} mapSortFn An optional override for comparator used by the generated sorted map\n * @return {SortedMap.}\n */\nexports.buildChildSet = function (childList, cmp, keyFn, mapSortFn) {\n childList.sort(cmp);\n var buildBalancedTree = function (low, high) {\n var length = high - low;\n var namedNode;\n var key;\n if (length == 0) {\n return null;\n }\n else if (length == 1) {\n namedNode = childList[low];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new SortedMap_1.LLRBNode(key, namedNode.node, SortedMap_1.LLRBNode.BLACK, null, null);\n }\n else {\n var middle = parseInt((length / 2), 10) + low;\n var left = buildBalancedTree(low, middle);\n var right = buildBalancedTree(middle + 1, high);\n namedNode = childList[middle];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new SortedMap_1.LLRBNode(key, namedNode.node, SortedMap_1.LLRBNode.BLACK, left, right);\n }\n };\n var buildFrom12Array = function (base12) {\n var node = null;\n var root = null;\n var index = childList.length;\n var buildPennant = function (chunkSize, color) {\n var low = index - chunkSize;\n var high = index;\n index -= chunkSize;\n var childTree = buildBalancedTree(low + 1, high);\n var namedNode = childList[low];\n var key = keyFn ? keyFn(namedNode) : namedNode;\n attachPennant(new SortedMap_1.LLRBNode(key, namedNode.node, color, null, childTree));\n };\n var attachPennant = function (pennant) {\n if (node) {\n node.left = pennant;\n node = pennant;\n }\n else {\n root = pennant;\n node = pennant;\n }\n };\n for (var i = 0; i < base12.count; ++i) {\n var isOne = base12.nextBitIsOne();\n // The number of nodes taken in each slice is 2^(arr.length - (i + 1))\n var chunkSize = Math.pow(2, base12.count - (i + 1));\n if (isOne) {\n buildPennant(chunkSize, SortedMap_1.LLRBNode.BLACK);\n }\n else {\n // current == 2\n buildPennant(chunkSize, SortedMap_1.LLRBNode.BLACK);\n buildPennant(chunkSize, SortedMap_1.LLRBNode.RED);\n }\n }\n return root;\n };\n var base12 = new Base12Num(childList.length);\n var root = buildFrom12Array(base12);\n return new SortedMap_2.SortedMap(mapSortFn || cmp, root);\n};\n\n//# sourceMappingURL=childSet.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/childSet.js\n// module id = 40\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util/util\");\nfunction NAME_ONLY_COMPARATOR(left, right) {\n return util_1.nameCompare(left.name, right.name);\n}\nexports.NAME_ONLY_COMPARATOR = NAME_ONLY_COMPARATOR;\nfunction NAME_COMPARATOR(left, right) {\n return util_1.nameCompare(left, right);\n}\nexports.NAME_COMPARATOR = NAME_COMPARATOR;\n\n//# sourceMappingURL=comparators.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/comparators.js\n// module id = 41\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../../util/util\");\nvar Index_1 = require(\"./Index\");\nvar ChildrenNode_1 = require(\"../ChildrenNode\");\nvar Node_1 = require(\"../Node\");\nvar nodeFromJSON_1 = require(\"../nodeFromJSON\");\n/**\n * @param {!Path} indexPath\n * @constructor\n * @extends {Index}\n */\nvar PathIndex = /** @class */ (function (_super) {\n __extends(PathIndex, _super);\n function PathIndex(indexPath_) {\n var _this = _super.call(this) || this;\n _this.indexPath_ = indexPath_;\n util_1.assert(!indexPath_.isEmpty() && indexPath_.getFront() !== '.priority', \"Can't create PathIndex with empty path or .priority key\");\n return _this;\n }\n /**\n * @param {!Node} snap\n * @return {!Node}\n * @protected\n */\n PathIndex.prototype.extractChild = function (snap) {\n return snap.getChild(this.indexPath_);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.isDefinedOn = function (node) {\n return !node.getChild(this.indexPath_).isEmpty();\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.compare = function (a, b) {\n var aChild = this.extractChild(a.node);\n var bChild = this.extractChild(b.node);\n var indexCmp = aChild.compareTo(bChild);\n if (indexCmp === 0) {\n return util_2.nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.makePost = function (indexValue, name) {\n var valueNode = nodeFromJSON_1.nodeFromJSON(indexValue);\n var node = ChildrenNode_1.ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, valueNode);\n return new Node_1.NamedNode(name, node);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.maxPost = function () {\n var node = ChildrenNode_1.ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, ChildrenNode_1.MAX_NODE);\n return new Node_1.NamedNode(util_2.MAX_NAME, node);\n };\n /**\n * @inheritDoc\n */\n PathIndex.prototype.toString = function () {\n return this.indexPath_.slice().join('/');\n };\n return PathIndex;\n}(Index_1.Index));\nexports.PathIndex = PathIndex;\n\n//# sourceMappingURL=PathIndex.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/snap/indexes/PathIndex.js\n// module id = 42\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"./Path\");\nvar SparseSnapshotTree_1 = require(\"../SparseSnapshotTree\");\nvar LeafNode_1 = require(\"../snap/LeafNode\");\nvar nodeFromJSON_1 = require(\"../snap/nodeFromJSON\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\n/**\n * Generate placeholders for deferred values.\n * @param {?Object} values\n * @return {!Object}\n */\nexports.generateWithValues = function (values) {\n values = values || {};\n values['timestamp'] = values['timestamp'] || new Date().getTime();\n return values;\n};\n/**\n * Value to use when firing local events. When writing server values, fire\n * local events with an approximate value, otherwise return value as-is.\n * @param {(Object|string|number|boolean)} value\n * @param {!Object} serverValues\n * @return {!(string|number|boolean)}\n */\nexports.resolveDeferredValue = function (value, serverValues) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n else {\n util_1.assert('.sv' in value, 'Unexpected leaf node or priority contents');\n return serverValues[value['.sv']];\n }\n};\n/**\n * Recursively replace all deferred values and priorities in the tree with the\n * specified generated replacement values.\n * @param {!SparseSnapshotTree} tree\n * @param {!Object} serverValues\n * @return {!SparseSnapshotTree}\n */\nexports.resolveDeferredValueTree = function (tree, serverValues) {\n var resolvedTree = new SparseSnapshotTree_1.SparseSnapshotTree();\n tree.forEachTree(new Path_1.Path(''), function (path, node) {\n resolvedTree.remember(path, exports.resolveDeferredValueSnapshot(node, serverValues));\n });\n return resolvedTree;\n};\n/**\n * Recursively replace all deferred values and priorities in the node with the\n * specified generated replacement values. If there are no server values in the node,\n * it'll be returned as-is.\n * @param {!Node} node\n * @param {!Object} serverValues\n * @return {!Node}\n */\nexports.resolveDeferredValueSnapshot = function (node, serverValues) {\n var rawPri = node.getPriority().val();\n var priority = exports.resolveDeferredValue(rawPri, serverValues);\n var newNode;\n if (node.isLeafNode()) {\n var leafNode = node;\n var value = exports.resolveDeferredValue(leafNode.getValue(), serverValues);\n if (value !== leafNode.getValue() ||\n priority !== leafNode.getPriority().val()) {\n return new LeafNode_1.LeafNode(value, nodeFromJSON_1.nodeFromJSON(priority));\n }\n else {\n return node;\n }\n }\n else {\n var childrenNode = node;\n newNode = childrenNode;\n if (priority !== childrenNode.getPriority().val()) {\n newNode = newNode.updatePriority(new LeafNode_1.LeafNode(priority));\n }\n childrenNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var newChildNode = exports.resolveDeferredValueSnapshot(childNode, serverValues);\n if (newChildNode !== childNode) {\n newNode = newNode.updateImmediateChild(childName, newChildNode);\n }\n });\n return newNode;\n }\n};\n\n//# sourceMappingURL=ServerValues.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/ServerValues.js\n// module id = 43\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"./util/Path\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar CountedSet_1 = require(\"./util/CountedSet\");\n/**\n * Helper class to store a sparse set of snapshots.\n *\n * @constructor\n */\nvar SparseSnapshotTree = /** @class */ (function () {\n function SparseSnapshotTree() {\n /**\n * @private\n * @type {Node}\n */\n this.value_ = null;\n /**\n * @private\n * @type {CountedSet}\n */\n this.children_ = null;\n }\n /**\n * Gets the node stored at the given path if one exists.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @return {?Node} The retrieved node, or null.\n */\n SparseSnapshotTree.prototype.find = function (path) {\n if (this.value_ != null) {\n return this.value_.getChild(path);\n }\n else if (!path.isEmpty() && this.children_ != null) {\n var childKey = path.getFront();\n path = path.popFront();\n if (this.children_.contains(childKey)) {\n var childTree = this.children_.get(childKey);\n return childTree.find(path);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n };\n /**\n * Stores the given node at the specified path. If there is already a node\n * at a shallower path, it merges the new data into that snapshot node.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @param {!Node} data The new data, or null.\n */\n SparseSnapshotTree.prototype.remember = function (path, data) {\n if (path.isEmpty()) {\n this.value_ = data;\n this.children_ = null;\n }\n else if (this.value_ !== null) {\n this.value_ = this.value_.updateChild(path, data);\n }\n else {\n if (this.children_ == null) {\n this.children_ = new CountedSet_1.CountedSet();\n }\n var childKey = path.getFront();\n if (!this.children_.contains(childKey)) {\n this.children_.add(childKey, new SparseSnapshotTree());\n }\n var child = this.children_.get(childKey);\n path = path.popFront();\n child.remember(path, data);\n }\n };\n /**\n * Purge the data at path from the cache.\n *\n * @param {!Path} path Path to look up snapshot for.\n * @return {boolean} True if this node should now be removed.\n */\n SparseSnapshotTree.prototype.forget = function (path) {\n if (path.isEmpty()) {\n this.value_ = null;\n this.children_ = null;\n return true;\n }\n else {\n if (this.value_ !== null) {\n if (this.value_.isLeafNode()) {\n // We're trying to forget a node that doesn't exist\n return false;\n }\n else {\n var value = this.value_;\n this.value_ = null;\n var self_1 = this;\n value.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, tree) {\n self_1.remember(new Path_1.Path(key), tree);\n });\n return this.forget(path);\n }\n }\n else if (this.children_ !== null) {\n var childKey = path.getFront();\n path = path.popFront();\n if (this.children_.contains(childKey)) {\n var safeToRemove = this.children_.get(childKey).forget(path);\n if (safeToRemove) {\n this.children_.remove(childKey);\n }\n }\n if (this.children_.isEmpty()) {\n this.children_ = null;\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n }\n };\n /**\n * Recursively iterates through all of the stored tree and calls the\n * callback on each one.\n *\n * @param {!Path} prefixPath Path to look up node for.\n * @param {!Function} func The function to invoke for each tree.\n */\n SparseSnapshotTree.prototype.forEachTree = function (prefixPath, func) {\n if (this.value_ !== null) {\n func(prefixPath, this.value_);\n }\n else {\n this.forEachChild(function (key, tree) {\n var path = new Path_1.Path(prefixPath.toString() + '/' + key);\n tree.forEachTree(path, func);\n });\n }\n };\n /**\n * Iterates through each immediate child and triggers the callback.\n *\n * @param {!Function} func The function to invoke for each child.\n */\n SparseSnapshotTree.prototype.forEachChild = function (func) {\n if (this.children_ !== null) {\n this.children_.each(function (key, tree) {\n func(key, tree);\n });\n }\n };\n return SparseSnapshotTree;\n}());\nexports.SparseSnapshotTree = SparseSnapshotTree;\n\n//# sourceMappingURL=SparseSnapshotTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SparseSnapshotTree.js\n// module id = 44\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Implements a set with a count of elements.\n *\n * @template K, V\n */\nvar CountedSet = /** @class */ (function () {\n function CountedSet() {\n this.set = {};\n }\n /**\n * @param {!K} item\n * @param {V} val\n */\n CountedSet.prototype.add = function (item, val) {\n this.set[item] = val !== null ? val : true;\n };\n /**\n * @param {!K} key\n * @return {boolean}\n */\n CountedSet.prototype.contains = function (key) {\n return util_1.contains(this.set, key);\n };\n /**\n * @param {!K} item\n * @return {V}\n */\n CountedSet.prototype.get = function (item) {\n return this.contains(item) ? this.set[item] : undefined;\n };\n /**\n * @param {!K} item\n */\n CountedSet.prototype.remove = function (item) {\n delete this.set[item];\n };\n /**\n * Deletes everything in the set\n */\n CountedSet.prototype.clear = function () {\n this.set = {};\n };\n /**\n * True if there's nothing in the set\n * @return {boolean}\n */\n CountedSet.prototype.isEmpty = function () {\n return util_1.isEmpty(this.set);\n };\n /**\n * @return {number} The number of items in the set\n */\n CountedSet.prototype.count = function () {\n return util_1.getCount(this.set);\n };\n /**\n * Run a function on each k,v pair in the set\n * @param {function(K, V)} fn\n */\n CountedSet.prototype.each = function (fn) {\n util_1.forEach(this.set, function (k, v) { return fn(k, v); });\n };\n /**\n * Mostly for debugging\n * @return {Array.} The keys present in this CountedSet\n */\n CountedSet.prototype.keys = function () {\n var keys = [];\n util_1.forEach(this.set, function (k) {\n keys.push(k);\n });\n return keys;\n };\n return CountedSet;\n}());\nexports.CountedSet = CountedSet;\n\n//# sourceMappingURL=CountedSet.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/CountedSet.js\n// module id = 45\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"./Operation\");\nvar Path_1 = require(\"../util/Path\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!Node} snap\n * @constructor\n * @implements {Operation}\n */\nvar Overwrite = /** @class */ (function () {\n function Overwrite(source, path, snap) {\n this.source = source;\n this.path = path;\n this.snap = snap;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.OVERWRITE;\n }\n Overwrite.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new Overwrite(this.source, Path_1.Path.Empty, this.snap.getImmediateChild(childName));\n }\n else {\n return new Overwrite(this.source, this.path.popFront(), this.snap);\n }\n };\n return Overwrite;\n}());\nexports.Overwrite = Overwrite;\n\n//# sourceMappingURL=Overwrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Overwrite.js\n// module id = 46\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = require(\"./view/CacheNode\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar ViewCache_1 = require(\"./view/ViewCache\");\nvar View_1 = require(\"./view/View\");\nvar __referenceConstructor;\n/**\n * SyncPoint represents a single location in a SyncTree with 1 or more event registrations, meaning we need to\n * maintain 1 or more Views at this location to cache server data and raise appropriate events for server changes\n * and user writes (set, transaction, update).\n *\n * It's responsible for:\n * - Maintaining the set of 1 or more views necessary at this location (a SyncPoint with 0 views should be removed).\n * - Proxying user / server operations to the views as appropriate (i.e. applyServerOverwrite,\n * applyUserOverwrite, etc.)\n */\nvar SyncPoint = /** @class */ (function () {\n function SyncPoint() {\n /**\n * The Views being tracked at this location in the tree, stored as a map where the key is a\n * queryId and the value is the View for that query.\n *\n * NOTE: This list will be quite small (usually 1, but perhaps 2 or 3; any more is an odd use case).\n *\n * @type {!Object.}\n * @private\n */\n this.views_ = {};\n }\n Object.defineProperty(SyncPoint, \"__referenceConstructor\", {\n get: function () {\n util_1.assert(__referenceConstructor, 'Reference.ts has not been loaded');\n return __referenceConstructor;\n },\n set: function (val) {\n util_1.assert(!__referenceConstructor, '__referenceConstructor has already been defined');\n __referenceConstructor = val;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {boolean}\n */\n SyncPoint.prototype.isEmpty = function () {\n return util_2.isEmpty(this.views_);\n };\n /**\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} optCompleteServerCache\n * @return {!Array.}\n */\n SyncPoint.prototype.applyOperation = function (operation, writesCache, optCompleteServerCache) {\n var queryId = operation.source.queryId;\n if (queryId !== null) {\n var view = util_2.safeGet(this.views_, queryId);\n util_1.assert(view != null, 'SyncTree gave us an op for an invalid query.');\n return view.applyOperation(operation, writesCache, optCompleteServerCache);\n }\n else {\n var events_1 = [];\n util_2.forEach(this.views_, function (key, view) {\n events_1 = events_1.concat(view.applyOperation(operation, writesCache, optCompleteServerCache));\n });\n return events_1;\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache Complete server cache, if we have it.\n * @param {boolean} serverCacheComplete\n * @return {!Array.} Events to raise.\n */\n SyncPoint.prototype.addEventRegistration = function (query, eventRegistration, writesCache, serverCache, serverCacheComplete) {\n var queryId = query.queryIdentifier();\n var view = util_2.safeGet(this.views_, queryId);\n if (!view) {\n // TODO: make writesCache take flag for complete server node\n var eventCache = writesCache.calcCompleteEventCache(serverCacheComplete ? serverCache : null);\n var eventCacheComplete = false;\n if (eventCache) {\n eventCacheComplete = true;\n }\n else if (serverCache instanceof ChildrenNode_1.ChildrenNode) {\n eventCache = writesCache.calcCompleteEventChildren(serverCache);\n eventCacheComplete = false;\n }\n else {\n eventCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n eventCacheComplete = false;\n }\n var viewCache = new ViewCache_1.ViewCache(new CacheNode_1.CacheNode(\n /** @type {!Node} */ (eventCache), eventCacheComplete, false), new CacheNode_1.CacheNode(\n /** @type {!Node} */ (serverCache), serverCacheComplete, false));\n view = new View_1.View(query, viewCache);\n this.views_[queryId] = view;\n }\n // This is guaranteed to exist now, we just created anything that was missing\n view.addEventRegistration(eventRegistration);\n return view.getInitialEvents(eventRegistration);\n };\n /**\n * Remove event callback(s). Return cancelEvents if a cancelError is specified.\n *\n * If query is the default query, we'll check all views for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified view(s).\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {{removed:!Array., events:!Array.}} removed queries and any cancel events\n */\n SyncPoint.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var queryId = query.queryIdentifier();\n var removed = [];\n var cancelEvents = [];\n var hadCompleteView = this.hasCompleteView();\n if (queryId === 'default') {\n // When you do ref.off(...), we search all views for the registration to remove.\n var self_1 = this;\n util_2.forEach(this.views_, function (viewQueryId, view) {\n cancelEvents = cancelEvents.concat(view.removeEventRegistration(eventRegistration, cancelError));\n if (view.isEmpty()) {\n delete self_1.views_[viewQueryId];\n // We'll deal with complete views later.\n if (!view\n .getQuery()\n .getQueryParams()\n .loadsAllData()) {\n removed.push(view.getQuery());\n }\n }\n });\n }\n else {\n // remove the callback from the specific view.\n var view = util_2.safeGet(this.views_, queryId);\n if (view) {\n cancelEvents = cancelEvents.concat(view.removeEventRegistration(eventRegistration, cancelError));\n if (view.isEmpty()) {\n delete this.views_[queryId];\n // We'll deal with complete views later.\n if (!view\n .getQuery()\n .getQueryParams()\n .loadsAllData()) {\n removed.push(view.getQuery());\n }\n }\n }\n }\n if (hadCompleteView && !this.hasCompleteView()) {\n // We removed our last complete view.\n removed.push(new SyncPoint.__referenceConstructor(query.repo, query.path));\n }\n return { removed: removed, events: cancelEvents };\n };\n /**\n * @return {!Array.}\n */\n SyncPoint.prototype.getQueryViews = function () {\n var _this = this;\n var values = Object.keys(this.views_).map(function (key) { return _this.views_[key]; });\n return values.filter(function (view) {\n return !view\n .getQuery()\n .getQueryParams()\n .loadsAllData();\n });\n };\n /**\n *\n * @param {!Path} path The path to the desired complete snapshot\n * @return {?Node} A complete cache, if it exists\n */\n SyncPoint.prototype.getCompleteServerCache = function (path) {\n var serverCache = null;\n util_2.forEach(this.views_, function (key, view) {\n serverCache = serverCache || view.getCompleteServerCache(path);\n });\n return serverCache;\n };\n /**\n * @param {!Query} query\n * @return {?View}\n */\n SyncPoint.prototype.viewForQuery = function (query) {\n var params = query.getQueryParams();\n if (params.loadsAllData()) {\n return this.getCompleteView();\n }\n else {\n var queryId = query.queryIdentifier();\n return util_2.safeGet(this.views_, queryId);\n }\n };\n /**\n * @param {!Query} query\n * @return {boolean}\n */\n SyncPoint.prototype.viewExistsForQuery = function (query) {\n return this.viewForQuery(query) != null;\n };\n /**\n * @return {boolean}\n */\n SyncPoint.prototype.hasCompleteView = function () {\n return this.getCompleteView() != null;\n };\n /**\n * @return {?View}\n */\n SyncPoint.prototype.getCompleteView = function () {\n var completeView = util_2.findValue(this.views_, function (view) {\n return view\n .getQuery()\n .getQueryParams()\n .loadsAllData();\n });\n return completeView || null;\n };\n return SyncPoint;\n}());\nexports.SyncPoint = SyncPoint;\n\n//# sourceMappingURL=SyncPoint.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SyncPoint.js\n// module id = 47\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar CacheNode_1 = require(\"./CacheNode\");\n/**\n * Stores the data we have cached for a view.\n *\n * serverSnap is the cached server data, eventSnap is the cached event data (server data plus any local writes).\n *\n * @constructor\n */\nvar ViewCache = /** @class */ (function () {\n /**\n *\n * @param {!CacheNode} eventCache_\n * @param {!CacheNode} serverCache_\n */\n function ViewCache(eventCache_, serverCache_) {\n this.eventCache_ = eventCache_;\n this.serverCache_ = serverCache_;\n }\n /**\n * @param {!Node} eventSnap\n * @param {boolean} complete\n * @param {boolean} filtered\n * @return {!ViewCache}\n */\n ViewCache.prototype.updateEventSnap = function (eventSnap, complete, filtered) {\n return new ViewCache(new CacheNode_1.CacheNode(eventSnap, complete, filtered), this.serverCache_);\n };\n /**\n * @param {!Node} serverSnap\n * @param {boolean} complete\n * @param {boolean} filtered\n * @return {!ViewCache}\n */\n ViewCache.prototype.updateServerSnap = function (serverSnap, complete, filtered) {\n return new ViewCache(this.eventCache_, new CacheNode_1.CacheNode(serverSnap, complete, filtered));\n };\n /**\n * @return {!CacheNode}\n */\n ViewCache.prototype.getEventCache = function () {\n return this.eventCache_;\n };\n /**\n * @return {?Node}\n */\n ViewCache.prototype.getCompleteEventSnap = function () {\n return this.eventCache_.isFullyInitialized()\n ? this.eventCache_.getNode()\n : null;\n };\n /**\n * @return {!CacheNode}\n */\n ViewCache.prototype.getServerCache = function () {\n return this.serverCache_;\n };\n /**\n * @return {?Node}\n */\n ViewCache.prototype.getCompleteServerSnap = function () {\n return this.serverCache_.isFullyInitialized()\n ? this.serverCache_.getNode()\n : null;\n };\n /**\n * @const\n * @type {ViewCache}\n */\n ViewCache.Empty = new ViewCache(new CacheNode_1.CacheNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, \n /*fullyInitialized=*/ false, \n /*filtered=*/ false), new CacheNode_1.CacheNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, \n /*fullyInitialized=*/ false, \n /*filtered=*/ false));\n return ViewCache;\n}());\nexports.ViewCache = ViewCache;\n\n//# sourceMappingURL=ViewCache.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ViewCache.js\n// module id = 48\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Returns the delta from the previous call to get stats.\n *\n * @param collection_ The collection to \"listen\" to.\n * @constructor\n */\nvar StatsListener = /** @class */ (function () {\n function StatsListener(collection_) {\n this.collection_ = collection_;\n this.last_ = null;\n }\n StatsListener.prototype.get = function () {\n var newStats = this.collection_.get();\n var delta = util_1.clone(newStats);\n if (this.last_) {\n util_1.forEach(this.last_, function (stat, value) {\n delta[stat] = delta[stat] - value;\n });\n }\n this.last_ = newStats;\n return delta;\n };\n return StatsListener;\n}());\nexports.StatsListener = StatsListener;\n\n//# sourceMappingURL=StatsListener.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsListener.js\n// module id = 49\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = require(\"@firebase/app\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"./util/util\");\nvar Path_1 = require(\"./util/Path\");\nvar VisibilityMonitor_1 = require(\"./util/VisibilityMonitor\");\nvar OnlineMonitor_1 = require(\"./util/OnlineMonitor\");\nvar util_5 = require(\"@firebase/util\");\nvar Connection_1 = require(\"../realtime/Connection\");\nvar util_6 = require(\"@firebase/util\");\nvar util_7 = require(\"@firebase/util\");\nvar ServerActions_1 = require(\"./ServerActions\");\nvar RECONNECT_MIN_DELAY = 1000;\nvar RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\nvar RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\nvar RECONNECT_DELAY_MULTIPLIER = 1.3;\nvar RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\nvar SERVER_KILL_INTERRUPT_REASON = 'server_kill';\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\nvar INVALID_AUTH_TOKEN_THRESHOLD = 3;\n/**\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\n *\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\n * in quotes to make sure the closure compiler does not minify them.\n */\nvar PersistentConnection = /** @class */ (function (_super) {\n __extends(PersistentConnection, _super);\n /**\n * @implements {ServerActions}\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param onConnectStatus_\n * @param onServerInfoUpdate_\n * @param authTokenProvider_\n * @param authOverride_\n */\n function PersistentConnection(repoInfo_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, authOverride_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.onConnectStatus_ = onConnectStatus_;\n _this.onServerInfoUpdate_ = onServerInfoUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n _this.authOverride_ = authOverride_;\n // Used for diagnostic logging.\n _this.id = PersistentConnection.nextPersistentConnectionId_++;\n _this.log_ = util_4.logWrapper('p:' + _this.id + ':');\n /** @private {Object} */\n _this.interruptReasons_ = {};\n _this.listens_ = {};\n _this.outstandingPuts_ = [];\n _this.outstandingPutCount_ = 0;\n _this.onDisconnectRequestQueue_ = [];\n _this.connected_ = false;\n _this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n _this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\n _this.securityDebugCallback_ = null;\n _this.lastSessionId = null;\n /** @private {number|null} */\n _this.establishConnectionTimer_ = null;\n /** @private {boolean} */\n _this.visible_ = false;\n // Before we get connected, we keep a queue of pending messages to send.\n _this.requestCBHash_ = {};\n _this.requestNumber_ = 0;\n /** @private {?{\n * sendRequest(Object),\n * close()\n * }} */\n _this.realtime_ = null;\n /** @private {string|null} */\n _this.authToken_ = null;\n _this.forceTokenRefresh_ = false;\n _this.invalidAuthTokenCount_ = 0;\n _this.firstConnection_ = true;\n _this.lastConnectionAttemptTime_ = null;\n _this.lastConnectionEstablishedTime_ = null;\n if (authOverride_ && !util_7.isNodeSdk()) {\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\n }\n _this.scheduleConnect_(0);\n VisibilityMonitor_1.VisibilityMonitor.getInstance().on('visible', _this.onVisible_, _this);\n if (repoInfo_.host.indexOf('fblocal') === -1) {\n OnlineMonitor_1.OnlineMonitor.getInstance().on('online', _this.onOnline_, _this);\n }\n return _this;\n }\n /**\n * @param {!string} action\n * @param {*} body\n * @param {function(*)=} onResponse\n * @protected\n */\n PersistentConnection.prototype.sendRequest = function (action, body, onResponse) {\n var curReqNum = ++this.requestNumber_;\n var msg = { r: curReqNum, a: action, b: body };\n this.log_(util_2.stringify(msg));\n util_3.assert(this.connected_, \"sendRequest call when we're not connected not allowed.\");\n this.realtime_.sendRequest(msg);\n if (onResponse) {\n this.requestCBHash_[curReqNum] = onResponse;\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var queryId = query.queryIdentifier();\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + queryId);\n this.listens_[pathString] = this.listens_[pathString] || {};\n util_3.assert(query.getQueryParams().isDefault() ||\n !query.getQueryParams().loadsAllData(), 'listen() called for non-default but complete query');\n util_3.assert(!this.listens_[pathString][queryId], 'listen() called twice for same path/queryId.');\n var listenSpec = {\n onComplete: onComplete,\n hashFn: currentHashFn,\n query: query,\n tag: tag\n };\n this.listens_[pathString][queryId] = listenSpec;\n if (this.connected_) {\n this.sendListen_(listenSpec);\n }\n };\n /**\n * @param {!{onComplete(),\n * hashFn():!string,\n * query: !Query,\n * tag: ?number}} listenSpec\n * @private\n */\n PersistentConnection.prototype.sendListen_ = function (listenSpec) {\n var _this = this;\n var query = listenSpec.query;\n var pathString = query.path.toString();\n var queryId = query.queryIdentifier();\n this.log_('Listen on ' + pathString + ' for ' + queryId);\n var req = { /*path*/ p: pathString };\n var action = 'q';\n // Only bother to send query if it's non-default.\n if (listenSpec.tag) {\n req['q'] = query.queryObject();\n req['t'] = listenSpec.tag;\n }\n req['h'] = listenSpec.hashFn();\n this.sendRequest(action, req, function (message) {\n var payload = message['d'];\n var status = message['s'];\n // print warnings in any case...\n PersistentConnection.warnOnListenWarnings_(payload, query);\n var currentListenSpec = _this.listens_[pathString] && _this.listens_[pathString][queryId];\n // only trigger actions if the listen hasn't been removed and readded\n if (currentListenSpec === listenSpec) {\n _this.log_('listen response', message);\n if (status !== 'ok') {\n _this.removeListen_(pathString, queryId);\n }\n if (listenSpec.onComplete) {\n listenSpec.onComplete(status, payload);\n }\n }\n });\n };\n /**\n * @param {*} payload\n * @param {!Query} query\n * @private\n */\n PersistentConnection.warnOnListenWarnings_ = function (payload, query) {\n if (payload && typeof payload === 'object' && util_1.contains(payload, 'w')) {\n var warnings = util_1.safeGet(payload, 'w');\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\n var indexSpec = '\".indexOn\": \"' +\n query\n .getQueryParams()\n .getIndex()\n .toString() +\n '\"';\n var indexPath = query.path.toString();\n util_4.warn(\"Using an unspecified index. Your data will be downloaded and \" +\n (\"filtered on the client. Consider adding \" + indexSpec + \" at \") +\n (indexPath + \" to your security rules for better performance.\"));\n }\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.refreshAuthToken = function (token) {\n this.authToken_ = token;\n this.log_('Auth token refreshed');\n if (this.authToken_) {\n this.tryAuth();\n }\n else {\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\n //the credential so we dont become authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unauth', {}, function () { });\n }\n }\n this.reduceReconnectDelayIfAdminCredential_(token);\n };\n /**\n * @param {!string} credential\n * @private\n */\n PersistentConnection.prototype.reduceReconnectDelayIfAdminCredential_ = function (credential) {\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\n var isFirebaseSecret = credential && credential.length === 40;\n if (isFirebaseSecret || util_5.isAdmin(credential)) {\n this.log_('Admin auth credential detected. Reducing max reconnect time.');\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n }\n };\n /**\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\n * a auth revoked (the connection is closed).\n */\n PersistentConnection.prototype.tryAuth = function () {\n var _this = this;\n if (this.connected_ && this.authToken_) {\n var token_1 = this.authToken_;\n var authMethod = util_5.isValidFormat(token_1) ? 'auth' : 'gauth';\n var requestData = { cred: token_1 };\n if (this.authOverride_ === null) {\n requestData['noauth'] = true;\n }\n else if (typeof this.authOverride_ === 'object') {\n requestData['authvar'] = this.authOverride_;\n }\n this.sendRequest(authMethod, requestData, function (res) {\n var status = res['s'];\n var data = res['d'] || 'error';\n if (_this.authToken_ === token_1) {\n if (status === 'ok') {\n _this.invalidAuthTokenCount_ = 0;\n }\n else {\n // Triggers reconnect and force refresh for auth token\n _this.onAuthRevoked_(status, data);\n }\n }\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.unlisten = function (query, tag) {\n var pathString = query.path.toString();\n var queryId = query.queryIdentifier();\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\n util_3.assert(query.getQueryParams().isDefault() ||\n !query.getQueryParams().loadsAllData(), 'unlisten() called for non-default but complete query');\n var listen = this.removeListen_(pathString, queryId);\n if (listen && this.connected_) {\n this.sendUnlisten_(pathString, queryId, query.queryObject(), tag);\n }\n };\n PersistentConnection.prototype.sendUnlisten_ = function (pathString, queryId, queryObj, tag) {\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\n var req = { /*path*/ p: pathString };\n var action = 'n';\n // Only bother sending queryId if it's non-default.\n if (tag) {\n req['q'] = queryObj;\n req['t'] = tag;\n }\n this.sendRequest(action, req);\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectPut = function (pathString, data, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('o', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'o',\n data: data,\n onComplete: onComplete\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectMerge = function (pathString, data, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('om', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'om',\n data: data,\n onComplete: onComplete\n });\n }\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.onDisconnectCancel = function (pathString, onComplete) {\n if (this.connected_) {\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString: pathString,\n action: 'oc',\n data: null,\n onComplete: onComplete\n });\n }\n };\n PersistentConnection.prototype.sendOnDisconnect_ = function (action, pathString, data, onComplete) {\n var request = { /*path*/ p: pathString, /*data*/ d: data };\n this.log_('onDisconnect ' + action, request);\n this.sendRequest(action, request, function (response) {\n if (onComplete) {\n setTimeout(function () {\n onComplete(response['s'], response['d']);\n }, Math.floor(0));\n }\n });\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\n this.putInternal('p', pathString, data, onComplete, hash);\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.merge = function (pathString, data, onComplete, hash) {\n this.putInternal('m', pathString, data, onComplete, hash);\n };\n PersistentConnection.prototype.putInternal = function (action, pathString, data, onComplete, hash) {\n var request = {\n /*path*/ p: pathString,\n /*data*/ d: data\n };\n if (hash !== undefined)\n request['h'] = hash;\n // TODO: Only keep track of the most recent put for a given path?\n this.outstandingPuts_.push({\n action: action,\n request: request,\n onComplete: onComplete\n });\n this.outstandingPutCount_++;\n var index = this.outstandingPuts_.length - 1;\n if (this.connected_) {\n this.sendPut_(index);\n }\n else {\n this.log_('Buffering put: ' + pathString);\n }\n };\n PersistentConnection.prototype.sendPut_ = function (index) {\n var _this = this;\n var action = this.outstandingPuts_[index].action;\n var request = this.outstandingPuts_[index].request;\n var onComplete = this.outstandingPuts_[index].onComplete;\n this.outstandingPuts_[index].queued = this.connected_;\n this.sendRequest(action, request, function (message) {\n _this.log_(action + ' response', message);\n delete _this.outstandingPuts_[index];\n _this.outstandingPutCount_--;\n // Clean up array occasionally.\n if (_this.outstandingPutCount_ === 0) {\n _this.outstandingPuts_ = [];\n }\n if (onComplete)\n onComplete(message['s'], message['d']);\n });\n };\n /**\n * @inheritDoc\n */\n PersistentConnection.prototype.reportStats = function (stats) {\n var _this = this;\n // If we're not connected, we just drop the stats.\n if (this.connected_) {\n var request = { /*counters*/ c: stats };\n this.log_('reportStats', request);\n this.sendRequest(/*stats*/ 's', request, function (result) {\n var status = result['s'];\n if (status !== 'ok') {\n var errorReason = result['d'];\n _this.log_('reportStats', 'Error sending stats: ' + errorReason);\n }\n });\n }\n };\n /**\n * @param {*} message\n * @private\n */\n PersistentConnection.prototype.onDataMessage_ = function (message) {\n if ('r' in message) {\n // this is a response\n this.log_('from server: ' + util_2.stringify(message));\n var reqNum = message['r'];\n var onResponse = this.requestCBHash_[reqNum];\n if (onResponse) {\n delete this.requestCBHash_[reqNum];\n onResponse(message['b']);\n }\n }\n else if ('error' in message) {\n throw 'A server-side error has occurred: ' + message['error'];\n }\n else if ('a' in message) {\n // a and b are action and body, respectively\n this.onDataPush_(message['a'], message['b']);\n }\n };\n PersistentConnection.prototype.onDataPush_ = function (action, body) {\n this.log_('handleServerMessage', action, body);\n if (action === 'd')\n this.onDataUpdate_(body['p'], body['d'], \n /*isMerge*/ false, body['t']);\n else if (action === 'm')\n this.onDataUpdate_(body['p'], body['d'], \n /*isMerge=*/ true, body['t']);\n else if (action === 'c')\n this.onListenRevoked_(body['p'], body['q']);\n else if (action === 'ac')\n this.onAuthRevoked_(body['s'], body['d']);\n else if (action === 'sd')\n this.onSecurityDebugPacket_(body);\n else\n util_4.error('Unrecognized action received from server: ' +\n util_2.stringify(action) +\n '\\nAre you using the latest client?');\n };\n PersistentConnection.prototype.onReady_ = function (timestamp, sessionId) {\n this.log_('connection ready');\n this.connected_ = true;\n this.lastConnectionEstablishedTime_ = new Date().getTime();\n this.handleTimestamp_(timestamp);\n this.lastSessionId = sessionId;\n if (this.firstConnection_) {\n this.sendConnectStats_();\n }\n this.restoreState_();\n this.firstConnection_ = false;\n this.onConnectStatus_(true);\n };\n PersistentConnection.prototype.scheduleConnect_ = function (timeout) {\n var _this = this;\n util_3.assert(!this.realtime_, \"Scheduling a connect when we're already connected/ing?\");\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n }\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\n this.establishConnectionTimer_ = setTimeout(function () {\n _this.establishConnectionTimer_ = null;\n _this.establishConnection_();\n }, Math.floor(timeout));\n };\n /**\n * @param {boolean} visible\n * @private\n */\n PersistentConnection.prototype.onVisible_ = function (visible) {\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\n if (visible &&\n !this.visible_ &&\n this.reconnectDelay_ === this.maxReconnectDelay_) {\n this.log_('Window became visible. Reducing delay.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n this.visible_ = visible;\n };\n PersistentConnection.prototype.onOnline_ = function (online) {\n if (online) {\n this.log_('Browser went online.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n else {\n this.log_('Browser went offline. Killing connection.');\n if (this.realtime_) {\n this.realtime_.close();\n }\n }\n };\n PersistentConnection.prototype.onRealtimeDisconnect_ = function () {\n this.log_('data client disconnected');\n this.connected_ = false;\n this.realtime_ = null;\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\n this.cancelSentTransactions_();\n // Clear out the pending requests.\n this.requestCBHash_ = {};\n if (this.shouldReconnect_()) {\n if (!this.visible_) {\n this.log_(\"Window isn't visible. Delaying reconnect.\");\n this.reconnectDelay_ = this.maxReconnectDelay_;\n this.lastConnectionAttemptTime_ = new Date().getTime();\n }\n else if (this.lastConnectionEstablishedTime_) {\n // If we've been connected long enough, reset reconnect delay to minimum.\n var timeSinceLastConnectSucceeded = new Date().getTime() - this.lastConnectionEstablishedTime_;\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT)\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n this.lastConnectionEstablishedTime_ = null;\n }\n var timeSinceLastConnectAttempt = new Date().getTime() - this.lastConnectionAttemptTime_;\n var reconnectDelay = Math.max(0, this.reconnectDelay_ - timeSinceLastConnectAttempt);\n reconnectDelay = Math.random() * reconnectDelay;\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\n this.scheduleConnect_(reconnectDelay);\n // Adjust reconnect delay for next time.\n this.reconnectDelay_ = Math.min(this.maxReconnectDelay_, this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER);\n }\n this.onConnectStatus_(false);\n };\n PersistentConnection.prototype.establishConnection_ = function () {\n if (this.shouldReconnect_()) {\n this.log_('Making a connection attempt');\n this.lastConnectionAttemptTime_ = new Date().getTime();\n this.lastConnectionEstablishedTime_ = null;\n var onDataMessage_1 = this.onDataMessage_.bind(this);\n var onReady_1 = this.onReady_.bind(this);\n var onDisconnect_1 = this.onRealtimeDisconnect_.bind(this);\n var connId_1 = this.id + ':' + PersistentConnection.nextConnectionId_++;\n var self_1 = this;\n var lastSessionId_1 = this.lastSessionId;\n var canceled_1 = false;\n var connection_1 = null;\n var closeFn_1 = function () {\n if (connection_1) {\n connection_1.close();\n }\n else {\n canceled_1 = true;\n onDisconnect_1();\n }\n };\n var sendRequestFn = function (msg) {\n util_3.assert(connection_1, \"sendRequest call when we're not connected not allowed.\");\n connection_1.sendRequest(msg);\n };\n this.realtime_ = {\n close: closeFn_1,\n sendRequest: sendRequestFn\n };\n var forceRefresh = this.forceTokenRefresh_;\n this.forceTokenRefresh_ = false;\n // First fetch auth token, and establish connection after fetching the token was successful\n this.authTokenProvider_\n .getToken(forceRefresh)\n .then(function (result) {\n if (!canceled_1) {\n util_4.log('getToken() completed. Creating connection.');\n self_1.authToken_ = result && result.accessToken;\n connection_1 = new Connection_1.Connection(connId_1, self_1.repoInfo_, onDataMessage_1, onReady_1, onDisconnect_1, \n /* onKill= */ function (reason) {\n util_4.warn(reason + ' (' + self_1.repoInfo_.toString() + ')');\n self_1.interrupt(SERVER_KILL_INTERRUPT_REASON);\n }, lastSessionId_1);\n }\n else {\n util_4.log('getToken() completed but was canceled');\n }\n })\n .then(null, function (error) {\n self_1.log_('Failed to get token: ' + error);\n if (!canceled_1) {\n if (util_6.CONSTANTS.NODE_ADMIN) {\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\n // But getToken() may also just have temporarily failed, so we still want to\n // continue retrying.\n util_4.warn(error);\n }\n closeFn_1();\n }\n });\n }\n };\n /**\n * @param {string} reason\n */\n PersistentConnection.prototype.interrupt = function (reason) {\n util_4.log('Interrupting connection for reason: ' + reason);\n this.interruptReasons_[reason] = true;\n if (this.realtime_) {\n this.realtime_.close();\n }\n else {\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n this.establishConnectionTimer_ = null;\n }\n if (this.connected_) {\n this.onRealtimeDisconnect_();\n }\n }\n };\n /**\n * @param {string} reason\n */\n PersistentConnection.prototype.resume = function (reason) {\n util_4.log('Resuming connection for reason: ' + reason);\n delete this.interruptReasons_[reason];\n if (util_1.isEmpty(this.interruptReasons_)) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n };\n PersistentConnection.prototype.handleTimestamp_ = function (timestamp) {\n var delta = timestamp - new Date().getTime();\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\n };\n PersistentConnection.prototype.cancelSentTransactions_ = function () {\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\n var put = this.outstandingPuts_[i];\n if (put && /*hash*/ 'h' in put.request && put.queued) {\n if (put.onComplete)\n put.onComplete('disconnect');\n delete this.outstandingPuts_[i];\n this.outstandingPutCount_--;\n }\n }\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0)\n this.outstandingPuts_ = [];\n };\n /**\n * @param {!string} pathString\n * @param {Array.<*>=} query\n * @private\n */\n PersistentConnection.prototype.onListenRevoked_ = function (pathString, query) {\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\n var queryId;\n if (!query) {\n queryId = 'default';\n }\n else {\n queryId = query.map(function (q) { return util_4.ObjectToUniqueKey(q); }).join('$');\n }\n var listen = this.removeListen_(pathString, queryId);\n if (listen && listen.onComplete)\n listen.onComplete('permission_denied');\n };\n /**\n * @param {!string} pathString\n * @param {!string} queryId\n * @return {{queries:Array., onComplete:function(string)}}\n * @private\n */\n PersistentConnection.prototype.removeListen_ = function (pathString, queryId) {\n var normalizedPathString = new Path_1.Path(pathString).toString(); // normalize path.\n var listen;\n if (this.listens_[normalizedPathString] !== undefined) {\n listen = this.listens_[normalizedPathString][queryId];\n delete this.listens_[normalizedPathString][queryId];\n if (util_1.getCount(this.listens_[normalizedPathString]) === 0) {\n delete this.listens_[normalizedPathString];\n }\n }\n else {\n // all listens for this path has already been removed\n listen = undefined;\n }\n return listen;\n };\n PersistentConnection.prototype.onAuthRevoked_ = function (statusCode, explanation) {\n util_4.log('Auth token revoked: ' + statusCode + '/' + explanation);\n this.authToken_ = null;\n this.forceTokenRefresh_ = true;\n this.realtime_.close();\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAuthTokenCount_++;\n if (this.invalidAuthTokenCount_ >= INVALID_AUTH_TOKEN_THRESHOLD) {\n // Set a long reconnect delay because recovery is unlikely\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n // Notify the auth token provider that the token is invalid, which will log\n // a warning\n this.authTokenProvider_.notifyForInvalidToken();\n }\n }\n };\n PersistentConnection.prototype.onSecurityDebugPacket_ = function (body) {\n if (this.securityDebugCallback_) {\n this.securityDebugCallback_(body);\n }\n else {\n if ('msg' in body && typeof console !== 'undefined') {\n console.log('FIREBASE: ' + body['msg'].replace('\\n', '\\nFIREBASE: '));\n }\n }\n };\n PersistentConnection.prototype.restoreState_ = function () {\n var _this = this;\n //Re-authenticate ourselves if we have a credential stored.\n this.tryAuth();\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\n // make sure to send listens before puts.\n util_1.forEach(this.listens_, function (pathString, queries) {\n util_1.forEach(queries, function (key, listenSpec) {\n _this.sendListen_(listenSpec);\n });\n });\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\n if (this.outstandingPuts_[i])\n this.sendPut_(i);\n }\n while (this.onDisconnectRequestQueue_.length) {\n var request = this.onDisconnectRequestQueue_.shift();\n this.sendOnDisconnect_(request.action, request.pathString, request.data, request.onComplete);\n }\n };\n /**\n * Sends client stats for first connection\n * @private\n */\n PersistentConnection.prototype.sendConnectStats_ = function () {\n var stats = {};\n var clientName = 'js';\n if (util_6.CONSTANTS.NODE_ADMIN) {\n clientName = 'admin_node';\n }\n else if (util_6.CONSTANTS.NODE_CLIENT) {\n clientName = 'node';\n }\n stats['sdk.' + clientName + '.' + app_1.default.SDK_VERSION.replace(/\\./g, '-')] = 1;\n if (util_7.isMobileCordova()) {\n stats['framework.cordova'] = 1;\n }\n else if (util_7.isReactNative()) {\n stats['framework.reactnative'] = 1;\n }\n this.reportStats(stats);\n };\n /**\n * @return {boolean}\n * @private\n */\n PersistentConnection.prototype.shouldReconnect_ = function () {\n var online = OnlineMonitor_1.OnlineMonitor.getInstance().currentlyOnline();\n return util_1.isEmpty(this.interruptReasons_) && online;\n };\n /**\n * @private\n */\n PersistentConnection.nextPersistentConnectionId_ = 0;\n /**\n * Counter for number of connections created. Mainly used for tagging in the logs\n * @type {number}\n * @private\n */\n PersistentConnection.nextConnectionId_ = 0;\n return PersistentConnection;\n}(ServerActions_1.ServerActions));\nexports.PersistentConnection = PersistentConnection;\n\n//# sourceMappingURL=PersistentConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/PersistentConnection.js\n// module id = 50\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Base class to be used if you want to emit events. Call the constructor with\n * the set of allowed event names.\n */\nvar EventEmitter = /** @class */ (function () {\n /**\n * @param {!Array.} allowedEvents_\n */\n function EventEmitter(allowedEvents_) {\n this.allowedEvents_ = allowedEvents_;\n this.listeners_ = {};\n util_1.assert(Array.isArray(allowedEvents_) && allowedEvents_.length > 0, 'Requires a non-empty array');\n }\n /**\n * To be called by derived classes to trigger events.\n * @param {!string} eventType\n * @param {...*} var_args\n */\n EventEmitter.prototype.trigger = function (eventType) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (Array.isArray(this.listeners_[eventType])) {\n // Clone the list, since callbacks could add/remove listeners.\n var listeners = this.listeners_[eventType].slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].callback.apply(listeners[i].context, var_args);\n }\n }\n };\n EventEmitter.prototype.on = function (eventType, callback, context) {\n this.validateEventType_(eventType);\n this.listeners_[eventType] = this.listeners_[eventType] || [];\n this.listeners_[eventType].push({ callback: callback, context: context });\n var eventData = this.getInitialEvent(eventType);\n if (eventData) {\n callback.apply(context, eventData);\n }\n };\n EventEmitter.prototype.off = function (eventType, callback, context) {\n this.validateEventType_(eventType);\n var listeners = this.listeners_[eventType] || [];\n for (var i = 0; i < listeners.length; i++) {\n if (listeners[i].callback === callback &&\n (!context || context === listeners[i].context)) {\n listeners.splice(i, 1);\n return;\n }\n }\n };\n EventEmitter.prototype.validateEventType_ = function (eventType) {\n util_1.assert(this.allowedEvents_.find(function (et) {\n return et === eventType;\n }), 'Unknown event: ' + eventType);\n };\n return EventEmitter;\n}());\nexports.EventEmitter = EventEmitter;\n\n//# sourceMappingURL=EventEmitter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/EventEmitter.js\n// module id = 51\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../core/util/util\");\nvar storage_1 = require(\"../core/storage/storage\");\nvar Constants_1 = require(\"./Constants\");\nvar TransportManager_1 = require(\"./TransportManager\");\n// Abort upgrade attempt if it takes longer than 60s.\nvar UPGRADE_TIMEOUT = 60000;\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\nvar DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\n// If the initial data sent triggers a lot of bandwidth (i.e. it's a large put or a listen for a large amount of data)\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\n// but we've sent/received enough bytes, we don't cancel the connection.\nvar BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\nvar BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\nvar MESSAGE_TYPE = 't';\nvar MESSAGE_DATA = 'd';\nvar CONTROL_SHUTDOWN = 's';\nvar CONTROL_RESET = 'r';\nvar CONTROL_ERROR = 'e';\nvar CONTROL_PONG = 'o';\nvar SWITCH_ACK = 'a';\nvar END_TRANSMISSION = 'n';\nvar PING = 'p';\nvar SERVER_HELLO = 'h';\n/**\n * Creates a new real-time connection to the server using whichever method works\n * best in the current browser.\n *\n * @constructor\n */\nvar Connection = /** @class */ (function () {\n /**\n * @param {!string} id - an id for this connection\n * @param {!RepoInfo} repoInfo_ - the info for the endpoint to connect to\n * @param {function(Object)} onMessage_ - the callback to be triggered when a server-push message arrives\n * @param {function(number, string)} onReady_ - the callback to be triggered when this connection is ready to send messages.\n * @param {function()} onDisconnect_ - the callback to be triggered when a connection was lost\n * @param {function(string)} onKill_ - the callback to be triggered when this connection has permanently shut down.\n * @param {string=} lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\n */\n function Connection(id, repoInfo_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\n this.id = id;\n this.repoInfo_ = repoInfo_;\n this.onMessage_ = onMessage_;\n this.onReady_ = onReady_;\n this.onDisconnect_ = onDisconnect_;\n this.onKill_ = onKill_;\n this.lastSessionId = lastSessionId;\n this.connectionCount = 0;\n this.pendingDataMessages = [];\n this.state_ = 0 /* CONNECTING */;\n this.log_ = util_1.logWrapper('c:' + this.id + ':');\n this.transportManager_ = new TransportManager_1.TransportManager(repoInfo_);\n this.log_('Connection created');\n this.start_();\n }\n /**\n * Starts a connection attempt\n * @private\n */\n Connection.prototype.start_ = function () {\n var _this = this;\n var conn = this.transportManager_.initialTransport();\n this.conn_ = new conn(this.nextTransportId_(), this.repoInfo_, undefined, this.lastSessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\n var onMessageReceived = this.connReceiver_(this.conn_);\n var onConnectionLost = this.disconnReceiver_(this.conn_);\n this.tx_ = this.conn_;\n this.rx_ = this.conn_;\n this.secondaryConn_ = null;\n this.isHealthy_ = false;\n /*\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\n * This can occur in the case of a redirect, i.e. we guessed wrong on what server to connect to and received a reset.\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\n * still have the context of your originating frame.\n */\n setTimeout(function () {\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\n _this.conn_ && _this.conn_.open(onMessageReceived, onConnectionLost);\n }, Math.floor(0));\n var healthyTimeout_ms = conn['healthyTimeout'] || 0;\n if (healthyTimeout_ms > 0) {\n this.healthyTimeout_ = util_1.setTimeoutNonBlocking(function () {\n _this.healthyTimeout_ = null;\n if (!_this.isHealthy_) {\n if (_this.conn_ &&\n _this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE) {\n _this.log_('Connection exceeded healthy timeout but has received ' +\n _this.conn_.bytesReceived +\n ' bytes. Marking connection healthy.');\n _this.isHealthy_ = true;\n _this.conn_.markConnectionHealthy();\n }\n else if (_this.conn_ &&\n _this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE) {\n _this.log_('Connection exceeded healthy timeout but has sent ' +\n _this.conn_.bytesSent +\n ' bytes. Leaving connection alive.');\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\n // the server.\n }\n else {\n _this.log_('Closing unhealthy connection after timeout.');\n _this.close();\n }\n }\n }, Math.floor(healthyTimeout_ms));\n }\n };\n /**\n * @return {!string}\n * @private\n */\n Connection.prototype.nextTransportId_ = function () {\n return 'c:' + this.id + ':' + this.connectionCount++;\n };\n Connection.prototype.disconnReceiver_ = function (conn) {\n var _this = this;\n return function (everConnected) {\n if (conn === _this.conn_) {\n _this.onConnectionLost_(everConnected);\n }\n else if (conn === _this.secondaryConn_) {\n _this.log_('Secondary connection lost.');\n _this.onSecondaryConnectionLost_();\n }\n else {\n _this.log_('closing an old connection');\n }\n };\n };\n Connection.prototype.connReceiver_ = function (conn) {\n var _this = this;\n return function (message) {\n if (_this.state_ != 2 /* DISCONNECTED */) {\n if (conn === _this.rx_) {\n _this.onPrimaryMessageReceived_(message);\n }\n else if (conn === _this.secondaryConn_) {\n _this.onSecondaryMessageReceived_(message);\n }\n else {\n _this.log_('message on old connection');\n }\n }\n };\n };\n /**\n *\n * @param {Object} dataMsg An arbitrary data message to be sent to the server\n */\n Connection.prototype.sendRequest = function (dataMsg) {\n // wrap in a data message envelope and send it on\n var msg = { t: 'd', d: dataMsg };\n this.sendData_(msg);\n };\n Connection.prototype.tryCleanupConnection = function () {\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\n this.log_('cleaning up and promoting a connection: ' + this.secondaryConn_.connId);\n this.conn_ = this.secondaryConn_;\n this.secondaryConn_ = null;\n // the server will shutdown the old connection\n }\n };\n Connection.prototype.onSecondaryControl_ = function (controlData) {\n if (MESSAGE_TYPE in controlData) {\n var cmd = controlData[MESSAGE_TYPE];\n if (cmd === SWITCH_ACK) {\n this.upgradeIfSecondaryHealthy_();\n }\n else if (cmd === CONTROL_RESET) {\n // Most likely the session wasn't valid. Abandon the switch attempt\n this.log_('Got a reset on secondary, closing it');\n this.secondaryConn_.close();\n // If we were already using this connection for something, than we need to fully close\n if (this.tx_ === this.secondaryConn_ ||\n this.rx_ === this.secondaryConn_) {\n this.close();\n }\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on secondary.');\n this.secondaryResponsesRequired_--;\n this.upgradeIfSecondaryHealthy_();\n }\n }\n };\n Connection.prototype.onSecondaryMessageReceived_ = function (parsedData) {\n var layer = util_1.requireKey('t', parsedData);\n var data = util_1.requireKey('d', parsedData);\n if (layer == 'c') {\n this.onSecondaryControl_(data);\n }\n else if (layer == 'd') {\n // got a data message, but we're still second connection. Need to buffer it up\n this.pendingDataMessages.push(data);\n }\n else {\n throw new Error('Unknown protocol layer: ' + layer);\n }\n };\n Connection.prototype.upgradeIfSecondaryHealthy_ = function () {\n if (this.secondaryResponsesRequired_ <= 0) {\n this.log_('Secondary connection is healthy.');\n this.isHealthy_ = true;\n this.secondaryConn_.markConnectionHealthy();\n this.proceedWithUpgrade_();\n }\n else {\n // Send a ping to make sure the connection is healthy.\n this.log_('sending ping on secondary.');\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\n }\n };\n Connection.prototype.proceedWithUpgrade_ = function () {\n // tell this connection to consider itself open\n this.secondaryConn_.start();\n // send ack\n this.log_('sending client ack on secondary');\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\n // send end packet on primary transport, switch to sending on this one\n // can receive on this one, buffer responses until end received on primary transport\n this.log_('Ending transmission on primary');\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\n this.tx_ = this.secondaryConn_;\n this.tryCleanupConnection();\n };\n Connection.prototype.onPrimaryMessageReceived_ = function (parsedData) {\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\n var layer = util_1.requireKey('t', parsedData);\n var data = util_1.requireKey('d', parsedData);\n if (layer == 'c') {\n this.onControl_(data);\n }\n else if (layer == 'd') {\n this.onDataMessage_(data);\n }\n };\n Connection.prototype.onDataMessage_ = function (message) {\n this.onPrimaryResponse_();\n // We don't do anything with data messages, just kick them up a level\n this.onMessage_(message);\n };\n Connection.prototype.onPrimaryResponse_ = function () {\n if (!this.isHealthy_) {\n this.primaryResponsesRequired_--;\n if (this.primaryResponsesRequired_ <= 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n }\n }\n };\n Connection.prototype.onControl_ = function (controlData) {\n var cmd = util_1.requireKey(MESSAGE_TYPE, controlData);\n if (MESSAGE_DATA in controlData) {\n var payload = controlData[MESSAGE_DATA];\n if (cmd === SERVER_HELLO) {\n this.onHandshake_(payload);\n }\n else if (cmd === END_TRANSMISSION) {\n this.log_('recvd end transmission on primary');\n this.rx_ = this.secondaryConn_;\n for (var i = 0; i < this.pendingDataMessages.length; ++i) {\n this.onDataMessage_(this.pendingDataMessages[i]);\n }\n this.pendingDataMessages = [];\n this.tryCleanupConnection();\n }\n else if (cmd === CONTROL_SHUTDOWN) {\n // This was previously the 'onKill' callback passed to the lower-level connection\n // payload in this case is the reason for the shutdown. Generally a human-readable error\n this.onConnectionShutdown_(payload);\n }\n else if (cmd === CONTROL_RESET) {\n // payload in this case is the host we should contact\n this.onReset_(payload);\n }\n else if (cmd === CONTROL_ERROR) {\n util_1.error('Server Error: ' + payload);\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on primary.');\n this.onPrimaryResponse_();\n this.sendPingOnPrimaryIfNecessary_();\n }\n else {\n util_1.error('Unknown control packet command: ' + cmd);\n }\n }\n };\n /**\n *\n * @param {Object} handshake The handshake data returned from the server\n * @private\n */\n Connection.prototype.onHandshake_ = function (handshake) {\n var timestamp = handshake.ts;\n var version = handshake.v;\n var host = handshake.h;\n this.sessionId = handshake.s;\n this.repoInfo_.updateHost(host);\n // if we've already closed the connection, then don't bother trying to progress further\n if (this.state_ == 0 /* CONNECTING */) {\n this.conn_.start();\n this.onConnectionEstablished_(this.conn_, timestamp);\n if (Constants_1.PROTOCOL_VERSION !== version) {\n util_1.warn('Protocol version mismatch detected');\n }\n // TODO: do we want to upgrade? when? maybe a delay?\n this.tryStartUpgrade_();\n }\n };\n Connection.prototype.tryStartUpgrade_ = function () {\n var conn = this.transportManager_.upgradeTransport();\n if (conn) {\n this.startUpgrade_(conn);\n }\n };\n Connection.prototype.startUpgrade_ = function (conn) {\n var _this = this;\n this.secondaryConn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.sessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.secondaryResponsesRequired_ =\n conn['responsesRequiredToBeHealthy'] || 0;\n var onMessage = this.connReceiver_(this.secondaryConn_);\n var onDisconnect = this.disconnReceiver_(this.secondaryConn_);\n this.secondaryConn_.open(onMessage, onDisconnect);\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\n util_1.setTimeoutNonBlocking(function () {\n if (_this.secondaryConn_) {\n _this.log_('Timed out trying to upgrade.');\n _this.secondaryConn_.close();\n }\n }, Math.floor(UPGRADE_TIMEOUT));\n };\n Connection.prototype.onReset_ = function (host) {\n this.log_('Reset packet received. New host: ' + host);\n this.repoInfo_.updateHost(host);\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\n // We don't currently support resets after the connection has already been established\n if (this.state_ === 1 /* CONNECTED */) {\n this.close();\n }\n else {\n // Close whatever connections we have open and start again.\n this.closeConnections_();\n this.start_();\n }\n };\n Connection.prototype.onConnectionEstablished_ = function (conn, timestamp) {\n var _this = this;\n this.log_('Realtime connection established.');\n this.conn_ = conn;\n this.state_ = 1 /* CONNECTED */;\n if (this.onReady_) {\n this.onReady_(timestamp, this.sessionId);\n this.onReady_ = null;\n }\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\n // send some pings.\n if (this.primaryResponsesRequired_ === 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n }\n else {\n util_1.setTimeoutNonBlocking(function () {\n _this.sendPingOnPrimaryIfNecessary_();\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\n }\n };\n Connection.prototype.sendPingOnPrimaryIfNecessary_ = function () {\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\n if (!this.isHealthy_ && this.state_ === 1 /* CONNECTED */) {\n this.log_('sending ping on primary.');\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\n }\n };\n Connection.prototype.onSecondaryConnectionLost_ = function () {\n var conn = this.secondaryConn_;\n this.secondaryConn_ = null;\n if (this.tx_ === conn || this.rx_ === conn) {\n // we are relying on this connection already in some capacity. Therefore, a failure is real\n this.close();\n }\n };\n /**\n *\n * @param {boolean} everConnected Whether or not the connection ever reached a server. Used to determine if\n * we should flush the host cache\n * @private\n */\n Connection.prototype.onConnectionLost_ = function (everConnected) {\n this.conn_ = null;\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\n if (!everConnected && this.state_ === 0 /* CONNECTING */) {\n this.log_('Realtime connection failed.');\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\n if (this.repoInfo_.isCacheableHost()) {\n storage_1.PersistentStorage.remove('host:' + this.repoInfo_.host);\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\n this.repoInfo_.internalHost = this.repoInfo_.host;\n }\n }\n else if (this.state_ === 1 /* CONNECTED */) {\n this.log_('Realtime connection lost.');\n }\n this.close();\n };\n /**\n *\n * @param {string} reason\n * @private\n */\n Connection.prototype.onConnectionShutdown_ = function (reason) {\n this.log_('Connection shutdown command received. Shutting down...');\n if (this.onKill_) {\n this.onKill_(reason);\n this.onKill_ = null;\n }\n // We intentionally don't want to fire onDisconnect (kill is a different case),\n // so clear the callback.\n this.onDisconnect_ = null;\n this.close();\n };\n Connection.prototype.sendData_ = function (data) {\n if (this.state_ !== 1 /* CONNECTED */) {\n throw 'Connection is not connected';\n }\n else {\n this.tx_.send(data);\n }\n };\n /**\n * Cleans up this connection, calling the appropriate callbacks\n */\n Connection.prototype.close = function () {\n if (this.state_ !== 2 /* DISCONNECTED */) {\n this.log_('Closing realtime connection.');\n this.state_ = 2 /* DISCONNECTED */;\n this.closeConnections_();\n if (this.onDisconnect_) {\n this.onDisconnect_();\n this.onDisconnect_ = null;\n }\n }\n };\n /**\n *\n * @private\n */\n Connection.prototype.closeConnections_ = function () {\n this.log_('Shutting down all connections');\n if (this.conn_) {\n this.conn_.close();\n this.conn_ = null;\n }\n if (this.secondaryConn_) {\n this.secondaryConn_.close();\n this.secondaryConn_ = null;\n }\n if (this.healthyTimeout_) {\n clearTimeout(this.healthyTimeout_);\n this.healthyTimeout_ = null;\n }\n };\n return Connection;\n}());\nexports.Connection = Connection;\n\n//# sourceMappingURL=Connection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/Connection.js\n// module id = 52\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../core/util/util\");\nvar CountedSet_1 = require(\"../core/util/CountedSet\");\nvar StatsManager_1 = require(\"../core/stats/StatsManager\");\nvar PacketReceiver_1 = require(\"./polling/PacketReceiver\");\nvar Constants_1 = require(\"./Constants\");\nvar util_2 = require(\"@firebase/util\");\nvar util_3 = require(\"@firebase/util\");\n// URL query parameters associated with longpolling\nexports.FIREBASE_LONGPOLL_START_PARAM = 'start';\nexports.FIREBASE_LONGPOLL_CLOSE_COMMAND = 'close';\nexports.FIREBASE_LONGPOLL_COMMAND_CB_NAME = 'pLPCommand';\nexports.FIREBASE_LONGPOLL_DATA_CB_NAME = 'pRTLPCB';\nexports.FIREBASE_LONGPOLL_ID_PARAM = 'id';\nexports.FIREBASE_LONGPOLL_PW_PARAM = 'pw';\nexports.FIREBASE_LONGPOLL_SERIAL_PARAM = 'ser';\nexports.FIREBASE_LONGPOLL_CALLBACK_ID_PARAM = 'cb';\nexports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM = 'seg';\nexports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET = 'ts';\nexports.FIREBASE_LONGPOLL_DATA_PARAM = 'd';\nexports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM = 'disconn';\nexports.FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM = 'dframe';\n//Data size constants.\n//TODO: Perf: the maximum length actually differs from browser to browser.\n// We should check what browser we're on and set accordingly.\nvar MAX_URL_DATA_SIZE = 1870;\nvar SEG_HEADER_SIZE = 30; //ie: &seg=8299234&ts=982389123&d=\nvar MAX_PAYLOAD_SIZE = MAX_URL_DATA_SIZE - SEG_HEADER_SIZE;\n/**\n * Keepalive period\n * send a fresh request at minimum every 25 seconds. Opera has a maximum request\n * length of 30 seconds that we can't exceed.\n * @const\n * @type {number}\n */\nvar KEEPALIVE_REQUEST_INTERVAL = 25000;\n/**\n * How long to wait before aborting a long-polling connection attempt.\n * @const\n * @type {number}\n */\nvar LP_CONNECT_TIMEOUT = 30000;\n/**\n * This class manages a single long-polling connection.\n *\n * @constructor\n * @implements {Transport}\n */\nvar BrowserPollConnection = /** @class */ (function () {\n /**\n * @param {string} connId An identifier for this connection, used for logging\n * @param {RepoInfo} repoInfo The info for the endpoint to send data to.\n * @param {string=} transportSessionId Optional transportSessionid if we are reconnecting for an existing\n * transport session\n * @param {string=} lastSessionId Optional lastSessionId if the PersistentConnection has already created a\n * connection previously\n */\n function BrowserPollConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.repoInfo = repoInfo;\n this.transportSessionId = transportSessionId;\n this.lastSessionId = lastSessionId;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.everConnected_ = false;\n this.log_ = util_1.logWrapper(connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.urlFn = function (params) {\n return repoInfo.connectionURL(Constants_1.LONG_POLLING, params);\n };\n }\n /**\n *\n * @param {function(Object)} onMessage Callback when messages arrive\n * @param {function()} onDisconnect Callback with connection lost.\n */\n BrowserPollConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.curSegmentNum = 0;\n this.onDisconnect_ = onDisconnect;\n this.myPacketOrderer = new PacketReceiver_1.PacketReceiver(onMessage);\n this.isClosed_ = false;\n this.connectTimeoutTimer_ = setTimeout(function () {\n _this.log_('Timed out trying to connect.');\n // Make sure we clear the host cache\n _this.onClosed_();\n _this.connectTimeoutTimer_ = null;\n }, Math.floor(LP_CONNECT_TIMEOUT));\n // Ensure we delay the creation of the iframe until the DOM is loaded.\n util_1.executeWhenDOMReady(function () {\n if (_this.isClosed_)\n return;\n //Set up a callback that gets triggered once a connection is set up.\n _this.scriptTagHolder = new FirebaseIFrameScriptHolder(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var command = args[0], arg1 = args[1], arg2 = args[2], arg3 = args[3], arg4 = args[4];\n _this.incrementIncomingBytes_(args);\n if (!_this.scriptTagHolder)\n return; // we closed the connection.\n if (_this.connectTimeoutTimer_) {\n clearTimeout(_this.connectTimeoutTimer_);\n _this.connectTimeoutTimer_ = null;\n }\n _this.everConnected_ = true;\n if (command == exports.FIREBASE_LONGPOLL_START_PARAM) {\n _this.id = arg1;\n _this.password = arg2;\n }\n else if (command === exports.FIREBASE_LONGPOLL_CLOSE_COMMAND) {\n // Don't clear the host cache. We got a response from the server, so we know it's reachable\n if (arg1) {\n // We aren't expecting any more data (other than what the server's already in the process of sending us\n // through our already open polls), so don't send any more.\n _this.scriptTagHolder.sendNewPolls = false;\n // arg1 in this case is the last response number sent by the server. We should try to receive\n // all of the responses up to this one before closing\n _this.myPacketOrderer.closeAfter(arg1, function () {\n _this.onClosed_();\n });\n }\n else {\n _this.onClosed_();\n }\n }\n else {\n throw new Error('Unrecognized command received: ' + command);\n }\n }, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var pN = args[0], data = args[1];\n _this.incrementIncomingBytes_(args);\n _this.myPacketOrderer.handleResponse(pN, data);\n }, function () {\n _this.onClosed_();\n }, _this.urlFn);\n //Send the initial request to connect. The serial number is simply to keep the browser from pulling previous results\n //from cache.\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_START_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = Math.floor(Math.random() * 100000000);\n if (_this.scriptTagHolder.uniqueCallbackIdentifier)\n urlParams[exports.FIREBASE_LONGPOLL_CALLBACK_ID_PARAM] = _this.scriptTagHolder.uniqueCallbackIdentifier;\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (_this.transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = _this.transportSessionId;\n }\n if (_this.lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = _this.lastSessionId;\n }\n if (!util_3.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n var connectURL = _this.urlFn(urlParams);\n _this.log_('Connecting via long-poll to ' + connectURL);\n _this.scriptTagHolder.addTag(connectURL, function () {\n /* do nothing */\n });\n });\n };\n /**\n * Call this when a handshake has completed successfully and we want to consider the connection established\n */\n BrowserPollConnection.prototype.start = function () {\n this.scriptTagHolder.startLongPoll(this.id, this.password);\n this.addDisconnectPingFrame(this.id, this.password);\n };\n /**\n * Forces long polling to be considered as a potential transport\n */\n BrowserPollConnection.forceAllow = function () {\n BrowserPollConnection.forceAllow_ = true;\n };\n /**\n * Forces longpolling to not be considered as a potential transport\n */\n BrowserPollConnection.forceDisallow = function () {\n BrowserPollConnection.forceDisallow_ = true;\n };\n // Static method, use string literal so it can be accessed in a generic way\n BrowserPollConnection.isAvailable = function () {\n // NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in\n // the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).\n return (BrowserPollConnection.forceAllow_ ||\n (!BrowserPollConnection.forceDisallow_ &&\n typeof document !== 'undefined' &&\n document.createElement != null &&\n !util_1.isChromeExtensionContentScript() &&\n !util_1.isWindowsStoreApp() &&\n !util_3.isNodeSdk()));\n };\n /**\n * No-op for polling\n */\n BrowserPollConnection.prototype.markConnectionHealthy = function () { };\n /**\n * Stops polling and cleans up the iframe\n * @private\n */\n BrowserPollConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.scriptTagHolder) {\n this.scriptTagHolder.close();\n this.scriptTagHolder = null;\n }\n //remove the disconnect frame, which will trigger an XHR call to the server to tell it we're leaving.\n if (this.myDisconnFrame) {\n document.body.removeChild(this.myDisconnFrame);\n this.myDisconnFrame = null;\n }\n if (this.connectTimeoutTimer_) {\n clearTimeout(this.connectTimeoutTimer_);\n this.connectTimeoutTimer_ = null;\n }\n };\n /**\n * Triggered when this transport is closed\n * @private\n */\n BrowserPollConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('Longpoll is closing itself');\n this.shutdown_();\n if (this.onDisconnect_) {\n this.onDisconnect_(this.everConnected_);\n this.onDisconnect_ = null;\n }\n }\n };\n /**\n * External-facing close handler. RealTime has requested we shut down. Kill our connection and tell the server\n * that we've left.\n */\n BrowserPollConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('Longpoll is being closed.');\n this.shutdown_();\n }\n };\n /**\n * Send the JSON object down to the server. It will need to be stringified, base64 encoded, and then\n * broken into chunks (since URLs have a small maximum length).\n * @param {!Object} data The JSON data to transmit.\n */\n BrowserPollConnection.prototype.send = function (data) {\n var dataStr = util_2.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //first, lets get the base64-encoded data\n var base64data = util_2.base64Encode(dataStr);\n //We can only fit a certain amount in each URL, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_1.splitStringBySize(base64data, MAX_PAYLOAD_SIZE);\n //Enqueue each segment for transmission. We assign each chunk a sequential ID and a total number\n //of segments so that we can reassemble the packet on the server.\n for (var i = 0; i < dataSegs.length; i++) {\n this.scriptTagHolder.enqueueSegment(this.curSegmentNum, dataSegs.length, dataSegs[i]);\n this.curSegmentNum++;\n }\n };\n /**\n * This is how we notify the server that we're leaving.\n * We aren't able to send requests with DHTML on a window close event, but we can\n * trigger XHR requests in some browsers (everything but Opera basically).\n * @param {!string} id\n * @param {!string} pw\n */\n BrowserPollConnection.prototype.addDisconnectPingFrame = function (id, pw) {\n if (util_3.isNodeSdk())\n return;\n this.myDisconnFrame = document.createElement('iframe');\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = id;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = pw;\n this.myDisconnFrame.src = this.urlFn(urlParams);\n this.myDisconnFrame.style.display = 'none';\n document.body.appendChild(this.myDisconnFrame);\n };\n /**\n * Used to track the bytes received by this client\n * @param {*} args\n * @private\n */\n BrowserPollConnection.prototype.incrementIncomingBytes_ = function (args) {\n // TODO: This is an annoying perf hit just to track the number of incoming bytes. Maybe it should be opt-in.\n var bytesReceived = util_2.stringify(args).length;\n this.bytesReceived += bytesReceived;\n this.stats_.incrementCounter('bytes_received', bytesReceived);\n };\n return BrowserPollConnection;\n}());\nexports.BrowserPollConnection = BrowserPollConnection;\n/*********************************************************************************************\n * A wrapper around an iframe that is used as a long-polling script holder.\n * @constructor\n *********************************************************************************************/\nvar FirebaseIFrameScriptHolder = /** @class */ (function () {\n /**\n * @param commandCB - The callback to be called when control commands are recevied from the server.\n * @param onMessageCB - The callback to be triggered when responses arrive from the server.\n * @param onDisconnect - The callback to be triggered when this tag holder is closed\n * @param urlFn - A function that provides the URL of the endpoint to send data to.\n */\n function FirebaseIFrameScriptHolder(commandCB, onMessageCB, onDisconnect, urlFn) {\n this.onDisconnect = onDisconnect;\n this.urlFn = urlFn;\n //We maintain a count of all of the outstanding requests, because if we have too many active at once it can cause\n //problems in some browsers.\n /**\n * @type {CountedSet.}\n */\n this.outstandingRequests = new CountedSet_1.CountedSet();\n //A queue of the pending segments waiting for transmission to the server.\n this.pendingSegs = [];\n //A serial number. We use this for two things:\n // 1) A way to ensure the browser doesn't cache responses to polls\n // 2) A way to make the server aware when long-polls arrive in a different order than we started them. The\n // server needs to release both polls in this case or it will cause problems in Opera since Opera can only execute\n // JSONP code in the order it was added to the iframe.\n this.currentSerial = Math.floor(Math.random() * 100000000);\n // This gets set to false when we're \"closing down\" the connection (e.g. we're switching transports but there's still\n // incoming data from the server that we're waiting for).\n this.sendNewPolls = true;\n if (!util_3.isNodeSdk()) {\n //Each script holder registers a couple of uniquely named callbacks with the window. These are called from the\n //iframes where we put the long-polling script tags. We have two callbacks:\n // 1) Command Callback - Triggered for control issues, like starting a connection.\n // 2) Message Callback - Triggered when new data arrives.\n this.uniqueCallbackIdentifier = util_1.LUIDGenerator();\n window[exports.FIREBASE_LONGPOLL_COMMAND_CB_NAME + this.uniqueCallbackIdentifier] = commandCB;\n window[exports.FIREBASE_LONGPOLL_DATA_CB_NAME + this.uniqueCallbackIdentifier] = onMessageCB;\n //Create an iframe for us to add script tags to.\n this.myIFrame = FirebaseIFrameScriptHolder.createIFrame_();\n // Set the iframe's contents.\n var script = '';\n // if we set a javascript url, it's IE and we need to set the document domain. The javascript url is sufficient\n // for ie9, but ie8 needs to do it again in the document itself.\n if (this.myIFrame.src &&\n this.myIFrame.src.substr(0, 'javascript:'.length) === 'javascript:') {\n var currentDomain = document.domain;\n script = '';\n }\n var iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n }\n catch (e) {\n util_1.log('frame writing exception');\n if (e.stack) {\n util_1.log(e.stack);\n }\n util_1.log(e);\n }\n }\n else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n * @private\n * @return {Element}\n */\n FirebaseIFrameScriptHolder.createIFrame_ = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n var a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n util_1.log('No IE domain setting required');\n }\n }\n catch (e) {\n var domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n }\n else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n }\n else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n }\n else if (iframe.document) {\n iframe.doc = iframe.document; //others?\n }\n return iframe;\n };\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n FirebaseIFrameScriptHolder.prototype.close = function () {\n var _this = this;\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\n this.myIFrame.doc.body.innerHTML = '';\n setTimeout(function () {\n if (_this.myIFrame !== null) {\n document.body.removeChild(_this.myIFrame);\n _this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n if (util_3.isNodeSdk() && this.myID) {\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM] = 't';\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n var theURL = this.urlFn(urlParams);\n FirebaseIFrameScriptHolder.nodeRestRequest(theURL);\n }\n // Protect from being called recursively.\n var onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n };\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param {!string} id - The ID of this connection\n * @param {!string} pw - The password for this connection\n */\n FirebaseIFrameScriptHolder.prototype.startLongPoll = function (id, pw) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) { }\n };\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n FirebaseIFrameScriptHolder.prototype.newRequest_ = function () {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.count() < (this.pendingSegs.length > 0 ? 2 : 1)) {\n //construct our url\n this.currentSerial++;\n var urlParams = {};\n urlParams[exports.FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[exports.FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[exports.FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n var theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n var curDataString = '';\n var i = 0;\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n var nextSeg = this.pendingSegs[0];\n if (nextSeg.d.length + SEG_HEADER_SIZE + curDataString.length <=\n MAX_URL_DATA_SIZE) {\n //great, the segment will fit. Lets append it.\n var theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n exports.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n exports.FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n }\n else {\n break;\n }\n }\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n FirebaseIFrameScriptHolder.prototype.enqueueSegment = function (segnum, totalsegs, data) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n };\n /**\n * Add a script tag for a regular long-poll request.\n * @param {!string} url - The URL of the script tag.\n * @param {!number} serial - The serial number of the request.\n * @private\n */\n FirebaseIFrameScriptHolder.prototype.addLongPollTag_ = function (url, serial) {\n var _this = this;\n //remember that we sent this request.\n this.outstandingRequests.add(serial, 1);\n var doNewRequest = function () {\n _this.outstandingRequests.remove(serial);\n _this.newRequest_();\n };\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n var keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\n var readyStateCB = function () {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n this.addTag(url, readyStateCB);\n };\n /**\n * Add an arbitrary script tag to the iframe.\n * @param {!string} url - The URL for the script tag source.\n * @param {!function()} loadCB - A callback to be triggered once the script has loaded.\n */\n FirebaseIFrameScriptHolder.prototype.addTag = function (url, loadCB) {\n var _this = this;\n if (util_3.isNodeSdk()) {\n this.doNodeLongPoll(url, loadCB);\n }\n else {\n setTimeout(function () {\n try {\n // if we're already closed, don't add this poll\n if (!_this.sendNewPolls)\n return;\n var newScript_1 = _this.myIFrame.doc.createElement('script');\n newScript_1.type = 'text/javascript';\n newScript_1.async = true;\n newScript_1.src = url;\n newScript_1.onload = newScript_1.onreadystatechange = function () {\n var rstate = newScript_1.readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n newScript_1.onload = newScript_1.onreadystatechange = null;\n if (newScript_1.parentNode) {\n newScript_1.parentNode.removeChild(newScript_1);\n }\n loadCB();\n }\n };\n newScript_1.onerror = function () {\n util_1.log('Long-poll script failed to load: ' + url);\n _this.sendNewPolls = false;\n _this.close();\n };\n _this.myIFrame.doc.body.appendChild(newScript_1);\n }\n catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n };\n return FirebaseIFrameScriptHolder;\n}());\nexports.FirebaseIFrameScriptHolder = FirebaseIFrameScriptHolder;\n\n//# sourceMappingURL=BrowserPollConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/BrowserPollConnection.js\n// module id = 53\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = require(\"@firebase/app\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../core/util/util\");\nvar StatsManager_1 = require(\"../core/stats/StatsManager\");\nvar Constants_1 = require(\"./Constants\");\nvar util_3 = require(\"@firebase/util\");\nvar storage_1 = require(\"../core/storage/storage\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar WEBSOCKET_MAX_FRAME_SIZE = 16384;\nvar WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\nvar WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n}\nelse if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\nfunction setWebSocketImpl(impl) {\n WebSocketImpl = impl;\n}\nexports.setWebSocketImpl = setWebSocketImpl;\n/**\n * Create a new websocket connection with the given callbacks.\n * @constructor\n * @implements {Transport}\n */\nvar WebSocketConnection = /** @class */ (function () {\n /**\n * @param {string} connId identifier for this transport\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n */\n function WebSocketConnection(connId, repoInfo, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.keepaliveTimer = null;\n this.frames = null;\n this.totalFrames = 0;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.log_ = util_2.logWrapper(this.connId);\n this.stats_ = StatsManager_1.StatsManager.getCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId);\n }\n /**\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\n * @return {string} connection url\n * @private\n */\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId) {\n var urlParams = {};\n urlParams[Constants_1.VERSION_PARAM] = Constants_1.PROTOCOL_VERSION;\n if (!util_5.isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.href &&\n location.href.indexOf(Constants_1.FORGE_DOMAIN) !== -1) {\n urlParams[Constants_1.REFERER_PARAM] = Constants_1.FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[Constants_1.TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[Constants_1.LAST_SESSION_PARAM] = lastSessionId;\n }\n return repoInfo.connectionURL(Constants_1.WEBSOCKET, urlParams);\n };\n /**\n *\n * @param onMessage Callback when messages arrive\n * @param onDisconnect Callback with connection lost.\n */\n WebSocketConnection.prototype.open = function (onMessage, onDisconnect) {\n var _this = this;\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n this.log_('Websocket connecting to ' + this.connURL);\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n storage_1.PersistentStorage.set('previous_websocket_failure', true);\n try {\n if (util_5.isNodeSdk()) {\n var device = util_3.CONSTANTS.NODE_ADMIN ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n var options = {\n headers: {\n 'User-Agent': \"Firebase/\" + Constants_1.PROTOCOL_VERSION + \"/\" + app_1.default.SDK_VERSION + \"/\" + process.platform + \"/\" + device\n }\n };\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n var env = process['env'];\n var proxy = this.connURL.indexOf('wss://') == 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n }\n else {\n this.mySock = new WebSocketImpl(this.connURL);\n }\n }\n catch (e) {\n this.log_('Error instantiating WebSocket.');\n var error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n this.mySock.onopen = function () {\n _this.log_('Websocket connected.');\n _this.everConnected_ = true;\n };\n this.mySock.onclose = function () {\n _this.log_('Websocket connection was disconnected.');\n _this.mySock = null;\n _this.onClosed_();\n };\n this.mySock.onmessage = function (m) {\n _this.handleIncomingFrame(m);\n };\n this.mySock.onerror = function (e) {\n _this.log_('WebSocket error. Closing connection.');\n var error = e.message || e.data;\n if (error) {\n _this.log_(error);\n }\n _this.onClosed_();\n };\n };\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n WebSocketConnection.prototype.start = function () { };\n WebSocketConnection.forceDisallow = function () {\n WebSocketConnection.forceDisallow_ = true;\n };\n WebSocketConnection.isAvailable = function () {\n var isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n var oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n return (!isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_);\n };\n /**\n * Returns true if we previously failed to connect with this transport.\n * @return {boolean}\n */\n WebSocketConnection.previouslyFailed = function () {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (storage_1.PersistentStorage.isInMemoryStorage ||\n storage_1.PersistentStorage.get('previous_websocket_failure') === true);\n };\n WebSocketConnection.prototype.markConnectionHealthy = function () {\n storage_1.PersistentStorage.remove('previous_websocket_failure');\n };\n WebSocketConnection.prototype.appendFrame_ = function (data) {\n this.frames.push(data);\n if (this.frames.length == this.totalFrames) {\n var fullMess = this.frames.join('');\n this.frames = null;\n var jsonMess = util_4.jsonEval(fullMess);\n //handle the message\n this.onMessage(jsonMess);\n }\n };\n /**\n * @param {number} frameCount The number of frames we are expecting from the server\n * @private\n */\n WebSocketConnection.prototype.handleNewFrameCount_ = function (frameCount) {\n this.totalFrames = frameCount;\n this.frames = [];\n };\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @param {!String} data\n * @return {?String} Any remaining data to be process, or null if there is none\n * @private\n */\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\n util_1.assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n var frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n };\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess The frame data\n */\n WebSocketConnection.prototype.handleIncomingFrame = function (mess) {\n if (this.mySock === null)\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n var data = mess['data'];\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n this.resetKeepAlive();\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n }\n else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n var remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n };\n /**\n * Send a message to the server\n * @param {Object} data The JSON object to transmit\n */\n WebSocketConnection.prototype.send = function (data) {\n this.resetKeepAlive();\n var dataStr = util_4.stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n var dataSegs = util_2.splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n //Send the actual data in segments.\n for (var i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n };\n WebSocketConnection.prototype.shutdown_ = function () {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n };\n WebSocketConnection.prototype.onClosed_ = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n };\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n WebSocketConnection.prototype.close = function () {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n };\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n WebSocketConnection.prototype.resetKeepAlive = function () {\n var _this = this;\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(function () {\n //If there has been no websocket activity for a while, send a no-op\n if (_this.mySock) {\n _this.sendString_('0');\n }\n _this.resetKeepAlive();\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\n };\n /**\n * Send a string over the websocket.\n *\n * @param {string} str String to send.\n * @private\n */\n WebSocketConnection.prototype.sendString_ = function (str) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n }\n catch (e) {\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\n setTimeout(this.onClosed_.bind(this), 0);\n }\n };\n /**\n * Number of response before we consider the connection \"healthy.\"\n * @type {number}\n */\n WebSocketConnection.responsesRequiredToBeHealthy = 2;\n /**\n * Time to wait for the connection te become healthy before giving up.\n * @type {number}\n */\n WebSocketConnection.healthyTimeout = 30000;\n return WebSocketConnection;\n}());\nexports.WebSocketConnection = WebSocketConnection;\n\n//# sourceMappingURL=WebSocketConnection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/WebSocketConnection.js\n// module id = 54\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nvar ServerActions = /** @class */ (function () {\n function ServerActions() {\n }\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, ?string)} onComplete\n * @param {string=} hash\n */\n ServerActions.prototype.merge = function (pathString, data, onComplete, hash) { };\n /**\n * Refreshes the auth token for the current connection.\n * @param {string} token The authentication token\n */\n ServerActions.prototype.refreshAuthToken = function (token) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {*} data\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\n /**\n * @param {string} pathString\n * @param {function(string, string)=} onComplete\n */\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\n /**\n * @param {Object.} stats\n */\n ServerActions.prototype.reportStats = function (stats) { };\n return ServerActions;\n}());\nexports.ServerActions = ServerActions;\n\n//# sourceMappingURL=ServerActions.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/ServerActions.js\n// module id = 55\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = require(\"./IndexedFilter\");\nvar PriorityIndex_1 = require(\"../../snap/indexes/PriorityIndex\");\nvar Node_1 = require(\"../../../core/snap/Node\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar RangedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function RangedFilter(params) {\n this.indexedFilter_ = new IndexedFilter_1.IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n }\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getStartPost = function () {\n return this.startPost_;\n };\n /**\n * @return {!NamedNode}\n */\n RangedFilter.prototype.getEndPost = function () {\n return this.endPost_;\n };\n /**\n * @param {!NamedNode} node\n * @return {boolean}\n */\n RangedFilter.prototype.matches = function (node) {\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\n this.index_.compare(node, this.getEndPost()) <= 0);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n var filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var self = this;\n newSnap.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n if (!self.matches(new Node_1.NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndexedFilter = function () {\n return this.indexedFilter_;\n };\n /**\n * @inheritDoc\n */\n RangedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getStartPost_ = function (params) {\n if (params.hasStart()) {\n var startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n }\n else {\n return params.getIndex().minPost();\n }\n };\n /**\n * @param {!QueryParams} params\n * @return {!NamedNode}\n * @private\n */\n RangedFilter.getEndPost_ = function (params) {\n if (params.hasEnd()) {\n var endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n }\n else {\n return params.getIndex().maxPost();\n }\n };\n return RangedFilter;\n}());\nexports.RangedFilter = RangedFilter;\n\n//# sourceMappingURL=RangedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/RangedFilter.js\n// module id = 56\n// module chunks = 0","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nmodule.exports = require('@firebase/database');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./database/index.js\n// module id = 78\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar app_1 = require(\"@firebase/app\");\nvar Database_1 = require(\"./src/api/Database\");\nexports.Database = Database_1.Database;\nvar Query_1 = require(\"./src/api/Query\");\nexports.Query = Query_1.Query;\nvar Reference_1 = require(\"./src/api/Reference\");\nexports.Reference = Reference_1.Reference;\nvar util_1 = require(\"./src/core/util/util\");\nexports.enableLogging = util_1.enableLogging;\nvar RepoManager_1 = require(\"./src/core/RepoManager\");\nvar INTERNAL = require(\"./src/api/internal\");\nvar TEST_ACCESS = require(\"./src/api/test_access\");\nvar util_2 = require(\"@firebase/util\");\nvar ServerValue = Database_1.Database.ServerValue;\nexports.ServerValue = ServerValue;\nfunction registerDatabase(instance) {\n // Register the Database Service with the 'firebase' namespace.\n var namespace = instance.INTERNAL.registerService('database', function (app, unused, url) { return RepoManager_1.RepoManager.getInstance().databaseFromApp(app, url); }, \n // firebase.database namespace properties\n {\n Reference: Reference_1.Reference,\n Query: Query_1.Query,\n Database: Database_1.Database,\n enableLogging: util_1.enableLogging,\n INTERNAL: INTERNAL,\n ServerValue: ServerValue,\n TEST_ACCESS: TEST_ACCESS\n }, null, true);\n if (util_2.isNodeSdk()) {\n module.exports = namespace;\n }\n}\nexports.registerDatabase = registerDatabase;\nregisterDatabase(app_1.default);\nvar DataSnapshot_1 = require(\"./src/api/DataSnapshot\");\nexports.DataSnapshot = DataSnapshot_1.DataSnapshot;\nvar onDisconnect_1 = require(\"./src/api/onDisconnect\");\nexports.OnDisconnect = onDisconnect_1.OnDisconnect;\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/index.js\n// module id = 79\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Wraps a DOM Storage object and:\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\n *\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\n * and one for localStorage.\n *\n * @constructor\n */\nvar DOMStorageWrapper = /** @class */ (function () {\n /**\n * @param {Storage} domStorage_ The underlying storage object (e.g. localStorage or sessionStorage)\n */\n function DOMStorageWrapper(domStorage_) {\n this.domStorage_ = domStorage_;\n // Use a prefix to avoid collisions with other stuff saved by the app.\n this.prefix_ = 'firebase:';\n }\n /**\n * @param {string} key The key to save the value under\n * @param {?Object} value The value being stored, or null to remove the key.\n */\n DOMStorageWrapper.prototype.set = function (key, value) {\n if (value == null) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n else {\n this.domStorage_.setItem(this.prefixedName_(key), util_1.stringify(value));\n }\n };\n /**\n * @param {string} key\n * @return {*} The value that was stored under this key, or null\n */\n DOMStorageWrapper.prototype.get = function (key) {\n var storedVal = this.domStorage_.getItem(this.prefixedName_(key));\n if (storedVal == null) {\n return null;\n }\n else {\n return util_1.jsonEval(storedVal);\n }\n };\n /**\n * @param {string} key\n */\n DOMStorageWrapper.prototype.remove = function (key) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n };\n /**\n * @param {string} name\n * @return {string}\n */\n DOMStorageWrapper.prototype.prefixedName_ = function (name) {\n return this.prefix_ + name;\n };\n DOMStorageWrapper.prototype.toString = function () {\n return this.domStorage_.toString();\n };\n return DOMStorageWrapper;\n}());\nexports.DOMStorageWrapper = DOMStorageWrapper;\n\n//# sourceMappingURL=DOMStorageWrapper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/DOMStorageWrapper.js\n// module id = 80\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\n * (TODO: create interface for both to implement).\n *\n * @constructor\n */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.cache_ = {};\n this.isInMemoryStorage = true;\n }\n MemoryStorage.prototype.set = function (key, value) {\n if (value == null) {\n delete this.cache_[key];\n }\n else {\n this.cache_[key] = value;\n }\n };\n MemoryStorage.prototype.get = function (key) {\n if (util_1.contains(this.cache_, key)) {\n return this.cache_[key];\n }\n return null;\n };\n MemoryStorage.prototype.remove = function (key) {\n delete this.cache_[key];\n };\n return MemoryStorage;\n}());\nexports.MemoryStorage = MemoryStorage;\n\n//# sourceMappingURL=MemoryStorage.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/storage/MemoryStorage.js\n// module id = 81\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar TransactionResult = /** @class */ (function () {\n /**\n * A type for the resolve value of Firebase.transaction.\n * @constructor\n * @dict\n * @param {boolean} committed\n * @param {DataSnapshot} snapshot\n */\n function TransactionResult(committed, snapshot) {\n this.committed = committed;\n this.snapshot = snapshot;\n }\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\n // for end-users\n TransactionResult.prototype.toJSON = function () {\n util_1.validateArgCount('TransactionResult.toJSON', 0, 1, arguments.length);\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\n };\n return TransactionResult;\n}());\nexports.TransactionResult = TransactionResult;\n\n//# sourceMappingURL=TransactionResult.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/TransactionResult.js\n// module id = 82\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Fancy ID generator that creates 20-character string identifiers with the\n * following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\n * collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\n * that will sort properly).\n * 4. They're monotonically increasing. Even if you generate more than one in\n * the same timestamp, the latter ones will sort after the former ones. We do\n * this by using the previous random bits but \"incrementing\" them by 1 (only\n * in the case of a timestamp collision).\n */\nexports.nextPushId = (function () {\n // Modeled after base64 web-safe chars, but ordered by ASCII.\n var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n // Timestamp of last push, used to prevent local collisions if you push twice\n // in one ms.\n var lastPushTime = 0;\n // We generate 72-bits of randomness which get turned into 12 characters and\n // appended to the timestamp to prevent collisions with other clients. We\n // store the last characters we generated because in the event of a collision,\n // we'll use those same characters except \"incremented\" by one.\n var lastRandChars = [];\n return function (now) {\n var duplicateTime = now === lastPushTime;\n lastPushTime = now;\n var i;\n var timeStampChars = new Array(8);\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n // NOTE: Can't use << here because javascript will convert to int and lose\n // the upper bits.\n now = Math.floor(now / 64);\n }\n util_1.assert(now === 0, 'Cannot push at time == 0');\n var id = timeStampChars.join('');\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n }\n else {\n // If the timestamp hasn't changed since last push, use the same random\n // number, except incremented by 1.\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n lastRandChars[i] = 0;\n }\n lastRandChars[i]++;\n }\n for (i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n util_1.assert(id.length === 20, 'nextPushId: Length should be 20.');\n return id;\n };\n})();\n\n//# sourceMappingURL=NextPushId.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/NextPushId.js\n// module id = 83\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DataSnapshot_1 = require(\"../../api/DataSnapshot\");\nvar Event_1 = require(\"./Event\");\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Represents registration for 'value' events.\n */\nvar ValueEventRegistration = /** @class */ (function () {\n /**\n * @param {?function(!DataSnapshot)} callback_\n * @param {?function(Error)} cancelCallback_\n * @param {?Object} context_\n */\n function ValueEventRegistration(callback_, cancelCallback_, context_) {\n this.callback_ = callback_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.respondsTo = function (eventType) {\n return eventType === 'value';\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createEvent = function (change, query) {\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent('value', this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, query.getRef(), index));\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_1 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_1.call(ctx, eventData.error);\n };\n }\n else {\n var cb_1 = this.callback_;\n return function () {\n cb_1.call(ctx, eventData.snapshot);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.matches = function (other) {\n if (!(other instanceof ValueEventRegistration)) {\n return false;\n }\n else if (!other.callback_ || !this.callback_) {\n // If no callback specified, we consider it to match any callback.\n return true;\n }\n else {\n return (other.callback_ === this.callback_ && other.context_ === this.context_);\n }\n };\n /**\n * @inheritDoc\n */\n ValueEventRegistration.prototype.hasAnyCallback = function () {\n return this.callback_ !== null;\n };\n return ValueEventRegistration;\n}());\nexports.ValueEventRegistration = ValueEventRegistration;\n/**\n * Represents the registration of 1 or more child_xxx events.\n *\n * Currently, it is always exactly 1 child_xxx event, but the idea is we might let you\n * register a group of callbacks together in the future.\n *\n * @constructor\n * @implements {EventRegistration}\n */\nvar ChildEventRegistration = /** @class */ (function () {\n /**\n * @param {?Object.} callbacks_\n * @param {?function(Error)} cancelCallback_\n * @param {Object=} context_\n */\n function ChildEventRegistration(callbacks_, cancelCallback_, context_) {\n this.callbacks_ = callbacks_;\n this.cancelCallback_ = cancelCallback_;\n this.context_ = context_;\n }\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.respondsTo = function (eventType) {\n var eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\n eventToCheck =\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\n return util_1.contains(this.callbacks_, eventToCheck);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createCancelEvent = function (error, path) {\n if (this.cancelCallback_) {\n return new Event_1.CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.createEvent = function (change, query) {\n util_2.assert(change.childName != null, 'Child events should have a childName.');\n var ref = query.getRef().child(/** @type {!string} */ (change.childName));\n var index = query.getQueryParams().getIndex();\n return new Event_1.DataEvent(change.type, this, new DataSnapshot_1.DataSnapshot(change.snapshotNode, ref, index), change.prevName);\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.getEventRunner = function (eventData) {\n var ctx = this.context_;\n if (eventData.getEventType() === 'cancel') {\n util_2.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\n var cancelCB_2 = this.cancelCallback_;\n return function () {\n // We know that error exists, we checked above that this is a cancel event\n cancelCB_2.call(ctx, eventData.error);\n };\n }\n else {\n var cb_2 = this.callbacks_[eventData.eventType];\n return function () {\n cb_2.call(ctx, eventData.snapshot, eventData.prevName);\n };\n }\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.matches = function (other) {\n if (other instanceof ChildEventRegistration) {\n if (!this.callbacks_ || !other.callbacks_) {\n return true;\n }\n else if (this.context_ === other.context_) {\n var otherCount = util_1.getCount(other.callbacks_);\n var thisCount = util_1.getCount(this.callbacks_);\n if (otherCount === thisCount) {\n // If count is 1, do an exact match on eventType, if either is defined but null, it's a match.\n // If event types don't match, not a match\n // If count is not 1, exact match across all\n if (otherCount === 1) {\n var otherKey /** @type {!string} */ = util_1.getAnyKey(other.callbacks_);\n var thisKey /** @type {!string} */ = util_1.getAnyKey(this.callbacks_);\n return (thisKey === otherKey &&\n (!other.callbacks_[otherKey] ||\n !this.callbacks_[thisKey] ||\n other.callbacks_[otherKey] === this.callbacks_[thisKey]));\n }\n else {\n // Exact match on each key.\n return util_1.every(this.callbacks_, function (eventType, cb) { return other.callbacks_[eventType] === cb; });\n }\n }\n }\n }\n return false;\n };\n /**\n * @inheritDoc\n */\n ChildEventRegistration.prototype.hasAnyCallback = function () {\n return this.callbacks_ !== null;\n };\n return ChildEventRegistration;\n}());\nexports.ChildEventRegistration = ChildEventRegistration;\n\n//# sourceMappingURL=EventRegistration.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventRegistration.js\n// module id = 84\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\n/**\n * Encapsulates the data needed to raise an event\n * @implements {Event}\n */\nvar DataEvent = /** @class */ (function () {\n /**\n * @param {!string} eventType One of: value, child_added, child_changed, child_moved, child_removed\n * @param {!EventRegistration} eventRegistration The function to call to with the event data. User provided\n * @param {!DataSnapshot} snapshot The data backing the event\n * @param {?string=} prevName Optional, the name of the previous child for child_* events.\n */\n function DataEvent(eventType, eventRegistration, snapshot, prevName) {\n this.eventType = eventType;\n this.eventRegistration = eventRegistration;\n this.snapshot = snapshot;\n this.prevName = prevName;\n }\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getPath = function () {\n var ref = this.snapshot.getRef();\n if (this.eventType === 'value') {\n return ref.path;\n }\n else {\n return ref.getParent().path;\n }\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventType = function () {\n return this.eventType;\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n DataEvent.prototype.toString = function () {\n return (this.getPath().toString() +\n ':' +\n this.eventType +\n ':' +\n util_1.stringify(this.snapshot.exportVal()));\n };\n return DataEvent;\n}());\nexports.DataEvent = DataEvent;\nvar CancelEvent = /** @class */ (function () {\n /**\n * @param {EventRegistration} eventRegistration\n * @param {Error} error\n * @param {!Path} path\n */\n function CancelEvent(eventRegistration, error, path) {\n this.eventRegistration = eventRegistration;\n this.error = error;\n this.path = path;\n }\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getPath = function () {\n return this.path;\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventType = function () {\n return 'cancel';\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.getEventRunner = function () {\n return this.eventRegistration.getEventRunner(this);\n };\n /**\n * @inheritDoc\n */\n CancelEvent.prototype.toString = function () {\n return this.path.toString() + ':cancel';\n };\n return CancelEvent;\n}());\nexports.CancelEvent = CancelEvent;\n\n//# sourceMappingURL=Event.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/Event.js\n// module id = 85\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar AckUserWrite_1 = require(\"./operation/AckUserWrite\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar util_3 = require(\"@firebase/util\");\nvar ImmutableTree_1 = require(\"./util/ImmutableTree\");\nvar ListenComplete_1 = require(\"./operation/ListenComplete\");\nvar Merge_1 = require(\"./operation/Merge\");\nvar Operation_1 = require(\"./operation/Operation\");\nvar Overwrite_1 = require(\"./operation/Overwrite\");\nvar Path_1 = require(\"./util/Path\");\nvar SyncPoint_1 = require(\"./SyncPoint\");\nvar WriteTree_1 = require(\"./WriteTree\");\n/**\n * SyncTree is the central class for managing event callback registration, data caching, views\n * (query processing), and event generation. There are typically two SyncTree instances for\n * each Repo, one for the normal Firebase data, and one for the .info data.\n *\n * It has a number of responsibilities, including:\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\n * - Applying and caching data changes for user set(), transaction(), and update() calls\n * (applyUserOverwrite(), applyUserMerge()).\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\n * applyServerMerge()).\n * - Generating user-facing events for server and user changes (all of the apply* methods\n * return the set of events that need to be raised as a result).\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\n * to the correct set of paths and queries to satisfy the current set of user event\n * callbacks (listens are started/stopped using the provided listenProvider).\n *\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\n * events are returned to the caller rather than raised synchronously.\n *\n * @constructor\n */\nvar SyncTree = /** @class */ (function () {\n /**\n * @param {!ListenProvider} listenProvider_ Used by SyncTree to start / stop listening\n * to server data.\n */\n function SyncTree(listenProvider_) {\n this.listenProvider_ = listenProvider_;\n /**\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\n * @type {!ImmutableTree.}\n * @private\n */\n this.syncPointTree_ = ImmutableTree_1.ImmutableTree.Empty;\n /**\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\n * @type {!WriteTree}\n * @private\n */\n this.pendingWriteTree_ = new WriteTree_1.WriteTree();\n this.tagToQueryMap_ = {};\n this.queryToTagMap_ = {};\n }\n /**\n * Apply the data changes for a user-generated set() or transaction() call.\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @param {number} writeId\n * @param {boolean=} visible\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserOverwrite = function (path, newData, writeId, visible) {\n // Record pending write.\n this.pendingWriteTree_.addOverwrite(path, newData, writeId, visible);\n if (!visible) {\n return [];\n }\n else {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.User, path, newData));\n }\n };\n /**\n * Apply the data from a user-generated update() call\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyUserMerge = function (path, changedChildren, writeId) {\n // Record pending merge.\n this.pendingWriteTree_.addMerge(path, changedChildren, writeId);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.User, path, changeTree));\n };\n /**\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\n *\n * @param {!number} writeId\n * @param {boolean=} revert True if the given write failed and needs to be reverted\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.ackUserWrite = function (writeId, revert) {\n if (revert === void 0) { revert = false; }\n var write = this.pendingWriteTree_.getWrite(writeId);\n var needToReevaluate = this.pendingWriteTree_.removeWrite(writeId);\n if (!needToReevaluate) {\n return [];\n }\n else {\n var affectedTree_1 = ImmutableTree_1.ImmutableTree.Empty;\n if (write.snap != null) {\n // overwrite\n affectedTree_1 = affectedTree_1.set(Path_1.Path.Empty, true);\n }\n else {\n util_3.forEach(write.children, function (pathString, node) {\n affectedTree_1 = affectedTree_1.set(new Path_1.Path(pathString), node);\n });\n }\n return this.applyOperationToSyncPoints_(new AckUserWrite_1.AckUserWrite(write.path, affectedTree_1, revert));\n }\n };\n /**\n * Apply new server data for the specified path..\n *\n * @param {!Path} path\n * @param {!Node} newData\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerOverwrite = function (path, newData) {\n return this.applyOperationToSyncPoints_(new Overwrite_1.Overwrite(Operation_1.OperationSource.Server, path, newData));\n };\n /**\n * Apply new server data to be merged in at the specified path.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyServerMerge = function (path, changedChildren) {\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n return this.applyOperationToSyncPoints_(new Merge_1.Merge(Operation_1.OperationSource.Server, path, changeTree));\n };\n /**\n * Apply a listen complete for a query\n *\n * @param {!Path} path\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyListenComplete = function (path) {\n return this.applyOperationToSyncPoints_(new ListenComplete_1.ListenComplete(Operation_1.OperationSource.Server, path));\n };\n /**\n * Apply new server data for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryOverwrite = function (path, snap, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey != null) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new Overwrite_1.Overwrite(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, snap);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // Query must have been removed already\n return [];\n }\n };\n /**\n * Apply server data to be merged in for the specified tagged query.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedQueryMerge = function (path, changedChildren, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var changeTree = ImmutableTree_1.ImmutableTree.fromObject(changedChildren);\n var op = new Merge_1.Merge(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath, changeTree);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Apply a listen complete for a tagged query\n *\n * @param {!Path} path\n * @param {!number} tag\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.applyTaggedListenComplete = function (path, tag) {\n var queryKey = this.queryKeyForTag_(tag);\n if (queryKey) {\n var r = SyncTree.parseQueryKey_(queryKey);\n var queryPath = r.path, queryId = r.queryId;\n var relativePath = Path_1.Path.relativePath(queryPath, path);\n var op = new ListenComplete_1.ListenComplete(Operation_1.OperationSource.forServerTaggedQuery(queryId), relativePath);\n return this.applyTaggedOperation_(queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n };\n /**\n * Add an event callback for the specified query.\n *\n * @param {!Query} query\n * @param {!EventRegistration} eventRegistration\n * @return {!Array.} Events to raise.\n */\n SyncTree.prototype.addEventRegistration = function (query, eventRegistration) {\n var path = query.path;\n var serverCache = null;\n var foundAncestorDefaultView = false;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n this.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\n var relativePath = Path_1.Path.relativePath(pathToSyncPoint, path);\n serverCache = serverCache || sp.getCompleteServerCache(relativePath);\n foundAncestorDefaultView =\n foundAncestorDefaultView || sp.hasCompleteView();\n });\n var syncPoint = this.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint_1.SyncPoint();\n this.syncPointTree_ = this.syncPointTree_.set(path, syncPoint);\n }\n else {\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPoint.hasCompleteView();\n serverCache = serverCache || syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var serverCacheComplete;\n if (serverCache != null) {\n serverCacheComplete = true;\n }\n else {\n serverCacheComplete = false;\n serverCache = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var subtree = this.syncPointTree_.subtree(path);\n subtree.foreachChild(function (childName, childSyncPoint) {\n var completeCache = childSyncPoint.getCompleteServerCache(Path_1.Path.Empty);\n if (completeCache) {\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\n }\n });\n }\n var viewAlreadyExists = syncPoint.viewExistsForQuery(query);\n if (!viewAlreadyExists && !query.getQueryParams().loadsAllData()) {\n // We need to track a tag for this query\n var queryKey = SyncTree.makeQueryKey_(query);\n util_1.assert(!(queryKey in this.queryToTagMap_), 'View does not exist, but we have a tag');\n var tag = SyncTree.getNextQueryTag_();\n this.queryToTagMap_[queryKey] = tag;\n // Coerce to string to avoid sparse arrays.\n this.tagToQueryMap_['_' + tag] = queryKey;\n }\n var writesCache = this.pendingWriteTree_.childWrites(path);\n var events = syncPoint.addEventRegistration(query, eventRegistration, writesCache, serverCache, serverCacheComplete);\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\n var view /** @type !View */ = syncPoint.viewForQuery(query);\n events = events.concat(this.setupListener_(query, view));\n }\n return events;\n };\n /**\n * Remove event callback(s).\n *\n * If query is the default query, we'll check all queries for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\n *\n * @param {!Query} query\n * @param {?EventRegistration} eventRegistration If null, all callbacks are removed.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n SyncTree.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\n var _this = this;\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\n var path = query.path;\n var maybeSyncPoint = this.syncPointTree_.get(path);\n var cancelEvents = [];\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\n // not loadsAllData().\n if (maybeSyncPoint &&\n (query.queryIdentifier() === 'default' ||\n maybeSyncPoint.viewExistsForQuery(query))) {\n /**\n * @type {{removed: !Array., events: !Array.}}\n */\n var removedAndEvents = maybeSyncPoint.removeEventRegistration(query, eventRegistration, cancelError);\n if (maybeSyncPoint.isEmpty()) {\n this.syncPointTree_ = this.syncPointTree_.remove(path);\n }\n var removed = removedAndEvents.removed;\n cancelEvents = removedAndEvents.events;\n // We may have just removed one of many listeners and can short-circuit this whole process\n // We may also not have removed a default listener, in which case all of the descendant listeners should already be\n // properly set up.\n //\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\n // queryId === 'default'\n var removingDefault = -1 !==\n removed.findIndex(function (query) {\n return query.getQueryParams().loadsAllData();\n });\n var covered = this.syncPointTree_.findOnPath(path, function (relativePath, parentSyncPoint) {\n return parentSyncPoint.hasCompleteView();\n });\n if (removingDefault && !covered) {\n var subtree = this.syncPointTree_.subtree(path);\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\n // removal\n if (!subtree.isEmpty()) {\n // We need to fold over our subtree and collect the listeners to send\n var newViews = this.collectDistinctViewsForSubTree_(subtree);\n // Ok, we've collected all the listens we need. Set them up.\n for (var i = 0; i < newViews.length; ++i) {\n var view = newViews[i], newQuery = view.getQuery();\n var listener = this.createListenerForView_(view);\n this.listenProvider_.startListening(SyncTree.queryForListening_(newQuery), this.tagForQuery_(newQuery), listener.hashFn, listener.onComplete);\n }\n }\n else {\n // There's nothing below us, so nothing we need to start listening on\n }\n }\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\n if (!covered && removed.length > 0 && !cancelError) {\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\n // default. Otherwise, we need to iterate through and cancel each individual query\n if (removingDefault) {\n // We don't tag default listeners\n var defaultTag = null;\n this.listenProvider_.stopListening(SyncTree.queryForListening_(query), defaultTag);\n }\n else {\n removed.forEach(function (queryToRemove) {\n var tagToRemove = _this.queryToTagMap_[SyncTree.makeQueryKey_(queryToRemove)];\n _this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToRemove), tagToRemove);\n });\n }\n }\n // Now, clear all of the tags we're tracking for the removed listens\n this.removeTags_(removed);\n }\n else {\n // No-op, this listener must've been already removed\n }\n return cancelEvents;\n };\n /**\n * Returns a complete cache, if we have one, of the data at a particular path. The location must have a listener above\n * it, but as this is only used by transaction code, that should always be the case anyways.\n *\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\n * @param {!Path} path The path to the data we want\n * @param {Array.=} writeIdsToExclude A specific set to be excluded\n * @return {?Node}\n */\n SyncTree.prototype.calcCompleteEventCache = function (path, writeIdsToExclude) {\n var includeHiddenSets = true;\n var writeTree = this.pendingWriteTree_;\n var serverCache = this.syncPointTree_.findOnPath(path, function (pathSoFar, syncPoint) {\n var relativePath = Path_1.Path.relativePath(pathSoFar, path);\n var serverCache = syncPoint.getCompleteServerCache(relativePath);\n if (serverCache) {\n return serverCache;\n }\n });\n return writeTree.calcCompleteEventCache(path, serverCache, writeIdsToExclude, includeHiddenSets);\n };\n /**\n * This collapses multiple unfiltered views into a single view, since we only need a single\n * listener for them.\n *\n * @param {!ImmutableTree.} subtree\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.collectDistinctViewsForSubTree_ = function (subtree) {\n return subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (maybeChildSyncPoint && maybeChildSyncPoint.hasCompleteView()) {\n var completeView = maybeChildSyncPoint.getCompleteView();\n return [completeView];\n }\n else {\n // No complete view here, flatten any deeper listens into an array\n var views_1 = [];\n if (maybeChildSyncPoint) {\n views_1 = maybeChildSyncPoint.getQueryViews();\n }\n util_3.forEach(childMap, function (key, childViews) {\n views_1 = views_1.concat(childViews);\n });\n return views_1;\n }\n });\n };\n /**\n * @param {!Array.} queries\n * @private\n */\n SyncTree.prototype.removeTags_ = function (queries) {\n for (var j = 0; j < queries.length; ++j) {\n var removedQuery = queries[j];\n if (!removedQuery.getQueryParams().loadsAllData()) {\n // We should have a tag for this\n var removedQueryKey = SyncTree.makeQueryKey_(removedQuery);\n var removedQueryTag = this.queryToTagMap_[removedQueryKey];\n delete this.queryToTagMap_[removedQueryKey];\n delete this.tagToQueryMap_['_' + removedQueryTag];\n }\n }\n };\n /**\n * Normalizes a query to a query we send the server for listening\n * @param {!Query} query\n * @return {!Query} The normalized query\n * @private\n */\n SyncTree.queryForListening_ = function (query) {\n if (query.getQueryParams().loadsAllData() &&\n !query.getQueryParams().isDefault()) {\n // We treat queries that load all data as default queries\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\n // from Query\n return /** @type {!Query} */ query.getRef();\n }\n else {\n return query;\n }\n };\n /**\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\n *\n * @param {!Query} query\n * @param {!View} view\n * @return {!Array.} This method can return events to support synchronous data sources\n * @private\n */\n SyncTree.prototype.setupListener_ = function (query, view) {\n var path = query.path;\n var tag = this.tagForQuery_(query);\n var listener = this.createListenerForView_(view);\n var events = this.listenProvider_.startListening(SyncTree.queryForListening_(query), tag, listener.hashFn, listener.onComplete);\n var subtree = this.syncPointTree_.subtree(path);\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\n // may need to shadow other listens as well.\n if (tag) {\n util_1.assert(!subtree.value.hasCompleteView(), \"If we're adding a query, it shouldn't be shadowed\");\n }\n else {\n // Shadow everything at or below this location, this is a default listener.\n var queriesToStop = subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\n if (!relativePath.isEmpty() &&\n maybeChildSyncPoint &&\n maybeChildSyncPoint.hasCompleteView()) {\n return [maybeChildSyncPoint.getCompleteView().getQuery()];\n }\n else {\n // No default listener here, flatten any deeper queries into an array\n var queries_1 = [];\n if (maybeChildSyncPoint) {\n queries_1 = queries_1.concat(maybeChildSyncPoint.getQueryViews().map(function (view) { return view.getQuery(); }));\n }\n util_3.forEach(childMap, function (key, childQueries) {\n queries_1 = queries_1.concat(childQueries);\n });\n return queries_1;\n }\n });\n for (var i = 0; i < queriesToStop.length; ++i) {\n var queryToStop = queriesToStop[i];\n this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToStop), this.tagForQuery_(queryToStop));\n }\n }\n return events;\n };\n /**\n *\n * @param {!View} view\n * @return {{hashFn: function(), onComplete: function(!string, *)}}\n * @private\n */\n SyncTree.prototype.createListenerForView_ = function (view) {\n var _this = this;\n var query = view.getQuery();\n var tag = this.tagForQuery_(query);\n return {\n hashFn: function () {\n var cache = view.getServerCache() || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return cache.hash();\n },\n onComplete: function (status) {\n if (status === 'ok') {\n if (tag) {\n return _this.applyTaggedListenComplete(query.path, tag);\n }\n else {\n return _this.applyListenComplete(query.path);\n }\n }\n else {\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\n var error = util_2.errorForServerCode(status, query);\n return _this.removeEventRegistration(query, \n /*eventRegistration*/ null, error);\n }\n }\n };\n };\n /**\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\n * @private\n * @param {!Query} query\n * @return {string}\n */\n SyncTree.makeQueryKey_ = function (query) {\n return query.path.toString() + '$' + query.queryIdentifier();\n };\n /**\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\n * @private\n * @param {!string} queryKey\n * @return {{queryId: !string, path: !Path}}\n */\n SyncTree.parseQueryKey_ = function (queryKey) {\n var splitIndex = queryKey.indexOf('$');\n util_1.assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\n return {\n queryId: queryKey.substr(splitIndex + 1),\n path: new Path_1.Path(queryKey.substr(0, splitIndex))\n };\n };\n /**\n * Return the query associated with the given tag, if we have one\n * @param {!number} tag\n * @return {?string}\n * @private\n */\n SyncTree.prototype.queryKeyForTag_ = function (tag) {\n return this.tagToQueryMap_['_' + tag];\n };\n /**\n * Return the tag associated with the given query.\n * @param {!Query} query\n * @return {?number}\n * @private\n */\n SyncTree.prototype.tagForQuery_ = function (query) {\n var queryKey = SyncTree.makeQueryKey_(query);\n return util_3.safeGet(this.queryToTagMap_, queryKey);\n };\n /**\n * Static accessor for query tags.\n * @return {number}\n * @private\n */\n SyncTree.getNextQueryTag_ = function () {\n return SyncTree.nextQueryTag_++;\n };\n /**\n * A helper method to apply tagged operations\n *\n * @param {!Path} queryPath\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyTaggedOperation_ = function (queryPath, operation) {\n var syncPoint = this.syncPointTree_.get(queryPath);\n util_1.assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\n var writesCache = this.pendingWriteTree_.childWrites(queryPath);\n return syncPoint.applyOperation(operation, writesCache, \n /*serverCache=*/ null);\n };\n /**\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\n *\n * NOTES:\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\n \n * - We call applyOperation() on each SyncPoint passing three things:\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\n * 3. A snapshot Node with cached server data, if we have it.\n \n * - We concatenate all of the events returned by each SyncPoint and return the result.\n *\n * @param {!Operation} operation\n * @return {!Array.}\n * @private\n */\n SyncTree.prototype.applyOperationToSyncPoints_ = function (operation) {\n return this.applyOperationHelper_(operation, this.syncPointTree_, \n /*serverCache=*/ null, this.pendingWriteTree_.childWrites(Path_1.Path.Empty));\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n if (operation.path.isEmpty()) {\n return this.applyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\n }\n else {\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n var childName = operation.path.getFront();\n var childOperation = operation.operationForChild(childName);\n var childTree = syncPointTree.children.get(childName);\n if (childTree && childOperation) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n events = events.concat(this.applyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n }\n };\n /**\n * Recursive helper for applyOperationToSyncPoints_\n *\n * @private\n * @param {!Operation} operation\n * @param {ImmutableTree.} syncPointTree\n * @param {?Node} serverCache\n * @param {!WriteTreeRef} writesCache\n * @return {!Array.}\n */\n SyncTree.prototype.applyOperationDescendantsHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\n var _this = this;\n var syncPoint = syncPointTree.get(Path_1.Path.Empty);\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPoint.getCompleteServerCache(Path_1.Path.Empty);\n }\n var events = [];\n syncPointTree.children.inorderTraversal(function (childName, childTree) {\n var childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n var childWritesCache = writesCache.child(childName);\n var childOperation = operation.operationForChild(childName);\n if (childOperation) {\n events = events.concat(_this.applyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n });\n if (syncPoint) {\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\n }\n return events;\n };\n /**\n * Static tracker for next query tag.\n * @type {number}\n * @private\n */\n SyncTree.nextQueryTag_ = 1;\n return SyncTree;\n}());\nexports.SyncTree = SyncTree;\n\n//# sourceMappingURL=SyncTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SyncTree.js\n// module id = 86\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"../util/Path\");\nvar Operation_1 = require(\"./Operation\");\nvar AckUserWrite = /** @class */ (function () {\n /**\n *\n * @param {!Path} path\n * @param {!ImmutableTree} affectedTree A tree containing true for each affected path. Affected paths can't overlap.\n * @param {!boolean} revert\n */\n function AckUserWrite(\n /**@inheritDoc */ path, \n /**@inheritDoc */ affectedTree, \n /**@inheritDoc */ revert) {\n this.path = path;\n this.affectedTree = affectedTree;\n this.revert = revert;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.ACK_USER_WRITE;\n /** @inheritDoc */\n this.source = Operation_1.OperationSource.User;\n }\n /**\n * @inheritDoc\n */\n AckUserWrite.prototype.operationForChild = function (childName) {\n if (!this.path.isEmpty()) {\n util_1.assert(this.path.getFront() === childName, 'operationForChild called for unrelated child.');\n return new AckUserWrite(this.path.popFront(), this.affectedTree, this.revert);\n }\n else if (this.affectedTree.value != null) {\n util_1.assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\n // All child locations are affected as well; just return same operation.\n return this;\n }\n else {\n var childTree = this.affectedTree.subtree(new Path_1.Path(childName));\n return new AckUserWrite(Path_1.Path.Empty, childTree, this.revert);\n }\n };\n return AckUserWrite;\n}());\nexports.AckUserWrite = AckUserWrite;\n\n//# sourceMappingURL=AckUserWrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/AckUserWrite.js\n// module id = 87\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Path_1 = require(\"../util/Path\");\nvar Operation_1 = require(\"./Operation\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @constructor\n * @implements {Operation}\n */\nvar ListenComplete = /** @class */ (function () {\n function ListenComplete(source, path) {\n this.source = source;\n this.path = path;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.LISTEN_COMPLETE;\n }\n ListenComplete.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n return new ListenComplete(this.source, Path_1.Path.Empty);\n }\n else {\n return new ListenComplete(this.source, this.path.popFront());\n }\n };\n return ListenComplete;\n}());\nexports.ListenComplete = ListenComplete;\n\n//# sourceMappingURL=ListenComplete.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/ListenComplete.js\n// module id = 88\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"./Operation\");\nvar Overwrite_1 = require(\"./Overwrite\");\nvar Path_1 = require(\"../util/Path\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * @param {!OperationSource} source\n * @param {!Path} path\n * @param {!ImmutableTree.} children\n * @constructor\n * @implements {Operation}\n */\nvar Merge = /** @class */ (function () {\n function Merge(\n /**@inheritDoc */ source, \n /**@inheritDoc */ path, \n /**@inheritDoc */ children) {\n this.source = source;\n this.path = path;\n this.children = children;\n /** @inheritDoc */\n this.type = Operation_1.OperationType.MERGE;\n }\n /**\n * @inheritDoc\n */\n Merge.prototype.operationForChild = function (childName) {\n if (this.path.isEmpty()) {\n var childTree = this.children.subtree(new Path_1.Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n }\n else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite_1.Overwrite(this.source, Path_1.Path.Empty, childTree.value);\n }\n else {\n // This is a merge at a deeper level\n return new Merge(this.source, Path_1.Path.Empty, childTree);\n }\n }\n else {\n util_1.assert(this.path.getFront() === childName, \"Can't get a merge for a child not on the path of the operation\");\n return new Merge(this.source, this.path.popFront(), this.children);\n }\n };\n /**\n * @inheritDoc\n */\n Merge.prototype.toString = function () {\n return ('Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')');\n };\n return Merge;\n}());\nexports.Merge = Merge;\n\n//# sourceMappingURL=Merge.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/operation/Merge.js\n// module id = 89\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IndexedFilter_1 = require(\"./filter/IndexedFilter\");\nvar ViewProcessor_1 = require(\"./ViewProcessor\");\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar CacheNode_1 = require(\"./CacheNode\");\nvar ViewCache_1 = require(\"./ViewCache\");\nvar EventGenerator_1 = require(\"./EventGenerator\");\nvar util_1 = require(\"@firebase/util\");\nvar Operation_1 = require(\"../operation/Operation\");\nvar Change_1 = require(\"./Change\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\n/**\n * A view represents a specific location and query that has 1 or more event registrations.\n *\n * It does several things:\n * - Maintains the list of event registrations for this location/query.\n * - Maintains a cache of the data visible for this location/query.\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\n * registrations returns the set of events to be raised.\n * @constructor\n */\nvar View = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n * @param {!ViewCache} initialViewCache\n */\n function View(query_, initialViewCache) {\n this.query_ = query_;\n this.eventRegistrations_ = [];\n var params = this.query_.getQueryParams();\n var indexFilter = new IndexedFilter_1.IndexedFilter(params.getIndex());\n var filter = params.getNodeFilter();\n /**\n * @type {ViewProcessor}\n * @private\n */\n this.processor_ = new ViewProcessor_1.ViewProcessor(filter);\n var initialServerCache = initialViewCache.getServerCache();\n var initialEventCache = initialViewCache.getEventCache();\n // Don't filter server node with other filter than index, wait for tagged listen\n var serverSnap = indexFilter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\n var eventSnap = filter.updateFullNode(ChildrenNode_1.ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\n var newServerCache = new CacheNode_1.CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\n var newEventCache = new CacheNode_1.CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\n /**\n * @type {!ViewCache}\n * @private\n */\n this.viewCache_ = new ViewCache_1.ViewCache(newEventCache, newServerCache);\n /**\n * @type {!EventGenerator}\n * @private\n */\n this.eventGenerator_ = new EventGenerator_1.EventGenerator(this.query_);\n }\n /**\n * @return {!Query}\n */\n View.prototype.getQuery = function () {\n return this.query_;\n };\n /**\n * @return {?Node}\n */\n View.prototype.getServerCache = function () {\n return this.viewCache_.getServerCache().getNode();\n };\n /**\n * @param {!Path} path\n * @return {?Node}\n */\n View.prototype.getCompleteServerCache = function (path) {\n var cache = this.viewCache_.getCompleteServerSnap();\n if (cache) {\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\n // we need to see if it contains the child we're interested in.\n if (this.query_.getQueryParams().loadsAllData() ||\n (!path.isEmpty() && !cache.getImmediateChild(path.getFront()).isEmpty())) {\n return cache.getChild(path);\n }\n }\n return null;\n };\n /**\n * @return {boolean}\n */\n View.prototype.isEmpty = function () {\n return this.eventRegistrations_.length === 0;\n };\n /**\n * @param {!EventRegistration} eventRegistration\n */\n View.prototype.addEventRegistration = function (eventRegistration) {\n this.eventRegistrations_.push(eventRegistration);\n };\n /**\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\n * @return {!Array.} Cancel events, if cancelError was provided.\n */\n View.prototype.removeEventRegistration = function (eventRegistration, cancelError) {\n var cancelEvents = [];\n if (cancelError) {\n util_1.assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\n var path_1 = this.query_.path;\n this.eventRegistrations_.forEach(function (registration) {\n cancelError /** @type {!Error} */ = cancelError;\n var maybeEvent = registration.createCancelEvent(cancelError, path_1);\n if (maybeEvent) {\n cancelEvents.push(maybeEvent);\n }\n });\n }\n if (eventRegistration) {\n var remaining = [];\n for (var i = 0; i < this.eventRegistrations_.length; ++i) {\n var existing = this.eventRegistrations_[i];\n if (!existing.matches(eventRegistration)) {\n remaining.push(existing);\n }\n else if (eventRegistration.hasAnyCallback()) {\n // We're removing just this one\n remaining = remaining.concat(this.eventRegistrations_.slice(i + 1));\n break;\n }\n }\n this.eventRegistrations_ = remaining;\n }\n else {\n this.eventRegistrations_ = [];\n }\n return cancelEvents;\n };\n /**\n * Applies the given Operation, updates our cache, and returns the appropriate events.\n *\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @return {!Array.}\n */\n View.prototype.applyOperation = function (operation, writesCache, completeServerCache) {\n if (operation.type === Operation_1.OperationType.MERGE &&\n operation.source.queryId !== null) {\n util_1.assert(this.viewCache_.getCompleteServerSnap(), 'We should always have a full cache before handling merges');\n util_1.assert(this.viewCache_.getCompleteEventSnap(), 'Missing event cache, even though we have a server cache');\n }\n var oldViewCache = this.viewCache_;\n var result = this.processor_.applyOperation(oldViewCache, operation, writesCache, completeServerCache);\n this.processor_.assertIndexed(result.viewCache);\n util_1.assert(result.viewCache.getServerCache().isFullyInitialized() ||\n !oldViewCache.getServerCache().isFullyInitialized(), 'Once a server snap is complete, it should never go back');\n this.viewCache_ = result.viewCache;\n return this.generateEventsForChanges_(result.changes, result.viewCache.getEventCache().getNode(), null);\n };\n /**\n * @param {!EventRegistration} registration\n * @return {!Array.}\n */\n View.prototype.getInitialEvents = function (registration) {\n var eventSnap = this.viewCache_.getEventCache();\n var initialChanges = [];\n if (!eventSnap.getNode().isLeafNode()) {\n var eventNode = eventSnap.getNode();\n eventNode.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (key, childNode) {\n initialChanges.push(Change_1.Change.childAddedChange(key, childNode));\n });\n }\n if (eventSnap.isFullyInitialized()) {\n initialChanges.push(Change_1.Change.valueChange(eventSnap.getNode()));\n }\n return this.generateEventsForChanges_(initialChanges, eventSnap.getNode(), registration);\n };\n /**\n * @private\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {EventRegistration=} eventRegistration\n * @return {!Array.}\n */\n View.prototype.generateEventsForChanges_ = function (changes, eventCache, eventRegistration) {\n var registrations = eventRegistration\n ? [eventRegistration]\n : this.eventRegistrations_;\n return this.eventGenerator_.generateEventsForChanges(changes, eventCache, registrations);\n };\n return View;\n}());\nexports.View = View;\n\n//# sourceMappingURL=View.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/View.js\n// module id = 90\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Operation_1 = require(\"../operation/Operation\");\nvar util_1 = require(\"@firebase/util\");\nvar ChildChangeAccumulator_1 = require(\"./ChildChangeAccumulator\");\nvar Change_1 = require(\"./Change\");\nvar ChildrenNode_1 = require(\"../snap/ChildrenNode\");\nvar KeyIndex_1 = require(\"../snap/indexes/KeyIndex\");\nvar ImmutableTree_1 = require(\"../util/ImmutableTree\");\nvar Path_1 = require(\"../util/Path\");\nvar CompleteChildSource_1 = require(\"./CompleteChildSource\");\n/**\n * @constructor\n * @struct\n */\nvar ProcessorResult = /** @class */ (function () {\n /**\n * @param {!ViewCache} viewCache\n * @param {!Array.} changes\n */\n function ProcessorResult(viewCache, changes) {\n this.viewCache = viewCache;\n this.changes = changes;\n }\n return ProcessorResult;\n}());\nexports.ProcessorResult = ProcessorResult;\n/**\n * @constructor\n */\nvar ViewProcessor = /** @class */ (function () {\n /**\n * @param {!NodeFilter} filter_\n */\n function ViewProcessor(filter_) {\n this.filter_ = filter_;\n }\n /**\n * @param {!ViewCache} viewCache\n */\n ViewProcessor.prototype.assertIndexed = function (viewCache) {\n util_1.assert(viewCache\n .getEventCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Event snap not indexed');\n util_1.assert(viewCache\n .getServerCache()\n .getNode()\n .isIndexed(this.filter_.getIndex()), 'Server snap not indexed');\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Operation} operation\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @return {!ProcessorResult}\n */\n ViewProcessor.prototype.applyOperation = function (oldViewCache, operation, writesCache, completeCache) {\n var accumulator = new ChildChangeAccumulator_1.ChildChangeAccumulator();\n var newViewCache, filterServerNode;\n if (operation.type === Operation_1.OperationType.OVERWRITE) {\n var overwrite = operation;\n if (overwrite.source.fromUser) {\n newViewCache = this.applyUserOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(overwrite.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered and the\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\n // again\n filterServerNode =\n overwrite.source.tagged ||\n (oldViewCache.getServerCache().isFiltered() &&\n !overwrite.path.isEmpty());\n newViewCache = this.applyServerOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.MERGE) {\n var merge = operation;\n if (merge.source.fromUser) {\n newViewCache = this.applyUserMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\n }\n else {\n util_1.assert(merge.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered\n filterServerNode =\n merge.source.tagged || oldViewCache.getServerCache().isFiltered();\n newViewCache = this.applyServerMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.ACK_USER_WRITE) {\n var ackUserWrite = operation;\n if (!ackUserWrite.revert) {\n newViewCache = this.ackUserWrite_(oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\n }\n else {\n newViewCache = this.revertUserWrite_(oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\n }\n }\n else if (operation.type === Operation_1.OperationType.LISTEN_COMPLETE) {\n newViewCache = this.listenComplete_(oldViewCache, operation.path, writesCache, accumulator);\n }\n else {\n throw util_1.assertionError('Unknown operation type: ' + operation.type);\n }\n var changes = accumulator.getChanges();\n ViewProcessor.maybeAddValueEvent_(oldViewCache, newViewCache, changes);\n return new ProcessorResult(newViewCache, changes);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!ViewCache} newViewCache\n * @param {!Array.} accumulator\n * @private\n */\n ViewProcessor.maybeAddValueEvent_ = function (oldViewCache, newViewCache, accumulator) {\n var eventSnap = newViewCache.getEventCache();\n if (eventSnap.isFullyInitialized()) {\n var isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\n var oldCompleteSnap = oldViewCache.getCompleteEventSnap();\n if (accumulator.length > 0 ||\n !oldViewCache.getEventCache().isFullyInitialized() ||\n (isLeafOrEmpty &&\n !eventSnap\n .getNode()\n .equals(/** @type {!Node} */ (oldCompleteSnap))) ||\n !eventSnap\n .getNode()\n .getPriority()\n .equals(oldCompleteSnap.getPriority())) {\n accumulator.push(Change_1.Change.valueChange(\n /** @type {!Node} */ newViewCache.getCompleteEventSnap()));\n }\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} changePath\n * @param {!WriteTreeRef} writesCache\n * @param {!CompleteChildSource} source\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.generateEventCacheAfterServerEvent_ = function (viewCache, changePath, writesCache, source, accumulator) {\n var oldEventSnap = viewCache.getEventCache();\n if (writesCache.shadowingWrite(changePath) != null) {\n // we have a shadowing write, ignore changes\n return viewCache;\n }\n else {\n var newEventCache = void 0, serverNode = void 0;\n if (changePath.isEmpty()) {\n // TODO: figure out how this plays with \"sliding ack windows\"\n util_1.assert(viewCache.getServerCache().isFullyInitialized(), 'If change path is empty, we must have complete server data');\n if (viewCache.getServerCache().isFiltered()) {\n // We need to special case this, because we need to only apply writes to complete children, or\n // we might end up raising events for incomplete children. If the server data is filtered deep\n // writes cannot be guaranteed to be complete\n var serverCache = viewCache.getCompleteServerSnap();\n var completeChildren = serverCache instanceof ChildrenNode_1.ChildrenNode\n ? serverCache\n : ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var completeEventChildren = writesCache.calcCompleteEventChildren(completeChildren);\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeEventChildren, accumulator);\n }\n else {\n var completeNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeNode, accumulator);\n }\n }\n else {\n var childKey = changePath.getFront();\n if (childKey == '.priority') {\n util_1.assert(changePath.getLength() == 1, \"Can't have a priority with additional path components\");\n var oldEventNode = oldEventSnap.getNode();\n serverNode = viewCache.getServerCache().getNode();\n // we might have overwrites for this priority\n var updatedPriority = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventNode, serverNode);\n if (updatedPriority != null) {\n newEventCache = this.filter_.updatePriority(oldEventNode, updatedPriority);\n }\n else {\n // priority didn't change, keep old node\n newEventCache = oldEventSnap.getNode();\n }\n }\n else {\n var childChangePath = changePath.popFront();\n // update child\n var newEventChild = void 0;\n if (oldEventSnap.isCompleteForChild(childKey)) {\n serverNode = viewCache.getServerCache().getNode();\n var eventChildUpdate = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventSnap.getNode(), serverNode);\n if (eventChildUpdate != null) {\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey)\n .updateChild(childChangePath, eventChildUpdate);\n }\n else {\n // Nothing changed, just keep the old child\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey);\n }\n }\n else {\n newEventChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n }\n if (newEventChild != null) {\n newEventCache = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\n }\n else {\n // no complete child available or no change\n newEventCache = oldEventSnap.getNode();\n }\n }\n }\n return viewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized() || changePath.isEmpty(), this.filter_.filtersNodes());\n }\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\n var oldServerSnap = oldViewCache.getServerCache();\n var newServerCache;\n var serverFilter = filterServerNode\n ? this.filter_\n : this.filter_.getIndexedFilter();\n if (changePath.isEmpty()) {\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\n }\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\n var newServerNode = oldServerSnap\n .getNode()\n .updateChild(changePath, changedSnap);\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\n }\n else {\n var childKey = changePath.getFront();\n if (!oldServerSnap.isCompleteForPath(changePath) &&\n changePath.getLength() > 1) {\n // We don't update incomplete nodes with updates intended for other listeners\n return oldViewCache;\n }\n var childChangePath = changePath.popFront();\n var childNode = oldServerSnap.getNode().getImmediateChild(childKey);\n var newChildNode = childNode.updateChild(childChangePath, changedSnap);\n if (childKey == '.priority') {\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\n }\n else {\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, null);\n }\n }\n var newViewCache = oldViewCache.updateServerSnap(newServerCache, oldServerSnap.isFullyInitialized() || changePath.isEmpty(), serverFilter.filtersNodes());\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\n return this.generateEventCacheAfterServerEvent_(newViewCache, changePath, writesCache, source, accumulator);\n };\n /**\n * @param {!ViewCache} oldViewCache\n * @param {!Path} changePath\n * @param {!Node} changedSnap\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\n var oldEventSnap = oldViewCache.getEventCache();\n var newViewCache, newEventCache;\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\n if (changePath.isEmpty()) {\n newEventCache = this.filter_.updateFullNode(oldViewCache.getEventCache().getNode(), changedSnap, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, true, this.filter_.filtersNodes());\n }\n else {\n var childKey = changePath.getFront();\n if (childKey === '.priority') {\n newEventCache = this.filter_.updatePriority(oldViewCache.getEventCache().getNode(), changedSnap);\n newViewCache = oldViewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\n }\n else {\n var childChangePath = changePath.popFront();\n var oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\n var newChild = void 0;\n if (childChangePath.isEmpty()) {\n // Child overwrite, we can replace the child\n newChild = changedSnap;\n }\n else {\n var childNode = source.getCompleteChild(childKey);\n if (childNode != null) {\n if (childChangePath.getBack() === '.priority' &&\n childNode.getChild(childChangePath.parent()).isEmpty()) {\n // This is a priority update on an empty node. If this node exists on the server, the\n // server will send down the priority in the update, so ignore for now\n newChild = childNode;\n }\n else {\n newChild = childNode.updateChild(childChangePath, changedSnap);\n }\n }\n else {\n // There is no complete child node available\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n }\n if (!oldChild.equals(newChild)) {\n var newEventSnap = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\n newViewCache = oldViewCache.updateEventSnap(newEventSnap, oldEventSnap.isFullyInitialized(), this.filter_.filtersNodes());\n }\n else {\n newViewCache = oldViewCache;\n }\n }\n }\n return newViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {string} childKey\n * @return {boolean}\n * @private\n */\n ViewProcessor.cacheHasChild_ = function (viewCache, childKey) {\n return viewCache.getEventCache().isCompleteForChild(childKey);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyUserMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\n var _this = this;\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n changedChildren.foreach(function (relativePath, childNode) {\n var writePath = path.child(relativePath);\n if (!ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!Node} node\n * @param {ImmutableTree.} merge\n * @return {!Node}\n * @private\n */\n ViewProcessor.prototype.applyMerge_ = function (node, merge) {\n merge.foreach(function (relativePath, childNode) {\n node = node.updateChild(relativePath, childNode);\n });\n return node;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!ImmutableTree.} changedChildren\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} serverCache\n * @param {boolean} filterServerNode\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.applyServerMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\n var _this = this;\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\n // wait for the complete data update coming soon.\n if (viewCache\n .getServerCache()\n .getNode()\n .isEmpty() &&\n !viewCache.getServerCache().isFullyInitialized()) {\n return viewCache;\n }\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n var curViewCache = viewCache;\n var viewMergeTree;\n if (path.isEmpty()) {\n viewMergeTree = changedChildren;\n }\n else {\n viewMergeTree = ImmutableTree_1.ImmutableTree.Empty.setTree(path, changedChildren);\n }\n var serverNode = viewCache.getServerCache().getNode();\n viewMergeTree.children.inorderTraversal(function (childKey, childTree) {\n if (serverNode.hasChild(childKey)) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n viewMergeTree.children.inorderTraversal(function (childKey, childMergeTree) {\n var isUnknownDeepMerge = !viewCache.getServerCache().isCompleteForChild(childKey) &&\n childMergeTree.value == null;\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\n var serverChild = viewCache\n .getServerCache()\n .getNode()\n .getImmediateChild(childKey);\n var newChild = _this.applyMerge_(serverChild, childMergeTree);\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path_1.Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n return curViewCache;\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} ackPath\n * @param {!ImmutableTree} affectedTree\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.ackUserWrite_ = function (viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\n if (writesCache.shadowingWrite(ackPath) != null) {\n return viewCache;\n }\n // Only filter server node if it is currently filtered\n var filterServerNode = viewCache.getServerCache().isFiltered();\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\n // now that it won't be shadowed.\n var serverCache = viewCache.getServerCache();\n if (affectedTree.value != null) {\n // This is an overwrite.\n if ((ackPath.isEmpty() && serverCache.isFullyInitialized()) ||\n serverCache.isCompleteForPath(ackPath)) {\n return this.applyServerOverwrite_(viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\n }\n else if (ackPath.isEmpty()) {\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\n // should just re-apply whatever we have in our cache as a merge.\n var changedChildren_1 = ImmutableTree_1.ImmutableTree.Empty;\n serverCache.getNode().forEachChild(KeyIndex_1.KEY_INDEX, function (name, node) {\n changedChildren_1 = changedChildren_1.set(new Path_1.Path(name), node);\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_1, writesCache, completeCache, filterServerNode, accumulator);\n }\n else {\n return viewCache;\n }\n }\n else {\n // This is a merge.\n var changedChildren_2 = ImmutableTree_1.ImmutableTree.Empty;\n affectedTree.foreach(function (mergePath, value) {\n var serverCachePath = ackPath.child(mergePath);\n if (serverCache.isCompleteForPath(serverCachePath)) {\n changedChildren_2 = changedChildren_2.set(mergePath, serverCache.getNode().getChild(serverCachePath));\n }\n });\n return this.applyServerMerge_(viewCache, ackPath, changedChildren_2, writesCache, completeCache, filterServerNode, accumulator);\n }\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.listenComplete_ = function (viewCache, path, writesCache, accumulator) {\n var oldServerNode = viewCache.getServerCache();\n var newViewCache = viewCache.updateServerSnap(oldServerNode.getNode(), oldServerNode.isFullyInitialized() || path.isEmpty(), oldServerNode.isFiltered());\n return this.generateEventCacheAfterServerEvent_(newViewCache, path, writesCache, CompleteChildSource_1.NO_COMPLETE_CHILD_SOURCE, accumulator);\n };\n /**\n * @param {!ViewCache} viewCache\n * @param {!Path} path\n * @param {!WriteTreeRef} writesCache\n * @param {?Node} completeServerCache\n * @param {!ChildChangeAccumulator} accumulator\n * @return {!ViewCache}\n * @private\n */\n ViewProcessor.prototype.revertUserWrite_ = function (viewCache, path, writesCache, completeServerCache, accumulator) {\n var complete;\n if (writesCache.shadowingWrite(path) != null) {\n return viewCache;\n }\n else {\n var source = new CompleteChildSource_1.WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\n var oldEventCache = viewCache.getEventCache().getNode();\n var newEventCache = void 0;\n if (path.isEmpty() || path.getFront() === '.priority') {\n var newNode = void 0;\n if (viewCache.getServerCache().isFullyInitialized()) {\n newNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n }\n else {\n var serverChildren = viewCache.getServerCache().getNode();\n util_1.assert(serverChildren instanceof ChildrenNode_1.ChildrenNode, 'serverChildren would be complete if leaf node');\n newNode = writesCache.calcCompleteEventChildren(serverChildren);\n }\n newNode = newNode;\n newEventCache = this.filter_.updateFullNode(oldEventCache, newNode, accumulator);\n }\n else {\n var childKey = path.getFront();\n var newChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\n if (newChild == null &&\n viewCache.getServerCache().isCompleteForChild(childKey)) {\n newChild = oldEventCache.getImmediateChild(childKey);\n }\n if (newChild != null) {\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, newChild, path.popFront(), source, accumulator);\n }\n else if (viewCache\n .getEventCache()\n .getNode()\n .hasChild(childKey)) {\n // No complete child available, delete the existing one, if any\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE, path.popFront(), source, accumulator);\n }\n else {\n newEventCache = oldEventCache;\n }\n if (newEventCache.isEmpty() &&\n viewCache.getServerCache().isFullyInitialized()) {\n // We might have reverted all child writes. Maybe the old event was a leaf node\n complete = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\n if (complete.isLeafNode()) {\n newEventCache = this.filter_.updateFullNode(newEventCache, complete, accumulator);\n }\n }\n }\n complete =\n viewCache.getServerCache().isFullyInitialized() ||\n writesCache.shadowingWrite(Path_1.Path.Empty) != null;\n return viewCache.updateEventSnap(newEventCache, complete, this.filter_.filtersNodes());\n }\n };\n return ViewProcessor;\n}());\nexports.ViewProcessor = ViewProcessor;\n\n//# sourceMappingURL=ViewProcessor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ViewProcessor.js\n// module id = 91\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"./Change\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * @constructor\n */\nvar ChildChangeAccumulator = /** @class */ (function () {\n function ChildChangeAccumulator() {\n this.changeMap_ = {};\n }\n /**\n * @param {!Change} change\n */\n ChildChangeAccumulator.prototype.trackChildChange = function (change) {\n var type = change.type;\n var childKey /** @type {!string} */ = change.childName;\n util_2.assert(type == Change_1.Change.CHILD_ADDED ||\n type == Change_1.Change.CHILD_CHANGED ||\n type == Change_1.Change.CHILD_REMOVED, 'Only child changes supported for tracking');\n util_2.assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\n var oldChange = util_1.safeGet(this.changeMap_, childKey);\n if (oldChange) {\n var oldType = oldChange.type;\n if (type == Change_1.Change.CHILD_ADDED && oldType == Change_1.Change.CHILD_REMOVED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n delete this.changeMap_[childKey];\n }\n else if (type == Change_1.Change.CHILD_REMOVED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childRemovedChange(childKey, oldChange.oldSnap);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_ADDED) {\n this.changeMap_[childKey] = Change_1.Change.childAddedChange(childKey, change.snapshotNode);\n }\n else if (type == Change_1.Change.CHILD_CHANGED &&\n oldType == Change_1.Change.CHILD_CHANGED) {\n this.changeMap_[childKey] = Change_1.Change.childChangedChange(childKey, change.snapshotNode, oldChange.oldSnap);\n }\n else {\n throw util_2.assertionError('Illegal combination of changes: ' +\n change +\n ' occurred after ' +\n oldChange);\n }\n }\n else {\n this.changeMap_[childKey] = change;\n }\n };\n /**\n * @return {!Array.}\n */\n ChildChangeAccumulator.prototype.getChanges = function () {\n return util_1.getValues(this.changeMap_);\n };\n return ChildChangeAccumulator;\n}());\nexports.ChildChangeAccumulator = ChildChangeAccumulator;\n\n//# sourceMappingURL=ChildChangeAccumulator.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/ChildChangeAccumulator.js\n// module id = 92\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CacheNode_1 = require(\"./CacheNode\");\n/**\n * An implementation of CompleteChildSource that never returns any additional children\n *\n * @private\n * @constructor\n * @implements CompleteChildSource\n */\nvar NoCompleteChildSource_ = /** @class */ (function () {\n function NoCompleteChildSource_() {\n }\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getCompleteChild = function (childKey) {\n return null;\n };\n /**\n * @inheritDoc\n */\n NoCompleteChildSource_.prototype.getChildAfterChild = function (index, child, reverse) {\n return null;\n };\n return NoCompleteChildSource_;\n}());\nexports.NoCompleteChildSource_ = NoCompleteChildSource_;\n/**\n * Singleton instance.\n * @const\n * @type {!CompleteChildSource}\n */\nexports.NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\n/**\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\n * old event caches available to calculate complete children.\n *\n *\n * @implements CompleteChildSource\n */\nvar WriteTreeCompleteChildSource = /** @class */ (function () {\n /**\n * @param {!WriteTreeRef} writes_\n * @param {!ViewCache} viewCache_\n * @param {?Node} optCompleteServerCache_\n */\n function WriteTreeCompleteChildSource(writes_, viewCache_, optCompleteServerCache_) {\n if (optCompleteServerCache_ === void 0) { optCompleteServerCache_ = null; }\n this.writes_ = writes_;\n this.viewCache_ = viewCache_;\n this.optCompleteServerCache_ = optCompleteServerCache_;\n }\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getCompleteChild = function (childKey) {\n var node = this.viewCache_.getEventCache();\n if (node.isCompleteForChild(childKey)) {\n return node.getNode().getImmediateChild(childKey);\n }\n else {\n var serverNode = this.optCompleteServerCache_ != null\n ? new CacheNode_1.CacheNode(this.optCompleteServerCache_, true, false)\n : this.viewCache_.getServerCache();\n return this.writes_.calcCompleteChild(childKey, serverNode);\n }\n };\n /**\n * @inheritDoc\n */\n WriteTreeCompleteChildSource.prototype.getChildAfterChild = function (index, child, reverse) {\n var completeServerData = this.optCompleteServerCache_ != null\n ? this.optCompleteServerCache_\n : this.viewCache_.getCompleteServerSnap();\n var nodes = this.writes_.calcIndexedSlice(completeServerData, child, 1, reverse, index);\n if (nodes.length === 0) {\n return null;\n }\n else {\n return nodes[0];\n }\n };\n return WriteTreeCompleteChildSource;\n}());\nexports.WriteTreeCompleteChildSource = WriteTreeCompleteChildSource;\n\n//# sourceMappingURL=CompleteChildSource.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/CompleteChildSource.js\n// module id = 93\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = require(\"../snap/Node\");\nvar Change_1 = require(\"./Change\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n * @constructor\n */\nvar EventGenerator = /** @class */ (function () {\n /**\n *\n * @param {!Query} query_\n */\n function EventGenerator(query_) {\n this.query_ = query_;\n /**\n * @private\n * @type {!Index}\n */\n this.index_ = this.query_.getQueryParams().getIndex();\n }\n /**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n *\n * @param {!Array.} changes\n * @param {!Node} eventCache\n * @param {!Array.} eventRegistrations\n * @return {!Array.}\n */\n EventGenerator.prototype.generateEventsForChanges = function (changes, eventCache, eventRegistrations) {\n var _this = this;\n var events = [];\n var moves = [];\n changes.forEach(function (change) {\n if (change.type === Change_1.Change.CHILD_CHANGED &&\n _this.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\n moves.push(Change_1.Change.childMovedChange(change.childName, change.snapshotNode));\n }\n });\n this.generateEventsForType_(events, Change_1.Change.CHILD_REMOVED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_ADDED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_MOVED, moves, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.CHILD_CHANGED, changes, eventRegistrations, eventCache);\n this.generateEventsForType_(events, Change_1.Change.VALUE, changes, eventRegistrations, eventCache);\n return events;\n };\n /**\n * Given changes of a single change type, generate the corresponding events.\n *\n * @param {!Array.} events\n * @param {!string} eventType\n * @param {!Array.} changes\n * @param {!Array.} registrations\n * @param {!Node} eventCache\n * @private\n */\n EventGenerator.prototype.generateEventsForType_ = function (events, eventType, changes, registrations, eventCache) {\n var _this = this;\n var filteredChanges = changes.filter(function (change) { return change.type === eventType; });\n filteredChanges.sort(this.compareChanges_.bind(this));\n filteredChanges.forEach(function (change) {\n var materializedChange = _this.materializeSingleChange_(change, eventCache);\n registrations.forEach(function (registration) {\n if (registration.respondsTo(change.type)) {\n events.push(registration.createEvent(materializedChange, _this.query_));\n }\n });\n });\n };\n /**\n * @param {!Change} change\n * @param {!Node} eventCache\n * @return {!Change}\n * @private\n */\n EventGenerator.prototype.materializeSingleChange_ = function (change, eventCache) {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n }\n else {\n change.prevName = eventCache.getPredecessorChildName(\n /** @type {!string} */\n change.childName, change.snapshotNode, this.index_);\n return change;\n }\n };\n /**\n * @param {!Change} a\n * @param {!Change} b\n * @return {number}\n * @private\n */\n EventGenerator.prototype.compareChanges_ = function (a, b) {\n if (a.childName == null || b.childName == null) {\n throw util_1.assertionError('Should only compare child_ events.');\n }\n var aWrapped = new Node_1.NamedNode(a.childName, a.snapshotNode);\n var bWrapped = new Node_1.NamedNode(b.childName, b.snapshotNode);\n return this.index_.compare(aWrapped, bWrapped);\n };\n return EventGenerator;\n}());\nexports.EventGenerator = EventGenerator;\n\n//# sourceMappingURL=EventGenerator.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventGenerator.js\n// module id = 94\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\nvar Path_1 = require(\"./util/Path\");\nvar CompoundWrite_1 = require(\"./CompoundWrite\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\n/**\n * WriteTree tracks all pending user-initiated writes and has methods to calculate the result of merging them\n * with underlying server data (to create \"event cache\" data). Pending writes are added with addOverwrite()\n * and addMerge(), and removed with removeWrite().\n *\n * @constructor\n */\nvar WriteTree = /** @class */ (function () {\n function WriteTree() {\n /**\n * A tree tracking the result of applying all visible writes. This does not include transactions with\n * applyLocally=false or writes that are completely shadowed by other writes.\n *\n * @type {!CompoundWrite}\n * @private\n */\n this.visibleWrites_ = CompoundWrite_1.CompoundWrite.Empty;\n /**\n * A list of all pending writes, regardless of visibility and shadowed-ness. Used to calculate arbitrary\n * sets of the changed data, such as hidden writes (from transactions) or changes with certain writes excluded (also\n * used by transactions).\n *\n * @type {!Array.}\n * @private\n */\n this.allWrites_ = [];\n this.lastWriteId_ = -1;\n }\n /**\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\n *\n * @param {!Path} path\n * @return {!WriteTreeRef}\n */\n WriteTree.prototype.childWrites = function (path) {\n return new WriteTreeRef(path, this);\n };\n /**\n * Record a new overwrite from user code.\n *\n * @param {!Path} path\n * @param {!Node} snap\n * @param {!number} writeId\n * @param {boolean=} visible This is set to false by some transactions. It should be excluded from event caches\n */\n WriteTree.prototype.addOverwrite = function (path, snap, writeId, visible) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older write on top of newer ones');\n if (visible === undefined) {\n visible = true;\n }\n this.allWrites_.push({\n path: path,\n snap: snap,\n writeId: writeId,\n visible: visible\n });\n if (visible) {\n this.visibleWrites_ = this.visibleWrites_.addWrite(path, snap);\n }\n this.lastWriteId_ = writeId;\n };\n /**\n * Record a new merge from user code.\n *\n * @param {!Path} path\n * @param {!Object.} changedChildren\n * @param {!number} writeId\n */\n WriteTree.prototype.addMerge = function (path, changedChildren, writeId) {\n util_2.assert(writeId > this.lastWriteId_, 'Stacking an older merge on top of newer ones');\n this.allWrites_.push({\n path: path,\n children: changedChildren,\n writeId: writeId,\n visible: true\n });\n this.visibleWrites_ = this.visibleWrites_.addWrites(path, changedChildren);\n this.lastWriteId_ = writeId;\n };\n /**\n * @param {!number} writeId\n * @return {?WriteRecord}\n */\n WriteTree.prototype.getWrite = function (writeId) {\n for (var i = 0; i < this.allWrites_.length; i++) {\n var record = this.allWrites_[i];\n if (record.writeId === writeId) {\n return record;\n }\n }\n return null;\n };\n /**\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\n *\n * @param {!number} writeId\n * @return {boolean} true if the write may have been visible (meaning we'll need to reevaluate / raise\n * events as a result).\n */\n WriteTree.prototype.removeWrite = function (writeId) {\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\n // out of order.\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\n var _this = this;\n var idx = this.allWrites_.findIndex(function (s) {\n return s.writeId === writeId;\n });\n util_2.assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\n var writeToRemove = this.allWrites_[idx];\n this.allWrites_.splice(idx, 1);\n var removedWriteWasVisible = writeToRemove.visible;\n var removedWriteOverlapsWithOtherWrites = false;\n var i = this.allWrites_.length - 1;\n while (removedWriteWasVisible && i >= 0) {\n var currentWrite = this.allWrites_[i];\n if (currentWrite.visible) {\n if (i >= idx &&\n this.recordContainsPath_(currentWrite, writeToRemove.path)) {\n // The removed write was completely shadowed by a subsequent write.\n removedWriteWasVisible = false;\n }\n else if (writeToRemove.path.contains(currentWrite.path)) {\n // Either we're covering some writes or they're covering part of us (depending on which came first).\n removedWriteOverlapsWithOtherWrites = true;\n }\n }\n i--;\n }\n if (!removedWriteWasVisible) {\n return false;\n }\n else if (removedWriteOverlapsWithOtherWrites) {\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\n this.resetTree_();\n return true;\n }\n else {\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\n if (writeToRemove.snap) {\n this.visibleWrites_ = this.visibleWrites_.removeWrite(writeToRemove.path);\n }\n else {\n var children = writeToRemove.children;\n util_1.forEach(children, function (childName) {\n _this.visibleWrites_ = _this.visibleWrites_.removeWrite(writeToRemove.path.child(childName));\n });\n }\n return true;\n }\n };\n /**\n * Return a complete snapshot for the given path if there's visible write data at that path, else null.\n * No server data is considered.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.getCompleteWriteData = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\n * writes), attempt to calculate a complete snapshot for the given path\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude An optional set to be excluded\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteEventCache = function (treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n if (!writeIdsToExclude && !includeHiddenWrites) {\n var shadowingNode = this.visibleWrites_.getCompleteNode(treePath);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n var subMerge = this.visibleWrites_.childCompoundWrite(treePath);\n if (subMerge.isEmpty()) {\n return completeServerCache;\n }\n else if (completeServerCache == null &&\n !subMerge.hasCompleteWrite(Path_1.Path.Empty)) {\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\n return null;\n }\n else {\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return subMerge.apply(layeredCache);\n }\n }\n }\n else {\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n if (!includeHiddenWrites && merge.isEmpty()) {\n return completeServerCache;\n }\n else {\n // If the server cache is null, and we don't have a complete cache, we need to return null\n if (!includeHiddenWrites &&\n completeServerCache == null &&\n !merge.hasCompleteWrite(Path_1.Path.Empty)) {\n return null;\n }\n else {\n var filter = function (write) {\n return ((write.visible || includeHiddenWrites) &&\n (!writeIdsToExclude ||\n !~writeIdsToExclude.indexOf(write.writeId)) &&\n (write.path.contains(treePath) || treePath.contains(write.path)));\n };\n var mergeAtPath = WriteTree.layerTree_(this.allWrites_, filter, treePath);\n var layeredCache = completeServerCache || ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n return mergeAtPath.apply(layeredCache);\n }\n }\n }\n };\n /**\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\n * Used when creating new views, to pre-fill their complete event children snapshot.\n *\n * @param {!Path} treePath\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTree.prototype.calcCompleteEventChildren = function (treePath, completeServerChildren) {\n var completeChildren = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n var topLevelSet = this.visibleWrites_.getCompleteNode(treePath);\n if (topLevelSet) {\n if (!topLevelSet.isLeafNode()) {\n // we're shadowing everything. Return the children.\n topLevelSet.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childSnap) {\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\n });\n }\n return completeChildren;\n }\n else if (completeServerChildren) {\n // Layer any children we have on top of this\n // We know we don't have a top-level set, so just enumerate existing children\n var merge_1 = this.visibleWrites_.childCompoundWrite(treePath);\n completeServerChildren.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n var node = merge_1\n .childCompoundWrite(new Path_1.Path(childName))\n .apply(childNode);\n completeChildren = completeChildren.updateImmediateChild(childName, node);\n });\n // Add any complete children we have from the set\n merge_1.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n else {\n // We don't have anything to layer on top of. Layer on any children we have\n // Note that we can return an empty snap if we have a defined delete\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n merge.getCompleteChildren().forEach(function (namedNode) {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n };\n /**\n * Given that the underlying server data has updated, determine what, if anything, needs to be\n * applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events\n *\n * Either existingEventSnap or existingServerSnap must exist\n *\n * @param {!Path} treePath\n * @param {!Path} childPath\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcEventCacheAfterServerOverwrite = function (treePath, childPath, existingEventSnap, existingServerSnap) {\n util_2.assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\n var path = treePath.child(childPath);\n if (this.visibleWrites_.hasCompleteWrite(path)) {\n // At this point we can probably guarantee that we're in case 2, meaning no events\n // May need to check visibility while doing the findRootMostValueAndPath call\n return null;\n }\n else {\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n if (childMerge.isEmpty()) {\n // We're not shadowing at all. Case 1\n return existingServerSnap.getChild(childPath);\n }\n else {\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\n // However this is tricky to find out, since user updates don't necessary change the server\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\n // only check if the updates change the serverNode.\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\n return childMerge.apply(existingServerSnap.getChild(childPath));\n }\n }\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!Path} treePath\n * @param {!string} childKey\n * @param {!CacheNode} existingServerSnap\n * @return {?Node}\n */\n WriteTree.prototype.calcCompleteChild = function (treePath, childKey, existingServerSnap) {\n var path = treePath.child(childKey);\n var shadowingNode = this.visibleWrites_.getCompleteNode(path);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n if (existingServerSnap.isCompleteForChild(childKey)) {\n var childMerge = this.visibleWrites_.childCompoundWrite(path);\n return childMerge.apply(existingServerSnap.getNode().getImmediateChild(childKey));\n }\n else {\n return null;\n }\n }\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTree.prototype.shadowingWrite = function (path) {\n return this.visibleWrites_.getCompleteNode(path);\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window.\n *\n * @param {!Path} treePath\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTree.prototype.calcIndexedSlice = function (treePath, completeServerData, startPost, count, reverse, index) {\n var toIterate;\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\n var shadowingNode = merge.getCompleteNode(Path_1.Path.Empty);\n if (shadowingNode != null) {\n toIterate = shadowingNode;\n }\n else if (completeServerData != null) {\n toIterate = merge.apply(completeServerData);\n }\n else {\n // no children to iterate on\n return [];\n }\n toIterate = toIterate.withIndex(index);\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\n var nodes = [];\n var cmp = index.getCompare();\n var iter = reverse\n ? toIterate.getReverseIteratorFrom(startPost, index)\n : toIterate.getIteratorFrom(startPost, index);\n var next = iter.getNext();\n while (next && nodes.length < count) {\n if (cmp(next, startPost) !== 0) {\n nodes.push(next);\n }\n next = iter.getNext();\n }\n return nodes;\n }\n else {\n return [];\n }\n };\n /**\n * @param {!WriteRecord} writeRecord\n * @param {!Path} path\n * @return {boolean}\n * @private\n */\n WriteTree.prototype.recordContainsPath_ = function (writeRecord, path) {\n if (writeRecord.snap) {\n return writeRecord.path.contains(path);\n }\n else {\n // findKey can return undefined, so use !! to coerce to boolean\n return !!util_1.findKey(writeRecord.children, function (childSnap, childName) {\n return writeRecord.path.child(childName).contains(path);\n });\n }\n };\n /**\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\n * @private\n */\n WriteTree.prototype.resetTree_ = function () {\n this.visibleWrites_ = WriteTree.layerTree_(this.allWrites_, WriteTree.DefaultFilter_, Path_1.Path.Empty);\n if (this.allWrites_.length > 0) {\n this.lastWriteId_ = this.allWrites_[this.allWrites_.length - 1].writeId;\n }\n else {\n this.lastWriteId_ = -1;\n }\n };\n /**\n * The default filter used when constructing the tree. Keep everything that's visible.\n *\n * @param {!WriteRecord} write\n * @return {boolean}\n * @private\n */\n WriteTree.DefaultFilter_ = function (write) {\n return write.visible;\n };\n /**\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\n * event data at that path.\n *\n * @param {!Array.} writes\n * @param {!function(!WriteRecord):boolean} filter\n * @param {!Path} treeRoot\n * @return {!CompoundWrite}\n * @private\n */\n WriteTree.layerTree_ = function (writes, filter, treeRoot) {\n var compoundWrite = CompoundWrite_1.CompoundWrite.Empty;\n for (var i = 0; i < writes.length; ++i) {\n var write = writes[i];\n // Theory, a later set will either:\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\n if (filter(write)) {\n var writePath = write.path;\n var relativePath = void 0;\n if (write.snap) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrite(relativePath, write.snap);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, write.snap.getChild(relativePath));\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else if (write.children) {\n if (treeRoot.contains(writePath)) {\n relativePath = Path_1.Path.relativePath(treeRoot, writePath);\n compoundWrite = compoundWrite.addWrites(relativePath, write.children);\n }\n else if (writePath.contains(treeRoot)) {\n relativePath = Path_1.Path.relativePath(writePath, treeRoot);\n if (relativePath.isEmpty()) {\n compoundWrite = compoundWrite.addWrites(Path_1.Path.Empty, write.children);\n }\n else {\n var child = util_1.safeGet(write.children, relativePath.getFront());\n if (child) {\n // There exists a child in this node that matches the root path\n var deepNode = child.getChild(relativePath.popFront());\n compoundWrite = compoundWrite.addWrite(Path_1.Path.Empty, deepNode);\n }\n }\n }\n else {\n // There is no overlap between root path and write path, ignore write\n }\n }\n else {\n throw util_2.assertionError('WriteRecord should have .snap or .children');\n }\n }\n }\n return compoundWrite;\n };\n return WriteTree;\n}());\nexports.WriteTree = WriteTree;\n/**\n * A WriteTreeRef wraps a WriteTree and a path, for convenient access to a particular subtree. All of the methods\n * just proxy to the underlying WriteTree.\n *\n * @constructor\n */\nvar WriteTreeRef = /** @class */ (function () {\n /**\n * @param {!Path} path\n * @param {!WriteTree} writeTree\n */\n function WriteTreeRef(path, writeTree) {\n this.treePath_ = path;\n this.writeTree_ = writeTree;\n }\n /**\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\n * can lead to a more expensive calculation.\n *\n * @param {?Node} completeServerCache\n * @param {Array.=} writeIdsToExclude Optional writes to exclude.\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteEventCache = function (completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n return this.writeTree_.calcCompleteEventCache(this.treePath_, completeServerCache, writeIdsToExclude, includeHiddenWrites);\n };\n /**\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\n * mix of the given server data and write data.\n *\n * @param {?ChildrenNode} completeServerChildren\n * @return {!ChildrenNode}\n */\n WriteTreeRef.prototype.calcCompleteEventChildren = function (completeServerChildren) {\n return this.writeTree_.calcCompleteEventChildren(this.treePath_, completeServerChildren);\n };\n /**\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\n * if anything, needs to be applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events should be raised\n *\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\n *\n * @param {!Path} path\n * @param {?Node} existingEventSnap\n * @param {?Node} existingServerSnap\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcEventCacheAfterServerOverwrite = function (path, existingEventSnap, existingServerSnap) {\n return this.writeTree_.calcEventCacheAfterServerOverwrite(this.treePath_, path, existingEventSnap, existingServerSnap);\n };\n /**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n * @param {!Path} path\n * @return {?Node}\n */\n WriteTreeRef.prototype.shadowingWrite = function (path) {\n return this.writeTree_.shadowingWrite(this.treePath_.child(path));\n };\n /**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window\n *\n * @param {?Node} completeServerData\n * @param {!NamedNode} startPost\n * @param {!number} count\n * @param {boolean} reverse\n * @param {!Index} index\n * @return {!Array.}\n */\n WriteTreeRef.prototype.calcIndexedSlice = function (completeServerData, startPost, count, reverse, index) {\n return this.writeTree_.calcIndexedSlice(this.treePath_, completeServerData, startPost, count, reverse, index);\n };\n /**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n *\n * @param {!string} childKey\n * @param {!CacheNode} existingServerCache\n * @return {?Node}\n */\n WriteTreeRef.prototype.calcCompleteChild = function (childKey, existingServerCache) {\n return this.writeTree_.calcCompleteChild(this.treePath_, childKey, existingServerCache);\n };\n /**\n * Return a WriteTreeRef for a child.\n *\n * @param {string} childName\n * @return {!WriteTreeRef}\n */\n WriteTreeRef.prototype.child = function (childName) {\n return new WriteTreeRef(this.treePath_.child(childName), this.writeTree_);\n };\n return WriteTreeRef;\n}());\nexports.WriteTreeRef = WriteTreeRef;\n\n//# sourceMappingURL=WriteTree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/WriteTree.js\n// module id = 95\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ImmutableTree_1 = require(\"./util/ImmutableTree\");\nvar Path_1 = require(\"./util/Path\");\nvar util_1 = require(\"@firebase/util\");\nvar Node_1 = require(\"./snap/Node\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n *\n * @constructor\n * @param {!ImmutableTree.} writeTree\n */\nvar CompoundWrite = /** @class */ (function () {\n function CompoundWrite(writeTree_) {\n this.writeTree_ = writeTree_;\n }\n /**\n * @param {!Path} path\n * @param {!Node} node\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrite = function (path, node) {\n if (path.isEmpty()) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(node));\n }\n else {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n var rootMostPath = rootmost.path;\n var value = rootmost.value;\n var relativePath = Path_1.Path.relativePath(rootMostPath, path);\n value = value.updateChild(relativePath, node);\n return new CompoundWrite(this.writeTree_.set(rootMostPath, value));\n }\n else {\n var subtree = new ImmutableTree_1.ImmutableTree(node);\n var newWriteTree = this.writeTree_.setTree(path, subtree);\n return new CompoundWrite(newWriteTree);\n }\n }\n };\n /**\n * @param {!Path} path\n * @param {!Object.} updates\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.addWrites = function (path, updates) {\n var newWrite = this;\n util_1.forEach(updates, function (childKey, node) {\n newWrite = newWrite.addWrite(path.child(childKey), node);\n });\n return newWrite;\n };\n /**\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\n * location, which must be removed by calling this method with that path.\n *\n * @param {!Path} path The path at which a write and all deeper writes should be removed\n * @return {!CompoundWrite} The new CompoundWrite with the removed path\n */\n CompoundWrite.prototype.removeWrite = function (path) {\n if (path.isEmpty()) {\n return CompoundWrite.Empty;\n }\n else {\n var newWriteTree = this.writeTree_.setTree(path, ImmutableTree_1.ImmutableTree.Empty);\n return new CompoundWrite(newWriteTree);\n }\n };\n /**\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\n * considered \"complete\".\n *\n * @param {!Path} path The path to check for\n * @return {boolean} Whether there is a complete write at that path\n */\n CompoundWrite.prototype.hasCompleteWrite = function (path) {\n return this.getCompleteNode(path) != null;\n };\n /**\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\n * writes from deeper paths, but will return child nodes from a more shallow path.\n *\n * @param {!Path} path The path to get a complete write\n * @return {?Node} The node if complete at that path, or null otherwise.\n */\n CompoundWrite.prototype.getCompleteNode = function (path) {\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n return this.writeTree_\n .get(rootmost.path)\n .getChild(Path_1.Path.relativePath(rootmost.path, path));\n }\n else {\n return null;\n }\n };\n /**\n * Returns all children that are guaranteed to be a complete overwrite.\n *\n * @return {!Array.} A list of all complete children.\n */\n CompoundWrite.prototype.getCompleteChildren = function () {\n var children = [];\n var node = this.writeTree_.value;\n if (node != null) {\n // If it's a leaf node, it has no children; so nothing to do.\n if (!node.isLeafNode()) {\n node.forEachChild(PriorityIndex_1.PRIORITY_INDEX, function (childName, childNode) {\n children.push(new Node_1.NamedNode(childName, childNode));\n });\n }\n }\n else {\n this.writeTree_.children.inorderTraversal(function (childName, childTree) {\n if (childTree.value != null) {\n children.push(new Node_1.NamedNode(childName, childTree.value));\n }\n });\n }\n return children;\n };\n /**\n * @param {!Path} path\n * @return {!CompoundWrite}\n */\n CompoundWrite.prototype.childCompoundWrite = function (path) {\n if (path.isEmpty()) {\n return this;\n }\n else {\n var shadowingNode = this.getCompleteNode(path);\n if (shadowingNode != null) {\n return new CompoundWrite(new ImmutableTree_1.ImmutableTree(shadowingNode));\n }\n else {\n return new CompoundWrite(this.writeTree_.subtree(path));\n }\n }\n };\n /**\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\n * @return {boolean} Whether this CompoundWrite is empty\n */\n CompoundWrite.prototype.isEmpty = function () {\n return this.writeTree_.isEmpty();\n };\n /**\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\n * node\n * @param {!Node} node The node to apply this CompoundWrite to\n * @return {!Node} The node with all writes applied\n */\n CompoundWrite.prototype.apply = function (node) {\n return CompoundWrite.applySubtreeWrite_(Path_1.Path.Empty, this.writeTree_, node);\n };\n /**\n * @type {!CompoundWrite}\n */\n CompoundWrite.Empty = new CompoundWrite(new ImmutableTree_1.ImmutableTree(null));\n /**\n * @param {!Path} relativePath\n * @param {!ImmutableTree.} writeTree\n * @param {!Node} node\n * @return {!Node}\n * @private\n */\n CompoundWrite.applySubtreeWrite_ = function (relativePath, writeTree, node) {\n if (writeTree.value != null) {\n // Since there a write is always a leaf, we're done here\n return node.updateChild(relativePath, writeTree.value);\n }\n else {\n var priorityWrite_1 = null;\n writeTree.children.inorderTraversal(function (childKey, childTree) {\n if (childKey === '.priority') {\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\n // to apply priorities to empty nodes that are later filled\n util_2.assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\n priorityWrite_1 = childTree.value;\n }\n else {\n node = CompoundWrite.applySubtreeWrite_(relativePath.child(childKey), childTree, node);\n }\n });\n // If there was a priority write, we only apply it if the node is not empty\n if (!node.getChild(relativePath).isEmpty() && priorityWrite_1 !== null) {\n node = node.updateChild(relativePath.child('.priority'), priorityWrite_1);\n }\n return node;\n }\n };\n return CompoundWrite;\n}());\nexports.CompoundWrite = CompoundWrite;\n\n//# sourceMappingURL=CompoundWrite.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/CompoundWrite.js\n// module id = 96\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n *\n * @constructor\n */\nvar SnapshotHolder = /** @class */ (function () {\n function SnapshotHolder() {\n this.rootNode_ = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n SnapshotHolder.prototype.getNode = function (path) {\n return this.rootNode_.getChild(path);\n };\n SnapshotHolder.prototype.updateSnapshot = function (path, newSnapshotNode) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n };\n return SnapshotHolder;\n}());\nexports.SnapshotHolder = SnapshotHolder;\n\n//# sourceMappingURL=SnapshotHolder.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/SnapshotHolder.js\n// module id = 97\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util/util\");\n/**\n * Abstraction around FirebaseApp's token fetching capabilities.\n */\nvar AuthTokenProvider = /** @class */ (function () {\n /**\n * @param {!FirebaseApp} app_\n */\n function AuthTokenProvider(app_) {\n this.app_ = app_;\n }\n /**\n * @param {boolean} forceRefresh\n * @return {!Promise}\n */\n AuthTokenProvider.prototype.getToken = function (forceRefresh) {\n return this.app_['INTERNAL']['getToken'](forceRefresh).then(null, \n // .catch\n function (error) {\n // TODO: Need to figure out all the cases this is raised and whether\n // this makes sense.\n if (error && error.code === 'auth/token-not-initialized') {\n util_1.log('Got auth/token-not-initialized error. Treating as null token.');\n return null;\n }\n else {\n return Promise.reject(error);\n }\n });\n };\n AuthTokenProvider.prototype.addTokenChangeListener = function (listener) {\n // TODO: We might want to wrap the listener and call it with no args to\n // avoid a leaky abstraction, but that makes removing the listener harder.\n this.app_['INTERNAL']['addAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.removeTokenChangeListener = function (listener) {\n this.app_['INTERNAL']['removeAuthTokenListener'](listener);\n };\n AuthTokenProvider.prototype.notifyForInvalidToken = function () {\n var errorMessage = 'Provided authentication credentials for the app named \"' +\n this.app_.name +\n '\" are invalid. This usually indicates your app was not ' +\n 'initialized correctly. ';\n if ('credential' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"credential\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else if ('serviceAccount' in this.app_.options) {\n errorMessage +=\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n }\n else {\n errorMessage +=\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\n 'initializeApp() match the values provided for your app at ' +\n 'https://console.firebase.google.com/.';\n }\n util_1.warn(errorMessage);\n };\n return AuthTokenProvider;\n}());\nexports.AuthTokenProvider = AuthTokenProvider;\n\n//# sourceMappingURL=AuthTokenProvider.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/AuthTokenProvider.js\n// module id = 98\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Tracks a collection of stats.\n *\n * @constructor\n */\nvar StatsCollection = /** @class */ (function () {\n function StatsCollection() {\n this.counters_ = {};\n }\n StatsCollection.prototype.incrementCounter = function (name, amount) {\n if (amount === void 0) { amount = 1; }\n if (!util_2.contains(this.counters_, name))\n this.counters_[name] = 0;\n this.counters_[name] += amount;\n };\n StatsCollection.prototype.get = function () {\n return util_1.deepCopy(this.counters_);\n };\n return StatsCollection;\n}());\nexports.StatsCollection = StatsCollection;\n\n//# sourceMappingURL=StatsCollection.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsCollection.js\n// module id = 99\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar StatsListener_1 = require(\"./StatsListener\");\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nvar FIRST_STATS_MIN_TIME = 10 * 1000;\nvar FIRST_STATS_MAX_TIME = 30 * 1000;\n// We'll continue to report stats on average every 5 minutes.\nvar REPORT_STATS_INTERVAL = 5 * 60 * 1000;\n/**\n * @constructor\n */\nvar StatsReporter = /** @class */ (function () {\n /**\n * @param collection\n * @param server_\n */\n function StatsReporter(collection, server_) {\n this.server_ = server_;\n this.statsToReport_ = {};\n this.statsListener_ = new StatsListener_1.StatsListener(collection);\n var timeout = FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n StatsReporter.prototype.includeStat = function (stat) {\n this.statsToReport_[stat] = true;\n };\n StatsReporter.prototype.reportStats_ = function () {\n var _this = this;\n var stats = this.statsListener_.get();\n var reportedStats = {};\n var haveStatsToReport = false;\n util_1.forEach(stats, function (stat, value) {\n if (value > 0 && util_1.contains(_this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n // queue our next run.\n util_2.setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\n };\n return StatsReporter;\n}());\nexports.StatsReporter = StatsReporter;\n\n//# sourceMappingURL=StatsReporter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/stats/StatsReporter.js\n// module id = 100\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util/util\");\n/**\n * The event queue serves a few purposes:\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\n * events being queued.\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\n * left off, ensuring that the events are still raised synchronously and in order.\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\n * events are raised synchronously.\n *\n * NOTE: This can all go away if/when we move to async events.\n *\n * @constructor\n */\nvar EventQueue = /** @class */ (function () {\n function EventQueue() {\n /**\n * @private\n * @type {!Array.}\n */\n this.eventLists_ = [];\n /**\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\n * @private\n * @type {!number}\n */\n this.recursionDepth_ = 0;\n }\n /**\n * @param {!Array.} eventDataList The new events to queue.\n */\n EventQueue.prototype.queueEvents = function (eventDataList) {\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\n var currList = null;\n for (var i = 0; i < eventDataList.length; i++) {\n var eventData = eventDataList[i];\n var eventPath = eventData.getPath();\n if (currList !== null && !eventPath.equals(currList.getPath())) {\n this.eventLists_.push(currList);\n currList = null;\n }\n if (currList === null) {\n currList = new EventList(eventPath);\n }\n currList.add(eventData);\n }\n if (currList) {\n this.eventLists_.push(currList);\n }\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones)\n * for the specified path.\n *\n * It is assumed that the new events are all for the specified path.\n *\n * @param {!Path} path The path to raise events for.\n * @param {!Array.} eventDataList The new events to raise.\n */\n EventQueue.prototype.raiseEventsAtPath = function (path, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.equals(path);\n });\n };\n /**\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\n * locations related to the specified change path (i.e. all ancestors and descendants).\n *\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\n *\n * @param {!Path} changedPath The path to raise events for.\n * @param {!Array.} eventDataList The events to raise\n */\n EventQueue.prototype.raiseEventsForChangedPath = function (changedPath, eventDataList) {\n this.queueEvents(eventDataList);\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\n return eventPath.contains(changedPath) || changedPath.contains(eventPath);\n });\n };\n /**\n * @param {!function(!Path):boolean} predicate\n * @private\n */\n EventQueue.prototype.raiseQueuedEventsMatchingPredicate_ = function (predicate) {\n this.recursionDepth_++;\n var sentAll = true;\n for (var i = 0; i < this.eventLists_.length; i++) {\n var eventList = this.eventLists_[i];\n if (eventList) {\n var eventPath = eventList.getPath();\n if (predicate(eventPath)) {\n this.eventLists_[i].raise();\n this.eventLists_[i] = null;\n }\n else {\n sentAll = false;\n }\n }\n }\n if (sentAll) {\n this.eventLists_ = [];\n }\n this.recursionDepth_--;\n };\n return EventQueue;\n}());\nexports.EventQueue = EventQueue;\n/**\n * @param {!Path} path\n * @constructor\n */\nvar EventList = /** @class */ (function () {\n function EventList(path_) {\n this.path_ = path_;\n /**\n * @type {!Array.}\n * @private\n */\n this.events_ = [];\n }\n /**\n * @param {!Event} eventData\n */\n EventList.prototype.add = function (eventData) {\n this.events_.push(eventData);\n };\n /**\n * Iterates through the list and raises each event\n */\n EventList.prototype.raise = function () {\n for (var i = 0; i < this.events_.length; i++) {\n var eventData = this.events_[i];\n if (eventData !== null) {\n this.events_[i] = null;\n var eventFn = eventData.getEventRunner();\n if (util_1.logger) {\n util_1.log('event: ' + eventData.toString());\n }\n util_1.exceptionGuard(eventFn);\n }\n }\n };\n /**\n * @return {!Path}\n */\n EventList.prototype.getPath = function () {\n return this.path_;\n };\n return EventList;\n}());\nexports.EventList = EventList;\n\n//# sourceMappingURL=EventQueue.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/EventQueue.js\n// module id = 101\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter_1 = require(\"./EventEmitter\");\nvar util_1 = require(\"@firebase/util\");\n/**\n * @extends {EventEmitter}\n */\nvar VisibilityMonitor = /** @class */ (function (_super) {\n __extends(VisibilityMonitor, _super);\n function VisibilityMonitor() {\n var _this = _super.call(this, ['visible']) || this;\n var hidden;\n var visibilityChange;\n if (typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined') {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n }\n else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n }\n else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n }\n else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n _this.visible_ = true;\n if (visibilityChange) {\n document.addEventListener(visibilityChange, function () {\n var visible = !document[hidden];\n if (visible !== _this.visible_) {\n _this.visible_ = visible;\n _this.trigger('visible', visible);\n }\n }, false);\n }\n return _this;\n }\n VisibilityMonitor.getInstance = function () {\n return new VisibilityMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n VisibilityMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n };\n return VisibilityMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.VisibilityMonitor = VisibilityMonitor;\n\n//# sourceMappingURL=VisibilityMonitor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/VisibilityMonitor.js\n// module id = 102\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar EventEmitter_1 = require(\"./EventEmitter\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n *\n * @extends {EventEmitter}\n */\nvar OnlineMonitor = /** @class */ (function (_super) {\n __extends(OnlineMonitor, _super);\n function OnlineMonitor() {\n var _this = _super.call(this, ['online']) || this;\n _this.online_ = true;\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !util_2.isMobileCordova()) {\n window.addEventListener('online', function () {\n if (!_this.online_) {\n _this.online_ = true;\n _this.trigger('online', true);\n }\n }, false);\n window.addEventListener('offline', function () {\n if (_this.online_) {\n _this.online_ = false;\n _this.trigger('online', false);\n }\n }, false);\n }\n return _this;\n }\n OnlineMonitor.getInstance = function () {\n return new OnlineMonitor();\n };\n /**\n * @param {!string} eventType\n * @return {Array.}\n */\n OnlineMonitor.prototype.getInitialEvent = function (eventType) {\n util_1.assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n };\n /**\n * @return {boolean}\n */\n OnlineMonitor.prototype.currentlyOnline = function () {\n return this.online_;\n };\n return OnlineMonitor;\n}(EventEmitter_1.EventEmitter));\nexports.OnlineMonitor = OnlineMonitor;\n\n//# sourceMappingURL=OnlineMonitor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/OnlineMonitor.js\n// module id = 103\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BrowserPollConnection_1 = require(\"./BrowserPollConnection\");\nvar WebSocketConnection_1 = require(\"./WebSocketConnection\");\nvar util_1 = require(\"../core/util/util\");\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n * @constructor\n */\nvar TransportManager = /** @class */ (function () {\n /**\n * @param {!RepoInfo} repoInfo Metadata around the namespace we're connecting to\n */\n function TransportManager(repoInfo) {\n this.initTransports_(repoInfo);\n }\n Object.defineProperty(TransportManager, \"ALL_TRANSPORTS\", {\n /**\n * @const\n * @type {!Array.}\n */\n get: function () {\n return [BrowserPollConnection_1.BrowserPollConnection, WebSocketConnection_1.WebSocketConnection];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {!RepoInfo} repoInfo\n * @private\n */\n TransportManager.prototype.initTransports_ = function (repoInfo) {\n var isWebSocketsAvailable = WebSocketConnection_1.WebSocketConnection && WebSocketConnection_1.WebSocketConnection['isAvailable']();\n var isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection_1.WebSocketConnection.previouslyFailed();\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable)\n util_1.warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\n isSkipPollConnection = true;\n }\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection_1.WebSocketConnection];\n }\n else {\n var transports_1 = (this.transports_ = []);\n util_1.each(TransportManager.ALL_TRANSPORTS, function (i, transport) {\n if (transport && transport['isAvailable']()) {\n transports_1.push(transport);\n }\n });\n }\n };\n /**\n * @return {function(new:Transport, !string, !RepoInfo, string=, string=)} The constructor for the\n * initial transport to use\n */\n TransportManager.prototype.initialTransport = function () {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n }\n else {\n throw new Error('No transports available');\n }\n };\n /**\n * @return {?function(new:Transport, function(),function(), string=)} The constructor for the next\n * transport, or null\n */\n TransportManager.prototype.upgradeTransport = function () {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n }\n else {\n return null;\n }\n };\n return TransportManager;\n}());\nexports.TransportManager = TransportManager;\n\n//# sourceMappingURL=TransportManager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/TransportManager.js\n// module id = 104\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../../core/util/util\");\n/**\n * This class ensures the packets from the server arrive in order\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\n * @constructor\n */\nvar PacketReceiver = /** @class */ (function () {\n /**\n * @param onMessage_\n */\n function PacketReceiver(onMessage_) {\n this.onMessage_ = onMessage_;\n this.pendingResponses = [];\n this.currentResponseNum = 0;\n this.closeAfterResponse = -1;\n this.onClose = null;\n }\n PacketReceiver.prototype.closeAfter = function (responseNum, callback) {\n this.closeAfterResponse = responseNum;\n this.onClose = callback;\n if (this.closeAfterResponse < this.currentResponseNum) {\n this.onClose();\n this.onClose = null;\n }\n };\n /**\n * Each message from the server comes with a response number, and an array of data. The responseNumber\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\n * browsers will respond in the same order as the requests we sent\n * @param {number} requestNum\n * @param {Array} data\n */\n PacketReceiver.prototype.handleResponse = function (requestNum, data) {\n var _this = this;\n this.pendingResponses[requestNum] = data;\n var _loop_1 = function () {\n var toProcess = this_1.pendingResponses[this_1.currentResponseNum];\n delete this_1.pendingResponses[this_1.currentResponseNum];\n var _loop_2 = function (i) {\n if (toProcess[i]) {\n util_1.exceptionGuard(function () {\n _this.onMessage_(toProcess[i]);\n });\n }\n };\n for (var i = 0; i < toProcess.length; ++i) {\n _loop_2(i);\n }\n if (this_1.currentResponseNum === this_1.closeAfterResponse) {\n if (this_1.onClose) {\n this_1.onClose();\n this_1.onClose = null;\n }\n return \"break\";\n }\n this_1.currentResponseNum++;\n };\n var this_1 = this;\n while (this.pendingResponses[this.currentResponseNum]) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n return PacketReceiver;\n}());\nexports.PacketReceiver = PacketReceiver;\n\n//# sourceMappingURL=PacketReceiver.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/realtime/polling/PacketReceiver.js\n// module id = 105\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"./util/util\");\nvar util_3 = require(\"@firebase/util\");\nvar util_4 = require(\"@firebase/util\");\nvar util_5 = require(\"@firebase/util\");\nvar ServerActions_1 = require(\"./ServerActions\");\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nvar ReadonlyRestClient = /** @class */ (function (_super) {\n __extends(ReadonlyRestClient, _super);\n /**\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\n * @param {AuthTokenProvider} authTokenProvider_\n * @implements {ServerActions}\n */\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_) {\n var _this = _super.call(this) || this;\n _this.repoInfo_ = repoInfo_;\n _this.onDataUpdate_ = onDataUpdate_;\n _this.authTokenProvider_ = authTokenProvider_;\n /** @private {function(...[*])} */\n _this.log_ = util_2.logWrapper('p:rest:');\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n *\n * @private {!Object.}\n */\n _this.listens_ = {};\n return _this;\n }\n ReadonlyRestClient.prototype.reportStats = function (stats) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {!Query} query\n * @param {?number=} tag\n * @return {string}\n * @private\n */\n ReadonlyRestClient.getListenId_ = function (query, tag) {\n if (tag !== undefined) {\n return 'tag$' + tag;\n }\n else {\n util_1.assert(query.getQueryParams().isDefault(), \"should have a tag if it's not a default query.\");\n return query.path.toString();\n }\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.listen = function (query, currentHashFn, tag, onComplete) {\n var _this = this;\n var pathString = query.path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query.queryIdentifier());\n // Mark this listener so we can tell if it's removed.\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n var thisListen = {};\n this.listens_[listenId] = thisListen;\n var queryStringParamaters = query\n .getQueryParams()\n .toRestQueryStringParameters();\n this.restRequest_(pathString + '.json', queryStringParamaters, function (error, result) {\n var data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n _this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n if (util_4.safeGet(_this.listens_, listenId) === thisListen) {\n var status_1;\n if (!error) {\n status_1 = 'ok';\n }\n else if (error == 401) {\n status_1 = 'permission_denied';\n }\n else {\n status_1 = 'rest_error:' + error;\n }\n onComplete(status_1, null);\n }\n });\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.unlisten = function (query, tag) {\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n };\n /** @inheritDoc */\n ReadonlyRestClient.prototype.refreshAuthToken = function (token) {\n // no-op since we just always call getToken.\n };\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n *\n * @param {!string} pathString\n * @param {!Object.} queryStringParameters\n * @param {?function(?number, *=)} callback\n * @private\n */\n ReadonlyRestClient.prototype.restRequest_ = function (pathString, queryStringParameters, callback) {\n var _this = this;\n if (queryStringParameters === void 0) { queryStringParameters = {}; }\n queryStringParameters['format'] = 'export';\n this.authTokenProvider_\n .getToken(/*forceRefresh=*/ false)\n .then(function (authTokenData) {\n var authToken = authTokenData && authTokenData.accessToken;\n if (authToken) {\n queryStringParameters['auth'] = authToken;\n }\n var url = (_this.repoInfo_.secure ? 'https://' : 'http://') +\n _this.repoInfo_.host +\n pathString +\n '?' +\n util_5.querystring(queryStringParameters);\n _this.log_('Sending REST request for ' + url);\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (callback && xhr.readyState === 4) {\n _this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\n var res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = util_3.jsonEval(xhr.responseText);\n }\n catch (e) {\n util_2.warn('Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText);\n }\n callback(null, res);\n }\n else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n util_2.warn('Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status);\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n };\n return ReadonlyRestClient;\n}(ServerActions_1.ServerActions));\nexports.ReadonlyRestClient = ReadonlyRestClient;\n\n//# sourceMappingURL=ReadonlyRestClient.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/ReadonlyRestClient.js\n// module id = 106\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar util_2 = require(\"../util/util\");\nvar KeyIndex_1 = require(\"../snap/indexes/KeyIndex\");\nvar PriorityIndex_1 = require(\"../snap/indexes/PriorityIndex\");\nvar ValueIndex_1 = require(\"../snap/indexes/ValueIndex\");\nvar PathIndex_1 = require(\"../snap/indexes/PathIndex\");\nvar IndexedFilter_1 = require(\"./filter/IndexedFilter\");\nvar LimitedFilter_1 = require(\"./filter/LimitedFilter\");\nvar RangedFilter_1 = require(\"./filter/RangedFilter\");\nvar util_3 = require(\"@firebase/util\");\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n * @constructor\n */\nvar QueryParams = /** @class */ (function () {\n function QueryParams() {\n this.limitSet_ = false;\n this.startSet_ = false;\n this.startNameSet_ = false;\n this.endSet_ = false;\n this.endNameSet_ = false;\n this.limit_ = 0;\n this.viewFrom_ = '';\n this.indexStartValue_ = null;\n this.indexStartName_ = '';\n this.indexEndValue_ = null;\n this.indexEndName_ = '';\n this.index_ = PriorityIndex_1.PRIORITY_INDEX;\n }\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasStart = function () {\n return this.startSet_;\n };\n /**\n * @return {boolean} True if it would return from left.\n */\n QueryParams.prototype.isViewFromLeft = function () {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n }\n else {\n return (this.viewFrom_ === QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT);\n }\n };\n /**\n * Only valid to call if hasStart() returns true\n * @return {*}\n */\n QueryParams.prototype.getIndexStartValue = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n };\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexStartName = function () {\n util_1.assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n }\n else {\n return util_2.MIN_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasEnd = function () {\n return this.endSet_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * @return {*}\n */\n QueryParams.prototype.getIndexEndValue = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n };\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n * @return {!string}\n */\n QueryParams.prototype.getIndexEndName = function () {\n util_1.assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n }\n else {\n return util_2.MAX_NAME;\n }\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.hasLimit = function () {\n return this.limitSet_;\n };\n /**\n * @return {boolean} True if a limit has been set and it has been explicitly anchored\n */\n QueryParams.prototype.hasAnchoredLimit = function () {\n return this.limitSet_ && this.viewFrom_ !== '';\n };\n /**\n * Only valid to call if hasLimit() returns true\n * @return {!number}\n */\n QueryParams.prototype.getLimit = function () {\n util_1.assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n };\n /**\n * @return {!Index}\n */\n QueryParams.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @return {!QueryParams}\n * @private\n */\n QueryParams.prototype.copy_ = function () {\n var copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limit = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = '';\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToFirst = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT;\n return newParams;\n };\n /**\n * @param {!number} newLimit\n * @return {!QueryParams}\n */\n QueryParams.prototype.limitToLast = function (newLimit) {\n var newParams = this.copy_();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_RIGHT;\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.startAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.startSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n }\n else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n };\n /**\n * @param {*} indexValue\n * @param {?string=} key\n * @return {!QueryParams}\n */\n QueryParams.prototype.endAt = function (indexValue, key) {\n var newParams = this.copy_();\n newParams.endSet_ = true;\n if (!(indexValue !== undefined)) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n }\n else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n };\n /**\n * @param {!Index} index\n * @return {!QueryParams}\n */\n QueryParams.prototype.orderBy = function (index) {\n var newParams = this.copy_();\n newParams.index_ = index;\n return newParams;\n };\n /**\n * @return {!Object}\n */\n QueryParams.prototype.getQueryObject = function () {\n var WIRE_PROTOCOL_CONSTANTS = QueryParams.WIRE_PROTOCOL_CONSTANTS_;\n var obj = {};\n if (this.startSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] = this.indexStartValue_;\n if (this.startNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] = this.indexStartName_;\n }\n }\n if (this.endSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = this.indexEndValue_;\n if (this.endNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = this.indexEndName_;\n }\n }\n if (this.limitSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = this.limit_;\n var viewFrom = this.viewFrom_;\n if (viewFrom === '') {\n if (this.isViewFromLeft()) {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n }\n else {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\n }\n }\n obj[WIRE_PROTOCOL_CONSTANTS.VIEW_FROM] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (this.index_ !== PriorityIndex_1.PRIORITY_INDEX) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = this.index_.toString();\n }\n return obj;\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.loadsAllData = function () {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n };\n /**\n * @return {boolean}\n */\n QueryParams.prototype.isDefault = function () {\n return this.loadsAllData() && this.index_ == PriorityIndex_1.PRIORITY_INDEX;\n };\n /**\n * @return {!NodeFilter}\n */\n QueryParams.prototype.getNodeFilter = function () {\n if (this.loadsAllData()) {\n return new IndexedFilter_1.IndexedFilter(this.getIndex());\n }\n else if (this.hasLimit()) {\n return new LimitedFilter_1.LimitedFilter(this);\n }\n else {\n return new RangedFilter_1.RangedFilter(this);\n }\n };\n /**\n * Returns a set of REST query string parameters representing this query.\n *\n * @return {!Object.} query string parameters\n */\n QueryParams.prototype.toRestQueryStringParameters = function () {\n var REST_CONSTANTS = QueryParams.REST_QUERY_CONSTANTS_;\n var qs = {};\n if (this.isDefault()) {\n return qs;\n }\n var orderBy;\n if (this.index_ === PriorityIndex_1.PRIORITY_INDEX) {\n orderBy = REST_CONSTANTS.PRIORITY_INDEX;\n }\n else if (this.index_ === ValueIndex_1.VALUE_INDEX) {\n orderBy = REST_CONSTANTS.VALUE_INDEX;\n }\n else if (this.index_ === KeyIndex_1.KEY_INDEX) {\n orderBy = REST_CONSTANTS.KEY_INDEX;\n }\n else {\n util_1.assert(this.index_ instanceof PathIndex_1.PathIndex, 'Unrecognized index type!');\n orderBy = this.index_.toString();\n }\n qs[REST_CONSTANTS.ORDER_BY] = util_3.stringify(orderBy);\n if (this.startSet_) {\n qs[REST_CONSTANTS.START_AT] = util_3.stringify(this.indexStartValue_);\n if (this.startNameSet_) {\n qs[REST_CONSTANTS.START_AT] += ',' + util_3.stringify(this.indexStartName_);\n }\n }\n if (this.endSet_) {\n qs[REST_CONSTANTS.END_AT] = util_3.stringify(this.indexEndValue_);\n if (this.endNameSet_) {\n qs[REST_CONSTANTS.END_AT] += ',' + util_3.stringify(this.indexEndName_);\n }\n }\n if (this.limitSet_) {\n if (this.isViewFromLeft()) {\n qs[REST_CONSTANTS.LIMIT_TO_FIRST] = this.limit_;\n }\n else {\n qs[REST_CONSTANTS.LIMIT_TO_LAST] = this.limit_;\n }\n }\n return qs;\n };\n /**\n * Wire Protocol Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.WIRE_PROTOCOL_CONSTANTS_ = {\n INDEX_START_VALUE: 'sp',\n INDEX_START_NAME: 'sn',\n INDEX_END_VALUE: 'ep',\n INDEX_END_NAME: 'en',\n LIMIT: 'l',\n VIEW_FROM: 'vf',\n VIEW_FROM_LEFT: 'l',\n VIEW_FROM_RIGHT: 'r',\n INDEX: 'i'\n };\n /**\n * REST Query Constants\n * @const\n * @enum {string}\n * @private\n */\n QueryParams.REST_QUERY_CONSTANTS_ = {\n ORDER_BY: 'orderBy',\n PRIORITY_INDEX: '$priority',\n VALUE_INDEX: '$value',\n KEY_INDEX: '$key',\n START_AT: 'startAt',\n END_AT: 'endAt',\n LIMIT_TO_FIRST: 'limitToFirst',\n LIMIT_TO_LAST: 'limitToLast'\n };\n /**\n * Default, empty query parameters\n * @type {!QueryParams}\n * @const\n */\n QueryParams.DEFAULT = new QueryParams();\n return QueryParams;\n}());\nexports.QueryParams = QueryParams;\n\n//# sourceMappingURL=QueryParams.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/QueryParams.js\n// module id = 107\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RangedFilter_1 = require(\"./RangedFilter\");\nvar ChildrenNode_1 = require(\"../../snap/ChildrenNode\");\nvar Node_1 = require(\"../../snap/Node\");\nvar util_1 = require(\"@firebase/util\");\nvar Change_1 = require(\"../Change\");\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n *\n * @constructor\n * @implements {NodeFilter}\n */\nvar LimitedFilter = /** @class */ (function () {\n /**\n * @param {!QueryParams} params\n */\n function LimitedFilter(params) {\n this.rangedFilter_ = new RangedFilter_1.RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n }\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.rangedFilter_.matches(new Node_1.NamedNode(key, newChild))) {\n newChild = ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n }\n else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n else {\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\n }\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\n var filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n }\n else {\n if (this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode_1.ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n var iterator = void 0;\n if (this.reverse_) {\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\n }\n else {\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\n }\n var count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n var next = iterator.getNext();\n var inRange = void 0;\n if (this.reverse_) {\n inRange =\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\n }\n else {\n inRange =\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\n }\n if (inRange) {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n else {\n // if we have reached the end post, we cannot keep adding elemments\n break;\n }\n }\n }\n else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var startPost = void 0;\n var endPost = void 0;\n var cmp = void 0;\n var iterator = void 0;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n startPost = this.rangedFilter_.getEndPost();\n endPost = this.rangedFilter_.getStartPost();\n var indexCompare_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCompare_1(b, a); };\n }\n else {\n iterator = filtered.getIterator(this.index_);\n startPost = this.rangedFilter_.getStartPost();\n endPost = this.rangedFilter_.getEndPost();\n cmp = this.index_.getCompare();\n }\n var count = 0;\n var foundStartPost = false;\n while (iterator.hasNext()) {\n var next = iterator.getNext();\n if (!foundStartPost && cmp(startPost, next) <= 0) {\n // start adding\n foundStartPost = true;\n }\n var inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\n if (inRange) {\n count++;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.filtersNodes = function () {\n return true;\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndexedFilter = function () {\n return this.rangedFilter_.getIndexedFilter();\n };\n /**\n * @inheritDoc\n */\n LimitedFilter.prototype.getIndex = function () {\n return this.index_;\n };\n /**\n * @param {!Node} snap\n * @param {string} childKey\n * @param {!Node} childSnap\n * @param {!CompleteChildSource} source\n * @param {?ChildChangeAccumulator} changeAccumulator\n * @return {!Node}\n * @private\n */\n LimitedFilter.prototype.fullLimitUpdateChild_ = function (snap, childKey, childSnap, source, changeAccumulator) {\n // TODO: rename all cache stuff etc to general snap terminology\n var cmp;\n if (this.reverse_) {\n var indexCmp_1 = this.index_.getCompare();\n cmp = function (a, b) { return indexCmp_1(b, a); };\n }\n else {\n cmp = this.index_.getCompare();\n }\n var oldEventCache = snap;\n util_1.assert(oldEventCache.numChildren() == this.limit_, '');\n var newChildNamedNode = new Node_1.NamedNode(childKey, childSnap);\n var windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : oldEventCache.getLastChild(this.index_);\n var inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n var oldChildSnap = oldEventCache.getImmediateChild(childKey);\n var nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\n while (nextChild != null &&\n (nextChild.name == childKey || oldEventCache.hasChild(nextChild.name))) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\n }\n var compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n var remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childChangedChange(childKey, childSnap, oldChildSnap));\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n }\n else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(childKey, oldChildSnap));\n }\n var newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n var nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(nextChild.name, nextChild.node));\n }\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\n }\n else {\n return newEventCache;\n }\n }\n }\n else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n }\n else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(Change_1.Change.childRemovedChange(windowBoundary.name, windowBoundary.node));\n changeAccumulator.trackChildChange(Change_1.Change.childAddedChange(childKey, childSnap));\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n }\n else {\n return snap;\n }\n }\n else {\n return snap;\n }\n };\n return LimitedFilter;\n}());\nexports.LimitedFilter = LimitedFilter;\n\n//# sourceMappingURL=LimitedFilter.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/view/filter/LimitedFilter.js\n// module id = 108\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Reference_1 = require(\"../api/Reference\");\nvar DataSnapshot_1 = require(\"../api/DataSnapshot\");\nvar Path_1 = require(\"./util/Path\");\nvar Tree_1 = require(\"./util/Tree\");\nvar PriorityIndex_1 = require(\"./snap/indexes/PriorityIndex\");\nvar util_2 = require(\"./util/util\");\nvar ServerValues_1 = require(\"./util/ServerValues\");\nvar validation_1 = require(\"./util/validation\");\nvar util_3 = require(\"@firebase/util\");\nvar nodeFromJSON_1 = require(\"./snap/nodeFromJSON\");\nvar ChildrenNode_1 = require(\"./snap/ChildrenNode\");\nvar Repo_1 = require(\"./Repo\");\n// TODO: This is pretty messy. Ideally, a lot of this would move into FirebaseData, or a transaction-specific\n// component used by FirebaseData, but it has ties to user callbacks (transaction update and onComplete) as well\n// as the realtime connection (to send transactions to the server). So that all needs to be decoupled first.\n// For now it's part of Repo, but in its own file.\n/**\n * @enum {number}\n */\nvar TransactionStatus;\n(function (TransactionStatus) {\n // We've run the transaction and updated transactionResultData_ with the result, but it isn't currently sent to the\n // server. A transaction will go from RUN -> SENT -> RUN if it comes back from the server as rejected due to\n // mismatched hash.\n TransactionStatus[TransactionStatus[\"RUN\"] = 0] = \"RUN\";\n // We've run the transaction and sent it to the server and it's currently outstanding (hasn't come back as accepted\n // or rejected yet).\n TransactionStatus[TransactionStatus[\"SENT\"] = 1] = \"SENT\";\n // Temporary state used to mark completed transactions (whether successful or aborted). The transaction will be\n // removed when we get a chance to prune completed ones.\n TransactionStatus[TransactionStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\n // Used when an already-sent transaction needs to be aborted (e.g. due to a conflicting set() call that was made).\n // If it comes back as unsuccessful, we'll abort it.\n TransactionStatus[TransactionStatus[\"SENT_NEEDS_ABORT\"] = 3] = \"SENT_NEEDS_ABORT\";\n // Temporary state used to mark transactions that need to be aborted.\n TransactionStatus[TransactionStatus[\"NEEDS_ABORT\"] = 4] = \"NEEDS_ABORT\";\n})(TransactionStatus = exports.TransactionStatus || (exports.TransactionStatus = {}));\n/**\n * If a transaction does not succeed after 25 retries, we abort it. Among other things this ensure that if there's\n * ever a bug causing a mismatch between client / server hashes for some data, we won't retry indefinitely.\n * @type {number}\n * @const\n * @private\n */\nRepo_1.Repo.MAX_TRANSACTION_RETRIES_ = 25;\n/**\n * Setup the transaction data structures\n * @private\n */\nRepo_1.Repo.prototype.transactions_init_ = function () {\n /**\n * Stores queues of outstanding transactions for Firebase locations.\n *\n * @type {!Tree.>}\n * @private\n */\n this.transactionQueueTree_ = new Tree_1.Tree();\n};\n/**\n * Creates a new transaction, adds it to the transactions we're tracking, and sends it to the server if possible.\n *\n * @param {!Path} path Path at which to do transaction.\n * @param {function(*):*} transactionUpdate Update callback.\n * @param {?function(?Error, boolean, ?DataSnapshot)} onComplete Completion callback.\n * @param {boolean} applyLocally Whether or not to make intermediate results visible\n */\nRepo_1.Repo.prototype.startTransaction = function (path, transactionUpdate, onComplete, applyLocally) {\n this.log_('transaction on ' + path);\n // Add a watch to make sure we get server updates.\n var valueCallback = function () { };\n var watchRef = new Reference_1.Reference(this, path);\n watchRef.on('value', valueCallback);\n var unwatcher = function () {\n watchRef.off('value', valueCallback);\n };\n // Initialize transaction.\n var transaction = {\n path: path,\n update: transactionUpdate,\n onComplete: onComplete,\n // One of TransactionStatus enums.\n status: null,\n // Used when combining transactions at different locations to figure out which one goes first.\n order: util_2.LUIDGenerator(),\n // Whether to raise local events for this transaction.\n applyLocally: applyLocally,\n // Count of how many times we've retried the transaction.\n retryCount: 0,\n // Function to call to clean up our .on() listener.\n unwatcher: unwatcher,\n // Stores why a transaction was aborted.\n abortReason: null,\n currentWriteId: null,\n currentInputSnapshot: null,\n currentOutputSnapshotRaw: null,\n currentOutputSnapshotResolved: null\n };\n // Run transaction initially.\n var currentState = this.getLatestState_(path);\n transaction.currentInputSnapshot = currentState;\n var newVal = transaction.update(currentState.val());\n if (newVal === undefined) {\n // Abort transaction.\n transaction.unwatcher();\n transaction.currentOutputSnapshotRaw = null;\n transaction.currentOutputSnapshotResolved = null;\n if (transaction.onComplete) {\n // We just set the input snapshot, so this cast should be safe\n var snapshot = new DataSnapshot_1.DataSnapshot(transaction.currentInputSnapshot, new Reference_1.Reference(this, transaction.path), PriorityIndex_1.PRIORITY_INDEX);\n transaction.onComplete(null, false, snapshot);\n }\n }\n else {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\n // Mark as run and add to our queue.\n transaction.status = TransactionStatus.RUN;\n var queueNode = this.transactionQueueTree_.subTree(path);\n var nodeQueue = queueNode.getValue() || [];\n nodeQueue.push(transaction);\n queueNode.setValue(nodeQueue);\n // Update visibleData and raise events\n // Note: We intentionally raise events after updating all of our transaction state, since the user could\n // start new transactions from the event callbacks.\n var priorityForNode = void 0;\n if (typeof newVal === 'object' &&\n newVal !== null &&\n util_3.contains(newVal, '.priority')) {\n priorityForNode = util_3.safeGet(newVal, '.priority');\n util_1.assert(validation_1.isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\n 'Priority must be a valid string, finite number, server value, or null.');\n }\n else {\n var currentNode = this.serverSyncTree_.calcCompleteEventCache(path) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE;\n priorityForNode = currentNode.getPriority().val();\n }\n priorityForNode /** @type {null|number|string} */ = priorityForNode;\n var serverValues = this.generateServerValues();\n var newNodeUnresolved = nodeFromJSON_1.nodeFromJSON(newVal, priorityForNode);\n var newNode = ServerValues_1.resolveDeferredValueSnapshot(newNodeUnresolved, serverValues);\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\n transaction.currentOutputSnapshotResolved = newNode;\n transaction.currentWriteId = this.getNextWriteId_();\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, transaction.currentWriteId, transaction.applyLocally);\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n this.sendReadyTransactions_();\n }\n};\n/**\n * @param {!Path} path\n * @param {Array.=} excludeSets A specific set to exclude\n * @return {Node}\n * @private\n */\nRepo_1.Repo.prototype.getLatestState_ = function (path, excludeSets) {\n return (this.serverSyncTree_.calcCompleteEventCache(path, excludeSets) ||\n ChildrenNode_1.ChildrenNode.EMPTY_NODE);\n};\n/**\n * Sends any already-run transactions that aren't waiting for outstanding transactions to\n * complete.\n *\n * Externally it's called with no arguments, but it calls itself recursively with a particular\n * transactionQueueTree node to recurse through the tree.\n *\n * @param {Tree.>=} node transactionQueueTree node to start at.\n * @private\n */\nRepo_1.Repo.prototype.sendReadyTransactions_ = function (node) {\n var _this = this;\n if (node === void 0) { node = this.transactionQueueTree_; }\n // Before recursing, make sure any completed transactions are removed.\n if (!node) {\n this.pruneCompletedTransactionsBelowNode_(node);\n }\n if (node.getValue() !== null) {\n var queue = this.buildTransactionQueue_(node);\n util_1.assert(queue.length > 0, 'Sending zero length transaction queue');\n var allRun = queue.every(function (transaction) { return transaction.status === TransactionStatus.RUN; });\n // If they're all run (and not sent), we can send them. Else, we must wait.\n if (allRun) {\n this.sendTransactionQueue_(node.path(), queue);\n }\n }\n else if (node.hasChildren()) {\n node.forEachChild(function (childNode) {\n _this.sendReadyTransactions_(childNode);\n });\n }\n};\n/**\n * Given a list of run transactions, send them to the server and then handle the result (success or failure).\n *\n * @param {!Path} path The location of the queue.\n * @param {!Array.} queue Queue of transactions under the specified location.\n * @private\n */\nRepo_1.Repo.prototype.sendTransactionQueue_ = function (path, queue) {\n var _this = this;\n // Mark transactions as sent and increment retry count!\n var setsToIgnore = queue.map(function (txn) {\n return txn.currentWriteId;\n });\n var latestState = this.getLatestState_(path, setsToIgnore);\n var snapToSend = latestState;\n var latestHash = latestState.hash();\n for (var i = 0; i < queue.length; i++) {\n var txn = queue[i];\n util_1.assert(txn.status === TransactionStatus.RUN, 'tryToSendTransactionQueue_: items in queue should all be run.');\n txn.status = TransactionStatus.SENT;\n txn.retryCount++;\n var relativePath = Path_1.Path.relativePath(path, txn.path);\n // If we've gotten to this point, the output snapshot must be defined.\n snapToSend = snapToSend.updateChild(relativePath /**@type {!Node} */, txn.currentOutputSnapshotRaw);\n }\n var dataToSend = snapToSend.val(true);\n var pathToSend = path;\n // Send the put.\n this.server_.put(pathToSend.toString(), dataToSend, function (status) {\n _this.log_('transaction put response', {\n path: pathToSend.toString(),\n status: status\n });\n var events = [];\n if (status === 'ok') {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.COMPLETED;\n events = events.concat(_this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId));\n if (queue[i].onComplete) {\n // We never unset the output snapshot, and given that this transaction is complete, it should be set\n var node = queue[i].currentOutputSnapshotResolved;\n var ref = new Reference_1.Reference(_this, queue[i].path);\n var snapshot = new DataSnapshot_1.DataSnapshot(node, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, true, snapshot));\n }\n queue[i].unwatcher();\n }\n // Now remove the completed transactions.\n _this.pruneCompletedTransactionsBelowNode_(_this.transactionQueueTree_.subTree(path));\n // There may be pending transactions that we can now send.\n _this.sendReadyTransactions_();\n _this.eventQueue_.raiseEventsForChangedPath(path, events);\n // Finally, trigger onComplete callbacks.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n else {\n // transactions are no longer sent. Update their status appropriately.\n if (status === 'datastale') {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT)\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n else\n queue[i].status = TransactionStatus.RUN;\n }\n }\n else {\n util_2.warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\n for (var i = 0; i < queue.length; i++) {\n queue[i].status = TransactionStatus.NEEDS_ABORT;\n queue[i].abortReason = status;\n }\n }\n _this.rerunTransactions_(path);\n }\n }, latestHash);\n};\n/**\n * Finds all transactions dependent on the data at changedPath and reruns them.\n *\n * Should be called any time cached data changes.\n *\n * Return the highest path that was affected by rerunning transactions. This is the path at which events need to\n * be raised for.\n *\n * @param {!Path} changedPath The path in mergedData that changed.\n * @return {!Path} The rootmost path that was affected by rerunning transactions.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactions_ = function (changedPath) {\n var rootMostTransactionNode = this.getAncestorTransactionNode_(changedPath);\n var path = rootMostTransactionNode.path();\n var queue = this.buildTransactionQueue_(rootMostTransactionNode);\n this.rerunTransactionQueue_(queue, path);\n return path;\n};\n/**\n * Does all the work of rerunning transactions (as well as cleans up aborted transactions and whatnot).\n *\n * @param {Array.} queue The queue of transactions to run.\n * @param {!Path} path The path the queue is for.\n * @private\n */\nRepo_1.Repo.prototype.rerunTransactionQueue_ = function (queue, path) {\n if (queue.length === 0) {\n return; // Nothing to do!\n }\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n var events = [];\n // Ignore all of the sets we're going to re-run.\n var txnsToRerun = queue.filter(function (q) {\n return q.status === TransactionStatus.RUN;\n });\n var setsToIgnore = txnsToRerun.map(function (q) {\n return q.currentWriteId;\n });\n for (var i = 0; i < queue.length; i++) {\n var transaction = queue[i];\n var relativePath = Path_1.Path.relativePath(path, transaction.path);\n var abortTransaction = false, abortReason = void 0;\n util_1.assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\n if (transaction.status === TransactionStatus.NEEDS_ABORT) {\n abortTransaction = true;\n abortReason = transaction.abortReason;\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else if (transaction.status === TransactionStatus.RUN) {\n if (transaction.retryCount >= Repo_1.Repo.MAX_TRANSACTION_RETRIES_) {\n abortTransaction = true;\n abortReason = 'maxretry';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n else {\n // This code reruns a transaction\n var currentNode = this.getLatestState_(transaction.path, setsToIgnore);\n transaction.currentInputSnapshot = currentNode;\n var newData = queue[i].update(currentNode.val());\n if (newData !== undefined) {\n validation_1.validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\n var newDataNode = nodeFromJSON_1.nodeFromJSON(newData);\n var hasExplicitPriority = typeof newData === 'object' &&\n newData != null &&\n util_3.contains(newData, '.priority');\n if (!hasExplicitPriority) {\n // Keep the old priority if there wasn't a priority explicitly specified.\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\n }\n var oldWriteId = transaction.currentWriteId;\n var serverValues = this.generateServerValues();\n var newNodeResolved = ServerValues_1.resolveDeferredValueSnapshot(newDataNode, serverValues);\n transaction.currentOutputSnapshotRaw = newDataNode;\n transaction.currentOutputSnapshotResolved = newNodeResolved;\n transaction.currentWriteId = this.getNextWriteId_();\n // Mutates setsToIgnore in place\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\n events = events.concat(this.serverSyncTree_.applyUserOverwrite(transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\n events = events.concat(this.serverSyncTree_.ackUserWrite(oldWriteId, true));\n }\n else {\n abortTransaction = true;\n abortReason = 'nodata';\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\n }\n }\n }\n this.eventQueue_.raiseEventsForChangedPath(path, events);\n events = [];\n if (abortTransaction) {\n // Abort.\n queue[i].status = TransactionStatus.COMPLETED;\n // Removing a listener can trigger pruning which can muck with mergedData/visibleData (as it prunes data).\n // So defer the unwatcher until we're done.\n (function (unwatcher) {\n setTimeout(unwatcher, Math.floor(0));\n })(queue[i].unwatcher);\n if (queue[i].onComplete) {\n if (abortReason === 'nodata') {\n var ref = new Reference_1.Reference(this, queue[i].path);\n // We set this field immediately, so it's safe to cast to an actual snapshot\n var lastInput /** @type {!Node} */ = queue[i].currentInputSnapshot;\n var snapshot = new DataSnapshot_1.DataSnapshot(lastInput, ref, PriorityIndex_1.PRIORITY_INDEX);\n callbacks.push(queue[i].onComplete.bind(null, null, false, snapshot));\n }\n else {\n callbacks.push(queue[i].onComplete.bind(null, new Error(abortReason), false, null));\n }\n }\n }\n }\n // Clean up completed transactions.\n this.pruneCompletedTransactionsBelowNode_(this.transactionQueueTree_);\n // Now fire callbacks, now that we're in a good, known state.\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n // Try to send the transaction result to the server.\n this.sendReadyTransactions_();\n};\n/**\n * Returns the rootmost ancestor node of the specified path that has a pending transaction on it, or just returns\n * the node for the given path if there are no pending transactions on any ancestor.\n *\n * @param {!Path} path The location to start at.\n * @return {!Tree.>} The rootmost node with a transaction.\n * @private\n */\nRepo_1.Repo.prototype.getAncestorTransactionNode_ = function (path) {\n var front;\n // Start at the root and walk deeper into the tree towards path until we find a node with pending transactions.\n var transactionNode = this.transactionQueueTree_;\n while ((front = path.getFront()) !== null &&\n transactionNode.getValue() === null) {\n transactionNode = transactionNode.subTree(front);\n path = path.popFront();\n }\n return transactionNode;\n};\n/**\n * Builds the queue of all transactions at or below the specified transactionNode.\n *\n * @param {!Tree.>} transactionNode\n * @return {Array.} The generated queue.\n * @private\n */\nRepo_1.Repo.prototype.buildTransactionQueue_ = function (transactionNode) {\n // Walk any child transaction queues and aggregate them into a single queue.\n var transactionQueue = [];\n this.aggregateTransactionQueuesForNode_(transactionNode, transactionQueue);\n // Sort them by the order the transactions were created.\n transactionQueue.sort(function (a, b) {\n return a.order - b.order;\n });\n return transactionQueue;\n};\n/**\n * @param {!Tree.>} node\n * @param {Array.} queue\n * @private\n */\nRepo_1.Repo.prototype.aggregateTransactionQueuesForNode_ = function (node, queue) {\n var _this = this;\n var nodeQueue = node.getValue();\n if (nodeQueue !== null) {\n for (var i = 0; i < nodeQueue.length; i++) {\n queue.push(nodeQueue[i]);\n }\n }\n node.forEachChild(function (child) {\n _this.aggregateTransactionQueuesForNode_(child, queue);\n });\n};\n/**\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\n *\n * @param {!Tree.>} node\n * @private\n */\nRepo_1.Repo.prototype.pruneCompletedTransactionsBelowNode_ = function (node) {\n var _this = this;\n var queue = node.getValue();\n if (queue) {\n var to = 0;\n for (var from = 0; from < queue.length; from++) {\n if (queue[from].status !== TransactionStatus.COMPLETED) {\n queue[to] = queue[from];\n to++;\n }\n }\n queue.length = to;\n node.setValue(queue.length > 0 ? queue : null);\n }\n node.forEachChild(function (childNode) {\n _this.pruneCompletedTransactionsBelowNode_(childNode);\n });\n};\n/**\n * Aborts all transactions on ancestors or descendants of the specified path. Called when doing a set() or update()\n * since we consider them incompatible with transactions.\n *\n * @param {!Path} path Path for which we want to abort related transactions.\n * @return {!Path}\n * @private\n */\nRepo_1.Repo.prototype.abortTransactions_ = function (path) {\n var _this = this;\n var affectedPath = this.getAncestorTransactionNode_(path).path();\n var transactionNode = this.transactionQueueTree_.subTree(path);\n transactionNode.forEachAncestor(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n this.abortTransactionsOnNode_(transactionNode);\n transactionNode.forEachDescendant(function (node) {\n _this.abortTransactionsOnNode_(node);\n });\n return affectedPath;\n};\n/**\n * Abort transactions stored in this transaction queue node.\n *\n * @param {!Tree.>} node Node to abort transactions for.\n * @private\n */\nRepo_1.Repo.prototype.abortTransactionsOnNode_ = function (node) {\n var queue = node.getValue();\n if (queue !== null) {\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\n // the callback could trigger more transactions or sets.\n var callbacks = [];\n // Go through queue. Any already-sent transactions must be marked for abort, while the unsent ones\n // can be immediately aborted and removed.\n var events = [];\n var lastSent = -1;\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].status === TransactionStatus.SENT_NEEDS_ABORT) {\n // Already marked. No action needed.\n }\n else if (queue[i].status === TransactionStatus.SENT) {\n util_1.assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\n lastSent = i;\n // Mark transaction for abort when it comes back.\n queue[i].status = TransactionStatus.SENT_NEEDS_ABORT;\n queue[i].abortReason = 'set';\n }\n else {\n util_1.assert(queue[i].status === TransactionStatus.RUN, 'Unexpected transaction status in abort');\n // We can abort it immediately.\n queue[i].unwatcher();\n events = events.concat(this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId, true));\n if (queue[i].onComplete) {\n var snapshot = null;\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, snapshot));\n }\n }\n }\n if (lastSent === -1) {\n // We're not waiting for any sent transactions. We can clear the queue.\n node.setValue(null);\n }\n else {\n // Remove the transactions we aborted.\n queue.length = lastSent + 1;\n }\n // Now fire the callbacks.\n this.eventQueue_.raiseEventsForChangedPath(node.path(), events);\n for (var i = 0; i < callbacks.length; i++) {\n util_2.exceptionGuard(callbacks[i]);\n }\n }\n};\n\n//# sourceMappingURL=Repo_transaction.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/Repo_transaction.js\n// module id = 109\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"@firebase/util\");\nvar Path_1 = require(\"./Path\");\nvar util_2 = require(\"@firebase/util\");\n/**\n * Node in a Tree.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode() {\n // TODO: Consider making accessors that create children and value lazily or\n // separate Internal / Leaf 'types'.\n this.children = {};\n this.childCount = 0;\n this.value = null;\n }\n return TreeNode;\n}());\nexports.TreeNode = TreeNode;\n/**\n * A light-weight tree, traversable by path. Nodes can have both values and children.\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\n * children.\n */\nvar Tree = /** @class */ (function () {\n /**\n * @template T\n * @param {string=} name_ Optional name of the node.\n * @param {Tree=} parent_ Optional parent node.\n * @param {TreeNode=} node_ Optional node to wrap.\n */\n function Tree(name_, parent_, node_) {\n if (name_ === void 0) { name_ = ''; }\n if (parent_ === void 0) { parent_ = null; }\n if (node_ === void 0) { node_ = new TreeNode(); }\n this.name_ = name_;\n this.parent_ = parent_;\n this.node_ = node_;\n }\n /**\n * Returns a sub-Tree for the given path.\n *\n * @param {!(string|Path)} pathObj Path to look up.\n * @return {!Tree.} Tree for path.\n */\n Tree.prototype.subTree = function (pathObj) {\n // TODO: Require pathObj to be Path?\n var path = pathObj instanceof Path_1.Path ? pathObj : new Path_1.Path(pathObj);\n var child = this, next;\n while ((next = path.getFront()) !== null) {\n var childNode = util_2.safeGet(child.node_.children, next) || new TreeNode();\n child = new Tree(next, child, childNode);\n path = path.popFront();\n }\n return child;\n };\n /**\n * Returns the data associated with this tree node.\n *\n * @return {?T} The data or null if no data exists.\n */\n Tree.prototype.getValue = function () {\n return this.node_.value;\n };\n /**\n * Sets data to this tree node.\n *\n * @param {!T} value Value to set.\n */\n Tree.prototype.setValue = function (value) {\n util_1.assert(typeof value !== 'undefined', 'Cannot set value to undefined');\n this.node_.value = value;\n this.updateParents_();\n };\n /**\n * Clears the contents of the tree node (its value and all children).\n */\n Tree.prototype.clear = function () {\n this.node_.value = null;\n this.node_.children = {};\n this.node_.childCount = 0;\n this.updateParents_();\n };\n /**\n * @return {boolean} Whether the tree has any children.\n */\n Tree.prototype.hasChildren = function () {\n return this.node_.childCount > 0;\n };\n /**\n * @return {boolean} Whether the tree is empty (no value or children).\n */\n Tree.prototype.isEmpty = function () {\n return this.getValue() === null && !this.hasChildren();\n };\n /**\n * Calls action for each child of this tree node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachChild = function (action) {\n var _this = this;\n util_2.forEach(this.node_.children, function (child, childTree) {\n action(new Tree(child, _this, childTree));\n });\n };\n /**\n * Does a depth-first traversal of this node's descendants, calling action for each one.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n * @param {boolean=} includeSelf Whether to call action on this node as well. Defaults to\n * false.\n * @param {boolean=} childrenFirst Whether to call action on children before calling it on\n * parent.\n */\n Tree.prototype.forEachDescendant = function (action, includeSelf, childrenFirst) {\n if (includeSelf && !childrenFirst)\n action(this);\n this.forEachChild(function (child) {\n child.forEachDescendant(action, /*includeSelf=*/ true, childrenFirst);\n });\n if (includeSelf && childrenFirst)\n action(this);\n };\n /**\n * Calls action on each ancestor node.\n *\n * @param {function(!Tree.)} action Action to be called on each parent; return\n * true to abort.\n * @param {boolean=} includeSelf Whether to call action on this node as well.\n * @return {boolean} true if the action callback returned true.\n */\n Tree.prototype.forEachAncestor = function (action, includeSelf) {\n var node = includeSelf ? this : this.parent();\n while (node !== null) {\n if (action(node)) {\n return true;\n }\n node = node.parent();\n }\n return false;\n };\n /**\n * Does a depth-first traversal of this node's descendants. When a descendant with a value\n * is found, action is called on it and traversal does not continue inside the node.\n * Action is *not* called on this node.\n *\n * @param {function(!Tree.)} action Action to be called for each child.\n */\n Tree.prototype.forEachImmediateDescendantWithValue = function (action) {\n this.forEachChild(function (child) {\n if (child.getValue() !== null)\n action(child);\n else\n child.forEachImmediateDescendantWithValue(action);\n });\n };\n /**\n * @return {!Path} The path of this tree node, as a Path.\n */\n Tree.prototype.path = function () {\n return new Path_1.Path(this.parent_ === null\n ? this.name_\n : this.parent_.path() + '/' + this.name_);\n };\n /**\n * @return {string} The name of the tree node.\n */\n Tree.prototype.name = function () {\n return this.name_;\n };\n /**\n * @return {?Tree} The parent tree node, or null if this is the root of the tree.\n */\n Tree.prototype.parent = function () {\n return this.parent_;\n };\n /**\n * Adds or removes this child from its parent based on whether it's empty or not.\n *\n * @private\n */\n Tree.prototype.updateParents_ = function () {\n if (this.parent_ !== null)\n this.parent_.updateChild_(this.name_, this);\n };\n /**\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\n *\n * @param {string} childName The name of the child to update.\n * @param {!Tree.} child The child to update.\n * @private\n */\n Tree.prototype.updateChild_ = function (childName, child) {\n var childEmpty = child.isEmpty();\n var childExists = util_2.contains(this.node_.children, childName);\n if (childEmpty && childExists) {\n delete this.node_.children[childName];\n this.node_.childCount--;\n this.updateParents_();\n }\n else if (!childEmpty && !childExists) {\n this.node_.children[childName] = child.node_;\n this.node_.childCount++;\n this.updateParents_();\n }\n };\n return Tree;\n}());\nexports.Tree = Tree;\n\n//# sourceMappingURL=Tree.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/core/util/Tree.js\n// module id = 110\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WebSocketConnection_1 = require(\"../realtime/WebSocketConnection\");\nvar BrowserPollConnection_1 = require(\"../realtime/BrowserPollConnection\");\n/**\n * INTERNAL methods for internal-use only (tests, etc.).\n *\n * Customers shouldn't use these or else should be aware that they could break at any time.\n *\n * @const\n */\nexports.forceLongPolling = function () {\n WebSocketConnection_1.WebSocketConnection.forceDisallow();\n BrowserPollConnection_1.BrowserPollConnection.forceAllow();\n};\nexports.forceWebSockets = function () {\n BrowserPollConnection_1.BrowserPollConnection.forceDisallow();\n};\n/* Used by App Manager */\nexports.isWebSocketsAvailable = function () {\n return WebSocketConnection_1.WebSocketConnection['isAvailable']();\n};\nexports.setSecurityDebugCallback = function (ref, callback) {\n ref.repo.persistentConnection_.securityDebugCallback_ = callback;\n};\nexports.stats = function (ref, showDelta) {\n ref.repo.stats(showDelta);\n};\nexports.statsIncrementCounter = function (ref, metric) {\n ref.repo.statsIncrementCounter(metric);\n};\nexports.dataUpdateCount = function (ref) {\n return ref.repo.dataUpdateCount;\n};\nexports.interceptServerData = function (ref, callback) {\n return ref.repo.interceptServerData_(callback);\n};\n\n//# sourceMappingURL=internal.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/internal.js\n// module id = 111\n// module chunks = 0","\"use strict\";\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RepoInfo_1 = require(\"../core/RepoInfo\");\nvar PersistentConnection_1 = require(\"../core/PersistentConnection\");\nvar RepoManager_1 = require(\"../core/RepoManager\");\nvar Connection_1 = require(\"../realtime/Connection\");\nexports.DataConnection = PersistentConnection_1.PersistentConnection;\n/**\n * @param {!string} pathString\n * @param {function(*)} onComplete\n */\nPersistentConnection_1.PersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\n this.sendRequest('q', { p: pathString }, onComplete);\n};\n/**\n * @param {*} data\n * @param {function(*)} onEcho\n */\nPersistentConnection_1.PersistentConnection.prototype.echo = function (data, onEcho) {\n this.sendRequest('echo', { d: data }, onEcho);\n};\n// RealTimeConnection properties that we use in tests.\nexports.RealTimeConnection = Connection_1.Connection;\n/**\n * @param {function(): string} newHash\n * @return {function()}\n */\nexports.hijackHash = function (newHash) {\n var oldPut = PersistentConnection_1.PersistentConnection.prototype.put;\n PersistentConnection_1.PersistentConnection.prototype.put = function (pathString, data, opt_onComplete, opt_hash) {\n if (opt_hash !== undefined) {\n opt_hash = newHash();\n }\n oldPut.call(this, pathString, data, opt_onComplete, opt_hash);\n };\n return function () {\n PersistentConnection_1.PersistentConnection.prototype.put = oldPut;\n };\n};\n/**\n * @type {function(new:RepoInfo, !string, boolean, !string, boolean): undefined}\n */\nexports.ConnectionTarget = RepoInfo_1.RepoInfo;\n/**\n * @param {!Query} query\n * @return {!string}\n */\nexports.queryIdentifier = function (query) {\n return query.queryIdentifier();\n};\n/**\n * @param {!Query} firebaseRef\n * @return {!Object}\n */\nexports.listens = function (firebaseRef) {\n return firebaseRef.repo.persistentConnection_.listens_;\n};\n/**\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\n *\n * @param {boolean} forceRestClient\n */\nexports.forceRestClient = function (forceRestClient) {\n RepoManager_1.RepoManager.getInstance().forceRestClient(forceRestClient);\n};\n\n//# sourceMappingURL=test_access.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../database/dist/cjs/src/api/test_access.js\n// module id = 112\n// module chunks = 0","/*!\n * @license Firebase v4.6.2\n * Build: rev-cbb07d3\n * Terms: https://firebase.google.com/terms/\n */\ntry {\n webpackJsonpFirebase([3],{\n\n/***/ 116:\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(117);\n\n\n/***/ }),\n\n/***/ 117:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../util/dist/cjs/index.js\nvar cjs = __webpack_require__(0);\nvar cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/errors.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar CODES = {\n AVAILABLE_IN_WINDOW: 'only-available-in-window',\n AVAILABLE_IN_SW: 'only-available-in-sw',\n SHOULD_BE_INHERITED: 'should-be-overriden',\n BAD_SENDER_ID: 'bad-sender-id',\n INCORRECT_GCM_SENDER_ID: 'incorrect-gcm-sender-id',\n PERMISSION_DEFAULT: 'permission-default',\n PERMISSION_BLOCKED: 'permission-blocked',\n UNSUPPORTED_BROWSER: 'unsupported-browser',\n NOTIFICATIONS_BLOCKED: 'notifications-blocked',\n FAILED_DEFAULT_REGISTRATION: 'failed-serviceworker-registration',\n SW_REGISTRATION_EXPECTED: 'sw-registration-expected',\n GET_SUBSCRIPTION_FAILED: 'get-subscription-failed',\n INVALID_SAVED_TOKEN: 'invalid-saved-token',\n SW_REG_REDUNDANT: 'sw-reg-redundant',\n TOKEN_SUBSCRIBE_FAILED: 'token-subscribe-failed',\n TOKEN_SUBSCRIBE_NO_TOKEN: 'token-subscribe-no-token',\n TOKEN_SUBSCRIBE_NO_PUSH_SET: 'token-subscribe-no-push-set',\n USE_SW_BEFORE_GET_TOKEN: 'use-sw-before-get-token',\n INVALID_DELETE_TOKEN: 'invalid-delete-token',\n DELETE_TOKEN_NOT_FOUND: 'delete-token-not-found',\n DELETE_SCOPE_NOT_FOUND: 'delete-scope-not-found',\n BG_HANDLER_FUNCTION_EXPECTED: 'bg-handler-function-expected',\n NO_WINDOW_CLIENT_TO_MSG: 'no-window-client-to-msg',\n UNABLE_TO_RESUBSCRIBE: 'unable-to-resubscribe',\n NO_FCM_TOKEN_FOR_RESUBSCRIBE: 'no-fcm-token-for-resubscribe',\n FAILED_TO_DELETE_TOKEN: 'failed-to-delete-token',\n NO_SW_IN_REG: 'no-sw-in-reg',\n BAD_SCOPE: 'bad-scope',\n BAD_VAPID_KEY: 'bad-vapid-key',\n BAD_SUBSCRIPTION: 'bad-subscription',\n BAD_TOKEN: 'bad-token',\n BAD_PUSH_SET: 'bad-push-set',\n FAILED_DELETE_VAPID_KEY: 'failed-delete-vapid-key'\n};\nvar ERROR_MAP = (_a = {},\n _a[CODES.AVAILABLE_IN_WINDOW] = 'This method is available in a Window context.',\n _a[CODES.AVAILABLE_IN_SW] = 'This method is available in a service worker ' + 'context.',\n _a[CODES.SHOULD_BE_INHERITED] = 'This method should be overriden by ' + 'extended classes.',\n _a[CODES.BAD_SENDER_ID] = \"Please ensure that 'messagingSenderId' is set \" +\n 'correctly in the options passed into firebase.initializeApp().',\n _a[CODES.PERMISSION_DEFAULT] = 'The required permissions were not granted and ' + 'dismissed instead.',\n _a[CODES.PERMISSION_BLOCKED] = 'The required permissions were not granted and ' + 'blocked instead.',\n _a[CODES.UNSUPPORTED_BROWSER] = \"This browser doesn't support the API's \" +\n 'required to use the firebase SDK.',\n _a[CODES.NOTIFICATIONS_BLOCKED] = 'Notifications have been blocked.',\n _a[CODES.FAILED_DEFAULT_REGISTRATION] = 'We are unable to register the ' +\n 'default service worker. {$browserErrorMessage}',\n _a[CODES.SW_REGISTRATION_EXPECTED] = 'A service worker registration was the ' + 'expected input.',\n _a[CODES.GET_SUBSCRIPTION_FAILED] = 'There was an error when trying to get ' +\n 'any existing Push Subscriptions.',\n _a[CODES.INVALID_SAVED_TOKEN] = 'Unable to access details of the saved token.',\n _a[CODES.SW_REG_REDUNDANT] = 'The service worker being used for push was made ' + 'redundant.',\n _a[CODES.TOKEN_SUBSCRIBE_FAILED] = 'A problem occured while subscribing the ' + 'user to FCM: {$message}',\n _a[CODES.TOKEN_SUBSCRIBE_NO_TOKEN] = 'FCM returned no token when subscribing ' + 'the user to push.',\n _a[CODES.TOKEN_SUBSCRIBE_NO_PUSH_SET] = 'FCM returned an invalid response ' + 'when getting an FCM token.',\n _a[CODES.USE_SW_BEFORE_GET_TOKEN] = 'You must call useServiceWorker() before ' +\n 'calling getToken() to ensure your service worker is used.',\n _a[CODES.INVALID_DELETE_TOKEN] = 'You must pass a valid token into ' +\n 'deleteToken(), i.e. the token from getToken().',\n _a[CODES.DELETE_TOKEN_NOT_FOUND] = 'The deletion attempt for token could not ' +\n 'be performed as the token was not found.',\n _a[CODES.DELETE_SCOPE_NOT_FOUND] = 'The deletion attempt for service worker ' +\n 'scope could not be performed as the scope was not found.',\n _a[CODES.BG_HANDLER_FUNCTION_EXPECTED] = 'The input to ' + 'setBackgroundMessageHandler() must be a function.',\n _a[CODES.NO_WINDOW_CLIENT_TO_MSG] = 'An attempt was made to message a ' + 'non-existant window client.',\n _a[CODES.UNABLE_TO_RESUBSCRIBE] = 'There was an error while re-subscribing ' +\n 'the FCM token for push messaging. Will have to resubscribe the ' +\n 'user on next visit. {$message}',\n _a[CODES.NO_FCM_TOKEN_FOR_RESUBSCRIBE] = 'Could not find an FCM token ' +\n 'and as a result, unable to resubscribe. Will have to resubscribe the ' +\n 'user on next visit.',\n _a[CODES.FAILED_TO_DELETE_TOKEN] = 'Unable to delete the currently saved token.',\n _a[CODES.NO_SW_IN_REG] = 'Even though the service worker registration was ' +\n 'successful, there was a problem accessing the service worker itself.',\n _a[CODES.INCORRECT_GCM_SENDER_ID] = \"Please change your web app manifest's \" +\n \"'gcm_sender_id' value to '103953800507' to use Firebase messaging.\",\n _a[CODES.BAD_SCOPE] = 'The service worker scope must be a string with at ' +\n 'least one character.',\n _a[CODES.BAD_VAPID_KEY] = 'The public VAPID key must be a string with at ' + 'least one character.',\n _a[CODES.BAD_SUBSCRIPTION] = 'The subscription must be a valid ' + 'PushSubscription.',\n _a[CODES.BAD_TOKEN] = 'The FCM Token used for storage / lookup was not ' +\n 'a valid token string.',\n _a[CODES.BAD_PUSH_SET] = 'The FCM push set used for storage / lookup was not ' +\n 'not a valid push set string.',\n _a[CODES.FAILED_DELETE_VAPID_KEY] = 'The VAPID key could not be deleted.',\n _a);\n/* harmony default export */ var errors = ({\n codes: CODES,\n map: ERROR_MAP\n});\nvar _a;\n\n//# sourceMappingURL=errors.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/helpers/array-buffer-to-base64.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction toBase64(arrayBuffer) {\n var uint8Version = new Uint8Array(arrayBuffer);\n return window.btoa(String.fromCharCode.apply(null, uint8Version));\n}\n/* harmony default export */ var array_buffer_to_base64 = (function (arrayBuffer) {\n var base64String = toBase64(arrayBuffer);\n return base64String\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n});;\n\n//# sourceMappingURL=array-buffer-to-base64.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/fcm-details.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar FCM_APPLICATION_SERVER_KEY = [\n 0x04,\n 0x33,\n 0x94,\n 0xf7,\n 0xdf,\n 0xa1,\n 0xeb,\n 0xb1,\n 0xdc,\n 0x03,\n 0xa2,\n 0x5e,\n 0x15,\n 0x71,\n 0xdb,\n 0x48,\n 0xd3,\n 0x2e,\n 0xed,\n 0xed,\n 0xb2,\n 0x34,\n 0xdb,\n 0xb7,\n 0x47,\n 0x3a,\n 0x0c,\n 0x8f,\n 0xc4,\n 0xcc,\n 0xe1,\n 0x6f,\n 0x3c,\n 0x8c,\n 0x84,\n 0xdf,\n 0xab,\n 0xb6,\n 0x66,\n 0x3e,\n 0xf2,\n 0x0c,\n 0xd4,\n 0x8b,\n 0xfe,\n 0xe3,\n 0xf9,\n 0x76,\n 0x2f,\n 0x14,\n 0x1c,\n 0x63,\n 0x08,\n 0x6a,\n 0x6f,\n 0x2d,\n 0xb1,\n 0x1a,\n 0x95,\n 0xb0,\n 0xce,\n 0x37,\n 0xc0,\n 0x9c,\n 0x6e\n];\nvar SUBSCRIPTION_DETAILS = {\n userVisibleOnly: true,\n applicationServerKey: new Uint8Array(FCM_APPLICATION_SERVER_KEY)\n};\n/* harmony default export */ var fcm_details = ({\n ENDPOINT: 'https://fcm.googleapis.com',\n APPLICATION_SERVER_KEY: FCM_APPLICATION_SERVER_KEY,\n SUBSCRIPTION_OPTIONS: SUBSCRIPTION_DETAILS\n});\n\n//# sourceMappingURL=fcm-details.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/token-manager.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\nvar FCM_TOKEN_OBJ_STORE = 'fcm_token_object_Store';\nvar FCM_TOKEN_DETAILS_DB_VERSION = 1;\nvar token_manager_TokenManager = /** @class */ (function () {\n function TokenManager() {\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\n this.openDbPromise_ = null;\n }\n /**\n * Get the indexedDB as a promsie.\n * @private\n * @return {Promise} The IndexedDB database\n */\n TokenManager.prototype.openDatabase_ = function () {\n if (this.openDbPromise_) {\n return this.openDbPromise_;\n }\n this.openDbPromise_ = new Promise(function (resolve, reject) {\n var request = indexedDB.open(TokenManager.DB_NAME, FCM_TOKEN_DETAILS_DB_VERSION);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onupgradeneeded = function (event) {\n var db = event.target.result;\n var objectStore = db.createObjectStore(FCM_TOKEN_OBJ_STORE, {\n keyPath: 'swScope'\n });\n // Make sure the sender ID can be searched\n objectStore.createIndex('fcmSenderId', 'fcmSenderId', {\n unique: false\n });\n objectStore.createIndex('fcmToken', 'fcmToken', {\n unique: true\n });\n };\n });\n return this.openDbPromise_;\n };\n /**\n * Close the currently open database.\n * @return {Promise} Returns the result of the promise chain.\n */\n TokenManager.prototype.closeDatabase = function () {\n var _this = this;\n if (this.openDbPromise_) {\n return this.openDbPromise_.then(function (db) {\n db.close();\n _this.openDbPromise_ = null;\n });\n }\n return Promise.resolve();\n };\n /**\n * Given a token, this method will look up the details in indexedDB.\n * @public\n * @param {string} fcmToken\n * @return {Promise} The details associated with that token.\n */\n TokenManager.prototype.getTokenDetailsFromToken = function (fcmToken) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var index = objectStore.index('fcmToken');\n var request = index.get(fcmToken);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n });\n });\n };\n TokenManager.prototype.getTokenDetailsFromSWScope_ = function (swScope) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function (event) {\n reject(event.target.error);\n };\n scopeRequest.onsuccess = function (event) {\n resolve(event.target.result);\n };\n });\n });\n };\n TokenManager.prototype.getAllTokenDetailsForSenderId_ = function (senderId) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var senderIdTokens = [];\n var cursorRequest = objectStore.openCursor();\n cursorRequest.onerror = function (event) {\n reject(event.target.error);\n };\n cursorRequest.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n if (cursor.value['fcmSenderId'] === senderId) {\n senderIdTokens.push(cursor.value);\n }\n cursor.continue();\n }\n else {\n resolve(senderIdTokens);\n }\n };\n });\n });\n };\n /**\n * Given a PushSubscription and messagingSenderId, get an FCM token.\n * @public\n * @param {string} senderId The 'messagingSenderId' to tie the token to.\n * @param {PushSubscription} subscription The PushSusbcription to \"federate\".\n * @param {string=} pushSet If defined this will swap the subscription for\n * matching FCM token.\n * @return {Promise} Returns the FCM token to be used in place\n * of the PushSubscription.\n */\n TokenManager.prototype.subscribeToFCM = function (senderId, subscription, pushSet) {\n var _this = this;\n var p256dh = array_buffer_to_base64(subscription['getKey']('p256dh'));\n var auth = array_buffer_to_base64(subscription['getKey']('auth'));\n var fcmSubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (pushSet) {\n fcmSubscribeBody += \"&pushSet=\" + pushSet;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var subscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmSubscribeBody\n };\n return fetch(fcm_details.ENDPOINT + '/fcm/connect/subscribe', subscribeOptions)\n .then(function (response) { return response.json(); })\n .then(function (response) {\n var fcmTokenResponse = response;\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_NO_TOKEN);\n }\n if (!fcmTokenResponse['pushSet']) {\n throw _this.errorFactory_.create(errors.codes.TOKEN_SUBSCRIBE_NO_PUSH_SET);\n }\n return {\n token: fcmTokenResponse['token'],\n pushSet: fcmTokenResponse['pushSet']\n };\n });\n };\n /**\n * Checks the that fields in the PushSubscription are equivalent to the\n * details stores in the masterTokenDetails.\n * @private\n * @param {PushSubscription} subscription The push subscription we expect\n * the master token to match.\n * @param {Object} masterTokenDetails The saved details we wish to compare\n * with the PushSubscription\n * @return {boolean} true if the subscription and token details are\n * equivalent.\n */\n TokenManager.prototype.isSameSubscription_ = function (subscription, masterTokenDetails) {\n // getKey() isn't defined in the PushSubscription externs file, hence\n // subscription['getKey']('').\n return (subscription.endpoint === masterTokenDetails['endpoint'] &&\n array_buffer_to_base64(subscription['getKey']('auth')) ===\n masterTokenDetails['auth'] &&\n array_buffer_to_base64(subscription['getKey']('p256dh')) ===\n masterTokenDetails['p256dh']);\n };\n /**\n * Save the details for the fcm token for re-use at a later date.\n * @private\n * @param {string} senderId The 'messagingSenderId' used for this project\n * @param {ServiceWorkerRegistration} swRegistration The service worker\n * used to subscribe the user for web push\n * @param {PushSubscription} subscription The push subscription passed to\n * FCM for the current token.\n * @param {string} fcmToken The FCM token currently used on this\n * device.\n * @param {string} fcmPushSet The FCM push tied to the fcm token.\n * @return {Promise}\n */\n TokenManager.prototype.saveTokenDetails_ = function (senderId, swRegistration, subscription, fcmToken, fcmPushSet) {\n var details = {\n swScope: swRegistration.scope,\n endpoint: subscription.endpoint,\n auth: array_buffer_to_base64(subscription['getKey']('auth')),\n p256dh: array_buffer_to_base64(subscription['getKey']('p256dh')),\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet,\n fcmSenderId: senderId\n };\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], 'readwrite');\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve();\n };\n });\n });\n };\n /**\n * Returns the saved FCM Token if one is available and still valid,\n * otherwise `null` is returned.\n * @param {string} senderId This should be the sender ID associated with the\n * FCM Token being retrieved.\n * @param {ServiceWorkerRegistration} swRegistration Registration to be used\n * to subscribe the user to push.\n * @return {Promise | Promise} Returns the saved FCM Token if\n * avilable and valid.\n * @export\n */\n TokenManager.prototype.getSavedToken = function (senderId, swRegistration) {\n var _this = this;\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n return Promise.reject(this.errorFactory_.create(errors.codes.SW_REGISTRATION_EXPECTED));\n }\n if (typeof senderId !== 'string' || senderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SENDER_ID));\n }\n return this.getAllTokenDetailsForSenderId_(senderId)\n .then(function (allTokenDetails) {\n if (allTokenDetails.length === 0) {\n return;\n }\n var index = allTokenDetails.findIndex(function (tokenDetails) {\n return (swRegistration.scope === tokenDetails['swScope'] &&\n senderId === tokenDetails['fcmSenderId']);\n });\n if (index === -1) {\n return;\n }\n return allTokenDetails[index];\n })\n .then(function (tokenDetails) {\n if (!tokenDetails) {\n return;\n }\n return swRegistration.pushManager\n .getSubscription()\n .catch(function (err) {\n throw _this.errorFactory_.create(errors.codes.GET_SUBSCRIPTION_FAILED);\n })\n .then(function (subscription) {\n if (subscription &&\n _this.isSameSubscription_(subscription, tokenDetails)) {\n return tokenDetails['fcmToken'];\n }\n });\n });\n };\n /**\n * Creates a new FCM token.\n */\n TokenManager.prototype.createToken = function (senderId, swRegistration) {\n var _this = this;\n if (typeof senderId !== 'string' || senderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.BAD_SENDER_ID));\n }\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n return Promise.reject(this.errorFactory_.create(errors.codes.SW_REGISTRATION_EXPECTED));\n }\n // Check for existing subscription first\n var subscription;\n var fcmTokenDetails;\n return swRegistration.pushManager\n .getSubscription()\n .then(function (subscription) {\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe(fcm_details.SUBSCRIPTION_OPTIONS);\n })\n .then(function (sub) {\n subscription = sub;\n return _this.subscribeToFCM(senderId, subscription);\n })\n .then(function (tokenDetails) {\n fcmTokenDetails = tokenDetails;\n return _this.saveTokenDetails_(senderId, swRegistration, subscription, fcmTokenDetails['token'], fcmTokenDetails['pushSet']);\n })\n .then(function () { return fcmTokenDetails['token']; });\n };\n /**\n * This method deletes details of the current FCM token.\n * It's returning a promise in case we need to move to an async\n * method for deleting at a later date.\n * @param {string} token Token to be deleted\n * @return {Promise} Resolves once the FCM token details have been\n * deleted and returns the deleted details.\n */\n TokenManager.prototype.deleteToken = function (token) {\n var _this = this;\n if (typeof token !== 'string' || token.length === 0) {\n return Promise.reject(this.errorFactory_.create(errors.codes.INVALID_DELETE_TOKEN));\n }\n return this.getTokenDetailsFromToken(token).then(function (details) {\n if (!details) {\n throw _this.errorFactory_.create(errors.codes.DELETE_TOKEN_NOT_FOUND);\n }\n return _this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], 'readwrite');\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.delete(details['swScope']);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n if (event.target.result === 0) {\n reject(_this.errorFactory_.create(errors.codes.FAILED_TO_DELETE_TOKEN));\n return;\n }\n resolve(details);\n };\n });\n });\n });\n };\n return TokenManager;\n}());\n/* harmony default export */ var token_manager = (token_manager_TokenManager);\n\n//# sourceMappingURL=token-manager.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/notification-permission.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* harmony default export */ var notification_permission = ({\n granted: 'granted',\n default: 'default',\n denied: 'denied'\n});\n\n//# sourceMappingURL=notification-permission.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/controller-interface.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\nvar SENDER_ID_OPTION_NAME = 'messagingSenderId';\nvar controller_interface_ControllerInterface = /** @class */ (function () {\n /**\n * An interface of the Messaging Service API\n * @param {!firebase.app.App} app\n */\n function ControllerInterface(app) {\n var _this = this;\n this.errorFactory_ = new cjs[\"ErrorFactory\"]('messaging', 'Messaging', errors.map);\n if (!app.options[SENDER_ID_OPTION_NAME] ||\n typeof app.options[SENDER_ID_OPTION_NAME] !== 'string') {\n throw this.errorFactory_.create(errors.codes.BAD_SENDER_ID);\n }\n this.messagingSenderId_ = app.options[SENDER_ID_OPTION_NAME];\n this.tokenManager_ = new token_manager();\n this.app = app;\n this.INTERNAL = {};\n this.INTERNAL.delete = function () { return _this.delete; };\n }\n /**\n * @export\n * @return {Promise | Promise} Returns a promise that\n * resolves to an FCM token.\n */\n ControllerInterface.prototype.getToken = function () {\n var _this = this;\n // Check with permissions\n var currentPermission = this.getNotificationPermission_();\n if (currentPermission !== notification_permission.granted) {\n if (currentPermission === notification_permission.denied) {\n return Promise.reject(this.errorFactory_.create(errors.codes.NOTIFICATIONS_BLOCKED));\n }\n // We must wait for permission to be granted\n return Promise.resolve(null);\n }\n return this.getSWRegistration_().then(function (registration) {\n return _this.tokenManager_\n .getSavedToken(_this.messagingSenderId_, registration)\n .then(function (token) {\n if (token) {\n return token;\n }\n return _this.tokenManager_.createToken(_this.messagingSenderId_, registration);\n });\n });\n };\n /**\n * This method deletes tokens that the token manager looks after and then\n * unregisters the push subscription if it exists.\n * @export\n * @param {string} token\n * @return {Promise}\n */\n ControllerInterface.prototype.deleteToken = function (token) {\n var _this = this;\n return this.tokenManager_.deleteToken(token).then(function () {\n return _this.getSWRegistration_()\n .then(function (registration) {\n if (registration) {\n return registration.pushManager.getSubscription();\n }\n })\n .then(function (subscription) {\n if (subscription) {\n return subscription.unsubscribe();\n }\n });\n });\n };\n ControllerInterface.prototype.getSWRegistration_ = function () {\n throw this.errorFactory_.create(errors.codes.SHOULD_BE_INHERITED);\n };\n //\n // The following methods should only be available in the window.\n //\n ControllerInterface.prototype.requestPermission = function () {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!ServiceWorkerRegistration} registration\n */\n ControllerInterface.prototype.useServiceWorker = function (registration) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver\n * @param {function(!Error)=} optError\n * @param {function()=} optCompleted\n * @return {!function()}\n */\n ControllerInterface.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n ControllerInterface.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_WINDOW);\n };\n //\n // The following methods are used by the service worker only.\n //\n /**\n * @export\n * @param {function(Object)} callback\n */\n ControllerInterface.prototype.setBackgroundMessageHandler = function (callback) {\n throw this.errorFactory_.create(errors.codes.AVAILABLE_IN_SW);\n };\n //\n // The following methods are used by the service themselves and not exposed\n // publicly or not expected to be used by developers.\n //\n /**\n * This method is required to adhere to the Firebase interface.\n * It closes any currently open indexdb database connections.\n */\n ControllerInterface.prototype.delete = function () {\n return this.tokenManager_.closeDatabase();\n };\n /**\n * Returns the current Notification Permission state.\n * @private\n * @return {string} The currenct permission state.\n */\n ControllerInterface.prototype.getNotificationPermission_ = function () {\n return Notification.permission;\n };\n /**\n * @protected\n * @returns {TokenManager}\n */\n ControllerInterface.prototype.getTokenManager = function () {\n return this.tokenManager_;\n };\n return ControllerInterface;\n}());\n/* harmony default export */ var controller_interface = (controller_interface_ControllerInterface);\n\n//# sourceMappingURL=controller-interface.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/worker-page-message.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// These fields are strings to prevent closure from thinking goog.getMsg\n// should be used to initialise the values\nvar PARAMS = {\n TYPE_OF_MSG: 'firebase-messaging-msg-type',\n DATA: 'firebase-messaging-msg-data'\n};\n// This value isn't using the TYPE_OF_MSG short hand as closure\n// expects the variable to be defined via goog.getMsg\nvar msgType = {\n PUSH_MSG_RECEIVED: 'push-msg-received',\n NOTIFICATION_CLICKED: 'notification-clicked'\n};\nvar createNewMsg = function (msgType, msgData) {\n var message = (_a = {},\n _a[PARAMS.TYPE_OF_MSG] = msgType,\n _a[PARAMS.DATA] = msgData,\n _a);\n return message;\n var _a;\n};\n/* harmony default export */ var worker_page_message = ({\n PARAMS: PARAMS,\n TYPES_OF_MSG: msgType,\n createNewMsg: createNewMsg\n});\n\n//# sourceMappingURL=worker-page-message.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/models/default-sw.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* harmony default export */ var default_sw = ({\n path: '/firebase-messaging-sw.js',\n scope: '/firebase-cloud-messaging-push-scope'\n});\n\n//# sourceMappingURL=default-sw.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/window-controller.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\nvar window_controller_WindowController = /** @class */ (function (_super) {\n __extends(WindowController, _super);\n /**\n * A service that provides a MessagingService instance.\n * @param {!firebase.app.App} app\n */\n function WindowController(app) {\n var _this = _super.call(this, app) || this;\n /**\n * @private\n * @type {ServiceWorkerRegistration}\n */\n _this.registrationToUse_;\n /**\n * @private\n * @type {Promise}\n */\n _this.manifestCheckPromise_;\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.messageObserver_ = null;\n /**\n * @private {!firebase.Subscribe} The subscribe function to the onMessage\n * observer.\n */\n _this.onMessage_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.messageObserver_ = observer;\n });\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = Object(cjs[\"createSubscribe\"])(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\n _this.setupSWMessageListener_();\n return _this;\n }\n /**\n * This method returns an FCM token if it can be generated.\n * The return promise will reject if the browser doesn't support\n * FCM, if permission is denied for notifications or it's not\n * possible to generate a token.\n * @export\n * @return {Promise | Promise} Returns a promise the\n * resolves to an FCM token or null if permission isn't granted.\n */\n WindowController.prototype.getToken = function () {\n var _this = this;\n // Check that the required API's are available\n if (!this.isSupported_()) {\n return Promise.reject(this.errorFactory_.create(errors.codes.UNSUPPORTED_BROWSER));\n }\n return this.manifestCheck_().then(function () {\n return _super.prototype.getToken.call(_this);\n });\n };\n /**\n * The method checks that a manifest is defined and has the correct GCM\n * sender ID.\n * @private\n * @return {Promise} Returns a promise that resolves if the manifest matches\n * our required sender ID\n */\n WindowController.prototype.manifestCheck_ = function () {\n var _this = this;\n if (this.manifestCheckPromise_) {\n return this.manifestCheckPromise_;\n }\n var manifestTag = document.querySelector('link[rel=\"manifest\"]');\n if (!manifestTag) {\n this.manifestCheckPromise_ = Promise.resolve();\n }\n else {\n this.manifestCheckPromise_ = fetch(manifestTag.href)\n .then(function (response) {\n return response.json();\n })\n .catch(function () {\n // If the download or parsing fails allow check.\n // We only want to error if we KNOW that the gcm_sender_id is incorrect.\n return Promise.resolve();\n })\n .then(function (manifestContent) {\n if (!manifestContent) {\n return;\n }\n if (!manifestContent['gcm_sender_id']) {\n return;\n }\n if (manifestContent['gcm_sender_id'] !== '103953800507') {\n throw _this.errorFactory_.create(errors.codes.INCORRECT_GCM_SENDER_ID);\n }\n });\n }\n return this.manifestCheckPromise_;\n };\n /**\n * Request permission if it is not currently granted\n * @export\n * @returns {Promise} Resolves if the permission was granted, otherwise\n * rejects\n */\n WindowController.prototype.requestPermission = function () {\n var _this = this;\n if (Notification.permission === notification_permission.granted) {\n return Promise.resolve();\n }\n return new Promise(function (resolve, reject) {\n var managePermissionResult = function (result) {\n if (result === notification_permission.granted) {\n return resolve();\n }\n else if (result === notification_permission.denied) {\n return reject(_this.errorFactory_.create(errors.codes.PERMISSION_BLOCKED));\n }\n else {\n return reject(_this.errorFactory_.create(errors.codes.PERMISSION_DEFAULT));\n }\n };\n // The Notification.requestPermission API was changed to\n // return a promise so now have to handle both in case\n // browsers stop support callbacks for promised version\n var permissionPromise = Notification.requestPermission(function (result) {\n if (permissionPromise) {\n // Let the promise manage this\n return;\n }\n managePermissionResult(result);\n });\n if (permissionPromise) {\n // Prefer the promise version as it's the future API.\n permissionPromise.then(managePermissionResult);\n }\n });\n };\n /**\n * This method allows a developer to override the default service worker and\n * instead use a custom service worker.\n * @export\n * @param {!ServiceWorkerRegistration} registration The service worker\n * registration that should be used to receive the push messages.\n */\n WindowController.prototype.useServiceWorker = function (registration) {\n if (!(registration instanceof ServiceWorkerRegistration)) {\n throw this.errorFactory_.create(errors.codes.SW_REGISTRATION_EXPECTED);\n }\n if (typeof this.registrationToUse_ !== 'undefined') {\n throw this.errorFactory_.create(errors.codes.USE_SW_BEFORE_GET_TOKEN);\n }\n this.registrationToUse_ = registration;\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver An observer object\n * or a function triggered on message.\n * @param {function(!Error)=} optError Optional A function triggered on\n * message error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n return this.onMessage_(nextOrObserver, optError, optCompleted);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n return this.onTokenRefresh_(nextOrObserver, optError, optCompleted);\n };\n /**\n * Given a registration, wait for the service worker it relates to\n * become activer\n * @private\n * @param {ServiceWorkerRegistration} registration Registration to wait\n * for service worker to become active\n * @return {Promise} Wait for service worker\n * registration to become active\n */\n WindowController.prototype.waitForRegistrationToActivate_ = function (registration) {\n var _this = this;\n var serviceWorker = registration.installing || registration.waiting || registration.active;\n return new Promise(function (resolve, reject) {\n if (!serviceWorker) {\n // This is a rare scenario but has occured in firefox\n reject(_this.errorFactory_.create(errors.codes.NO_SW_IN_REG));\n return;\n }\n // Because the Promise function is called on next tick there is a\n // small chance that the worker became active or redundant already.\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n return;\n }\n if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(errors.codes.SW_REG_REDUNDANT));\n return;\n }\n var stateChangeListener = function () {\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n }\n else if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(errors.codes.SW_REG_REDUNDANT));\n }\n else {\n // Return early and wait to next state change\n return;\n }\n serviceWorker.removeEventListener('statechange', stateChangeListener);\n };\n serviceWorker.addEventListener('statechange', stateChangeListener);\n });\n };\n /**\n * This will regiater the default service worker and return the registration\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n WindowController.prototype.getSWRegistration_ = function () {\n var _this = this;\n if (this.registrationToUse_) {\n return this.waitForRegistrationToActivate_(this.registrationToUse_);\n }\n // Make the registration null so we know useServiceWorker will not\n // use a new service worker as registrationToUse_ is no longer undefined\n this.registrationToUse_ = null;\n return navigator.serviceWorker\n .register(default_sw.path, {\n scope: default_sw.scope\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(errors.codes.FAILED_DEFAULT_REGISTRATION, {\n browserErrorMessage: err.message\n });\n })\n .then(function (registration) {\n return _this.waitForRegistrationToActivate_(registration).then(function () {\n _this.registrationToUse_ = registration;\n // We update after activation due to an issue with Firefox v49 where\n // a race condition occassionally causes the service work to not\n // install\n registration.update();\n return registration;\n });\n });\n };\n /**\n * This method will set up a message listener to handle\n * events from the service worker that should trigger\n * events in the page.\n *\n * @private\n */\n WindowController.prototype.setupSWMessageListener_ = function () {\n var _this = this;\n if (!('serviceWorker' in navigator)) {\n return;\n }\n navigator.serviceWorker.addEventListener('message', function (event) {\n if (!event.data || !event.data[worker_page_message.PARAMS.TYPE_OF_MSG]) {\n // Not a message from FCM\n return;\n }\n var workerPageMessage = event.data;\n switch (workerPageMessage[worker_page_message.PARAMS.TYPE_OF_MSG]) {\n case worker_page_message.TYPES_OF_MSG.PUSH_MSG_RECEIVED:\n case worker_page_message.TYPES_OF_MSG.NOTIFICATION_CLICKED:\n var pushMessage = workerPageMessage[worker_page_message.PARAMS.DATA];\n _this.messageObserver_.next(pushMessage);\n break;\n default:\n // Noop.\n break;\n }\n }, false);\n };\n /**\n * Checks to see if the required API's are valid or not.\n * @private\n * @return {boolean} Returns true if the desired APIs are available.\n */\n WindowController.prototype.isSupported_ = function () {\n return ('serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window &&\n 'fetch' in window &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey'));\n };\n return WindowController;\n}(controller_interface));\n/* harmony default export */ var window_controller = (window_controller_WindowController);\n\n//# sourceMappingURL=window-controller.js.map\n\n// CONCATENATED MODULE: ../messaging/dist/esm/src/controllers/sw-controller.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar sw_controller___extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\nvar FCM_MSG = 'FCM_MSG';\nvar sw_controller_SWController = /** @class */ (function (_super) {\n sw_controller___extends(SWController, _super);\n function SWController(app) {\n var _this = _super.call(this, app) || this;\n self.addEventListener('push', function (e) { return _this.onPush_(e); }, false);\n self.addEventListener('pushsubscriptionchange', function (e) { return _this.onSubChange_(e); }, false);\n self.addEventListener('notificationclick', function (e) { return _this.onNotificationClick_(e); }, false);\n /**\n * @private\n * @type {function(Object)|null}\n */\n _this.bgMessageHandler_ = null;\n return _this;\n }\n /**\n * A handler for push events that shows notifications based on the content of\n * the payload.\n *\n * The payload must be a JSON-encoded Object with a `notification` key. The\n * value of the `notification` property will be used as the NotificationOptions\n * object passed to showNotification. Additionally, the `title` property of the\n * notification object will be used as the title.\n *\n * If there is no notification data in the payload then no notification will be\n * shown.\n * @private\n */\n SWController.prototype.onPush_ = function (event) {\n var _this = this;\n var msgPayload;\n try {\n msgPayload = event.data.json();\n }\n catch (err) {\n // Not JSON so not an FCM message\n return;\n }\n var handleMsgPromise = this.hasVisibleClients_().then(function (hasVisibleClients) {\n if (hasVisibleClients) {\n // Do not need to show a notification.\n if (msgPayload.notification || _this.bgMessageHandler_) {\n // Send to page\n return _this.sendMessageToWindowClients_(msgPayload);\n }\n return;\n }\n var notificationDetails = _this.getNotificationData_(msgPayload);\n if (notificationDetails) {\n var notificationTitle = notificationDetails.title || '';\n return self.registration.showNotification(notificationTitle, notificationDetails);\n }\n else if (_this.bgMessageHandler_) {\n return _this.bgMessageHandler_(msgPayload);\n }\n });\n event.waitUntil(handleMsgPromise);\n };\n /**\n * @private\n */\n SWController.prototype.onSubChange_ = function (event) {\n var _this = this;\n var promiseChain = this.getToken().then(function (token) {\n if (!token) {\n // We can't resubscribe if we don't have an FCM token for this scope.\n throw _this.errorFactory_.create(errors.codes.NO_FCM_TOKEN_FOR_RESUBSCRIBE);\n }\n var tokenDetails = null;\n var tokenManager = _this.getTokenManager();\n return tokenManager\n .getTokenDetailsFromToken(token)\n .then(function (details) {\n tokenDetails = details;\n if (!tokenDetails) {\n throw _this.errorFactory_.create(errors.codes.INVALID_SAVED_TOKEN);\n }\n // Attempt to get a new subscription\n return self.registration.pushManager.subscribe(fcm_details.SUBSCRIPTION_OPTIONS);\n })\n .then(function (newSubscription) {\n // Send new subscription to FCM.\n return tokenManager.subscribeToFCM(tokenDetails.fcmSenderId, newSubscription, tokenDetails.fcmPushSet);\n })\n .catch(function (err) {\n // The best thing we can do is log this to the terminal so\n // developers might notice the error.\n return tokenManager.deleteToken(tokenDetails.fcmToken).then(function () {\n throw _this.errorFactory_.create(errors.codes.UNABLE_TO_RESUBSCRIBE, {\n message: err\n });\n });\n });\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n */\n SWController.prototype.onNotificationClick_ = function (event) {\n var _this = this;\n if (!(event.notification &&\n event.notification.data &&\n event.notification.data[FCM_MSG])) {\n // Not an FCM notification, do nothing.\n return;\n }\n // Prevent other listeners from receiving the event\n event.stopImmediatePropagation();\n event.notification.close();\n var msgPayload = event.notification.data[FCM_MSG];\n var clickAction = msgPayload['notification']['click_action'];\n if (!clickAction) {\n // Nothing to do.\n return;\n }\n var promiseChain = this.getWindowClient_(clickAction)\n .then(function (windowClient) {\n if (!windowClient) {\n // Unable to find window client so need to open one.\n return self.clients.openWindow(clickAction);\n }\n return windowClient;\n })\n .then(function (windowClient) {\n if (!windowClient) {\n // Window Client will not be returned if it's for a third party origin.\n return;\n }\n // Delete notification data from payload before sending to the page.\n var notificationData = msgPayload['notification'];\n delete msgPayload['notification'];\n var internalMsg = worker_page_message.createNewMsg(worker_page_message.TYPES_OF_MSG.NOTIFICATION_CLICKED, msgPayload);\n // Attempt to send a message to the client to handle the data\n // Is affected by: https://github.com/slightlyoff/ServiceWorker/issues/728\n return _this.attemptToMessageClient_(windowClient, internalMsg);\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n * @param {Object} msgPayload\n * @return {NotificationOptions|undefined}\n */\n SWController.prototype.getNotificationData_ = function (msgPayload) {\n if (!msgPayload) {\n return;\n }\n if (typeof msgPayload.notification !== 'object') {\n return;\n }\n var notificationInformation = Object.assign({}, msgPayload.notification);\n // Put the message payload under FCM_MSG name so we can identify the\n // notification as being an FCM notification vs a notification from\n // somewhere else (i.e. normal web push or developer generated\n // notification).\n notificationInformation['data'] = (_a = {},\n _a[FCM_MSG] = msgPayload,\n _a);\n return notificationInformation;\n var _a;\n };\n /**\n * Calling setBackgroundMessageHandler will opt in to some specific\n * behaviours.\n * 1.) If a notification doesn't need to be shown due to a window already\n * being visible, then push messages will be sent to the page.\n * 2.) If a notification needs to be shown, and the message contains no\n * notification data this method will be called\n * and the promise it returns will be passed to event.waitUntil.\n * If you do not set this callback then all push messages will let and the\n * developer can handle them in a their own 'push' event callback\n * @export\n * @param {function(Object)} callback The callback to be called when a push\n * message is received and a notification must be shown. The callback will\n * be given the data from the push message.\n */\n SWController.prototype.setBackgroundMessageHandler = function (callback) {\n if (callback && typeof callback !== 'function') {\n throw this.errorFactory_.create(errors.codes.BG_HANDLER_FUNCTION_EXPECTED);\n }\n this.bgMessageHandler_ = callback;\n };\n /**\n * @private\n * @param {string} url The URL to look for when focusing a client.\n * @return {Object} Returns an existing window client or a newly opened\n * WindowClient.\n */\n SWController.prototype.getWindowClient_ = function (url) {\n // Use URL to normalize the URL when comparing to windowClients.\n // This at least handles whether to include trailing slashes or not\n var parsedURL = new URL(url).href;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var suitableClient = null;\n for (var i = 0; i < clientList.length; i++) {\n var parsedClientUrl = new URL(clientList[i].url).href;\n if (parsedClientUrl === parsedURL) {\n suitableClient = clientList[i];\n break;\n }\n }\n if (suitableClient) {\n suitableClient.focus();\n return suitableClient;\n }\n });\n };\n /**\n * This message will attempt to send the message to a window client.\n * @private\n * @param {Object} client The WindowClient to send the message to.\n * @param {Object} message The message to send to the client.\n * @returns {Promise} Returns a promise that resolves after sending the\n * message. This does not guarantee that the message was successfully\n * received.\n */\n SWController.prototype.attemptToMessageClient_ = function (client, message) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!client) {\n return reject(_this.errorFactory_.create(errors.codes.NO_WINDOW_CLIENT_TO_MSG));\n }\n client.postMessage(message);\n resolve();\n });\n };\n /**\n * @private\n * @returns {Promise} If there is currently a visible WindowClient,\n * this method will resolve to true, otherwise false.\n */\n SWController.prototype.hasVisibleClients_ = function () {\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n return clientList.some(function (client) { return client.visibilityState === 'visible'; });\n });\n };\n /**\n * @private\n * @param {Object} msgPayload The data from the push event that should be sent\n * to all available pages.\n * @returns {Promise} Returns a promise that resolves once the message\n * has been sent to all WindowClients.\n */\n SWController.prototype.sendMessageToWindowClients_ = function (msgPayload) {\n var _this = this;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var internalMsg = worker_page_message.createNewMsg(worker_page_message.TYPES_OF_MSG.PUSH_MSG_RECEIVED, msgPayload);\n return Promise.all(clientList.map(function (client) {\n return _this.attemptToMessageClient_(client, internalMsg);\n }));\n });\n };\n /**\n * This will register the default service worker and return the registration.\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n SWController.prototype.getSWRegistration_ = function () {\n return Promise.resolve(self.registration);\n };\n return SWController;\n}(controller_interface));\n/* harmony default export */ var sw_controller = (sw_controller_SWController);\n\n//# sourceMappingURL=sw-controller.js.map\n\n// EXTERNAL MODULE: ../app/dist/esm/index.js + 1 modules\nvar esm = __webpack_require__(6);\n\n// CONCATENATED MODULE: ../messaging/dist/esm/index.js\n/* harmony export (immutable) */ __webpack_exports__[\"registerMessaging\"] = registerMessaging;\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\nfunction registerMessaging(instance) {\n var messagingName = 'messaging';\n var factoryMethod = function (app) {\n if (self && 'ServiceWorkerGlobalScope' in self) {\n return new sw_controller(app);\n }\n // Assume we are in the window context.\n return new window_controller(app);\n };\n var namespaceExports = {\n // no-inline\n Messaging: window_controller\n };\n instance.INTERNAL.registerService(messagingName, factoryMethod, namespaceExports);\n}\nregisterMessaging(esm[\"default\"]);\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ })\n\n},[116]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-messaging.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-messaging.js","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nrequire('@firebase/messaging');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./messaging/index.js\n// module id = 116\n// module chunks = 3","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction toBase64(arrayBuffer) {\n var uint8Version = new Uint8Array(arrayBuffer);\n return window.btoa(String.fromCharCode.apply(null, uint8Version));\n}\nexport default function (arrayBuffer) {\n var base64String = toBase64(arrayBuffer);\n return base64String\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n};\n\n//# sourceMappingURL=array-buffer-to-base64.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/helpers/array-buffer-to-base64.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport WindowController from './src/controllers/window-controller';\nimport SWController from './src/controllers/sw-controller';\nimport firebase from '@firebase/app';\nexport function registerMessaging(instance) {\n var messagingName = 'messaging';\n var factoryMethod = function (app) {\n if (self && 'ServiceWorkerGlobalScope' in self) {\n return new SWController(app);\n }\n // Assume we are in the window context.\n return new WindowController(app);\n };\n var namespaceExports = {\n // no-inline\n Messaging: WindowController\n };\n instance.INTERNAL.registerService(messagingName, factoryMethod, namespaceExports);\n}\nregisterMessaging(firebase);\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/index.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar CODES = {\n AVAILABLE_IN_WINDOW: 'only-available-in-window',\n AVAILABLE_IN_SW: 'only-available-in-sw',\n SHOULD_BE_INHERITED: 'should-be-overriden',\n BAD_SENDER_ID: 'bad-sender-id',\n INCORRECT_GCM_SENDER_ID: 'incorrect-gcm-sender-id',\n PERMISSION_DEFAULT: 'permission-default',\n PERMISSION_BLOCKED: 'permission-blocked',\n UNSUPPORTED_BROWSER: 'unsupported-browser',\n NOTIFICATIONS_BLOCKED: 'notifications-blocked',\n FAILED_DEFAULT_REGISTRATION: 'failed-serviceworker-registration',\n SW_REGISTRATION_EXPECTED: 'sw-registration-expected',\n GET_SUBSCRIPTION_FAILED: 'get-subscription-failed',\n INVALID_SAVED_TOKEN: 'invalid-saved-token',\n SW_REG_REDUNDANT: 'sw-reg-redundant',\n TOKEN_SUBSCRIBE_FAILED: 'token-subscribe-failed',\n TOKEN_SUBSCRIBE_NO_TOKEN: 'token-subscribe-no-token',\n TOKEN_SUBSCRIBE_NO_PUSH_SET: 'token-subscribe-no-push-set',\n USE_SW_BEFORE_GET_TOKEN: 'use-sw-before-get-token',\n INVALID_DELETE_TOKEN: 'invalid-delete-token',\n DELETE_TOKEN_NOT_FOUND: 'delete-token-not-found',\n DELETE_SCOPE_NOT_FOUND: 'delete-scope-not-found',\n BG_HANDLER_FUNCTION_EXPECTED: 'bg-handler-function-expected',\n NO_WINDOW_CLIENT_TO_MSG: 'no-window-client-to-msg',\n UNABLE_TO_RESUBSCRIBE: 'unable-to-resubscribe',\n NO_FCM_TOKEN_FOR_RESUBSCRIBE: 'no-fcm-token-for-resubscribe',\n FAILED_TO_DELETE_TOKEN: 'failed-to-delete-token',\n NO_SW_IN_REG: 'no-sw-in-reg',\n BAD_SCOPE: 'bad-scope',\n BAD_VAPID_KEY: 'bad-vapid-key',\n BAD_SUBSCRIPTION: 'bad-subscription',\n BAD_TOKEN: 'bad-token',\n BAD_PUSH_SET: 'bad-push-set',\n FAILED_DELETE_VAPID_KEY: 'failed-delete-vapid-key'\n};\nvar ERROR_MAP = (_a = {},\n _a[CODES.AVAILABLE_IN_WINDOW] = 'This method is available in a Window context.',\n _a[CODES.AVAILABLE_IN_SW] = 'This method is available in a service worker ' + 'context.',\n _a[CODES.SHOULD_BE_INHERITED] = 'This method should be overriden by ' + 'extended classes.',\n _a[CODES.BAD_SENDER_ID] = \"Please ensure that 'messagingSenderId' is set \" +\n 'correctly in the options passed into firebase.initializeApp().',\n _a[CODES.PERMISSION_DEFAULT] = 'The required permissions were not granted and ' + 'dismissed instead.',\n _a[CODES.PERMISSION_BLOCKED] = 'The required permissions were not granted and ' + 'blocked instead.',\n _a[CODES.UNSUPPORTED_BROWSER] = \"This browser doesn't support the API's \" +\n 'required to use the firebase SDK.',\n _a[CODES.NOTIFICATIONS_BLOCKED] = 'Notifications have been blocked.',\n _a[CODES.FAILED_DEFAULT_REGISTRATION] = 'We are unable to register the ' +\n 'default service worker. {$browserErrorMessage}',\n _a[CODES.SW_REGISTRATION_EXPECTED] = 'A service worker registration was the ' + 'expected input.',\n _a[CODES.GET_SUBSCRIPTION_FAILED] = 'There was an error when trying to get ' +\n 'any existing Push Subscriptions.',\n _a[CODES.INVALID_SAVED_TOKEN] = 'Unable to access details of the saved token.',\n _a[CODES.SW_REG_REDUNDANT] = 'The service worker being used for push was made ' + 'redundant.',\n _a[CODES.TOKEN_SUBSCRIBE_FAILED] = 'A problem occured while subscribing the ' + 'user to FCM: {$message}',\n _a[CODES.TOKEN_SUBSCRIBE_NO_TOKEN] = 'FCM returned no token when subscribing ' + 'the user to push.',\n _a[CODES.TOKEN_SUBSCRIBE_NO_PUSH_SET] = 'FCM returned an invalid response ' + 'when getting an FCM token.',\n _a[CODES.USE_SW_BEFORE_GET_TOKEN] = 'You must call useServiceWorker() before ' +\n 'calling getToken() to ensure your service worker is used.',\n _a[CODES.INVALID_DELETE_TOKEN] = 'You must pass a valid token into ' +\n 'deleteToken(), i.e. the token from getToken().',\n _a[CODES.DELETE_TOKEN_NOT_FOUND] = 'The deletion attempt for token could not ' +\n 'be performed as the token was not found.',\n _a[CODES.DELETE_SCOPE_NOT_FOUND] = 'The deletion attempt for service worker ' +\n 'scope could not be performed as the scope was not found.',\n _a[CODES.BG_HANDLER_FUNCTION_EXPECTED] = 'The input to ' + 'setBackgroundMessageHandler() must be a function.',\n _a[CODES.NO_WINDOW_CLIENT_TO_MSG] = 'An attempt was made to message a ' + 'non-existant window client.',\n _a[CODES.UNABLE_TO_RESUBSCRIBE] = 'There was an error while re-subscribing ' +\n 'the FCM token for push messaging. Will have to resubscribe the ' +\n 'user on next visit. {$message}',\n _a[CODES.NO_FCM_TOKEN_FOR_RESUBSCRIBE] = 'Could not find an FCM token ' +\n 'and as a result, unable to resubscribe. Will have to resubscribe the ' +\n 'user on next visit.',\n _a[CODES.FAILED_TO_DELETE_TOKEN] = 'Unable to delete the currently saved token.',\n _a[CODES.NO_SW_IN_REG] = 'Even though the service worker registration was ' +\n 'successful, there was a problem accessing the service worker itself.',\n _a[CODES.INCORRECT_GCM_SENDER_ID] = \"Please change your web app manifest's \" +\n \"'gcm_sender_id' value to '103953800507' to use Firebase messaging.\",\n _a[CODES.BAD_SCOPE] = 'The service worker scope must be a string with at ' +\n 'least one character.',\n _a[CODES.BAD_VAPID_KEY] = 'The public VAPID key must be a string with at ' + 'least one character.',\n _a[CODES.BAD_SUBSCRIPTION] = 'The subscription must be a valid ' + 'PushSubscription.',\n _a[CODES.BAD_TOKEN] = 'The FCM Token used for storage / lookup was not ' +\n 'a valid token string.',\n _a[CODES.BAD_PUSH_SET] = 'The FCM push set used for storage / lookup was not ' +\n 'not a valid push set string.',\n _a[CODES.FAILED_DELETE_VAPID_KEY] = 'The VAPID key could not be deleted.',\n _a);\nexport default {\n codes: CODES,\n map: ERROR_MAP\n};\nvar _a;\n\n//# sourceMappingURL=errors.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/errors.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar FCM_APPLICATION_SERVER_KEY = [\n 0x04,\n 0x33,\n 0x94,\n 0xf7,\n 0xdf,\n 0xa1,\n 0xeb,\n 0xb1,\n 0xdc,\n 0x03,\n 0xa2,\n 0x5e,\n 0x15,\n 0x71,\n 0xdb,\n 0x48,\n 0xd3,\n 0x2e,\n 0xed,\n 0xed,\n 0xb2,\n 0x34,\n 0xdb,\n 0xb7,\n 0x47,\n 0x3a,\n 0x0c,\n 0x8f,\n 0xc4,\n 0xcc,\n 0xe1,\n 0x6f,\n 0x3c,\n 0x8c,\n 0x84,\n 0xdf,\n 0xab,\n 0xb6,\n 0x66,\n 0x3e,\n 0xf2,\n 0x0c,\n 0xd4,\n 0x8b,\n 0xfe,\n 0xe3,\n 0xf9,\n 0x76,\n 0x2f,\n 0x14,\n 0x1c,\n 0x63,\n 0x08,\n 0x6a,\n 0x6f,\n 0x2d,\n 0xb1,\n 0x1a,\n 0x95,\n 0xb0,\n 0xce,\n 0x37,\n 0xc0,\n 0x9c,\n 0x6e\n];\nvar SUBSCRIPTION_DETAILS = {\n userVisibleOnly: true,\n applicationServerKey: new Uint8Array(FCM_APPLICATION_SERVER_KEY)\n};\nexport default {\n ENDPOINT: 'https://fcm.googleapis.com',\n APPLICATION_SERVER_KEY: FCM_APPLICATION_SERVER_KEY,\n SUBSCRIPTION_OPTIONS: SUBSCRIPTION_DETAILS\n};\n\n//# sourceMappingURL=fcm-details.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/fcm-details.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport { ErrorFactory } from '@firebase/util';\nimport Errors from './errors';\nimport arrayBufferToBase64 from '../helpers/array-buffer-to-base64';\nimport FCMDetails from './fcm-details';\nvar FCM_TOKEN_OBJ_STORE = 'fcm_token_object_Store';\nvar FCM_TOKEN_DETAILS_DB_VERSION = 1;\nvar TokenManager = /** @class */ (function () {\n function TokenManager() {\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\n this.openDbPromise_ = null;\n }\n /**\n * Get the indexedDB as a promsie.\n * @private\n * @return {Promise} The IndexedDB database\n */\n TokenManager.prototype.openDatabase_ = function () {\n if (this.openDbPromise_) {\n return this.openDbPromise_;\n }\n this.openDbPromise_ = new Promise(function (resolve, reject) {\n var request = indexedDB.open(TokenManager.DB_NAME, FCM_TOKEN_DETAILS_DB_VERSION);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onupgradeneeded = function (event) {\n var db = event.target.result;\n var objectStore = db.createObjectStore(FCM_TOKEN_OBJ_STORE, {\n keyPath: 'swScope'\n });\n // Make sure the sender ID can be searched\n objectStore.createIndex('fcmSenderId', 'fcmSenderId', {\n unique: false\n });\n objectStore.createIndex('fcmToken', 'fcmToken', {\n unique: true\n });\n };\n });\n return this.openDbPromise_;\n };\n /**\n * Close the currently open database.\n * @return {Promise} Returns the result of the promise chain.\n */\n TokenManager.prototype.closeDatabase = function () {\n var _this = this;\n if (this.openDbPromise_) {\n return this.openDbPromise_.then(function (db) {\n db.close();\n _this.openDbPromise_ = null;\n });\n }\n return Promise.resolve();\n };\n /**\n * Given a token, this method will look up the details in indexedDB.\n * @public\n * @param {string} fcmToken\n * @return {Promise} The details associated with that token.\n */\n TokenManager.prototype.getTokenDetailsFromToken = function (fcmToken) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var index = objectStore.index('fcmToken');\n var request = index.get(fcmToken);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n });\n });\n };\n TokenManager.prototype.getTokenDetailsFromSWScope_ = function (swScope) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var scopeRequest = objectStore.get(swScope);\n scopeRequest.onerror = function (event) {\n reject(event.target.error);\n };\n scopeRequest.onsuccess = function (event) {\n resolve(event.target.result);\n };\n });\n });\n };\n TokenManager.prototype.getAllTokenDetailsForSenderId_ = function (senderId) {\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE]);\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var senderIdTokens = [];\n var cursorRequest = objectStore.openCursor();\n cursorRequest.onerror = function (event) {\n reject(event.target.error);\n };\n cursorRequest.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n if (cursor.value['fcmSenderId'] === senderId) {\n senderIdTokens.push(cursor.value);\n }\n cursor.continue();\n }\n else {\n resolve(senderIdTokens);\n }\n };\n });\n });\n };\n /**\n * Given a PushSubscription and messagingSenderId, get an FCM token.\n * @public\n * @param {string} senderId The 'messagingSenderId' to tie the token to.\n * @param {PushSubscription} subscription The PushSusbcription to \"federate\".\n * @param {string=} pushSet If defined this will swap the subscription for\n * matching FCM token.\n * @return {Promise} Returns the FCM token to be used in place\n * of the PushSubscription.\n */\n TokenManager.prototype.subscribeToFCM = function (senderId, subscription, pushSet) {\n var _this = this;\n var p256dh = arrayBufferToBase64(subscription['getKey']('p256dh'));\n var auth = arrayBufferToBase64(subscription['getKey']('auth'));\n var fcmSubscribeBody = \"authorized_entity=\" + senderId + \"&\" +\n (\"endpoint=\" + subscription.endpoint + \"&\") +\n (\"encryption_key=\" + p256dh + \"&\") +\n (\"encryption_auth=\" + auth);\n if (pushSet) {\n fcmSubscribeBody += \"&pushSet=\" + pushSet;\n }\n var headers = new Headers();\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\n var subscribeOptions = {\n method: 'POST',\n headers: headers,\n body: fcmSubscribeBody\n };\n return fetch(FCMDetails.ENDPOINT + '/fcm/connect/subscribe', subscribeOptions)\n .then(function (response) { return response.json(); })\n .then(function (response) {\n var fcmTokenResponse = response;\n if (fcmTokenResponse['error']) {\n var message = fcmTokenResponse['error']['message'];\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_FAILED, {\n message: message\n });\n }\n if (!fcmTokenResponse['token']) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_NO_TOKEN);\n }\n if (!fcmTokenResponse['pushSet']) {\n throw _this.errorFactory_.create(Errors.codes.TOKEN_SUBSCRIBE_NO_PUSH_SET);\n }\n return {\n token: fcmTokenResponse['token'],\n pushSet: fcmTokenResponse['pushSet']\n };\n });\n };\n /**\n * Checks the that fields in the PushSubscription are equivalent to the\n * details stores in the masterTokenDetails.\n * @private\n * @param {PushSubscription} subscription The push subscription we expect\n * the master token to match.\n * @param {Object} masterTokenDetails The saved details we wish to compare\n * with the PushSubscription\n * @return {boolean} true if the subscription and token details are\n * equivalent.\n */\n TokenManager.prototype.isSameSubscription_ = function (subscription, masterTokenDetails) {\n // getKey() isn't defined in the PushSubscription externs file, hence\n // subscription['getKey']('').\n return (subscription.endpoint === masterTokenDetails['endpoint'] &&\n arrayBufferToBase64(subscription['getKey']('auth')) ===\n masterTokenDetails['auth'] &&\n arrayBufferToBase64(subscription['getKey']('p256dh')) ===\n masterTokenDetails['p256dh']);\n };\n /**\n * Save the details for the fcm token for re-use at a later date.\n * @private\n * @param {string} senderId The 'messagingSenderId' used for this project\n * @param {ServiceWorkerRegistration} swRegistration The service worker\n * used to subscribe the user for web push\n * @param {PushSubscription} subscription The push subscription passed to\n * FCM for the current token.\n * @param {string} fcmToken The FCM token currently used on this\n * device.\n * @param {string} fcmPushSet The FCM push tied to the fcm token.\n * @return {Promise}\n */\n TokenManager.prototype.saveTokenDetails_ = function (senderId, swRegistration, subscription, fcmToken, fcmPushSet) {\n var details = {\n swScope: swRegistration.scope,\n endpoint: subscription.endpoint,\n auth: arrayBufferToBase64(subscription['getKey']('auth')),\n p256dh: arrayBufferToBase64(subscription['getKey']('p256dh')),\n fcmToken: fcmToken,\n fcmPushSet: fcmPushSet,\n fcmSenderId: senderId\n };\n return this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], 'readwrite');\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.put(details);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n resolve();\n };\n });\n });\n };\n /**\n * Returns the saved FCM Token if one is available and still valid,\n * otherwise `null` is returned.\n * @param {string} senderId This should be the sender ID associated with the\n * FCM Token being retrieved.\n * @param {ServiceWorkerRegistration} swRegistration Registration to be used\n * to subscribe the user to push.\n * @return {Promise | Promise} Returns the saved FCM Token if\n * avilable and valid.\n * @export\n */\n TokenManager.prototype.getSavedToken = function (senderId, swRegistration) {\n var _this = this;\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.SW_REGISTRATION_EXPECTED));\n }\n if (typeof senderId !== 'string' || senderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SENDER_ID));\n }\n return this.getAllTokenDetailsForSenderId_(senderId)\n .then(function (allTokenDetails) {\n if (allTokenDetails.length === 0) {\n return;\n }\n var index = allTokenDetails.findIndex(function (tokenDetails) {\n return (swRegistration.scope === tokenDetails['swScope'] &&\n senderId === tokenDetails['fcmSenderId']);\n });\n if (index === -1) {\n return;\n }\n return allTokenDetails[index];\n })\n .then(function (tokenDetails) {\n if (!tokenDetails) {\n return;\n }\n return swRegistration.pushManager\n .getSubscription()\n .catch(function (err) {\n throw _this.errorFactory_.create(Errors.codes.GET_SUBSCRIPTION_FAILED);\n })\n .then(function (subscription) {\n if (subscription &&\n _this.isSameSubscription_(subscription, tokenDetails)) {\n return tokenDetails['fcmToken'];\n }\n });\n });\n };\n /**\n * Creates a new FCM token.\n */\n TokenManager.prototype.createToken = function (senderId, swRegistration) {\n var _this = this;\n if (typeof senderId !== 'string' || senderId.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.BAD_SENDER_ID));\n }\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.SW_REGISTRATION_EXPECTED));\n }\n // Check for existing subscription first\n var subscription;\n var fcmTokenDetails;\n return swRegistration.pushManager\n .getSubscription()\n .then(function (subscription) {\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe(FCMDetails.SUBSCRIPTION_OPTIONS);\n })\n .then(function (sub) {\n subscription = sub;\n return _this.subscribeToFCM(senderId, subscription);\n })\n .then(function (tokenDetails) {\n fcmTokenDetails = tokenDetails;\n return _this.saveTokenDetails_(senderId, swRegistration, subscription, fcmTokenDetails['token'], fcmTokenDetails['pushSet']);\n })\n .then(function () { return fcmTokenDetails['token']; });\n };\n /**\n * This method deletes details of the current FCM token.\n * It's returning a promise in case we need to move to an async\n * method for deleting at a later date.\n * @param {string} token Token to be deleted\n * @return {Promise} Resolves once the FCM token details have been\n * deleted and returns the deleted details.\n */\n TokenManager.prototype.deleteToken = function (token) {\n var _this = this;\n if (typeof token !== 'string' || token.length === 0) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.INVALID_DELETE_TOKEN));\n }\n return this.getTokenDetailsFromToken(token).then(function (details) {\n if (!details) {\n throw _this.errorFactory_.create(Errors.codes.DELETE_TOKEN_NOT_FOUND);\n }\n return _this.openDatabase_().then(function (db) {\n return new Promise(function (resolve, reject) {\n var transaction = db.transaction([FCM_TOKEN_OBJ_STORE], 'readwrite');\n var objectStore = transaction.objectStore(FCM_TOKEN_OBJ_STORE);\n var request = objectStore.delete(details['swScope']);\n request.onerror = function (event) {\n reject(event.target.error);\n };\n request.onsuccess = function (event) {\n if (event.target.result === 0) {\n reject(_this.errorFactory_.create(Errors.codes.FAILED_TO_DELETE_TOKEN));\n return;\n }\n resolve(details);\n };\n });\n });\n });\n };\n return TokenManager;\n}());\nexport default TokenManager;\n\n//# sourceMappingURL=token-manager.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/token-manager.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nimport { ErrorFactory } from '@firebase/util';\nimport Errors from '../models/errors';\nimport TokenManager from '../models/token-manager';\nimport NOTIFICATION_PERMISSION from '../models/notification-permission';\nvar SENDER_ID_OPTION_NAME = 'messagingSenderId';\nvar ControllerInterface = /** @class */ (function () {\n /**\n * An interface of the Messaging Service API\n * @param {!firebase.app.App} app\n */\n function ControllerInterface(app) {\n var _this = this;\n this.errorFactory_ = new ErrorFactory('messaging', 'Messaging', Errors.map);\n if (!app.options[SENDER_ID_OPTION_NAME] ||\n typeof app.options[SENDER_ID_OPTION_NAME] !== 'string') {\n throw this.errorFactory_.create(Errors.codes.BAD_SENDER_ID);\n }\n this.messagingSenderId_ = app.options[SENDER_ID_OPTION_NAME];\n this.tokenManager_ = new TokenManager();\n this.app = app;\n this.INTERNAL = {};\n this.INTERNAL.delete = function () { return _this.delete; };\n }\n /**\n * @export\n * @return {Promise | Promise} Returns a promise that\n * resolves to an FCM token.\n */\n ControllerInterface.prototype.getToken = function () {\n var _this = this;\n // Check with permissions\n var currentPermission = this.getNotificationPermission_();\n if (currentPermission !== NOTIFICATION_PERMISSION.granted) {\n if (currentPermission === NOTIFICATION_PERMISSION.denied) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.NOTIFICATIONS_BLOCKED));\n }\n // We must wait for permission to be granted\n return Promise.resolve(null);\n }\n return this.getSWRegistration_().then(function (registration) {\n return _this.tokenManager_\n .getSavedToken(_this.messagingSenderId_, registration)\n .then(function (token) {\n if (token) {\n return token;\n }\n return _this.tokenManager_.createToken(_this.messagingSenderId_, registration);\n });\n });\n };\n /**\n * This method deletes tokens that the token manager looks after and then\n * unregisters the push subscription if it exists.\n * @export\n * @param {string} token\n * @return {Promise}\n */\n ControllerInterface.prototype.deleteToken = function (token) {\n var _this = this;\n return this.tokenManager_.deleteToken(token).then(function () {\n return _this.getSWRegistration_()\n .then(function (registration) {\n if (registration) {\n return registration.pushManager.getSubscription();\n }\n })\n .then(function (subscription) {\n if (subscription) {\n return subscription.unsubscribe();\n }\n });\n });\n };\n ControllerInterface.prototype.getSWRegistration_ = function () {\n throw this.errorFactory_.create(Errors.codes.SHOULD_BE_INHERITED);\n };\n //\n // The following methods should only be available in the window.\n //\n ControllerInterface.prototype.requestPermission = function () {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!ServiceWorkerRegistration} registration\n */\n ControllerInterface.prototype.useServiceWorker = function (registration) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver\n * @param {function(!Error)=} optError\n * @param {function()=} optCompleted\n * @return {!function()}\n */\n ControllerInterface.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n ControllerInterface.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_WINDOW);\n };\n //\n // The following methods are used by the service worker only.\n //\n /**\n * @export\n * @param {function(Object)} callback\n */\n ControllerInterface.prototype.setBackgroundMessageHandler = function (callback) {\n throw this.errorFactory_.create(Errors.codes.AVAILABLE_IN_SW);\n };\n //\n // The following methods are used by the service themselves and not exposed\n // publicly or not expected to be used by developers.\n //\n /**\n * This method is required to adhere to the Firebase interface.\n * It closes any currently open indexdb database connections.\n */\n ControllerInterface.prototype.delete = function () {\n return this.tokenManager_.closeDatabase();\n };\n /**\n * Returns the current Notification Permission state.\n * @private\n * @return {string} The currenct permission state.\n */\n ControllerInterface.prototype.getNotificationPermission_ = function () {\n return Notification.permission;\n };\n /**\n * @protected\n * @returns {TokenManager}\n */\n ControllerInterface.prototype.getTokenManager = function () {\n return this.tokenManager_;\n };\n return ControllerInterface;\n}());\nexport default ControllerInterface;\n\n//# sourceMappingURL=controller-interface.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/controller-interface.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\n// These fields are strings to prevent closure from thinking goog.getMsg\n// should be used to initialise the values\nvar PARAMS = {\n TYPE_OF_MSG: 'firebase-messaging-msg-type',\n DATA: 'firebase-messaging-msg-data'\n};\n// This value isn't using the TYPE_OF_MSG short hand as closure\n// expects the variable to be defined via goog.getMsg\nvar msgType = {\n PUSH_MSG_RECEIVED: 'push-msg-received',\n NOTIFICATION_CLICKED: 'notification-clicked'\n};\nvar createNewMsg = function (msgType, msgData) {\n var message = (_a = {},\n _a[PARAMS.TYPE_OF_MSG] = msgType,\n _a[PARAMS.DATA] = msgData,\n _a);\n return message;\n var _a;\n};\nexport default {\n PARAMS: PARAMS,\n TYPES_OF_MSG: msgType,\n createNewMsg: createNewMsg\n};\n\n//# sourceMappingURL=worker-page-message.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/worker-page-message.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nexport default {\n path: '/firebase-messaging-sw.js',\n scope: '/firebase-cloud-messaging-push-scope'\n};\n\n//# sourceMappingURL=default-sw.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/models/default-sw.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport ControllerInterface from './controller-interface';\nimport Errors from '../models/errors';\nimport WorkerPageMessage from '../models/worker-page-message';\nimport DefaultSW from '../models/default-sw';\nimport NOTIFICATION_PERMISSION from '../models/notification-permission';\nimport { createSubscribe } from '@firebase/util';\nvar WindowController = /** @class */ (function (_super) {\n __extends(WindowController, _super);\n /**\n * A service that provides a MessagingService instance.\n * @param {!firebase.app.App} app\n */\n function WindowController(app) {\n var _this = _super.call(this, app) || this;\n /**\n * @private\n * @type {ServiceWorkerRegistration}\n */\n _this.registrationToUse_;\n /**\n * @private\n * @type {Promise}\n */\n _this.manifestCheckPromise_;\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.messageObserver_ = null;\n /**\n * @private {!firebase.Subscribe} The subscribe function to the onMessage\n * observer.\n */\n _this.onMessage_ = createSubscribe(function (observer) {\n _this.messageObserver_ = observer;\n });\n /**\n * @private\n * @type {firebase.Observer}\n */\n _this.tokenRefreshObserver_ = null;\n _this.onTokenRefresh_ = createSubscribe(function (observer) {\n _this.tokenRefreshObserver_ = observer;\n });\n _this.setupSWMessageListener_();\n return _this;\n }\n /**\n * This method returns an FCM token if it can be generated.\n * The return promise will reject if the browser doesn't support\n * FCM, if permission is denied for notifications or it's not\n * possible to generate a token.\n * @export\n * @return {Promise | Promise} Returns a promise the\n * resolves to an FCM token or null if permission isn't granted.\n */\n WindowController.prototype.getToken = function () {\n var _this = this;\n // Check that the required API's are available\n if (!this.isSupported_()) {\n return Promise.reject(this.errorFactory_.create(Errors.codes.UNSUPPORTED_BROWSER));\n }\n return this.manifestCheck_().then(function () {\n return _super.prototype.getToken.call(_this);\n });\n };\n /**\n * The method checks that a manifest is defined and has the correct GCM\n * sender ID.\n * @private\n * @return {Promise} Returns a promise that resolves if the manifest matches\n * our required sender ID\n */\n WindowController.prototype.manifestCheck_ = function () {\n var _this = this;\n if (this.manifestCheckPromise_) {\n return this.manifestCheckPromise_;\n }\n var manifestTag = document.querySelector('link[rel=\"manifest\"]');\n if (!manifestTag) {\n this.manifestCheckPromise_ = Promise.resolve();\n }\n else {\n this.manifestCheckPromise_ = fetch(manifestTag.href)\n .then(function (response) {\n return response.json();\n })\n .catch(function () {\n // If the download or parsing fails allow check.\n // We only want to error if we KNOW that the gcm_sender_id is incorrect.\n return Promise.resolve();\n })\n .then(function (manifestContent) {\n if (!manifestContent) {\n return;\n }\n if (!manifestContent['gcm_sender_id']) {\n return;\n }\n if (manifestContent['gcm_sender_id'] !== '103953800507') {\n throw _this.errorFactory_.create(Errors.codes.INCORRECT_GCM_SENDER_ID);\n }\n });\n }\n return this.manifestCheckPromise_;\n };\n /**\n * Request permission if it is not currently granted\n * @export\n * @returns {Promise} Resolves if the permission was granted, otherwise\n * rejects\n */\n WindowController.prototype.requestPermission = function () {\n var _this = this;\n if (Notification.permission === NOTIFICATION_PERMISSION.granted) {\n return Promise.resolve();\n }\n return new Promise(function (resolve, reject) {\n var managePermissionResult = function (result) {\n if (result === NOTIFICATION_PERMISSION.granted) {\n return resolve();\n }\n else if (result === NOTIFICATION_PERMISSION.denied) {\n return reject(_this.errorFactory_.create(Errors.codes.PERMISSION_BLOCKED));\n }\n else {\n return reject(_this.errorFactory_.create(Errors.codes.PERMISSION_DEFAULT));\n }\n };\n // The Notification.requestPermission API was changed to\n // return a promise so now have to handle both in case\n // browsers stop support callbacks for promised version\n var permissionPromise = Notification.requestPermission(function (result) {\n if (permissionPromise) {\n // Let the promise manage this\n return;\n }\n managePermissionResult(result);\n });\n if (permissionPromise) {\n // Prefer the promise version as it's the future API.\n permissionPromise.then(managePermissionResult);\n }\n });\n };\n /**\n * This method allows a developer to override the default service worker and\n * instead use a custom service worker.\n * @export\n * @param {!ServiceWorkerRegistration} registration The service worker\n * registration that should be used to receive the push messages.\n */\n WindowController.prototype.useServiceWorker = function (registration) {\n if (!(registration instanceof ServiceWorkerRegistration)) {\n throw this.errorFactory_.create(Errors.codes.SW_REGISTRATION_EXPECTED);\n }\n if (typeof this.registrationToUse_ !== 'undefined') {\n throw this.errorFactory_.create(Errors.codes.USE_SW_BEFORE_GET_TOKEN);\n }\n this.registrationToUse_ = registration;\n };\n /**\n * @export\n * @param {!firebase.Observer|function(*)} nextOrObserver An observer object\n * or a function triggered on message.\n * @param {function(!Error)=} optError Optional A function triggered on\n * message error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onMessage = function (nextOrObserver, optError, optCompleted) {\n return this.onMessage_(nextOrObserver, optError, optCompleted);\n };\n /**\n * @export\n * @param {!firebase.Observer|function()} nextOrObserver An observer object\n * or a function triggered on token refresh.\n * @param {function(!Error)=} optError Optional A function\n * triggered on token refresh error.\n * @param {function()=} optCompleted Optional function triggered when the\n * observer is removed.\n * @return {!function()} The unsubscribe function for the observer.\n */\n WindowController.prototype.onTokenRefresh = function (nextOrObserver, optError, optCompleted) {\n return this.onTokenRefresh_(nextOrObserver, optError, optCompleted);\n };\n /**\n * Given a registration, wait for the service worker it relates to\n * become activer\n * @private\n * @param {ServiceWorkerRegistration} registration Registration to wait\n * for service worker to become active\n * @return {Promise} Wait for service worker\n * registration to become active\n */\n WindowController.prototype.waitForRegistrationToActivate_ = function (registration) {\n var _this = this;\n var serviceWorker = registration.installing || registration.waiting || registration.active;\n return new Promise(function (resolve, reject) {\n if (!serviceWorker) {\n // This is a rare scenario but has occured in firefox\n reject(_this.errorFactory_.create(Errors.codes.NO_SW_IN_REG));\n return;\n }\n // Because the Promise function is called on next tick there is a\n // small chance that the worker became active or redundant already.\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n return;\n }\n if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(Errors.codes.SW_REG_REDUNDANT));\n return;\n }\n var stateChangeListener = function () {\n if (serviceWorker.state === 'activated') {\n resolve(registration);\n }\n else if (serviceWorker.state === 'redundant') {\n reject(_this.errorFactory_.create(Errors.codes.SW_REG_REDUNDANT));\n }\n else {\n // Return early and wait to next state change\n return;\n }\n serviceWorker.removeEventListener('statechange', stateChangeListener);\n };\n serviceWorker.addEventListener('statechange', stateChangeListener);\n });\n };\n /**\n * This will regiater the default service worker and return the registration\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n WindowController.prototype.getSWRegistration_ = function () {\n var _this = this;\n if (this.registrationToUse_) {\n return this.waitForRegistrationToActivate_(this.registrationToUse_);\n }\n // Make the registration null so we know useServiceWorker will not\n // use a new service worker as registrationToUse_ is no longer undefined\n this.registrationToUse_ = null;\n return navigator.serviceWorker\n .register(DefaultSW.path, {\n scope: DefaultSW.scope\n })\n .catch(function (err) {\n throw _this.errorFactory_.create(Errors.codes.FAILED_DEFAULT_REGISTRATION, {\n browserErrorMessage: err.message\n });\n })\n .then(function (registration) {\n return _this.waitForRegistrationToActivate_(registration).then(function () {\n _this.registrationToUse_ = registration;\n // We update after activation due to an issue with Firefox v49 where\n // a race condition occassionally causes the service work to not\n // install\n registration.update();\n return registration;\n });\n });\n };\n /**\n * This method will set up a message listener to handle\n * events from the service worker that should trigger\n * events in the page.\n *\n * @private\n */\n WindowController.prototype.setupSWMessageListener_ = function () {\n var _this = this;\n if (!('serviceWorker' in navigator)) {\n return;\n }\n navigator.serviceWorker.addEventListener('message', function (event) {\n if (!event.data || !event.data[WorkerPageMessage.PARAMS.TYPE_OF_MSG]) {\n // Not a message from FCM\n return;\n }\n var workerPageMessage = event.data;\n switch (workerPageMessage[WorkerPageMessage.PARAMS.TYPE_OF_MSG]) {\n case WorkerPageMessage.TYPES_OF_MSG.PUSH_MSG_RECEIVED:\n case WorkerPageMessage.TYPES_OF_MSG.NOTIFICATION_CLICKED:\n var pushMessage = workerPageMessage[WorkerPageMessage.PARAMS.DATA];\n _this.messageObserver_.next(pushMessage);\n break;\n default:\n // Noop.\n break;\n }\n }, false);\n };\n /**\n * Checks to see if the required API's are valid or not.\n * @private\n * @return {boolean} Returns true if the desired APIs are available.\n */\n WindowController.prototype.isSupported_ = function () {\n return ('serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window &&\n 'fetch' in window &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey'));\n };\n return WindowController;\n}(ControllerInterface));\nexport default WindowController;\n\n//# sourceMappingURL=window-controller.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/window-controller.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport ControllerInterface from './controller-interface';\nimport Errors from '../models/errors';\nimport WorkerPageMessage from '../models/worker-page-message';\nimport FCMDetails from '../models/fcm-details';\nvar FCM_MSG = 'FCM_MSG';\nvar SWController = /** @class */ (function (_super) {\n __extends(SWController, _super);\n function SWController(app) {\n var _this = _super.call(this, app) || this;\n self.addEventListener('push', function (e) { return _this.onPush_(e); }, false);\n self.addEventListener('pushsubscriptionchange', function (e) { return _this.onSubChange_(e); }, false);\n self.addEventListener('notificationclick', function (e) { return _this.onNotificationClick_(e); }, false);\n /**\n * @private\n * @type {function(Object)|null}\n */\n _this.bgMessageHandler_ = null;\n return _this;\n }\n /**\n * A handler for push events that shows notifications based on the content of\n * the payload.\n *\n * The payload must be a JSON-encoded Object with a `notification` key. The\n * value of the `notification` property will be used as the NotificationOptions\n * object passed to showNotification. Additionally, the `title` property of the\n * notification object will be used as the title.\n *\n * If there is no notification data in the payload then no notification will be\n * shown.\n * @private\n */\n SWController.prototype.onPush_ = function (event) {\n var _this = this;\n var msgPayload;\n try {\n msgPayload = event.data.json();\n }\n catch (err) {\n // Not JSON so not an FCM message\n return;\n }\n var handleMsgPromise = this.hasVisibleClients_().then(function (hasVisibleClients) {\n if (hasVisibleClients) {\n // Do not need to show a notification.\n if (msgPayload.notification || _this.bgMessageHandler_) {\n // Send to page\n return _this.sendMessageToWindowClients_(msgPayload);\n }\n return;\n }\n var notificationDetails = _this.getNotificationData_(msgPayload);\n if (notificationDetails) {\n var notificationTitle = notificationDetails.title || '';\n return self.registration.showNotification(notificationTitle, notificationDetails);\n }\n else if (_this.bgMessageHandler_) {\n return _this.bgMessageHandler_(msgPayload);\n }\n });\n event.waitUntil(handleMsgPromise);\n };\n /**\n * @private\n */\n SWController.prototype.onSubChange_ = function (event) {\n var _this = this;\n var promiseChain = this.getToken().then(function (token) {\n if (!token) {\n // We can't resubscribe if we don't have an FCM token for this scope.\n throw _this.errorFactory_.create(Errors.codes.NO_FCM_TOKEN_FOR_RESUBSCRIBE);\n }\n var tokenDetails = null;\n var tokenManager = _this.getTokenManager();\n return tokenManager\n .getTokenDetailsFromToken(token)\n .then(function (details) {\n tokenDetails = details;\n if (!tokenDetails) {\n throw _this.errorFactory_.create(Errors.codes.INVALID_SAVED_TOKEN);\n }\n // Attempt to get a new subscription\n return self.registration.pushManager.subscribe(FCMDetails.SUBSCRIPTION_OPTIONS);\n })\n .then(function (newSubscription) {\n // Send new subscription to FCM.\n return tokenManager.subscribeToFCM(tokenDetails.fcmSenderId, newSubscription, tokenDetails.fcmPushSet);\n })\n .catch(function (err) {\n // The best thing we can do is log this to the terminal so\n // developers might notice the error.\n return tokenManager.deleteToken(tokenDetails.fcmToken).then(function () {\n throw _this.errorFactory_.create(Errors.codes.UNABLE_TO_RESUBSCRIBE, {\n message: err\n });\n });\n });\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n */\n SWController.prototype.onNotificationClick_ = function (event) {\n var _this = this;\n if (!(event.notification &&\n event.notification.data &&\n event.notification.data[FCM_MSG])) {\n // Not an FCM notification, do nothing.\n return;\n }\n // Prevent other listeners from receiving the event\n event.stopImmediatePropagation();\n event.notification.close();\n var msgPayload = event.notification.data[FCM_MSG];\n var clickAction = msgPayload['notification']['click_action'];\n if (!clickAction) {\n // Nothing to do.\n return;\n }\n var promiseChain = this.getWindowClient_(clickAction)\n .then(function (windowClient) {\n if (!windowClient) {\n // Unable to find window client so need to open one.\n return self.clients.openWindow(clickAction);\n }\n return windowClient;\n })\n .then(function (windowClient) {\n if (!windowClient) {\n // Window Client will not be returned if it's for a third party origin.\n return;\n }\n // Delete notification data from payload before sending to the page.\n var notificationData = msgPayload['notification'];\n delete msgPayload['notification'];\n var internalMsg = WorkerPageMessage.createNewMsg(WorkerPageMessage.TYPES_OF_MSG.NOTIFICATION_CLICKED, msgPayload);\n // Attempt to send a message to the client to handle the data\n // Is affected by: https://github.com/slightlyoff/ServiceWorker/issues/728\n return _this.attemptToMessageClient_(windowClient, internalMsg);\n });\n event.waitUntil(promiseChain);\n };\n /**\n * @private\n * @param {Object} msgPayload\n * @return {NotificationOptions|undefined}\n */\n SWController.prototype.getNotificationData_ = function (msgPayload) {\n if (!msgPayload) {\n return;\n }\n if (typeof msgPayload.notification !== 'object') {\n return;\n }\n var notificationInformation = Object.assign({}, msgPayload.notification);\n // Put the message payload under FCM_MSG name so we can identify the\n // notification as being an FCM notification vs a notification from\n // somewhere else (i.e. normal web push or developer generated\n // notification).\n notificationInformation['data'] = (_a = {},\n _a[FCM_MSG] = msgPayload,\n _a);\n return notificationInformation;\n var _a;\n };\n /**\n * Calling setBackgroundMessageHandler will opt in to some specific\n * behaviours.\n * 1.) If a notification doesn't need to be shown due to a window already\n * being visible, then push messages will be sent to the page.\n * 2.) If a notification needs to be shown, and the message contains no\n * notification data this method will be called\n * and the promise it returns will be passed to event.waitUntil.\n * If you do not set this callback then all push messages will let and the\n * developer can handle them in a their own 'push' event callback\n * @export\n * @param {function(Object)} callback The callback to be called when a push\n * message is received and a notification must be shown. The callback will\n * be given the data from the push message.\n */\n SWController.prototype.setBackgroundMessageHandler = function (callback) {\n if (callback && typeof callback !== 'function') {\n throw this.errorFactory_.create(Errors.codes.BG_HANDLER_FUNCTION_EXPECTED);\n }\n this.bgMessageHandler_ = callback;\n };\n /**\n * @private\n * @param {string} url The URL to look for when focusing a client.\n * @return {Object} Returns an existing window client or a newly opened\n * WindowClient.\n */\n SWController.prototype.getWindowClient_ = function (url) {\n // Use URL to normalize the URL when comparing to windowClients.\n // This at least handles whether to include trailing slashes or not\n var parsedURL = new URL(url).href;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var suitableClient = null;\n for (var i = 0; i < clientList.length; i++) {\n var parsedClientUrl = new URL(clientList[i].url).href;\n if (parsedClientUrl === parsedURL) {\n suitableClient = clientList[i];\n break;\n }\n }\n if (suitableClient) {\n suitableClient.focus();\n return suitableClient;\n }\n });\n };\n /**\n * This message will attempt to send the message to a window client.\n * @private\n * @param {Object} client The WindowClient to send the message to.\n * @param {Object} message The message to send to the client.\n * @returns {Promise} Returns a promise that resolves after sending the\n * message. This does not guarantee that the message was successfully\n * received.\n */\n SWController.prototype.attemptToMessageClient_ = function (client, message) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!client) {\n return reject(_this.errorFactory_.create(Errors.codes.NO_WINDOW_CLIENT_TO_MSG));\n }\n client.postMessage(message);\n resolve();\n });\n };\n /**\n * @private\n * @returns {Promise} If there is currently a visible WindowClient,\n * this method will resolve to true, otherwise false.\n */\n SWController.prototype.hasVisibleClients_ = function () {\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n return clientList.some(function (client) { return client.visibilityState === 'visible'; });\n });\n };\n /**\n * @private\n * @param {Object} msgPayload The data from the push event that should be sent\n * to all available pages.\n * @returns {Promise} Returns a promise that resolves once the message\n * has been sent to all WindowClients.\n */\n SWController.prototype.sendMessageToWindowClients_ = function (msgPayload) {\n var _this = this;\n return self.clients\n .matchAll({\n type: 'window',\n includeUncontrolled: true\n })\n .then(function (clientList) {\n var internalMsg = WorkerPageMessage.createNewMsg(WorkerPageMessage.TYPES_OF_MSG.PUSH_MSG_RECEIVED, msgPayload);\n return Promise.all(clientList.map(function (client) {\n return _this.attemptToMessageClient_(client, internalMsg);\n }));\n });\n };\n /**\n * This will register the default service worker and return the registration.\n * @private\n * @return {Promise} The service worker\n * registration to be used for the push service.\n */\n SWController.prototype.getSWRegistration_ = function () {\n return Promise.resolve(self.registration);\n };\n return SWController;\n}(ControllerInterface));\nexport default SWController;\n\n//# sourceMappingURL=sw-controller.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../messaging/dist/esm/src/controllers/sw-controller.js\n// module id = null\n// module chunks = ","/*!\n * @license Firebase v4.6.2\n * Build: rev-cbb07d3\n * Terms: https://firebase.google.com/terms/\n */\ntry {\n webpackJsonpFirebase([2],{\n\n/***/ 118:\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n__webpack_require__(119);\n\n\n/***/ }),\n\n/***/ 119:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n// EXTERNAL MODULE: ../app/dist/esm/index.js + 1 modules\nvar esm = __webpack_require__(6);\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/constants.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Constants used in the Firebase Storage library.\n */\n/**\n * Domain and scheme for API calls.\n */\nvar domainBase = 'https://firebasestorage.googleapis.com';\n/**\n * Domain and scheme for object downloads.\n */\nvar downloadBase = 'https://firebasestorage.googleapis.com';\n/**\n * Base URL for non-upload calls to the API.\n */\nvar apiBaseUrl = '/v0';\n/**\n * Base URL for upload calls to the API.\n */\nvar apiUploadBaseUrl = '/v0';\nfunction setDomainBase(domainBase) {\n domainBase = domainBase;\n}\nvar configOption = 'storageBucket';\n/**\n * 1 minute\n */\nvar shortMaxOperationRetryTime = 1 * 60 * 1000;\n/**\n * 2 minutes\n */\nvar defaultMaxOperationRetryTime = 2 * 60 * 1000;\n/**\n * 10 minutes\n */\nvar defaultMaxUploadRetryTime = 10 * 60 * 100;\n/**\n * This is the value of Number.MIN_SAFE_INTEGER, which is not well supported\n * enough for us to use it directly.\n */\nvar minSafeInteger = -9007199254740991;\n\n//# sourceMappingURL=constants.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/error.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar FirebaseStorageError = /** @class */ (function () {\n function FirebaseStorageError(code, message) {\n this.code_ = prependCode(code);\n this.message_ = 'Firebase Storage: ' + message;\n this.serverResponse_ = null;\n this.name_ = 'FirebaseError';\n }\n FirebaseStorageError.prototype.codeProp = function () {\n return this.code;\n };\n FirebaseStorageError.prototype.codeEquals = function (code) {\n return prependCode(code) === this.codeProp();\n };\n FirebaseStorageError.prototype.serverResponseProp = function () {\n return this.serverResponse_;\n };\n FirebaseStorageError.prototype.setServerResponseProp = function (serverResponse) {\n this.serverResponse_ = serverResponse;\n };\n Object.defineProperty(FirebaseStorageError.prototype, \"name\", {\n get: function () {\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"code\", {\n get: function () {\n return this.code_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"message\", {\n get: function () {\n return this.message_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\n get: function () {\n return this.serverResponse_;\n },\n enumerable: true,\n configurable: true\n });\n return FirebaseStorageError;\n}());\n\nvar errors = {};\nvar Code = {\n // Shared between all platforms\n UNKNOWN: 'unknown',\n OBJECT_NOT_FOUND: 'object-not-found',\n BUCKET_NOT_FOUND: 'bucket-not-found',\n PROJECT_NOT_FOUND: 'project-not-found',\n QUOTA_EXCEEDED: 'quota-exceeded',\n UNAUTHENTICATED: 'unauthenticated',\n UNAUTHORIZED: 'unauthorized',\n RETRY_LIMIT_EXCEEDED: 'retry-limit-exceeded',\n INVALID_CHECKSUM: 'invalid-checksum',\n CANCELED: 'canceled',\n // JS specific\n INVALID_EVENT_NAME: 'invalid-event-name',\n INVALID_URL: 'invalid-url',\n INVALID_DEFAULT_BUCKET: 'invalid-default-bucket',\n NO_DEFAULT_BUCKET: 'no-default-bucket',\n CANNOT_SLICE_BLOB: 'cannot-slice-blob',\n SERVER_FILE_WRONG_SIZE: 'server-file-wrong-size',\n NO_DOWNLOAD_URL: 'no-download-url',\n INVALID_ARGUMENT: 'invalid-argument',\n INVALID_ARGUMENT_COUNT: 'invalid-argument-count',\n APP_DELETED: 'app-deleted',\n INVALID_ROOT_OPERATION: 'invalid-root-operation',\n INVALID_FORMAT: 'invalid-format',\n INTERNAL_ERROR: 'internal-error'\n};\nfunction prependCode(code) {\n return 'storage/' + code;\n}\nfunction unknown() {\n var message = 'An unknown error occurred, please check the error payload for ' +\n 'server response.';\n return new FirebaseStorageError(Code.UNKNOWN, message);\n}\nfunction objectNotFound(path) {\n return new FirebaseStorageError(Code.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\n}\nfunction bucketNotFound(bucket) {\n return new FirebaseStorageError(Code.BUCKET_NOT_FOUND, \"Bucket '\" + bucket + \"' does not exist.\");\n}\nfunction projectNotFound(project) {\n return new FirebaseStorageError(Code.PROJECT_NOT_FOUND, \"Project '\" + project + \"' does not exist.\");\n}\nfunction quotaExceeded(bucket) {\n return new FirebaseStorageError(Code.QUOTA_EXCEEDED, \"Quota for bucket '\" +\n bucket +\n \"' exceeded, please view quota on \" +\n 'https://firebase.google.com/pricing/.');\n}\nfunction unauthenticated() {\n var message = 'User is not authenticated, please authenticate using Firebase ' +\n 'Authentication and try again.';\n return new FirebaseStorageError(Code.UNAUTHENTICATED, message);\n}\nfunction unauthorized(path) {\n return new FirebaseStorageError(Code.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\n}\nfunction retryLimitExceeded() {\n return new FirebaseStorageError(Code.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\n}\nfunction invalidChecksum(path, checksum, calculated) {\n return new FirebaseStorageError(Code.INVALID_CHECKSUM, \"Uploaded/downloaded object '\" +\n path +\n \"' has checksum '\" +\n checksum +\n \"' which does not match '\" +\n calculated +\n \"'. Please retry the upload/download.\");\n}\nfunction error_canceled() {\n return new FirebaseStorageError(Code.CANCELED, 'User canceled the upload/download.');\n}\nfunction invalidEventName(name) {\n return new FirebaseStorageError(Code.INVALID_EVENT_NAME, \"Invalid event name '\" + name + \"'.\");\n}\nfunction invalidUrl(url) {\n return new FirebaseStorageError(Code.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\n}\nfunction invalidDefaultBucket(bucket) {\n return new FirebaseStorageError(Code.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\n}\nfunction noDefaultBucket() {\n return new FirebaseStorageError(Code.NO_DEFAULT_BUCKET, 'No default bucket ' +\n \"found. Did you set the '\" +\n configOption +\n \"' property when initializing the app?\");\n}\nfunction cannotSliceBlob() {\n return new FirebaseStorageError(Code.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\n}\nfunction serverFileWrongSize() {\n return new FirebaseStorageError(Code.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\n}\nfunction noDownloadURL() {\n return new FirebaseStorageError(Code.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\n}\nfunction invalidArgument(index, fnName, message) {\n return new FirebaseStorageError(Code.INVALID_ARGUMENT, 'Invalid argument in `' + fnName + '` at index ' + index + ': ' + message);\n}\nfunction invalidArgumentCount(argMin, argMax, fnName, real) {\n var countPart;\n var plural;\n if (argMin === argMax) {\n countPart = argMin;\n plural = argMin === 1 ? 'argument' : 'arguments';\n }\n else {\n countPart = 'between ' + argMin + ' and ' + argMax;\n plural = 'arguments';\n }\n return new FirebaseStorageError(Code.INVALID_ARGUMENT_COUNT, 'Invalid argument count in `' +\n fnName +\n '`: Expected ' +\n countPart +\n ' ' +\n plural +\n ', received ' +\n real +\n '.');\n}\nfunction appDeleted() {\n return new FirebaseStorageError(Code.APP_DELETED, 'The Firebase app was deleted.');\n}\n/**\n * @param name The name of the operation that was invalid.\n */\nfunction invalidRootOperation(name) {\n return new FirebaseStorageError(Code.INVALID_ROOT_OPERATION, \"The operation '\" +\n name +\n \"' cannot be performed on a root reference, create a non-root \" +\n \"reference using child, such as .child('file.png').\");\n}\n/**\n * @param format The format that was not valid.\n * @param message A message describing the format violation.\n */\nfunction invalidFormat(format, message) {\n return new FirebaseStorageError(Code.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\n}\n/**\n * @param message A message describing the internal error.\n */\nfunction internalError(message) {\n throw new FirebaseStorageError(Code.INTERNAL_ERROR, 'Internal error: ' + message);\n}\n\n//# sourceMappingURL=error.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/string.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar StringFormat = {\n RAW: 'raw',\n BASE64: 'base64',\n BASE64URL: 'base64url',\n DATA_URL: 'data_url'\n};\nfunction formatValidator(stringFormat) {\n switch (stringFormat) {\n case StringFormat.RAW:\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n case StringFormat.DATA_URL:\n return;\n default:\n throw 'Expected one of the event types: [' +\n StringFormat.RAW +\n ', ' +\n StringFormat.BASE64 +\n ', ' +\n StringFormat.BASE64URL +\n ', ' +\n StringFormat.DATA_URL +\n '].';\n }\n}\n/**\n * @struct\n */\nvar StringData = /** @class */ (function () {\n function StringData(data, opt_contentType) {\n this.data = data;\n this.contentType = opt_contentType || null;\n }\n return StringData;\n}());\n\nfunction dataFromString(format, string) {\n switch (format) {\n case StringFormat.RAW:\n return new StringData(utf8Bytes_(string));\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n return new StringData(base64Bytes_(format, string));\n case StringFormat.DATA_URL:\n return new StringData(dataURLBytes_(string), dataURLContentType_(string));\n }\n // assert(false);\n throw unknown();\n}\nfunction utf8Bytes_(string) {\n var b = [];\n for (var i = 0; i < string.length; i++) {\n var c = string.charCodeAt(i);\n if (c <= 127) {\n b.push(c);\n }\n else {\n if (c <= 2047) {\n b.push(192 | (c >> 6), 128 | (c & 63));\n }\n else {\n if ((c & 64512) == 55296) {\n // The start of a surrogate pair.\n var valid = i < string.length - 1 &&\n (string.charCodeAt(i + 1) & 64512) == 56320;\n if (!valid) {\n // The second surrogate wasn't there.\n b.push(239, 191, 189);\n }\n else {\n var hi = c;\n var lo = string.charCodeAt(++i);\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n else {\n if ((c & 64512) == 56320) {\n // Invalid low surrogate.\n b.push(239, 191, 189);\n }\n else {\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n }\n }\n }\n return new Uint8Array(b);\n}\nfunction percentEncodedBytes_(string) {\n var decoded;\n try {\n decoded = decodeURIComponent(string);\n }\n catch (e) {\n throw invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\n }\n return utf8Bytes_(decoded);\n}\nfunction base64Bytes_(format, string) {\n switch (format) {\n case StringFormat.BASE64: {\n var hasMinus = string.indexOf('-') !== -1;\n var hasUnder = string.indexOf('_') !== -1;\n if (hasMinus || hasUnder) {\n var invalidChar = hasMinus ? '-' : '_';\n throw invalidFormat(format, \"Invalid character '\" +\n invalidChar +\n \"' found: is it base64url encoded?\");\n }\n break;\n }\n case StringFormat.BASE64URL: {\n var hasPlus = string.indexOf('+') !== -1;\n var hasSlash = string.indexOf('/') !== -1;\n if (hasPlus || hasSlash) {\n var invalidChar = hasPlus ? '+' : '/';\n throw invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\n }\n string = string.replace(/-/g, '+').replace(/_/g, '/');\n break;\n }\n }\n var bytes;\n try {\n bytes = atob(string);\n }\n catch (e) {\n throw invalidFormat(format, 'Invalid character found');\n }\n var array = new Uint8Array(bytes.length);\n for (var i = 0; i < bytes.length; i++) {\n array[i] = bytes.charCodeAt(i);\n }\n return array;\n}\n/**\n * @struct\n */\nvar string_DataURLParts = /** @class */ (function () {\n function DataURLParts(dataURL) {\n this.base64 = false;\n this.contentType = null;\n var matches = dataURL.match(/^data:([^,]+)?,/);\n if (matches === null) {\n throw invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\n }\n var middle = matches[1] || null;\n if (middle != null) {\n this.base64 = endsWith(middle, ';base64');\n this.contentType = this.base64\n ? middle.substring(0, middle.length - ';base64'.length)\n : middle;\n }\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\n }\n return DataURLParts;\n}());\nfunction dataURLBytes_(string) {\n var parts = new string_DataURLParts(string);\n if (parts.base64) {\n return base64Bytes_(StringFormat.BASE64, parts.rest);\n }\n else {\n return percentEncodedBytes_(parts.rest);\n }\n}\nfunction dataURLContentType_(string) {\n var parts = new string_DataURLParts(string);\n return parts.contentType;\n}\nfunction endsWith(s, end) {\n var longEnough = s.length >= end.length;\n if (!longEnough) {\n return false;\n }\n return s.substring(s.length - end.length) === end;\n}\n\n//# sourceMappingURL=string.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/taskenums.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar TaskEvent = {\n /** Triggered whenever the task changes or progress is updated. */\n STATE_CHANGED: 'state_changed'\n};\nvar InternalTaskState = {\n RUNNING: 'running',\n PAUSING: 'pausing',\n PAUSED: 'paused',\n SUCCESS: 'success',\n CANCELING: 'canceling',\n CANCELED: 'canceled',\n ERROR: 'error'\n};\nvar TaskState = {\n /** The task is currently transferring data. */\n RUNNING: 'running',\n /** The task was paused by the user. */\n PAUSED: 'paused',\n /** The task completed successfully. */\n SUCCESS: 'success',\n /** The task was canceled. */\n CANCELED: 'canceled',\n /** The task failed with an error. */\n ERROR: 'error'\n};\nfunction taskStateFromInternalTaskState(state) {\n switch (state) {\n case InternalTaskState.RUNNING:\n case InternalTaskState.PAUSING:\n case InternalTaskState.CANCELING:\n return TaskState.RUNNING;\n case InternalTaskState.PAUSED:\n return TaskState.PAUSED;\n case InternalTaskState.SUCCESS:\n return TaskState.SUCCESS;\n case InternalTaskState.CANCELED:\n return TaskState.CANCELED;\n case InternalTaskState.ERROR:\n return TaskState.ERROR;\n default:\n // TODO(andysoto): assert(false);\n return TaskState.ERROR;\n }\n}\n\n//# sourceMappingURL=taskenums.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/object.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains methods for working with objects.\n */\nfunction contains(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nfunction forEach(obj, f) {\n for (var key in obj) {\n if (contains(obj, key)) {\n f(key, obj[key]);\n }\n }\n}\nfunction clone(obj) {\n if (obj == null) {\n return {};\n }\n var c = {};\n forEach(obj, function (key, val) {\n c[key] = val;\n });\n return c;\n}\n\n//# sourceMappingURL=object.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/promise_external.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Implements the promise abstraction interface for external\n * (public SDK) packaging, which just passes through to the firebase-app impl.\n */\n/**\n * @template T\n * @param {function((function(T): void),\n * (function(!Error): void))} resolver\n */\nfunction make(resolver) {\n return new Promise(resolver);\n}\n/**\n * @template T\n */\nfunction promise_external_resolve(value) {\n return Promise.resolve(value);\n}\nfunction promise_external_reject(error) {\n return Promise.reject(error);\n}\n\n//# sourceMappingURL=promise_external.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/type.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @return False if the object is undefined or null, true otherwise.\n */\nfunction isDef(p) {\n return p != null;\n}\nfunction isJustDef(p) {\n return p !== void 0;\n}\nfunction isFunction(p) {\n return typeof p === 'function';\n}\nfunction isObject(p) {\n return typeof p === 'object';\n}\nfunction isNonNullObject(p) {\n return isObject(p) && p !== null;\n}\nfunction isNonArrayObject(p) {\n return isObject(p) && !Array.isArray(p);\n}\nfunction isString(p) {\n return typeof p === 'string' || p instanceof String;\n}\nfunction isNumber(p) {\n return typeof p === 'number' || p instanceof Number;\n}\nfunction isNativeBlob(p) {\n return isNativeBlobDefined() && p instanceof Blob;\n}\nfunction isNativeBlobDefined() {\n return typeof Blob !== 'undefined';\n}\n\n//# sourceMappingURL=type.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhrio.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @enum{number}\n */\nvar ErrorCode;\n(function (ErrorCode) {\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\n})(ErrorCode = ErrorCode || (ErrorCode = {}));\n\n//# sourceMappingURL=xhrio.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhrio_network.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n/**\n * We use this instead of goog.net.XhrIo because goog.net.XhrIo is hyuuuuge and\n * doesn't work in React Native on Android.\n */\nvar xhrio_network_NetworkXhrIo = /** @class */ (function () {\n function NetworkXhrIo() {\n var _this = this;\n this.sent_ = false;\n this.xhr_ = new XMLHttpRequest();\n this.errorCode_ = ErrorCode.NO_ERROR;\n this.sendPromise_ = make(function (resolve, reject) {\n _this.xhr_.addEventListener('abort', function (event) {\n _this.errorCode_ = ErrorCode.ABORT;\n resolve(_this);\n });\n _this.xhr_.addEventListener('error', function (event) {\n _this.errorCode_ = ErrorCode.NETWORK_ERROR;\n resolve(_this);\n });\n _this.xhr_.addEventListener('load', function (event) {\n resolve(_this);\n });\n });\n }\n /**\n * @override\n */\n NetworkXhrIo.prototype.send = function (url, method, opt_body, opt_headers) {\n var _this = this;\n if (this.sent_) {\n throw internalError('cannot .send() more than once');\n }\n this.sent_ = true;\n this.xhr_.open(method, url, true);\n if (isDef(opt_headers)) {\n var headers = opt_headers;\n forEach(headers, function (key, val) {\n _this.xhr_.setRequestHeader(key, val.toString());\n });\n }\n if (isDef(opt_body)) {\n this.xhr_.send(opt_body);\n }\n else {\n this.xhr_.send();\n }\n return this.sendPromise_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getErrorCode = function () {\n if (!this.sent_) {\n throw internalError('cannot .getErrorCode() before sending');\n }\n return this.errorCode_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getStatus = function () {\n if (!this.sent_) {\n throw internalError('cannot .getStatus() before sending');\n }\n try {\n return this.xhr_.status;\n }\n catch (e) {\n return -1;\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseText = function () {\n if (!this.sent_) {\n throw internalError('cannot .getResponseText() before sending');\n }\n return this.xhr_.responseText;\n };\n /**\n * Aborts the request.\n * @override\n */\n NetworkXhrIo.prototype.abort = function () {\n this.xhr_.abort();\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseHeader = function (header) {\n return this.xhr_.getResponseHeader(header);\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.addUploadProgressListener = function (listener) {\n if (isDef(this.xhr_.upload)) {\n this.xhr_.upload.addEventListener('progress', listener);\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.removeUploadProgressListener = function (listener) {\n if (isDef(this.xhr_.upload)) {\n this.xhr_.upload.removeEventListener('progress', listener);\n }\n };\n return NetworkXhrIo;\n}());\n\n\n//# sourceMappingURL=xhrio_network.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/xhriopool.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Factory-like class for creating XhrIo instances.\n */\nvar xhriopool_XhrIoPool = /** @class */ (function () {\n function XhrIoPool() {\n }\n XhrIoPool.prototype.createXhrIo = function () {\n return new xhrio_network_NetworkXhrIo();\n };\n return XhrIoPool;\n}());\n\n\n//# sourceMappingURL=xhriopool.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/json.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Returns the Object resulting from parsing the given JSON, or null if the\n * given string does not represent a JSON object.\n */\nfunction jsonObjectOrNull(s) {\n var obj;\n try {\n obj = JSON.parse(s);\n }\n catch (e) {\n return null;\n }\n if (isNonArrayObject(obj)) {\n return obj;\n }\n else {\n return null;\n }\n}\n\n//# sourceMappingURL=json.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/location.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functionality related to the parsing/composition of bucket/\n * object location.\n */\n\n/**\n * @struct\n */\nvar location_Location = /** @class */ (function () {\n function Location(bucket, path) {\n this.bucket = bucket;\n this.path_ = path;\n }\n Object.defineProperty(Location.prototype, \"path\", {\n get: function () {\n return this.path_;\n },\n enumerable: true,\n configurable: true\n });\n Location.prototype.fullServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\n };\n Location.prototype.bucketOnlyServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o';\n };\n Location.makeFromBucketSpec = function (bucketString) {\n var bucketLocation;\n try {\n bucketLocation = Location.makeFromUrl(bucketString);\n }\n catch (e) {\n // Not valid URL, use as-is. This lets you put bare bucket names in\n // config.\n return new Location(bucketString, '');\n }\n if (bucketLocation.path === '') {\n return bucketLocation;\n }\n else {\n throw invalidDefaultBucket(bucketString);\n }\n };\n Location.makeFromUrl = function (url) {\n var location = null;\n var bucketDomain = '([A-Za-z0-9.\\\\-]+)';\n function gsModify(loc) {\n if (loc.path.charAt(loc.path.length - 1) === '/') {\n loc.path_ = loc.path_.slice(0, -1);\n }\n }\n var gsPath = '(/(.*))?$';\n var path = '(/([^?#]*).*)?$';\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\n var gsIndices = { bucket: 1, path: 3 };\n function httpModify(loc) {\n loc.path_ = decodeURIComponent(loc.path);\n }\n var version = 'v[A-Za-z0-9_]+';\n var httpRegex = new RegExp('^https?://firebasestorage\\\\.googleapis\\\\.com/' +\n version +\n '/b/' +\n bucketDomain +\n '/o' +\n path, 'i');\n var httpIndices = { bucket: 1, path: 3 };\n var groups = [\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\n { regex: httpRegex, indices: httpIndices, postModify: httpModify }\n ];\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n var captures = group.regex.exec(url);\n if (captures) {\n var bucketValue = captures[group.indices.bucket];\n var pathValue = captures[group.indices.path];\n if (!pathValue) {\n pathValue = '';\n }\n location = new Location(bucketValue, pathValue);\n group.postModify(location);\n break;\n }\n }\n if (location == null) {\n throw invalidUrl(url);\n }\n return location;\n };\n return Location;\n}());\n\n\n//# sourceMappingURL=location.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/path.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains helper methods for manipulating paths.\n */\n/**\n * @return Null if the path is already at the root.\n */\nfunction path_parent(path) {\n if (path.length == 0) {\n return null;\n }\n var index = path.lastIndexOf('/');\n if (index === -1) {\n return '';\n }\n var newPath = path.slice(0, index);\n return newPath;\n}\nfunction child(path, childPath) {\n var canonicalChildPath = childPath\n .split('/')\n .filter(function (component) {\n return component.length > 0;\n })\n .join('/');\n if (path.length === 0) {\n return canonicalChildPath;\n }\n else {\n return path + '/' + canonicalChildPath;\n }\n}\n/**\n * Returns the last component of a path.\n * '/foo/bar' -> 'bar'\n * '/foo/bar/baz/' -> 'baz/'\n * '/a' -> 'a'\n */\nfunction lastComponent(path) {\n var index = path.lastIndexOf('/', path.length - 2);\n if (index === -1) {\n return path;\n }\n else {\n return path.slice(index + 1);\n }\n}\n\n//# sourceMappingURL=path.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/url.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functions to create and manipulate URLs for the server API.\n */\n\n\nfunction makeNormalUrl(urlPart) {\n return domainBase + apiBaseUrl + urlPart;\n}\nfunction makeDownloadUrl(urlPart) {\n return downloadBase + apiBaseUrl + urlPart;\n}\nfunction makeUploadUrl(urlPart) {\n return domainBase + apiUploadBaseUrl + urlPart;\n}\nfunction makeQueryString(params) {\n var encode = encodeURIComponent;\n var queryPart = '?';\n forEach(params, function (key, val) {\n var nextPart = encode(key) + '=' + encode(val);\n queryPart = queryPart + nextPart + '&';\n });\n // Chop off the extra '&' or '?' on the end\n queryPart = queryPart.slice(0, -1);\n return queryPart;\n}\n\n//# sourceMappingURL=url.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/metadata.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\nfunction noXform_(metadata, value) {\n return value;\n}\n/**\n * @struct\n */\nvar Mapping = /** @class */ (function () {\n function Mapping(server, opt_local, opt_writable, opt_xform) {\n this.server = server;\n this.local = opt_local || server;\n this.writable = !!opt_writable;\n this.xform = opt_xform || noXform_;\n }\n return Mapping;\n}());\n\nvar mappings_ = null;\nfunction xformPath(fullPath) {\n var valid = isString(fullPath);\n if (!valid || fullPath.length < 2) {\n return fullPath;\n }\n else {\n fullPath = fullPath;\n return lastComponent(fullPath);\n }\n}\nfunction getMappings() {\n if (mappings_) {\n return mappings_;\n }\n var mappings = [];\n mappings.push(new Mapping('bucket'));\n mappings.push(new Mapping('generation'));\n mappings.push(new Mapping('metageneration'));\n mappings.push(new Mapping('name', 'fullPath', true));\n function mappingsXformPath(metadata, fullPath) {\n return xformPath(fullPath);\n }\n var nameMapping = new Mapping('name');\n nameMapping.xform = mappingsXformPath;\n mappings.push(nameMapping);\n /**\n * Coerces the second param to a number, if it is defined.\n */\n function xformSize(metadata, size) {\n if (isDef(size)) {\n return +size;\n }\n else {\n return size;\n }\n }\n var sizeMapping = new Mapping('size');\n sizeMapping.xform = xformSize;\n mappings.push(sizeMapping);\n mappings.push(new Mapping('timeCreated'));\n mappings.push(new Mapping('updated'));\n mappings.push(new Mapping('md5Hash', null, true));\n mappings.push(new Mapping('cacheControl', null, true));\n mappings.push(new Mapping('contentDisposition', null, true));\n mappings.push(new Mapping('contentEncoding', null, true));\n mappings.push(new Mapping('contentLanguage', null, true));\n mappings.push(new Mapping('contentType', null, true));\n mappings.push(new Mapping('metadata', 'customMetadata', true));\n /**\n * Transforms a comma-separated string of tokens into a list of download\n * URLs.\n */\n function xformTokens(metadata, tokens) {\n var valid = isString(tokens) && tokens.length > 0;\n if (!valid) {\n // This can happen if objects are uploaded through GCS and retrieved\n // through list, so we don't want to throw an Error.\n return [];\n }\n var encode = encodeURIComponent;\n var tokensList = tokens.split(',');\n var urls = tokensList.map(function (token) {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\n var base = makeDownloadUrl(urlPart);\n var queryString = makeQueryString({\n alt: 'media',\n token: token\n });\n return base + queryString;\n });\n return urls;\n }\n mappings.push(new Mapping('downloadTokens', 'downloadURLs', false, xformTokens));\n mappings_ = mappings;\n return mappings_;\n}\nfunction addRef(metadata, authWrapper) {\n function generateRef() {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var loc = new location_Location(bucket, path);\n return authWrapper.makeStorageReference(loc);\n }\n Object.defineProperty(metadata, 'ref', { get: generateRef });\n}\nfunction fromResource(authWrapper, resource, mappings) {\n var metadata = {};\n metadata['type'] = 'file';\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\n }\n addRef(metadata, authWrapper);\n return metadata;\n}\nfunction fromResourceString(authWrapper, resourceString, mappings) {\n var obj = jsonObjectOrNull(resourceString);\n if (obj === null) {\n return null;\n }\n var resource = obj;\n return fromResource(authWrapper, resource, mappings);\n}\nfunction toResourceString(metadata, mappings) {\n var resource = {};\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n if (mapping.writable) {\n resource[mapping.server] = metadata[mapping.local];\n }\n }\n return JSON.stringify(resource);\n}\nfunction metadataValidator(p) {\n var validType = p && isObject(p);\n if (!validType) {\n throw 'Expected Metadata object.';\n }\n for (var key in p) {\n var val = p[key];\n if (key === 'customMetadata') {\n if (!isObject(val)) {\n throw 'Expected object for \\'customMetadata\\' mapping.';\n }\n }\n else {\n if (isNonNullObject(val)) {\n throw \"Mapping for '\" + key + \"' cannot be an object.\";\n }\n }\n }\n}\n\n//# sourceMappingURL=metadata.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/args.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n/**\n * @param name Name of the function.\n * @param specs Argument specs.\n * @param passed The actual arguments passed to the function.\n * @throws {fbs.Error} If the arguments are invalid.\n */\nfunction validate(name, specs, passed) {\n var minArgs = specs.length;\n var maxArgs = specs.length;\n for (var i = 0; i < specs.length; i++) {\n if (specs[i].optional) {\n minArgs = i;\n break;\n }\n }\n var validLength = minArgs <= passed.length && passed.length <= maxArgs;\n if (!validLength) {\n throw invalidArgumentCount(minArgs, maxArgs, name, passed.length);\n }\n for (var i = 0; i < passed.length; i++) {\n try {\n specs[i].validator(passed[i]);\n }\n catch (e) {\n if (e instanceof Error) {\n throw invalidArgument(i, name, e.message);\n }\n else {\n throw invalidArgument(i, name, e);\n }\n }\n }\n}\n/**\n * @struct\n */\nvar args_ArgSpec = /** @class */ (function () {\n function ArgSpec(validator, opt_optional) {\n var self = this;\n this.validator = function (p) {\n if (self.optional && !isJustDef(p)) {\n return;\n }\n validator(p);\n };\n this.optional = !!opt_optional;\n }\n return ArgSpec;\n}());\n\nfunction and_(v1, v2) {\n return function (p) {\n v1(p);\n v2(p);\n };\n}\nfunction stringSpec(opt_validator, opt_optional) {\n function stringValidator(p) {\n if (!isString(p)) {\n throw 'Expected string.';\n }\n }\n var validator;\n if (opt_validator) {\n validator = and_(stringValidator, opt_validator);\n }\n else {\n validator = stringValidator;\n }\n return new args_ArgSpec(validator, opt_optional);\n}\nfunction uploadDataSpec() {\n function validator(p) {\n var valid = p instanceof Uint8Array ||\n p instanceof ArrayBuffer ||\n (isNativeBlobDefined() && p instanceof Blob);\n if (!valid) {\n throw 'Expected Blob or File.';\n }\n }\n return new args_ArgSpec(validator);\n}\nfunction metadataSpec(opt_optional) {\n return new args_ArgSpec(metadataValidator, opt_optional);\n}\nfunction nonNegativeNumberSpec() {\n function validator(p) {\n var valid = isNumber(p) && p >= 0;\n if (!valid) {\n throw 'Expected a number 0 or greater.';\n }\n }\n return new args_ArgSpec(validator);\n}\nfunction looseObjectSpec(opt_validator, opt_optional) {\n function validator(p) {\n var isLooseObject = p === null || (isDef(p) && p instanceof Object);\n if (!isLooseObject) {\n throw 'Expected an Object.';\n }\n if (opt_validator !== undefined && opt_validator !== null) {\n opt_validator(p);\n }\n }\n return new args_ArgSpec(validator, opt_optional);\n}\nfunction nullFunctionSpec(opt_optional) {\n function validator(p) {\n var valid = p === null || isFunction(p);\n if (!valid) {\n throw 'Expected a Function.';\n }\n }\n return new args_ArgSpec(validator, opt_optional);\n}\n\n//# sourceMappingURL=args.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/fs.js\n\nfunction getBlobBuilder() {\n if (typeof BlobBuilder !== 'undefined') {\n return BlobBuilder;\n }\n else if (typeof WebKitBlobBuilder !== 'undefined') {\n return WebKitBlobBuilder;\n }\n else {\n return undefined;\n }\n}\n/**\n * Concatenates one or more values together and converts them to a Blob.\n *\n * @param var_args The values that will make up the resulting blob.\n * @return The blob.\n */\nfunction getBlob() {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var BlobBuilder = getBlobBuilder();\n if (BlobBuilder !== undefined) {\n var bb = new BlobBuilder();\n for (var i = 0; i < var_args.length; i++) {\n bb.append(var_args[i]);\n }\n return bb.getBlob();\n }\n else {\n if (isNativeBlobDefined()) {\n return new Blob(var_args);\n }\n else {\n throw Error(\"This browser doesn't seem to support creating Blobs\");\n }\n }\n}\n/**\n * Slices the blob. The returned blob contains data from the start byte\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\n *\n * @param blob The blob to be sliced.\n * @param start Index of the starting byte.\n * @param end Index of the ending byte.\n * @return The blob slice or null if not supported.\n */\nfunction sliceBlob(blob, start, end) {\n if (blob.webkitSlice) {\n return blob.webkitSlice(start, end);\n }\n else if (blob.mozSlice) {\n return blob.mozSlice(start, end);\n }\n else if (blob.slice) {\n return blob.slice(start, end);\n }\n return null;\n}\n\n//# sourceMappingURL=fs.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/blob.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @file Provides a Blob-like wrapper for various binary types (including the\n * native Blob type). This makes it possible to upload types like ArrayBuffers,\n * making uploads possible in environments without the native Blob type.\n */\n\n\n\n\n/**\n * @param opt_elideCopy If true, doesn't copy mutable input data\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\n * modified after this blob's construction.\n */\nvar blob_FbsBlob = /** @class */ (function () {\n function FbsBlob(data, opt_elideCopy) {\n var size = 0;\n var blobType = '';\n if (isNativeBlob(data)) {\n this.data_ = data;\n size = data.size;\n blobType = data.type;\n }\n else if (data instanceof ArrayBuffer) {\n if (opt_elideCopy) {\n this.data_ = new Uint8Array(data);\n }\n else {\n this.data_ = new Uint8Array(data.byteLength);\n this.data_.set(new Uint8Array(data));\n }\n size = this.data_.length;\n }\n else if (data instanceof Uint8Array) {\n if (opt_elideCopy) {\n this.data_ = data;\n }\n else {\n this.data_ = new Uint8Array(data.length);\n this.data_.set(data);\n }\n size = data.length;\n }\n this.size_ = size;\n this.type_ = blobType;\n }\n FbsBlob.prototype.size = function () {\n return this.size_;\n };\n FbsBlob.prototype.type = function () {\n return this.type_;\n };\n FbsBlob.prototype.slice = function (startByte, endByte) {\n if (isNativeBlob(this.data_)) {\n var realBlob = this.data_;\n var sliced = sliceBlob(realBlob, startByte, endByte);\n if (sliced === null) {\n return null;\n }\n return new FbsBlob(sliced);\n }\n else {\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\n return new FbsBlob(slice, true);\n }\n };\n FbsBlob.getBlob = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (isNativeBlobDefined()) {\n var blobby = var_args.map(function (val) {\n if (val instanceof FbsBlob) {\n return val.data_;\n }\n else {\n return val;\n }\n });\n return new FbsBlob(getBlob.apply(null, blobby));\n }\n else {\n var uint8Arrays = var_args.map(function (val) {\n if (isString(val)) {\n return dataFromString(StringFormat.RAW, val).data;\n }\n else {\n // Blobs don't exist, so this has to be a Uint8Array.\n return val.data_;\n }\n });\n var finalLength_1 = 0;\n uint8Arrays.forEach(function (array) {\n finalLength_1 += array.byteLength;\n });\n var merged_1 = new Uint8Array(finalLength_1);\n var index_1 = 0;\n uint8Arrays.forEach(function (array) {\n for (var i = 0; i < array.length; i++) {\n merged_1[index_1++] = array[i];\n }\n });\n return new FbsBlob(merged_1, true);\n }\n };\n FbsBlob.prototype.uploadData = function () {\n return this.data_;\n };\n return FbsBlob;\n}());\n\n\n//# sourceMappingURL=blob.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/array.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns true if the object is contained in the array (compared with ===).\n * @template T\n */\nfunction array_contains(array, elem) {\n return array.indexOf(elem) !== -1;\n}\n/**\n * Returns a shallow copy of the array or array-like object (e.g. arguments).\n * @template T\n */\nfunction array_clone(arraylike) {\n return Array.prototype.slice.call(arraylike);\n}\n/**\n * Removes the given element from the given array, if it is contained.\n * Directly modifies the passed-in array.\n * @template T\n */\nfunction remove(array, elem) {\n var i = array.indexOf(elem);\n if (i !== -1) {\n array.splice(i, 1);\n }\n}\n\n//# sourceMappingURL=array.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requestinfo.js\nvar RequestInfo = /** @class */ (function () {\n function RequestInfo(url, method, \n /**\n * Returns the value with which to resolve the request's promise. Only called\n * if the request is successful. Throw from this function to reject the\n * returned Request's promise with the thrown error.\n * Note: The XhrIo passed to this function may be reused after this callback\n * returns. Do not keep a reference to it in any way.\n */\n handler, timeout) {\n this.url = url;\n this.method = method;\n this.handler = handler;\n this.timeout = timeout;\n this.urlParams = {};\n this.headers = {};\n this.body = null;\n this.errorHandler = null;\n /**\n * Called with the current number of bytes uploaded and total size (-1 if not\n * computable) of the request body (i.e. used to report upload progress).\n */\n this.progressCallback = null;\n this.successCodes = [200];\n this.additionalRetryCodes = [];\n }\n return RequestInfo;\n}());\n\n\n//# sourceMappingURL=requestinfo.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requests.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n/**\n * Throws the UNKNOWN FirebaseStorageError if cndn is false.\n */\nfunction handlerCheck(cndn) {\n if (!cndn) {\n throw unknown();\n }\n}\nfunction metadataHandler(authWrapper, mappings) {\n function handler(xhr, text) {\n var metadata = fromResourceString(authWrapper, text, mappings);\n handlerCheck(metadata !== null);\n return metadata;\n }\n return handler;\n}\nfunction sharedErrorHandler(location) {\n function errorHandler(xhr, err) {\n var newErr;\n if (xhr.getStatus() === 401) {\n newErr = unauthenticated();\n }\n else {\n if (xhr.getStatus() === 402) {\n newErr = quotaExceeded(location.bucket);\n }\n else {\n if (xhr.getStatus() === 403) {\n newErr = unauthorized(location.path);\n }\n else {\n newErr = err;\n }\n }\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nfunction objectErrorHandler(location) {\n var shared = sharedErrorHandler(location);\n function errorHandler(xhr, err) {\n var newErr = shared(xhr, err);\n if (xhr.getStatus() === 404) {\n newErr = objectNotFound(location.path);\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nfunction getMetadata(authWrapper, location, mappings) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'GET';\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction updateMetadata(authWrapper, location, metadata, mappings) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'PATCH';\n var body = toResourceString(metadata, mappings);\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction deleteObject(authWrapper, location) {\n var urlPart = location.fullServerUrl();\n var url = makeNormalUrl(urlPart);\n var method = 'DELETE';\n var timeout = authWrapper.maxOperationRetryTime();\n function handler(xhr, text) { }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.successCodes = [200, 204];\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nfunction determineContentType_(metadata, blob) {\n return ((metadata && metadata['contentType']) ||\n (blob && blob.type()) ||\n 'application/octet-stream');\n}\nfunction metadataForUpload_(location, blob, opt_metadata) {\n var metadata = clone(opt_metadata);\n metadata['fullPath'] = location.path;\n metadata['size'] = blob.size();\n if (!metadata['contentType']) {\n metadata['contentType'] = determineContentType_(null, blob);\n }\n return metadata;\n}\nfunction multipartUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var headers = {\n 'X-Goog-Upload-Protocol': 'multipart'\n };\n function genBoundary() {\n var str = '';\n for (var i = 0; i < 2; i++) {\n str =\n str +\n Math.random()\n .toString()\n .slice(2);\n }\n return str;\n }\n var boundary = genBoundary();\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var metadataString = toResourceString(metadata, mappings);\n var preBlobPart = '--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\n metadataString +\n '\\r\\n--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: ' +\n metadata['contentType'] +\n '\\r\\n\\r\\n';\n var postBlobPart = '\\r\\n--' + boundary + '--';\n var body = blob_FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\n if (body === null) {\n throw cannotSliceBlob();\n }\n var urlParams = { name: metadata['fullPath'] };\n var url = makeUploadUrl(urlPart);\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param current The number of bytes that have been uploaded so far.\n * @param total The total number of bytes in the upload.\n * @param opt_finalized True if the server has finished the upload.\n * @param opt_metadata The upload metadata, should\n * only be passed if opt_finalized is true.\n * @struct\n */\nvar ResumableUploadStatus = /** @class */ (function () {\n function ResumableUploadStatus(current, total, finalized, metadata) {\n this.current = current;\n this.total = total;\n this.finalized = !!finalized;\n this.metadata = metadata || null;\n }\n return ResumableUploadStatus;\n}());\n\nfunction checkResumeHeader_(xhr, opt_allowed) {\n var status;\n try {\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\n }\n catch (e) {\n handlerCheck(false);\n }\n var allowed = opt_allowed || ['active'];\n handlerCheck(array_contains(allowed, status));\n return status;\n}\nfunction createResumableUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var urlParams = { name: metadata['fullPath'] };\n var url = makeUploadUrl(urlPart);\n var method = 'POST';\n var headers = {\n 'X-Goog-Upload-Protocol': 'resumable',\n 'X-Goog-Upload-Command': 'start',\n 'X-Goog-Upload-Header-Content-Length': blob.size(),\n 'X-Goog-Upload-Header-Content-Type': metadata['contentType'],\n 'Content-Type': 'application/json; charset=utf-8'\n };\n var body = toResourceString(metadata, mappings);\n var timeout = authWrapper.maxUploadRetryTime();\n function handler(xhr, text) {\n checkResumeHeader_(xhr);\n var url;\n try {\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\n }\n catch (e) {\n handlerCheck(false);\n }\n handlerCheck(isString(url));\n return url;\n }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n */\nfunction getResumableUploadStatus(authWrapper, location, url, blob) {\n var headers = { 'X-Goog-Upload-Command': 'query' };\n function handler(xhr, text) {\n var status = checkResumeHeader_(xhr, ['active', 'final']);\n var sizeString;\n try {\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\n }\n catch (e) {\n handlerCheck(false);\n }\n var size = parseInt(sizeString, 10);\n handlerCheck(!isNaN(size));\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * Any uploads via the resumable upload API must transfer a number of bytes\n * that is a multiple of this number.\n */\nvar resumableUploadChunkSize = 256 * 1024;\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n * @param chunkSize Number of bytes to upload.\n * @param opt_status The previous status.\n * If not passed or null, we start from the beginning.\n * @throws fbs.Error If the upload is already complete, the passed in status\n * has a final size inconsistent with the blob, or the blob cannot be sliced\n * for upload.\n */\nfunction continueResumableUpload(location, authWrapper, url, blob, chunkSize, mappings, opt_status, opt_progressCallback) {\n // TODO(andysoto): standardize on internal asserts\n // assert(!(opt_status && opt_status.finalized));\n var status = new ResumableUploadStatus(0, 0);\n if (opt_status) {\n status.current = opt_status.current;\n status.total = opt_status.total;\n }\n else {\n status.current = 0;\n status.total = blob.size();\n }\n if (blob.size() !== status.total) {\n throw serverFileWrongSize();\n }\n var bytesLeft = status.total - status.current;\n var bytesToUpload = bytesLeft;\n if (chunkSize > 0) {\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\n }\n var startByte = status.current;\n var endByte = startByte + bytesToUpload;\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\n var headers = {\n 'X-Goog-Upload-Command': uploadCommand,\n 'X-Goog-Upload-Offset': status.current\n };\n var body = blob.slice(startByte, endByte);\n if (body === null) {\n throw cannotSliceBlob();\n }\n function handler(xhr, text) {\n // TODO(andysoto): Verify the MD5 of each uploaded range:\n // the 'x-range-md5' header comes back with status code 308 responses.\n // We'll only be able to bail out though, because you can't re-upload a\n // range that you previously uploaded.\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\n var newCurrent = status.current + bytesToUpload;\n var size = blob.size();\n var metadata;\n if (uploadStatus === 'final') {\n metadata = metadataHandler(authWrapper, mappings)(xhr, text);\n }\n else {\n metadata = null;\n }\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.progressCallback = opt_progressCallback || null;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n\n//# sourceMappingURL=requests.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/observer.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @struct\n */\nvar observer_Observer = /** @class */ (function () {\n function Observer(nextOrObserver, opt_error, opt_complete) {\n var asFunctions = isFunction(nextOrObserver) ||\n isDef(opt_error) ||\n isDef(opt_complete);\n if (asFunctions) {\n this.next = nextOrObserver;\n this.error = opt_error || null;\n this.complete = opt_complete || null;\n }\n else {\n var observer = nextOrObserver;\n this.next = observer.next || null;\n this.error = observer.error || null;\n this.complete = observer.complete || null;\n }\n }\n return Observer;\n}());\n\n\n//# sourceMappingURL=observer.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/tasksnapshot.js\nvar UploadTaskSnapshot = /** @class */ (function () {\n function UploadTaskSnapshot(bytesTransferred, totalBytes, state, metadata, task, ref) {\n this.bytesTransferred = bytesTransferred;\n this.totalBytes = totalBytes;\n this.state = state;\n this.metadata = metadata;\n this.task = task;\n this.ref = ref;\n }\n Object.defineProperty(UploadTaskSnapshot.prototype, \"downloadURL\", {\n get: function () {\n if (this.metadata !== null) {\n var urls = this.metadata['downloadURLs'];\n if (urls != null && urls[0] != null) {\n return urls[0];\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n return UploadTaskSnapshot;\n}());\n\n\n//# sourceMappingURL=tasksnapshot.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/async.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Method for invoking a callback asynchronously.\n */\n\n/**\n * Returns a function that invokes f with its arguments asynchronously as a\n * microtask, i.e. as soon as possible after the current script returns back\n * into browser code.\n */\nfunction async_async(f) {\n return function () {\n var argsToForward = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n argsToForward[_i] = arguments[_i];\n }\n promise_external_resolve(true).then(function () {\n f.apply(null, argsToForward);\n });\n };\n}\n\n//# sourceMappingURL=async.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/task.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines types for interacting with blob transfer tasks.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\n * upload and manage callbacks for various events.\n */\nvar task_UploadTask = /** @class */ (function () {\n /**\n * @param ref The firebaseStorage.Reference object this task came\n * from, untyped to avoid cyclic dependencies.\n * @param blob The blob to upload.\n */\n function UploadTask(ref, authWrapper, location, mappings, blob, metadata) {\n if (metadata === void 0) { metadata = null; }\n var _this = this;\n this.transferred_ = 0;\n this.needToFetchStatus_ = false;\n this.needToFetchMetadata_ = false;\n this.observers_ = [];\n this.error_ = null;\n this.uploadUrl_ = null;\n this.request_ = null;\n this.chunkMultiplier_ = 1;\n this.resolve_ = null;\n this.reject_ = null;\n this.ref_ = ref;\n this.authWrapper_ = authWrapper;\n this.location_ = location;\n this.blob_ = blob;\n this.metadata_ = metadata;\n this.mappings_ = mappings;\n this.resumable_ = this.shouldDoResumable_(this.blob_);\n this.state_ = InternalTaskState.RUNNING;\n this.errorHandler_ = function (error) {\n _this.request_ = null;\n _this.chunkMultiplier_ = 1;\n if (error.codeEquals(Code.CANCELED)) {\n _this.needToFetchStatus_ = true;\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.metadataErrorHandler_ = function (error) {\n _this.request_ = null;\n if (error.codeEquals(Code.CANCELED)) {\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.promise_ = make(function (resolve, reject) {\n _this.resolve_ = resolve;\n _this.reject_ = reject;\n _this.start_();\n });\n // Prevent uncaught rejections on the internal promise from bubbling out\n // to the top level with a dummy handler.\n this.promise_.then(null, function () { });\n }\n UploadTask.prototype.makeProgressCallback_ = function () {\n var _this = this;\n var sizeBefore = this.transferred_;\n return function (loaded, total) {\n _this.updateProgress_(sizeBefore + loaded);\n };\n };\n UploadTask.prototype.shouldDoResumable_ = function (blob) {\n return blob.size() > 256 * 1024;\n };\n UploadTask.prototype.start_ = function () {\n if (this.state_ !== InternalTaskState.RUNNING) {\n // This can happen if someone pauses us in a resume callback, for example.\n return;\n }\n if (this.request_ !== null) {\n return;\n }\n if (this.resumable_) {\n if (this.uploadUrl_ === null) {\n this.createResumable_();\n }\n else {\n if (this.needToFetchStatus_) {\n this.fetchStatus_();\n }\n else {\n if (this.needToFetchMetadata_) {\n // Happens if we miss the metadata on upload completion.\n this.fetchMetadata_();\n }\n else {\n this.continueUpload_();\n }\n }\n }\n }\n else {\n this.oneShotUpload_();\n }\n };\n UploadTask.prototype.resolveToken_ = function (callback) {\n var _this = this;\n this.authWrapper_.getAuthToken().then(function (authToken) {\n switch (_this.state_) {\n case InternalTaskState.RUNNING:\n callback(authToken);\n break;\n case InternalTaskState.CANCELING:\n _this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.PAUSING:\n _this.transition_(InternalTaskState.PAUSED);\n break;\n default:\n }\n });\n };\n // TODO(andysoto): assert false\n UploadTask.prototype.createResumable_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = createResumableUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var createRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = createRequest;\n createRequest.getPromise().then(function (url) {\n _this.request_ = null;\n _this.uploadUrl_ = url;\n _this.needToFetchStatus_ = false;\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.fetchStatus_ = function () {\n var _this = this;\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo = getResumableUploadStatus(_this.authWrapper_, _this.location_, url, _this.blob_);\n var statusRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = statusRequest;\n statusRequest.getPromise().then(function (status) {\n status = status;\n _this.request_ = null;\n _this.updateProgress_(status.current);\n _this.needToFetchStatus_ = false;\n if (status.finalized) {\n _this.needToFetchMetadata_ = true;\n }\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.continueUpload_ = function () {\n var _this = this;\n var chunkSize = resumableUploadChunkSize * this.chunkMultiplier_;\n var status = new ResumableUploadStatus(this.transferred_, this.blob_.size());\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo;\n try {\n requestInfo = continueResumableUpload(_this.location_, _this.authWrapper_, url, _this.blob_, chunkSize, _this.mappings_, status, _this.makeProgressCallback_());\n }\n catch (e) {\n _this.error_ = e;\n _this.transition_(InternalTaskState.ERROR);\n return;\n }\n var uploadRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = uploadRequest;\n uploadRequest\n .getPromise()\n .then(function (newStatus) {\n _this.increaseMultiplier_();\n _this.request_ = null;\n _this.updateProgress_(newStatus.current);\n if (newStatus.finalized) {\n _this.metadata_ = newStatus.metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }\n else {\n _this.completeTransitions_();\n }\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.increaseMultiplier_ = function () {\n var currentSize = resumableUploadChunkSize * this.chunkMultiplier_;\n // Max chunk size is 32M.\n if (currentSize < 32 * 1024 * 1024) {\n this.chunkMultiplier_ *= 2;\n }\n };\n UploadTask.prototype.fetchMetadata_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = getMetadata(_this.authWrapper_, _this.location_, _this.mappings_);\n var metadataRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = metadataRequest;\n metadataRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.metadataErrorHandler_);\n });\n };\n UploadTask.prototype.oneShotUpload_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = multipartUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var multipartRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = multipartRequest;\n multipartRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.updateProgress_(_this.blob_.size());\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.updateProgress_ = function (transferred) {\n var old = this.transferred_;\n this.transferred_ = transferred;\n // A progress update can make the \"transferred\" value smaller (e.g. a\n // partial upload not completed by server, after which the \"transferred\"\n // value may reset to the value at the beginning of the request).\n if (this.transferred_ !== old) {\n this.notifyObservers_();\n }\n };\n UploadTask.prototype.transition_ = function (state) {\n if (this.state_ === state) {\n return;\n }\n switch (state) {\n case InternalTaskState.CANCELING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.PAUSING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.RUNNING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.PAUSING);\n var wasPaused = this.state_ === InternalTaskState.PAUSED;\n this.state_ = state;\n if (wasPaused) {\n this.notifyObservers_();\n this.start_();\n }\n break;\n case InternalTaskState.PAUSED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.CANCELED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.CANCELING);\n this.error_ = error_canceled();\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.ERROR:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.SUCCESS:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n }\n };\n UploadTask.prototype.completeTransitions_ = function () {\n switch (this.state_) {\n case InternalTaskState.PAUSING:\n this.transition_(InternalTaskState.PAUSED);\n break;\n case InternalTaskState.CANCELING:\n this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.RUNNING:\n this.start_();\n break;\n default:\n // TODO(andysoto): assert(false);\n break;\n }\n };\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\n get: function () {\n var externalState = taskStateFromInternalTaskState(this.state_);\n return new UploadTaskSnapshot(this.transferred_, this.blob_.size(), externalState, this.metadata_, this, this.ref_);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds a callback for an event.\n * @param type The type of event to listen for.\n */\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\n if (nextOrObserver === void 0) { nextOrObserver = undefined; }\n if (error === void 0) { error = undefined; }\n if (completed === void 0) { completed = undefined; }\n function typeValidator(_p) {\n if (type !== TaskEvent.STATE_CHANGED) {\n throw \"Expected one of the event types: [\" + TaskEvent.STATE_CHANGED + \"].\";\n }\n }\n var nextOrObserverMessage = 'Expected a function or an Object with one of ' +\n '`next`, `error`, `complete` properties.';\n var nextValidator = nullFunctionSpec(true).validator;\n var observerValidator = looseObjectSpec(null, true).validator;\n function nextOrObserverValidator(p) {\n try {\n nextValidator(p);\n return;\n }\n catch (e) { }\n try {\n observerValidator(p);\n var anyDefined = isJustDef(p['next']) ||\n isJustDef(p['error']) ||\n isJustDef(p['complete']);\n if (!anyDefined) {\n throw '';\n }\n return;\n }\n catch (e) {\n throw nextOrObserverMessage;\n }\n }\n var specs = [\n stringSpec(typeValidator),\n looseObjectSpec(nextOrObserverValidator, true),\n nullFunctionSpec(true),\n nullFunctionSpec(true)\n ];\n validate('on', specs, arguments);\n var self = this;\n function makeBinder(specs) {\n function binder(nextOrObserver, error, opt_complete) {\n if (specs !== null) {\n validate('on', specs, arguments);\n }\n var observer = new observer_Observer(nextOrObserver, error, completed);\n self.addObserver_(observer);\n return function () {\n self.removeObserver_(observer);\n };\n }\n return binder;\n }\n function binderNextOrObserverValidator(p) {\n if (p === null) {\n throw nextOrObserverMessage;\n }\n nextOrObserverValidator(p);\n }\n var binderSpecs = [\n looseObjectSpec(binderNextOrObserverValidator),\n nullFunctionSpec(true),\n nullFunctionSpec(true)\n ];\n var typeOnly = !(isJustDef(nextOrObserver) ||\n isJustDef(error) ||\n isJustDef(completed));\n if (typeOnly) {\n return makeBinder(binderSpecs);\n }\n else {\n return makeBinder(null)(nextOrObserver, error, completed);\n }\n };\n /**\n * This object behaves like a Promise, and resolves with its snapshot data\n * when the upload completes.\n * @param onFulfilled The fulfillment callback. Promise chaining works as normal.\n * @param onRejected The rejection callback.\n */\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\n // These casts are needed so that TypeScript can infer the types of the\n // resulting Promise.\n return this.promise_.then(onFulfilled, onRejected);\n };\n /**\n * Equivalent to calling `then(null, onRejected)`.\n */\n UploadTask.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n * Adds the given observer.\n */\n UploadTask.prototype.addObserver_ = function (observer) {\n this.observers_.push(observer);\n this.notifyObserver_(observer);\n };\n /**\n * Removes the given observer.\n */\n UploadTask.prototype.removeObserver_ = function (observer) {\n remove(this.observers_, observer);\n };\n UploadTask.prototype.notifyObservers_ = function () {\n var _this = this;\n this.finishPromise_();\n var observers = array_clone(this.observers_);\n observers.forEach(function (observer) {\n _this.notifyObserver_(observer);\n });\n };\n UploadTask.prototype.finishPromise_ = function () {\n if (this.resolve_ !== null) {\n var triggered = true;\n switch (taskStateFromInternalTaskState(this.state_)) {\n case TaskState.SUCCESS:\n async_async(this.resolve_.bind(null, this.snapshot))();\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n var toCall = this.reject_;\n async_async(toCall.bind(null, this.error_))();\n break;\n default:\n triggered = false;\n break;\n }\n if (triggered) {\n this.resolve_ = null;\n this.reject_ = null;\n }\n }\n };\n UploadTask.prototype.notifyObserver_ = function (observer) {\n var externalState = taskStateFromInternalTaskState(this.state_);\n switch (externalState) {\n case TaskState.RUNNING:\n case TaskState.PAUSED:\n if (observer.next !== null) {\n async_async(observer.next.bind(observer, this.snapshot))();\n }\n break;\n case TaskState.SUCCESS:\n if (observer.complete !== null) {\n async_async(observer.complete.bind(observer))();\n }\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n if (observer.error !== null) {\n async_async(observer.error.bind(observer, this.error_))();\n }\n break;\n default:\n // TODO(andysoto): assert(false);\n if (observer.error !== null) {\n async_async(observer.error.bind(observer, this.error_))();\n }\n }\n };\n /**\n * Resumes a paused task. Has no effect on a currently running or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.resume = function () {\n validate('resume', [], arguments);\n var valid = this.state_ === InternalTaskState.PAUSED ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.RUNNING);\n }\n return valid;\n };\n /**\n * Pauses a currently running task. Has no effect on a paused or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.pause = function () {\n validate('pause', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING;\n if (valid) {\n this.transition_(InternalTaskState.PAUSING);\n }\n return valid;\n };\n /**\n * Cancels a currently running or paused task. Has no effect on a complete or\n * failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.cancel = function () {\n validate('cancel', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.CANCELING);\n }\n return valid;\n };\n return UploadTask;\n}());\n\n\n//# sourceMappingURL=task.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/reference.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines the Firebase Storage Reference class.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Provides methods to interact with a bucket in the Firebase Storage service.\n * @param location An fbs.location, or the URL at\n * which to base this object, in one of the following forms:\n * gs:///\n * http[s]://firebasestorage.googleapis.com/\n * /b//o/\n * Any query or fragment strings will be ignored in the http[s]\n * format. If no value is passed, the storage object will use a URL based on\n * the project ID of the base firebase.App instance.\n */\nvar reference_Reference = /** @class */ (function () {\n function Reference(authWrapper, location) {\n this.authWrapper = authWrapper;\n if (location instanceof location_Location) {\n this.location = location;\n }\n else {\n this.location = location_Location.makeFromUrl(location);\n }\n }\n /**\n * @return The URL for the bucket and path this object references,\n * in the form gs:///\n * @override\n */\n Reference.prototype.toString = function () {\n validate('toString', [], arguments);\n return 'gs://' + this.location.bucket + '/' + this.location.path;\n };\n Reference.prototype.newRef = function (authWrapper, location) {\n return new Reference(authWrapper, location);\n };\n Reference.prototype.mappings = function () {\n return getMappings();\n };\n /**\n * @return A reference to the object obtained by\n * appending childPath, removing any duplicate, beginning, or trailing\n * slashes.\n */\n Reference.prototype.child = function (childPath) {\n validate('child', [stringSpec()], arguments);\n var newPath = child(this.location.path, childPath);\n var location = new location_Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n };\n Object.defineProperty(Reference.prototype, \"parent\", {\n /**\n * @return A reference to the parent of the\n * current object, or null if the current object is the root.\n */\n get: function () {\n var newPath = path_parent(this.location.path);\n if (newPath === null) {\n return null;\n }\n var location = new location_Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n /**\n * @return An reference to the root of this\n * object's bucket.\n */\n get: function () {\n var location = new location_Location(this.location.bucket, '');\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"bucket\", {\n get: function () {\n return this.location.bucket;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"fullPath\", {\n get: function () {\n return this.location.path;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"name\", {\n get: function () {\n return lastComponent(this.location.path);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"storage\", {\n get: function () {\n return this.authWrapper.service();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Uploads a blob to this object's location.\n * @param data The blob to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.put = function (data, metadata) {\n if (metadata === void 0) { metadata = null; }\n validate('put', [uploadDataSpec(), metadataSpec(true)], arguments);\n this.throwIfRoot_('put');\n return new task_UploadTask(this, this.authWrapper, this.location, this.mappings(), new blob_FbsBlob(data), metadata);\n };\n /**\n * Uploads a string to this object's location.\n * @param string The string to upload.\n * @param opt_format The format of the string to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.putString = function (string, format, opt_metadata) {\n if (format === void 0) { format = StringFormat.RAW; }\n validate('putString', [\n stringSpec(),\n stringSpec(formatValidator, true),\n metadataSpec(true)\n ], arguments);\n this.throwIfRoot_('putString');\n var data = dataFromString(format, string);\n var metadata = clone(opt_metadata);\n if (!isDef(metadata['contentType']) && isDef(data.contentType)) {\n metadata['contentType'] = data.contentType;\n }\n return new task_UploadTask(this, this.authWrapper, this.location, this.mappings(), new blob_FbsBlob(data.data, true), metadata);\n };\n /**\n * Deletes the object at this location.\n * @return A promise that resolves if the deletion succeeds.\n */\n Reference.prototype.delete = function () {\n validate('delete', [], arguments);\n this.throwIfRoot_('delete');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = deleteObject(self.authWrapper, self.location);\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * A promise that resolves with the metadata for this object. If this\n * object doesn't exist or metadata cannot be retreived, the promise is\n * rejected.\n */\n Reference.prototype.getMetadata = function () {\n validate('getMetadata', [], arguments);\n this.throwIfRoot_('getMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = getMetadata(self.authWrapper, self.location, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * Updates the metadata for this object.\n * @param metadata The new metadata for the object.\n * Only values that have been explicitly set will be changed. Explicitly\n * setting a value to null will remove the metadata.\n * @return A promise that resolves\n * with the new metadata for this object.\n * @see firebaseStorage.Reference.prototype.getMetadata\n */\n Reference.prototype.updateMetadata = function (metadata) {\n validate('updateMetadata', [metadataSpec()], arguments);\n this.throwIfRoot_('updateMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = updateMetadata(self.authWrapper, self.location, metadata, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * @return A promise that resolves with the download\n * URL for this object.\n */\n Reference.prototype.getDownloadURL = function () {\n validate('getDownloadURL', [], arguments);\n this.throwIfRoot_('getDownloadURL');\n return this.getMetadata().then(function (metadata) {\n var url = metadata['downloadURLs'][0];\n if (isDef(url)) {\n return url;\n }\n else {\n throw noDownloadURL();\n }\n });\n };\n Reference.prototype.throwIfRoot_ = function (name) {\n if (this.location.path === '') {\n throw invalidRootOperation(name);\n }\n };\n return Reference;\n}());\n\n\n//# sourceMappingURL=reference.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/failrequest.js\n\n/**\n * A request whose promise always fails.\n * @struct\n * @template T\n */\nvar failrequest_FailRequest = /** @class */ (function () {\n function FailRequest(error) {\n this.promise_ = promise_external_reject(error);\n }\n /** @inheritDoc */\n FailRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n FailRequest.prototype.cancel = function (appDelete) {\n if (appDelete === void 0) { appDelete = false; }\n };\n return FailRequest;\n}());\n\n\n//# sourceMappingURL=failrequest.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/requestmap.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * @struct\n */\nvar requestmap_RequestMap = /** @class */ (function () {\n function RequestMap() {\n this.map_ = {};\n this.id_ = minSafeInteger;\n }\n /**\n * Registers the given request with this map.\n * The request is unregistered when it completes.\n * @param r The request to register.\n */\n RequestMap.prototype.addRequest = function (r) {\n var id = this.id_;\n this.id_++;\n this.map_[id] = r;\n var self = this;\n function unmap() {\n delete self.map_[id];\n }\n r.getPromise().then(unmap, unmap);\n };\n /**\n * Cancels all registered requests.\n */\n RequestMap.prototype.clear = function () {\n forEach(this.map_, function (key, val) {\n if (val) {\n val.cancel(true);\n }\n });\n this.map_ = {};\n };\n return RequestMap;\n}());\n\n\n//# sourceMappingURL=requestmap.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/authwrapper.js\n\n\n\n\n\n\n\n/**\n * @param app If null, getAuthToken always resolves with null.\n * @param service The storage service associated with this auth wrapper.\n * Untyped to avoid circular type dependencies.\n * @struct\n */\nvar authwrapper_AuthWrapper = /** @class */ (function () {\n function AuthWrapper(app, maker, requestMaker, service, pool) {\n this.bucket_ = null;\n this.deleted_ = false;\n this.app_ = app;\n if (this.app_ !== null) {\n var options = this.app_.options;\n if (isDef(options)) {\n this.bucket_ = AuthWrapper.extractBucket_(options);\n }\n }\n this.storageRefMaker_ = maker;\n this.requestMaker_ = requestMaker;\n this.pool_ = pool;\n this.service_ = service;\n this.maxOperationRetryTime_ = defaultMaxOperationRetryTime;\n this.maxUploadRetryTime_ = defaultMaxUploadRetryTime;\n this.requestMap_ = new requestmap_RequestMap();\n }\n AuthWrapper.extractBucket_ = function (config) {\n var bucketString = config[configOption] || null;\n if (bucketString == null) {\n return null;\n }\n var loc = location_Location.makeFromBucketSpec(bucketString);\n return loc.bucket;\n };\n AuthWrapper.prototype.getAuthToken = function () {\n // TODO(andysoto): remove ifDef checks after firebase-app implements stubs\n // (b/28673818).\n if (this.app_ !== null &&\n isDef(this.app_.INTERNAL) &&\n isDef(this.app_.INTERNAL.getToken)) {\n return this.app_.INTERNAL.getToken().then(function (response) {\n if (response !== null) {\n return response.accessToken;\n }\n else {\n return null;\n }\n }, function (_error) {\n return null;\n });\n }\n else {\n return promise_external_resolve(null);\n }\n };\n AuthWrapper.prototype.bucket = function () {\n if (this.deleted_) {\n throw appDeleted();\n }\n else {\n return this.bucket_;\n }\n };\n /**\n * The service associated with this auth wrapper. Untyped to avoid circular\n * type dependencies.\n */\n AuthWrapper.prototype.service = function () {\n return this.service_;\n };\n /**\n * Returns a new firebaseStorage.Reference object referencing this AuthWrapper\n * at the given Location.\n * @param loc The Location.\n * @return Actually a firebaseStorage.Reference, typing not allowed\n * because of circular dependency problems.\n */\n AuthWrapper.prototype.makeStorageReference = function (loc) {\n return this.storageRefMaker_(this, loc);\n };\n AuthWrapper.prototype.makeRequest = function (requestInfo, authToken) {\n if (!this.deleted_) {\n var request = this.requestMaker_(requestInfo, authToken, this.pool_);\n this.requestMap_.addRequest(request);\n return request;\n }\n else {\n return new failrequest_FailRequest(appDeleted());\n }\n };\n /**\n * Stop running requests and prevent more from being created.\n */\n AuthWrapper.prototype.deleteApp = function () {\n this.deleted_ = true;\n this.app_ = null;\n this.requestMap_.clear();\n };\n AuthWrapper.prototype.maxUploadRetryTime = function () {\n return this.maxUploadRetryTime_;\n };\n AuthWrapper.prototype.setMaxUploadRetryTime = function (time) {\n this.maxUploadRetryTime_ = time;\n };\n AuthWrapper.prototype.maxOperationRetryTime = function () {\n return this.maxOperationRetryTime_;\n };\n AuthWrapper.prototype.setMaxOperationRetryTime = function (time) {\n this.maxOperationRetryTime_ = time;\n };\n return AuthWrapper;\n}());\n\n\n//# sourceMappingURL=authwrapper.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/backoff.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @param f May be invoked\n * before the function returns.\n * @param callback Get all the arguments passed to the function\n * passed to f, including the initial boolean.\n */\nfunction start(f, callback, timeout) {\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\n // type instead of a bunch of functions with state shared in the closure)\n var waitSeconds = 1;\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\n var timeoutId = null;\n var hitTimeout = false;\n var cancelState = 0;\n function canceled() {\n return cancelState === 2;\n }\n var triggeredCallback = false;\n function triggerCallback() {\n if (!triggeredCallback) {\n triggeredCallback = true;\n callback.apply(null, arguments);\n }\n }\n function callWithDelay(millis) {\n timeoutId = setTimeout(function () {\n timeoutId = null;\n f(handler, canceled());\n }, millis);\n }\n function handler(success) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (triggeredCallback) {\n return;\n }\n if (success) {\n triggerCallback.apply(null, arguments);\n return;\n }\n var mustStop = canceled() || hitTimeout;\n if (mustStop) {\n triggerCallback.apply(null, arguments);\n return;\n }\n if (waitSeconds < 64) {\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\n waitSeconds *= 2;\n }\n var waitMillis;\n if (cancelState === 1) {\n cancelState = 2;\n waitMillis = 0;\n }\n else {\n waitMillis = (waitSeconds + Math.random()) * 1000;\n }\n callWithDelay(waitMillis);\n }\n var stopped = false;\n function stop(wasTimeout) {\n if (stopped) {\n return;\n }\n stopped = true;\n if (triggeredCallback) {\n return;\n }\n if (timeoutId !== null) {\n if (!wasTimeout) {\n cancelState = 2;\n }\n clearTimeout(timeoutId);\n callWithDelay(0);\n }\n else {\n if (!wasTimeout) {\n cancelState = 1;\n }\n }\n }\n callWithDelay(0);\n setTimeout(function () {\n hitTimeout = true;\n stop(true);\n }, timeout);\n return stop;\n}\n/**\n * Stops the retry loop from repeating.\n * If the function is currently \"in between\" retries, it is invoked immediately\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\n * after the current invocation finishes iff the current invocation would have\n * triggered another retry.\n */\nfunction stop(id) {\n id(false);\n}\n\n//# sourceMappingURL=backoff.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/implementation/request.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines methods used to actually send HTTP requests from\n * abstract representations.\n */\n\n\n\n\n\n\n\n\n\n/**\n * @struct\n * @template T\n */\nvar request_NetworkRequest = /** @class */ (function () {\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\n this.pendingXhr_ = null;\n this.backoffId_ = null;\n this.resolve_ = null;\n this.reject_ = null;\n this.canceled_ = false;\n this.appDelete_ = false;\n this.url_ = url;\n this.method_ = method;\n this.headers_ = headers;\n this.body_ = body;\n this.successCodes_ = successCodes.slice();\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\n this.callback_ = callback;\n this.errorCallback_ = errorCallback;\n this.progressCallback_ = progressCallback;\n this.timeout_ = timeout;\n this.pool_ = pool;\n var self = this;\n this.promise_ = make(function (resolve, reject) {\n self.resolve_ = resolve;\n self.reject_ = reject;\n self.start_();\n });\n }\n /**\n * Actually starts the retry loop.\n */\n NetworkRequest.prototype.start_ = function () {\n var self = this;\n function doTheRequest(backoffCallback, canceled) {\n if (canceled) {\n backoffCallback(false, new RequestEndStatus(false, null, true));\n return;\n }\n var xhr = self.pool_.createXhrIo();\n self.pendingXhr_ = xhr;\n function progressListener(progressEvent) {\n var loaded = progressEvent.loaded;\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\n if (self.progressCallback_ !== null) {\n self.progressCallback_(loaded, total);\n }\n }\n if (self.progressCallback_ !== null) {\n xhr.addUploadProgressListener(progressListener);\n }\n xhr\n .send(self.url_, self.method_, self.body_, self.headers_)\n .then(function (xhr) {\n if (self.progressCallback_ !== null) {\n xhr.removeUploadProgressListener(progressListener);\n }\n self.pendingXhr_ = null;\n xhr = xhr;\n var hitServer = xhr.getErrorCode() === ErrorCode.NO_ERROR;\n var status = xhr.getStatus();\n if (!hitServer || self.isRetryStatusCode_(status)) {\n var wasCanceled = xhr.getErrorCode() === ErrorCode.ABORT;\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\n return;\n }\n var successCode = array_contains(self.successCodes_, status);\n backoffCallback(true, new RequestEndStatus(successCode, xhr));\n });\n }\n /**\n * @param requestWentThrough True if the request eventually went\n * through, false if it hit the retry limit or was canceled.\n */\n function backoffDone(requestWentThrough, status) {\n var resolve = self.resolve_;\n var reject = self.reject_;\n var xhr = status.xhr;\n if (status.wasSuccessCode) {\n try {\n var result = self.callback_(xhr, xhr.getResponseText());\n if (isJustDef(result)) {\n resolve(result);\n }\n else {\n resolve();\n }\n }\n catch (e) {\n reject(e);\n }\n }\n else {\n if (xhr !== null) {\n var err = unknown();\n err.setServerResponseProp(xhr.getResponseText());\n if (self.errorCallback_) {\n reject(self.errorCallback_(xhr, err));\n }\n else {\n reject(err);\n }\n }\n else {\n if (status.canceled) {\n var err = self.appDelete_\n ? appDeleted()\n : error_canceled();\n reject(err);\n }\n else {\n var err = retryLimitExceeded();\n reject(err);\n }\n }\n }\n }\n if (this.canceled_) {\n backoffDone(false, new RequestEndStatus(false, null, true));\n }\n else {\n this.backoffId_ = start(doTheRequest, backoffDone, this.timeout_);\n }\n };\n /** @inheritDoc */\n NetworkRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n NetworkRequest.prototype.cancel = function (appDelete) {\n this.canceled_ = true;\n this.appDelete_ = appDelete || false;\n if (this.backoffId_ !== null) {\n stop(this.backoffId_);\n }\n if (this.pendingXhr_ !== null) {\n this.pendingXhr_.abort();\n }\n };\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\n // The codes for which to retry came from this page:\n // https://cloud.google.com/storage/docs/exponential-backoff\n var isFiveHundredCode = status >= 500 && status < 600;\n var extraRetryCodes = [\n // Request Timeout: web server didn't receive full request in time.\n 408,\n // Too Many Requests: you're getting rate-limited, basically.\n 429\n ];\n var isExtraRetryCode = array_contains(extraRetryCodes, status);\n var isRequestSpecificRetryCode = array_contains(this.additionalRetryCodes_, status);\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\n };\n return NetworkRequest;\n}());\n/**\n * A collection of information about the result of a network request.\n * @param opt_canceled Defaults to false.\n * @struct\n */\nvar RequestEndStatus = /** @class */ (function () {\n function RequestEndStatus(wasSuccessCode, xhr, opt_canceled) {\n this.wasSuccessCode = wasSuccessCode;\n this.xhr = xhr;\n this.canceled = !!opt_canceled;\n }\n return RequestEndStatus;\n}());\n\nfunction addAuthHeader_(headers, authToken) {\n if (authToken !== null && authToken.length > 0) {\n headers['Authorization'] = 'Firebase ' + authToken;\n }\n}\nfunction addVersionHeader_(headers) {\n var number = typeof esm[\"default\"] !== 'undefined' ? esm[\"default\"].SDK_VERSION : 'AppManager';\n headers['X-Firebase-Storage-Version'] = 'webjs/' + number;\n}\n/**\n * @template T\n */\nfunction makeRequest(requestInfo, authToken, pool) {\n var queryPart = makeQueryString(requestInfo.urlParams);\n var url = requestInfo.url + queryPart;\n var headers = clone(requestInfo.headers);\n addAuthHeader_(headers, authToken);\n addVersionHeader_(headers);\n return new request_NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\n}\n\n//# sourceMappingURL=request.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/src/service.js\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n/**\n * A service that provides firebaseStorage.Reference instances.\n * @param opt_url gs:// url to a custom Storage Bucket\n *\n * @struct\n */\nvar service_Service = /** @class */ (function () {\n function Service(app, pool, url) {\n this.bucket_ = null;\n function maker(authWrapper, loc) {\n return new reference_Reference(authWrapper, loc);\n }\n this.authWrapper_ = new authwrapper_AuthWrapper(app, maker, makeRequest, this, pool);\n this.app_ = app;\n if (url != null) {\n this.bucket_ = location_Location.makeFromBucketSpec(url);\n }\n else {\n var authWrapperBucket = this.authWrapper_.bucket();\n if (authWrapperBucket != null) {\n this.bucket_ = new location_Location(authWrapperBucket, '');\n }\n }\n this.internals_ = new service_ServiceInternals(this);\n }\n /**\n * Returns a firebaseStorage.Reference for the given path in the default\n * bucket.\n */\n Service.prototype.ref = function (path) {\n function validator(path) {\n if (/^[A-Za-z]+:\\/\\//.test(path)) {\n throw 'Expected child path but got a URL, use refFromURL instead.';\n }\n }\n validate('ref', [stringSpec(validator, true)], arguments);\n if (this.bucket_ == null) {\n throw new Error('No Storage Bucket defined in Firebase Options.');\n }\n var ref = new reference_Reference(this.authWrapper_, this.bucket_);\n if (path != null) {\n return ref.child(path);\n }\n else {\n return ref;\n }\n };\n /**\n * Returns a firebaseStorage.Reference object for the given absolute URL,\n * which must be a gs:// or http[s]:// URL.\n */\n Service.prototype.refFromURL = function (url) {\n function validator(p) {\n if (!/^[A-Za-z]+:\\/\\//.test(p)) {\n throw 'Expected full URL but got a child path, use ref instead.';\n }\n try {\n location_Location.makeFromUrl(p);\n }\n catch (e) {\n throw 'Expected valid full URL but got an invalid one.';\n }\n }\n validate('refFromURL', [stringSpec(validator, false)], arguments);\n return new reference_Reference(this.authWrapper_, url);\n };\n Object.defineProperty(Service.prototype, \"maxUploadRetryTime\", {\n get: function () {\n return this.authWrapper_.maxUploadRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxUploadRetryTime = function (time) {\n validate('setMaxUploadRetryTime', [nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxUploadRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"maxOperationRetryTime\", {\n get: function () {\n return this.authWrapper_.maxOperationRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxOperationRetryTime = function (time) {\n validate('setMaxOperationRetryTime', [nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxOperationRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"app\", {\n get: function () {\n return this.app_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Service.prototype, \"INTERNAL\", {\n get: function () {\n return this.internals_;\n },\n enumerable: true,\n configurable: true\n });\n return Service;\n}());\n\n/**\n * @struct\n */\nvar service_ServiceInternals = /** @class */ (function () {\n function ServiceInternals(service) {\n this.service_ = service;\n }\n /**\n * Called when the associated app is deleted.\n * @see {!fbs.AuthWrapper.prototype.deleteApp}\n */\n ServiceInternals.prototype.delete = function () {\n this.service_.authWrapper_.deleteApp();\n return promise_external_resolve(undefined);\n };\n return ServiceInternals;\n}());\n\n\n//# sourceMappingURL=service.js.map\n\n// CONCATENATED MODULE: ../storage/dist/esm/index.js\n/* harmony export (immutable) */ __webpack_exports__[\"registerStorage\"] = registerStorage;\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n/**\n * Type constant for Firebase Storage.\n */\nvar STORAGE_TYPE = 'storage';\nfunction factory(app, unused, opt_url) {\n return new service_Service(app, new xhriopool_XhrIoPool(), opt_url);\n}\nfunction registerStorage(instance) {\n var namespaceExports = {\n // no-inline\n TaskState: TaskState,\n TaskEvent: TaskEvent,\n StringFormat: StringFormat,\n Storage: service_Service,\n Reference: reference_Reference\n };\n instance.INTERNAL.registerService(STORAGE_TYPE, factory, namespaceExports, undefined, \n // Allow multiple storage instances per app.\n true);\n}\nregisterStorage(esm[\"default\"]);\n\n//# sourceMappingURL=index.js.map\n\n\n/***/ })\n\n},[118]);\n } catch(error) {\n throw new Error(\n 'Cannot instantiate firebase-storage.js - ' +\n 'be sure to load firebase-app.js first.'\n )\n }\n\n\n// WEBPACK FOOTER //\n// firebase-storage.js","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nrequire('@firebase/storage');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./storage/index.js\n// module id = 118\n// module chunks = 2","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { configOption } from './constants';\nvar FirebaseStorageError = /** @class */ (function () {\n function FirebaseStorageError(code, message) {\n this.code_ = prependCode(code);\n this.message_ = 'Firebase Storage: ' + message;\n this.serverResponse_ = null;\n this.name_ = 'FirebaseError';\n }\n FirebaseStorageError.prototype.codeProp = function () {\n return this.code;\n };\n FirebaseStorageError.prototype.codeEquals = function (code) {\n return prependCode(code) === this.codeProp();\n };\n FirebaseStorageError.prototype.serverResponseProp = function () {\n return this.serverResponse_;\n };\n FirebaseStorageError.prototype.setServerResponseProp = function (serverResponse) {\n this.serverResponse_ = serverResponse;\n };\n Object.defineProperty(FirebaseStorageError.prototype, \"name\", {\n get: function () {\n return this.name_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"code\", {\n get: function () {\n return this.code_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"message\", {\n get: function () {\n return this.message_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\n get: function () {\n return this.serverResponse_;\n },\n enumerable: true,\n configurable: true\n });\n return FirebaseStorageError;\n}());\nexport { FirebaseStorageError };\nexport var errors = {};\nexport var Code = {\n // Shared between all platforms\n UNKNOWN: 'unknown',\n OBJECT_NOT_FOUND: 'object-not-found',\n BUCKET_NOT_FOUND: 'bucket-not-found',\n PROJECT_NOT_FOUND: 'project-not-found',\n QUOTA_EXCEEDED: 'quota-exceeded',\n UNAUTHENTICATED: 'unauthenticated',\n UNAUTHORIZED: 'unauthorized',\n RETRY_LIMIT_EXCEEDED: 'retry-limit-exceeded',\n INVALID_CHECKSUM: 'invalid-checksum',\n CANCELED: 'canceled',\n // JS specific\n INVALID_EVENT_NAME: 'invalid-event-name',\n INVALID_URL: 'invalid-url',\n INVALID_DEFAULT_BUCKET: 'invalid-default-bucket',\n NO_DEFAULT_BUCKET: 'no-default-bucket',\n CANNOT_SLICE_BLOB: 'cannot-slice-blob',\n SERVER_FILE_WRONG_SIZE: 'server-file-wrong-size',\n NO_DOWNLOAD_URL: 'no-download-url',\n INVALID_ARGUMENT: 'invalid-argument',\n INVALID_ARGUMENT_COUNT: 'invalid-argument-count',\n APP_DELETED: 'app-deleted',\n INVALID_ROOT_OPERATION: 'invalid-root-operation',\n INVALID_FORMAT: 'invalid-format',\n INTERNAL_ERROR: 'internal-error'\n};\nexport function prependCode(code) {\n return 'storage/' + code;\n}\nexport function unknown() {\n var message = 'An unknown error occurred, please check the error payload for ' +\n 'server response.';\n return new FirebaseStorageError(Code.UNKNOWN, message);\n}\nexport function objectNotFound(path) {\n return new FirebaseStorageError(Code.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\n}\nexport function bucketNotFound(bucket) {\n return new FirebaseStorageError(Code.BUCKET_NOT_FOUND, \"Bucket '\" + bucket + \"' does not exist.\");\n}\nexport function projectNotFound(project) {\n return new FirebaseStorageError(Code.PROJECT_NOT_FOUND, \"Project '\" + project + \"' does not exist.\");\n}\nexport function quotaExceeded(bucket) {\n return new FirebaseStorageError(Code.QUOTA_EXCEEDED, \"Quota for bucket '\" +\n bucket +\n \"' exceeded, please view quota on \" +\n 'https://firebase.google.com/pricing/.');\n}\nexport function unauthenticated() {\n var message = 'User is not authenticated, please authenticate using Firebase ' +\n 'Authentication and try again.';\n return new FirebaseStorageError(Code.UNAUTHENTICATED, message);\n}\nexport function unauthorized(path) {\n return new FirebaseStorageError(Code.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\n}\nexport function retryLimitExceeded() {\n return new FirebaseStorageError(Code.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\n}\nexport function invalidChecksum(path, checksum, calculated) {\n return new FirebaseStorageError(Code.INVALID_CHECKSUM, \"Uploaded/downloaded object '\" +\n path +\n \"' has checksum '\" +\n checksum +\n \"' which does not match '\" +\n calculated +\n \"'. Please retry the upload/download.\");\n}\nexport function canceled() {\n return new FirebaseStorageError(Code.CANCELED, 'User canceled the upload/download.');\n}\nexport function invalidEventName(name) {\n return new FirebaseStorageError(Code.INVALID_EVENT_NAME, \"Invalid event name '\" + name + \"'.\");\n}\nexport function invalidUrl(url) {\n return new FirebaseStorageError(Code.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\n}\nexport function invalidDefaultBucket(bucket) {\n return new FirebaseStorageError(Code.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\n}\nexport function noDefaultBucket() {\n return new FirebaseStorageError(Code.NO_DEFAULT_BUCKET, 'No default bucket ' +\n \"found. Did you set the '\" +\n configOption +\n \"' property when initializing the app?\");\n}\nexport function cannotSliceBlob() {\n return new FirebaseStorageError(Code.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\n}\nexport function serverFileWrongSize() {\n return new FirebaseStorageError(Code.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\n}\nexport function noDownloadURL() {\n return new FirebaseStorageError(Code.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\n}\nexport function invalidArgument(index, fnName, message) {\n return new FirebaseStorageError(Code.INVALID_ARGUMENT, 'Invalid argument in `' + fnName + '` at index ' + index + ': ' + message);\n}\nexport function invalidArgumentCount(argMin, argMax, fnName, real) {\n var countPart;\n var plural;\n if (argMin === argMax) {\n countPart = argMin;\n plural = argMin === 1 ? 'argument' : 'arguments';\n }\n else {\n countPart = 'between ' + argMin + ' and ' + argMax;\n plural = 'arguments';\n }\n return new FirebaseStorageError(Code.INVALID_ARGUMENT_COUNT, 'Invalid argument count in `' +\n fnName +\n '`: Expected ' +\n countPart +\n ' ' +\n plural +\n ', received ' +\n real +\n '.');\n}\nexport function appDeleted() {\n return new FirebaseStorageError(Code.APP_DELETED, 'The Firebase app was deleted.');\n}\n/**\n * @param name The name of the operation that was invalid.\n */\nexport function invalidRootOperation(name) {\n return new FirebaseStorageError(Code.INVALID_ROOT_OPERATION, \"The operation '\" +\n name +\n \"' cannot be performed on a root reference, create a non-root \" +\n \"reference using child, such as .child('file.png').\");\n}\n/**\n * @param format The format that was not valid.\n * @param message A message describing the format violation.\n */\nexport function invalidFormat(format, message) {\n return new FirebaseStorageError(Code.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\n}\n/**\n * @param message A message describing the internal error.\n */\nexport function internalError(message) {\n throw new FirebaseStorageError(Code.INTERNAL_ERROR, 'Internal error: ' + message);\n}\n\n//# sourceMappingURL=error.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/error.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nexport var StringFormat = {\n RAW: 'raw',\n BASE64: 'base64',\n BASE64URL: 'base64url',\n DATA_URL: 'data_url'\n};\nexport function formatValidator(stringFormat) {\n switch (stringFormat) {\n case StringFormat.RAW:\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n case StringFormat.DATA_URL:\n return;\n default:\n throw 'Expected one of the event types: [' +\n StringFormat.RAW +\n ', ' +\n StringFormat.BASE64 +\n ', ' +\n StringFormat.BASE64URL +\n ', ' +\n StringFormat.DATA_URL +\n '].';\n }\n}\n/**\n * @struct\n */\nvar StringData = /** @class */ (function () {\n function StringData(data, opt_contentType) {\n this.data = data;\n this.contentType = opt_contentType || null;\n }\n return StringData;\n}());\nexport { StringData };\nexport function dataFromString(format, string) {\n switch (format) {\n case StringFormat.RAW:\n return new StringData(utf8Bytes_(string));\n case StringFormat.BASE64:\n case StringFormat.BASE64URL:\n return new StringData(base64Bytes_(format, string));\n case StringFormat.DATA_URL:\n return new StringData(dataURLBytes_(string), dataURLContentType_(string));\n }\n // assert(false);\n throw errorsExports.unknown();\n}\nexport function utf8Bytes_(string) {\n var b = [];\n for (var i = 0; i < string.length; i++) {\n var c = string.charCodeAt(i);\n if (c <= 127) {\n b.push(c);\n }\n else {\n if (c <= 2047) {\n b.push(192 | (c >> 6), 128 | (c & 63));\n }\n else {\n if ((c & 64512) == 55296) {\n // The start of a surrogate pair.\n var valid = i < string.length - 1 &&\n (string.charCodeAt(i + 1) & 64512) == 56320;\n if (!valid) {\n // The second surrogate wasn't there.\n b.push(239, 191, 189);\n }\n else {\n var hi = c;\n var lo = string.charCodeAt(++i);\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n else {\n if ((c & 64512) == 56320) {\n // Invalid low surrogate.\n b.push(239, 191, 189);\n }\n else {\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\n }\n }\n }\n }\n }\n return new Uint8Array(b);\n}\nexport function percentEncodedBytes_(string) {\n var decoded;\n try {\n decoded = decodeURIComponent(string);\n }\n catch (e) {\n throw errorsExports.invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\n }\n return utf8Bytes_(decoded);\n}\nexport function base64Bytes_(format, string) {\n switch (format) {\n case StringFormat.BASE64: {\n var hasMinus = string.indexOf('-') !== -1;\n var hasUnder = string.indexOf('_') !== -1;\n if (hasMinus || hasUnder) {\n var invalidChar = hasMinus ? '-' : '_';\n throw errorsExports.invalidFormat(format, \"Invalid character '\" +\n invalidChar +\n \"' found: is it base64url encoded?\");\n }\n break;\n }\n case StringFormat.BASE64URL: {\n var hasPlus = string.indexOf('+') !== -1;\n var hasSlash = string.indexOf('/') !== -1;\n if (hasPlus || hasSlash) {\n var invalidChar = hasPlus ? '+' : '/';\n throw errorsExports.invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\n }\n string = string.replace(/-/g, '+').replace(/_/g, '/');\n break;\n }\n }\n var bytes;\n try {\n bytes = atob(string);\n }\n catch (e) {\n throw errorsExports.invalidFormat(format, 'Invalid character found');\n }\n var array = new Uint8Array(bytes.length);\n for (var i = 0; i < bytes.length; i++) {\n array[i] = bytes.charCodeAt(i);\n }\n return array;\n}\n/**\n * @struct\n */\nvar DataURLParts = /** @class */ (function () {\n function DataURLParts(dataURL) {\n this.base64 = false;\n this.contentType = null;\n var matches = dataURL.match(/^data:([^,]+)?,/);\n if (matches === null) {\n throw errorsExports.invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\n }\n var middle = matches[1] || null;\n if (middle != null) {\n this.base64 = endsWith(middle, ';base64');\n this.contentType = this.base64\n ? middle.substring(0, middle.length - ';base64'.length)\n : middle;\n }\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\n }\n return DataURLParts;\n}());\nexport function dataURLBytes_(string) {\n var parts = new DataURLParts(string);\n if (parts.base64) {\n return base64Bytes_(StringFormat.BASE64, parts.rest);\n }\n else {\n return percentEncodedBytes_(parts.rest);\n }\n}\nexport function dataURLContentType_(string) {\n var parts = new DataURLParts(string);\n return parts.contentType;\n}\nfunction endsWith(s, end) {\n var longEnough = s.length >= end.length;\n if (!longEnough) {\n return false;\n }\n return s.substring(s.length - end.length) === end;\n}\n\n//# sourceMappingURL=string.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/string.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var TaskEvent = {\n /** Triggered whenever the task changes or progress is updated. */\n STATE_CHANGED: 'state_changed'\n};\nexport var InternalTaskState = {\n RUNNING: 'running',\n PAUSING: 'pausing',\n PAUSED: 'paused',\n SUCCESS: 'success',\n CANCELING: 'canceling',\n CANCELED: 'canceled',\n ERROR: 'error'\n};\nexport var TaskState = {\n /** The task is currently transferring data. */\n RUNNING: 'running',\n /** The task was paused by the user. */\n PAUSED: 'paused',\n /** The task completed successfully. */\n SUCCESS: 'success',\n /** The task was canceled. */\n CANCELED: 'canceled',\n /** The task failed with an error. */\n ERROR: 'error'\n};\nexport function taskStateFromInternalTaskState(state) {\n switch (state) {\n case InternalTaskState.RUNNING:\n case InternalTaskState.PAUSING:\n case InternalTaskState.CANCELING:\n return TaskState.RUNNING;\n case InternalTaskState.PAUSED:\n return TaskState.PAUSED;\n case InternalTaskState.SUCCESS:\n return TaskState.SUCCESS;\n case InternalTaskState.CANCELED:\n return TaskState.CANCELED;\n case InternalTaskState.ERROR:\n return TaskState.ERROR;\n default:\n // TODO(andysoto): assert(false);\n return TaskState.ERROR;\n }\n}\n\n//# sourceMappingURL=taskenums.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/taskenums.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains methods for working with objects.\n */\nexport function contains(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nexport function forEach(obj, f) {\n for (var key in obj) {\n if (contains(obj, key)) {\n f(key, obj[key]);\n }\n }\n}\nexport function clone(obj) {\n if (obj == null) {\n return {};\n }\n var c = {};\n forEach(obj, function (key, val) {\n c[key] = val;\n });\n return c;\n}\n\n//# sourceMappingURL=object.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/object.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Implements the promise abstraction interface for external\n * (public SDK) packaging, which just passes through to the firebase-app impl.\n */\n/**\n * @template T\n * @param {function((function(T): void),\n * (function(!Error): void))} resolver\n */\nexport function make(resolver) {\n return new Promise(resolver);\n}\n/**\n * @template T\n */\nexport function resolve(value) {\n return Promise.resolve(value);\n}\nexport function reject(error) {\n return Promise.reject(error);\n}\n\n//# sourceMappingURL=promise_external.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/promise_external.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @return False if the object is undefined or null, true otherwise.\n */\nexport function isDef(p) {\n return p != null;\n}\nexport function isJustDef(p) {\n return p !== void 0;\n}\nexport function isFunction(p) {\n return typeof p === 'function';\n}\nexport function isObject(p) {\n return typeof p === 'object';\n}\nexport function isNonNullObject(p) {\n return isObject(p) && p !== null;\n}\nexport function isNonArrayObject(p) {\n return isObject(p) && !Array.isArray(p);\n}\nexport function isString(p) {\n return typeof p === 'string' || p instanceof String;\n}\nexport function isNumber(p) {\n return typeof p === 'number' || p instanceof Number;\n}\nexport function isNativeBlob(p) {\n return isNativeBlobDefined() && p instanceof Blob;\n}\nexport function isNativeBlobDefined() {\n return typeof Blob !== 'undefined';\n}\n\n//# sourceMappingURL=type.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/type.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as type from './type';\n/**\n * Returns the Object resulting from parsing the given JSON, or null if the\n * given string does not represent a JSON object.\n */\nexport function jsonObjectOrNull(s) {\n var obj;\n try {\n obj = JSON.parse(s);\n }\n catch (e) {\n return null;\n }\n if (type.isNonArrayObject(obj)) {\n return obj;\n }\n else {\n return null;\n }\n}\n\n//# sourceMappingURL=json.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/json.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Contains helper methods for manipulating paths.\n */\n/**\n * @return Null if the path is already at the root.\n */\nexport function parent(path) {\n if (path.length == 0) {\n return null;\n }\n var index = path.lastIndexOf('/');\n if (index === -1) {\n return '';\n }\n var newPath = path.slice(0, index);\n return newPath;\n}\nexport function child(path, childPath) {\n var canonicalChildPath = childPath\n .split('/')\n .filter(function (component) {\n return component.length > 0;\n })\n .join('/');\n if (path.length === 0) {\n return canonicalChildPath;\n }\n else {\n return path + '/' + canonicalChildPath;\n }\n}\n/**\n * Returns the last component of a path.\n * '/foo/bar' -> 'bar'\n * '/foo/bar/baz/' -> 'baz/'\n * '/a' -> 'a'\n */\nexport function lastComponent(path) {\n var index = path.lastIndexOf('/', path.length - 2);\n if (index === -1) {\n return path;\n }\n else {\n return path.slice(index + 1);\n }\n}\n\n//# sourceMappingURL=path.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/path.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functions to create and manipulate URLs for the server API.\n */\nimport * as constants from './constants';\nimport * as object from './object';\nexport function makeNormalUrl(urlPart) {\n return constants.domainBase + constants.apiBaseUrl + urlPart;\n}\nexport function makeDownloadUrl(urlPart) {\n return constants.downloadBase + constants.apiBaseUrl + urlPart;\n}\nexport function makeUploadUrl(urlPart) {\n return constants.domainBase + constants.apiUploadBaseUrl + urlPart;\n}\nexport function makeQueryString(params) {\n var encode = encodeURIComponent;\n var queryPart = '?';\n object.forEach(params, function (key, val) {\n var nextPart = encode(key) + '=' + encode(val);\n queryPart = queryPart + nextPart + '&';\n });\n // Chop off the extra '&' or '?' on the end\n queryPart = queryPart.slice(0, -1);\n return queryPart;\n}\n\n//# sourceMappingURL=url.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/url.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as json from './json';\nimport { Location } from './location';\nimport * as path from './path';\nimport * as type from './type';\nimport * as UrlUtils from './url';\nexport function noXform_(metadata, value) {\n return value;\n}\n/**\n * @struct\n */\nvar Mapping = /** @class */ (function () {\n function Mapping(server, opt_local, opt_writable, opt_xform) {\n this.server = server;\n this.local = opt_local || server;\n this.writable = !!opt_writable;\n this.xform = opt_xform || noXform_;\n }\n return Mapping;\n}());\nexport { Mapping };\nvar mappings_ = null;\nexport function xformPath(fullPath) {\n var valid = type.isString(fullPath);\n if (!valid || fullPath.length < 2) {\n return fullPath;\n }\n else {\n fullPath = fullPath;\n return path.lastComponent(fullPath);\n }\n}\nexport function getMappings() {\n if (mappings_) {\n return mappings_;\n }\n var mappings = [];\n mappings.push(new Mapping('bucket'));\n mappings.push(new Mapping('generation'));\n mappings.push(new Mapping('metageneration'));\n mappings.push(new Mapping('name', 'fullPath', true));\n function mappingsXformPath(metadata, fullPath) {\n return xformPath(fullPath);\n }\n var nameMapping = new Mapping('name');\n nameMapping.xform = mappingsXformPath;\n mappings.push(nameMapping);\n /**\n * Coerces the second param to a number, if it is defined.\n */\n function xformSize(metadata, size) {\n if (type.isDef(size)) {\n return +size;\n }\n else {\n return size;\n }\n }\n var sizeMapping = new Mapping('size');\n sizeMapping.xform = xformSize;\n mappings.push(sizeMapping);\n mappings.push(new Mapping('timeCreated'));\n mappings.push(new Mapping('updated'));\n mappings.push(new Mapping('md5Hash', null, true));\n mappings.push(new Mapping('cacheControl', null, true));\n mappings.push(new Mapping('contentDisposition', null, true));\n mappings.push(new Mapping('contentEncoding', null, true));\n mappings.push(new Mapping('contentLanguage', null, true));\n mappings.push(new Mapping('contentType', null, true));\n mappings.push(new Mapping('metadata', 'customMetadata', true));\n /**\n * Transforms a comma-separated string of tokens into a list of download\n * URLs.\n */\n function xformTokens(metadata, tokens) {\n var valid = type.isString(tokens) && tokens.length > 0;\n if (!valid) {\n // This can happen if objects are uploaded through GCS and retrieved\n // through list, so we don't want to throw an Error.\n return [];\n }\n var encode = encodeURIComponent;\n var tokensList = tokens.split(',');\n var urls = tokensList.map(function (token) {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\n var base = UrlUtils.makeDownloadUrl(urlPart);\n var queryString = UrlUtils.makeQueryString({\n alt: 'media',\n token: token\n });\n return base + queryString;\n });\n return urls;\n }\n mappings.push(new Mapping('downloadTokens', 'downloadURLs', false, xformTokens));\n mappings_ = mappings;\n return mappings_;\n}\nexport function addRef(metadata, authWrapper) {\n function generateRef() {\n var bucket = metadata['bucket'];\n var path = metadata['fullPath'];\n var loc = new Location(bucket, path);\n return authWrapper.makeStorageReference(loc);\n }\n Object.defineProperty(metadata, 'ref', { get: generateRef });\n}\nexport function fromResource(authWrapper, resource, mappings) {\n var metadata = {};\n metadata['type'] = 'file';\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\n }\n addRef(metadata, authWrapper);\n return metadata;\n}\nexport function fromResourceString(authWrapper, resourceString, mappings) {\n var obj = json.jsonObjectOrNull(resourceString);\n if (obj === null) {\n return null;\n }\n var resource = obj;\n return fromResource(authWrapper, resource, mappings);\n}\nexport function toResourceString(metadata, mappings) {\n var resource = {};\n var len = mappings.length;\n for (var i = 0; i < len; i++) {\n var mapping = mappings[i];\n if (mapping.writable) {\n resource[mapping.server] = metadata[mapping.local];\n }\n }\n return JSON.stringify(resource);\n}\nexport function metadataValidator(p) {\n var validType = p && type.isObject(p);\n if (!validType) {\n throw 'Expected Metadata object.';\n }\n for (var key in p) {\n var val = p[key];\n if (key === 'customMetadata') {\n if (!type.isObject(val)) {\n throw 'Expected object for \\'customMetadata\\' mapping.';\n }\n }\n else {\n if (type.isNonNullObject(val)) {\n throw \"Mapping for '\" + key + \"' cannot be an object.\";\n }\n }\n }\n}\n\n//# sourceMappingURL=metadata.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/metadata.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nimport * as MetadataUtils from './metadata';\nimport * as type from './type';\n/**\n * @param name Name of the function.\n * @param specs Argument specs.\n * @param passed The actual arguments passed to the function.\n * @throws {fbs.Error} If the arguments are invalid.\n */\nexport function validate(name, specs, passed) {\n var minArgs = specs.length;\n var maxArgs = specs.length;\n for (var i = 0; i < specs.length; i++) {\n if (specs[i].optional) {\n minArgs = i;\n break;\n }\n }\n var validLength = minArgs <= passed.length && passed.length <= maxArgs;\n if (!validLength) {\n throw errorsExports.invalidArgumentCount(minArgs, maxArgs, name, passed.length);\n }\n for (var i = 0; i < passed.length; i++) {\n try {\n specs[i].validator(passed[i]);\n }\n catch (e) {\n if (e instanceof Error) {\n throw errorsExports.invalidArgument(i, name, e.message);\n }\n else {\n throw errorsExports.invalidArgument(i, name, e);\n }\n }\n }\n}\n/**\n * @struct\n */\nvar ArgSpec = /** @class */ (function () {\n function ArgSpec(validator, opt_optional) {\n var self = this;\n this.validator = function (p) {\n if (self.optional && !type.isJustDef(p)) {\n return;\n }\n validator(p);\n };\n this.optional = !!opt_optional;\n }\n return ArgSpec;\n}());\nexport { ArgSpec };\nexport function and_(v1, v2) {\n return function (p) {\n v1(p);\n v2(p);\n };\n}\nexport function stringSpec(opt_validator, opt_optional) {\n function stringValidator(p) {\n if (!type.isString(p)) {\n throw 'Expected string.';\n }\n }\n var validator;\n if (opt_validator) {\n validator = and_(stringValidator, opt_validator);\n }\n else {\n validator = stringValidator;\n }\n return new ArgSpec(validator, opt_optional);\n}\nexport function uploadDataSpec() {\n function validator(p) {\n var valid = p instanceof Uint8Array ||\n p instanceof ArrayBuffer ||\n (type.isNativeBlobDefined() && p instanceof Blob);\n if (!valid) {\n throw 'Expected Blob or File.';\n }\n }\n return new ArgSpec(validator);\n}\nexport function metadataSpec(opt_optional) {\n return new ArgSpec(MetadataUtils.metadataValidator, opt_optional);\n}\nexport function nonNegativeNumberSpec() {\n function validator(p) {\n var valid = type.isNumber(p) && p >= 0;\n if (!valid) {\n throw 'Expected a number 0 or greater.';\n }\n }\n return new ArgSpec(validator);\n}\nexport function looseObjectSpec(opt_validator, opt_optional) {\n function validator(p) {\n var isLooseObject = p === null || (type.isDef(p) && p instanceof Object);\n if (!isLooseObject) {\n throw 'Expected an Object.';\n }\n if (opt_validator !== undefined && opt_validator !== null) {\n opt_validator(p);\n }\n }\n return new ArgSpec(validator, opt_optional);\n}\nexport function nullFunctionSpec(opt_optional) {\n function validator(p) {\n var valid = p === null || type.isFunction(p);\n if (!valid) {\n throw 'Expected a Function.';\n }\n }\n return new ArgSpec(validator, opt_optional);\n}\n\n//# sourceMappingURL=args.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/args.js\n// module id = null\n// module chunks = ","import * as type from './type';\nfunction getBlobBuilder() {\n if (typeof BlobBuilder !== 'undefined') {\n return BlobBuilder;\n }\n else if (typeof WebKitBlobBuilder !== 'undefined') {\n return WebKitBlobBuilder;\n }\n else {\n return undefined;\n }\n}\n/**\n * Concatenates one or more values together and converts them to a Blob.\n *\n * @param var_args The values that will make up the resulting blob.\n * @return The blob.\n */\nexport function getBlob() {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n var BlobBuilder = getBlobBuilder();\n if (BlobBuilder !== undefined) {\n var bb = new BlobBuilder();\n for (var i = 0; i < var_args.length; i++) {\n bb.append(var_args[i]);\n }\n return bb.getBlob();\n }\n else {\n if (type.isNativeBlobDefined()) {\n return new Blob(var_args);\n }\n else {\n throw Error(\"This browser doesn't seem to support creating Blobs\");\n }\n }\n}\n/**\n * Slices the blob. The returned blob contains data from the start byte\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\n *\n * @param blob The blob to be sliced.\n * @param start Index of the starting byte.\n * @param end Index of the ending byte.\n * @return The blob slice or null if not supported.\n */\nexport function sliceBlob(blob, start, end) {\n if (blob.webkitSlice) {\n return blob.webkitSlice(start, end);\n }\n else if (blob.mozSlice) {\n return blob.mozSlice(start, end);\n }\n else if (blob.slice) {\n return blob.slice(start, end);\n }\n return null;\n}\n\n//# sourceMappingURL=fs.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/fs.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns true if the object is contained in the array (compared with ===).\n * @template T\n */\nexport function contains(array, elem) {\n return array.indexOf(elem) !== -1;\n}\n/**\n * Returns a shallow copy of the array or array-like object (e.g. arguments).\n * @template T\n */\nexport function clone(arraylike) {\n return Array.prototype.slice.call(arraylike);\n}\n/**\n * Removes the given element from the given array, if it is contained.\n * Directly modifies the passed-in array.\n * @template T\n */\nexport function remove(array, elem) {\n var i = array.indexOf(elem);\n if (i !== -1) {\n array.splice(i, 1);\n }\n}\n\n//# sourceMappingURL=array.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/array.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as array from './array';\nimport { FbsBlob } from './blob';\nimport * as errorsExports from './error';\nimport * as MetadataUtils from './metadata';\nimport * as object from './object';\nimport { RequestInfo } from './requestinfo';\nimport * as type from './type';\nimport * as UrlUtils from './url';\n/**\n * Throws the UNKNOWN FirebaseStorageError if cndn is false.\n */\nexport function handlerCheck(cndn) {\n if (!cndn) {\n throw errorsExports.unknown();\n }\n}\nexport function metadataHandler(authWrapper, mappings) {\n function handler(xhr, text) {\n var metadata = MetadataUtils.fromResourceString(authWrapper, text, mappings);\n handlerCheck(metadata !== null);\n return metadata;\n }\n return handler;\n}\nexport function sharedErrorHandler(location) {\n function errorHandler(xhr, err) {\n var newErr;\n if (xhr.getStatus() === 401) {\n newErr = errorsExports.unauthenticated();\n }\n else {\n if (xhr.getStatus() === 402) {\n newErr = errorsExports.quotaExceeded(location.bucket);\n }\n else {\n if (xhr.getStatus() === 403) {\n newErr = errorsExports.unauthorized(location.path);\n }\n else {\n newErr = err;\n }\n }\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nexport function objectErrorHandler(location) {\n var shared = sharedErrorHandler(location);\n function errorHandler(xhr, err) {\n var newErr = shared(xhr, err);\n if (xhr.getStatus() === 404) {\n newErr = errorsExports.objectNotFound(location.path);\n }\n newErr.setServerResponseProp(err.serverResponseProp());\n return newErr;\n }\n return errorHandler;\n}\nexport function getMetadata(authWrapper, location, mappings) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'GET';\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function updateMetadata(authWrapper, location, metadata, mappings) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'PATCH';\n var body = MetadataUtils.toResourceString(metadata, mappings);\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\n var timeout = authWrapper.maxOperationRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function deleteObject(authWrapper, location) {\n var urlPart = location.fullServerUrl();\n var url = UrlUtils.makeNormalUrl(urlPart);\n var method = 'DELETE';\n var timeout = authWrapper.maxOperationRetryTime();\n function handler(xhr, text) { }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.successCodes = [200, 204];\n requestInfo.errorHandler = objectErrorHandler(location);\n return requestInfo;\n}\nexport function determineContentType_(metadata, blob) {\n return ((metadata && metadata['contentType']) ||\n (blob && blob.type()) ||\n 'application/octet-stream');\n}\nexport function metadataForUpload_(location, blob, opt_metadata) {\n var metadata = object.clone(opt_metadata);\n metadata['fullPath'] = location.path;\n metadata['size'] = blob.size();\n if (!metadata['contentType']) {\n metadata['contentType'] = determineContentType_(null, blob);\n }\n return metadata;\n}\nexport function multipartUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var headers = {\n 'X-Goog-Upload-Protocol': 'multipart'\n };\n function genBoundary() {\n var str = '';\n for (var i = 0; i < 2; i++) {\n str =\n str +\n Math.random()\n .toString()\n .slice(2);\n }\n return str;\n }\n var boundary = genBoundary();\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var metadataString = MetadataUtils.toResourceString(metadata, mappings);\n var preBlobPart = '--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\n metadataString +\n '\\r\\n--' +\n boundary +\n '\\r\\n' +\n 'Content-Type: ' +\n metadata['contentType'] +\n '\\r\\n\\r\\n';\n var postBlobPart = '\\r\\n--' + boundary + '--';\n var body = FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\n if (body === null) {\n throw errorsExports.cannotSliceBlob();\n }\n var urlParams = { name: metadata['fullPath'] };\n var url = UrlUtils.makeUploadUrl(urlPart);\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param current The number of bytes that have been uploaded so far.\n * @param total The total number of bytes in the upload.\n * @param opt_finalized True if the server has finished the upload.\n * @param opt_metadata The upload metadata, should\n * only be passed if opt_finalized is true.\n * @struct\n */\nvar ResumableUploadStatus = /** @class */ (function () {\n function ResumableUploadStatus(current, total, finalized, metadata) {\n this.current = current;\n this.total = total;\n this.finalized = !!finalized;\n this.metadata = metadata || null;\n }\n return ResumableUploadStatus;\n}());\nexport { ResumableUploadStatus };\nexport function checkResumeHeader_(xhr, opt_allowed) {\n var status;\n try {\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\n }\n catch (e) {\n handlerCheck(false);\n }\n var allowed = opt_allowed || ['active'];\n handlerCheck(array.contains(allowed, status));\n return status;\n}\nexport function createResumableUpload(authWrapper, location, mappings, blob, opt_metadata) {\n var urlPart = location.bucketOnlyServerUrl();\n var metadata = metadataForUpload_(location, blob, opt_metadata);\n var urlParams = { name: metadata['fullPath'] };\n var url = UrlUtils.makeUploadUrl(urlPart);\n var method = 'POST';\n var headers = {\n 'X-Goog-Upload-Protocol': 'resumable',\n 'X-Goog-Upload-Command': 'start',\n 'X-Goog-Upload-Header-Content-Length': blob.size(),\n 'X-Goog-Upload-Header-Content-Type': metadata['contentType'],\n 'Content-Type': 'application/json; charset=utf-8'\n };\n var body = MetadataUtils.toResourceString(metadata, mappings);\n var timeout = authWrapper.maxUploadRetryTime();\n function handler(xhr, text) {\n checkResumeHeader_(xhr);\n var url;\n try {\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\n }\n catch (e) {\n handlerCheck(false);\n }\n handlerCheck(type.isString(url));\n return url;\n }\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.urlParams = urlParams;\n requestInfo.headers = headers;\n requestInfo.body = body;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n */\nexport function getResumableUploadStatus(authWrapper, location, url, blob) {\n var headers = { 'X-Goog-Upload-Command': 'query' };\n function handler(xhr, text) {\n var status = checkResumeHeader_(xhr, ['active', 'final']);\n var sizeString;\n try {\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\n }\n catch (e) {\n handlerCheck(false);\n }\n var size = parseInt(sizeString, 10);\n handlerCheck(!isNaN(size));\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n/**\n * Any uploads via the resumable upload API must transfer a number of bytes\n * that is a multiple of this number.\n */\nexport var resumableUploadChunkSize = 256 * 1024;\n/**\n * @param url From a call to fbs.requests.createResumableUpload.\n * @param chunkSize Number of bytes to upload.\n * @param opt_status The previous status.\n * If not passed or null, we start from the beginning.\n * @throws fbs.Error If the upload is already complete, the passed in status\n * has a final size inconsistent with the blob, or the blob cannot be sliced\n * for upload.\n */\nexport function continueResumableUpload(location, authWrapper, url, blob, chunkSize, mappings, opt_status, opt_progressCallback) {\n // TODO(andysoto): standardize on internal asserts\n // assert(!(opt_status && opt_status.finalized));\n var status = new ResumableUploadStatus(0, 0);\n if (opt_status) {\n status.current = opt_status.current;\n status.total = opt_status.total;\n }\n else {\n status.current = 0;\n status.total = blob.size();\n }\n if (blob.size() !== status.total) {\n throw errorsExports.serverFileWrongSize();\n }\n var bytesLeft = status.total - status.current;\n var bytesToUpload = bytesLeft;\n if (chunkSize > 0) {\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\n }\n var startByte = status.current;\n var endByte = startByte + bytesToUpload;\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\n var headers = {\n 'X-Goog-Upload-Command': uploadCommand,\n 'X-Goog-Upload-Offset': status.current\n };\n var body = blob.slice(startByte, endByte);\n if (body === null) {\n throw errorsExports.cannotSliceBlob();\n }\n function handler(xhr, text) {\n // TODO(andysoto): Verify the MD5 of each uploaded range:\n // the 'x-range-md5' header comes back with status code 308 responses.\n // We'll only be able to bail out though, because you can't re-upload a\n // range that you previously uploaded.\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\n var newCurrent = status.current + bytesToUpload;\n var size = blob.size();\n var metadata;\n if (uploadStatus === 'final') {\n metadata = metadataHandler(authWrapper, mappings)(xhr, text);\n }\n else {\n metadata = null;\n }\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\n }\n var method = 'POST';\n var timeout = authWrapper.maxUploadRetryTime();\n var requestInfo = new RequestInfo(url, method, handler, timeout);\n requestInfo.headers = headers;\n requestInfo.body = body.uploadData();\n requestInfo.progressCallback = opt_progressCallback || null;\n requestInfo.errorHandler = sharedErrorHandler(location);\n return requestInfo;\n}\n\n//# sourceMappingURL=requests.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requests.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Method for invoking a callback asynchronously.\n */\nimport * as promiseimpl from './promise_external';\n/**\n * Returns a function that invokes f with its arguments asynchronously as a\n * microtask, i.e. as soon as possible after the current script returns back\n * into browser code.\n */\nexport function async(f) {\n return function () {\n var argsToForward = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n argsToForward[_i] = arguments[_i];\n }\n promiseimpl.resolve(true).then(function () {\n f.apply(null, argsToForward);\n });\n };\n}\n\n//# sourceMappingURL=async.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/async.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @param f May be invoked\n * before the function returns.\n * @param callback Get all the arguments passed to the function\n * passed to f, including the initial boolean.\n */\nexport function start(f, callback, timeout) {\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\n // type instead of a bunch of functions with state shared in the closure)\n var waitSeconds = 1;\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\n var timeoutId = null;\n var hitTimeout = false;\n var cancelState = 0;\n function canceled() {\n return cancelState === 2;\n }\n var triggeredCallback = false;\n function triggerCallback() {\n if (!triggeredCallback) {\n triggeredCallback = true;\n callback.apply(null, arguments);\n }\n }\n function callWithDelay(millis) {\n timeoutId = setTimeout(function () {\n timeoutId = null;\n f(handler, canceled());\n }, millis);\n }\n function handler(success) {\n var var_args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n var_args[_i - 1] = arguments[_i];\n }\n if (triggeredCallback) {\n return;\n }\n if (success) {\n triggerCallback.apply(null, arguments);\n return;\n }\n var mustStop = canceled() || hitTimeout;\n if (mustStop) {\n triggerCallback.apply(null, arguments);\n return;\n }\n if (waitSeconds < 64) {\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\n waitSeconds *= 2;\n }\n var waitMillis;\n if (cancelState === 1) {\n cancelState = 2;\n waitMillis = 0;\n }\n else {\n waitMillis = (waitSeconds + Math.random()) * 1000;\n }\n callWithDelay(waitMillis);\n }\n var stopped = false;\n function stop(wasTimeout) {\n if (stopped) {\n return;\n }\n stopped = true;\n if (triggeredCallback) {\n return;\n }\n if (timeoutId !== null) {\n if (!wasTimeout) {\n cancelState = 2;\n }\n clearTimeout(timeoutId);\n callWithDelay(0);\n }\n else {\n if (!wasTimeout) {\n cancelState = 1;\n }\n }\n }\n callWithDelay(0);\n setTimeout(function () {\n hitTimeout = true;\n stop(true);\n }, timeout);\n return stop;\n}\n/**\n * Stops the retry loop from repeating.\n * If the function is currently \"in between\" retries, it is invoked immediately\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\n * after the current invocation finishes iff the current invocation would have\n * triggered another retry.\n */\nexport function stop(id) {\n id(false);\n}\n\n//# sourceMappingURL=backoff.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/backoff.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines methods used to actually send HTTP requests from\n * abstract representations.\n */\nimport firebase from '@firebase/app';\nimport * as array from './array';\nimport * as backoff from './backoff';\nimport * as errorsExports from './error';\nimport * as object from './object';\nimport * as promiseimpl from './promise_external';\nimport * as type from './type';\nimport * as UrlUtils from './url';\nimport * as XhrIoExports from './xhrio';\n/**\n * @struct\n * @template T\n */\nvar NetworkRequest = /** @class */ (function () {\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\n this.pendingXhr_ = null;\n this.backoffId_ = null;\n this.resolve_ = null;\n this.reject_ = null;\n this.canceled_ = false;\n this.appDelete_ = false;\n this.url_ = url;\n this.method_ = method;\n this.headers_ = headers;\n this.body_ = body;\n this.successCodes_ = successCodes.slice();\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\n this.callback_ = callback;\n this.errorCallback_ = errorCallback;\n this.progressCallback_ = progressCallback;\n this.timeout_ = timeout;\n this.pool_ = pool;\n var self = this;\n this.promise_ = promiseimpl.make(function (resolve, reject) {\n self.resolve_ = resolve;\n self.reject_ = reject;\n self.start_();\n });\n }\n /**\n * Actually starts the retry loop.\n */\n NetworkRequest.prototype.start_ = function () {\n var self = this;\n function doTheRequest(backoffCallback, canceled) {\n if (canceled) {\n backoffCallback(false, new RequestEndStatus(false, null, true));\n return;\n }\n var xhr = self.pool_.createXhrIo();\n self.pendingXhr_ = xhr;\n function progressListener(progressEvent) {\n var loaded = progressEvent.loaded;\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\n if (self.progressCallback_ !== null) {\n self.progressCallback_(loaded, total);\n }\n }\n if (self.progressCallback_ !== null) {\n xhr.addUploadProgressListener(progressListener);\n }\n xhr\n .send(self.url_, self.method_, self.body_, self.headers_)\n .then(function (xhr) {\n if (self.progressCallback_ !== null) {\n xhr.removeUploadProgressListener(progressListener);\n }\n self.pendingXhr_ = null;\n xhr = xhr;\n var hitServer = xhr.getErrorCode() === XhrIoExports.ErrorCode.NO_ERROR;\n var status = xhr.getStatus();\n if (!hitServer || self.isRetryStatusCode_(status)) {\n var wasCanceled = xhr.getErrorCode() === XhrIoExports.ErrorCode.ABORT;\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\n return;\n }\n var successCode = array.contains(self.successCodes_, status);\n backoffCallback(true, new RequestEndStatus(successCode, xhr));\n });\n }\n /**\n * @param requestWentThrough True if the request eventually went\n * through, false if it hit the retry limit or was canceled.\n */\n function backoffDone(requestWentThrough, status) {\n var resolve = self.resolve_;\n var reject = self.reject_;\n var xhr = status.xhr;\n if (status.wasSuccessCode) {\n try {\n var result = self.callback_(xhr, xhr.getResponseText());\n if (type.isJustDef(result)) {\n resolve(result);\n }\n else {\n resolve();\n }\n }\n catch (e) {\n reject(e);\n }\n }\n else {\n if (xhr !== null) {\n var err = errorsExports.unknown();\n err.setServerResponseProp(xhr.getResponseText());\n if (self.errorCallback_) {\n reject(self.errorCallback_(xhr, err));\n }\n else {\n reject(err);\n }\n }\n else {\n if (status.canceled) {\n var err = self.appDelete_\n ? errorsExports.appDeleted()\n : errorsExports.canceled();\n reject(err);\n }\n else {\n var err = errorsExports.retryLimitExceeded();\n reject(err);\n }\n }\n }\n }\n if (this.canceled_) {\n backoffDone(false, new RequestEndStatus(false, null, true));\n }\n else {\n this.backoffId_ = backoff.start(doTheRequest, backoffDone, this.timeout_);\n }\n };\n /** @inheritDoc */\n NetworkRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n NetworkRequest.prototype.cancel = function (appDelete) {\n this.canceled_ = true;\n this.appDelete_ = appDelete || false;\n if (this.backoffId_ !== null) {\n backoff.stop(this.backoffId_);\n }\n if (this.pendingXhr_ !== null) {\n this.pendingXhr_.abort();\n }\n };\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\n // The codes for which to retry came from this page:\n // https://cloud.google.com/storage/docs/exponential-backoff\n var isFiveHundredCode = status >= 500 && status < 600;\n var extraRetryCodes = [\n // Request Timeout: web server didn't receive full request in time.\n 408,\n // Too Many Requests: you're getting rate-limited, basically.\n 429\n ];\n var isExtraRetryCode = array.contains(extraRetryCodes, status);\n var isRequestSpecificRetryCode = array.contains(this.additionalRetryCodes_, status);\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\n };\n return NetworkRequest;\n}());\n/**\n * A collection of information about the result of a network request.\n * @param opt_canceled Defaults to false.\n * @struct\n */\nvar RequestEndStatus = /** @class */ (function () {\n function RequestEndStatus(wasSuccessCode, xhr, opt_canceled) {\n this.wasSuccessCode = wasSuccessCode;\n this.xhr = xhr;\n this.canceled = !!opt_canceled;\n }\n return RequestEndStatus;\n}());\nexport { RequestEndStatus };\nexport function addAuthHeader_(headers, authToken) {\n if (authToken !== null && authToken.length > 0) {\n headers['Authorization'] = 'Firebase ' + authToken;\n }\n}\nexport function addVersionHeader_(headers) {\n var number = typeof firebase !== 'undefined' ? firebase.SDK_VERSION : 'AppManager';\n headers['X-Firebase-Storage-Version'] = 'webjs/' + number;\n}\n/**\n * @template T\n */\nexport function makeRequest(requestInfo, authToken, pool) {\n var queryPart = UrlUtils.makeQueryString(requestInfo.urlParams);\n var url = requestInfo.url + queryPart;\n var headers = object.clone(requestInfo.headers);\n addAuthHeader_(headers, authToken);\n addVersionHeader_(headers);\n return new NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\n}\n\n//# sourceMappingURL=request.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/request.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport firebase from '@firebase/app';\nimport { StringFormat } from './src/implementation/string';\nimport { TaskEvent } from './src/implementation/taskenums';\nimport { TaskState } from './src/implementation/taskenums';\nimport { XhrIoPool } from './src/implementation/xhriopool';\nimport { Reference } from './src/reference';\nimport { Service } from './src/service';\n/**\n * Type constant for Firebase Storage.\n */\nvar STORAGE_TYPE = 'storage';\nfunction factory(app, unused, opt_url) {\n return new Service(app, new XhrIoPool(), opt_url);\n}\nexport function registerStorage(instance) {\n var namespaceExports = {\n // no-inline\n TaskState: TaskState,\n TaskEvent: TaskEvent,\n StringFormat: StringFormat,\n Storage: Service,\n Reference: Reference\n };\n instance.INTERNAL.registerService(STORAGE_TYPE, factory, namespaceExports, undefined, \n // Allow multiple storage instances per app.\n true);\n}\nregisterStorage(firebase);\n\n//# sourceMappingURL=index.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/index.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @enum{number}\n */\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\n})(ErrorCode = ErrorCode || (ErrorCode = {}));\n\n//# sourceMappingURL=xhrio.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhrio.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Constants used in the Firebase Storage library.\n */\n/**\n * Domain and scheme for API calls.\n */\nexport var domainBase = 'https://firebasestorage.googleapis.com';\n/**\n * Domain and scheme for object downloads.\n */\nexport var downloadBase = 'https://firebasestorage.googleapis.com';\n/**\n * Base URL for non-upload calls to the API.\n */\nexport var apiBaseUrl = '/v0';\n/**\n * Base URL for upload calls to the API.\n */\nexport var apiUploadBaseUrl = '/v0';\nexport function setDomainBase(domainBase) {\n domainBase = domainBase;\n}\nexport var configOption = 'storageBucket';\n/**\n * 1 minute\n */\nexport var shortMaxOperationRetryTime = 1 * 60 * 1000;\n/**\n * 2 minutes\n */\nexport var defaultMaxOperationRetryTime = 2 * 60 * 1000;\n/**\n * 10 minutes\n */\nexport var defaultMaxUploadRetryTime = 10 * 60 * 100;\n/**\n * This is the value of Number.MIN_SAFE_INTEGER, which is not well supported\n * enough for us to use it directly.\n */\nexport var minSafeInteger = -9007199254740991;\n\n//# sourceMappingURL=constants.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/constants.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as errorsExports from './error';\nimport * as object from './object';\nimport * as promiseimpl from './promise_external';\nimport * as type from './type';\nimport * as XhrIoExports from './xhrio';\n/**\n * We use this instead of goog.net.XhrIo because goog.net.XhrIo is hyuuuuge and\n * doesn't work in React Native on Android.\n */\nvar NetworkXhrIo = /** @class */ (function () {\n function NetworkXhrIo() {\n var _this = this;\n this.sent_ = false;\n this.xhr_ = new XMLHttpRequest();\n this.errorCode_ = XhrIoExports.ErrorCode.NO_ERROR;\n this.sendPromise_ = promiseimpl.make(function (resolve, reject) {\n _this.xhr_.addEventListener('abort', function (event) {\n _this.errorCode_ = XhrIoExports.ErrorCode.ABORT;\n resolve(_this);\n });\n _this.xhr_.addEventListener('error', function (event) {\n _this.errorCode_ = XhrIoExports.ErrorCode.NETWORK_ERROR;\n resolve(_this);\n });\n _this.xhr_.addEventListener('load', function (event) {\n resolve(_this);\n });\n });\n }\n /**\n * @override\n */\n NetworkXhrIo.prototype.send = function (url, method, opt_body, opt_headers) {\n var _this = this;\n if (this.sent_) {\n throw errorsExports.internalError('cannot .send() more than once');\n }\n this.sent_ = true;\n this.xhr_.open(method, url, true);\n if (type.isDef(opt_headers)) {\n var headers = opt_headers;\n object.forEach(headers, function (key, val) {\n _this.xhr_.setRequestHeader(key, val.toString());\n });\n }\n if (type.isDef(opt_body)) {\n this.xhr_.send(opt_body);\n }\n else {\n this.xhr_.send();\n }\n return this.sendPromise_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getErrorCode = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getErrorCode() before sending');\n }\n return this.errorCode_;\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getStatus = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getStatus() before sending');\n }\n try {\n return this.xhr_.status;\n }\n catch (e) {\n return -1;\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseText = function () {\n if (!this.sent_) {\n throw errorsExports.internalError('cannot .getResponseText() before sending');\n }\n return this.xhr_.responseText;\n };\n /**\n * Aborts the request.\n * @override\n */\n NetworkXhrIo.prototype.abort = function () {\n this.xhr_.abort();\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.getResponseHeader = function (header) {\n return this.xhr_.getResponseHeader(header);\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.addUploadProgressListener = function (listener) {\n if (type.isDef(this.xhr_.upload)) {\n this.xhr_.upload.addEventListener('progress', listener);\n }\n };\n /**\n * @override\n */\n NetworkXhrIo.prototype.removeUploadProgressListener = function (listener) {\n if (type.isDef(this.xhr_.upload)) {\n this.xhr_.upload.removeEventListener('progress', listener);\n }\n };\n return NetworkXhrIo;\n}());\nexport { NetworkXhrIo };\n\n//# sourceMappingURL=xhrio_network.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhrio_network.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NetworkXhrIo } from './xhrio_network';\n/**\n * Factory-like class for creating XhrIo instances.\n */\nvar XhrIoPool = /** @class */ (function () {\n function XhrIoPool() {\n }\n XhrIoPool.prototype.createXhrIo = function () {\n return new NetworkXhrIo();\n };\n return XhrIoPool;\n}());\nexport { XhrIoPool };\n\n//# sourceMappingURL=xhriopool.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/xhriopool.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Functionality related to the parsing/composition of bucket/\n * object location.\n */\nimport * as errorsExports from './error';\n/**\n * @struct\n */\nvar Location = /** @class */ (function () {\n function Location(bucket, path) {\n this.bucket = bucket;\n this.path_ = path;\n }\n Object.defineProperty(Location.prototype, \"path\", {\n get: function () {\n return this.path_;\n },\n enumerable: true,\n configurable: true\n });\n Location.prototype.fullServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\n };\n Location.prototype.bucketOnlyServerUrl = function () {\n var encode = encodeURIComponent;\n return '/b/' + encode(this.bucket) + '/o';\n };\n Location.makeFromBucketSpec = function (bucketString) {\n var bucketLocation;\n try {\n bucketLocation = Location.makeFromUrl(bucketString);\n }\n catch (e) {\n // Not valid URL, use as-is. This lets you put bare bucket names in\n // config.\n return new Location(bucketString, '');\n }\n if (bucketLocation.path === '') {\n return bucketLocation;\n }\n else {\n throw errorsExports.invalidDefaultBucket(bucketString);\n }\n };\n Location.makeFromUrl = function (url) {\n var location = null;\n var bucketDomain = '([A-Za-z0-9.\\\\-]+)';\n function gsModify(loc) {\n if (loc.path.charAt(loc.path.length - 1) === '/') {\n loc.path_ = loc.path_.slice(0, -1);\n }\n }\n var gsPath = '(/(.*))?$';\n var path = '(/([^?#]*).*)?$';\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\n var gsIndices = { bucket: 1, path: 3 };\n function httpModify(loc) {\n loc.path_ = decodeURIComponent(loc.path);\n }\n var version = 'v[A-Za-z0-9_]+';\n var httpRegex = new RegExp('^https?://firebasestorage\\\\.googleapis\\\\.com/' +\n version +\n '/b/' +\n bucketDomain +\n '/o' +\n path, 'i');\n var httpIndices = { bucket: 1, path: 3 };\n var groups = [\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\n { regex: httpRegex, indices: httpIndices, postModify: httpModify }\n ];\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n var captures = group.regex.exec(url);\n if (captures) {\n var bucketValue = captures[group.indices.bucket];\n var pathValue = captures[group.indices.path];\n if (!pathValue) {\n pathValue = '';\n }\n location = new Location(bucketValue, pathValue);\n group.postModify(location);\n break;\n }\n }\n if (location == null) {\n throw errorsExports.invalidUrl(url);\n }\n return location;\n };\n return Location;\n}());\nexport { Location };\n\n//# sourceMappingURL=location.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/location.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @file Provides a Blob-like wrapper for various binary types (including the\n * native Blob type). This makes it possible to upload types like ArrayBuffers,\n * making uploads possible in environments without the native Blob type.\n */\nimport * as fs from './fs';\nimport * as string from './string';\nimport { StringFormat } from './string';\nimport * as type from './type';\n/**\n * @param opt_elideCopy If true, doesn't copy mutable input data\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\n * modified after this blob's construction.\n */\nvar FbsBlob = /** @class */ (function () {\n function FbsBlob(data, opt_elideCopy) {\n var size = 0;\n var blobType = '';\n if (type.isNativeBlob(data)) {\n this.data_ = data;\n size = data.size;\n blobType = data.type;\n }\n else if (data instanceof ArrayBuffer) {\n if (opt_elideCopy) {\n this.data_ = new Uint8Array(data);\n }\n else {\n this.data_ = new Uint8Array(data.byteLength);\n this.data_.set(new Uint8Array(data));\n }\n size = this.data_.length;\n }\n else if (data instanceof Uint8Array) {\n if (opt_elideCopy) {\n this.data_ = data;\n }\n else {\n this.data_ = new Uint8Array(data.length);\n this.data_.set(data);\n }\n size = data.length;\n }\n this.size_ = size;\n this.type_ = blobType;\n }\n FbsBlob.prototype.size = function () {\n return this.size_;\n };\n FbsBlob.prototype.type = function () {\n return this.type_;\n };\n FbsBlob.prototype.slice = function (startByte, endByte) {\n if (type.isNativeBlob(this.data_)) {\n var realBlob = this.data_;\n var sliced = fs.sliceBlob(realBlob, startByte, endByte);\n if (sliced === null) {\n return null;\n }\n return new FbsBlob(sliced);\n }\n else {\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\n return new FbsBlob(slice, true);\n }\n };\n FbsBlob.getBlob = function () {\n var var_args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n var_args[_i] = arguments[_i];\n }\n if (type.isNativeBlobDefined()) {\n var blobby = var_args.map(function (val) {\n if (val instanceof FbsBlob) {\n return val.data_;\n }\n else {\n return val;\n }\n });\n return new FbsBlob(fs.getBlob.apply(null, blobby));\n }\n else {\n var uint8Arrays = var_args.map(function (val) {\n if (type.isString(val)) {\n return string.dataFromString(StringFormat.RAW, val).data;\n }\n else {\n // Blobs don't exist, so this has to be a Uint8Array.\n return val.data_;\n }\n });\n var finalLength_1 = 0;\n uint8Arrays.forEach(function (array) {\n finalLength_1 += array.byteLength;\n });\n var merged_1 = new Uint8Array(finalLength_1);\n var index_1 = 0;\n uint8Arrays.forEach(function (array) {\n for (var i = 0; i < array.length; i++) {\n merged_1[index_1++] = array[i];\n }\n });\n return new FbsBlob(merged_1, true);\n }\n };\n FbsBlob.prototype.uploadData = function () {\n return this.data_;\n };\n return FbsBlob;\n}());\nexport { FbsBlob };\n\n//# sourceMappingURL=blob.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/blob.js\n// module id = null\n// module chunks = ","var RequestInfo = /** @class */ (function () {\n function RequestInfo(url, method, \n /**\n * Returns the value with which to resolve the request's promise. Only called\n * if the request is successful. Throw from this function to reject the\n * returned Request's promise with the thrown error.\n * Note: The XhrIo passed to this function may be reused after this callback\n * returns. Do not keep a reference to it in any way.\n */\n handler, timeout) {\n this.url = url;\n this.method = method;\n this.handler = handler;\n this.timeout = timeout;\n this.urlParams = {};\n this.headers = {};\n this.body = null;\n this.errorHandler = null;\n /**\n * Called with the current number of bytes uploaded and total size (-1 if not\n * computable) of the request body (i.e. used to report upload progress).\n */\n this.progressCallback = null;\n this.successCodes = [200];\n this.additionalRetryCodes = [];\n }\n return RequestInfo;\n}());\nexport { RequestInfo };\n\n//# sourceMappingURL=requestinfo.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requestinfo.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as type from './type';\n/**\n * @struct\n */\nvar Observer = /** @class */ (function () {\n function Observer(nextOrObserver, opt_error, opt_complete) {\n var asFunctions = type.isFunction(nextOrObserver) ||\n type.isDef(opt_error) ||\n type.isDef(opt_complete);\n if (asFunctions) {\n this.next = nextOrObserver;\n this.error = opt_error || null;\n this.complete = opt_complete || null;\n }\n else {\n var observer = nextOrObserver;\n this.next = observer.next || null;\n this.error = observer.error || null;\n this.complete = observer.complete || null;\n }\n }\n return Observer;\n}());\nexport { Observer };\n\n//# sourceMappingURL=observer.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/observer.js\n// module id = null\n// module chunks = ","var UploadTaskSnapshot = /** @class */ (function () {\n function UploadTaskSnapshot(bytesTransferred, totalBytes, state, metadata, task, ref) {\n this.bytesTransferred = bytesTransferred;\n this.totalBytes = totalBytes;\n this.state = state;\n this.metadata = metadata;\n this.task = task;\n this.ref = ref;\n }\n Object.defineProperty(UploadTaskSnapshot.prototype, \"downloadURL\", {\n get: function () {\n if (this.metadata !== null) {\n var urls = this.metadata['downloadURLs'];\n if (urls != null && urls[0] != null) {\n return urls[0];\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n return UploadTaskSnapshot;\n}());\nexport { UploadTaskSnapshot };\n\n//# sourceMappingURL=tasksnapshot.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/tasksnapshot.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines types for interacting with blob transfer tasks.\n */\nimport { InternalTaskState } from './implementation/taskenums';\nimport { Observer } from './implementation/observer';\nimport { TaskEvent, TaskState } from './implementation/taskenums';\nimport { UploadTaskSnapshot } from './tasksnapshot';\nimport * as fbsArgs from './implementation/args';\nimport * as fbsArray from './implementation/array';\nimport { async as fbsAsync } from './implementation/async';\nimport * as errors from './implementation/error';\nimport * as fbsPromiseimpl from './implementation/promise_external';\nimport * as fbsRequests from './implementation/requests';\nimport * as fbsTaskEnums from './implementation/taskenums';\nimport * as typeUtils from './implementation/type';\n/**\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\n * upload and manage callbacks for various events.\n */\nvar UploadTask = /** @class */ (function () {\n /**\n * @param ref The firebaseStorage.Reference object this task came\n * from, untyped to avoid cyclic dependencies.\n * @param blob The blob to upload.\n */\n function UploadTask(ref, authWrapper, location, mappings, blob, metadata) {\n if (metadata === void 0) { metadata = null; }\n var _this = this;\n this.transferred_ = 0;\n this.needToFetchStatus_ = false;\n this.needToFetchMetadata_ = false;\n this.observers_ = [];\n this.error_ = null;\n this.uploadUrl_ = null;\n this.request_ = null;\n this.chunkMultiplier_ = 1;\n this.resolve_ = null;\n this.reject_ = null;\n this.ref_ = ref;\n this.authWrapper_ = authWrapper;\n this.location_ = location;\n this.blob_ = blob;\n this.metadata_ = metadata;\n this.mappings_ = mappings;\n this.resumable_ = this.shouldDoResumable_(this.blob_);\n this.state_ = InternalTaskState.RUNNING;\n this.errorHandler_ = function (error) {\n _this.request_ = null;\n _this.chunkMultiplier_ = 1;\n if (error.codeEquals(errors.Code.CANCELED)) {\n _this.needToFetchStatus_ = true;\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.metadataErrorHandler_ = function (error) {\n _this.request_ = null;\n if (error.codeEquals(errors.Code.CANCELED)) {\n _this.completeTransitions_();\n }\n else {\n _this.error_ = error;\n _this.transition_(InternalTaskState.ERROR);\n }\n };\n this.promise_ = fbsPromiseimpl.make(function (resolve, reject) {\n _this.resolve_ = resolve;\n _this.reject_ = reject;\n _this.start_();\n });\n // Prevent uncaught rejections on the internal promise from bubbling out\n // to the top level with a dummy handler.\n this.promise_.then(null, function () { });\n }\n UploadTask.prototype.makeProgressCallback_ = function () {\n var _this = this;\n var sizeBefore = this.transferred_;\n return function (loaded, total) {\n _this.updateProgress_(sizeBefore + loaded);\n };\n };\n UploadTask.prototype.shouldDoResumable_ = function (blob) {\n return blob.size() > 256 * 1024;\n };\n UploadTask.prototype.start_ = function () {\n if (this.state_ !== InternalTaskState.RUNNING) {\n // This can happen if someone pauses us in a resume callback, for example.\n return;\n }\n if (this.request_ !== null) {\n return;\n }\n if (this.resumable_) {\n if (this.uploadUrl_ === null) {\n this.createResumable_();\n }\n else {\n if (this.needToFetchStatus_) {\n this.fetchStatus_();\n }\n else {\n if (this.needToFetchMetadata_) {\n // Happens if we miss the metadata on upload completion.\n this.fetchMetadata_();\n }\n else {\n this.continueUpload_();\n }\n }\n }\n }\n else {\n this.oneShotUpload_();\n }\n };\n UploadTask.prototype.resolveToken_ = function (callback) {\n var _this = this;\n this.authWrapper_.getAuthToken().then(function (authToken) {\n switch (_this.state_) {\n case InternalTaskState.RUNNING:\n callback(authToken);\n break;\n case InternalTaskState.CANCELING:\n _this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.PAUSING:\n _this.transition_(InternalTaskState.PAUSED);\n break;\n default:\n }\n });\n };\n // TODO(andysoto): assert false\n UploadTask.prototype.createResumable_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.createResumableUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var createRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = createRequest;\n createRequest.getPromise().then(function (url) {\n _this.request_ = null;\n _this.uploadUrl_ = url;\n _this.needToFetchStatus_ = false;\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.fetchStatus_ = function () {\n var _this = this;\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.getResumableUploadStatus(_this.authWrapper_, _this.location_, url, _this.blob_);\n var statusRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = statusRequest;\n statusRequest.getPromise().then(function (status) {\n status = status;\n _this.request_ = null;\n _this.updateProgress_(status.current);\n _this.needToFetchStatus_ = false;\n if (status.finalized) {\n _this.needToFetchMetadata_ = true;\n }\n _this.completeTransitions_();\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.continueUpload_ = function () {\n var _this = this;\n var chunkSize = fbsRequests.resumableUploadChunkSize * this.chunkMultiplier_;\n var status = new fbsRequests.ResumableUploadStatus(this.transferred_, this.blob_.size());\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\n var url = this.uploadUrl_;\n this.resolveToken_(function (authToken) {\n var requestInfo;\n try {\n requestInfo = fbsRequests.continueResumableUpload(_this.location_, _this.authWrapper_, url, _this.blob_, chunkSize, _this.mappings_, status, _this.makeProgressCallback_());\n }\n catch (e) {\n _this.error_ = e;\n _this.transition_(InternalTaskState.ERROR);\n return;\n }\n var uploadRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = uploadRequest;\n uploadRequest\n .getPromise()\n .then(function (newStatus) {\n _this.increaseMultiplier_();\n _this.request_ = null;\n _this.updateProgress_(newStatus.current);\n if (newStatus.finalized) {\n _this.metadata_ = newStatus.metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }\n else {\n _this.completeTransitions_();\n }\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.increaseMultiplier_ = function () {\n var currentSize = fbsRequests.resumableUploadChunkSize * this.chunkMultiplier_;\n // Max chunk size is 32M.\n if (currentSize < 32 * 1024 * 1024) {\n this.chunkMultiplier_ *= 2;\n }\n };\n UploadTask.prototype.fetchMetadata_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.getMetadata(_this.authWrapper_, _this.location_, _this.mappings_);\n var metadataRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = metadataRequest;\n metadataRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.metadataErrorHandler_);\n });\n };\n UploadTask.prototype.oneShotUpload_ = function () {\n var _this = this;\n this.resolveToken_(function (authToken) {\n var requestInfo = fbsRequests.multipartUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\n var multipartRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\n _this.request_ = multipartRequest;\n multipartRequest.getPromise().then(function (metadata) {\n _this.request_ = null;\n _this.metadata_ = metadata;\n _this.updateProgress_(_this.blob_.size());\n _this.transition_(InternalTaskState.SUCCESS);\n }, _this.errorHandler_);\n });\n };\n UploadTask.prototype.updateProgress_ = function (transferred) {\n var old = this.transferred_;\n this.transferred_ = transferred;\n // A progress update can make the \"transferred\" value smaller (e.g. a\n // partial upload not completed by server, after which the \"transferred\"\n // value may reset to the value at the beginning of the request).\n if (this.transferred_ !== old) {\n this.notifyObservers_();\n }\n };\n UploadTask.prototype.transition_ = function (state) {\n if (this.state_ === state) {\n return;\n }\n switch (state) {\n case InternalTaskState.CANCELING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.PAUSING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING);\n this.state_ = state;\n if (this.request_ !== null) {\n this.request_.cancel();\n }\n break;\n case InternalTaskState.RUNNING:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.PAUSING);\n var wasPaused = this.state_ === InternalTaskState.PAUSED;\n this.state_ = state;\n if (wasPaused) {\n this.notifyObservers_();\n this.start_();\n }\n break;\n case InternalTaskState.PAUSED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.CANCELED:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.PAUSED ||\n // this.state_ === InternalTaskState.CANCELING);\n this.error_ = errors.canceled();\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.ERROR:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n case InternalTaskState.SUCCESS:\n // TODO(andysoto):\n // assert(this.state_ === InternalTaskState.RUNNING ||\n // this.state_ === InternalTaskState.PAUSING ||\n // this.state_ === InternalTaskState.CANCELING);\n this.state_ = state;\n this.notifyObservers_();\n break;\n }\n };\n UploadTask.prototype.completeTransitions_ = function () {\n switch (this.state_) {\n case InternalTaskState.PAUSING:\n this.transition_(InternalTaskState.PAUSED);\n break;\n case InternalTaskState.CANCELING:\n this.transition_(InternalTaskState.CANCELED);\n break;\n case InternalTaskState.RUNNING:\n this.start_();\n break;\n default:\n // TODO(andysoto): assert(false);\n break;\n }\n };\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\n get: function () {\n var externalState = fbsTaskEnums.taskStateFromInternalTaskState(this.state_);\n return new UploadTaskSnapshot(this.transferred_, this.blob_.size(), externalState, this.metadata_, this, this.ref_);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Adds a callback for an event.\n * @param type The type of event to listen for.\n */\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\n if (nextOrObserver === void 0) { nextOrObserver = undefined; }\n if (error === void 0) { error = undefined; }\n if (completed === void 0) { completed = undefined; }\n function typeValidator(_p) {\n if (type !== TaskEvent.STATE_CHANGED) {\n throw \"Expected one of the event types: [\" + TaskEvent.STATE_CHANGED + \"].\";\n }\n }\n var nextOrObserverMessage = 'Expected a function or an Object with one of ' +\n '`next`, `error`, `complete` properties.';\n var nextValidator = fbsArgs.nullFunctionSpec(true).validator;\n var observerValidator = fbsArgs.looseObjectSpec(null, true).validator;\n function nextOrObserverValidator(p) {\n try {\n nextValidator(p);\n return;\n }\n catch (e) { }\n try {\n observerValidator(p);\n var anyDefined = typeUtils.isJustDef(p['next']) ||\n typeUtils.isJustDef(p['error']) ||\n typeUtils.isJustDef(p['complete']);\n if (!anyDefined) {\n throw '';\n }\n return;\n }\n catch (e) {\n throw nextOrObserverMessage;\n }\n }\n var specs = [\n fbsArgs.stringSpec(typeValidator),\n fbsArgs.looseObjectSpec(nextOrObserverValidator, true),\n fbsArgs.nullFunctionSpec(true),\n fbsArgs.nullFunctionSpec(true)\n ];\n fbsArgs.validate('on', specs, arguments);\n var self = this;\n function makeBinder(specs) {\n function binder(nextOrObserver, error, opt_complete) {\n if (specs !== null) {\n fbsArgs.validate('on', specs, arguments);\n }\n var observer = new Observer(nextOrObserver, error, completed);\n self.addObserver_(observer);\n return function () {\n self.removeObserver_(observer);\n };\n }\n return binder;\n }\n function binderNextOrObserverValidator(p) {\n if (p === null) {\n throw nextOrObserverMessage;\n }\n nextOrObserverValidator(p);\n }\n var binderSpecs = [\n fbsArgs.looseObjectSpec(binderNextOrObserverValidator),\n fbsArgs.nullFunctionSpec(true),\n fbsArgs.nullFunctionSpec(true)\n ];\n var typeOnly = !(typeUtils.isJustDef(nextOrObserver) ||\n typeUtils.isJustDef(error) ||\n typeUtils.isJustDef(completed));\n if (typeOnly) {\n return makeBinder(binderSpecs);\n }\n else {\n return makeBinder(null)(nextOrObserver, error, completed);\n }\n };\n /**\n * This object behaves like a Promise, and resolves with its snapshot data\n * when the upload completes.\n * @param onFulfilled The fulfillment callback. Promise chaining works as normal.\n * @param onRejected The rejection callback.\n */\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\n // These casts are needed so that TypeScript can infer the types of the\n // resulting Promise.\n return this.promise_.then(onFulfilled, onRejected);\n };\n /**\n * Equivalent to calling `then(null, onRejected)`.\n */\n UploadTask.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n * Adds the given observer.\n */\n UploadTask.prototype.addObserver_ = function (observer) {\n this.observers_.push(observer);\n this.notifyObserver_(observer);\n };\n /**\n * Removes the given observer.\n */\n UploadTask.prototype.removeObserver_ = function (observer) {\n fbsArray.remove(this.observers_, observer);\n };\n UploadTask.prototype.notifyObservers_ = function () {\n var _this = this;\n this.finishPromise_();\n var observers = fbsArray.clone(this.observers_);\n observers.forEach(function (observer) {\n _this.notifyObserver_(observer);\n });\n };\n UploadTask.prototype.finishPromise_ = function () {\n if (this.resolve_ !== null) {\n var triggered = true;\n switch (fbsTaskEnums.taskStateFromInternalTaskState(this.state_)) {\n case TaskState.SUCCESS:\n fbsAsync(this.resolve_.bind(null, this.snapshot))();\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n var toCall = this.reject_;\n fbsAsync(toCall.bind(null, this.error_))();\n break;\n default:\n triggered = false;\n break;\n }\n if (triggered) {\n this.resolve_ = null;\n this.reject_ = null;\n }\n }\n };\n UploadTask.prototype.notifyObserver_ = function (observer) {\n var externalState = fbsTaskEnums.taskStateFromInternalTaskState(this.state_);\n switch (externalState) {\n case TaskState.RUNNING:\n case TaskState.PAUSED:\n if (observer.next !== null) {\n fbsAsync(observer.next.bind(observer, this.snapshot))();\n }\n break;\n case TaskState.SUCCESS:\n if (observer.complete !== null) {\n fbsAsync(observer.complete.bind(observer))();\n }\n break;\n case TaskState.CANCELED:\n case TaskState.ERROR:\n if (observer.error !== null) {\n fbsAsync(observer.error.bind(observer, this.error_))();\n }\n break;\n default:\n // TODO(andysoto): assert(false);\n if (observer.error !== null) {\n fbsAsync(observer.error.bind(observer, this.error_))();\n }\n }\n };\n /**\n * Resumes a paused task. Has no effect on a currently running or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.resume = function () {\n fbsArgs.validate('resume', [], arguments);\n var valid = this.state_ === InternalTaskState.PAUSED ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.RUNNING);\n }\n return valid;\n };\n /**\n * Pauses a currently running task. Has no effect on a paused or failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.pause = function () {\n fbsArgs.validate('pause', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING;\n if (valid) {\n this.transition_(InternalTaskState.PAUSING);\n }\n return valid;\n };\n /**\n * Cancels a currently running or paused task. Has no effect on a complete or\n * failed task.\n * @return True if the operation took effect, false if ignored.\n */\n UploadTask.prototype.cancel = function () {\n fbsArgs.validate('cancel', [], arguments);\n var valid = this.state_ === InternalTaskState.RUNNING ||\n this.state_ === InternalTaskState.PAUSING;\n if (valid) {\n this.transition_(InternalTaskState.CANCELING);\n }\n return valid;\n };\n return UploadTask;\n}());\nexport { UploadTask };\n\n//# sourceMappingURL=task.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/task.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Defines the Firebase Storage Reference class.\n */\nimport * as args from './implementation/args';\nimport { FbsBlob } from './implementation/blob';\nimport * as errorsExports from './implementation/error';\nimport { Location } from './implementation/location';\nimport * as metadata from './implementation/metadata';\nimport * as object from './implementation/object';\nimport * as path from './implementation/path';\nimport * as requests from './implementation/requests';\nimport * as fbsString from './implementation/string';\nimport { StringFormat } from './implementation/string';\nimport * as type from './implementation/type';\nimport { UploadTask } from './task';\n/**\n * Provides methods to interact with a bucket in the Firebase Storage service.\n * @param location An fbs.location, or the URL at\n * which to base this object, in one of the following forms:\n * gs:///\n * http[s]://firebasestorage.googleapis.com/\n * /b//o/\n * Any query or fragment strings will be ignored in the http[s]\n * format. If no value is passed, the storage object will use a URL based on\n * the project ID of the base firebase.App instance.\n */\nvar Reference = /** @class */ (function () {\n function Reference(authWrapper, location) {\n this.authWrapper = authWrapper;\n if (location instanceof Location) {\n this.location = location;\n }\n else {\n this.location = Location.makeFromUrl(location);\n }\n }\n /**\n * @return The URL for the bucket and path this object references,\n * in the form gs:///\n * @override\n */\n Reference.prototype.toString = function () {\n args.validate('toString', [], arguments);\n return 'gs://' + this.location.bucket + '/' + this.location.path;\n };\n Reference.prototype.newRef = function (authWrapper, location) {\n return new Reference(authWrapper, location);\n };\n Reference.prototype.mappings = function () {\n return metadata.getMappings();\n };\n /**\n * @return A reference to the object obtained by\n * appending childPath, removing any duplicate, beginning, or trailing\n * slashes.\n */\n Reference.prototype.child = function (childPath) {\n args.validate('child', [args.stringSpec()], arguments);\n var newPath = path.child(this.location.path, childPath);\n var location = new Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n };\n Object.defineProperty(Reference.prototype, \"parent\", {\n /**\n * @return A reference to the parent of the\n * current object, or null if the current object is the root.\n */\n get: function () {\n var newPath = path.parent(this.location.path);\n if (newPath === null) {\n return null;\n }\n var location = new Location(this.location.bucket, newPath);\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"root\", {\n /**\n * @return An reference to the root of this\n * object's bucket.\n */\n get: function () {\n var location = new Location(this.location.bucket, '');\n return this.newRef(this.authWrapper, location);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"bucket\", {\n get: function () {\n return this.location.bucket;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"fullPath\", {\n get: function () {\n return this.location.path;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"name\", {\n get: function () {\n return path.lastComponent(this.location.path);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Reference.prototype, \"storage\", {\n get: function () {\n return this.authWrapper.service();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Uploads a blob to this object's location.\n * @param data The blob to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.put = function (data, metadata) {\n if (metadata === void 0) { metadata = null; }\n args.validate('put', [args.uploadDataSpec(), args.metadataSpec(true)], arguments);\n this.throwIfRoot_('put');\n return new UploadTask(this, this.authWrapper, this.location, this.mappings(), new FbsBlob(data), metadata);\n };\n /**\n * Uploads a string to this object's location.\n * @param string The string to upload.\n * @param opt_format The format of the string to upload.\n * @return An UploadTask that lets you control and\n * observe the upload.\n */\n Reference.prototype.putString = function (string, format, opt_metadata) {\n if (format === void 0) { format = StringFormat.RAW; }\n args.validate('putString', [\n args.stringSpec(),\n args.stringSpec(fbsString.formatValidator, true),\n args.metadataSpec(true)\n ], arguments);\n this.throwIfRoot_('putString');\n var data = fbsString.dataFromString(format, string);\n var metadata = object.clone(opt_metadata);\n if (!type.isDef(metadata['contentType']) && type.isDef(data.contentType)) {\n metadata['contentType'] = data.contentType;\n }\n return new UploadTask(this, this.authWrapper, this.location, this.mappings(), new FbsBlob(data.data, true), metadata);\n };\n /**\n * Deletes the object at this location.\n * @return A promise that resolves if the deletion succeeds.\n */\n Reference.prototype.delete = function () {\n args.validate('delete', [], arguments);\n this.throwIfRoot_('delete');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.deleteObject(self.authWrapper, self.location);\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * A promise that resolves with the metadata for this object. If this\n * object doesn't exist or metadata cannot be retreived, the promise is\n * rejected.\n */\n Reference.prototype.getMetadata = function () {\n args.validate('getMetadata', [], arguments);\n this.throwIfRoot_('getMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.getMetadata(self.authWrapper, self.location, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * Updates the metadata for this object.\n * @param metadata The new metadata for the object.\n * Only values that have been explicitly set will be changed. Explicitly\n * setting a value to null will remove the metadata.\n * @return A promise that resolves\n * with the new metadata for this object.\n * @see firebaseStorage.Reference.prototype.getMetadata\n */\n Reference.prototype.updateMetadata = function (metadata) {\n args.validate('updateMetadata', [args.metadataSpec()], arguments);\n this.throwIfRoot_('updateMetadata');\n var self = this;\n return this.authWrapper.getAuthToken().then(function (authToken) {\n var requestInfo = requests.updateMetadata(self.authWrapper, self.location, metadata, self.mappings());\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\n });\n };\n /**\n * @return A promise that resolves with the download\n * URL for this object.\n */\n Reference.prototype.getDownloadURL = function () {\n args.validate('getDownloadURL', [], arguments);\n this.throwIfRoot_('getDownloadURL');\n return this.getMetadata().then(function (metadata) {\n var url = metadata['downloadURLs'][0];\n if (type.isDef(url)) {\n return url;\n }\n else {\n throw errorsExports.noDownloadURL();\n }\n });\n };\n Reference.prototype.throwIfRoot_ = function (name) {\n if (this.location.path === '') {\n throw errorsExports.invalidRootOperation(name);\n }\n };\n return Reference;\n}());\nexport { Reference };\n\n//# sourceMappingURL=reference.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/reference.js\n// module id = null\n// module chunks = ","import * as promiseimpl from './promise_external';\n/**\n * A request whose promise always fails.\n * @struct\n * @template T\n */\nvar FailRequest = /** @class */ (function () {\n function FailRequest(error) {\n this.promise_ = promiseimpl.reject(error);\n }\n /** @inheritDoc */\n FailRequest.prototype.getPromise = function () {\n return this.promise_;\n };\n /** @inheritDoc */\n FailRequest.prototype.cancel = function (appDelete) {\n if (appDelete === void 0) { appDelete = false; }\n };\n return FailRequest;\n}());\nexport { FailRequest };\n\n//# sourceMappingURL=failrequest.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/failrequest.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as object from './object';\nimport * as constants from './constants';\n/**\n * @struct\n */\nvar RequestMap = /** @class */ (function () {\n function RequestMap() {\n this.map_ = {};\n this.id_ = constants.minSafeInteger;\n }\n /**\n * Registers the given request with this map.\n * The request is unregistered when it completes.\n * @param r The request to register.\n */\n RequestMap.prototype.addRequest = function (r) {\n var id = this.id_;\n this.id_++;\n this.map_[id] = r;\n var self = this;\n function unmap() {\n delete self.map_[id];\n }\n r.getPromise().then(unmap, unmap);\n };\n /**\n * Cancels all registered requests.\n */\n RequestMap.prototype.clear = function () {\n object.forEach(this.map_, function (key, val) {\n if (val) {\n val.cancel(true);\n }\n });\n this.map_ = {};\n };\n return RequestMap;\n}());\nexport { RequestMap };\n\n//# sourceMappingURL=requestmap.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/requestmap.js\n// module id = null\n// module chunks = ","import * as constants from './constants';\nimport * as errorsExports from './error';\nimport { FailRequest } from './failrequest';\nimport { Location } from './location';\nimport * as promiseimpl from './promise_external';\nimport { RequestMap } from './requestmap';\nimport * as type from './type';\n/**\n * @param app If null, getAuthToken always resolves with null.\n * @param service The storage service associated with this auth wrapper.\n * Untyped to avoid circular type dependencies.\n * @struct\n */\nvar AuthWrapper = /** @class */ (function () {\n function AuthWrapper(app, maker, requestMaker, service, pool) {\n this.bucket_ = null;\n this.deleted_ = false;\n this.app_ = app;\n if (this.app_ !== null) {\n var options = this.app_.options;\n if (type.isDef(options)) {\n this.bucket_ = AuthWrapper.extractBucket_(options);\n }\n }\n this.storageRefMaker_ = maker;\n this.requestMaker_ = requestMaker;\n this.pool_ = pool;\n this.service_ = service;\n this.maxOperationRetryTime_ = constants.defaultMaxOperationRetryTime;\n this.maxUploadRetryTime_ = constants.defaultMaxUploadRetryTime;\n this.requestMap_ = new RequestMap();\n }\n AuthWrapper.extractBucket_ = function (config) {\n var bucketString = config[constants.configOption] || null;\n if (bucketString == null) {\n return null;\n }\n var loc = Location.makeFromBucketSpec(bucketString);\n return loc.bucket;\n };\n AuthWrapper.prototype.getAuthToken = function () {\n // TODO(andysoto): remove ifDef checks after firebase-app implements stubs\n // (b/28673818).\n if (this.app_ !== null &&\n type.isDef(this.app_.INTERNAL) &&\n type.isDef(this.app_.INTERNAL.getToken)) {\n return this.app_.INTERNAL.getToken().then(function (response) {\n if (response !== null) {\n return response.accessToken;\n }\n else {\n return null;\n }\n }, function (_error) {\n return null;\n });\n }\n else {\n return promiseimpl.resolve(null);\n }\n };\n AuthWrapper.prototype.bucket = function () {\n if (this.deleted_) {\n throw errorsExports.appDeleted();\n }\n else {\n return this.bucket_;\n }\n };\n /**\n * The service associated with this auth wrapper. Untyped to avoid circular\n * type dependencies.\n */\n AuthWrapper.prototype.service = function () {\n return this.service_;\n };\n /**\n * Returns a new firebaseStorage.Reference object referencing this AuthWrapper\n * at the given Location.\n * @param loc The Location.\n * @return Actually a firebaseStorage.Reference, typing not allowed\n * because of circular dependency problems.\n */\n AuthWrapper.prototype.makeStorageReference = function (loc) {\n return this.storageRefMaker_(this, loc);\n };\n AuthWrapper.prototype.makeRequest = function (requestInfo, authToken) {\n if (!this.deleted_) {\n var request = this.requestMaker_(requestInfo, authToken, this.pool_);\n this.requestMap_.addRequest(request);\n return request;\n }\n else {\n return new FailRequest(errorsExports.appDeleted());\n }\n };\n /**\n * Stop running requests and prevent more from being created.\n */\n AuthWrapper.prototype.deleteApp = function () {\n this.deleted_ = true;\n this.app_ = null;\n this.requestMap_.clear();\n };\n AuthWrapper.prototype.maxUploadRetryTime = function () {\n return this.maxUploadRetryTime_;\n };\n AuthWrapper.prototype.setMaxUploadRetryTime = function (time) {\n this.maxUploadRetryTime_ = time;\n };\n AuthWrapper.prototype.maxOperationRetryTime = function () {\n return this.maxOperationRetryTime_;\n };\n AuthWrapper.prototype.setMaxOperationRetryTime = function (time) {\n this.maxOperationRetryTime_ = time;\n };\n return AuthWrapper;\n}());\nexport { AuthWrapper };\n\n//# sourceMappingURL=authwrapper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/implementation/authwrapper.js\n// module id = null\n// module chunks = ","/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as args from './implementation/args';\nimport { AuthWrapper } from './implementation/authwrapper';\nimport { Location } from './implementation/location';\nimport * as fbsPromiseImpl from './implementation/promise_external';\nimport * as RequestExports from './implementation/request';\nimport { Reference } from './reference';\n/**\n * A service that provides firebaseStorage.Reference instances.\n * @param opt_url gs:// url to a custom Storage Bucket\n *\n * @struct\n */\nvar Service = /** @class */ (function () {\n function Service(app, pool, url) {\n this.bucket_ = null;\n function maker(authWrapper, loc) {\n return new Reference(authWrapper, loc);\n }\n this.authWrapper_ = new AuthWrapper(app, maker, RequestExports.makeRequest, this, pool);\n this.app_ = app;\n if (url != null) {\n this.bucket_ = Location.makeFromBucketSpec(url);\n }\n else {\n var authWrapperBucket = this.authWrapper_.bucket();\n if (authWrapperBucket != null) {\n this.bucket_ = new Location(authWrapperBucket, '');\n }\n }\n this.internals_ = new ServiceInternals(this);\n }\n /**\n * Returns a firebaseStorage.Reference for the given path in the default\n * bucket.\n */\n Service.prototype.ref = function (path) {\n function validator(path) {\n if (/^[A-Za-z]+:\\/\\//.test(path)) {\n throw 'Expected child path but got a URL, use refFromURL instead.';\n }\n }\n args.validate('ref', [args.stringSpec(validator, true)], arguments);\n if (this.bucket_ == null) {\n throw new Error('No Storage Bucket defined in Firebase Options.');\n }\n var ref = new Reference(this.authWrapper_, this.bucket_);\n if (path != null) {\n return ref.child(path);\n }\n else {\n return ref;\n }\n };\n /**\n * Returns a firebaseStorage.Reference object for the given absolute URL,\n * which must be a gs:// or http[s]:// URL.\n */\n Service.prototype.refFromURL = function (url) {\n function validator(p) {\n if (!/^[A-Za-z]+:\\/\\//.test(p)) {\n throw 'Expected full URL but got a child path, use ref instead.';\n }\n try {\n Location.makeFromUrl(p);\n }\n catch (e) {\n throw 'Expected valid full URL but got an invalid one.';\n }\n }\n args.validate('refFromURL', [args.stringSpec(validator, false)], arguments);\n return new Reference(this.authWrapper_, url);\n };\n Object.defineProperty(Service.prototype, \"maxUploadRetryTime\", {\n get: function () {\n return this.authWrapper_.maxUploadRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxUploadRetryTime = function (time) {\n args.validate('setMaxUploadRetryTime', [args.nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxUploadRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"maxOperationRetryTime\", {\n get: function () {\n return this.authWrapper_.maxOperationRetryTime();\n },\n enumerable: true,\n configurable: true\n });\n Service.prototype.setMaxOperationRetryTime = function (time) {\n args.validate('setMaxOperationRetryTime', [args.nonNegativeNumberSpec()], arguments);\n this.authWrapper_.setMaxOperationRetryTime(time);\n };\n Object.defineProperty(Service.prototype, \"app\", {\n get: function () {\n return this.app_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Service.prototype, \"INTERNAL\", {\n get: function () {\n return this.internals_;\n },\n enumerable: true,\n configurable: true\n });\n return Service;\n}());\nexport { Service };\n/**\n * @struct\n */\nvar ServiceInternals = /** @class */ (function () {\n function ServiceInternals(service) {\n this.service_ = service;\n }\n /**\n * Called when the associated app is deleted.\n * @see {!fbs.AuthWrapper.prototype.deleteApp}\n */\n ServiceInternals.prototype.delete = function () {\n this.service_.authWrapper_.deleteApp();\n return fbsPromiseImpl.resolve(undefined);\n };\n return ServiceInternals;\n}());\nexport { ServiceInternals };\n\n//# sourceMappingURL=service.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../storage/dist/esm/src/service.js\n// module id = null\n// module chunks = "]}