@next-core/brick-kit 2.188.3 → 2.189.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-9000b9fd.js","sources":["../../../node_modules/broadcast-channel/dist/esbrowser/util.js","../../../node_modules/broadcast-channel/dist/esbrowser/methods/native.js","../../../node_modules/oblivious-set/dist/es/index.js","../../../node_modules/broadcast-channel/dist/esbrowser/options.js","../../../node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js","../../../node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js","../../../node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js","../../../node_modules/broadcast-channel/dist/esbrowser/method-chooser.js","../../../node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js","../../../node_modules/unload/dist/es/browser.js","../../../node_modules/unload/dist/es/node.js","../../../node_modules/unload/dist/es/index.js","../../../node_modules/broadcast-channel/dist/esbrowser/leader-election-util.js","../../../node_modules/broadcast-channel/dist/esbrowser/leader-election-web-lock.js","../../../node_modules/broadcast-channel/dist/esbrowser/leader-election.js"],"sourcesContent":["/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n return obj && typeof obj.then === 'function';\n}\nexport var PROMISE_RESOLVED_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVED_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVED_VOID = Promise.resolve();\nexport function sleep(time, resolveWith) {\n if (!time) time = 0;\n return new Promise(function (res) {\n return setTimeout(function () {\n return res(resolveWith);\n }, time);\n });\n}\nexport function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n\n/**\n * https://stackoverflow.com/a/8084248\n */\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\nexport function microSeconds() {\n var ms = Date.now();\n if (ms === lastMs) {\n additional++;\n return ms * 1000 + additional;\n } else {\n lastMs = ms;\n additional = 0;\n return ms * 1000;\n }\n}\n\n/**\n * Check if WebLock API is supported.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport function supportsWebLockAPI() {\n if (typeof navigator !== 'undefined' && typeof navigator.locks !== 'undefined' && typeof navigator.locks.request === 'function') {\n return true;\n } else {\n return false;\n }\n}","import { microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n var state = {\n messagesCallback: null,\n bc: new BroadcastChannel(channelName),\n subFns: [] // subscriberFunctions\n };\n\n state.bc.onmessage = function (msg) {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data);\n }\n };\n return state;\n}\nexport function close(channelState) {\n channelState.bc.close();\n channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n try {\n channelState.bc.postMessage(messageJson, false);\n return PROMISE_RESOLVED_VOID;\n } catch (err) {\n return Promise.reject(err);\n }\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n if ((typeof window !== 'undefined' || typeof self !== 'undefined') && typeof BroadcastChannel === 'function') {\n if (BroadcastChannel._pubkey) {\n throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n }\n return true;\n } else {\n return false;\n }\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport var NativeMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n */\nvar ObliviousSet = /** @class */ (function () {\n function ObliviousSet(ttl) {\n this.ttl = ttl;\n this.map = new Map();\n /**\n * Creating calls to setTimeout() is expensive,\n * so we only do that if there is not timeout already open.\n */\n this._to = false;\n }\n ObliviousSet.prototype.has = function (value) {\n return this.map.has(value);\n };\n ObliviousSet.prototype.add = function (value) {\n var _this = this;\n this.map.set(value, now());\n /**\n * When a new value is added,\n * start the cleanup at the next tick\n * to not block the cpu for more important stuff\n * that might happen.\n */\n if (!this._to) {\n this._to = true;\n setTimeout(function () {\n _this._to = false;\n removeTooOldValues(_this);\n }, 0);\n }\n };\n ObliviousSet.prototype.clear = function () {\n this.map.clear();\n };\n return ObliviousSet;\n}());\nexport { ObliviousSet };\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(obliviousSet) {\n var olderThen = now() - obliviousSet.ttl;\n var iterator = obliviousSet.map[Symbol.iterator]();\n /**\n * Because we can assume the new values are added at the bottom,\n * we start from the top and stop as soon as we reach a non-too-old value.\n */\n while (true) {\n var next = iterator.next().value;\n if (!next) {\n return; // no more elements\n }\n var value = next[0];\n var time = next[1];\n if (time < olderThen) {\n obliviousSet.map.delete(value);\n }\n else {\n // We reached a value that is not old enough\n return;\n }\n }\n}\nexport function now() {\n return new Date().getTime();\n}\n//# sourceMappingURL=index.js.map","export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions));\n\n // main\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true;\n\n // indexed-db\n if (!options.idb) options.idb = {};\n // after this time the messages get deleted\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150;\n // handles abrupt db onclose events.\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose;\n\n // localstorage\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60;\n\n // custom methods\n if (originalOptions.methods) options.methods = originalOptions.methods;\n\n // node\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n /**\n * On linux use 'ulimit -Hn' to get the limit of open files.\n * On ubuntu this was 4096 for me, so we use half of that as maxParallelWrites default.\n */\n if (!options.node.maxParallelWrites) options.node.maxParallelWrites = 2048;\n if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n * \n * When working on this, ensure to use these performance optimizations:\n * @link https://rxdb.info/slow-indexeddb.html\n */\n\nimport { sleep, randomInt, randomToken, microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\n\n/**\n * Use relaxed durability for faster performance on all transactions.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport var TRANSACTION_SETTINGS = {\n durability: 'relaxed'\n};\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n if (typeof window !== 'undefined') {\n if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n }\n return false;\n}\n\n/**\n * If possible, we should explicitly commit IndexedDB transactions\n * for better performance.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport function commitIndexedDBTransaction(tx) {\n if (tx.commit) {\n tx.commit();\n }\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb();\n\n // create table\n var dbName = DB_PREFIX + channelName;\n\n /**\n * All IndexedDB databases are opened without version\n * because it is a bit faster, especially on firefox\n * @link http://nparashuram.com/IndexedDB/perf/#Open%20Database%20with%20version\n */\n var openRequest = IndexedDB.open(dbName);\n openRequest.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n db.createObjectStore(OBJECT_STORE_ID, {\n keyPath: 'id',\n autoIncrement: true\n });\n };\n return new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n}\n\n/**\n * writes the new message to the database\n * so other readers can find it\n */\nexport function writeMessage(db, readerUuid, messageJson) {\n var time = Date.now();\n var writeObject = {\n uuid: readerUuid,\n time: time,\n data: messageJson\n };\n var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n return new Promise(function (res, rej) {\n tx.oncomplete = function () {\n return res();\n };\n tx.onerror = function (ev) {\n return rej(ev);\n };\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n commitIndexedDBTransaction(tx);\n });\n}\nexport function getAllMessages(db) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n ret.push(cursor.value);\n //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n cursor[\"continue\"]();\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n\n /**\n * Optimization shortcut,\n * if getAll() can be used, do not use a cursor.\n * @link https://rxdb.info/slow-indexeddb.html\n */\n if (objectStore.getAll) {\n var getAllRequest = objectStore.getAll(keyRangeValue);\n return new Promise(function (res, rej) {\n getAllRequest.onerror = function (err) {\n return rej(err);\n };\n getAllRequest.onsuccess = function (e) {\n res(e.target.result);\n };\n });\n }\n function openCursor() {\n // Occasionally Safari will fail on IDBKeyRange.bound, this\n // catches that error, having it open the cursor to the first\n // item. When it gets data it will advance to the desired key.\n try {\n keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return objectStore.openCursor(keyRangeValue);\n } catch (e) {\n return objectStore.openCursor();\n }\n }\n return new Promise(function (res, rej) {\n var openCursorRequest = openCursor();\n openCursorRequest.onerror = function (err) {\n return rej(err);\n };\n openCursorRequest.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n if (cursor.value.id < lastCursorId + 1) {\n cursor[\"continue\"](lastCursorId + 1);\n } else {\n ret.push(cursor.value);\n cursor[\"continue\"]();\n }\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function removeMessagesById(channelState, ids) {\n if (channelState.closed) {\n return Promise.resolve([]);\n }\n var tx = channelState.db.transaction(OBJECT_STORE_ID, 'readwrite', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n return Promise.all(ids.map(function (id) {\n var deleteRequest = objectStore[\"delete\"](id);\n return new Promise(function (res) {\n deleteRequest.onsuccess = function () {\n return res();\n };\n });\n }));\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = Date.now() - ttl;\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n var msgObk = cursor.value;\n if (msgObk.time < olderThen) {\n ret.push(msgObk);\n //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(channelState) {\n return getOldMessages(channelState.db, channelState.options.idb.ttl).then(function (tooOld) {\n return removeMessagesById(channelState, tooOld.map(function (msg) {\n return msg.id;\n }));\n });\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n return createDatabase(channelName).then(function (db) {\n var state = {\n closed: false,\n lastCursorId: 0,\n channelName: channelName,\n options: options,\n uuid: randomToken(),\n /**\n * emittedMessagesIds\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n eMIs: new ObliviousSet(options.idb.ttl * 2),\n // ensures we do not read messages in parallel\n writeBlockPromise: PROMISE_RESOLVED_VOID,\n messagesCallback: null,\n readQueuePromises: [],\n db: db\n };\n\n /**\n * Handle abrupt closes that do not originate from db.close().\n * This could happen, for example, if the underlying storage is\n * removed or if the user clears the database in the browser's\n * history preferences.\n */\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\n };\n\n /**\n * if service-workers are used,\n * we have no 'storage'-event if they post a message,\n * therefore we also have to set an interval\n */\n _readLoop(state);\n return state;\n });\n}\nfunction _readLoop(state) {\n if (state.closed) return;\n readNewMessages(state).then(function () {\n return sleep(state.options.idb.fallbackInterval);\n }).then(function () {\n return _readLoop(state);\n });\n}\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n return true;\n}\n\n/**\n * reads all new messages from the database and emits them\n */\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return PROMISE_RESOLVED_VOID;\n\n // if no one is listening, we do not need to scan for new messages\n if (!state.messagesCallback) return PROMISE_RESOLVED_VOID;\n return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n var useMessages = newerMessages\n /**\n * there is a bug in iOS where the msgObj can be undefined sometimes\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */.filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\n return msgObj;\n }).filter(function (msgObj) {\n return _filterMessage(msgObj, state);\n }).sort(function (msgObjA, msgObjB) {\n return msgObjA.time - msgObjB.time;\n }); // sort by time\n useMessages.forEach(function (msgObj) {\n if (state.messagesCallback) {\n state.eMIs.add(msgObj.id);\n state.messagesCallback(msgObj.data);\n }\n });\n return PROMISE_RESOLVED_VOID;\n });\n}\nexport function close(channelState) {\n channelState.closed = true;\n channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n return writeMessage(channelState.db, channelState.uuid, messageJson);\n }).then(function () {\n if (randomInt(0, 10) === 0) {\n /* await (do not await) */\n cleanOldMessages(channelState);\n }\n });\n return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n readNewMessages(channelState);\n}\nexport function canBeUsed() {\n return !!getIdb();\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport var IndexedDBMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside webworkers because they have no access to localstorage\n * This is basically implemented to support IE9 or your grandmother's toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\n\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nimport { sleep, randomToken, microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {\n // New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n sleep().then(function () {\n var key = storageKey(channelState.channelName);\n var writeObj = {\n token: randomToken(),\n time: Date.now(),\n data: messageJson,\n uuid: channelState.uuid\n };\n var value = JSON.stringify(writeObj);\n getLocalStorage().setItem(key, value);\n\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n var ev = document.createEvent('Event');\n ev.initEvent('storage', true, true);\n ev.key = key;\n ev.newValue = value;\n window.dispatchEvent(ev);\n res();\n });\n });\n}\nexport function addStorageEventListener(channelName, fn) {\n var key = storageKey(channelName);\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\n };\n window.addEventListener('storage', listener);\n return listener;\n}\nexport function removeStorageEventListener(listener) {\n window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n var uuid = randomToken();\n\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n var state = {\n channelName: channelName,\n uuid: uuid,\n eMIs: eMIs // emittedMessagesIds\n };\n\n state.listener = addStorageEventListener(channelName, function (msgObj) {\n if (!state.messagesCallback) return; // no listener\n if (msgObj.uuid === uuid) return; // own message\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n eMIs.add(msgObj.token);\n state.messagesCallback(msgObj.data);\n });\n return state;\n}\nexport function close(channelState) {\n removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n var ls = getLocalStorage();\n if (!ls) return false;\n try {\n var key = '__broadcastchannel_check';\n ls.setItem(key, 'works');\n ls.removeItem(key);\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n return false;\n }\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n return defaultTime;\n}\nexport var LocalstorageMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n var state = {\n name: channelName,\n messagesCallback: null\n };\n SIMULATE_CHANNELS.add(state);\n return state;\n}\nexport function close(channelState) {\n SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n return setTimeout(function () {\n var channelArray = Array.from(SIMULATE_CHANNELS);\n channelArray.filter(function (channel) {\n return channel.name === channelState.name;\n }).filter(function (channel) {\n return channel !== channelState;\n }).filter(function (channel) {\n return !!channel.messagesCallback;\n }).forEach(function (channel) {\n return channel.messagesCallback(messageJson);\n });\n res();\n }, 5);\n });\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n return true;\n}\nexport function averageResponseTime() {\n return 5;\n}\nexport var SimulateMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { NativeMethod } from './methods/native.js';\nimport { IndexedDBMethod } from './methods/indexed-db.js';\nimport { LocalstorageMethod } from './methods/localstorage.js';\nimport { SimulateMethod } from './methods/simulate.js';\n// the line below will be removed from es5/browser builds\n\n// order is important\nvar METHODS = [NativeMethod,\n// fastest\nIndexedDBMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean);\n\n // the line below will be removed from es5/browser builds\n\n // directly chosen\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\n var ret = chooseMethods.find(function (m) {\n return m.type === options.type;\n });\n if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n }\n\n /**\n * if no webworker support is needed,\n * remove idb from the list so that localstorage will be chosen\n */\n if (!options.webWorkerSupport) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) {\n throw new Error(\"No usable method found in \" + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));\n } else {\n return useMethod;\n }\n}","import { isPromise, PROMISE_RESOLVED_FALSE, PROMISE_RESOLVED_VOID } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\n\n/**\n * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\nexport var OPEN_BROADCAST_CHANNELS = new Set();\nvar lastId = 0;\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n // identifier of the channel to debug stuff\n this.id = lastId++;\n OPEN_BROADCAST_CHANNELS.add(this);\n this.name = name;\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options);\n\n // isListening\n this._iL = false;\n\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n this._onML = null;\n\n /**\n * _addEventListeners\n */\n this._addEL = {\n message: [],\n internal: []\n };\n\n /**\n * Unsent message promises\n * where the sending is still in progress\n * @type {Set<Promise>}\n */\n this._uMP = new Set();\n\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n this._befC = [];\n\n /**\n * _preparePromise\n */\n this._prepP = null;\n _prepareChannel(this);\n};\n\n// STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\nBroadcastChannel._pubkey = true;\n\n/**\n * clears the tmp-folder if is node\n * @return {Promise<boolean>} true if has run, false if not node\n */\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n if (method.type === 'node') {\n return method.clearNodeFolder().then(function () {\n return true;\n });\n } else {\n return PROMISE_RESOLVED_FALSE;\n }\n}\n\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n}\n\n// PROTOTYPE\nBroadcastChannel.prototype = {\n postMessage: function postMessage(msg) {\n if (this.closed) {\n throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed ' +\n /**\n * In the past when this error appeared, it was really hard to debug.\n * So now we log the msg together with the error so it at least\n * gives some clue about where in your application this happens.\n */\n JSON.stringify(msg));\n }\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n _removeListenerObject(this, 'message', this._onML);\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\n },\n addEventListener: function addEventListener(type, fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n _addListenerObject(this, type, listenObj);\n },\n removeEventListener: function removeEventListener(type, fn) {\n var obj = this._addEL[type].find(function (obj) {\n return obj.fn === fn;\n });\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n if (this.closed) {\n return;\n }\n OPEN_BROADCAST_CHANNELS[\"delete\"](this);\n this.closed = true;\n var awaitPrepare = this._prepP ? this._prepP : PROMISE_RESOLVED_VOID;\n this._onML = null;\n this._addEL.message = [];\n return awaitPrepare\n // wait until all current sending are processed\n .then(function () {\n return Promise.all(Array.from(_this._uMP));\n })\n // run before-close hooks\n .then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n })\n // close the channel\n .then(function () {\n return _this.method.close(_this._state);\n });\n },\n get type() {\n return this.method.type;\n },\n get isClosed() {\n return this.closed;\n }\n};\n\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\nfunction _post(broadcastChannel, type, msg) {\n var time = broadcastChannel.method.microSeconds();\n var msgObj = {\n time: time,\n type: type,\n data: msg\n };\n var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : PROMISE_RESOLVED_VOID;\n return awaitPrepare.then(function () {\n var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj);\n\n // add/remove to unsent messages list\n broadcastChannel._uMP.add(sendPromise);\n sendPromise[\"catch\"]().then(function () {\n return broadcastChannel._uMP[\"delete\"](sendPromise);\n });\n return sendPromise;\n });\n}\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n /*if (channel.options.prepareDelay) {\n await new Promise(res => setTimeout(res, this.options.prepareDelay));\n }*/\n channel._state = s;\n });\n } else {\n channel._state = maybePromise;\n }\n}\nfunction _hasMessageListeners(channel) {\n if (channel._addEL.message.length > 0) return true;\n if (channel._addEL.internal.length > 0) return true;\n return false;\n}\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n _startListening(channel);\n}\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n _stopListening(channel);\n}\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n\n var listenerFn = function listenerFn(msgObj) {\n channel._addEL[msgObj.type].forEach(function (listenerObject) {\n /**\n * Getting the current time in JavaScript has no good precision.\n * So instead of only listening to events that happened 'after' the listener\n * was added, we also listen to events that happened 100ms before it.\n * This ensures that when another process, like a WebWorker, sends events\n * we do not miss them out because their timestamp is a bit off compared to the main process.\n * Not doing this would make messages missing when we send data directly after subscribing and awaiting a response.\n * @link https://johnresig.com/blog/accuracy-of-javascript-time/\n */\n var hundredMsInMicro = 100 * 1000;\n var minMessageTime = listenerObject.time - hundredMsInMicro;\n if (msgObj.time >= minMessageTime) {\n listenerObject.fn(msgObj.data);\n }\n });\n };\n var time = channel.method.microSeconds();\n if (channel._prepP) {\n channel._prepP.then(function () {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n });\n } else {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n }\n }\n}\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // no one is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\n}","/* global WorkerGlobalScope */\n\nexport function addBrowser(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {\n /**\n * Because killing a worker does directly stop the excution\n * of the code, our only chance is to overwrite the close function\n * which could work some times.\n * @link https://stackoverflow.com/q/72903255/3443137\n */\n var oldClose = self.close.bind(self);\n self.close = function () {\n fn();\n return oldClose();\n };\n } else {\n /**\n * if we are on react-native, there is no window.addEventListener\n * @link https://github.com/pubkey/unload/issues/6\n */\n if (typeof window.addEventListener !== 'function') {\n return;\n }\n\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n}","export function addNode(fn) {\n process.on('exit', function () {\n return fn();\n });\n\n /**\n * on the following events,\n * the process will not end if there are\n * event-handlers attached,\n * therefore we have to call process.exit()\n */\n process.on('beforeExit', function () {\n return fn().then(function () {\n return process.exit();\n });\n });\n // catches ctrl+c event\n process.on('SIGINT', function () {\n return fn().then(function () {\n return process.exit();\n });\n });\n // catches uncaught exceptions\n process.on('uncaughtException', function (err) {\n return fn().then(function () {\n console.trace(err);\n process.exit(101);\n });\n });\n}","import { addBrowser } from './browser.js';\nimport { addNode } from './node.js';\n\n/**\n * Use the code directly to prevent import problems\n * with the detect-node package.\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\nvar isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\nvar USE_METHOD = isNode ? addNode : addBrowser;\nvar LISTENERS = new Set();\nvar startedListening = false;\nfunction startListening() {\n if (startedListening) {\n return;\n }\n startedListening = true;\n USE_METHOD(runAll);\n}\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') {\n throw new Error('Listener is no function');\n }\n LISTENERS.add(fn);\n var addReturn = {\n remove: function remove() {\n return LISTENERS[\"delete\"](fn);\n },\n run: function run() {\n LISTENERS[\"delete\"](fn);\n return fn();\n }\n };\n return addReturn;\n}\nexport function runAll() {\n var promises = [];\n LISTENERS.forEach(function (fn) {\n promises.push(fn());\n LISTENERS[\"delete\"](fn);\n });\n return Promise.all(promises);\n}\nexport function removeAll() {\n LISTENERS.clear();\n}\nexport function getSize() {\n return LISTENERS.size;\n}","import { add as unloadAdd } from 'unload';\n\n/**\n * sends and internal message over the broadcast-channel\n */\nexport function sendLeaderMessage(leaderElector, action) {\n var msgJson = {\n context: 'leader',\n action: action,\n token: leaderElector.token\n };\n return leaderElector.broadcastChannel.postInternal(msgJson);\n}\nexport function beLeader(leaderElector) {\n leaderElector.isLeader = true;\n leaderElector._hasLeader = true;\n var unloadFn = unloadAdd(function () {\n return leaderElector.die();\n });\n leaderElector._unl.push(unloadFn);\n var isLeaderListener = function isLeaderListener(msg) {\n if (msg.context === 'leader' && msg.action === 'apply') {\n sendLeaderMessage(leaderElector, 'tell');\n }\n if (msg.context === 'leader' && msg.action === 'tell' && !leaderElector._dpLC) {\n /**\n * another instance is also leader!\n * This can happen on rare events\n * like when the CPU is at 100% for long time\n * or the tabs are open very long and the browser throttles them.\n * @link https://github.com/pubkey/broadcast-channel/issues/414\n * @link https://github.com/pubkey/broadcast-channel/issues/385\n */\n leaderElector._dpLC = true;\n leaderElector._dpL(); // message the lib user so the app can handle the problem\n sendLeaderMessage(leaderElector, 'tell'); // ensure other leader also knows the problem\n }\n };\n\n leaderElector.broadcastChannel.addEventListener('internal', isLeaderListener);\n leaderElector._lstns.push(isLeaderListener);\n return sendLeaderMessage(leaderElector, 'tell');\n}","import { randomToken } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\n\n/**\n * A faster version of the leader elector that uses the WebLock API\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport var LeaderElectionWebLock = function LeaderElectionWebLock(broadcastChannel, options) {\n var _this = this;\n this.broadcastChannel = broadcastChannel;\n broadcastChannel._befC.push(function () {\n return _this.die();\n });\n this._options = options;\n this.isLeader = false;\n this.isDead = false;\n this.token = randomToken();\n this._lstns = [];\n this._unl = [];\n this._dpL = function () {}; // onduplicate listener\n this._dpLC = false; // true when onduplicate called\n\n this._wKMC = {}; // stuff for cleanup\n\n // lock name\n this.lN = 'pubkey-bc||' + broadcastChannel.method.type + '||' + broadcastChannel.name;\n};\nLeaderElectionWebLock.prototype = {\n hasLeader: function hasLeader() {\n var _this2 = this;\n return navigator.locks.query().then(function (locks) {\n var relevantLocks = locks.held ? locks.held.filter(function (lock) {\n return lock.name === _this2.lN;\n }) : [];\n if (relevantLocks && relevantLocks.length > 0) {\n return true;\n } else {\n return false;\n }\n });\n },\n awaitLeadership: function awaitLeadership() {\n var _this3 = this;\n if (!this._wLMP) {\n this._wKMC.c = new AbortController();\n var returnPromise = new Promise(function (res, rej) {\n _this3._wKMC.res = res;\n _this3._wKMC.rej = rej;\n });\n this._wLMP = new Promise(function (res) {\n navigator.locks.request(_this3.lN, {\n signal: _this3._wKMC.c.signal\n }, function () {\n // if the lock resolved, we can drop the abort controller\n _this3._wKMC.c = undefined;\n beLeader(_this3);\n res();\n return returnPromise;\n })[\"catch\"](function () {});\n });\n }\n return this._wLMP;\n },\n set onduplicate(_fn) {\n // Do nothing because there are no duplicates in the WebLock version\n },\n die: function die() {\n var _this4 = this;\n this._lstns.forEach(function (listener) {\n return _this4.broadcastChannel.removeEventListener('internal', listener);\n });\n this._lstns = [];\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n this._unl = [];\n if (this.isLeader) {\n this.isLeader = false;\n }\n this.isDead = true;\n if (this._wKMC.res) {\n this._wKMC.res();\n }\n if (this._wKMC.c) {\n this._wKMC.c.abort('LeaderElectionWebLock.die() called');\n }\n return sendLeaderMessage(this, 'death');\n }\n};","import { sleep, randomToken, PROMISE_RESOLVED_VOID, PROMISE_RESOLVED_TRUE, supportsWebLockAPI } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\nimport { LeaderElectionWebLock } from './leader-election-web-lock.js';\nvar LeaderElection = function LeaderElection(broadcastChannel, options) {\n var _this = this;\n this.broadcastChannel = broadcastChannel;\n this._options = options;\n this.isLeader = false;\n this._hasLeader = false;\n this.isDead = false;\n this.token = randomToken();\n\n /**\n * Apply Queue,\n * used to ensure we do not run applyOnce()\n * in parallel.\n */\n this._aplQ = PROMISE_RESOLVED_VOID;\n // amount of unfinished applyOnce() calls\n this._aplQC = 0;\n\n // things to clean up\n this._unl = []; // _unloads\n this._lstns = []; // _listeners\n this._dpL = function () {}; // onduplicate listener\n this._dpLC = false; // true when onduplicate called\n\n /**\n * Even when the own instance is not applying,\n * we still listen to messages to ensure the hasLeader flag\n * is set correctly.\n */\n var hasLeaderListener = function hasLeaderListener(msg) {\n if (msg.context === 'leader') {\n if (msg.action === 'death') {\n _this._hasLeader = false;\n }\n if (msg.action === 'tell') {\n _this._hasLeader = true;\n }\n }\n };\n this.broadcastChannel.addEventListener('internal', hasLeaderListener);\n this._lstns.push(hasLeaderListener);\n};\nLeaderElection.prototype = {\n hasLeader: function hasLeader() {\n return Promise.resolve(this._hasLeader);\n },\n /**\n * Returns true if the instance is leader,\n * false if not.\n * @async\n */\n applyOnce: function applyOnce(\n // true if the applyOnce() call came from the fallbackInterval cycle\n isFromFallbackInterval) {\n var _this2 = this;\n if (this.isLeader) {\n return sleep(0, true);\n }\n if (this.isDead) {\n return sleep(0, false);\n }\n\n /**\n * Already applying more than once,\n * -> wait for the apply queue to be finished.\n */\n if (this._aplQC > 1) {\n return this._aplQ;\n }\n\n /**\n * Add a new apply-run\n */\n var applyRun = function applyRun() {\n /**\n * Optimization shortcuts.\n * Directly return if a previous run\n * has already elected a leader.\n */\n if (_this2.isLeader) {\n return PROMISE_RESOLVED_TRUE;\n }\n var stopCriteria = false;\n var stopCriteriaPromiseResolve;\n /**\n * Resolves when a stop criteria is reached.\n * Uses as a performance shortcut so we do not\n * have to await the responseTime when it is already clear\n * that the election failed.\n */\n var stopCriteriaPromise = new Promise(function (res) {\n stopCriteriaPromiseResolve = function stopCriteriaPromiseResolve() {\n stopCriteria = true;\n res();\n };\n });\n var handleMessage = function handleMessage(msg) {\n if (msg.context === 'leader' && msg.token != _this2.token) {\n if (msg.action === 'apply') {\n // other is applying\n if (msg.token > _this2.token) {\n /**\n * other has higher token\n * -> stop applying and let other become leader.\n */\n stopCriteriaPromiseResolve();\n }\n }\n if (msg.action === 'tell') {\n // other is already leader\n stopCriteriaPromiseResolve();\n _this2._hasLeader = true;\n }\n }\n };\n _this2.broadcastChannel.addEventListener('internal', handleMessage);\n\n /**\n * If the applyOnce() call came from the fallbackInterval,\n * we can assume that the election runs in the background and\n * not critical process is waiting for it.\n * When this is true, we give the other instances\n * more time to answer to messages in the election cycle.\n * This makes it less likely to elect duplicate leaders.\n * But also it takes longer which is not a problem because we anyway\n * run in the background.\n */\n var waitForAnswerTime = isFromFallbackInterval ? _this2._options.responseTime * 4 : _this2._options.responseTime;\n return sendLeaderMessage(_this2, 'apply') // send out that this one is applying\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n })\n // send again in case another instance was just created\n .then(function () {\n return sendLeaderMessage(_this2, 'apply');\n })\n // let others time to respond\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n })[\"catch\"](function () {}).then(function () {\n _this2.broadcastChannel.removeEventListener('internal', handleMessage);\n if (!stopCriteria) {\n // no stop criteria -> own is leader\n return beLeader(_this2).then(function () {\n return true;\n });\n } else {\n // other is leader\n return false;\n }\n });\n };\n this._aplQC = this._aplQC + 1;\n this._aplQ = this._aplQ.then(function () {\n return applyRun();\n }).then(function () {\n _this2._aplQC = _this2._aplQC - 1;\n });\n return this._aplQ.then(function () {\n return _this2.isLeader;\n });\n },\n awaitLeadership: function awaitLeadership() {\n if ( /* _awaitLeadershipPromise */\n !this._aLP) {\n this._aLP = _awaitLeadershipOnce(this);\n }\n return this._aLP;\n },\n set onduplicate(fn) {\n this._dpL = fn;\n },\n die: function die() {\n var _this3 = this;\n this._lstns.forEach(function (listener) {\n return _this3.broadcastChannel.removeEventListener('internal', listener);\n });\n this._lstns = [];\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n this._unl = [];\n if (this.isLeader) {\n this._hasLeader = false;\n this.isLeader = false;\n }\n this.isDead = true;\n return sendLeaderMessage(this, 'death');\n }\n};\n\n/**\n * @param leaderElector {LeaderElector}\n */\nfunction _awaitLeadershipOnce(leaderElector) {\n if (leaderElector.isLeader) {\n return PROMISE_RESOLVED_VOID;\n }\n return new Promise(function (res) {\n var resolved = false;\n function finish() {\n if (resolved) {\n return;\n }\n resolved = true;\n leaderElector.broadcastChannel.removeEventListener('internal', whenDeathListener);\n res(true);\n }\n\n // try once now\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n\n /**\n * Try on fallbackInterval\n * @recursive\n */\n var tryOnFallBack = function tryOnFallBack() {\n return sleep(leaderElector._options.fallbackInterval).then(function () {\n if (leaderElector.isDead || resolved) {\n return;\n }\n if (leaderElector.isLeader) {\n finish();\n } else {\n return leaderElector.applyOnce(true).then(function () {\n if (leaderElector.isLeader) {\n finish();\n } else {\n tryOnFallBack();\n }\n });\n }\n });\n };\n tryOnFallBack();\n\n // try when other leader dies\n var whenDeathListener = function whenDeathListener(msg) {\n if (msg.context === 'leader' && msg.action === 'death') {\n leaderElector._hasLeader = false;\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n }\n };\n leaderElector.broadcastChannel.addEventListener('internal', whenDeathListener);\n leaderElector._lstns.push(whenDeathListener);\n });\n}\nfunction fillOptionsWithDefaults(options, channel) {\n if (!options) options = {};\n options = JSON.parse(JSON.stringify(options));\n if (!options.fallbackInterval) {\n options.fallbackInterval = 3000;\n }\n if (!options.responseTime) {\n options.responseTime = channel.method.averageResponseTime(channel.options);\n }\n return options;\n}\nexport function createLeaderElection(channel, options) {\n if (channel._leaderElector) {\n throw new Error('BroadcastChannel already has a leader-elector');\n }\n options = fillOptionsWithDefaults(options, channel);\n var elector = supportsWebLockAPI() ? new LeaderElectionWebLock(channel, options) : new LeaderElection(channel, options);\n channel._befC.push(function () {\n return elector.die();\n });\n channel._leaderElector = elector;\n return elector;\n}"],"names":["isPromise","obj","then","PROMISE_RESOLVED_FALSE","Promise","resolve","PROMISE_RESOLVED_TRUE","PROMISE_RESOLVED_VOID","sleep","time","resolveWith","res","setTimeout","randomInt","min","max","Math","floor","random","randomToken","toString","substring","lastMs","additional","microSeconds","ms","Date","now","supportsWebLockAPI","navigator","locks","request","micro","type","create","channelName","state","messagesCallback","bc","BroadcastChannel","subFns","onmessage","msg","data","close","channelState","postMessage","messageJson","err","reject","onMessage","fn","canBeUsed","window","self","_pubkey","Error","averageResponseTime","NativeMethod","ttl","Map","ObliviousSet","value","map","has","set","_to","_this","removeTooOldValues","clear","obliviousSet","olderThen","iterator","Symbol","next","delete","getTime","fillOptionsWithDefaults","originalOptions","arguments","length","undefined","options","JSON","parse","stringify","webWorkerSupport","idb","fallbackInterval","onclose","localstorage","removeTimeout","methods","node","maxParallelWrites","useFastPath","DB_PREFIX","OBJECT_STORE_ID","TRANSACTION_SETTINGS","durability","getIdb","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","commitIndexedDBTransaction","tx","commit","createDatabase","IndexedDB","dbName","openRequest","open","onupgradeneeded","ev","db","target","result","createObjectStore","keyPath","autoIncrement","rej","onerror","onsuccess","writeMessage","readerUuid","writeObject","uuid","transaction","oncomplete","objectStore","add","getMessagesHigherThan","lastCursorId","ret","keyRangeValue","IDBKeyRange","bound","Infinity","getAll","getAllRequest","e","openCursor","openCursorRequest","cursor","id","push","removeMessagesById","ids","closed","all","deleteRequest","getOldMessages","msgObk","cleanOldMessages","tooOld","eMIs","writeBlockPromise","readQueuePromises","_readLoop","readNewMessages","_filterMessage","msgObj","messagesCallbackTime","newerMessages","useMessages","filter","sort","msgObjA","msgObjB","forEach","IndexedDBMethod","KEY_PREFIX","getLocalStorage","localStorage","storageKey","key","writeObj","token","setItem","document","createEvent","initEvent","newValue","dispatchEvent","addStorageEventListener","listener","addEventListener","removeStorageEventListener","removeEventListener","ls","removeItem","defaultTime","userAgent","toLowerCase","includes","LocalstorageMethod","SIMULATE_CHANNELS","Set","name","channelArray","Array","from","channel","SimulateMethod","METHODS","chooseMethod","chooseMethods","concat","Boolean","find","m","useMethod","method","OPEN_BROADCAST_CHANNELS","lastId","ENFORCED_OPTIONS","_iL","_onML","_addEL","message","internal","_uMP","_befC","_prepP","_prepareChannel","clearNodeFolder","enforceOptions","prototype","_post","postInternal","listenObj","_removeListenerObject","_addListenerObject","awaitPrepare","_state","isClosed","broadcastChannel","sendPromise","maybePromise","s","_hasMessageListeners","_startListening","o","_stopListening","listenerFn","listenerObject","hundredMsInMicro","minMessageTime","addBrowser","WorkerGlobalScope","oldClose","bind","addNode","process","on","exit","console","trace","isNode","Object","call","USE_METHOD","LISTENERS","startedListening","startListening","runAll","addReturn","remove","run","promises","sendLeaderMessage","leaderElector","action","msgJson","context","beLeader","isLeader","_hasLeader","unloadFn","unloadAdd","die","_unl","isLeaderListener","_dpLC","_dpL","_lstns","LeaderElectionWebLock","_options","isDead","_wKMC","lN","hasLeader","_this2","query","relevantLocks","held","lock","awaitLeadership","_this3","_wLMP","c","AbortController","returnPromise","signal","onduplicate","_fn","_this4","uFn","abort","LeaderElection","_aplQ","_aplQC","hasLeaderListener","applyOnce","isFromFallbackInterval","applyRun","stopCriteria","stopCriteriaPromiseResolve","stopCriteriaPromise","handleMessage","waitForAnswerTime","responseTime","race","_aLP","_awaitLeadershipOnce","resolved","finish","whenDeathListener","tryOnFallBack","createLeaderElection","_leaderElector","elector"],"mappings":"AAAA;AACA;AACA;AACO,SAASA,SAAS,CAACC,GAAG,EAAE;AAC7B,EAAA,OAAOA,GAAG,IAAI,OAAOA,GAAG,CAACC,IAAI,KAAK,UAAU,CAAA;AAC9C,CAAA;AACO,IAAIC,sBAAsB,GAAGC,OAAO,CAACC,OAAO,CAAC,KAAK,CAAC,CAAA;AACnD,IAAIC,qBAAqB,GAAGF,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC,CAAA;AACjD,IAAIE,qBAAqB,GAAGH,OAAO,CAACC,OAAO,EAAE,CAAA;AAC7C,SAASG,KAAK,CAACC,IAAI,EAAEC,WAAW,EAAE;AACvC,EAAA,IAAI,CAACD,IAAI,EAAEA,IAAI,GAAG,CAAC,CAAA;AACnB,EAAA,OAAO,IAAIL,OAAO,CAAC,UAAUO,GAAG,EAAE;IAChC,OAAOC,UAAU,CAAC,YAAY;MAC5B,OAAOD,GAAG,CAACD,WAAW,CAAC,CAAA;KACxB,EAAED,IAAI,CAAC,CAAA;AACV,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAASI,SAAS,CAACC,GAAG,EAAEC,GAAG,EAAE;AAClC,EAAA,OAAOC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,IAAIH,GAAG,GAAGD,GAAG,GAAG,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAA;AAC1D,CAAA;;AAEA;AACA;AACA;AACO,SAASK,WAAW,GAAG;AAC5B,EAAA,OAAOH,IAAI,CAACE,MAAM,EAAE,CAACE,QAAQ,CAAC,EAAE,CAAC,CAACC,SAAS,CAAC,CAAC,CAAC,CAAA;AAChD,CAAA;AACA,IAAIC,MAAM,GAAG,CAAC,CAAA;AACd,IAAIC,UAAU,GAAG,CAAC,CAAA;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAY,GAAG;AAC7B,EAAA,IAAIC,EAAE,GAAGC,IAAI,CAACC,GAAG,EAAE,CAAA;EACnB,IAAIF,EAAE,KAAKH,MAAM,EAAE;AACjBC,IAAAA,UAAU,EAAE,CAAA;AACZ,IAAA,OAAOE,EAAE,GAAG,IAAI,GAAGF,UAAU,CAAA;AAC/B,GAAC,MAAM;AACLD,IAAAA,MAAM,GAAGG,EAAE,CAAA;AACXF,IAAAA,UAAU,GAAG,CAAC,CAAA;IACd,OAAOE,EAAE,GAAG,IAAI,CAAA;AAClB,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACO,SAASG,kBAAkB,GAAG;EACnC,IAAI,OAAOC,SAAS,KAAK,WAAW,IAAI,OAAOA,SAAS,CAACC,KAAK,KAAK,WAAW,IAAI,OAAOD,SAAS,CAACC,KAAK,CAACC,OAAO,KAAK,UAAU,EAAE;AAC/H,IAAA,OAAO,IAAI,CAAA;AACb,GAAC,MAAM;AACL,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AACF;;AC1DO,IAAIP,cAAY,GAAGQ,cAAK,CAAA;AACxB,IAAIC,MAAI,GAAG,QAAQ,CAAA;AACnB,SAASC,QAAM,CAACC,WAAW,EAAE;AAClC,EAAA,IAAIC,KAAK,GAAG;AACVC,IAAAA,gBAAgB,EAAE,IAAI;AACtBC,IAAAA,EAAE,EAAE,IAAIC,gBAAgB,CAACJ,WAAW,CAAC;IACrCK,MAAM,EAAE,EAAE;GACX,CAAA;;AAEDJ,EAAAA,KAAK,CAACE,EAAE,CAACG,SAAS,GAAG,UAAUC,GAAG,EAAE;IAClC,IAAIN,KAAK,CAACC,gBAAgB,EAAE;AAC1BD,MAAAA,KAAK,CAACC,gBAAgB,CAACK,GAAG,CAACC,IAAI,CAAC,CAAA;AAClC,KAAA;GACD,CAAA;AACD,EAAA,OAAOP,KAAK,CAAA;AACd,CAAA;AACO,SAASQ,OAAK,CAACC,YAAY,EAAE;AAClCA,EAAAA,YAAY,CAACP,EAAE,CAACM,KAAK,EAAE,CAAA;EACvBC,YAAY,CAACL,MAAM,GAAG,EAAE,CAAA;AAC1B,CAAA;AACO,SAASM,aAAW,CAACD,YAAY,EAAEE,WAAW,EAAE;EACrD,IAAI;IACFF,YAAY,CAACP,EAAE,CAACQ,WAAW,CAACC,WAAW,EAAE,KAAK,CAAC,CAAA;AAC/C,IAAA,OAAOxC,qBAAqB,CAAA;GAC7B,CAAC,OAAOyC,GAAG,EAAE;AACZ,IAAA,OAAO5C,OAAO,CAAC6C,MAAM,CAACD,GAAG,CAAC,CAAA;AAC5B,GAAA;AACF,CAAA;AACO,SAASE,WAAS,CAACL,YAAY,EAAEM,EAAE,EAAE;EAC1CN,YAAY,CAACR,gBAAgB,GAAGc,EAAE,CAAA;AACpC,CAAA;AACO,SAASC,WAAS,GAAG;AAC1B,EAAA,IAAI,CAAC,OAAOC,MAAM,KAAK,WAAW,IAAI,OAAOC,IAAI,KAAK,WAAW,KAAK,OAAOf,gBAAgB,KAAK,UAAU,EAAE;IAC5G,IAAIA,gBAAgB,CAACgB,OAAO,EAAE;AAC5B,MAAA,MAAM,IAAIC,KAAK,CAAC,qGAAqG,CAAC,CAAA;AACxH,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;AACb,GAAC,MAAM;AACL,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AACF,CAAA;AACO,SAASC,qBAAmB,GAAG;AACpC,EAAA,OAAO,GAAG,CAAA;AACZ,CAAA;AACO,IAAIC,YAAY,GAAG;AACxBxB,EAAAA,MAAM,EAAEA,QAAM;AACdU,EAAAA,KAAK,EAAEA,OAAK;AACZM,EAAAA,SAAS,EAAEA,WAAS;AACpBJ,EAAAA,WAAW,EAAEA,aAAW;AACxBM,EAAAA,SAAS,EAAEA,WAAS;AACpBnB,EAAAA,IAAI,EAAEA,MAAI;AACVwB,EAAAA,mBAAmB,EAAEA,qBAAmB;AACxCjC,EAAAA,YAAY,EAAEA,cAAAA;AAChB,CAAC;;ACrDD;;;;;AAKA,IAAA,YAAA,gBAAA,YAAA;AAQI,EAAA,SAAA,YAAA,CACoBmC,GAAW,EAAA;AAAX,IAAA,IAAA,CAAA,GAAG,GAAHA,GAAG,CAAA;IARP,IAAG,CAAA,GAAA,GAAG,IAAIC,GAAG,EAAE,CAAA;AAE/B;;;;AAIO,IAAA,IAAA,CAAA,GAAG,GAAY,KAAK,CAAA;AAGvB,GAAA;EAEJC,YAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAIC,KAAQ,EAAA;AACR,IAAA,OAAO,IAAI,CAACC,GAAG,CAACC,GAAG,CAACF,KAAK,CAAC,CAAA;GAC7B,CAAA;EAEDD,YAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAIC,KAAQ,EAAA;AAAZ,IAAA,IAAA,KAAA,GAAA,IAAA,CAAA;IACI,IAAI,CAACC,GAAG,CAACE,GAAG,CAACH,KAAK,EAAEnC,GAAG,EAAE,CAAC,CAAA;AAE1B;;;;;;AAMA,IAAA,IAAI,CAAC,IAAI,CAACuC,GAAG,EAAE;MACX,IAAI,CAACA,GAAG,GAAG,IAAI,CAAA;AACftD,MAAAA,UAAU,CAAC,YAAA;QACPuD,KAAI,CAACD,GAAG,GAAG,KAAK,CAAA;QAChBE,kBAAkB,CAACD,KAAI,CAAC,CAAA;OAC3B,EAAE,CAAC,CAAC,CAAA;;GAEZ,CAAA;AAEDN,EAAAA,YAAAA,CAAAA,SAAAA,CAAAA,KAAK,GAAL,YAAA;AACI,IAAA,IAAI,CAACE,GAAG,CAACM,KAAK,EAAE,CAAA;GACnB,CAAA;EACL,OAAC,YAAA,CAAA;AAAD,CAAC,EArCD,CAAA;AAwCA;;;;AAIM,SAAUD,kBAAkB,CAC9BE,YAA0B,EAAA;AAE1B,EAAA,IAAMC,SAAS,GAAG5C,GAAG,EAAE,GAAG2C,YAAY,CAACX,GAAG,CAAA;EAC1C,IAAMa,QAAQ,GAAGF,YAAY,CAACP,GAAG,CAACU,MAAM,CAACD,QAAQ,CAAC,EAAE,CAAA;AAEpD;;;;AAIA,EAAA,OAAO,IAAI,EAAE;AAET,IAAA,IAAME,IAAI,GAAGF,QAAQ,CAACE,IAAI,EAAE,CAACZ,KAAK,CAAA;IAElC,IAAI,CAACY,IAAI,EAAE;AACP,MAAA,OAAO;;;AAEX,IAAA,IAAMZ,KAAK,GAAGY,IAAI,CAAC,CAAC,CAAC,CAAA;AACrB,IAAA,IAAMjE,IAAI,GAAGiE,IAAI,CAAC,CAAC,CAAC,CAAA;IACpB,IAAIjE,IAAI,GAAG8D,SAAS,EAAE;AAClBD,MAAAA,YAAY,CAACP,GAAG,CAACY,MAAM,CAACb,KAAK,CAAC,CAAA;KACjC,MAAM;AACH;AACA,MAAA,OAAA;;;AAGZ,CAAA;AAEM,SAAUnC,GAAG,GAAA;AACf,EAAA,OAAO,IAAID,IAAI,EAAE,CAACkD,OAAO,EAAE,CAAA;AAC/B;;AChFO,SAASC,yBAAuB,GAAG;EACxC,IAAIC,eAAe,GAAGC,SAAS,CAACC,MAAM,GAAG,CAAC,IAAID,SAAS,CAAC,CAAC,CAAC,KAAKE,SAAS,GAAGF,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AAC5F,EAAA,IAAIG,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACP,eAAe,CAAC,CAAC,CAAA;;AAEzD;EACA,IAAI,OAAOI,OAAO,CAACI,gBAAgB,KAAK,WAAW,EAAEJ,OAAO,CAACI,gBAAgB,GAAG,IAAI,CAAA;;AAEpF;EACA,IAAI,CAACJ,OAAO,CAACK,GAAG,EAAEL,OAAO,CAACK,GAAG,GAAG,EAAE,CAAA;AAClC;AACA,EAAA,IAAI,CAACL,OAAO,CAACK,GAAG,CAAC5B,GAAG,EAAEuB,OAAO,CAACK,GAAG,CAAC5B,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;AACjD,EAAA,IAAI,CAACuB,OAAO,CAACK,GAAG,CAACC,gBAAgB,EAAEN,OAAO,CAACK,GAAG,CAACC,gBAAgB,GAAG,GAAG,CAAA;AACrE;EACA,IAAIV,eAAe,CAACS,GAAG,IAAI,OAAOT,eAAe,CAACS,GAAG,CAACE,OAAO,KAAK,UAAU,EAAEP,OAAO,CAACK,GAAG,CAACE,OAAO,GAAGX,eAAe,CAACS,GAAG,CAACE,OAAO,CAAA;;AAE/H;EACA,IAAI,CAACP,OAAO,CAACQ,YAAY,EAAER,OAAO,CAACQ,YAAY,GAAG,EAAE,CAAA;AACpD,EAAA,IAAI,CAACR,OAAO,CAACQ,YAAY,CAACC,aAAa,EAAET,OAAO,CAACQ,YAAY,CAACC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEvF;EACA,IAAIb,eAAe,CAACc,OAAO,EAAEV,OAAO,CAACU,OAAO,GAAGd,eAAe,CAACc,OAAO,CAAA;;AAEtE;EACA,IAAI,CAACV,OAAO,CAACW,IAAI,EAAEX,OAAO,CAACW,IAAI,GAAG,EAAE,CAAA;AACpC,EAAA,IAAI,CAACX,OAAO,CAACW,IAAI,CAAClC,GAAG,EAAEuB,OAAO,CAACW,IAAI,CAAClC,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;AACxD;AACF;AACA;AACA;AACE,EAAA,IAAI,CAACuB,OAAO,CAACW,IAAI,CAACC,iBAAiB,EAAEZ,OAAO,CAACW,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAAA;AAC1E,EAAA,IAAI,OAAOZ,OAAO,CAACW,IAAI,CAACE,WAAW,KAAK,WAAW,EAAEb,OAAO,CAACW,IAAI,CAACE,WAAW,GAAG,IAAI,CAAA;AACpF,EAAA,OAAOb,OAAO,CAAA;AAChB;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGO,IAAI1D,cAAY,GAAGQ,cAAK,CAAA;AAG/B,IAAIgE,SAAS,GAAG,6BAA6B,CAAA;AAC7C,IAAIC,eAAe,GAAG,UAAU,CAAA;;AAEhC;AACA;AACA;AACA;AACO,IAAIC,oBAAoB,GAAG;AAChCC,EAAAA,UAAU,EAAE,SAAA;AACd,CAAC,CAAA;AACM,IAAIlE,MAAI,GAAG,KAAK,CAAA;AAChB,SAASmE,MAAM,GAAG;AACvB,EAAA,IAAI,OAAOC,SAAS,KAAK,WAAW,EAAE,OAAOA,SAAS,CAAA;AACtD,EAAA,IAAI,OAAOhD,MAAM,KAAK,WAAW,EAAE;IACjC,IAAI,OAAOA,MAAM,CAACiD,YAAY,KAAK,WAAW,EAAE,OAAOjD,MAAM,CAACiD,YAAY,CAAA;IAC1E,IAAI,OAAOjD,MAAM,CAACkD,eAAe,KAAK,WAAW,EAAE,OAAOlD,MAAM,CAACkD,eAAe,CAAA;IAChF,IAAI,OAAOlD,MAAM,CAACmD,WAAW,KAAK,WAAW,EAAE,OAAOnD,MAAM,CAACmD,WAAW,CAAA;AAC1E,GAAA;AACA,EAAA,OAAO,KAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,0BAA0B,CAACC,EAAE,EAAE;EAC7C,IAAIA,EAAE,CAACC,MAAM,EAAE;IACbD,EAAE,CAACC,MAAM,EAAE,CAAA;AACb,GAAA;AACF,CAAA;AACO,SAASC,cAAc,CAACzE,WAAW,EAAE;EAC1C,IAAI0E,SAAS,GAAGT,MAAM,EAAE,CAAA;;AAExB;AACA,EAAA,IAAIU,MAAM,GAAGd,SAAS,GAAG7D,WAAW,CAAA;;AAEpC;AACF;AACA;AACA;AACA;AACE,EAAA,IAAI4E,WAAW,GAAGF,SAAS,CAACG,IAAI,CAACF,MAAM,CAAC,CAAA;AACxCC,EAAAA,WAAW,CAACE,eAAe,GAAG,UAAUC,EAAE,EAAE;AAC1C,IAAA,IAAIC,EAAE,GAAGD,EAAE,CAACE,MAAM,CAACC,MAAM,CAAA;AACzBF,IAAAA,EAAE,CAACG,iBAAiB,CAACrB,eAAe,EAAE;AACpCsB,MAAAA,OAAO,EAAE,IAAI;AACbC,MAAAA,aAAa,EAAE,IAAA;AACjB,KAAC,CAAC,CAAA;GACH,CAAA;AACD,EAAA,OAAO,IAAIpH,OAAO,CAAC,UAAUO,GAAG,EAAE8G,GAAG,EAAE;AACrCV,IAAAA,WAAW,CAACW,OAAO,GAAG,UAAUR,EAAE,EAAE;MAClC,OAAOO,GAAG,CAACP,EAAE,CAAC,CAAA;KACf,CAAA;IACDH,WAAW,CAACY,SAAS,GAAG,YAAY;AAClChH,MAAAA,GAAG,CAACoG,WAAW,CAACM,MAAM,CAAC,CAAA;KACxB,CAAA;AACH,GAAC,CAAC,CAAA;AACJ,CAAA;;AAEA;AACA;AACA;AACA;AACO,SAASO,YAAY,CAACT,EAAE,EAAEU,UAAU,EAAE9E,WAAW,EAAE;AACxD,EAAA,IAAItC,IAAI,GAAGiB,IAAI,CAACC,GAAG,EAAE,CAAA;AACrB,EAAA,IAAImG,WAAW,GAAG;AAChBC,IAAAA,IAAI,EAAEF,UAAU;AAChBpH,IAAAA,IAAI,EAAEA,IAAI;AACVkC,IAAAA,IAAI,EAAEI,WAAAA;GACP,CAAA;AACD,EAAA,IAAI2D,EAAE,GAAGS,EAAE,CAACa,WAAW,CAAC,CAAC/B,eAAe,CAAC,EAAE,WAAW,EAAEC,oBAAoB,CAAC,CAAA;AAC7E,EAAA,OAAO,IAAI9F,OAAO,CAAC,UAAUO,GAAG,EAAE8G,GAAG,EAAE;IACrCf,EAAE,CAACuB,UAAU,GAAG,YAAY;AAC1B,MAAA,OAAOtH,GAAG,EAAE,CAAA;KACb,CAAA;AACD+F,IAAAA,EAAE,CAACgB,OAAO,GAAG,UAAUR,EAAE,EAAE;MACzB,OAAOO,GAAG,CAACP,EAAE,CAAC,CAAA;KACf,CAAA;AACD,IAAA,IAAIgB,WAAW,GAAGxB,EAAE,CAACwB,WAAW,CAACjC,eAAe,CAAC,CAAA;AACjDiC,IAAAA,WAAW,CAACC,GAAG,CAACL,WAAW,CAAC,CAAA;IAC5BrB,0BAA0B,CAACC,EAAE,CAAC,CAAA;AAChC,GAAC,CAAC,CAAA;AACJ,CAAA;AAmBO,SAAS0B,qBAAqB,CAACjB,EAAE,EAAEkB,YAAY,EAAE;EACtD,IAAI3B,EAAE,GAAGS,EAAE,CAACa,WAAW,CAAC/B,eAAe,EAAE,UAAU,EAAEC,oBAAoB,CAAC,CAAA;AAC1E,EAAA,IAAIgC,WAAW,GAAGxB,EAAE,CAACwB,WAAW,CAACjC,eAAe,CAAC,CAAA;EACjD,IAAIqC,GAAG,GAAG,EAAE,CAAA;EACZ,IAAIC,aAAa,GAAGC,WAAW,CAACC,KAAK,CAACJ,YAAY,GAAG,CAAC,EAAEK,QAAQ,CAAC,CAAA;;AAEjE;AACF;AACA;AACA;AACA;EACE,IAAIR,WAAW,CAACS,MAAM,EAAE;AACtB,IAAA,IAAIC,aAAa,GAAGV,WAAW,CAACS,MAAM,CAACJ,aAAa,CAAC,CAAA;AACrD,IAAA,OAAO,IAAInI,OAAO,CAAC,UAAUO,GAAG,EAAE8G,GAAG,EAAE;AACrCmB,MAAAA,aAAa,CAAClB,OAAO,GAAG,UAAU1E,GAAG,EAAE;QACrC,OAAOyE,GAAG,CAACzE,GAAG,CAAC,CAAA;OAChB,CAAA;AACD4F,MAAAA,aAAa,CAACjB,SAAS,GAAG,UAAUkB,CAAC,EAAE;AACrClI,QAAAA,GAAG,CAACkI,CAAC,CAACzB,MAAM,CAACC,MAAM,CAAC,CAAA;OACrB,CAAA;AACH,KAAC,CAAC,CAAA;AACJ,GAAA;AACA,EAAA,SAASyB,UAAU,GAAG;AACpB;AACA;AACA;IACA,IAAI;MACFP,aAAa,GAAGC,WAAW,CAACC,KAAK,CAACJ,YAAY,GAAG,CAAC,EAAEK,QAAQ,CAAC,CAAA;AAC7D,MAAA,OAAOR,WAAW,CAACY,UAAU,CAACP,aAAa,CAAC,CAAA;KAC7C,CAAC,OAAOM,CAAC,EAAE;MACV,OAAOX,WAAW,CAACY,UAAU,EAAE,CAAA;AACjC,KAAA;AACF,GAAA;AACA,EAAA,OAAO,IAAI1I,OAAO,CAAC,UAAUO,GAAG,EAAE8G,GAAG,EAAE;IACrC,IAAIsB,iBAAiB,GAAGD,UAAU,EAAE,CAAA;AACpCC,IAAAA,iBAAiB,CAACrB,OAAO,GAAG,UAAU1E,GAAG,EAAE;MACzC,OAAOyE,GAAG,CAACzE,GAAG,CAAC,CAAA;KAChB,CAAA;AACD+F,IAAAA,iBAAiB,CAACpB,SAAS,GAAG,UAAUT,EAAE,EAAE;AAC1C,MAAA,IAAI8B,MAAM,GAAG9B,EAAE,CAACE,MAAM,CAACC,MAAM,CAAA;AAC7B,MAAA,IAAI2B,MAAM,EAAE;QACV,IAAIA,MAAM,CAAClF,KAAK,CAACmF,EAAE,GAAGZ,YAAY,GAAG,CAAC,EAAE;AACtCW,UAAAA,MAAM,CAAC,UAAU,CAAC,CAACX,YAAY,GAAG,CAAC,CAAC,CAAA;AACtC,SAAC,MAAM;AACLC,UAAAA,GAAG,CAACY,IAAI,CAACF,MAAM,CAAClF,KAAK,CAAC,CAAA;UACtBkF,MAAM,CAAC,UAAU,CAAC,EAAE,CAAA;AACtB,SAAA;AACF,OAAC,MAAM;QACLvC,0BAA0B,CAACC,EAAE,CAAC,CAAA;QAC9B/F,GAAG,CAAC2H,GAAG,CAAC,CAAA;AACV,OAAA;KACD,CAAA;AACH,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAASa,kBAAkB,CAACtG,YAAY,EAAEuG,GAAG,EAAE;EACpD,IAAIvG,YAAY,CAACwG,MAAM,EAAE;AACvB,IAAA,OAAOjJ,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC,CAAA;AAC5B,GAAA;AACA,EAAA,IAAIqG,EAAE,GAAG7D,YAAY,CAACsE,EAAE,CAACa,WAAW,CAAC/B,eAAe,EAAE,WAAW,EAAEC,oBAAoB,CAAC,CAAA;AACxF,EAAA,IAAIgC,WAAW,GAAGxB,EAAE,CAACwB,WAAW,CAACjC,eAAe,CAAC,CAAA;EACjD,OAAO7F,OAAO,CAACkJ,GAAG,CAACF,GAAG,CAACrF,GAAG,CAAC,UAAUkF,EAAE,EAAE;IACvC,IAAIM,aAAa,GAAGrB,WAAW,CAAC,QAAQ,CAAC,CAACe,EAAE,CAAC,CAAA;AAC7C,IAAA,OAAO,IAAI7I,OAAO,CAAC,UAAUO,GAAG,EAAE;MAChC4I,aAAa,CAAC5B,SAAS,GAAG,YAAY;AACpC,QAAA,OAAOhH,GAAG,EAAE,CAAA;OACb,CAAA;AACH,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAC,CAAA;AACL,CAAA;AACO,SAAS6I,cAAc,CAACrC,EAAE,EAAExD,GAAG,EAAE;AACtC,EAAA,IAAIY,SAAS,GAAG7C,IAAI,CAACC,GAAG,EAAE,GAAGgC,GAAG,CAAA;EAChC,IAAI+C,EAAE,GAAGS,EAAE,CAACa,WAAW,CAAC/B,eAAe,EAAE,UAAU,EAAEC,oBAAoB,CAAC,CAAA;AAC1E,EAAA,IAAIgC,WAAW,GAAGxB,EAAE,CAACwB,WAAW,CAACjC,eAAe,CAAC,CAAA;EACjD,IAAIqC,GAAG,GAAG,EAAE,CAAA;AACZ,EAAA,OAAO,IAAIlI,OAAO,CAAC,UAAUO,GAAG,EAAE;IAChCuH,WAAW,CAACY,UAAU,EAAE,CAACnB,SAAS,GAAG,UAAUT,EAAE,EAAE;AACjD,MAAA,IAAI8B,MAAM,GAAG9B,EAAE,CAACE,MAAM,CAACC,MAAM,CAAA;AAC7B,MAAA,IAAI2B,MAAM,EAAE;AACV,QAAA,IAAIS,MAAM,GAAGT,MAAM,CAAClF,KAAK,CAAA;AACzB,QAAA,IAAI2F,MAAM,CAAChJ,IAAI,GAAG8D,SAAS,EAAE;AAC3B+D,UAAAA,GAAG,CAACY,IAAI,CAACO,MAAM,CAAC,CAAA;AAChB;UACAT,MAAM,CAAC,UAAU,CAAC,EAAE,CAAA;AACtB,SAAC,MAAM;AACL;UACAvC,0BAA0B,CAACC,EAAE,CAAC,CAAA;UAC9B/F,GAAG,CAAC2H,GAAG,CAAC,CAAA;AACV,SAAA;AACF,OAAC,MAAM;QACL3H,GAAG,CAAC2H,GAAG,CAAC,CAAA;AACV,OAAA;KACD,CAAA;AACH,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAASoB,gBAAgB,CAAC7G,YAAY,EAAE;AAC7C,EAAA,OAAO2G,cAAc,CAAC3G,YAAY,CAACsE,EAAE,EAAEtE,YAAY,CAACqC,OAAO,CAACK,GAAG,CAAC5B,GAAG,CAAC,CAACzD,IAAI,CAAC,UAAUyJ,MAAM,EAAE;IAC1F,OAAOR,kBAAkB,CAACtG,YAAY,EAAE8G,MAAM,CAAC5F,GAAG,CAAC,UAAUrB,GAAG,EAAE;MAChE,OAAOA,GAAG,CAACuG,EAAE,CAAA;AACf,KAAC,CAAC,CAAC,CAAA;AACL,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAAS/G,QAAM,CAACC,WAAW,EAAE+C,OAAO,EAAE;AAC3CA,EAAAA,OAAO,GAAGL,yBAAuB,CAACK,OAAO,CAAC,CAAA;EAC1C,OAAO0B,cAAc,CAACzE,WAAW,CAAC,CAACjC,IAAI,CAAC,UAAUiH,EAAE,EAAE;AACpD,IAAA,IAAI/E,KAAK,GAAG;AACViH,MAAAA,MAAM,EAAE,KAAK;AACbhB,MAAAA,YAAY,EAAE,CAAC;AACflG,MAAAA,WAAW,EAAEA,WAAW;AACxB+C,MAAAA,OAAO,EAAEA,OAAO;MAChB6C,IAAI,EAAE5G,WAAW,EAAE;AACnB;AACN;AACA;AACA;AACA;MACMyI,IAAI,EAAE,IAAI/F,YAAY,CAACqB,OAAO,CAACK,GAAG,CAAC5B,GAAG,GAAG,CAAC,CAAC;AAC3C;AACAkG,MAAAA,iBAAiB,EAAEtJ,qBAAqB;AACxC8B,MAAAA,gBAAgB,EAAE,IAAI;AACtByH,MAAAA,iBAAiB,EAAE,EAAE;AACrB3C,MAAAA,EAAE,EAAEA,EAAAA;KACL,CAAA;;AAED;AACJ;AACA;AACA;AACA;AACA;IACIA,EAAE,CAAC1B,OAAO,GAAG,YAAY;MACvBrD,KAAK,CAACiH,MAAM,GAAG,IAAI,CAAA;MACnB,IAAInE,OAAO,CAACK,GAAG,CAACE,OAAO,EAAEP,OAAO,CAACK,GAAG,CAACE,OAAO,EAAE,CAAA;KAC/C,CAAA;;AAED;AACJ;AACA;AACA;AACA;IACIsE,SAAS,CAAC3H,KAAK,CAAC,CAAA;AAChB,IAAA,OAAOA,KAAK,CAAA;AACd,GAAC,CAAC,CAAA;AACJ,CAAA;AACA,SAAS2H,SAAS,CAAC3H,KAAK,EAAE;EACxB,IAAIA,KAAK,CAACiH,MAAM,EAAE,OAAA;AAClBW,EAAAA,eAAe,CAAC5H,KAAK,CAAC,CAAClC,IAAI,CAAC,YAAY;IACtC,OAAOM,KAAK,CAAC4B,KAAK,CAAC8C,OAAO,CAACK,GAAG,CAACC,gBAAgB,CAAC,CAAA;AAClD,GAAC,CAAC,CAACtF,IAAI,CAAC,YAAY;IAClB,OAAO6J,SAAS,CAAC3H,KAAK,CAAC,CAAA;AACzB,GAAC,CAAC,CAAA;AACJ,CAAA;AACA,SAAS6H,cAAc,CAACC,MAAM,EAAE9H,KAAK,EAAE;EACrC,IAAI8H,MAAM,CAACnC,IAAI,KAAK3F,KAAK,CAAC2F,IAAI,EAAE,OAAO,KAAK,CAAC;AAC7C,EAAA,IAAI3F,KAAK,CAACwH,IAAI,CAAC5F,GAAG,CAACkG,MAAM,CAACjB,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC;AAC5C,EAAA,IAAIiB,MAAM,CAACvH,IAAI,CAAClC,IAAI,GAAG2B,KAAK,CAAC+H,oBAAoB,EAAE,OAAO,KAAK,CAAC;AAChE,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;;AAEA;AACA;AACA;AACA,SAASH,eAAe,CAAC5H,KAAK,EAAE;AAC9B;AACA,EAAA,IAAIA,KAAK,CAACiH,MAAM,EAAE,OAAO9I,qBAAqB,CAAA;;AAE9C;AACA,EAAA,IAAI,CAAC6B,KAAK,CAACC,gBAAgB,EAAE,OAAO9B,qBAAqB,CAAA;AACzD,EAAA,OAAO6H,qBAAqB,CAAChG,KAAK,CAAC+E,EAAE,EAAE/E,KAAK,CAACiG,YAAY,CAAC,CAACnI,IAAI,CAAC,UAAUkK,aAAa,EAAE;AACvF,IAAA,IAAIC,WAAW,GAAGD,aAAAA;AAClB;AACJ;AACA;AACA;AACA,QAAQE,MAAM,CAAC,UAAUJ,MAAM,EAAE;MAC3B,OAAO,CAAC,CAACA,MAAM,CAAA;AACjB,KAAC,CAAC,CAACnG,GAAG,CAAC,UAAUmG,MAAM,EAAE;AACvB,MAAA,IAAIA,MAAM,CAACjB,EAAE,GAAG7G,KAAK,CAACiG,YAAY,EAAE;AAClCjG,QAAAA,KAAK,CAACiG,YAAY,GAAG6B,MAAM,CAACjB,EAAE,CAAA;AAChC,OAAA;AACA,MAAA,OAAOiB,MAAM,CAAA;AACf,KAAC,CAAC,CAACI,MAAM,CAAC,UAAUJ,MAAM,EAAE;AAC1B,MAAA,OAAOD,cAAc,CAACC,MAAM,EAAE9H,KAAK,CAAC,CAAA;KACrC,CAAC,CAACmI,IAAI,CAAC,UAAUC,OAAO,EAAEC,OAAO,EAAE;AAClC,MAAA,OAAOD,OAAO,CAAC/J,IAAI,GAAGgK,OAAO,CAAChK,IAAI,CAAA;KACnC,CAAC,CAAC;AACH4J,IAAAA,WAAW,CAACK,OAAO,CAAC,UAAUR,MAAM,EAAE;MACpC,IAAI9H,KAAK,CAACC,gBAAgB,EAAE;QAC1BD,KAAK,CAACwH,IAAI,CAACzB,GAAG,CAAC+B,MAAM,CAACjB,EAAE,CAAC,CAAA;AACzB7G,QAAAA,KAAK,CAACC,gBAAgB,CAAC6H,MAAM,CAACvH,IAAI,CAAC,CAAA;AACrC,OAAA;AACF,KAAC,CAAC,CAAA;AACF,IAAA,OAAOpC,qBAAqB,CAAA;AAC9B,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAASqC,OAAK,CAACC,YAAY,EAAE;EAClCA,YAAY,CAACwG,MAAM,GAAG,IAAI,CAAA;AAC1BxG,EAAAA,YAAY,CAACsE,EAAE,CAACvE,KAAK,EAAE,CAAA;AACzB,CAAA;AACO,SAASE,aAAW,CAACD,YAAY,EAAEE,WAAW,EAAE;EACrDF,YAAY,CAACgH,iBAAiB,GAAGhH,YAAY,CAACgH,iBAAiB,CAAC3J,IAAI,CAAC,YAAY;IAC/E,OAAO0H,YAAY,CAAC/E,YAAY,CAACsE,EAAE,EAAEtE,YAAY,CAACkF,IAAI,EAAEhF,WAAW,CAAC,CAAA;AACtE,GAAC,CAAC,CAAC7C,IAAI,CAAC,YAAY;IAClB,IAAIW,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE;AAC1B;MACA6I,gBAAgB,CAAC7G,YAAY,CAAC,CAAA;AAChC,KAAA;AACF,GAAC,CAAC,CAAA;EACF,OAAOA,YAAY,CAACgH,iBAAiB,CAAA;AACvC,CAAA;AACO,SAAS3G,WAAS,CAACL,YAAY,EAAEM,EAAE,EAAE1C,IAAI,EAAE;EAChDoC,YAAY,CAACsH,oBAAoB,GAAG1J,IAAI,CAAA;EACxCoC,YAAY,CAACR,gBAAgB,GAAGc,EAAE,CAAA;EAClC6G,eAAe,CAACnH,YAAY,CAAC,CAAA;AAC/B,CAAA;AACO,SAASO,WAAS,GAAG;EAC1B,OAAO,CAAC,CAACgD,MAAM,EAAE,CAAA;AACnB,CAAA;AACO,SAAS3C,qBAAmB,CAACyB,OAAO,EAAE;AAC3C,EAAA,OAAOA,OAAO,CAACK,GAAG,CAACC,gBAAgB,GAAG,CAAC,CAAA;AACzC,CAAA;AACO,IAAImF,eAAe,GAAG;AAC3BzI,EAAAA,MAAM,EAAEA,QAAM;AACdU,EAAAA,KAAK,EAAEA,OAAK;AACZM,EAAAA,SAAS,EAAEA,WAAS;AACpBJ,EAAAA,WAAW,EAAEA,aAAW;AACxBM,EAAAA,SAAS,EAAEA,WAAS;AACpBnB,EAAAA,IAAI,EAAEA,MAAI;AACVwB,EAAAA,mBAAmB,EAAEA,qBAAmB;AACxCjC,EAAAA,YAAY,EAAEA,cAAAA;AAChB,CAAC;;ACxVD;AACA;AACA;AACA;AACA;AACA;AACA;AAKO,IAAIA,cAAY,GAAGQ,cAAK,CAAA;AAC/B,IAAI4I,UAAU,GAAG,0BAA0B,CAAA;AACpC,IAAI3I,MAAI,GAAG,cAAc,CAAA;;AAEhC;AACA;AACA;AACA;AACO,SAAS4I,eAAe,GAAG;AAChC,EAAA,IAAIC,YAAY,CAAA;AAChB,EAAA,IAAI,OAAOzH,MAAM,KAAK,WAAW,EAAE,OAAO,IAAI,CAAA;EAC9C,IAAI;IACFyH,YAAY,GAAGzH,MAAM,CAACyH,YAAY,CAAA;IAClCA,YAAY,GAAGzH,MAAM,CAAC,2BAA2B,CAAC,IAAIA,MAAM,CAACyH,YAAY,CAAA;GAC1E,CAAC,OAAOjC,CAAC,EAAE;AACV;AACA;AACA;AAAA,GAAA;AAEF,EAAA,OAAOiC,YAAY,CAAA;AACrB,CAAA;AACO,SAASC,UAAU,CAAC5I,WAAW,EAAE;EACtC,OAAOyI,UAAU,GAAGzI,WAAW,CAAA;AACjC,CAAA;;AAEA;AACA;AACA;AACA;AACO,SAASW,aAAW,CAACD,YAAY,EAAEE,WAAW,EAAE;AACrD,EAAA,OAAO,IAAI3C,OAAO,CAAC,UAAUO,GAAG,EAAE;AAChCH,IAAAA,KAAK,EAAE,CAACN,IAAI,CAAC,YAAY;AACvB,MAAA,IAAI8K,GAAG,GAAGD,UAAU,CAAClI,YAAY,CAACV,WAAW,CAAC,CAAA;AAC9C,MAAA,IAAI8I,QAAQ,GAAG;QACbC,KAAK,EAAE/J,WAAW,EAAE;AACpBV,QAAAA,IAAI,EAAEiB,IAAI,CAACC,GAAG,EAAE;AAChBgB,QAAAA,IAAI,EAAEI,WAAW;QACjBgF,IAAI,EAAElF,YAAY,CAACkF,IAAAA;OACpB,CAAA;AACD,MAAA,IAAIjE,KAAK,GAAGqB,IAAI,CAACE,SAAS,CAAC4F,QAAQ,CAAC,CAAA;AACpCJ,MAAAA,eAAe,EAAE,CAACM,OAAO,CAACH,GAAG,EAAElH,KAAK,CAAC,CAAA;;AAErC;AACN;AACA;AACA;AACA;AACM,MAAA,IAAIoD,EAAE,GAAGkE,QAAQ,CAACC,WAAW,CAAC,OAAO,CAAC,CAAA;MACtCnE,EAAE,CAACoE,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;MACnCpE,EAAE,CAAC8D,GAAG,GAAGA,GAAG,CAAA;MACZ9D,EAAE,CAACqE,QAAQ,GAAGzH,KAAK,CAAA;AACnBT,MAAAA,MAAM,CAACmI,aAAa,CAACtE,EAAE,CAAC,CAAA;AACxBvG,MAAAA,GAAG,EAAE,CAAA;AACP,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAAS8K,uBAAuB,CAACtJ,WAAW,EAAEgB,EAAE,EAAE;AACvD,EAAA,IAAI6H,GAAG,GAAGD,UAAU,CAAC5I,WAAW,CAAC,CAAA;AACjC,EAAA,IAAIuJ,QAAQ,GAAG,SAASA,QAAQ,CAACxE,EAAE,EAAE;AACnC,IAAA,IAAIA,EAAE,CAAC8D,GAAG,KAAKA,GAAG,EAAE;MAClB7H,EAAE,CAACgC,IAAI,CAACC,KAAK,CAAC8B,EAAE,CAACqE,QAAQ,CAAC,CAAC,CAAA;AAC7B,KAAA;GACD,CAAA;AACDlI,EAAAA,MAAM,CAACsI,gBAAgB,CAAC,SAAS,EAAED,QAAQ,CAAC,CAAA;AAC5C,EAAA,OAAOA,QAAQ,CAAA;AACjB,CAAA;AACO,SAASE,0BAA0B,CAACF,QAAQ,EAAE;AACnDrI,EAAAA,MAAM,CAACwI,mBAAmB,CAAC,SAAS,EAAEH,QAAQ,CAAC,CAAA;AACjD,CAAA;AACO,SAASxJ,QAAM,CAACC,WAAW,EAAE+C,OAAO,EAAE;AAC3CA,EAAAA,OAAO,GAAGL,yBAAuB,CAACK,OAAO,CAAC,CAAA;EAC1C,IAAI,CAAC9B,WAAS,EAAE,EAAE;AAChB,IAAA,MAAM,IAAII,KAAK,CAAC,+CAA+C,CAAC,CAAA;AAClE,GAAA;EACA,IAAIuE,IAAI,GAAG5G,WAAW,EAAE,CAAA;;AAExB;AACF;AACA;AACA;AACA;EACE,IAAIyI,IAAI,GAAG,IAAI/F,YAAY,CAACqB,OAAO,CAACQ,YAAY,CAACC,aAAa,CAAC,CAAA;AAC/D,EAAA,IAAIvD,KAAK,GAAG;AACVD,IAAAA,WAAW,EAAEA,WAAW;AACxB4F,IAAAA,IAAI,EAAEA,IAAI;IACV6B,IAAI,EAAEA,IAAI;GACX,CAAA;;EAEDxH,KAAK,CAACsJ,QAAQ,GAAGD,uBAAuB,CAACtJ,WAAW,EAAE,UAAU+H,MAAM,EAAE;AACtE,IAAA,IAAI,CAAC9H,KAAK,CAACC,gBAAgB,EAAE,OAAO;AACpC,IAAA,IAAI6H,MAAM,CAACnC,IAAI,KAAKA,IAAI,EAAE,OAAO;AACjC,IAAA,IAAI,CAACmC,MAAM,CAACgB,KAAK,IAAItB,IAAI,CAAC5F,GAAG,CAACkG,MAAM,CAACgB,KAAK,CAAC,EAAE,OAAO;AACpD,IAAA,IAAIhB,MAAM,CAACvH,IAAI,CAAClC,IAAI,IAAIyJ,MAAM,CAACvH,IAAI,CAAClC,IAAI,GAAG2B,KAAK,CAAC+H,oBAAoB,EAAE,OAAO;;AAE9EP,IAAAA,IAAI,CAACzB,GAAG,CAAC+B,MAAM,CAACgB,KAAK,CAAC,CAAA;AACtB9I,IAAAA,KAAK,CAACC,gBAAgB,CAAC6H,MAAM,CAACvH,IAAI,CAAC,CAAA;AACrC,GAAC,CAAC,CAAA;AACF,EAAA,OAAOP,KAAK,CAAA;AACd,CAAA;AACO,SAASQ,OAAK,CAACC,YAAY,EAAE;AAClC+I,EAAAA,0BAA0B,CAAC/I,YAAY,CAAC6I,QAAQ,CAAC,CAAA;AACnD,CAAA;AACO,SAASxI,WAAS,CAACL,YAAY,EAAEM,EAAE,EAAE1C,IAAI,EAAE;EAChDoC,YAAY,CAACsH,oBAAoB,GAAG1J,IAAI,CAAA;EACxCoC,YAAY,CAACR,gBAAgB,GAAGc,EAAE,CAAA;AACpC,CAAA;AACO,SAASC,WAAS,GAAG;EAC1B,IAAI0I,EAAE,GAAGjB,eAAe,EAAE,CAAA;AAC1B,EAAA,IAAI,CAACiB,EAAE,EAAE,OAAO,KAAK,CAAA;EACrB,IAAI;IACF,IAAId,GAAG,GAAG,0BAA0B,CAAA;AACpCc,IAAAA,EAAE,CAACX,OAAO,CAACH,GAAG,EAAE,OAAO,CAAC,CAAA;AACxBc,IAAAA,EAAE,CAACC,UAAU,CAACf,GAAG,CAAC,CAAA;GACnB,CAAC,OAAOnC,CAAC,EAAE;AACV;AACA;AACA;AACA,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AACO,SAASpF,qBAAmB,GAAG;EACpC,IAAIuI,WAAW,GAAG,GAAG,CAAA;AACrB,EAAA,IAAIC,SAAS,GAAGpK,SAAS,CAACoK,SAAS,CAACC,WAAW,EAAE,CAAA;AACjD,EAAA,IAAID,SAAS,CAACE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAACF,SAAS,CAACE,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACjE;IACA,OAAOH,WAAW,GAAG,CAAC,CAAA;AACxB,GAAA;AACA,EAAA,OAAOA,WAAW,CAAA;AACpB,CAAA;AACO,IAAII,kBAAkB,GAAG;AAC9BlK,EAAAA,MAAM,EAAEA,QAAM;AACdU,EAAAA,KAAK,EAAEA,OAAK;AACZM,EAAAA,SAAS,EAAEA,WAAS;AACpBJ,EAAAA,WAAW,EAAEA,aAAW;AACxBM,EAAAA,SAAS,EAAEA,WAAS;AACpBnB,EAAAA,IAAI,EAAEA,MAAI;AACVwB,EAAAA,mBAAmB,EAAEA,qBAAmB;AACxCjC,EAAAA,YAAY,EAAEA,cAAAA;AAChB,CAAC;;ACrJM,IAAIA,YAAY,GAAGQ,cAAK,CAAA;AACxB,IAAIC,IAAI,GAAG,UAAU,CAAA;AAC5B,IAAIoK,iBAAiB,GAAG,IAAIC,GAAG,EAAE,CAAA;AAC1B,SAASpK,MAAM,CAACC,WAAW,EAAE;AAClC,EAAA,IAAIC,KAAK,GAAG;AACVmK,IAAAA,IAAI,EAAEpK,WAAW;AACjBE,IAAAA,gBAAgB,EAAE,IAAA;GACnB,CAAA;AACDgK,EAAAA,iBAAiB,CAAClE,GAAG,CAAC/F,KAAK,CAAC,CAAA;AAC5B,EAAA,OAAOA,KAAK,CAAA;AACd,CAAA;AACO,SAASQ,KAAK,CAACC,YAAY,EAAE;AAClCwJ,EAAAA,iBAAiB,CAAC,QAAQ,CAAC,CAACxJ,YAAY,CAAC,CAAA;AAC3C,CAAA;AACO,SAASC,WAAW,CAACD,YAAY,EAAEE,WAAW,EAAE;AACrD,EAAA,OAAO,IAAI3C,OAAO,CAAC,UAAUO,GAAG,EAAE;IAChC,OAAOC,UAAU,CAAC,YAAY;AAC5B,MAAA,IAAI4L,YAAY,GAAGC,KAAK,CAACC,IAAI,CAACL,iBAAiB,CAAC,CAAA;AAChDG,MAAAA,YAAY,CAAClC,MAAM,CAAC,UAAUqC,OAAO,EAAE;AACrC,QAAA,OAAOA,OAAO,CAACJ,IAAI,KAAK1J,YAAY,CAAC0J,IAAI,CAAA;AAC3C,OAAC,CAAC,CAACjC,MAAM,CAAC,UAAUqC,OAAO,EAAE;QAC3B,OAAOA,OAAO,KAAK9J,YAAY,CAAA;AACjC,OAAC,CAAC,CAACyH,MAAM,CAAC,UAAUqC,OAAO,EAAE;AAC3B,QAAA,OAAO,CAAC,CAACA,OAAO,CAACtK,gBAAgB,CAAA;AACnC,OAAC,CAAC,CAACqI,OAAO,CAAC,UAAUiC,OAAO,EAAE;AAC5B,QAAA,OAAOA,OAAO,CAACtK,gBAAgB,CAACU,WAAW,CAAC,CAAA;AAC9C,OAAC,CAAC,CAAA;AACFpC,MAAAA,GAAG,EAAE,CAAA;KACN,EAAE,CAAC,CAAC,CAAA;AACP,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAASuC,SAAS,CAACL,YAAY,EAAEM,EAAE,EAAE;EAC1CN,YAAY,CAACR,gBAAgB,GAAGc,EAAE,CAAA;AACpC,CAAA;AACO,SAASC,SAAS,GAAG;AAC1B,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AACO,SAASK,mBAAmB,GAAG;AACpC,EAAA,OAAO,CAAC,CAAA;AACV,CAAA;AACO,IAAImJ,cAAc,GAAG;AAC1B1K,EAAAA,MAAM,EAAEA,MAAM;AACdU,EAAAA,KAAK,EAAEA,KAAK;AACZM,EAAAA,SAAS,EAAEA,SAAS;AACpBJ,EAAAA,WAAW,EAAEA,WAAW;AACxBM,EAAAA,SAAS,EAAEA,SAAS;AACpBnB,EAAAA,IAAI,EAAEA,IAAI;AACVwB,EAAAA,mBAAmB,EAAEA,mBAAmB;AACxCjC,EAAAA,YAAY,EAAEA,YAAAA;AAChB,CAAC;;AC9CD;;AAEA;AACA,IAAIqL,OAAO,GAAG,CAACnJ,YAAY;AAC3B;AACAiH,eAAe,EAAEyB,kBAAkB,CAAC,CAAA;AAC7B,SAASU,YAAY,CAAC5H,OAAO,EAAE;AACpC,EAAA,IAAI6H,aAAa,GAAG,EAAE,CAACC,MAAM,CAAC9H,OAAO,CAACU,OAAO,EAAEiH,OAAO,CAAC,CAACvC,MAAM,CAAC2C,OAAO,CAAC,CAAA;;AAEvE;;AAEA;EACA,IAAI/H,OAAO,CAACjD,IAAI,EAAE;AAChB,IAAA,IAAIiD,OAAO,CAACjD,IAAI,KAAK,UAAU,EAAE;AAC/B;AACA,MAAA,OAAO2K,cAAc,CAAA;AACvB,KAAA;IACA,IAAItE,GAAG,GAAGyE,aAAa,CAACG,IAAI,CAAC,UAAUC,CAAC,EAAE;AACxC,MAAA,OAAOA,CAAC,CAAClL,IAAI,KAAKiD,OAAO,CAACjD,IAAI,CAAA;AAChC,KAAC,CAAC,CAAA;AACF,IAAA,IAAI,CAACqG,GAAG,EAAE,MAAM,IAAI9E,KAAK,CAAC,cAAc,GAAG0B,OAAO,CAACjD,IAAI,GAAG,YAAY,CAAC,CAAC,KAAK,OAAOqG,GAAG,CAAA;AACzF,GAAA;;AAEA;AACF;AACA;AACA;AACE,EAAA,IAAI,CAACpD,OAAO,CAACI,gBAAgB,EAAE;AAC7ByH,IAAAA,aAAa,GAAGA,aAAa,CAACzC,MAAM,CAAC,UAAU6C,CAAC,EAAE;AAChD,MAAA,OAAOA,CAAC,CAAClL,IAAI,KAAK,KAAK,CAAA;AACzB,KAAC,CAAC,CAAA;AACJ,GAAA;EACA,IAAImL,SAAS,GAAGL,aAAa,CAACG,IAAI,CAAC,UAAUG,MAAM,EAAE;IACnD,OAAOA,MAAM,CAACjK,SAAS,EAAE,CAAA;AAC3B,GAAC,CAAC,CAAA;EACF,IAAI,CAACgK,SAAS,EAAE;AACd,IAAA,MAAM,IAAI5J,KAAK,CAAC,4BAA4B,GAAG2B,IAAI,CAACE,SAAS,CAACwH,OAAO,CAAC9I,GAAG,CAAC,UAAUoJ,CAAC,EAAE;MACrF,OAAOA,CAAC,CAAClL,IAAI,CAAA;KACd,CAAC,CAAC,CAAC,CAAA;AACN,GAAC,MAAM;AACL,IAAA,OAAOmL,SAAS,CAAA;AAClB,GAAA;AACF;;AC1CA;AACA;AACA;AACA;AACWE,IAAAA,uBAAuB,GAAG,IAAIhB,GAAG,GAAE;AAC9C,IAAIiB,MAAM,GAAG,CAAC,CAAA;AACP,IAAIhL,kBAAgB,GAAG,SAASA,gBAAgB,CAACgK,IAAI,EAAErH,OAAO,EAAE;AACrE;AACA,EAAA,IAAI,CAAC+D,EAAE,GAAGsE,MAAM,EAAE,CAAA;AAClBD,EAAAA,uBAAuB,CAACnF,GAAG,CAAC,IAAI,CAAC,CAAA;EACjC,IAAI,CAACoE,IAAI,GAAGA,IAAI,CAAA;AAChB,EAAA,IAAIiB,gBAAgB,EAAE;AACpBtI,IAAAA,OAAO,GAAGsI,gBAAgB,CAAA;AAC5B,GAAA;AACA,EAAA,IAAI,CAACtI,OAAO,GAAGL,yBAAuB,CAACK,OAAO,CAAC,CAAA;EAC/C,IAAI,CAACmI,MAAM,GAAGP,YAAY,CAAC,IAAI,CAAC5H,OAAO,CAAC,CAAA;;AAExC;EACA,IAAI,CAACuI,GAAG,GAAG,KAAK,CAAA;;AAEhB;AACF;AACA;AACA;AACA;EACE,IAAI,CAACC,KAAK,GAAG,IAAI,CAAA;;AAEjB;AACF;AACA;EACE,IAAI,CAACC,MAAM,GAAG;AACZC,IAAAA,OAAO,EAAE,EAAE;AACXC,IAAAA,QAAQ,EAAE,EAAA;GACX,CAAA;;AAED;AACF;AACA;AACA;AACA;AACE,EAAA,IAAI,CAACC,IAAI,GAAG,IAAIxB,GAAG,EAAE,CAAA;;AAErB;AACF;AACA;AACA;AACA;EACE,IAAI,CAACyB,KAAK,GAAG,EAAE,CAAA;;AAEf;AACF;AACA;EACE,IAAI,CAACC,MAAM,GAAG,IAAI,CAAA;EAClBC,eAAe,CAAC,IAAI,CAAC,CAAA;AACvB,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA1L,kBAAgB,CAACgB,OAAO,GAAG,IAAI,CAAA;;AAE/B;AACA;AACA;AACA;AACO,SAAS2K,eAAe,CAAChJ,OAAO,EAAE;AACvCA,EAAAA,OAAO,GAAGL,yBAAuB,CAACK,OAAO,CAAC,CAAA;AAC1C,EAAA,IAAImI,MAAM,GAAGP,YAAY,CAAC5H,OAAO,CAAC,CAAA;AAClC,EAAA,IAAImI,MAAM,CAACpL,IAAI,KAAK,MAAM,EAAE;AAC1B,IAAA,OAAOoL,MAAM,CAACa,eAAe,EAAE,CAAChO,IAAI,CAAC,YAAY;AAC/C,MAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACL,IAAA,OAAOC,sBAAsB,CAAA;AAC/B,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA,IAAIqN,gBAAgB,CAAA;AACb,SAASW,cAAc,CAACjJ,OAAO,EAAE;AACtCsI,EAAAA,gBAAgB,GAAGtI,OAAO,CAAA;AAC5B,CAAA;;AAEA;AACA3C,kBAAgB,CAAC6L,SAAS,GAAG;AAC3BtL,EAAAA,WAAW,EAAE,SAASA,WAAW,CAACJ,GAAG,EAAE;IACrC,IAAI,IAAI,CAAC2G,MAAM,EAAE;AACf,MAAA,MAAM,IAAI7F,KAAK,CAAC,kCAAkC,GAAG,+CAA+C;AACpG;AACN;AACA;AACA;AACA;AACM2B,MAAAA,IAAI,CAACE,SAAS,CAAC3C,GAAG,CAAC,CAAC,CAAA;AACtB,KAAA;AACA,IAAA,OAAO2L,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE3L,GAAG,CAAC,CAAA;GACnC;AACD4L,EAAAA,YAAY,EAAE,SAASA,YAAY,CAAC5L,GAAG,EAAE;AACvC,IAAA,OAAO2L,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE3L,GAAG,CAAC,CAAA;GACpC;EACD,IAAID,SAAS,CAACU,EAAE,EAAE;AAChB,IAAA,IAAI1C,IAAI,GAAG,IAAI,CAAC4M,MAAM,CAAC7L,YAAY,EAAE,CAAA;AACrC,IAAA,IAAI+M,SAAS,GAAG;AACd9N,MAAAA,IAAI,EAAEA,IAAI;AACV0C,MAAAA,EAAE,EAAEA,EAAAA;KACL,CAAA;IACDqL,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAACd,KAAK,CAAC,CAAA;AAClD,IAAA,IAAIvK,EAAE,IAAI,OAAOA,EAAE,KAAK,UAAU,EAAE;MAClC,IAAI,CAACuK,KAAK,GAAGa,SAAS,CAAA;AACtBE,MAAAA,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAEF,SAAS,CAAC,CAAA;AAChD,KAAC,MAAM;MACL,IAAI,CAACb,KAAK,GAAG,IAAI,CAAA;AACnB,KAAA;GACD;AACD/B,EAAAA,gBAAgB,EAAE,SAASA,gBAAgB,CAAC1J,IAAI,EAAEkB,EAAE,EAAE;AACpD,IAAA,IAAI1C,IAAI,GAAG,IAAI,CAAC4M,MAAM,CAAC7L,YAAY,EAAE,CAAA;AACrC,IAAA,IAAI+M,SAAS,GAAG;AACd9N,MAAAA,IAAI,EAAEA,IAAI;AACV0C,MAAAA,EAAE,EAAEA,EAAAA;KACL,CAAA;AACDsL,IAAAA,kBAAkB,CAAC,IAAI,EAAExM,IAAI,EAAEsM,SAAS,CAAC,CAAA;GAC1C;AACD1C,EAAAA,mBAAmB,EAAE,SAASA,mBAAmB,CAAC5J,IAAI,EAAEkB,EAAE,EAAE;AAC1D,IAAA,IAAIlD,GAAG,GAAG,IAAI,CAAC0N,MAAM,CAAC1L,IAAI,CAAC,CAACiL,IAAI,CAAC,UAAUjN,GAAG,EAAE;AAC9C,MAAA,OAAOA,GAAG,CAACkD,EAAE,KAAKA,EAAE,CAAA;AACtB,KAAC,CAAC,CAAA;AACFqL,IAAAA,qBAAqB,CAAC,IAAI,EAAEvM,IAAI,EAAEhC,GAAG,CAAC,CAAA;GACvC;EACD2C,KAAK,EAAE,SAASA,KAAK,GAAG;IACtB,IAAIuB,KAAK,GAAG,IAAI,CAAA;IAChB,IAAI,IAAI,CAACkF,MAAM,EAAE;AACf,MAAA,OAAA;AACF,KAAA;AACAiE,IAAAA,uBAAuB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,CAACjE,MAAM,GAAG,IAAI,CAAA;IAClB,IAAIqF,YAAY,GAAG,IAAI,CAACV,MAAM,GAAG,IAAI,CAACA,MAAM,GAAGzN,qBAAqB,CAAA;IACpE,IAAI,CAACmN,KAAK,GAAG,IAAI,CAAA;AACjB,IAAA,IAAI,CAACC,MAAM,CAACC,OAAO,GAAG,EAAE,CAAA;IACxB,OAAOc,YAAAA;AACP;KACCxO,IAAI,CAAC,YAAY;AAChB,MAAA,OAAOE,OAAO,CAACkJ,GAAG,CAACmD,KAAK,CAACC,IAAI,CAACvI,KAAK,CAAC2J,IAAI,CAAC,CAAC,CAAA;KAC3C,CAAA;AACD;KACC5N,IAAI,CAAC,YAAY;AAChB,MAAA,OAAOE,OAAO,CAACkJ,GAAG,CAACnF,KAAK,CAAC4J,KAAK,CAAChK,GAAG,CAAC,UAAUZ,EAAE,EAAE;AAC/C,QAAA,OAAOA,EAAE,EAAE,CAAA;AACb,OAAC,CAAC,CAAC,CAAA;KACJ,CAAA;AACD;KACCjD,IAAI,CAAC,YAAY;MAChB,OAAOiE,KAAK,CAACkJ,MAAM,CAACzK,KAAK,CAACuB,KAAK,CAACwK,MAAM,CAAC,CAAA;AACzC,KAAC,CAAC,CAAA;GACH;AACD,EAAA,IAAI1M,IAAI,GAAG;AACT,IAAA,OAAO,IAAI,CAACoL,MAAM,CAACpL,IAAI,CAAA;GACxB;AACD,EAAA,IAAI2M,QAAQ,GAAG;IACb,OAAO,IAAI,CAACvF,MAAM,CAAA;AACpB,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA,SAASgF,KAAK,CAACQ,gBAAgB,EAAE5M,IAAI,EAAES,GAAG,EAAE;AAC1C,EAAA,IAAIjC,IAAI,GAAGoO,gBAAgB,CAACxB,MAAM,CAAC7L,YAAY,EAAE,CAAA;AACjD,EAAA,IAAI0I,MAAM,GAAG;AACXzJ,IAAAA,IAAI,EAAEA,IAAI;AACVwB,IAAAA,IAAI,EAAEA,IAAI;AACVU,IAAAA,IAAI,EAAED,GAAAA;GACP,CAAA;EACD,IAAIgM,YAAY,GAAGG,gBAAgB,CAACb,MAAM,GAAGa,gBAAgB,CAACb,MAAM,GAAGzN,qBAAqB,CAAA;AAC5F,EAAA,OAAOmO,YAAY,CAACxO,IAAI,CAAC,YAAY;AACnC,IAAA,IAAI4O,WAAW,GAAGD,gBAAgB,CAACxB,MAAM,CAACvK,WAAW,CAAC+L,gBAAgB,CAACF,MAAM,EAAEzE,MAAM,CAAC,CAAA;;AAEtF;AACA2E,IAAAA,gBAAgB,CAACf,IAAI,CAAC3F,GAAG,CAAC2G,WAAW,CAAC,CAAA;AACtCA,IAAAA,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC5O,IAAI,CAAC,YAAY;MACtC,OAAO2O,gBAAgB,CAACf,IAAI,CAAC,QAAQ,CAAC,CAACgB,WAAW,CAAC,CAAA;AACrD,KAAC,CAAC,CAAA;AACF,IAAA,OAAOA,WAAW,CAAA;AACpB,GAAC,CAAC,CAAA;AACJ,CAAA;AACA,SAASb,eAAe,CAACtB,OAAO,EAAE;AAChC,EAAA,IAAIoC,YAAY,GAAGpC,OAAO,CAACU,MAAM,CAACnL,MAAM,CAACyK,OAAO,CAACJ,IAAI,EAAEI,OAAO,CAACzH,OAAO,CAAC,CAAA;AACvE,EAAA,IAAIlF,SAAS,CAAC+O,YAAY,CAAC,EAAE;IAC3BpC,OAAO,CAACqB,MAAM,GAAGe,YAAY,CAAA;AAC7BA,IAAAA,YAAY,CAAC7O,IAAI,CAAC,UAAU8O,CAAC,EAAE;AAC7B;AACA;AACN;AACA;MACMrC,OAAO,CAACgC,MAAM,GAAGK,CAAC,CAAA;AACpB,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;IACLrC,OAAO,CAACgC,MAAM,GAAGI,YAAY,CAAA;AAC/B,GAAA;AACF,CAAA;AACA,SAASE,oBAAoB,CAACtC,OAAO,EAAE;EACrC,IAAIA,OAAO,CAACgB,MAAM,CAACC,OAAO,CAAC5I,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI,CAAA;EAClD,IAAI2H,OAAO,CAACgB,MAAM,CAACE,QAAQ,CAAC7I,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI,CAAA;AACnD,EAAA,OAAO,KAAK,CAAA;AACd,CAAA;AACA,SAASyJ,kBAAkB,CAAC9B,OAAO,EAAE1K,IAAI,EAAEhC,GAAG,EAAE;EAC9C0M,OAAO,CAACgB,MAAM,CAAC1L,IAAI,CAAC,CAACiH,IAAI,CAACjJ,GAAG,CAAC,CAAA;EAC9BiP,eAAe,CAACvC,OAAO,CAAC,CAAA;AAC1B,CAAA;AACA,SAAS6B,qBAAqB,CAAC7B,OAAO,EAAE1K,IAAI,EAAEhC,GAAG,EAAE;AACjD0M,EAAAA,OAAO,CAACgB,MAAM,CAAC1L,IAAI,CAAC,GAAG0K,OAAO,CAACgB,MAAM,CAAC1L,IAAI,CAAC,CAACqI,MAAM,CAAC,UAAU6E,CAAC,EAAE;IAC9D,OAAOA,CAAC,KAAKlP,GAAG,CAAA;AAClB,GAAC,CAAC,CAAA;EACFmP,cAAc,CAACzC,OAAO,CAAC,CAAA;AACzB,CAAA;AACA,SAASuC,eAAe,CAACvC,OAAO,EAAE;EAChC,IAAI,CAACA,OAAO,CAACc,GAAG,IAAIwB,oBAAoB,CAACtC,OAAO,CAAC,EAAE;AACjD;;AAEA,IAAA,IAAI0C,UAAU,GAAG,SAASA,UAAU,CAACnF,MAAM,EAAE;AAC3CyC,MAAAA,OAAO,CAACgB,MAAM,CAACzD,MAAM,CAACjI,IAAI,CAAC,CAACyI,OAAO,CAAC,UAAU4E,cAAc,EAAE;AAC5D;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACQ,QAAA,IAAIC,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAA;AACjC,QAAA,IAAIC,cAAc,GAAGF,cAAc,CAAC7O,IAAI,GAAG8O,gBAAgB,CAAA;AAC3D,QAAA,IAAIrF,MAAM,CAACzJ,IAAI,IAAI+O,cAAc,EAAE;AACjCF,UAAAA,cAAc,CAACnM,EAAE,CAAC+G,MAAM,CAACvH,IAAI,CAAC,CAAA;AAChC,SAAA;AACF,OAAC,CAAC,CAAA;KACH,CAAA;AACD,IAAA,IAAIlC,IAAI,GAAGkM,OAAO,CAACU,MAAM,CAAC7L,YAAY,EAAE,CAAA;IACxC,IAAImL,OAAO,CAACqB,MAAM,EAAE;AAClBrB,MAAAA,OAAO,CAACqB,MAAM,CAAC9N,IAAI,CAAC,YAAY;QAC9ByM,OAAO,CAACc,GAAG,GAAG,IAAI,CAAA;AAClBd,QAAAA,OAAO,CAACU,MAAM,CAACnK,SAAS,CAACyJ,OAAO,CAACgC,MAAM,EAAEU,UAAU,EAAE5O,IAAI,CAAC,CAAA;AAC5D,OAAC,CAAC,CAAA;AACJ,KAAC,MAAM;MACLkM,OAAO,CAACc,GAAG,GAAG,IAAI,CAAA;AAClBd,MAAAA,OAAO,CAACU,MAAM,CAACnK,SAAS,CAACyJ,OAAO,CAACgC,MAAM,EAAEU,UAAU,EAAE5O,IAAI,CAAC,CAAA;AAC5D,KAAA;AACF,GAAA;AACF,CAAA;AACA,SAAS2O,cAAc,CAACzC,OAAO,EAAE;EAC/B,IAAIA,OAAO,CAACc,GAAG,IAAI,CAACwB,oBAAoB,CAACtC,OAAO,CAAC,EAAE;AACjD;IACAA,OAAO,CAACc,GAAG,GAAG,KAAK,CAAA;AACnB,IAAA,IAAIhN,IAAI,GAAGkM,OAAO,CAACU,MAAM,CAAC7L,YAAY,EAAE,CAAA;AACxCmL,IAAAA,OAAO,CAACU,MAAM,CAACnK,SAAS,CAACyJ,OAAO,CAACgC,MAAM,EAAE,IAAI,EAAElO,IAAI,CAAC,CAAA;AACtD,GAAA;AACF;;AC3QA;;AAEO,SAASgP,UAAU,CAACtM,EAAE,EAAE;EAC7B,IAAI,OAAOuM,iBAAiB,KAAK,UAAU,IAAIpM,IAAI,YAAYoM,iBAAiB,EAAE;AAChF;AACJ;AACA;AACA;AACA;AACA;IACI,IAAIC,QAAQ,GAAGrM,IAAI,CAACV,KAAK,CAACgN,IAAI,CAACtM,IAAI,CAAC,CAAA;IACpCA,IAAI,CAACV,KAAK,GAAG,YAAY;AACvBO,MAAAA,EAAE,EAAE,CAAA;AACJ,MAAA,OAAOwM,QAAQ,EAAE,CAAA;KAClB,CAAA;AACH,GAAC,MAAM;AACL;AACJ;AACA;AACA;AACI,IAAA,IAAI,OAAOtM,MAAM,CAACsI,gBAAgB,KAAK,UAAU,EAAE;AACjD,MAAA,OAAA;AACF,KAAA;;AAEA;AACJ;AACA;AACItI,IAAAA,MAAM,CAACsI,gBAAgB,CAAC,cAAc,EAAE,YAAY;AAClDxI,MAAAA,EAAE,EAAE,CAAA;KACL,EAAE,IAAI,CAAC,CAAA;;AAER;AACJ;AACA;AACA;AACIE,IAAAA,MAAM,CAACsI,gBAAgB,CAAC,QAAQ,EAAE,YAAY;AAC5CxI,MAAAA,EAAE,EAAE,CAAA;KACL,EAAE,IAAI,CAAC,CAAA;AACV,GAAA;;AAEA;AACF;AACA;AACA;AACA;;AC5CO,SAAS0M,OAAO,CAAC1M,EAAE,EAAE;AAC1B2M,EAAAA,OAAO,CAACC,EAAE,CAAC,MAAM,EAAE,YAAY;AAC7B,IAAA,OAAO5M,EAAE,EAAE,CAAA;AACb,GAAC,CAAC,CAAA;;AAEF;AACF;AACA;AACA;AACA;AACA;AACE2M,EAAAA,OAAO,CAACC,EAAE,CAAC,YAAY,EAAE,YAAY;AACnC,IAAA,OAAO5M,EAAE,EAAE,CAACjD,IAAI,CAAC,YAAY;MAC3B,OAAO4P,OAAO,CAACE,IAAI,EAAE,CAAA;AACvB,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AACF;AACAF,EAAAA,OAAO,CAACC,EAAE,CAAC,QAAQ,EAAE,YAAY;AAC/B,IAAA,OAAO5M,EAAE,EAAE,CAACjD,IAAI,CAAC,YAAY;MAC3B,OAAO4P,OAAO,CAACE,IAAI,EAAE,CAAA;AACvB,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AACF;AACAF,EAAAA,OAAO,CAACC,EAAE,CAAC,mBAAmB,EAAE,UAAU/M,GAAG,EAAE;AAC7C,IAAA,OAAOG,EAAE,EAAE,CAACjD,IAAI,CAAC,YAAY;AAC3B+P,MAAAA,OAAO,CAACC,KAAK,CAAClN,GAAG,CAAC,CAAA;AAClB8M,MAAAA,OAAO,CAACE,IAAI,CAAC,GAAG,CAAC,CAAA;AACnB,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AACJ;;AC1BA;AACA;AACA;AACA;AACA;AACA,IAAIG,MAAM,GAAGC,MAAM,CAAChC,SAAS,CAAChN,QAAQ,CAACiP,IAAI,CAAC,OAAOP,OAAO,KAAK,WAAW,GAAGA,OAAO,GAAG,CAAC,CAAC,KAAK,kBAAkB,CAAA;AAChH,IAAIQ,UAAU,GAAGH,MAAM,GAAGN,OAAO,GAAGJ,UAAU,CAAA;AAC9C,IAAIc,SAAS,GAAG,IAAIjE,GAAG,EAAE,CAAA;AACzB,IAAIkE,gBAAgB,GAAG,KAAK,CAAA;AAC5B,SAASC,cAAc,GAAG;AACxB,EAAA,IAAID,gBAAgB,EAAE;AACpB,IAAA,OAAA;AACF,GAAA;AACAA,EAAAA,gBAAgB,GAAG,IAAI,CAAA;EACvBF,UAAU,CAACI,MAAM,CAAC,CAAA;AACpB,CAAA;AACO,SAASvI,GAAG,CAAChF,EAAE,EAAE;AACtBsN,EAAAA,cAAc,EAAE,CAAA;AAChB,EAAA,IAAI,OAAOtN,EAAE,KAAK,UAAU,EAAE;AAC5B,IAAA,MAAM,IAAIK,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAC5C,GAAA;AACA+M,EAAAA,SAAS,CAACpI,GAAG,CAAChF,EAAE,CAAC,CAAA;AACjB,EAAA,IAAIwN,SAAS,GAAG;IACdC,MAAM,EAAE,SAASA,MAAM,GAAG;AACxB,MAAA,OAAOL,SAAS,CAAC,QAAQ,CAAC,CAACpN,EAAE,CAAC,CAAA;KAC/B;IACD0N,GAAG,EAAE,SAASA,GAAG,GAAG;AAClBN,MAAAA,SAAS,CAAC,QAAQ,CAAC,CAACpN,EAAE,CAAC,CAAA;AACvB,MAAA,OAAOA,EAAE,EAAE,CAAA;AACb,KAAA;GACD,CAAA;AACD,EAAA,OAAOwN,SAAS,CAAA;AAClB,CAAA;AACO,SAASD,MAAM,GAAG;EACvB,IAAII,QAAQ,GAAG,EAAE,CAAA;AACjBP,EAAAA,SAAS,CAAC7F,OAAO,CAAC,UAAUvH,EAAE,EAAE;AAC9B2N,IAAAA,QAAQ,CAAC5H,IAAI,CAAC/F,EAAE,EAAE,CAAC,CAAA;AACnBoN,IAAAA,SAAS,CAAC,QAAQ,CAAC,CAACpN,EAAE,CAAC,CAAA;AACzB,GAAC,CAAC,CAAA;AACF,EAAA,OAAO/C,OAAO,CAACkJ,GAAG,CAACwH,QAAQ,CAAC,CAAA;AAC9B;;ACzCA;AACA;AACA;AACO,SAASC,iBAAiB,CAACC,aAAa,EAAEC,MAAM,EAAE;AACvD,EAAA,IAAIC,OAAO,GAAG;AACZC,IAAAA,OAAO,EAAE,QAAQ;AACjBF,IAAAA,MAAM,EAAEA,MAAM;IACd/F,KAAK,EAAE8F,aAAa,CAAC9F,KAAAA;GACtB,CAAA;AACD,EAAA,OAAO8F,aAAa,CAACnC,gBAAgB,CAACP,YAAY,CAAC4C,OAAO,CAAC,CAAA;AAC7D,CAAA;AACO,SAASE,QAAQ,CAACJ,aAAa,EAAE;EACtCA,aAAa,CAACK,QAAQ,GAAG,IAAI,CAAA;EAC7BL,aAAa,CAACM,UAAU,GAAG,IAAI,CAAA;AAC/B,EAAA,IAAIC,QAAQ,GAAGC,GAAS,CAAC,YAAY;IACnC,OAAOR,aAAa,CAACS,GAAG,EAAE,CAAA;AAC5B,GAAC,CAAC,CAAA;AACFT,EAAAA,aAAa,CAACU,IAAI,CAACxI,IAAI,CAACqI,QAAQ,CAAC,CAAA;AACjC,EAAA,IAAII,gBAAgB,GAAG,SAASA,gBAAgB,CAACjP,GAAG,EAAE;IACpD,IAAIA,GAAG,CAACyO,OAAO,KAAK,QAAQ,IAAIzO,GAAG,CAACuO,MAAM,KAAK,OAAO,EAAE;AACtDF,MAAAA,iBAAiB,CAACC,aAAa,EAAE,MAAM,CAAC,CAAA;AAC1C,KAAA;AACA,IAAA,IAAItO,GAAG,CAACyO,OAAO,KAAK,QAAQ,IAAIzO,GAAG,CAACuO,MAAM,KAAK,MAAM,IAAI,CAACD,aAAa,CAACY,KAAK,EAAE;AAC7E;AACN;AACA;AACA;AACA;AACA;AACA;AACA;MACMZ,aAAa,CAACY,KAAK,GAAG,IAAI,CAAA;AAC1BZ,MAAAA,aAAa,CAACa,IAAI,EAAE,CAAC;AACrBd,MAAAA,iBAAiB,CAACC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC3C,KAAA;GACD,CAAA;;EAEDA,aAAa,CAACnC,gBAAgB,CAAClD,gBAAgB,CAAC,UAAU,EAAEgG,gBAAgB,CAAC,CAAA;AAC7EX,EAAAA,aAAa,CAACc,MAAM,CAAC5I,IAAI,CAACyI,gBAAgB,CAAC,CAAA;AAC3C,EAAA,OAAOZ,iBAAiB,CAACC,aAAa,EAAE,MAAM,CAAC,CAAA;AACjD;;ACvCA;AACA;AACA;AACA;AACO,IAAIe,qBAAqB,GAAG,SAASA,qBAAqB,CAAClD,gBAAgB,EAAE3J,OAAO,EAAE;EAC3F,IAAIf,KAAK,GAAG,IAAI,CAAA;EAChB,IAAI,CAAC0K,gBAAgB,GAAGA,gBAAgB,CAAA;AACxCA,EAAAA,gBAAgB,CAACd,KAAK,CAAC7E,IAAI,CAAC,YAAY;IACtC,OAAO/E,KAAK,CAACsN,GAAG,EAAE,CAAA;AACpB,GAAC,CAAC,CAAA;EACF,IAAI,CAACO,QAAQ,GAAG9M,OAAO,CAAA;EACvB,IAAI,CAACmM,QAAQ,GAAG,KAAK,CAAA;EACrB,IAAI,CAACY,MAAM,GAAG,KAAK,CAAA;AACnB,EAAA,IAAI,CAAC/G,KAAK,GAAG/J,WAAW,EAAE,CAAA;EAC1B,IAAI,CAAC2Q,MAAM,GAAG,EAAE,CAAA;EAChB,IAAI,CAACJ,IAAI,GAAG,EAAE,CAAA;AACd,EAAA,IAAI,CAACG,IAAI,GAAG,YAAY,EAAE,CAAC;AAC3B,EAAA,IAAI,CAACD,KAAK,GAAG,KAAK,CAAC;;AAEnB,EAAA,IAAI,CAACM,KAAK,GAAG,EAAE,CAAC;;AAEhB;AACA,EAAA,IAAI,CAACC,EAAE,GAAG,aAAa,GAAGtD,gBAAgB,CAACxB,MAAM,CAACpL,IAAI,GAAG,IAAI,GAAG4M,gBAAgB,CAACtC,IAAI,CAAA;AACvF,CAAC,CAAA;AACDwF,qBAAqB,CAAC3D,SAAS,GAAG;EAChCgE,SAAS,EAAE,SAASA,SAAS,GAAG;IAC9B,IAAIC,MAAM,GAAG,IAAI,CAAA;IACjB,OAAOxQ,SAAS,CAACC,KAAK,CAACwQ,KAAK,EAAE,CAACpS,IAAI,CAAC,UAAU4B,KAAK,EAAE;AACnD,MAAA,IAAIyQ,aAAa,GAAGzQ,KAAK,CAAC0Q,IAAI,GAAG1Q,KAAK,CAAC0Q,IAAI,CAAClI,MAAM,CAAC,UAAUmI,IAAI,EAAE;AACjE,QAAA,OAAOA,IAAI,CAAClG,IAAI,KAAK8F,MAAM,CAACF,EAAE,CAAA;OAC/B,CAAC,GAAG,EAAE,CAAA;AACP,MAAA,IAAII,aAAa,IAAIA,aAAa,CAACvN,MAAM,GAAG,CAAC,EAAE;AAC7C,QAAA,OAAO,IAAI,CAAA;AACb,OAAC,MAAM;AACL,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AACF,KAAC,CAAC,CAAA;GACH;EACD0N,eAAe,EAAE,SAASA,eAAe,GAAG;IAC1C,IAAIC,MAAM,GAAG,IAAI,CAAA;AACjB,IAAA,IAAI,CAAC,IAAI,CAACC,KAAK,EAAE;AACf,MAAA,IAAI,CAACV,KAAK,CAACW,CAAC,GAAG,IAAIC,eAAe,EAAE,CAAA;MACpC,IAAIC,aAAa,GAAG,IAAI3S,OAAO,CAAC,UAAUO,GAAG,EAAE8G,GAAG,EAAE;AAClDkL,QAAAA,MAAM,CAACT,KAAK,CAACvR,GAAG,GAAGA,GAAG,CAAA;AACtBgS,QAAAA,MAAM,CAACT,KAAK,CAACzK,GAAG,GAAGA,GAAG,CAAA;AACxB,OAAC,CAAC,CAAA;MACF,IAAI,CAACmL,KAAK,GAAG,IAAIxS,OAAO,CAAC,UAAUO,GAAG,EAAE;QACtCkB,SAAS,CAACC,KAAK,CAACC,OAAO,CAAC4Q,MAAM,CAACR,EAAE,EAAE;AACjCa,UAAAA,MAAM,EAAEL,MAAM,CAACT,KAAK,CAACW,CAAC,CAACG,MAAAA;AACzB,SAAC,EAAE,YAAY;AACb;AACAL,UAAAA,MAAM,CAACT,KAAK,CAACW,CAAC,GAAG5N,SAAS,CAAA;UAC1BmM,QAAQ,CAACuB,MAAM,CAAC,CAAA;AAChBhS,UAAAA,GAAG,EAAE,CAAA;AACL,UAAA,OAAOoS,aAAa,CAAA;SACrB,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,CAAA;AAC7B,OAAC,CAAC,CAAA;AACJ,KAAA;IACA,OAAO,IAAI,CAACH,KAAK,CAAA;GAClB;EACD,IAAIK,WAAW,CAACC,GAAG,EAAE;AACnB;GACD;EACDzB,GAAG,EAAE,SAASA,GAAG,GAAG;IAClB,IAAI0B,MAAM,GAAG,IAAI,CAAA;AACjB,IAAA,IAAI,CAACrB,MAAM,CAACpH,OAAO,CAAC,UAAUgB,QAAQ,EAAE;MACtC,OAAOyH,MAAM,CAACtE,gBAAgB,CAAChD,mBAAmB,CAAC,UAAU,EAAEH,QAAQ,CAAC,CAAA;AAC1E,KAAC,CAAC,CAAA;IACF,IAAI,CAACoG,MAAM,GAAG,EAAE,CAAA;AAChB,IAAA,IAAI,CAACJ,IAAI,CAAChH,OAAO,CAAC,UAAU0I,GAAG,EAAE;MAC/B,OAAOA,GAAG,CAACxC,MAAM,EAAE,CAAA;AACrB,KAAC,CAAC,CAAA;IACF,IAAI,CAACc,IAAI,GAAG,EAAE,CAAA;IACd,IAAI,IAAI,CAACL,QAAQ,EAAE;MACjB,IAAI,CAACA,QAAQ,GAAG,KAAK,CAAA;AACvB,KAAA;IACA,IAAI,CAACY,MAAM,GAAG,IAAI,CAAA;AAClB,IAAA,IAAI,IAAI,CAACC,KAAK,CAACvR,GAAG,EAAE;AAClB,MAAA,IAAI,CAACuR,KAAK,CAACvR,GAAG,EAAE,CAAA;AAClB,KAAA;AACA,IAAA,IAAI,IAAI,CAACuR,KAAK,CAACW,CAAC,EAAE;MAChB,IAAI,CAACX,KAAK,CAACW,CAAC,CAACQ,KAAK,CAAC,oCAAoC,CAAC,CAAA;AAC1D,KAAA;AACA,IAAA,OAAOtC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACzC,GAAA;AACF,CAAC;;ACrFD,IAAIuC,cAAc,GAAG,SAASA,cAAc,CAACzE,gBAAgB,EAAE3J,OAAO,EAAE;EACtE,IAAIf,KAAK,GAAG,IAAI,CAAA;EAChB,IAAI,CAAC0K,gBAAgB,GAAGA,gBAAgB,CAAA;EACxC,IAAI,CAACmD,QAAQ,GAAG9M,OAAO,CAAA;EACvB,IAAI,CAACmM,QAAQ,GAAG,KAAK,CAAA;EACrB,IAAI,CAACC,UAAU,GAAG,KAAK,CAAA;EACvB,IAAI,CAACW,MAAM,GAAG,KAAK,CAAA;AACnB,EAAA,IAAI,CAAC/G,KAAK,GAAG/J,WAAW,EAAE,CAAA;;AAE1B;AACF;AACA;AACA;AACA;EACE,IAAI,CAACoS,KAAK,GAAGhT,qBAAqB,CAAA;AAClC;EACA,IAAI,CAACiT,MAAM,GAAG,CAAC,CAAA;;AAEf;AACA,EAAA,IAAI,CAAC9B,IAAI,GAAG,EAAE,CAAC;AACf,EAAA,IAAI,CAACI,MAAM,GAAG,EAAE,CAAC;AACjB,EAAA,IAAI,CAACD,IAAI,GAAG,YAAY,EAAE,CAAC;AAC3B,EAAA,IAAI,CAACD,KAAK,GAAG,KAAK,CAAC;;AAEnB;AACF;AACA;AACA;AACA;AACE,EAAA,IAAI6B,iBAAiB,GAAG,SAASA,iBAAiB,CAAC/Q,GAAG,EAAE;AACtD,IAAA,IAAIA,GAAG,CAACyO,OAAO,KAAK,QAAQ,EAAE;AAC5B,MAAA,IAAIzO,GAAG,CAACuO,MAAM,KAAK,OAAO,EAAE;QAC1B9M,KAAK,CAACmN,UAAU,GAAG,KAAK,CAAA;AAC1B,OAAA;AACA,MAAA,IAAI5O,GAAG,CAACuO,MAAM,KAAK,MAAM,EAAE;QACzB9M,KAAK,CAACmN,UAAU,GAAG,IAAI,CAAA;AACzB,OAAA;AACF,KAAA;GACD,CAAA;EACD,IAAI,CAACzC,gBAAgB,CAAClD,gBAAgB,CAAC,UAAU,EAAE8H,iBAAiB,CAAC,CAAA;AACrE,EAAA,IAAI,CAAC3B,MAAM,CAAC5I,IAAI,CAACuK,iBAAiB,CAAC,CAAA;AACrC,CAAC,CAAA;AACDH,cAAc,CAAClF,SAAS,GAAG;EACzBgE,SAAS,EAAE,SAASA,SAAS,GAAG;AAC9B,IAAA,OAAOhS,OAAO,CAACC,OAAO,CAAC,IAAI,CAACiR,UAAU,CAAC,CAAA;GACxC;AACD;AACF;AACA;AACA;AACA;EACEoC,SAAS,EAAE,SAASA,SAAS;AAC7B;AACAC,EAAAA,sBAAsB,EAAE;IACtB,IAAItB,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,IAAI,CAAChB,QAAQ,EAAE;AACjB,MAAA,OAAO7Q,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AACvB,KAAA;IACA,IAAI,IAAI,CAACyR,MAAM,EAAE;AACf,MAAA,OAAOzR,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACxB,KAAA;;AAEA;AACJ;AACA;AACA;AACI,IAAA,IAAI,IAAI,CAACgT,MAAM,GAAG,CAAC,EAAE;MACnB,OAAO,IAAI,CAACD,KAAK,CAAA;AACnB,KAAA;;AAEA;AACJ;AACA;AACI,IAAA,IAAIK,QAAQ,GAAG,SAASA,QAAQ,GAAG;AACjC;AACN;AACA;AACA;AACA;MACM,IAAIvB,MAAM,CAAChB,QAAQ,EAAE;AACnB,QAAA,OAAO/Q,qBAAqB,CAAA;AAC9B,OAAA;MACA,IAAIuT,YAAY,GAAG,KAAK,CAAA;AACxB,MAAA,IAAIC,0BAA0B,CAAA;AAC9B;AACN;AACA;AACA;AACA;AACA;AACM,MAAA,IAAIC,mBAAmB,GAAG,IAAI3T,OAAO,CAAC,UAAUO,GAAG,EAAE;QACnDmT,0BAA0B,GAAG,SAASA,0BAA0B,GAAG;AACjED,UAAAA,YAAY,GAAG,IAAI,CAAA;AACnBlT,UAAAA,GAAG,EAAE,CAAA;SACN,CAAA;AACH,OAAC,CAAC,CAAA;AACF,MAAA,IAAIqT,aAAa,GAAG,SAASA,aAAa,CAACtR,GAAG,EAAE;AAC9C,QAAA,IAAIA,GAAG,CAACyO,OAAO,KAAK,QAAQ,IAAIzO,GAAG,CAACwI,KAAK,IAAImH,MAAM,CAACnH,KAAK,EAAE;AACzD,UAAA,IAAIxI,GAAG,CAACuO,MAAM,KAAK,OAAO,EAAE;AAC1B;AACA,YAAA,IAAIvO,GAAG,CAACwI,KAAK,GAAGmH,MAAM,CAACnH,KAAK,EAAE;AAC5B;AACd;AACA;AACA;AACc4I,cAAAA,0BAA0B,EAAE,CAAA;AAC9B,aAAA;AACF,WAAA;AACA,UAAA,IAAIpR,GAAG,CAACuO,MAAM,KAAK,MAAM,EAAE;AACzB;AACA6C,YAAAA,0BAA0B,EAAE,CAAA;YAC5BzB,MAAM,CAACf,UAAU,GAAG,IAAI,CAAA;AAC1B,WAAA;AACF,SAAA;OACD,CAAA;MACDe,MAAM,CAACxD,gBAAgB,CAAClD,gBAAgB,CAAC,UAAU,EAAEqI,aAAa,CAAC,CAAA;;AAEnE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACM,MAAA,IAAIC,iBAAiB,GAAGN,sBAAsB,GAAGtB,MAAM,CAACL,QAAQ,CAACkC,YAAY,GAAG,CAAC,GAAG7B,MAAM,CAACL,QAAQ,CAACkC,YAAY,CAAA;AAChH,MAAA,OAAOnD,iBAAiB,CAACsB,MAAM,EAAE,OAAO,CAAC;OACxCnS,IAAI,CAAC,YAAY;AAChB,QAAA,OAAOE,OAAO,CAAC+T,IAAI,CAAC,CAAC3T,KAAK,CAACyT,iBAAiB,CAAC,EAAEF,mBAAmB,CAAC7T,IAAI,CAAC,YAAY;AAClF,UAAA,OAAOE,OAAO,CAAC6C,MAAM,CAAC,IAAIO,KAAK,EAAE,CAAC,CAAA;SACnC,CAAC,CAAC,CAAC,CAAA;OACL,CAAA;AACD;OACCtD,IAAI,CAAC,YAAY;AAChB,QAAA,OAAO6Q,iBAAiB,CAACsB,MAAM,EAAE,OAAO,CAAC,CAAA;OAC1C,CAAA;AACD;OACCnS,IAAI,CAAC,YAAY;AAChB,QAAA,OAAOE,OAAO,CAAC+T,IAAI,CAAC,CAAC3T,KAAK,CAACyT,iBAAiB,CAAC,EAAEF,mBAAmB,CAAC7T,IAAI,CAAC,YAAY;AAClF,UAAA,OAAOE,OAAO,CAAC6C,MAAM,CAAC,IAAIO,KAAK,EAAE,CAAC,CAAA;SACnC,CAAC,CAAC,CAAC,CAAA;AACN,OAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,CAACtD,IAAI,CAAC,YAAY;QAC3CmS,MAAM,CAACxD,gBAAgB,CAAChD,mBAAmB,CAAC,UAAU,EAAEmI,aAAa,CAAC,CAAA;QACtE,IAAI,CAACH,YAAY,EAAE;AACjB;AACA,UAAA,OAAOzC,QAAQ,CAACiB,MAAM,CAAC,CAACnS,IAAI,CAAC,YAAY;AACvC,YAAA,OAAO,IAAI,CAAA;AACb,WAAC,CAAC,CAAA;AACJ,SAAC,MAAM;AACL;AACA,UAAA,OAAO,KAAK,CAAA;AACd,SAAA;AACF,OAAC,CAAC,CAAA;KACH,CAAA;AACD,IAAA,IAAI,CAACsT,MAAM,GAAG,IAAI,CAACA,MAAM,GAAG,CAAC,CAAA;IAC7B,IAAI,CAACD,KAAK,GAAG,IAAI,CAACA,KAAK,CAACrT,IAAI,CAAC,YAAY;AACvC,MAAA,OAAO0T,QAAQ,EAAE,CAAA;AACnB,KAAC,CAAC,CAAC1T,IAAI,CAAC,YAAY;AAClBmS,MAAAA,MAAM,CAACmB,MAAM,GAAGnB,MAAM,CAACmB,MAAM,GAAG,CAAC,CAAA;AACnC,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAACD,KAAK,CAACrT,IAAI,CAAC,YAAY;MACjC,OAAOmS,MAAM,CAAChB,QAAQ,CAAA;AACxB,KAAC,CAAC,CAAA;GACH;EACDqB,eAAe,EAAE,SAASA,eAAe,GAAG;IAC1C;IACA,CAAC,IAAI,CAAC0B,IAAI,EAAE;AACV,MAAA,IAAI,CAACA,IAAI,GAAGC,oBAAoB,CAAC,IAAI,CAAC,CAAA;AACxC,KAAA;IACA,OAAO,IAAI,CAACD,IAAI,CAAA;GACjB;EACD,IAAInB,WAAW,CAAC9P,EAAE,EAAE;IAClB,IAAI,CAAC0O,IAAI,GAAG1O,EAAE,CAAA;GACf;EACDsO,GAAG,EAAE,SAASA,GAAG,GAAG;IAClB,IAAIkB,MAAM,GAAG,IAAI,CAAA;AACjB,IAAA,IAAI,CAACb,MAAM,CAACpH,OAAO,CAAC,UAAUgB,QAAQ,EAAE;MACtC,OAAOiH,MAAM,CAAC9D,gBAAgB,CAAChD,mBAAmB,CAAC,UAAU,EAAEH,QAAQ,CAAC,CAAA;AAC1E,KAAC,CAAC,CAAA;IACF,IAAI,CAACoG,MAAM,GAAG,EAAE,CAAA;AAChB,IAAA,IAAI,CAACJ,IAAI,CAAChH,OAAO,CAAC,UAAU0I,GAAG,EAAE;MAC/B,OAAOA,GAAG,CAACxC,MAAM,EAAE,CAAA;AACrB,KAAC,CAAC,CAAA;IACF,IAAI,CAACc,IAAI,GAAG,EAAE,CAAA;IACd,IAAI,IAAI,CAACL,QAAQ,EAAE;MACjB,IAAI,CAACC,UAAU,GAAG,KAAK,CAAA;MACvB,IAAI,CAACD,QAAQ,GAAG,KAAK,CAAA;AACvB,KAAA;IACA,IAAI,CAACY,MAAM,GAAG,IAAI,CAAA;AAClB,IAAA,OAAOlB,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACzC,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA,SAASsD,oBAAoB,CAACrD,aAAa,EAAE;EAC3C,IAAIA,aAAa,CAACK,QAAQ,EAAE;AAC1B,IAAA,OAAO9Q,qBAAqB,CAAA;AAC9B,GAAA;AACA,EAAA,OAAO,IAAIH,OAAO,CAAC,UAAUO,GAAG,EAAE;IAChC,IAAI2T,QAAQ,GAAG,KAAK,CAAA;AACpB,IAAA,SAASC,MAAM,GAAG;AAChB,MAAA,IAAID,QAAQ,EAAE;AACZ,QAAA,OAAA;AACF,OAAA;AACAA,MAAAA,QAAQ,GAAG,IAAI,CAAA;MACftD,aAAa,CAACnC,gBAAgB,CAAChD,mBAAmB,CAAC,UAAU,EAAE2I,iBAAiB,CAAC,CAAA;MACjF7T,GAAG,CAAC,IAAI,CAAC,CAAA;AACX,KAAA;;AAEA;AACAqQ,IAAAA,aAAa,CAAC0C,SAAS,EAAE,CAACxT,IAAI,CAAC,YAAY;MACzC,IAAI8Q,aAAa,CAACK,QAAQ,EAAE;AAC1BkD,QAAAA,MAAM,EAAE,CAAA;AACV,OAAA;AACF,KAAC,CAAC,CAAA;;AAEF;AACJ;AACA;AACA;AACI,IAAA,IAAIE,aAAa,GAAG,SAASA,aAAa,GAAG;MAC3C,OAAOjU,KAAK,CAACwQ,aAAa,CAACgB,QAAQ,CAACxM,gBAAgB,CAAC,CAACtF,IAAI,CAAC,YAAY;AACrE,QAAA,IAAI8Q,aAAa,CAACiB,MAAM,IAAIqC,QAAQ,EAAE;AACpC,UAAA,OAAA;AACF,SAAA;QACA,IAAItD,aAAa,CAACK,QAAQ,EAAE;AAC1BkD,UAAAA,MAAM,EAAE,CAAA;AACV,SAAC,MAAM;UACL,OAAOvD,aAAa,CAAC0C,SAAS,CAAC,IAAI,CAAC,CAACxT,IAAI,CAAC,YAAY;YACpD,IAAI8Q,aAAa,CAACK,QAAQ,EAAE;AAC1BkD,cAAAA,MAAM,EAAE,CAAA;AACV,aAAC,MAAM;AACLE,cAAAA,aAAa,EAAE,CAAA;AACjB,aAAA;AACF,WAAC,CAAC,CAAA;AACJ,SAAA;AACF,OAAC,CAAC,CAAA;KACH,CAAA;AACDA,IAAAA,aAAa,EAAE,CAAA;;AAEf;AACA,IAAA,IAAID,iBAAiB,GAAG,SAASA,iBAAiB,CAAC9R,GAAG,EAAE;MACtD,IAAIA,GAAG,CAACyO,OAAO,KAAK,QAAQ,IAAIzO,GAAG,CAACuO,MAAM,KAAK,OAAO,EAAE;QACtDD,aAAa,CAACM,UAAU,GAAG,KAAK,CAAA;AAChCN,QAAAA,aAAa,CAAC0C,SAAS,EAAE,CAACxT,IAAI,CAAC,YAAY;UACzC,IAAI8Q,aAAa,CAACK,QAAQ,EAAE;AAC1BkD,YAAAA,MAAM,EAAE,CAAA;AACV,WAAA;AACF,SAAC,CAAC,CAAA;AACJ,OAAA;KACD,CAAA;IACDvD,aAAa,CAACnC,gBAAgB,CAAClD,gBAAgB,CAAC,UAAU,EAAE6I,iBAAiB,CAAC,CAAA;AAC9ExD,IAAAA,aAAa,CAACc,MAAM,CAAC5I,IAAI,CAACsL,iBAAiB,CAAC,CAAA;AAC9C,GAAC,CAAC,CAAA;AACJ,CAAA;AACA,SAAS3P,uBAAuB,CAACK,OAAO,EAAEyH,OAAO,EAAE;AACjD,EAAA,IAAI,CAACzH,OAAO,EAAEA,OAAO,GAAG,EAAE,CAAA;EAC1BA,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACH,OAAO,CAAC,CAAC,CAAA;AAC7C,EAAA,IAAI,CAACA,OAAO,CAACM,gBAAgB,EAAE;IAC7BN,OAAO,CAACM,gBAAgB,GAAG,IAAI,CAAA;AACjC,GAAA;AACA,EAAA,IAAI,CAACN,OAAO,CAACgP,YAAY,EAAE;AACzBhP,IAAAA,OAAO,CAACgP,YAAY,GAAGvH,OAAO,CAACU,MAAM,CAAC5J,mBAAmB,CAACkJ,OAAO,CAACzH,OAAO,CAAC,CAAA;AAC5E,GAAA;AACA,EAAA,OAAOA,OAAO,CAAA;AAChB,CAAA;AACO,SAASwP,oBAAoB,CAAC/H,OAAO,EAAEzH,OAAO,EAAE;EACrD,IAAIyH,OAAO,CAACgI,cAAc,EAAE;AAC1B,IAAA,MAAM,IAAInR,KAAK,CAAC,+CAA+C,CAAC,CAAA;AAClE,GAAA;AACA0B,EAAAA,OAAO,GAAGL,uBAAuB,CAACK,OAAO,EAAEyH,OAAO,CAAC,CAAA;AACnD,EAAA,IAAIiI,OAAO,GAAGhT,kBAAkB,EAAE,GAAG,IAAImQ,qBAAqB,CAACpF,OAAO,EAAEzH,OAAO,CAAC,GAAG,IAAIoO,cAAc,CAAC3G,OAAO,EAAEzH,OAAO,CAAC,CAAA;AACvHyH,EAAAA,OAAO,CAACoB,KAAK,CAAC7E,IAAI,CAAC,YAAY;IAC7B,OAAO0L,OAAO,CAACnD,GAAG,EAAE,CAAA;AACtB,GAAC,CAAC,CAAA;EACF9E,OAAO,CAACgI,cAAc,GAAGC,OAAO,CAAA;AAChC,EAAA,OAAOA,OAAO,CAAA;AAChB;;;;"}